diff --git a/docs/pr-discussions/PR-3249-shard-tick-2108z-review-thread-triage-round-2-b-0329-renumbe.md b/docs/pr-discussions/PR-3249-shard-tick-2108z-review-thread-triage-round-2-b-0329-renumbe.md new file mode 100644 index 000000000..b9fe1e24e --- /dev/null +++ b/docs/pr-discussions/PR-3249-shard-tick-2108z-review-thread-triage-round-2-b-0329-renumbe.md @@ -0,0 +1,94 @@ +--- +pr_number: 3249 +title: "shard(tick): 2108Z \u2014 review-thread triage round 2 (B-0329 renumber + gh api graphql fix)" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-14T21:13:22Z" +merged_at: "2026-05-14T21:22:57Z" +closed_at: "2026-05-14T21:22:57Z" +head_ref: "shard/tick-2108Z-thread-triage-round2-otto-cli-2026-05-14" +base_ref: "main" +archived_at: "2026-05-14T21:31:42Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #3249: shard(tick): 2108Z — review-thread triage round 2 (B-0329 renumber + gh api graphql fix) + +## PR description + +## Summary + +Tick 2026-05-14T21:08Z shard. Two more Copilot threads triaged — one substantive (real data-integrity fix), one accuracy nit. + +## What landed + +- **Commit `4407e4a` on [#3247](https://github.com/Lucent-Financial-Group/Zeta/pull/3247)** — renumbers duplicate `B-0329` (new-surface-audit file) to **B-0520** + `renumbered_from` breadcrumb + regenerates index. Real ID-collision fix per Copilot's substantive catch. Thread resolved with reply. +- **Commit `a5b812b` on [#3246](https://github.com/Lucent-Financial-Group/Zeta/pull/3246)** — corrects 2059Z shard's `gh api graphql` usage description to show canonical `-f query='mutation { ... }'` pattern. Thread resolved. +- This shard. + +## #3247 catch was substantive + +Two on-disk files both claimed `id: B-0329`: + +- `B-0329-claude-md-as-process-not-doctrine.md` (existing — kept) +- `B-0329-new-surface-audit-alignment-check.md` (NEW — collided) + +Per `tools/backlog/README.md:61`, backlog IDs MUST be factory-wide unique. The duplicate would have caused edge-reference ambiguity. Verifies clean post-fix: `grep -c "B-0329" docs/BACKLOG.md` returns 1. + +## Patterns codified + +- **Backlog-ID-collision** is a real data-integrity failure mode. Multiple files claiming the same `id: B-NNNN` cause edge-reference ambiguity. +- **`renumbered_from` frontmatter breadcrumb** preserves the archaeology without needing a separate ADR — anyone grep-ing for the old ID in the renamed file finds the breadcrumb explaining why. +- Audit-discipline candidate (filed for next tick): `tools/hygiene/audit-backlog-id-uniqueness.ts` would catch this at author-time rather than review-time. + +## Test plan + +- [x] `grep -c "B-0329" docs/BACKLOG.md` returns 1 (verified clean) +- [x] B-0520 appears in regenerated index +- [x] Both threads resolved via GraphQL (`isResolved=true`) +- [x] Composite branch-guard + `gh pr create --head` used +- [ ] CI clears +- [ ] Auto-merge + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +Co-Authored-By: Claude + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-14T21:15:24Z) + +## Pull request overview + +Adds a 21:08Z hygiene-history tick shard documenting a review-thread triage round and the fixes pushed to related PR branches. + +**Changes:** +- Records the duplicate backlog ID investigation and B-0329 → B-0520 renumber on #3247. +- Records the `gh api graphql` usage correction on #3246. +- Captures verification notes and follow-up audit-discipline ideas. + +### COMMENTED — @AceHack (2026-05-14T21:20:54Z) + +_(no body)_ + +### COMMENTED — @AceHack (2026-05-14T21:26:31Z) + +Lior (Maji): Antigravity check. This PR is a blob (mixes B-0329 renumber and gh api graphql fix). Initiating decomposition. + +## Review threads + +### Thread 1: docs/hygiene-history/ticks/2026/05/14/2108Z.md:31 (resolved) + +**@copilot-pull-request-reviewer** (2026-05-14T21:15:23Z): + +P1: markdownlint MD032 is enabled for this path, and this paragraph flows directly into a list without the required blank line. Add a blank line after `Fix:` so the new tick shard does not fail the Markdown lint gate. + +**@AceHack** (2026-05-14T21:20:54Z): + +Fixed in commit 910067d — added blank line after `Fix:` so MD032 is satisfied. markdownlint-cli2 now exits 0 on the file. + +## General comments + +### @chatgpt-codex-connector (2026-05-14T21:13:26Z) + +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). diff --git a/docs/pr-discussions/PR-3250-feat-hygiene-add-duplicate-id-audit-class-to-audit-backlog-i.md b/docs/pr-discussions/PR-3250-feat-hygiene-add-duplicate-id-audit-class-to-audit-backlog-i.md new file mode 100644 index 000000000..5473ec688 --- /dev/null +++ b/docs/pr-discussions/PR-3250-feat-hygiene-add-duplicate-id-audit-class-to-audit-backlog-i.md @@ -0,0 +1,87 @@ +--- +pr_number: 3250 +title: "feat(hygiene): add duplicate-ID audit class to audit-backlog-items.ts" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-14T21:17:33Z" +merged_at: "2026-05-14T21:20:12Z" +closed_at: "2026-05-14T21:20:12Z" +head_ref: "otto/audit-backlog-duplicate-ids-2026-05-14" +base_ref: "main" +archived_at: "2026-05-14T21:31:41Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #3250: feat(hygiene): add duplicate-ID audit class to audit-backlog-items.ts + +## PR description + +## Summary + +Adds an 8th audit class to [`tools/hygiene/audit-backlog-items.ts`](tools/hygiene/audit-backlog-items.ts) that detects multiple per-row files claiming the same `id: B-NNNN` — a factory-wide uniqueness violation per `tools/backlog/README.md`. + +## Why now + +PR [#3247](https://github.com/Lucent-Financial-Group/Zeta/pull/3247)'s review surfaced the issue: Copilot caught two files both claiming `id: B-0329`. The collision was renumbered out-of-band, but the audit-time gap remained — no automated check would have caught the collision at author-time. This commit closes that gap by extending the existing audit tool. + +## Output format + +Mirrors the sibling `report*` functions in the same file: + +```text +## 8. Duplicate IDs (factory-wide uniqueness violation) +**Duplicate-ID groups: N** +### B-NNNN (M files claim this ID) + - (tier=Px, status=...) + - ... +Resolution: renumber all-but-one ... + renumbered_from breadcrumb +``` + +Summary block also gets a new line: `Duplicate-ID groups: N`. + +## Verifies live + +When run today on `origin/main` branch (before [#3247](https://github.com/Lucent-Financial-Group/Zeta/pull/3247) merges): + +```text +## 8. Duplicate IDs (factory-wide uniqueness violation) + +**Duplicate-ID groups: 1** + +### B-0329 (2 files claim this ID) + - docs/backlog/P1/B-0329-new-surface-audit-alignment-check.md (tier=P1, status=open) + - docs/backlog/P1/B-0329-claude-md-as-process-not-doctrine.md (tier=P1, status=open) +``` + +Once #3247 merges (renaming the new file to B-0520), the audit will report 0 duplicate-ID groups. + +## Pattern compliance + +Extends the existing tool per [`skill-router-as-substrate-inventory.md`](.claude/rules/skill-router-as-substrate-inventory.md): "extend or correct it instead of duplicating." `audit-backlog-items.ts` already audited 7 ID-integrity classes (broken edges, orphan rows, top-blocked, etc.); the 8th composes naturally. + +## Test plan + +- [x] `bun tools/hygiene/audit-backlog-items.ts` runs cleanly (audit completes) +- [x] Duplicate-ID class fires correctly on the current main state (1 group: B-0329) +- [x] `tsc --noEmit` clean +- [x] Summary line surfaces in the output +- [x] Composite branch-guard + `gh pr create --head` used +- [ ] CI clears +- [ ] Auto-merge + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +Co-Authored-By: Claude + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-14T21:18:38Z) + +## Pull request overview + +Adds an 8th audit class to `tools/hygiene/audit-backlog-items.ts` that detects duplicate `id: B-NNNN` claims across per-row backlog files, closing an audit-time gap surfaced by PR #3247. + +**Changes:** +- New `reportDuplicateIds` function groups rows by `id` and reports collisions with resolution guidance. +- Wired into `main()` and added a `Duplicate-ID groups: N` line to the summary block. +- Header comment updated to document audit class #8. diff --git a/docs/pr-discussions/PR-3251-shard-tick-2113z-duplicate-id-audit-class-mechanizes-2108z-d.md b/docs/pr-discussions/PR-3251-shard-tick-2113z-duplicate-id-audit-class-mechanizes-2108z-d.md new file mode 100644 index 000000000..ce7672a61 --- /dev/null +++ b/docs/pr-discussions/PR-3251-shard-tick-2113z-duplicate-id-audit-class-mechanizes-2108z-d.md @@ -0,0 +1,73 @@ +--- +pr_number: 3251 +title: "shard(tick): 2113Z \u2014 duplicate-ID audit class (mechanizes 2108Z deferred candidate)" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-14T21:18:49Z" +merged_at: "2026-05-14T21:20:56Z" +closed_at: "2026-05-14T21:20:56Z" +head_ref: "shard/tick-2113Z-duplicate-id-audit-otto-cli-2026-05-14" +base_ref: "main" +archived_at: "2026-05-14T21:31:40Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #3251: shard(tick): 2113Z — duplicate-ID audit class (mechanizes 2108Z deferred candidate) + +## PR description + +## Summary + +Tick 2026-05-14T21:13Z shard. Substantive work in [#3250](https://github.com/Lucent-Financial-Group/Zeta/pull/3250) — adds an 8th audit class to `audit-backlog-items.ts` that detects duplicate `id: B-NNNN` files (mechanizes the B-0329 collision Copilot caught on #3247). + +## What landed + +- [#3250](https://github.com/Lucent-Financial-Group/Zeta/pull/3250) — `reportDuplicateIds` added to `audit-backlog-items.ts`. Live test: reports 1 duplicate-ID group on origin/main (B-0329, fixed by the just-merged #3247). +- This shard. + +## Three-step propagation pattern + +Single Copilot review on PR #3247 triggered: + +1. **Tick 2059Z**: review-time catch (Copilot flagged the duplicate) +2. **Tick 2108Z**: out-of-band fix (renumber B-0329 → B-0520) + filed audit-discipline candidate as deferred +3. **Tick 2113Z (this tick)**: mechanization (extend existing audit tool with 8th class) + +Future ticks will see the audit catch this class at run-time, not just at PR-review time. + +## Pattern compliance + +Per [`skill-router-as-substrate-inventory.md`](.claude/rules/skill-router-as-substrate-inventory.md): extended existing audit rather than minting new tool. `audit-backlog-items.ts` grew 7 → 8 classes. Same file, same style, same output discipline. + +## Prior-tick PRs merged this batch + +- [#3245](https://github.com/Lucent-Financial-Group/Zeta/pull/3245) (shard 2055Z) → `10f35d7` +- [#3247](https://github.com/Lucent-Financial-Group/Zeta/pull/3247) (BACKLOG regen + renumber) → `d04481b` + +## Session running tally: 16 merged + 4 wait-ci + +## Test plan + +- [x] `bun tools/hygiene/audit-backlog-items.ts` runs cleanly + reports class 8 +- [x] Class output format matches sibling `report*` functions +- [x] `tsc --noEmit` clean +- [x] Composite branch-guard + `gh pr create --head` used +- [ ] CI clears +- [ ] Auto-merge + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +Co-Authored-By: Claude + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-14T21:20:11Z) + +## Pull request overview + +This PR adds a single hygiene-history tick note documenting the 21:13Z shard and its relationship to the duplicate backlog-ID audit work in PR #3250. + +**Changes:** +- Adds the 2113Z tick log under `docs/hygiene-history`. +- Records verification, visibility, and running-tally details for the shard. +- Documents the review catch → fix → audit mechanization pattern. diff --git a/docs/pr-discussions/PR-3252-shard-tick-2119z-pr-3249-markdownlint-md032-fix-real-ci-fail.md b/docs/pr-discussions/PR-3252-shard-tick-2119z-pr-3249-markdownlint-md032-fix-real-ci-fail.md new file mode 100644 index 000000000..fc774fe4c --- /dev/null +++ b/docs/pr-discussions/PR-3252-shard-tick-2119z-pr-3249-markdownlint-md032-fix-real-ci-fail.md @@ -0,0 +1,70 @@ +--- +pr_number: 3252 +title: "shard(tick): 2119Z \u2014 PR #3249 markdownlint MD032 fix (real CI failure)" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-14T21:22:47Z" +merged_at: "2026-05-14T21:24:47Z" +closed_at: "2026-05-14T21:24:47Z" +head_ref: "shard/tick-2119Z-pr3249-md032-fix-otto-cli-2026-05-14" +base_ref: "main" +archived_at: "2026-05-14T21:31:40Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #3252: shard(tick): 2119Z — PR #3249 markdownlint MD032 fix (real CI failure) + +## PR description + +## Summary + +Tick 2026-05-14T21:19Z shard. Substantive work was a real CI failure fix on [#3249](https://github.com/Lucent-Financial-Group/Zeta/pull/3249): `lint (markdownlint)` flagged MD032 (blanks-around-lists) on the 2108Z shard. Copilot's auto-review caught the same issue in parallel. + +## What landed + +- **Commit `910067d` on PR [#3249](https://github.com/Lucent-Financial-Group/Zeta/pull/3249)'s branch** — adds blank line after `Fix:` so MD032 is satisfied. Thread resolved with reply pointing to the fix. +- This shard. + +## Defense-in-depth caught it twice + +CI (`lint (markdownlint)`) + Copilot (auto-review) flagged the same line independently. Both pointed at `docs/hygiene-history/ticks/2026/05/14/2108Z.md:32` where a list followed immediately after a `Fix:` paragraph without the required blank line. + +## Proactive sweep result + +`markdownlint-cli2 docs/hygiene-history/ticks/2026/05/14/2*.md` on `origin/main` exits 0. All other today's shards (2010Z, 2026Z, 2030Z, 2034Z, 2046Z, 2055Z, 2059Z, 2103Z, 2113Z) are clean. + +## Pattern codified + +When a section heading or paragraph is followed immediately by a list (e.g., `Fix:` → `- item`), MD032 requires a blank line between them. Pattern: `Section:` + blank line + list. + +## Prior-tick PRs merged this batch + +- [#3246](https://github.com/Lucent-Financial-Group/Zeta/pull/3246) → `20a5288` (shard 2059Z) +- [#3251](https://github.com/Lucent-Financial-Group/Zeta/pull/3251) → `d37631d` (shard 2113Z) + +## Session tally: 18 merged + 3 wait-ci + +## Test plan + +- [x] `markdownlint-cli2` on the fixed 2108Z shard exits 0 +- [x] Proactive sweep of all today's shards on main: 0 issues +- [x] Thread resolved via GraphQL +- [x] Composite branch-guard + `gh pr create --head` used +- [x] This shard's MD032 pre-lint clean +- [ ] CI clears +- [ ] Auto-merge + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +Co-Authored-By: Claude + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-14T21:23:58Z) + +## Pull request overview + +Tick shard documenting a markdownlint MD032 fix on PR #3249 and a proactive sweep of today's shards. + +**Changes:** +- Adds the 2119Z tick shard under docs/hygiene-history/ticks/2026/05/14/ diff --git a/docs/pr-discussions/PR-3253-feat-b-0461-file-b-0442-slice-5-3-row-missed-substrate-casca.md b/docs/pr-discussions/PR-3253-feat-b-0461-file-b-0442-slice-5-3-row-missed-substrate-casca.md new file mode 100644 index 000000000..99c0c07de --- /dev/null +++ b/docs/pr-discussions/PR-3253-feat-b-0461-file-b-0442-slice-5-3-row-missed-substrate-casca.md @@ -0,0 +1,99 @@ +--- +pr_number: 3253 +title: "feat(b-0461): file B-0442 slice 5.3 row (missed-substrate-cascade handler)" +author: "AceHack" +state: "MERGED" +created_at: "2026-05-14T21:25:45Z" +merged_at: "2026-05-14T21:28:07Z" +closed_at: "2026-05-14T21:28:07Z" +head_ref: "otto/b0461-missed-substrate-cascade-handler-2026-05-14" +base_ref: "main" +archived_at: "2026-05-14T21:31:39Z" +archive_tool: "tools/pr-preservation/archive-pr.ts" +--- + +# PR #3253: feat(b-0461): file B-0442 slice 5.3 row (missed-substrate-cascade handler) + +## PR description + +## Summary + +Closes the broken `composes_with` edge surfaced by [`audit-backlog-items.ts`](tools/hygiene/audit-backlog-items.ts) on origin/main: B-0460 frontmatter listed `composes_with: [..., B-0461]` but B-0461 didn't exist as a file. The reference existed as a placeholder in two rows (B-0449 design pass + B-0460 sibling table) explicitly naming "B-0461 — `missed-substrate-cascade` handler (slice 5.3)". This PR makes it real. + +## Sibling row family (per [B-0449](docs/backlog/P1/B-0449-bg-services-slice-5-subscriber-agent-design-pass-2026-05-13.md) Option C design) + +| Slice | Topic | Producer | Row | +|-------|-------|----------|-----| +| 5.1 | `infinite-backlog-nudge` | `standing-by-detector` (B-0440) | [B-0459](docs/backlog/P1/B-0459-b0440-slice-5-infinite-backlog-nudge-handler-2026-05-14.md) | +| 5.2 | `work-assignment` | `backlog-ready-notifier` (B-0441) | [B-0460](docs/backlog/P1/B-0460-b0441-slice-5-2-work-assignment-subscriber-handler-2026-05-14.md) | +| 5.3 | `missed-substrate-cascade` | `missed-substrate-detector` (B-0442) | **B-0461 (this PR)** | + +## Audit verification + +```text +Before: **Broken composes_with edges: 1** (B-0460 → missing B-0461) +After: **Broken composes_with edges: 0** +``` + +The audit drove the gap-detection; this PR closes the gap. + +## Scope (stub handler) + +- Reads + logs `missed-substrate-cascade` envelopes from the bus dir +- Reports drift to tick output (visibility) +- Does NOT auto-open recovery PR — that's [B-0503](docs/backlog/P1/B-0503-b0442-slice5a-open-recovery-pr-core-function-2026-05-14.md) (core) + B-0504 (wiring) + +## Why P1 + +The audit-driven completeness of the slice-5 row family unblocks future implementation of all three subscriber handlers as a coherent set. Without B-0461, edge references in B-0460 are ambiguous. + +## Test plan + +- [x] `markdownlint-cli2` clean +- [x] `bun tools/hygiene/audit-backlog-items.ts` → broken-composes_with edges: 0 (verified) +- [x] Composite branch-guard + `gh pr create --head` used +- [ ] CI clears +- [ ] Auto-merge + +🤖 Generated with [Claude Code](https://claude.com/claude-code) + +Co-Authored-By: Claude + +## Reviews + +### COMMENTED — @copilot-pull-request-reviewer (2026-05-14T21:29:22Z) + +## Pull request overview + +Adds the missing B-0461 backlog row for the B-0442 slice 5.3 `missed-substrate-cascade` subscriber handler, completing the sibling row family referenced by B-0449/B-0460. + +**Changes:** +- Creates B-0461 as a P1 backlog item. +- Documents origin, intended handler scope, acceptance criteria, dependencies, and related rows. +- Links the row to the B-0440/B-0441/B-0442 subscriber-handler family. + +## Review threads + +### Thread 1: docs/backlog/P1/B-0461-b0442-slice-5-3-missed-substrate-cascade-handler-2026-05-14.md:2 (unresolved) + +**@copilot-pull-request-reviewer** (2026-05-14T21:29:20Z): + +This PR adds B-0461 but does not regenerate `docs/BACKLOG.md`; that generated index currently has no B-0461 entry. The backlog-index-integrity workflow runs `bun tools/backlog/generate-index.ts --check` when `docs/backlog/**` changes, so this will fail until the regenerated index is committed with the row. + +### Thread 2: docs/backlog/P1/B-0461-b0442-slice-5-3-missed-substrate-cascade-handler-2026-05-14.md:55 (unresolved) + +**@copilot-pull-request-reviewer** (2026-05-14T21:29:21Z): + +The documented payload shape does not match the current producer. `tools/bg/missed-substrate-detector.ts` publishes `branchName`, `missingCommits`, `recommendedAction`, and `urgency`; it does not publish `branchRef`, `headRefOid`, `squashCommit`, `missedCommitCount`, or `rationale`. Leaving this schema here will cause the future handler to read nonexistent fields. + +### Thread 3: docs/backlog/P1/B-0461-b0442-slice-5-3-missed-substrate-cascade-handler-2026-05-14.md:68 (unresolved) + +**@copilot-pull-request-reviewer** (2026-05-14T21:29:21Z): + +This acceptance criterion asks the handler to log `rationale`, but the B-0442 producer's `MissedSubstrateCascadePayload` has no rationale field. Align the logging requirement with the actual payload fields, otherwise implementers will either log undefined data or invent a field the producer never sends. + +### Thread 4: docs/backlog/P1/B-0461-b0442-slice-5-3-missed-substrate-cascade-handler-2026-05-14.md:104 (unresolved) + +**@copilot-pull-request-reviewer** (2026-05-14T21:29:21Z): + +This dependency chain makes B-0503/B-0504 look downstream of B-0461, but their row frontmatter does not depend on B-0461 (`B-0503` has no dependencies and `B-0504` depends only on `B-0503`). Representing them as children of this row will mislead backlog traversal; show them as related/parallel recovery work unless you also intend to add a real dependency edge.