diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index ceaa8218d5..eb63def1b1 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -321,9 +321,13 @@ are closed (status: closed in frontmatter)._ - [ ] **[B-0088.5](backlog/P2/B-0088.5-audit-backlog-index-integrity-lint-advisory-status-riven-2026-05-11.md)** Audit backlog-index-integrity.yml for advisory-vs-required parity (B-0088 sibling) - [ ] **[B-0089](backlog/P2/B-0089-veridicality-rainbow-table-canonicalization-research-and-graduation-aaron-ani-amara-2026-04-28.md)** Veridicality rainbow-table canonicalization — research + ship semantic + scoring layers; drop "bullshit detector" as a forward-going name - [ ] **[B-0090](backlog/P2/B-0090-cadenced-lost-substrate-recovery-audit-aaron-2026-04-28.md)** Cadenced lost-substrate recovery audit (worktrees + orphan branches + closed-not-merged PRs + draft PRs aged > N days) +- [ ] **[B-0090.1](backlog/P2/B-0090.1-lost-substrate-3-bucket-classification-taxonomy.md)** Lost-substrate 3-bucket classification taxonomy (ALREADY-COVERED / NEEDS-RECOVERY / OBSOLETE) - [ ] **[B-0090.1](backlog/P2/B-0090.1-ts-worktree-survey-atomic-riven-2026-05-10.md)** TS survey tool for locked worktrees (git worktree list + 3-bucket classify) - [ ] **[B-0090.2](backlog/P2/B-0090.2-ts-orphan-branch-survey-atomic-riven-2026-05-10.md)** TS survey tool for orphan branches (unmerged + no-PR) +- [ ] **[B-0090.2](backlog/P2/B-0090.2-worktree-branch-delta-audit.md)** Worktree-branch delta audit (locked .claude/worktrees/ only, last-N-days) +- [ ] **[B-0090.3](backlog/P2/B-0090.3-closed-not-merged-pr-scan.md)** Closed-not-merged PRs + orphan branches + aged-draft-PRs scan (AceHack + LFG) - [ ] **[B-0090.3](backlog/P2/B-0090.3-ts-closed-pr-survey-atomic-riven-2026-05-10.md)** TS survey for closed-not-merged PRs aged + content diff +- [ ] **[B-0090.4](backlog/P2/B-0090.4-cadence-and-hygiene-history-hook.md)** Cadence hook + hygiene-history append for lost-substrate audits (weekly/monthly) - [ ] **[B-0090.4](backlog/P2/B-0090.4-ts-draft-pr-aged-survey-atomic-riven-2026-05-10.md)** TS survey for draft PRs aged > N days + content snapshot - [x] **[B-0091](backlog/P2/B-0091-audit-and-rename-servicetitan-references-in-live-docs-aaron-2026-04-28.md)** Audit + rename ServiceTitan references in live (non-historical) repo surfaces — use generic "external UI demo" / "external CRM API demo" forward-going - [ ] **[B-0092](backlog/P2/B-0092-public-company-contributor-compliance-doc-and-cadenced-trajectories-aaron-2026-04-28.md)** Public-company contributor compliance — doc + cadenced trajectories (audit-on-commit, weekly/monthly compliance review, on-PR audit, on-onboarding briefing, drift retrospective) diff --git a/docs/backlog/P2/B-0090-cadenced-lost-substrate-recovery-audit-aaron-2026-04-28.md b/docs/backlog/P2/B-0090-cadenced-lost-substrate-recovery-audit-aaron-2026-04-28.md index 8808cdf3ec..5f1c7e15c3 100644 --- a/docs/backlog/P2/B-0090-cadenced-lost-substrate-recovery-audit-aaron-2026-04-28.md +++ b/docs/backlog/P2/B-0090-cadenced-lost-substrate-recovery-audit-aaron-2026-04-28.md @@ -1,17 +1,21 @@ --- id: B-0090 priority: P2 -status: open +status: decomposed title: Cadenced lost-substrate recovery audit (worktrees + orphan branches + closed-not-merged PRs + draft PRs aged > N days) tier: factory-hygiene -effort: M +effort: M (now 4x S children) ask: maintainer Aaron 2026-04-28T23ish *"probably a trajectory this is recovery work we should do forever on a cadence these kind of lost things could always build up"* created: 2026-04-28 -last_updated: 2026-05-02 +last_updated: 2026-05-11 depends_on: [] composes_with: - B-0060 -tags: [aaron-2026-04-28, factory-hygiene, lost-substrate, cadenced-audit, content-loss-surface, metric-ladder] + - B-0090.1 + - B-0090.2 + - B-0090.3 + - B-0090.4 +tags: [aaron-2026-04-28, factory-hygiene, lost-substrate, cadenced-audit, content-loss-surface, metric-ladder, decomposed] type: friction-reducer --- @@ -26,6 +30,21 @@ worktrees + the in-flight 19 LOST GitHub branches task (#264): > forever on a cadence these kind of lost things could always > build up."* +## 2026-05-11 Re-decomposition (Riven, one bounded step) + +B-0090 was too broad (M effort, trajectory-shaped, 4 surfaces + cadence + metric ladder). Per "always re-decompose during build — assume mistakes" rule, split into 4 smallest dependency-ordered atomic S-effort child rows: + +**Dependency order (buildable now):** + +1. **B-0090.1** — 3-bucket taxonomy (root, no deps) — defines ALREADY-COVERED / NEEDS-RECOVERY / OBSOLETE with decision tree. +2. **B-0090.2** — worktree delta audit (depends 0090.1) — TS scanner for locked worktrees only. +3. **B-0090.3** — closed-not-merged / orphan / aged-draft PR scan (depends 0090.1) — GitHub surface. +4. **B-0090.4** — cadence hook + hygiene-history append (depends 0090.1+2+3) — wiring only. + +Re-decomp assumption checked: taxonomy split first avoids label drift; scanners are pure classification (no recovery logic); cadence is hook, not full scheduler. All children are now claimable as single bounded slices. Parent effort reduced to "orchestration of children". + +Focused checks run in worktree (see PR body). + ## Why P2 Lost substrate accumulates as a side effect of velocity. Without diff --git a/docs/backlog/P2/B-0090.1-lost-substrate-3-bucket-classification-taxonomy.md b/docs/backlog/P2/B-0090.1-lost-substrate-3-bucket-classification-taxonomy.md new file mode 100644 index 0000000000..a215c660d7 --- /dev/null +++ b/docs/backlog/P2/B-0090.1-lost-substrate-3-bucket-classification-taxonomy.md @@ -0,0 +1,43 @@ +--- +id: B-0090.1 +priority: P2 +status: open +title: Lost-substrate 3-bucket classification taxonomy (ALREADY-COVERED / NEEDS-RECOVERY / OBSOLETE) +tier: factory-hygiene +effort: S +depends_on: [] +composes_with: [B-0090] +tags: [b0090-decomp, taxonomy, classification, lost-substrate] +type: friction-reducer +--- + +# B-0090.1 — Lost-substrate 3-bucket classification taxonomy + +## Why this child exists + +B-0090's Step 3 classification is the load-bearing primitive. Without a single, versioned, citable definition of the three buckets, every cycle reinvents the labels and drift appears. This row makes the taxonomy durable substrate before any scanner or cadence is built. + +## Atomic scope (S effort) + +- Single source of truth (new file or section in GLOSSARY.md or docs/DRIFT-TAXONOMY.md extension). +- Exact bucket names + one-sentence operational definition + decision tree (1-2 if/else per bucket). +- Example from 2026-04-28 audit for each bucket. +- No tooling, no cadence, no scanners. + +## Dependency note + +This is the first root. All other B-0090.* children depend on it for the shared vocabulary. Re-decomposition assumption: taxonomy may need a 4th bucket later (e.g. PARTIALLY-COVERED); keep it three for v1. + +## Acceptance + +- [ ] Taxonomy committed as durable file with §33 header. +- [ ] Decision tree fits on <20 lines. +- [ ] One concrete example per bucket from prior audit. +- [ ] No implementation beyond the definition. + +## Evidence + +- Parent: docs/backlog/P2/B-0090-cadenced-lost-substrate-recovery-audit-aaron-2026-04-28.md +- Worked example memory: memory/feedback_lost_substrate_recovery_cadenced_trajectory_aaron_2026_04_28.md + +Co-Authored-By: Grok diff --git a/docs/backlog/P2/B-0090.2-worktree-branch-delta-audit.md b/docs/backlog/P2/B-0090.2-worktree-branch-delta-audit.md new file mode 100644 index 0000000000..388c5a73a1 --- /dev/null +++ b/docs/backlog/P2/B-0090.2-worktree-branch-delta-audit.md @@ -0,0 +1,46 @@ +--- +id: B-0090.2 +priority: P2 +status: open +title: Worktree-branch delta audit (locked .claude/worktrees/ only, last-N-days) +tier: factory-hygiene +effort: S +depends_on: [B-0090.1] +composes_with: [B-0090] +tags: [b0090-decomp, worktree, delta-scan, lost-substrate] +type: friction-reducer +--- + +# B-0090.2 — Worktree-branch delta audit + +## Why this child exists + +The 57 locked worktrees are the highest-volume surface. B-0090.1 taxonomy now exists; this row is the minimal delta scanner that classifies only worktrees changed since last audit (not full 57 every time). Keeps cost S per cycle. + +## Atomic scope (S effort) + +- TS script (tools/hygiene/audit-worktree-delta.ts) or equivalent that: + - Lists locked worktree branches. + - Diffs against last-audit marker (file or git note). + - Applies B-0090.1 3-bucket classification. + - Outputs markdown table + count of NEEDS-RECOVERY. +- No auto-prune, no recovery PRs, no cadence wiring. +- Focused check: run on current .claude/worktrees/ and report bucket counts (include in PR body of this decomp). + +## Dependency note + +Depends on B-0090.1 for bucket names. Re-decomp assumption: "delta" may be over-constrained if no marker exists yet; first cycle may be full scan (still S). + +## Acceptance + +- [ ] Script passes dotnet build gate + focused lint. +- [ ] Output exactly matches 3-bucket taxonomy. +- [ ] No writes to root checkout (worktree only). +- [ ] One-page runbook in the script header. + +## Evidence + +- Parent B-0090 +- B-0090.1 taxonomy + +Co-Authored-By: Grok diff --git a/docs/backlog/P2/B-0090.3-closed-not-merged-pr-scan.md b/docs/backlog/P2/B-0090.3-closed-not-merged-pr-scan.md new file mode 100644 index 0000000000..5ab0c5fb3c --- /dev/null +++ b/docs/backlog/P2/B-0090.3-closed-not-merged-pr-scan.md @@ -0,0 +1,44 @@ +--- +id: B-0090.3 +priority: P2 +status: open +title: Closed-not-merged PRs + orphan branches + aged-draft-PRs scan (AceHack + LFG) +tier: factory-hygiene +effort: S +depends_on: [B-0090.1] +composes_with: [B-0090] +tags: [b0090-decomp, pr-state, orphan, draft-pr, lost-substrate] +type: friction-reducer +--- + +# B-0090.3 — Closed-not-merged PRs + orphan + aged-draft scan + +## Why this child exists + +Task #264 tracked 14 closed-not-merged + 5 orphans. B-0090.1 taxonomy now defined; this is the GitHub-surface scanner that produces the same 3-bucket output for PRs and branches. Monthly cadence surface. + +## Atomic scope (S effort) + +- TS wrapper around gh api + git ls-remote (or existing substrate-discovery tool). +- Filters: closed-not-merged (any age), orphan (no remote tracking), draft PRs >14 days. +- Classify each with B-0090.1 buckets. +- Emit hygiene-history row + summary counts only. +- No auto-close, no recovery. + +## Dependency note + +Depends on taxonomy. Re-decomp assumption: "aged > N days" N=14 may be wrong; make N configurable in the row (default 14) so future cycles can tune without re-decomp. + +## Acceptance + +- [ ] Uses only existing gh + git surfaces (no new auth). +- [ ] Output table matches taxonomy. +- [ ] Focused check run: current counts of each category on LFG (include in decomp PR body). +- [ ] SLOC < 150. + +## Evidence + +- Parent B-0090 + task #264 +- B-0090.1 + +Co-Authored-By: Grok diff --git a/docs/backlog/P2/B-0090.4-cadence-and-hygiene-history-hook.md b/docs/backlog/P2/B-0090.4-cadence-and-hygiene-history-hook.md new file mode 100644 index 0000000000..3581c463bf --- /dev/null +++ b/docs/backlog/P2/B-0090.4-cadence-and-hygiene-history-hook.md @@ -0,0 +1,42 @@ +--- +id: B-0090.4 +priority: P2 +status: open +title: Cadence hook + hygiene-history append for lost-substrate audits (weekly/monthly) +tier: factory-hygiene +effort: S +depends_on: [B-0090.1, B-0090.2, B-0090.3] +composes_with: [B-0090] +tags: [b0090-decomp, cadence, hygiene-history, autonomous] +type: friction-reducer +--- + +# B-0090.4 — Cadence hook + hygiene-history append + +## Why this child exists + +B-0090 acceptance requires "cadence encoded as routine". With scanners (0090.2/3) and taxonomy (0090.1) defined, this is the minimal wiring that makes the audit fire on schedule and record each cycle in docs/hygiene-history/ without expanding AUTONOMOUS-LOOP core. + +## Atomic scope (S effort) + +- Add entry to existing cadence surface (docs/AUTONOMOUS-LOOP.md or hygiene tick) that invokes the two scanners. +- Append one row per cycle to hygiene-history (timestamp + bucket counts + link to claim). +- No new cron, no runner change, no full implementation of recovery. + +## Dependency note + +Depends on 0090.1 + scanners. Re-decomp assumption: "weekly vs monthly" split may be premature; start with single "cadenced" hook and let first three cycles calibrate the split. Smallest atomic = the hook + history append only. + +## Acceptance + +- [ ] One new row in hygiene-history format. +- [ ] Hook is read-only invocation (no mutation in root). +- [ ] Documents the N-day tuning point for future. +- [ ] Passes build gate (doc-only change). + +## Evidence + +- Parent B-0090 +- B-0090.1, .2, .3 + +Co-Authored-By: Grok