hygiene(_patterns.md): document Otto-250-canonical vs Otto-268-abbreviated shape divergence - #467
Merged
Merged
Conversation
…iated drain-log shape divergence Multiple post-merge reviewer threads on the Otto-268-wave drain-logs (#437-#465) flagged that the abbreviated inline shape doesn't match the canonical Otto-250 multi-section format used in older drain-logs (#108, #247, etc.). The findings are correct: the shapes ARE different, and the abbreviated shape compresses verbatim reviewer/reply text into short prose. Documenting both shapes here in `_patterns.md` as a known divergence + three maintainer-decision options: (a) Rewrite — high churn, highest faithfulness. (b) Accept divergence — document both as valid. (c) Hybrid — canonical for substantive logs (math / crypto / algorithms / ADRs); abbreviated for low-substance. Until maintainer decides, drain-runners writing future logs default to canonical; existing Otto-268-wave logs stay abbreviated with this known-divergence pointer. This is the right place for the documentation per the synthesis- over-history surface-class declaration: `_patterns.md` reflects current corpus state including known shape divergences, separate from the per-log records. Composes with the per-PR drain-log threads currently flagging the shape-conformance gap on #437/#441/#442/#444/#445/#446/#447/#449/ #460/#461/#464/#466 — those threads can now reply with a one-line pointer to this section instead of repeating the maintainer- decision-pending framing.
There was a problem hiding this comment.
Pull request overview
Documents a known divergence in the docs/pr-preservation drain-log corpus by adding a new section to _patterns.md that contrasts a canonical (Otto-250) template vs a newer abbreviated template, and outlines maintainer-decision options for reconciling the two.
Changes:
- Added a “Known divergence: drain-log shape” section describing canonical vs abbreviated drain-log templates.
- Enumerated three maintainer-decision options (rewrite, accept divergence, hybrid) and a default recommendation for future logs.
AceHack
added a commit
that referenced
this pull request
Apr 25, 2026
…ntifier xref Codex P2 + Copilot threads on #447 caught: - Thread 1.2 missing the `Reviewer:` field even though the drain-log schema (intro paragraph) declares per-thread reviewer authorship. Added `Reviewer: copilot-pull-request-reviewer`. - Stale `docs/BACKLOG.md lines 1313-1328` citation: those lines now contain the Server Meshing section; the live-lock-smell cadence row drifted to ~L1452 in the P1 tooling section. Replaced with the stable identifier (heading text 'Live-lock smell cadence (round 44 auto-loop-46 absorb, landed as `tools/audit/ live-lock-audit.sh` + hygiene-history log)') so future readers don't chase a moving line-number target. Same stable-identifier-vs-line-number-xref pattern flagged on #423's `near line 4167` finding. Documented in `_patterns.md` — line numbers decay on every adjacent edit; stable identifiers decay only on rename. Adopting heading text as the stable cite. The bare `:111`/`:113` thread location format (Otto-250 file:line shape conformance) is the broader Otto-268-wave divergence documented in PR #467 known-divergence section — deferred to maintainer review per that framing.
AceHack
added a commit
that referenced
this pull request
Apr 25, 2026
…ming Copilot P1: drain-log claimed 'full record per Otto-250' but uses the abbreviated Otto-268-wave shape (paraphrased finding, no verbatim original-comment, no verbatim reply, missing per-thread Thread-ID/file:line fields). Either add the missing fields (option a) or adjust wording (option b). Apply option (b): reword to 'abbreviated Otto-268-wave record' + explicit pointer to docs/pr-preservation/_patterns.md shape- divergence section + named contrast against canonical-shape examples (#108, #395). The shape-conformance gap itself is now documented honestly via _patterns.md (PR #467) as a known divergence pending maintainer decision rather than a defect to bulk-rewrite.
Four Copilot catches converging on the same root cause: the shape-divergence section was citing drain-log PR-numbers (#437-#465) when readers will look for #437-drain-log.md etc. and not find them — drain-log FILE numbers reference the PRESERVED PR (e.g., #421/#422/#423), not the drain-log PR itself. The current file corpus ends at #434. Fixes: - :374 + :394 — drop the misleading "#437-#465" PR-range citation; cite the actual in-repo abbreviated-shape examples (#421/#422/#423) by file path; drop the unsupported "22+" numeric estimate in favour of "the 2026-04-25 backfill wave". - :380 — abbreviated template snippet now matches what the in-repo abbreviated logs actually use: `Finding:` bullet included, `Thread ID:` and `:LINE` placeholders dropped (those are canonical-shape fields, not abbreviated-shape). Reader can now copy/paste the template accurately. - :388 — soften the "Substance is preserved" overstatement to the objective claim: key metadata (reviewer/severity/outcome/ commit) is preserved; verbatim original-comment + verbatim reply text are NOT preserved; multi-section structure + file:line locator + Thread ID are also typically omitted. The fixes are themselves Class A (count-vs-list cardinality on "#437-#465" range) + truth-drift on a freshly-landed doc — appropriate self-application of the discipline this section documents.
AceHack
added a commit
that referenced
this pull request
Apr 25, 2026
…indent) (#456) * hygiene(#268+): pr-preservation drain-log for #425 (CommonMark fence indent) Otto-268 follow-on: drain-log for the post-merge cascade PR #425 following parent #357 (fence-detection logic). Captures one substantive parser-correctness fix per CommonMark §4.5. Per Otto-250 training-signal discipline. Pattern observations: 1. CommonMark spec compliance is its own findings class. Custom markdown parsers easily diverge from §4.5 (fences), §6.1 (code spans), §3.1 (thematic break indent limit), etc. Codex catches this class reliably. 2. `lstrip()` vs `lstrip(' ')` is a subtle but load-bearing distinction in markdown parsing — Python's no-arg `.lstrip()` strips tabs; `' '` arg strips only spaces. CommonMark consistently distinguishes; many indent-related primitives need to be space-aware not whitespace-aware. Pre-commit-lint candidate. 3. Quiet-failure modes in markdown parsers are the most-dangerous bug class — tab-indented fence-shaped lines were silently misclassified with no exception / warning / test failure. Pattern generalizes: any parser that silently misclassifies-vs-rejects on edge cases needs explicit reject-paths for known-tricky inputs. * hygiene(#456): drop 'full record' claim — adopt abbreviated-shape framing Copilot P1: drain-log claimed 'full record per Otto-250' but uses the abbreviated Otto-268-wave shape (paraphrased finding, no verbatim original-comment, no verbatim reply, missing per-thread Thread-ID/file:line fields). Either add the missing fields (option a) or adjust wording (option b). Apply option (b): reword to 'abbreviated Otto-268-wave record' + explicit pointer to docs/pr-preservation/_patterns.md shape- divergence section + named contrast against canonical-shape examples (#108, #395). The shape-conformance gap itself is now documented honestly via _patterns.md (PR #467) as a known divergence pending maintainer decision rather than a defect to bulk-rewrite.
AceHack
added a commit
that referenced
this pull request
Apr 25, 2026
…reword) (#447) * hygiene(#268): pr-preservation drain-log for #435 (live-lock cadence reword) Otto-268 backfill: drain-log for PR #435 (drain follow-up to #148: why-the-factory-is-different live-lock cadence claim + grammar), covering 3 threads across 2 waves with a clean self-induced-cascade pattern. Per Otto-250 training-signal discipline. Pattern observations capture four load-bearing patterns: 1. Cross-reviewer convergence on Wave 1 (Codex P2 + Copilot P1 flagging the same missing-FACTORY-HYGIENE-row) raised quality signal — same shape as #432's `warn` unbound finding. 2. Self-induced cascade: my Wave-1 fix introduced the Wave-2 finding (claim "separate BACKLOG items" implied plural; actual BACKLOG state is one row with multiple sub-items). Pattern: when fixing a claim, verify the new claim is also accurate against current-state. 3. Reword-option-(a)-vs-(b) decision template generalizes: when doc asserts X but X doesn't exist, prefer reword-to-current-truth over add-the-thing-asserted (unless thing is small + isolated). 4. PR-mechanics: 4 of 7 cascade-PRs in this session (#135, #231, #432, #435) went through wave-1 + wave-2 cascade pattern; the reviewer-cascade is a consistent property of the merge-trigger surface, not a per-PR oddity. Closes the session-drain-log backfill (Otto-268) for the major PRs drained in this session: #135 / #235 / #432 / #434 / #195 / #219 / #206 / #377 / #231 / #85 / #435 (11 PRs total covered across drain logs #437-#447). * drain(#447 follow-up): fix #435 drain-log Reviewer field + stable-identifier xref Codex P2 + Copilot threads on #447 caught: - Thread 1.2 missing the `Reviewer:` field even though the drain-log schema (intro paragraph) declares per-thread reviewer authorship. Added `Reviewer: copilot-pull-request-reviewer`. - Stale `docs/BACKLOG.md lines 1313-1328` citation: those lines now contain the Server Meshing section; the live-lock-smell cadence row drifted to ~L1452 in the P1 tooling section. Replaced with the stable identifier (heading text 'Live-lock smell cadence (round 44 auto-loop-46 absorb, landed as `tools/audit/ live-lock-audit.sh` + hygiene-history log)') so future readers don't chase a moving line-number target. Same stable-identifier-vs-line-number-xref pattern flagged on #423's `near line 4167` finding. Documented in `_patterns.md` — line numbers decay on every adjacent edit; stable identifiers decay only on rename. Adopting heading text as the stable cite. The bare `:111`/`:113` thread location format (Otto-250 file:line shape conformance) is the broader Otto-268-wave divergence documented in PR #467 known-divergence section — deferred to maintainer review per that framing.
3 tasks
AceHack
added a commit
that referenced
this pull request
Apr 25, 2026
Append-only row per Otto-229 discipline: drained 17 unresolved threads across 8 of my own drain-log PRs (initial 13 + 4 cascade findings on this drain wave's fixes). Documents the 'drain-log self-correction at scale' pattern — Codex/Copilot reviews caught Class A/B pattern instances inside the same doc-lint BACKLOG row that promotes them to lint candidates (appropriate self-application). PRs drained: #449 / #442 / #441 / #464 / #456 / #465 / #467 / #444. Auto-merge SQUASH armed across the queue. Cron f38fa487 minutely fire verified live throughout the tick.
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Multiple post-merge reviewer threads on Otto-268-wave drain-logs (#437-#465) correctly flag that the abbreviated inline shape diverges from the canonical Otto-250 multi-section format used in older drain-logs (
108-drain-log.md,247-drain-log.md, etc.). Documenting both shapes in_patterns.mdas a known divergence + three maintainer-decision options.Coverage
Added a new "Known divergence: drain-log shape" section to
docs/pr-preservation/_patterns.mdwith:Why this is the right place
_patterns.mdis the synthesis-index over the history-class corpus (per the synthesis-over-history surface class introduced in PR #466). Documenting known divergences here keeps the corpus state queryable + lets per-log threads reply with a one-line pointer instead of each repeating the maintainer-decision-pending framing.Composes with
The shape-conformance threads currently open on #437 / #441 / #442 / #444 / #445 / #446 / #447 / #449 / #460 / #461 / #464 / #466 — those can resolve with a stamp reply citing this section.
Test plan
🤖 Generated with Claude Code