docs/plans/2026-05-27-slate-v2-legacy-evidence-lane.md
Objective:
Add the first real editor comparison lane to
/Users/zbeyens/git/plate-2/benchmarks/editor for .tmp/slate-v2 versus
../slate only. Completion means Evidence Kit benchmark results contain
normalized Slate v2 and legacy Slate rows from the Slate v2 legacy-compare
artifact, other editor runtimes stay deferred, docs/search expose the lane,
root/editor verification passes, and this autogoal plan passes its closure
check.
Goal plan: docs/plans/2026-05-27-slate-v2-legacy-evidence-lane.md
Template: docs/plans/templates/major-task.md
Primary template: docs/plans/templates/major-task.md
Applied packs:
autogoal: durable completion gates and final closure check.major-task: benchmark comparison, tradeoffs, and evidence record.task: direct repo implementation and verification.Major source:
.tmp/slate-v2/tmp/slate-react-huge-document-legacy-compare-benchmark-compare-v2DefaultRenderAuto-v2DomPresent-blocks-5000-iters-5-ops-10-split-selection-no-profile.json.tmp/slate-v2 and ../slate repos, structured
Evidence Kit rows, visible mixed results, no ProseMirror/Lexical/Tiptap
runtime claimsbenchmarks/editor/src/index.mjs,
benchmarks/editor/benchmarks/slate-v2-legacy-benchmark.mjs,
benchmarks/editor/benchmarks/results/slate-v2-legacy-latest.json,
benchmarks/editor/docs/perf/*, benchmarks/editor/iterations/*benchmarks/editor/docs/perf/index.htmlMajor lane:
benchmarks/editor standalone npm package and
root bench:editor:* command surface through existing scriptsCompletion threshold:
currentRepo as
/Users/zbeyens/git/plate-2/.tmp/slate-v2 and legacyRepo as
/Users/zbeyens/git/slate.benchmarks/editor/benchmarks/results/slate-v2-legacy-latest.json with
normalized rows for both slate-v2:* and legacy-slate:*.legacy-slate:chunk-off, legacy-slate:chunk-on,
slate-v2:default-render-auto, and slate-v2:dom-present.node .agents/rules/autogoal/scripts/check-complete.mjs docs/plans/2026-05-27-slate-v2-legacy-evidence-lane.md
passes.Verification surface:
/Users/zbeyens/git/plate-2/.tmp/slate-v2:
REACT_HUGE_COMPARE_LEGACY_REPO=../../../slate REACT_HUGE_COMPARE_ITERATIONS=5 REACT_HUGE_COMPARE_TYPE_OPS=10 REACT_HUGE_COMPARE_SPLIT_SELECTION=1 REACT_HUGE_COMPARE_DISPOSE_DELAY_MS=0 REACT_HUGE_COMPARE_SURFACES=v2DefaultRenderAuto,v2DomPresent bun run bench:react:huge-document:legacy-compare:local/Users/zbeyens/git/plate-2:
npm run bench:editor:check/Users/zbeyens/git/plate-2:
npm run bench:editor:search -- slate-v2 legacy/Users/zbeyens/git/plate-2:
pnpm exec biome check package.json benchmarks/editor docs/plans/2026-05-27-slate-v2-legacy-evidence-lane.md --fixConstraints:
.tmp/slate-v2 versus ../slate.Boundaries:
benchmarks/editor/**, root/package benchmark script
wiring already present, and this goal plan.Blocked condition:
.tmp/slate-v2 versus ../slate, or if Evidence
Kit rejected the normalized benchmark rows. Neither blocker occurred.Major state:
Current verdict:
Completion rule:
Start Gates:
| Gate | Applies | Evidence |
|---|---|---|
major-task loaded | yes | Skill instructions read before implementation. |
| Active goal checked or created | yes | Active goal created for Slate v2 legacy Evidence Kit lane. |
| Source of truth read before analysis | yes | Read Evidence Kit source and Slate v2 legacy-compare artifact/script. |
| Major lane selected | yes | Lane selected: editor benchmark evidence. |
| Decision criteria stated | yes | Criteria listed in Major source and Completion threshold. |
| Existing repo patterns / prior decisions checked | yes | Reused existing Evidence Kit rows, fuzzer, docs, scope, and package scripts. |
| Helper stack selected | yes | Used local Node scripts plus Evidence Kit CLI; no new framework. |
| External research decision recorded | yes | External research not used because local artifacts settle this lane. |
| Implementation expectation recorded | yes | Implementation expected and completed in benchmarks/editor. |
| Workspace authority selected | yes | Authority is /Users/zbeyens/git/plate-2 plus .tmp/slate-v2 benchmark artifact source. |
| Branch / PR expectation decided | yes | No commit or PR requested. |
Work Checklist:
Completion Gates:
| Gate | Applies | Required action | Evidence |
|---|---|---|---|
| Named verification threshold | yes | Run benchmark, Evidence Kit check, search, and formatting | Fresh Slate benchmark passed; npm run bench:editor:check passed; search returns Slate lane rows; Biome passed. |
| Current-state source audit | yes | Map current owner, boundaries, constraints, and affected surfaces | Current owner is benchmarks/editor; artifact source is .tmp/slate-v2; legacy source is ../slate. |
| Decision criteria closure | yes | Mark each criterion satisfied, narrowed, rejected, or blocked with evidence | Satisfied for Slate v2 vs legacy; narrowed other editors to deferred. |
| Options / tradeoffs / rejection record | yes | Record viable options, chosen recommendation, and why alternatives lose | Chose artifact normalizer over new app; rejected cross-editor adapters for this first lane. |
| Review / pressure pass | yes | Run selected reviewer/lens or record reason | Manual pressure pass: result is mixed and cannot be sold as a blanket Slate v2 win. |
| Review findings closure | yes | Fix or explicitly reject accepted/actionable findings and record closure proof | Exact artifact rerun fixed stale embedded currentRepo concern. |
| External-source audit | no | Cite official/local clone/external sources when used, or record reason | No external sources used; local artifact and package source are authoritative. |
| Implementation gates | yes | If code changed, close primary-template and touched-surface gates | Parser, script, fuzzer, corpus, docs, generated results, and iteration note completed. |
| Final handoff contract | yes | Record recommendation, evidence, caveats, residual risk, and next owner | See Final handoff contract section. |
| Final lint | yes | Run scoped equivalent when files changed | pnpm exec biome check package.json benchmarks/editor docs/plans/2026-05-27-slate-v2-legacy-evidence-lane.md --fix passed. |
| Goal plan complete | yes | Run autogoal closure script | Closure script runs after this plan update. |
Phase / pass table:
| Phase | Status | Evidence | Next |
|---|---|---|---|
| Intake and source read | complete | Read plan, Evidence Kit source shape, Slate artifact/script, package scripts | Current-state map |
| Current-state map | complete | Existing lab had readiness rows only; no real editor runtime rows | Options |
| Options and recommendation | complete | Chose source-artifact normalizer and dedicated result file | Review |
| Review / pressure pass | complete | Mixed-result caveat recorded; no blanket win claim | Implementation |
| Implementation or plan artifact | complete | Added parser, benchmark writer, fuzzer/corpus coverage, docs note | Verification |
| Verification | complete | Benchmark, root check, search, and Biome passed | Closeout |
| Closeout | complete | Plan updated for autogoal closure | Final response |
Findings:
benchmarks/results/*latest.json, so a dedicated
slate-v2-legacy-latest.json is enough for docs/search without changing the
core benchmark result.currentRepo=/Users/zbeyens/git/plate-2/.tmp/slate-v2 and
legacyRepo=/Users/zbeyens/git/slate.readyMs strongly favors Slate v2, while selectAllMs
strongly favors legacy chunking.Decisions and tradeoffs:
Implementation notes:
benchmarks/editor/src/index.mjs exports Slate legacy compare artifact
helpers and normalizes common millisecond metrics into Evidence Kit rows.benchmarks/editor/benchmarks/slate-v2-legacy-benchmark.mjs writes and
checks benchmarks/results/slate-v2-legacy-latest.json.benchmarks/editor/package.json wires the new benchmark into
bench:evidence and check.benchmarks/editor/test/fuzz/core-fuzz.mjs and
benchmarks/editor/test/fixtures/corpus.json cover row normalization.benchmarks/editor/README.md and
benchmarks/editor/iterations/001-slate-v2-legacy-evidence.md document the
lane and its caveat.Review fixes:
.tmp/slate-v2 with REACT_HUGE_COMPARE_LEGACY_REPO=../../../slate.Error attempts:
| Error / failed attempt | Count | Next different move | Resolution |
|---|---|---|---|
| Browser plugin reload unavailable after tool discovery | 1 | Use regenerated docs/search artifacts as proof | Static docs and search proof passed; no browser-only behavior changed. |
Verification evidence:
/Users/zbeyens/git/plate-2/.tmp/slate-v2, fresh benchmark command
passed and wrote the 5,000-block compare artifact with exact repo paths./Users/zbeyens/git/plate-2/benchmarks/editor, npm run bench:evidence
passed and wrote 52 Slate compare rows./Users/zbeyens/git/plate-2, npm run bench:editor:check passed. npm
printed config warnings for pnpm-oriented settings; warnings only./Users/zbeyens/git/plate-2, npm run bench:editor:search -- slate-v2 legacy
returned slate-react-huge-document-legacy-compare benchmark fixtures from
benchmarks/results/slate-v2-legacy-latest.json./Users/zbeyens/git/plate-2, scoped Biome check with --fix passed.Final handoff contract:
.tmp/slate-v2 and
../slate repo paths.npm run bench:editor:check,
npm run bench:editor:search -- slate-v2 legacy, scoped Biome.Timeline:
.tmp/slate-v2 versus ../slate benchmark
artifact created.Reboot status:
| Question | Answer |
|---|---|
| Where am I? | Closeout complete |
| Where am I going? | Final response after autogoal closure |
| What is the goal? | First real Evidence Kit editor comparison lane: .tmp/slate-v2 versus ../slate |
| What have I learned? | The lane is meaningful but mixed: Slate v2 wins readiness/full-document rows; legacy chunking wins some selection rows |
| What have I done? | Implemented parser, benchmark writer, tests, generated result/docs, and verification |
Open risks: