diff --git a/docs/hygiene-history/ticks/2026/05/15/0921Z.md b/docs/hygiene-history/ticks/2026/05/15/0921Z.md new file mode 100644 index 0000000000..d6ac697847 --- /dev/null +++ b/docs/hygiene-history/ticks/2026/05/15/0921Z.md @@ -0,0 +1,69 @@ +| 2026-05-15T09:21:00Z | claude-opus-4-7 | 596e842c | shard: discovered sed-bug class (body col 4 (PR TBD) mentions break col 5 fix); apology + clarification + 2 corrective PRs (#3395 fix + #3397 for 0916Z on main) | (PR #3398) | substrate-honest discipline correction: the @-delimited pipe-anchored sed is the new standard | + +# Tick 0921Z — sed-bug discovered (body col 4 conflict); apology + 2 corrective PRs + +## Headline + +- **PR [#3394](https://github.com/Lucent-Financial-Group/Zeta/pull/3394)** (0903Z shard) MERGED → `df3e20f` on `origin/main`. +- **PR [#3395](https://github.com/Lucent-Financial-Group/Zeta/pull/3395)** had a Copilot thread I had wrongly classified as "stale" earlier — VERIFIED LEGIT this tick. Pipe-row col 5 of 0911Z.md actually did still have `(PR TBD)` despite my "post-create-fix" sed. Posted substrate-honest apology + clarification. +- **Root cause identified**: `sed -i '' '1s|(PR TBD)|(PR #NNNN)|' ` replaces only the FIRST occurrence on line 1. When body col 4 contains `(PR TBD)` text mentions (e.g., discussing the discipline by name), it gets substituted first, leaving the PR-ref col 5 untouched. Two shards affected: 0911Z and 0916Z (both meta-discipline shards discussing the `(PR TBD)` pattern). +- **Corrective PRs**: + - PR #3395 commit `bb41604`: proper `@`-delimited pipe-anchored sed applied to 0911Z. In-flight (auto-merge armed). + - PR [#3397](https://github.com/Lucent-Financial-Group/Zeta/pull/3397) opened + auto-merge armed: 0916Z fix (the bug landed on main via #3396; can't fix retroactively, requires new PR). +- Cron sentinel `596e842c` armed. + +## Δ since 0916Z + +| What | At 0916Z | At 0921Z | +|---|---|---| +| PR #3394 | OPEN, 1 stale Copilot resolved | MERGED (`df3e20f`) | +| PR #3395 (0911Z shard) | OPEN, "stale-Copilot reply+resolved" | OPEN, fix-commit `bb41604` for ACTUAL bug; apology+clarification posted on thread | +| PR #3396 (0916Z shard) | OPEN, wait-ci | MERGED at 09:22:07Z with bug — corrective PR #3397 filed | +| PR #3397 (0916Z fix) | did not exist | OPEN, armed | +| Sed discipline | line-1-anchored | @-delimited pipe-anchored (new standard) | +| Stale-`(PR TBD)` classifications correctness | 5 marked stale (4 correct, 1 wrong-and-revealed-bug-class) | acknowledged the misclassification | + +## Substrate-honest observations + +### Sed-bug class: body col 4 (PR TBD) mention breaks line-1-anchored sed + +The discipline lesson `sed -i '' '1s|(PR TBD)|(PR #NNNN)|' ` from tick 0844Z was **insufficient**. It only works when body col 4 has NO `(PR TBD)` text. When the body discusses the discipline by name (e.g., "stale-Copilot on \`(PR TBD)\` pipe-row"), the sed matches body first, leaving col 5 untouched. + +Updated discipline (with BSD-vs-GNU portability notes per Codex P2 carry-forward from PR #3393 + PR #3398): + +- **macOS / BSD sed**: `sed -i '' '1s@| (PR TBD) |@| (PR #NNNN) |@' ` — requires `''` after `-i`. +- **Linux / GNU sed**: `sed -i '1s@| (PR TBD) |@| (PR #NNNN) |@' ` — no quotes after `-i` (GNU treats `''` as a filename argument, silently skips the substitution). +- **Portable cross-platform**: `perl -i -pe 's@\| \(PR TBD\) \|@| (PR #NNNN) |@ if $. == 1' ` — Perl is universally available + has unambiguous semantics. + +Key elements (all forms): + +- `@`-delimiter (since `|` is both shell pipe and substitution delimiter in `sed s|...|...|`) +- `| (PR TBD) |` matches the cell-boundary with surrounding pipes + spaces +- Targets col 5 specifically; immune to body col 4 mentions +- Line-1-anchor (`1s` for sed, `if $. == 1` for perl) confines to pipe-row + +Verified empirically: 0911Z applied correctly post-fix. + +### Substrate-honest acknowledgment of mis-classification + +In tick 0903Z + 0911Z + 0916Z, I marked Copilot's `(PR TBD)` reviews as "stale" using a templated reply. ONE of those (PR #3395's, this tick) was a misclassification — the bug-class meant col 5 actually wasn't fixed. The other 4 (PRs #3388, #3389, #3393, #3394) were correctly classified as stale because their shards didn't have body `(PR TBD)` mentions. + +Apology + clarification reply posted on the misclassified thread. Substrate-honest: don't pretend the wrong classification didn't happen; explain the bug class + scope it accurately. + +### Discipline-lesson propagation + +The 0844Z discipline ("use `1s|...|...|` for line-1-anchored sed") is now superseded by the @-delimited pipe-anchored form. The 0844Z + 0855Z + 0903Z + 0911Z + 0916Z + 0921Z shards form a discipline-evolution chain. Future-Otto reading them in order sees the bug-discovery + refinement sequence. + +For canonical documentation, this should land in `.claude/rules/` somewhere. But that's a separate PR; not in this tick's scope. + +## Cron sentinel + +`596e842c` armed. + +## Next + +Cron-driven. Next tick: + +1. Verify PR #3379 + #3381 + #3395 (with fix-commit) + #3397 (0916Z fix) + this tick's PR auto-merge fires +2. Address any new review threads (this tick's shard might trigger reviewers) +3. Consider canonicalizing the `@`-delimited sed discipline in `.claude/rules/` as a separate small PR