diff --git a/docs/pr-preservation/426-drain-log.md b/docs/pr-preservation/426-drain-log.md new file mode 100644 index 0000000000..ba21ceba6b --- /dev/null +++ b/docs/pr-preservation/426-drain-log.md @@ -0,0 +1,111 @@ +# PR #426 drain log — tick-history append for sustained-drain-wave 2026-04-25T04:15:00Z + +PR: +Branch: tick-history append (no dedicated branch; landed via the +hygiene-history append protocol) +Drain session: 2026-04-25 (Otto, sustained-drain-wave during maintainer- +asleep window; this is the **wave-summary tick-history append**, +itself drained for 3 Codex/Copilot post-merge findings on the row's +wording) +Thread count at drain: 3 substantive Codex P2 + Copilot post-merge +findings on the tick-history row's text accuracy. +Rebase context: clean rebase onto `origin/main`; no conflicts. + +Per Otto-250 (PR review comments + responses + resolutions are +high-quality training signals): full record of the post-merge +findings on the wave-summary tick-history row. + +This PR is a **meta-record**: the tick-history append summarizing +the 28-thread drain-wave that ran across PRs #414, #422, #423, #425, +#268, #270, #126, #133 during the maintainer-asleep window. The +post-merge cascade on this meta-record itself caught three +text-accuracy findings on the wave-summary row. + +--- + +## Threads — text-accuracy on the wave-summary row + +### Thread 1 — PR-count claim "6 PRs" → 8 PRs (Codex P2) + +- Reviewer: chatgpt-codex-connector +- Thread ID: `PRRT_kwDOSF9kNM59jsUM` +- Severity: P2 +- Finding: row stated scope as "6 PRs" but the enumerated (a)–(h) + list actually covered eight PRs (#414, #422, #423, #425, #268, + #270, #126, #133). Same shape as count-vs-list cardinality + pattern observed across #191 / #219 / #430 / #85. +- Outcome: **APPEND-ONLY CORRECTION-ROW (Otto-229)** — original + row stayed untouched; correction row added to point back at the + original timestamp + record the count correction. + +### Thread 2 — Inline `read -rs | printf` pipe-in-code-span breaks Markdown table (Copilot) + +- Reviewer: copilot-pull-request-reviewer +- Thread ID: `PRRT_kwDOSF9kNM59js7h` +- Severity: P1 (markdown rendering) +- Finding: inline code span containing unescaped `|` character + (`read -rs | printf ...`) inside a Markdown table row gets parsed + as a column separator, breaking the table structure + + markdownlint MD056 (similar to earlier issues). +- Outcome: **FIX** — pipe character escaped/replaced inside the + inline code span so the Markdown table renders correctly. Same + shape as the earlier "double-pipe" `||` fix (replaced with prose + "double-pipe" word) and the MD056 issues on prior tick-history + rows. + +### Thread 3 — Otto-279 frequency claim internally contradictory (Codex P2) + +- Reviewer: chatgpt-codex-connector +- Thread ID: `PRRT_kwDOSF9kNM59j17F` +- Severity: P2 +- Finding: pattern sentence in the row was internally contradictory: + said "across 4 of the 6 PRs" in one place AND "across 5 of the 8 + PRs" in another — both can't be true; one is the right metric. + Same shape as the count-vs-list cardinality pattern (Thread 1) + + the count-mismatch pattern (#191 / #219). +- Outcome: **APPEND-ONLY CORRECTION-ROW** — original row stayed + untouched; correction row reconciled the two metrics into a + single accurate count + cited the canonical PR enumeration. + +--- + +## Pattern observations (Otto-250 training-signal class) + +1. **Tick-history meta-records get drained too.** The wave-summary + tick-history append captured the 28-thread / 6-PR (actually 8-PR) + drain wave; the meta-record itself attracted 3 post-merge + findings on its text accuracy. Drain corpus is recursive: every + PR that lands gets reviewer-cascade attention regardless of + whether it's substantive content or meta-record. + +2. **Otto-229 append-only correction-row pattern applied uniformly.** + Threads 1 + 3 used the append-only correction-row pattern: the + original tick-history row stayed untouched (per Otto-229 + discipline); correction rows pointed back at the original + timestamp + recorded the corrections. Same pattern as #422 + (which was 4 corrections in one correction row); #426 has 2 + correction-row entries (Threads 1 + 3) plus 1 in-place fix + (Thread 2 — the pipe-in-code-span fix doesn't change history + content, just its renderable form). + +3. **Pipe-in-Markdown-table-row is a recurring formatting class.** + Inline code spans containing `|` inside Markdown tables get + parsed as column separators. Earlier tick-history rows had the + same issue with `||` (double-pipe inline code) breaking MD056; + #426 has it with `|` in a single command. Pre-commit-lint + candidate: regex check on Markdown table rows for unescaped `|` + inside code spans. + +4. **Count-vs-list cardinality** observed at 5 PRs now (#191, + #219, #430, #85, #426). At this density, the pre-commit-lint + candidate is high-leverage — the pattern is mature enough that + automation pays back across the entire drain corpus. + +## Final resolution + +All 3 threads resolved (2 via append-only correction-row + +1 in-place pipe-escape fix). PR #426 already merged at +`4bfcc8d`; corrections landed in subsequent tick-history appends. + +Drained by: Otto, sustained-drain-wave during maintainer-asleep +window 2026-04-25, cron heartbeat `f38fa487` (`* * * * *`).