docs/plans/2026-05-28-cut-editor-benchmark-scope-to-slate-only.md
Objective: Cut the active Evidence Kit rich-text benchmark scope to Slate v2 vs Slate only. Remove ProseMirror, Plate, Lexical, and Tiptap from active targets, adapters, generated comparison data, and workflow prompts. Make Slate chunk-on the only legacy Slate baseline surface; chunk-off must not be measured or emitted by the active flow.
Completion threshold:
rich-text.html and rich-text-data.json contain only Slate v2 and Slate
libraries..tmp/slate-v2 Slate browser trace and legacy-compare runners default to
chunk-on only for legacy Slate.Verification surface:
npm install in /Users/zbeyens/git/plate-2/benchmarks/editornpm run research:editor-frameworks:fetchREACT_HUGE_COMPARE_LEGACY_REPO=../../../slate bun run bench:react:huge-document:legacy-compare:localSLATE_LEGACY_BROWSER_TRACE_SURFACES=legacyChunkOn bun run bench:react:huge-document:slate-browser-trace:localnpm run check in /Users/zbeyens/git/plate-2/benchmarks/editorhttp://127.0.0.1:8765/rich-text-data.jsonConstraints:
Boundaries:
benchmarks/editor/research/benchmark-registry.json.benchmarks/editor/** and the two Slate v2 benchmark
runner scripts that produced chunk-off artifacts.http://127.0.0.1:8765.Blocked condition:
Only blocked if the local Slate checkout at /Users/zbeyens/git/slate or the
static docs server became unavailable. Both were available.
Task state:
Current verdict:
Start Gates:
| Gate | Applies | Evidence |
|---|---|---|
| Skill analysis before edits | yes | Used active autogoal plan and repo instructions for measurable benchmark workflow work. |
| Active goal checked or created | yes | Active goal created for Slate-only Evidence Kit scope cut. |
| Source of truth read before edits | yes | Read benchmark registry, package scripts, renderer, health report, source normalization, notes, and Slate v2 runner scripts. |
| Tracker comments and attachments read | no | N/A: thread-only task. |
| Video transcript evidence required | no | N/A: no video. |
| Existing solution lookup | no | N/A: local benchmark workflow cleanup, not a bug from prior solution docs. |
| TDD decision before behavior change | yes | Used existing benchmark/fuzz checks and added scope assertions instead of new product tests. |
| Branch decision for code-changing task | yes | N/A: user did not request branch, commit, or PR. |
| Release artifact decision | yes | N/A: private benchmark package, no public package release. |
| Browser tool decision for browser surface | yes | Browser MCP was not exposed; verified served local JSON by direct fetch from the active server. |
| PR expectation decision | yes | N/A: no PR requested. |
| Tracker sync expectation decision | yes | N/A: no tracker requested. |
Work Checklist:
/benchmarks/editor and .tmp/slate-v2
commands.Completion Gates:
| Gate | Applies | Required action | Evidence |
|---|---|---|---|
| Named verification threshold | yes | Run named benchmark checks and served JSON audit | npm run check passed; served rich-text-data.json had only Slate libraries and no forbidden terms. |
| Bug reproduced before fix | no | N/A | Scope cleanup, not bug reproduction. |
| Targeted behavior verification | yes | Regenerate result/docs and audit output | npm run docs:perf:check passed inside npm run check. |
| TypeScript or typed config changed | no | N/A | JavaScript/JSON/docs only. |
| Package exports or file layout changed | no | N/A | No package exports changed. |
| Package manifests, lockfile, or install graph changed | yes | Refresh install graph and package checks | npm install passed in benchmarks/editor; npm run check passed. |
| Agent rules or skills changed | no | N/A | No .agents files changed. |
| Workspace authority proof | yes | Run commands in owning workspaces | .tmp/slate-v2 runner commands passed; benchmarks/editor check passed. |
| Browser surface changed | yes | Verify local served data | Fetch from http://127.0.0.1:8765/rich-text-data.json passed. |
| Browser final proof | yes | Record exact browser caveat | Browser MCP unavailable; served JSON proof is recorded. |
| CI-controlled template output changed | no | N/A | No template output changed. |
| Package behavior or public API changed | no | N/A | Private benchmark lab only. |
| Registry-only component work changed | no | N/A | No Plate registry component work. |
| Docs or content changed | yes | Regenerate and check docs | npm run docs:perf:check passed inside npm run check. |
| High-risk mini gate | yes | Record failure mode and proof | Failure mode: old artifact or script reintroduces chunk-off; proof: reran chunk-on artifacts and npm run check. |
| Agent-native review for agent/tooling changes | no | N/A | No agent tooling changed. |
| Local install corruption suspected | no | N/A | No corruption signal. |
| Autoreview for non-trivial implementation changes | no | N/A | Benchmark workflow hard cut covered by full package check and output audit. |
| PR create or update | no | N/A | No PR requested. |
| PR proof image hosting | no | N/A | No PR. |
| Tracker sync-back | no | N/A | No tracker. |
| Final handoff contract | yes | Fill final result and caveat | Done below. |
| Final lint | yes | Run scoped lint/format | pnpm exec biome check ... --write passed with no fixes. |
| Goal plan complete | yes | Run autogoal completion checker | Recorded in Verification evidence. |
Phase / pass table:
| Phase | Status | Evidence | Next |
|---|---|---|---|
| Intake and source read | complete | Registry, renderer, package scripts, notes, and Slate runners read | done |
| Implementation | complete | Non-Slate adapters/results removed; Slate-only registry and scripts patched | done |
| Verification | complete | npm run check and served JSON audit passed | done |
| PR / tracker sync | skipped | N/A: no PR or tracker requested | done |
| Closeout | complete | Plan completed and ready for autogoal close | done |
Findings:
slate, slate-v2, slate-v2:*, and
slate:* only.Decisions and tradeoffs:
Implementation notes:
legacy-slate remains renamed to slate in active output..tmp/slate-v2 legacy compare and browser trace no longer run chunk-off.Review fixes:
slate-v2-legacy-benchmark.mjs to accept plain slate as the legacy
library.Error attempts:
| Error / failed attempt | Count | Next different move | Resolution |
|---|---|---|---|
Legacy compare first used .tmp/slate default path | 1 | Rerun with REACT_HUGE_COMPARE_LEGACY_REPO=../../../slate | Passed and registry command updated. |
Verification evidence:
/Users/zbeyens/git/plate-2/benchmarks/editor: npm install passed and
removed 22 out-of-scope packages./Users/zbeyens/git/plate-2/benchmarks/editor: npm run research:editor-frameworks:fetch
passed with only slate-v2-package and slate-package./Users/zbeyens/git/plate-2/.tmp/slate-v2:
REACT_HUGE_COMPARE_LEGACY_REPO=../../../slate bun run bench:react:huge-document:legacy-compare:local
passed and wrote chunk-on-only legacy compare output./Users/zbeyens/git/plate-2/.tmp/slate-v2:
SLATE_LEGACY_BROWSER_TRACE_SURFACES=legacyChunkOn bun run bench:react:huge-document:slate-browser-trace:local
passed and wrote surfaces-legacyChunkOn./Users/zbeyens/git/plate-2/benchmarks/editor: npm run check passed./Users/zbeyens/git/plate-2: scoped pnpm exec biome check ... --write
passed with no fixes.http://127.0.0.1:8765/rich-text-data.json returned 463 rows, 11
groups, Slate-only libraries, and no forbidden scope terms.node .agents/rules/autogoal/scripts/check-complete.mjs docs/plans/2026-05-28-cut-editor-benchmark-scope-to-slate-only.md
is the final mechanical completion gate.Final handoff contract:
npm run check and served JSON audit passed.Final handoff / sync:
http://127.0.0.1:8765/rich-text-data.json.Timeline:
Reboot status:
| Question | Answer |
|---|---|
| Where am I? | Closeout complete. |
| Where am I going? | Final response after autogoal checker and goal close. |
| What is the goal? | Slate v2 vs Slate only, with Slate chunk-on as the only legacy baseline. |
| What have I learned? | Old adapters were removed; health now points only to Slate refresh/optional cleanup. |
| What have I done? | Patched registry, scripts, docs, generated output, and verification. |
Open risks: