Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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 <noreply@anthropic.com>

## 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)
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -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. |
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -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.

<details>
<summary>Show a summary per file</summary>

| 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. |
</details>

## 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).
Loading