diff --git a/docs/hygiene-history/ticks/2026/05/16/0240Z.md b/docs/hygiene-history/ticks/2026/05/16/0240Z.md new file mode 100644 index 000000000..deb93c501 --- /dev/null +++ b/docs/hygiene-history/ticks/2026/05/16/0240Z.md @@ -0,0 +1,76 @@ +# Tick 2026-05-16T02:40Z — Otto-CLI + +**Surface**: Otto-CLI (Claude Code, Opus 4.7 1M context, autonomous-loop tick) +**Parent tick**: [2026-05-16T02:34Z](0234Z.md) — multi-Otto duplicate catch + B-0545 scope re-assessment + +## What landed this tick + +Post-merge cleanup on PR #3685 (0226Z shard, merged at 02:34:01Z with 3 unresolved Copilot P1 threads). Required-checks-only gate allowed merge to proceed; threads landed unresolved on the merged PR. + +[PR #3689](https://github.com/Lucent-Financial-Group/Zeta/pull/3689) — `fix(post-merge): add git prefix to switch -c snippets in 0226Z shard` + +## Triage of the 3 threads (1 stale / 1 false positive / 1 real, but applicable to 2 lines) + +| Line | Copilot finding | Verdict | Action | +|------|-----------------|---------|--------| +| 4 | Dead link to `0218Z.md` | **STALE** | File landed on main via PR #3681 (merged 02:35:01Z, ~60s after #3685). Resolved no-op. | +| 39/44 | Extra leading `\|` in tables | **FALSE POSITIVE** | Direct `awk` inspection: line 39 is `\| ~~[#3676](…)~~ \| MERGED … \|` (clean 2-col); line 44 is `\| Item \| Tick \| PR \| State \|` (clean 4-col). No double-pipes. Resolved with no edit. | +| 69 | `switch -c …` missing `git` prefix | **REAL** | Also applies to line 68 (the prior line in the same numbered list). Both `switch -c` snippets fail in a clean shell without an alias/function. | + +Fix: prepend the `git` prefix to both snippets. Diff: +2/-2. + +## Thread-resolution receipt + +All 3 unresolved threads on PR #3685 resolved via: + +```bash +while IFS= read -r tid; do + gh api graphql -F threadId="$tid" \ + -f query='mutation($threadId: ID!) { resolveReviewThread(input: {threadId: $threadId}) { thread { isResolved } } }' +done < /tmp/pr3685-unresolved.txt +``` + +Tmpfile + `while read` pattern works where the earlier for-loop with command substitution lost the iteration boundary. Worth promoting to a snippet for future thread-bulk-resolve calls. + +## State at tick end + +| PR | State | +|----|-------| +| [#3688](https://github.com/Lucent-Financial-Group/Zeta/pull/3688) (0234Z shard, prior tick) | OPEN, armed | +| [#3689](https://github.com/Lucent-Financial-Group/Zeta/pull/3689) (this tick's git-prefix fix) | OPEN, armed | +| ~~[#3681 / #3684 / #3685]~~ | all MERGED (02:33–02:35Z) | + +## Lessons surfaced + +### Copilot reviews can include false positives — verify before fixing + +The "extra leading `|` in tables" finding hallucinated a double-pipe that doesn't exist in the source. Direct line-level inspection (`awk 'NR==N { print NR": ["$0"]" }'`) is the verification anchor. Resist the urge to apply blanket fixes when a tool reports findings — same discipline as `verify-before-deferring.md` extended to reviewer feedback. + +### Post-merge threads still merit triage + +Required-checks-only merge gates intentionally don't block on threads (per the threads-vs-required-checks rule documents). But unresolved threads on merged PRs: + +1. Stay as noisy signal in the PR-state-rollup +2. Sometimes flag real bugs that landed on main +3. Are the canonical surface for shadow-log cross-references + +The right discipline: investigate every unresolved thread on merged-recently PRs as part of the next autonomous-loop tick. This tick demonstrates the value — 2/3 findings were either stale or false-positive, but the 1/3 real finding fixed a copy-paste-executability bug that would have wasted any reader's time. + +### Same MD032 self-check pattern applied this shard + +Pre-write `awk` scan for paragraph-immediately-followed-by-bullet on this shard before commit. Already routine: 1-line check, catches the bug class that flagged 0218Z in tick 5. + +## Drift queue (carried) + +| Item | State | +|------|-------| +| 22 §33 xrefs | ✅ merged #3666 (tick 1) | +| BACKLOG.md generated-index | ✅ merged #3678 (tick 2) | +| tsc tools | ✅ merged #3684 (tick 4) | +| backlog ID uniqueness (B-0498 collision) | **claimed by otto-cli since 2026-05-16T01:44Z** (prior session); 24h TTL active; don't duplicate | + +## Next-tick candidates + +1. **Land lint check for tick-shard relative-path depth** — still the highest value-per-effort next-substrate item (5/6 `..` bug class). Carried from 0218Z + 0234Z next-tick candidates. +2. **Promote the `tmpfile + while read` thread-resolution pattern to a tools/ script** — small DX upgrade for future thread-bulk-resolve operations. +3. **Audit other recent-merged shards** for the `switch -c` (no `git` prefix) class — same shape as the §33 xref sweep, scoped to copy/paste-executable snippets.