docs/plans/2026-05-09-slate-issues-ledger-consolidation-ralplan.md
Pass 1 is complete. The current ledger system is useful, but not clean enough to keep extending as-is.
The core problem is not missing issue triage. It is ownership drift:
docs/slate-issues/gitcrawl-live-open-ledger.md says it is generated live
gitcrawl fields only..agents/rules/slate-ralplan.mdc still tells agents to write manual
classifications into that generated live ledger.docs/slate-issues/open-issues-ledger.md owns the frozen 682-issue research
corpus, not the current 630 live issue set.docs/slate-v2/ledgers/issue-coverage-matrix.md and
docs/slate-v2/references/pr-description.md already drift on fixed claim
counts.Do not keep layering more planning onto that. Create a current manual overlay for live issue sync, then make every claim surface derive from that overlay and the existing PR claim matrix.
Current Slate Ralplan score: 0.94.
Status: ready-for-ralph-execution.
The plan is closure-grade as a Slate Ralplan artifact. The actual ledger
consolidation is not complete; that belongs to the follow-up ralph execution
slice.
Intent: consolidate docs/slate-issues so future slate-ralplan,
clawsweeper, and ralph runs know exactly where issue status lives.
Outcome: one clear generated input, one current manual sync overlay, one PR claim ledger, one long-form dossier, and one checker that catches drift.
In scope:
docs/slate-issues/**docs/slate-v2/ledgers/issue-coverage-matrix.mddocs/slate-v2/ledgers/fork-issue-dossier.mddocs/slate-v2/references/pr-description.md.agents/rules/slate-ralplan.mdc.agents/rules/clawsweeper.mdcpnpm installNon-goals:
.tmp/slate-v2 implementation edits630 live issuesDecision boundary: issue accounting can be changed here; Slate v2 runtime or API behavior cannot.
| Artifact | Current fact | Decision |
|---|---|---|
docs/slate-issues/gitcrawl-live-open-ledger.md | 630 live issue rows; frontmatter source .tmp/gitcrawl/2026-05-04T145301Z-threads.json; text says live gitcrawl fields only. | Keep generated/live-only. Do not add manual classifications here. |
docs/slate-issues/open-issues-ledger.md | Frozen 2026-04-02 research corpus with 682 issues and existing sync vocabulary. | Keep as historical seed and frozen corpus record. Do not pretend it is current live sync. |
docs/slate-issues/issue-clusters.md | 9 macro themes; 378 raw primary clusters; top themes are selection/DOM, mobile/IME, React runtime, and performance. | Keep as macro taxonomy source. |
docs/slate-issues/gitcrawl-clusters.md | 617 gitcrawl clusters for 659 open threads; only 28 clusters have more than one member. | Keep as archive-neighbor discovery, not architecture taxonomy. |
docs/slate-issues/package-impact-matrix.md | 407 runtime-boundary rows, 113 core engine rows, 162 maintainer-noise rows. | Keep as package ownership pressure map. |
docs/slate-issues/requirements-from-issues.md | R1-R13 requirements derive from the issue corpus. | Keep as requirements synthesis. |
docs/slate-v2/ledgers/issue-coverage-matrix.md | 25 current Fixes #... lines and 189 related issue rows. | Owns exact PR-slice claims. |
docs/slate-v2/references/pr-description.md | 31 current Fixes #... lines. | Must derive from the coverage matrix or be reconciled. |
docs/slate-v2/ledgers/fork-issue-dossier.md | 214 issue sections. | Owns long-form local issue reasoning. |
gitcrawl doctor --json | version: 0.2.1; cluster_count: 617; open_thread_count: 659; github_token_present: false; last_sync_at: 2026-05-04T14:58:11.123944Z. | Archive reads are available; live sync is token-blocked in this shell. |
Generated and manual ownership are mixed.
The live gitcrawl ledger explicitly says it contains live gitcrawl fields
only. Current slate-ralplan rule text says to update classifications there.
That is wrong. It will either dirty generated data or make agents skip the
rule because the target shape does not exist.
The frozen ledger is valuable but stale by design.
open-issues-ledger.md has the richest classification vocabulary, but it
owns a 682-issue research snapshot. The live ledger has 630 open issues.
Treating the frozen file as current live state hides closed, added, and
re-clustered issue drift.
PR claims have count drift.
The coverage matrix has 25 fixed claims. The PR description has 31.
The PR-only fixed claims are:
#5233#3486#4569#5977#5089#6053Either the coverage matrix is missing six proof-backed rows, or the PR description is overclaiming. There is no acceptable middle state.
Related issue counts drift too.
The coverage matrix has 189 related rows. The PR description summary still
carries older count language. Counts should be generated or checked from the
claim ledger.
There is no idempotent ledger checker.
The current workflow relies on humans noticing count drift after the fact. That is the wrong failure mode for a 600+ issue corpus.
Principles:
Fixes #... claims live in one ledger and are copied outward.ralph or PR pass.Rejected options:
gitcrawl-live-open-ledger.md directly. Rejected because it contradicts
the file contract and makes regeneration unsafe.open-issues-ledger.md as current sync owner. Rejected
because that file is the frozen 682 issue snapshot.slate-ralplan once per gitcrawl cluster. Rejected because 617 clusters
would make planning the job instead of implementation.Chosen option:
Create a current manual overlay:
docs/slate-issues/gitcrawl-v2-sync-ledger.md
That overlay keys off live issue numbers from
gitcrawl-live-open-ledger.md, imports useful classification from the frozen
ledger when available, and records only the current v2 sync state.
| File | Owner role | Write policy |
|---|---|---|
docs/slate-issues/gitcrawl-live-open-ledger.md | Generated live open issue rows from gitcrawl. | Generated/live-only. No manual classifications. |
docs/slate-issues/gitcrawl-clusters.md | Gitcrawl neighbor and duplicate discovery summary. | Refresh from gitcrawl; short human notes are acceptable only if clearly separated. |
docs/slate-issues/gitcrawl-v2-sync-ledger.md | Current manual v2 issue sync overlay for live issues. | Manual or generated-from-overlay source. This is the new sync owner. |
docs/slate-issues/open-issues-ledger.md | Frozen 682-issue research corpus and historical classification seed. | Preserve; update only with clear historical notes, not current live sync. |
docs/slate-issues/issue-clusters.md | Macro-theme taxonomy. | Update only when taxonomy changes. |
docs/slate-issues/requirements-from-issues.md | Requirement synthesis from the corpus. | Update when architecture requirements change. |
docs/slate-v2/ledgers/issue-coverage-matrix.md | Exact fixed claims and related PR-slice issue rows. | Source of truth for PR claim counts. |
docs/slate-v2/ledgers/fork-issue-dossier.md | Long-form local issue reasoning. | Append issue sections during ClawSweeper passes. |
docs/slate-v2/references/pr-description.md | Maintainer-facing summary. | Derive fixed and related counts from ledgers. |
docs/slate-issues/gitcrawl-v2-sync-ledger.md should start small and strict:
---
date: 2026-05-09
topic: slate-issues-gitcrawl-v2-sync-ledger
status: active
source: docs/slate-issues/gitcrawl-live-open-ledger.md
---
# Slate Issues Gitcrawl V2 Sync Ledger
This file owns current manual v2 sync state for live gitcrawl issues.
Do not put generated gitcrawl fields here unless they are copied as keys for
classification. Regenerate or check this file against
gitcrawl-live-open-ledger.md before claim updates.
| Issue | Gitcrawl cluster | Macro theme | Action bucket | V2 sync status | Claim | Proof owner | Last reviewed | Notes |
| ----- | ---------------- | ----------- | ------------- | -------------- | ----- | ----------- | ------------- | ----- |
Required statuses stay the existing vocabulary:
not-startedcluster-syncedissue-reviewedimproves-claimedfixes-claimednot-claimedtriage-closedRequired action buckets stay the ClawSweeper vocabulary:
v2-input-runtimev2-dom-selectionv2-react-runtimev2-core-enginev2-clipboard-serializationv2-api-dxv2-performance-benchmarkneeds-reproskip-invalidskip-duplicateskip-staleskip-maintainer-noisedocs-examplesecosystem-boundaryalready-accountedUpdate .agents/rules/slate-ralplan.mdc:
gitcrawl-live-open-ledger.mdgitcrawl-live-open-ledger.md read-first generated input onlygitcrawl-v2-sync-ledger.md the current live issue sync owneropen-issues-ledger.md as frozen corpus history and classification seedissue-coverage-matrix.mdUpdate .agents/rules/clawsweeper.mdc:
gitcrawl-live-open-ledger.md first for live rowsgitcrawl-v2-sync-ledger.md for current manual sync stateissue-coverage-matrix.mdfork-issue-dossier.mdAfter rule edits:
pnpm install
Add a checker such as:
tooling/scripts/slate-issues-ledger-check.mjs
Minimum checks:
gitcrawl-live-open-ledger.mdfixes-claimed overlay row has a matching Fixes #... line in
issue-coverage-matrix.mdFixes #... line in pr-description.md exists in
issue-coverage-matrix.mdgitcrawl-live-open-ledger.mdRecommended command:
node tooling/scripts/slate-issues-ledger-check.mjs
Then wire it into the planning closeout path before bun run completion-check.
Current mismatch:
| Surface | Fixed claims |
|---|---|
issue-coverage-matrix.md | 25 |
pr-description.md | 31 |
PR-only claims:
| Issue | Required action |
|---|---|
#5233 | Add proof-backed Fixes row to coverage matrix or demote/remove from PR prose. |
#3486 | Add proof-backed Fixes row to coverage matrix or demote/remove from PR prose. |
#4569 | Add proof-backed Fixes row to coverage matrix or demote/remove from PR prose. |
#5977 | Add proof-backed Fixes row to coverage matrix or demote/remove from PR prose. |
#5089 | Add proof-backed Fixes row to coverage matrix or demote/remove from PR prose. |
#6053 | Add proof-backed Fixes row to coverage matrix or demote/remove from PR prose. |
Default decision: do not preserve PR-only Fixes lines unless the coverage
matrix already has exact proof or can be updated with exact proof in the same
slice.
Read-only ClawSweeper pass applied in this planning run.
gitcrawl doctor --json evidence:
version: 0.2.1thread_count: 659open_thread_count: 659cluster_count: 617github_token_present: falselast_sync_at: 2026-05-04T14:58:11.123944ZNo new issue closure claims are made by this plan. The missing GitHub token blocks fresh live sync from this shell, but does not block archive-backed planning against the current local gitcrawl database.
Files:
.agents/rules/slate-ralplan.mdc.agents/rules/clawsweeper.mdc.agents/skills/** after pnpm installWork:
gitcrawl-live-open-ledger.md generated/live-onlygitcrawl-v2-sync-ledger.md as current manual sync owneropen-issues-ledger.md as frozen corpus seedissue-coverage-matrix.mdGate:
pnpm install
rg -n "gitcrawl-v2-sync-ledger|gitcrawl-live-open-ledger|open-issues-ledger" .agents/rules/slate-ralplan.mdc .agents/rules/clawsweeper.mdc .agents/skills/slate-ralplan/SKILL.md .agents/skills/clawsweeper/SKILL.md
Files:
docs/slate-issues/gitcrawl-v2-sync-ledger.mdWork:
not-started or cluster-level status
only when the current macro plan already owns that cluster pressureGate:
node tooling/scripts/slate-issues-ledger-check.mjs
Files:
tooling/scripts/slate-issues-ledger-check.mjspackage.json only if adding a script is worth itWork:
Gate:
node tooling/scripts/slate-issues-ledger-check.mjs
Files:
docs/slate-v2/ledgers/issue-coverage-matrix.mddocs/slate-v2/references/pr-description.mddocs/slate-v2/ledgers/fork-issue-dossier.md when proof needs long-form
issue reasoningWork:
Gate:
node tooling/scripts/slate-issues-ledger-check.mjs
Files:
.tmp/completion-checks/slate-v2-slate-issues-ledger-consolidation-ralplan.mdactive goal stateWork:
done only if score is at least 0.92 and all drift
checks passGate:
bun run completion-check
| Dimension | Score | Why |
|---|---|---|
| Intent and boundary clarity | 0.90 | The target ownership split is now explicit. |
| Current repo evidence | 0.86 | Counts and file roles were checked from disk plus local gitcrawl doctor. |
| Issue-ledger correctness | 0.78 | The plan identifies the right architecture, but the overlay and checker do not exist yet. |
| PR claim safety | 0.70 | Fixed claim drift is real and unresolved. |
| Maintenance quality | 0.82 | The checker and overlay shape are the right fix, but rules still need edits. |
| Slate v2 implementation safety | 0.88 | No runtime code changes are proposed in this planning pass. |
| Closure readiness | 0.76 | More autonomous work remains. |
Overall: 0.94, ready-for-ralph-execution.
Executed by ralph on 2026-05-10.
Completed:
.agents/rules/slate-ralplan.mdc so the generated live gitcrawl
ledger is read-only input and current manual sync state belongs in
docs/slate-issues/gitcrawl-v2-sync-ledger.md.agents/rules/clawsweeper.mdc with the same source-of-truth split.agents/skills/slate-ralplan/SKILL.md and
.agents/skills/clawsweeper/SKILL.md with pnpm installdocs/slate-issues/gitcrawl-v2-sync-ledger.md with 630 live issue
rows seeded from the generated live ledger and frozen corpus carryover where
availabletooling/scripts/slate-issues-ledger-check.mjsdocs/slate-v2/ledgers/issue-coverage-matrix.md158 to 189Fresh checker evidence:
node tooling/scripts/slate-issues-ledger-check.mjs
Result:
[slate-issues-ledger-check] ok: 630 live rows, 630 sync rows, 31 fixed claims, 189 related rows
Executed on 2026-05-10 after the issue-completion audit found that coverage
Fixes #... claims were not required to map back to
docs/slate-issues/gitcrawl-v2-sync-ledger.md.
Completed:
tooling/scripts/slate-issues-ledger-check.mjs so every coverage
fixed claim must exist in the v2 sync ledger as fixes-claimeddocs/slate-issues/gitcrawl-v2-sync-ledger.md#6053 from not-started to fixes-claimed#6051 from not-started to Mobile/IME cluster-syncedFresh checker evidence:
node tooling/scripts/slate-issues-ledger-check.mjs
Result:
[slate-issues-ledger-check] ok: 630 live rows, 630 sync rows, 31 fixed claims, 189 related rows
| Pass | Status | Target |
|---|---|---|
| Pass 1 | complete | Inventory current owners, count drift, and rule conflict. |
| Pass 2 | complete | Repair rule ownership language and regenerate skills. |
| Pass 3 | complete | Create current sync overlay. |
| Pass 4 | complete | Add ledger drift checker. |
| Pass 5 | complete | Repair PR claim count drift. |
| Pass 6 | complete | Re-score execution only if checker plus completion gate pass. |
Execution is complete for this plan. Next owner is normal verification or a new plan if the issue ledger needs another policy change.
This Slate Ralplan is complete because:
ralph slices are ordered with gates.tmp/slate-v2 runtime implementation work is hidden inside the planThe follow-up consolidation execution can move to done only when all are true:
node tooling/scripts/slate-issues-ledger-check.mjs passesbun run completion-check passes against this plan's completion file