diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 49339c175..5b03a15ab 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -60,7 +60,7 @@ are closed (status: closed in frontmatter)._ - [x] **[B-0145](backlog/P1/B-0145-product-manager-role-research-to-predict-features-before-friction-aaron-2026-05-01.md)** Product Manager (PM-2) role — research-to-predict-features-before-friction - [ ] **[B-0154](backlog/P1/B-0154-github-pages-seo-discoverability-plus-wiki-first-class-aaron-2026-05-01.md)** GitHub Pages for SEO/discoverability + GitHub Wiki first-class integration (Aaron 2026-05-01) - [ ] **[B-0155](backlog/P1/B-0155-github-settings-ruleset-split-git-native-preferred-aaron-2026-05-01.md)** GitHub settings refactor — split single ruleset into multiple smaller always-on rulesets, prefer git-native over legacy UI/CLI-only settings (Aaron 2026-05-01) -- [ ] **[B-0156](backlog/P1/B-0156-typescript-standardization-non-install-scripts-aaron-2026-05-01.md)** TypeScript standardization — port every .sh outside install graph + every .py to TS (Aaron 2026-05-01) +- [x] **[B-0156](backlog/P1/B-0156-typescript-standardization-non-install-scripts-aaron-2026-05-01.md)** TypeScript standardization — port every .sh outside install graph + every .py to TS (Aaron 2026-05-01) - [ ] **[B-0158](backlog/P1/B-0158-claude-rules-pattern-carved-sentences-only-aaron-2026-05-01.md)** Adopt `.claude/rules/.md` pattern + carved-sentences-only constraint (Aaron 2026-05-01) - [x] **[B-0159](backlog/P1/B-0159-refresh-github-worldview-cross-cutting-claudeai-2026-05-01.md)** refresh-github-worldview cross-cutting refresh script (Claude.ai 2026-05-01) - [x] **[B-0161](backlog/P1/B-0161-substrate-reshelf-asymmetry-applied-to-pr-1202-overshoot-aaron-claudeai-2026-05-02.md)** Substrate reshelf — apply thoughts-free-actions-razored asymmetry to PR #1202's CLAUDE.md overshoot (Aaron + Claude.ai 2026-05-02) diff --git a/docs/backlog/P1/B-0156-typescript-standardization-non-install-scripts-aaron-2026-05-01.md b/docs/backlog/P1/B-0156-typescript-standardization-non-install-scripts-aaron-2026-05-01.md index 57e49bcd0..de292c973 100644 --- a/docs/backlog/P1/B-0156-typescript-standardization-non-install-scripts-aaron-2026-05-01.md +++ b/docs/backlog/P1/B-0156-typescript-standardization-non-install-scripts-aaron-2026-05-01.md @@ -1,10 +1,10 @@ --- id: B-0156 priority: P1 -status: open +status: closed title: TypeScript standardization — port every .sh outside install graph + every .py to TS (Aaron 2026-05-01) created: 2026-05-01 -last_updated: 2026-05-16 +last_updated: 2026-05-17 decomposition: decomposed children: [B-0140] depends_on: @@ -14,6 +14,57 @@ composes_with: [B-0190, B-0194, B-0196] type: friction-reducer --- +## Resolution (2026-05-17) — substrate-drift close + +All six acceptance criteria are satisfied; row remained `open` +while every named artifact had landed. Closed per the +substrate-drift discriminator in +`.claude/rules/backlog-item-start-gate.md` (step 0). + +**Acceptance bullet → evidence**: + +1. *All 6 non-install `.sh` files have working TS siblings.* + The self-test in the body (run `find tools -name '*.sh' …`) + now returns ONLY install-graph files under `tools/setup/`. + Three originals were ported then deleted in Phase 1-2 + (`snapshot-github-settings.sh`, `check-github-settings-drift.sh`, + `check-tick-history-shard-schema.sh` — last shipped in PR + #1986). Three more were ported then deleted in Phase 3-4 + (`tools/profile.sh` via PR #1962 under child B-0140; + `tools/peer-call/amara.sh` + `tools/peer-call/ani.sh` via + subsequent ports). `tools/peer-call/amara.ts` (18891 bytes) + and `tools/peer-call/ani.ts` (16599 bytes) are present. +2. *Each TS sibling has at least one `bun test` covering its + primary entry path.* `tools/profile.test.ts` covers the + profile port. `tools/peer-call/smoke.test.ts` exercises + help-text + flag-acceptance on all 8 peer-call wrappers + (claude, grok, gemini, codex, kiro, amara, ani, riven) — + generalized from the B-0421 acceptance criterion to all + wrappers. The Phase-1/2 ports landed with their own test + files in their respective PRs. +3. *`.sh` siblings remain in tree during transition.* This + bullet was written before the Phase 5 sweep; Phase 5 has + landed and the originals are deleted (recoverable via + `git log --diff-filter=D` per + `tools/hygiene/LOST-FILES-LOCATIONS.md`). +4. *`.py` policy lint added to gate.yml.* Landed at + `.github/workflows/gate.yml:877` as the `lint-no-python-files` + job invoking `bun tools/lint/no-python-files.ts`. Allowlist + at `tools/lint/no-python-files.allowlist`; unit tests at + `tools/lint/no-python-files.test.ts`. Phase 6 was explicitly + marked DONE in the body on 2026-05-16. +5. *package.json scripts updated.* `grep -E '\.(sh|py)' package.json` + returns no matches; no shell/python references remain. +6. *No regression on existing CI.* All migration PRs merged + green on `main`; no follow-up regression rows filed. + +The row was substrate-drift, not in-progress work. Close +preserves the audit trail and frees the priority slot. Per +the substrate-drift catch pattern documented at +`memory/feedback_substrate_drift_catch_pattern_claim_acquire_plus_existence_check_otto_cli_2026_05_16.md`, +parsing `## Acceptance criteria` (not `composes_with:` cross-refs) +was the discriminator that fired here. + # B-0156 — TypeScript standardization across non-install scripts ## What