diff --git a/docs/pr-discussions/PR-4294-shard-0056z-c-codex-4292-regen-fix.md b/docs/pr-discussions/PR-4294-shard-0056z-c-codex-4292-regen-fix.md new file mode 100644 index 0000000000..0c8beb079f --- /dev/null +++ b/docs/pr-discussions/PR-4294-shard-0056z-c-codex-4292-regen-fix.md @@ -0,0 +1,31 @@ +--- +pr_number: 4294 +title: "shard(0056Z-c): Codex #4292 regen fix" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-19T00:58:59Z" +merged_at: "2026-05-19T01:00:55Z" +closed_at: "2026-05-19T01:00:55Z" +head_ref: "shard/tick-2026-05-19-0056z-c-codex-4292-regen-fix-2026-05-19" +base_ref: "main" +archived_at: "2026-05-19T02:24:03Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #4294: shard(0056Z-c): Codex #4292 regen fix + +## PR description + +BACKLOG.md regen on #4292; same pattern as #4291. + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-19T01:00:17Z) + +## Pull request overview + +Adds a hygiene-history tick documenting the #4292 backlog regeneration follow-up and thread resolution. + +**Changes:** +- Added tick `0056Z-c` with the timestamped summary row. +- Added a short narrative note tying the action to the prior #4291 regen pattern. diff --git a/docs/pr-discussions/PR-4295-shard-0106z-c-codex-4291-5-finding-batch-resolution.md b/docs/pr-discussions/PR-4295-shard-0106z-c-codex-4291-5-finding-batch-resolution.md new file mode 100644 index 0000000000..e6a135f2a5 --- /dev/null +++ b/docs/pr-discussions/PR-4295-shard-0106z-c-codex-4291-5-finding-batch-resolution.md @@ -0,0 +1,45 @@ +--- +pr_number: 4295 +title: "shard(0106Z-c): Codex #4291 5-finding batch resolution" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-19T01:10:10Z" +merged_at: "2026-05-19T02:13:10Z" +closed_at: "2026-05-19T02:13:10Z" +head_ref: "shard/tick-2026-05-19-0106z-c-codex-4291-5-findings-2026-05-19" +base_ref: "main" +archived_at: "2026-05-19T02:24:03Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #4295: shard(0106Z-c): Codex #4291 5-finding batch resolution + +## PR description + +Thread-investigation caught 5 Codex findings on #4291; addressed via branch update + no-op resolution. + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-19T01:12:51Z) + +## Pull request overview + +Adds a new hygiene-history tick shard documenting the resolution of five Codex findings identified on PR #4291, keeping the operational log in sync with the thread-investigation outcome. + +**Changes:** +- Added tick shard `0106Z-c` recording the 5-finding batch resolution for PR #4291. +- Captured the specific finding categories addressed (misattribution clarification, BACKLOG.md regen drift, and an immutable count inconsistency note). + +## Review threads + +### Thread 1: docs/hygiene-history/ticks/2026/05/19/0106Z-c.md:10 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-19T01:12:51Z): + +P2: The ordered list is unintentionally broken: `2-4.` is not a valid Markdown ordered-list marker, so this will render as item 1, then a normal paragraph, then a new list starting at 5. Consider making this a proper `2.` item (with “2–4:” in the text) or splitting into separate 2/3/4 items so the five findings render as one continuous list. + +## General comments + +### @AceHack (2026-05-19T01:15:02Z) + +P2 markdown ordered-list 2-4. format — shard immutable post-merge per tick-shard discipline; noted for future shard-discipline (use combined item OR proper sequential numbering). No-op resolution. diff --git a/docs/pr-discussions/PR-4296-fix-tools-backlog-lint-frontmatter-resolve-13-strict-null-ts.md b/docs/pr-discussions/PR-4296-fix-tools-backlog-lint-frontmatter-resolve-13-strict-null-ts.md new file mode 100644 index 0000000000..b899c6a56d --- /dev/null +++ b/docs/pr-discussions/PR-4296-fix-tools-backlog-lint-frontmatter-resolve-13-strict-null-ts.md @@ -0,0 +1,93 @@ +--- +pr_number: 4296 +title: "fix(tools/backlog/lint-frontmatter): resolve 13 strict-null TS errors blocking tsc-tools baseline lint" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-19T01:11:48Z" +merged_at: "2026-05-19T01:14:41Z" +closed_at: "2026-05-19T01:14:41Z" +head_ref: "otto-cli/fix-tsc-tools-baseline-lint-frontmatter-strict-null-2026-05-19-0111z" +base_ref: "main" +archived_at: "2026-05-19T02:24:04Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #4296: fix(tools/backlog/lint-frontmatter): resolve 13 strict-null TS errors blocking tsc-tools baseline lint + +## PR description + +## Summary + +Fixes 13 TypeScript strict-null errors (TS2345 / TS2532 / TS2322 / TS18048) in `tools/backlog/lint-frontmatter.ts` that have been failing the `lint (tsc tools)` baseline check on origin/main for an unknown duration. This baseline failure has been propagating to all tools-touching PRs, blocking factory-wide merge throughput. + +## Empirical evidence of impact + +- [PR #3979](https://github.com/Lucent-Financial-Group/Zeta/pull/3979) (gh-auth-refresh-wrapper fix): all 4 reviewer threads resolved, auto-merge armed, but stuck BLOCKED for >15 min after CI complete — diagnosed in [#3979 comment](https://github.com/Lucent-Financial-Group/Zeta/pull/3979#issuecomment-4483555128) as likely blocked by this baseline +- Compare: docs-only PRs (#4255, #4256, #4276) shipped through this session within ~2 min of CI completion despite same baseline failure — protection rule treats `tools/` edits differently when this specific check fails +- Fixing this baseline unblocks a class of PRs, not just one + +## Fix shape (all changes mechanical, no behavior change) + +All 13 errors are `noUncheckedIndexedAccess: true` (strict-null) failures from indexed array accesses and regex capture group dereferences. Two patterns applied: + +**Pattern A — undefined guard before use** (3 locations: lines 124, 154, 175): +```ts +const line = lines[i]; +if (line === undefined) continue; // ADDED +// existing code unchanged +``` + +**Pattern B — non-null assertion on regex capture groups** (10 locations: lines 127, 128, 144, 159, 178, 187, 193): +```ts +const key = m[1]!; // CHANGED from m[1] +``` + +Non-null is safe here because the regex literals have 1 or 2 explicit capture groups; if `.exec()` returns non-null, all declared capture groups exist. + +## Landing path + +Landed via GitHub REST contents API (`PUT /repos/.../contents/tools/backlog/lint-frontmatter.ts`) from an Otto-CLI session under dotgit-saturation, bypassing the B-0615 push receive-pack stall (see [PR #4276](https://github.com/Lucent-Financial-Group/Zeta/pull/4276) for the rule documenting this pattern). + +## Test plan + +- [x] Diff verified — only the 13 error locations touched +- [x] No behavior change — only TS-type-narrowing additions +- [x] Same patterns used elsewhere in the codebase (`m[1]!` on regex capture groups is idiomatic when `.exec()` is non-null-checked) + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +Co-Authored-By: Claude + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-19T01:13:31Z) + +## Pull request overview + +This PR mechanically updates `tools/backlog/lint-frontmatter.ts` to satisfy strict TypeScript nullability checks under `noUncheckedIndexedAccess`, unblocking the tools TypeScript lint baseline without changing runtime behavior. + +**Changes:** +- Added defensive `undefined` guards for indexed line reads. +- Added non-null assertions for regex capture groups after successful matches. +- Preserved existing backlog frontmatter lint logic. + +## General comments + +### @AceHack (2026-05-19T01:15:09Z) + +## CI blocker discovered — `check docs/BACKLOG.md generated-index drift` + +This PR's `lint (tsc tools)` fix would unblock the factory-wide baseline, but the PR itself is now blocked by a different baseline check: `check docs/BACKLOG.md generated-index drift`. + +**Why this fires here**: the check appears to trigger on any PR touching `docs/backlog/` OR `tools/backlog/` paths. My edit is in `tools/backlog/lint-frontmatter.ts` (tooling for backlog frontmatter linting), which trips the path filter even though it doesn't change any backlog content. + +**Same regen-class blocker as PR #4280** (which hit `check MEMORY.md generated-index drift` after editing `memory/CURRENT-otto.md`). Both checks require running a TS regen script locally and committing the regenerated index, which is blocked by the current dotgit-saturation (see [PR #4276](https://github.com/Lucent-Financial-Group/Zeta/pull/4276) for full context). + +**Recovery paths**: +1. **Aaron / substrate-engineer with healthy local git**: run `bun tools/backlog/generate-index.ts` (or equivalent), commit the regenerated `docs/BACKLOG.md`, push as follow-on commit on this branch — auto-merge fires after. +2. **Refine the drift check**: the check should ideally NOT fire on PRs that don't touch `docs/backlog/P*/B-*.md` files. Currently the path-trigger appears overbroad (catches `tools/backlog/` too). This is a separate substrate-engineering task. +3. **Manual merge override**: if the fix is urgent (it unblocks many other PRs), a maintainer can force-merge despite the drift; the regen will catch up on a later tick. + +**Substrate is durable**: commit `647d2605` lands the 13 strict-null fixes on this PR branch regardless of merge status. The fix logic is correct and validated against the original `tools/backlog/lint-frontmatter.ts` error log; can be cherry-picked or applied via `git am` from `/tmp/zeta-pending-substrate-2347z/` family pattern. + +🤖 Generated with [Claude Code](https://claude.com/claude-code) diff --git a/docs/pr-discussions/PR-4297-shard-0110z-c-4292-stale-but-self-healing.md b/docs/pr-discussions/PR-4297-shard-0110z-c-4292-stale-but-self-healing.md new file mode 100644 index 0000000000..4f6f144898 --- /dev/null +++ b/docs/pr-discussions/PR-4297-shard-0110z-c-4292-stale-but-self-healing.md @@ -0,0 +1,30 @@ +--- +pr_number: 4297 +title: "shard(0110Z-c): 4292 stale-but-self-healing" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-19T01:11:58Z" +merged_at: "2026-05-19T01:13:43Z" +closed_at: "2026-05-19T01:13:43Z" +head_ref: "shard/tick-2026-05-19-0110z-c-4292-stale-self-healing-2026-05-19" +base_ref: "main" +archived_at: "2026-05-19T02:24:05Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #4297: shard(0110Z-c): 4292 stale-but-self-healing + +## PR description + +Sibling PR landing resolves the cross-reference; no-op. + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-19T01:13:35Z) + +## Pull request overview + +Adds a new hygiene-history tick shard for the 2026-05-19 01:10Z window, recording that PR #4292’s remaining P2 thread was resolved as a no-op after a sibling PR landed the relevant cross-reference. + +**Changes:** +- Added `0110Z-c` tick shard with a valid 6-column header row and brief narrative summary.