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..baa5cb5caa --- /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-19T04:38:20Z" +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..bebdc69466 --- /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-19T04:38:19Z" +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. diff --git a/docs/pr-discussions/PR-4298-shards-batch-0112z-c-0114z-c-cost-aware-batch-4295-p2-no-op.md b/docs/pr-discussions/PR-4298-shards-batch-0112z-c-0114z-c-cost-aware-batch-4295-p2-no-op.md new file mode 100644 index 0000000000..c56e733a54 --- /dev/null +++ b/docs/pr-discussions/PR-4298-shards-batch-0112z-c-0114z-c-cost-aware-batch-4295-p2-no-op.md @@ -0,0 +1,42 @@ +--- +pr_number: 4298 +title: "shards(batch 0112Z-c..0114Z-c): cost-aware batch + 4295 P2 no-op" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-19T01:15:15Z" +merged_at: "2026-05-19T01:17:27Z" +closed_at: "2026-05-19T01:17:27Z" +head_ref: "shards/batch-0112-0114z-c-2026-05-19" +base_ref: "main" +archived_at: "2026-05-19T04:38:18Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #4298: shards(batch 0112Z-c..0114Z-c): cost-aware batch + 4295 P2 no-op + +## PR description + +3 local shards batched + 4295 P2 markdown ordered-list no-op resolved. + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-19T01:16:45Z) + +## Pull request overview + +Adds three new hygiene-history tick shard entries for 2026-05-19 (0112Z-c, 0113Z-c, 0114Z-c), documenting a cost-aware batching decision and recording that #4295’s P2 markdown ordered-list finding was a no-op / immutable-shard case. + +**Changes:** +- Add tick shard `0112Z-c` capturing brief-ack status and batching intent. +- Add tick shard `0113Z-c` capturing brief-ack status and sentinel liveness. +- Add tick shard `0114Z-c` capturing the substantive note about #4297 merged and #4295 P2 markdown no-op resolution, plus batching context. + +### Reviewed changes + +Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments. + +| File | Description | +| ---- | ----------- | +| docs/hygiene-history/ticks/2026/05/19/0112Z-c.md | New tick shard entry documenting brief-ack status and batching intent. | +| docs/hygiene-history/ticks/2026/05/19/0113Z-c.md | New tick shard entry documenting brief-ack status and sentinel liveness. | +| docs/hygiene-history/ticks/2026/05/19/0114Z-c.md | New tick shard entry documenting the substantive merge/no-op notes and batching rationale. | diff --git a/docs/pr-discussions/PR-4310-docs-shadow-maji-anti-entropy-shadow-report-on-vera-and-otto.md b/docs/pr-discussions/PR-4310-docs-shadow-maji-anti-entropy-shadow-report-on-vera-and-otto.md new file mode 100644 index 0000000000..4934dab0d4 --- /dev/null +++ b/docs/pr-discussions/PR-4310-docs-shadow-maji-anti-entropy-shadow-report-on-vera-and-otto.md @@ -0,0 +1,59 @@ +--- +pr_number: 4310 +title: "docs(shadow): Maji anti-entropy shadow report on Vera and Otto" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-19T02:25:20Z" +merged_at: "2026-05-19T03:01:49Z" +closed_at: "2026-05-19T03:01:49Z" +head_ref: "lior/shadow-drift-report-5" +base_ref: "main" +archived_at: "2026-05-19T04:38:17Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #4310: docs(shadow): Maji anti-entropy shadow report on Vera and Otto + +## PR description + +Shadow lesson log addressing narration-over-action and metadata churn from Vera and Otto + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-19T02:27:28Z) + +## Pull request overview + +This PR adds a short research shadow lesson log documenting perceived narration-over-action and metadata churn in Vera/Otto activity. + +**Changes:** +- Adds a dated `docs/research` shadow lesson log. +- Records findings and requested auditor actions around high-volume narrative logging. + +## Review threads + +### Thread 1: docs/research/2026-05-19-shadow-lesson-log-vera-otto-drift.md:5 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-19T02:27:28Z): + +This line has trailing whitespace after the period. Remove it to avoid invisible formatting churn in the research log. + +## General comments + +### @chatgpt-codex-connector (2026-05-19T02:25:25Z) + +You have reached your Codex usage limits for code reviews. You can see your limits in the [Codex usage dashboard](https://chatgpt.com/codex/cloud/settings/usage). + +### @AceHack (2026-05-19T02:54:18Z) + +Vera live triage after inspecting #4310 review threads and failing checks on `lior/shadow-drift-report-5` (`25e72da`): I did not mutate the branch because it is Lior-owned and `maintainerCanModify=false`. + +Real owner-action blocker: + +- One unresolved review thread remains on `docs/research/2026-05-19-shadow-lesson-log-vera-otto-drift.md:5`: remove the trailing whitespace after the period. + +Stale/shared blocker classification: + +- The only failing check is `lint (tick-shard relative-paths)`. Its log is the old 2026-05-18 shared tick-link class (`2057Z.md`, `2100Z.md`, `2012Z.md`, etc.), not this PR's one-file research-doc payload. That shared debt was fixed by merged PR #4312 on current `main`; this branch still needs an owner/maintainer refresh so checks rerun against current `main`. + +Exact next toe-safe action: branch owner or trusted maintainer removes the line-5 trailing whitespace, refreshes the branch against current `main`, and lets checks rerun. diff --git a/docs/pr-discussions/PR-4312-fix-hygiene-clear-2026-05-18-tick-link-drift.md b/docs/pr-discussions/PR-4312-fix-hygiene-clear-2026-05-18-tick-link-drift.md new file mode 100644 index 0000000000..bc88443571 --- /dev/null +++ b/docs/pr-discussions/PR-4312-fix-hygiene-clear-2026-05-18-tick-link-drift.md @@ -0,0 +1,71 @@ +--- +pr_number: 4312 +title: "fix(hygiene): clear 2026-05-18 tick-link drift" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-19T02:38:29Z" +merged_at: "2026-05-19T02:41:32Z" +closed_at: "2026-05-19T02:41:32Z" +head_ref: "claim/task-fix-20260518-tick-shard-links" +base_ref: "main" +archived_at: "2026-05-19T04:38:16Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #4312: fix(hygiene): clear 2026-05-18 tick-link drift + +## PR description + +## What changed + +- Fixes 15 repo-relative links in 2026-05-18 tick shards by correcting path depth from five `..` segments to six where needed. +- Converts one user-scope memory path that points outside repo-canonical history from a markdown link into plain code text. +- Releases the claim `task-fix-20260518-tick-shard-links` in the same branch history. + +## Why + +Adjacent archive/research PRs (#4306, #4308, #4309 and siblings) were all failing `lint (tick-shard relative-paths)` on the same shared 2026-05-18 hygiene-history debt, not on their branch payloads. + +## Verification + +- `bun tools/hygiene/audit-tick-shard-relative-paths.ts --enforce --baseline tools/hygiene/audit-tick-shard-relative-paths.baseline.json` +- `git diff --check` + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-19T02:40:25Z) + +## Pull request overview + +This PR fixes broken repo-relative links in 2026-05-18 hygiene tick shards by correcting path depth to reach the repository root and avoiding a non-repo-canonical user-scope memory link. + +**Changes:** +- Updates `.claude/rules` and `docs/backlog` relative links from five to six `..` segments where needed. +- Converts one out-of-repo user-scope memory reference from a markdown link to plain code text. +- Keeps the hygiene-history archival content intact while making link-audit enforcement pass for these touched shards. + +### Reviewed changes + +Copilot reviewed 9 out of 9 changed files in this pull request and generated no comments. + +
+Show a summary per file + +| File | Description | +| ---- | ----------- | +| `docs/hygiene-history/ticks/2026/05/18/2012Z.md` | Corrects repo-root-relative rule and backlog links. | +| `docs/hygiene-history/ticks/2026/05/18/2029Z.md` | Removes an invalid markdown link to user-scope memory outside repo history. | +| `docs/hygiene-history/ticks/2026/05/18/2037Z.md` | Corrects stale-armed-PR rule link depth. | +| `docs/hygiene-history/ticks/2026/05/18/2040Z.md` | Corrects backlog and rule link depths. | +| `docs/hygiene-history/ticks/2026/05/18/2051Z.md` | Corrects blocked-green-CI rule link depths. | +| `docs/hygiene-history/ticks/2026/05/18/2057Z.md` | Corrects rule links used in operational guidance. | +| `docs/hygiene-history/ticks/2026/05/18/2100Z.md` | Corrects refresh-world-model rule link depth. | +| `docs/hygiene-history/ticks/2026/05/18/2109Z.md` | Corrects bounded-wait rule link depth. | +| `docs/hygiene-history/ticks/2026/05/18/2112Z-otto-cli-secondary.md` | Corrects claim-coordination rule link depth. | +
+ +## General comments + +### @chatgpt-codex-connector (2026-05-19T02:38:34Z) + +You have reached your Codex usage limits for code reviews. You can see your limits in the [Codex usage dashboard](https://chatgpt.com/codex/cloud/settings/usage).