Skip to content

drain(#448 follow-up): resolve _patterns.md surface-class contradiction#466

Merged
AceHack merged 2 commits intomainfrom
drain/448-followup-surface-class-clarification
Apr 25, 2026
Merged

drain(#448 follow-up): resolve _patterns.md surface-class contradiction#466
AceHack merged 2 commits intomainfrom
drain/448-followup-surface-class-clarification

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented Apr 25, 2026

Summary

Codex P2 + Copilot P1 both flagged a real internal contradiction on #448's _patterns.md: the file declared docs/pr-preservation/** as history-class (per the surface-class taxonomy section), then later claimed _patterns.md itself is "current-state operational substrate" (in the "How to update this file" section). Both can't be true — directory-level surface-class declaration conflicts with file-level reclassification.

Resolved by introducing a third named surface class: synthesis-over-history — current-state-tracking abstractions over history-class corpora.

Coverage

  • docs/pr-preservation/*-drain-log.md stays history-class (per-log records preserve provenance, Otto-279 carve-out applies).
  • docs/pr-preservation/_patterns.md (this file) is synthesis-over-history — a third surface class distinct from both pure history-class and pure current-state.
  • Co-location rationale: synthesis-indices live alongside the corpus they abstract over (so _patterns.md stays in docs/pr-preservation/); the underscore prefix is named as a candidate convention.

Three sections updated

  1. "Surface-class taxonomy" — added "Synthesis-over-history surfaces" section with _patterns.md as the canonical example.
  2. "How to update this file" — replaced "current-state operational substrate" with the synthesis-over-history distinction + co-location rationale.
  3. Closing taxonomy — Otto-279 carve-out applies to per-log records; synthesis-over-history is the third class.

Stale-resolved-by-reality (other #448 reviewer findings)

The remaining #448 reviewer findings cite drain-log PRs that don't yet have logs in current main (#191, #219, #231, #377, #135, #85, #195, #206, #427, #428, #430, #425, #426, #432, #435). Those drain-logs are landing across PRs #437-#465 (Otto-268 backfill is the in-flight wave). The corpus is converging — those findings will be stale-resolved-by-reality as the cited PRs land in main.

Test plan

  • Surface-class contradiction resolved by named third class.
  • Co-location rationale documented.
  • Otto-279 carve-out application clarified per surface class.
  • Future BP-NN promotion path noted (four-class outcome + three-class surface together).

🤖 Generated with Claude Code

Codex P2 + Copilot P1 both flagged that `_patterns.md` was classified
as "current-state operational substrate" while sitting in
`docs/pr-preservation/**` (which the file itself classifies as
history-class). Internal contradiction.

Resolved by introducing a third named surface class:
**synthesis-over-history** — current-state-tracking abstractions
over history-class corpora. Co-located with the corpus they
abstract over (so `_patterns.md` stays in `docs/pr-preservation/`
alongside the per-log records). The underscore prefix is named as
a candidate convention for "synthesis-indices over history-class
corpora."

Updated three sections:

1. "Surface-class taxonomy" — added "Synthesis-over-history
   surfaces" section with `_patterns.md` as the canonical example.
2. "How to update this file" — replaced the "current-state
   operational substrate" claim with the synthesis-over-history
   distinction + co-location rationale.
3. Closing line — clarified Otto-279 carve-out applies to the
   per-log records (history-class); synthesis-over-history is
   the third class distinct from both pure history-class and
   pure current-state.

Composes with the future BP-NN promotion path: the four-stable-
outcome-classes + history-class surfaces + synthesis-over-history
third class are mature enough to codify together in
`docs/AGENT-BEST-PRACTICES.md` as a single stable rule.

Other #448 reviewer findings (cited drain-logs not in current
corpus) are stale-resolved-by-reality — drain-logs are landing
across PRs #437-#465; the corpus is converging.
@AceHack AceHack enabled auto-merge (squash) April 25, 2026 07:34
Copilot AI review requested due to automatic review settings April 25, 2026 07:34
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Resolves an internal surface-class taxonomy contradiction in docs/pr-preservation/_patterns.md by introducing a third surface class (“synthesis-over-history”) to distinguish synthesis indices from the underlying history-class drain-log corpus.

Changes:

  • Adds “synthesis-over-history surfaces” as an explicit third surface class in the taxonomy.
  • Updates the “How to update this file” guidance to clarify co-location and the per-file carve-out.

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
Codex/Copilot caught 4 findings on PR #466's surface-class
clarification:

- Three hyphen-line-wrap renderings (`synthesis-` / `synthesis-over-`
  / `synthesis-` at end-of-line render with extra space when Markdown
  treats newline as whitespace). Reflowed all three to keep the term
  contiguous on one line.
- Surface-class taxonomy still listed `docs/pr-preservation/**` as
  history-class which would include `_patterns.md`. Tightened to the
  per-log glob `docs/pr-preservation/*-drain-log.md` with explicit
  pointer to the synthesis-over-history exception below.

Same shape as the inline-code-span line-wrap class documented in
`_patterns.md` (Class A in PR #465 BACKLOG row) but for prose-line
hyphenation rather than code-span line-wrap. Worth noting in a
future expansion of the doc-lint suite — extend the regex to
catch `\w-$` end-of-line patterns.
@AceHack AceHack merged commit 87fcd86 into main Apr 25, 2026
13 checks passed
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cb62527eb2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- `docs/ROUND-HISTORY.md`
- `docs/aurora/**`
- `docs/pr-preservation/**`
- `docs/pr-preservation/*-drain-log.md` (per-log records;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep CI-fix logs in the history-class surface

Narrowing docs/pr-preservation/** to docs/pr-preservation/*-drain-log.md drops existing provenance docs like docs/pr-preservation/141-ci-fix-log.md out of history-class, so that file now implicitly falls under current-state rules even though it is the same point-in-time record type (names, checks, and audit trail). This reintroduces taxonomy drift for review tooling and attribution guidance; the history-class selector should include all preservation logs in this directory (or explicitly include the CI-fix log shape).

Useful? React with 👍 / 👎.

@AceHack AceHack deleted the drain/448-followup-surface-class-clarification branch April 25, 2026 07:46
AceHack added a commit that referenced this pull request Apr 25, 2026
…iated shape divergence (#467)

* hygiene(_patterns.md): document Otto-250-canonical vs Otto-268-abbreviated 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.

* hygiene(#467): fix 4 Copilot findings on shape-divergence section

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.
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