docs/plans/2026-04-09-slate-v2-deletion-closure-protocol-hardening-consensus-plan.md
packages/slate-react/test/** batch was closed correctly, but the control docs omitted the still-open packages/slate-react/src/** deletion pressure from the remaining-open summariesmaster-roadmap.md and release-file-review-ledger.mdPros:
Cons:
Pros:
Cons:
reconsolidate-roadmap.mdPros:
Cons:
refresh-file-review-ledger.mdPros:
Cons:
Option BWhy chosen:
Harden the Slate v2 roadmap/process stack so deletion-closure claims must follow the exact audited glob hierarchy, with parent/child promotion gates, residual-open disclosure, frozen-inventory reconciliation, and existing proof-surface / lane-id citations where behavior lanes demand them.
docs/slate-v2/master-roadmap.mdoverview.mdrelease-file-review-ledger.mdcommands/reconsolidate-roadmap.mdcommands/refresh-file-review-ledger.mdpackages/slate-react/src/** deleted-source closurepackages/slate-react/test/** family batchAdd one new protocol owner:
/Users/zbeyens/git/plate-2/docs/slate-v2/references/deletion-closure-protocol.mdThis document owns the mechanics:
Then wire the control stack to obey it:
master-roadmap.md
release-file-review-ledger.md
overview.md
Current Readcommands/reconsolidate-roadmap.md
commands/refresh-file-review-ledger.md
The first consumer of the protocol is the current Slate React drift:
packages/slate-react/test/** stays closedpackages/slate-react/** stays open until src/** residue is classifiedAllowed:
Slate React deleted test-family closure: packages/slate-react/test/**Slate React deleted source-family closure: packages/slate-react/src/**Not allowed:
Slate React closureSlate React deletion closureMeaning:
Every package with split deletion buckets must define a closure tree.
The seeded tree must come from the frozen deleted inventory, not memory.
Current Slate React example from the live deleted inventory:
packages/slate-react/**packages/slate-react/test/**packages/slate-react/src/hooks/android-input-manager/**packages/slate-react/src/chunking/**packages/slate-react/src/components/restore-dom/**packages/slate-react/src/hooks/* files derived from the
frozen inventorypackages/slate-react/src/components/* files derived from
the frozen inventorypackages/slate-react/CHANGELOG.mdpackages/slate-react/src/utils/environment.tspackages/slate-react/src/custom-types.tspackages/slate-react/src/@types/direction.d.tsThe grouped “remaining deleted ... files derived from the frozen inventory” rows above mean: derive the exact leftover deleted paths in those subtrees from the frozen inventory and enumerate them in the parent/child matrix before any closure wording changes.
Parent promotion rule:
closedexplicit skipClosing a child bucket does not close the parent bucket.
Example:
packages/slate-react/test/** is closedSlate React test-family is closedSlate React is closedslate-react from the remaining-open roadmap bulletsEvery deletion-family closeout note must end with:
Scope closedSibling buckets still openWhat this batch does NOT closeIf there are no open siblings, the note must say that explicitly.
Historic closeout handling:
Before editing control docs, capture the deleted-path inventory once from the target repo and freeze it for the batch.
git -C /Users/zbeyens/git/slate-v2 diff --diff-filter=D --name-only -- <package-or-scope>
Then derive the exact child inventory from that frozen set and classify each path as:
Do not rerun the raw deleted diff later and treat it as a new source of truth.
If any sibling source bucket in the frozen inventory is still open, top-level docs must keep the parent package visible in remaining-open language.
Deletion closure is not just file accounting.
When the restored/cut behavior touches named runtime lanes, the batch must cite:
true-slate-rc-proof-ledger.mdrelease-file-review-ledger.mddocs/slate-browser/proof-lane-matrix.mdExample:
Editable / focus / composition changes
runtime/browserpublic surfaceyarn test:slate-browser:ime:localyarn test:slate-browser:domNo freeform owner taxonomy like selection-sync.
Allowed:
is closedSlate React test-family is closedNot allowed:
Slate React deletion review is closedunless the parent packages/slate-react/** row reconciles to zero open
children.
docs/slate-v2/deletion-closure-protocol.md
docs/slate-v2/master-roadmap.md
docs/slate-v2/release-file-review-ledger.md
docs/slate-v2/overview.md
docs/slate-v2/commands/reconsolidate-roadmap.md
docs/slate-v2/commands/refresh-file-review-ledger.md
Goal:
Exit:
packages/slate-react/test/** remains closedpackages/slate-react/** is still visibly open until src/** is reconciledGoal:
deletion-closure-protocol.mdMust include:
Goal:
Required edits:
master-roadmap.mdrelease-file-review-ledger.mdoverview.mdcommands/reconsolidate-roadmap.mdcommands/refresh-file-review-ledger.mdGoal:
packages/slate-react/**This matrix must be exhaustive against the frozen deleted inventory, including:
packages/slate-react/test/**packages/slate-react/src/chunking/**packages/slate-react/src/components/restore-dom/**packages/slate-react/src/hooks/android-input-manager/**This proves the protocol on a real package and removes ambiguity about what is still open.
master-roadmap.md, overview.md, release-file-review-ledger.md, and
both command docs all reference or enforce the protocol in their own
role-appropriate waypackages/slate-react/** tree is exhaustive against the frozen
deleted inventory, not a representative samplePlanning artifact verification:
bunx prettier --check docs/plans/2026-04-09-slate-v2-deletion-closure-protocol-hardening-consensus-plan.mdExecution-phase verification should include:
bunx prettier --check on the touched roadmap/process docsrg -n "packages/slate-react/test/\\*\\*|packages/slate-react/src/\\*\\*|deletion-closure-protocol|remaining open deletion|frozen inventory" docs/slate-v2/master-roadmap.md docs/slate-v2/overview.md docs/slate-v2/release-file-review-ledger.md docs/slate-v2/commands/reconsolidate-roadmap.md docs/slate-v2/commands/refresh-file-review-ledger.md docs/slate-v2/deletion-closure-protocol.mdIf the rollout also corrects live Slate React package wording:
/Users/zbeyens/git/plate-2/docs/plans/2026-04-09-slate-v2-deletion-closure-protocol-rollout.md
under a Frozen Deleted Inventory sectionpackages/slate-react/** parent/child matrix must have zero
unmatched paths against that frozen inventoryclosed or explicit skipowner-boundary duplication
release-file-review-ledger.md, lane ids stay in
docs/slate-browser/proof-lane-matrix.mdstale diff reruns changing truth mid-refresh
historic closeouts instantly failing the new contract
under-enumerated child buckets leaking package-wide closure again
Create one dedicated deletion-closure protocol doc and wire the control stack to obey it.
packages/slate-history/test/**
deletion batchpackages/slate-react/** as the first seeded package-level closure treeAvailable useful agent types for follow-up execution:
executorarchitectcriticverifierwriterBest follow-up is $ralph, not $team.
Why:
Suggested Ralph work:
deletion-closure-protocol.mdOnly use $team if you insist on splitting:
This is probably slower than Ralph because the write surfaces overlap.