Skip to content

hygiene(_patterns.md): document Otto-250-canonical vs Otto-268-abbreviated shape divergence - #467

Merged
AceHack merged 2 commits into
mainfrom
drain/patterns-shape-conformance-gap
Apr 25, 2026
Merged

hygiene(_patterns.md): document Otto-250-canonical vs Otto-268-abbreviated shape divergence#467
AceHack merged 2 commits into
mainfrom
drain/patterns-shape-conformance-gap

Conversation

@AceHack

@AceHack AceHack commented Apr 25, 2026

Copy link
Copy Markdown
Member

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.md as a known divergence + three maintainer-decision options.

Coverage

Added a new "Known divergence: drain-log shape" section to docs/pr-preservation/_patterns.md with:

Why this is the right place

_patterns.md is 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

…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.
Copilot AI review requested due to automatic review settings April 25, 2026 07:40
@AceHack
AceHack enabled auto-merge (squash) April 25, 2026 07:40

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread docs/pr-preservation/_patterns.md Outdated
Comment thread docs/pr-preservation/_patterns.md Outdated
Comment thread docs/pr-preservation/_patterns.md Outdated
Comment thread docs/pr-preservation/_patterns.md Outdated
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.
@AceHack
AceHack merged commit 7ceec40 into main Apr 25, 2026
13 checks passed
@AceHack
AceHack deleted the drain/patterns-shape-conformance-gap branch April 25, 2026 08:13
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants