Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,3 +132,39 @@ them alone proves succession.
commands and their output. Missing evidence is not the same as disproven
succession: if the check is merely inconclusive, say so and ask, rather than
reopening or letting the closure stand unexamined.

## Supersession and constant-change review

- When a large PR is narrowed into successors, verify the **union** of those
successors against the original's full diff — not merely that each successor's
own tests pass. `#1871` was closed in favor of `#1877` plus `#1879`; both
successors were green, but neither carried `#1871`'s coverage/docstring delta,
so the required 100% gate stayed broken on `main` until `#1883` recovered it.
"Each piece works" and "the pieces together still cover the original's scope"
are different questions, and only the second one needs a diff against the
original.
- Use the per-delta commands in "Verifying a 'superseded — closing' claim" above
against **each** successor, then ask the question those commands cannot: does
anything in the original's scope survive in none of them? A split fails
differently from a single bad closure — no individual successor looks wrong.
- A closure or narrowing is not self-verifying, and neither is a note recording
it. Git-level checks show whether the text moved; they do not show whether the
behaviour is restored. Finish by re-running the gate the original PR existed to
fix and confirming it passes on `main` itself from a fresh clone.
- Never endorse a timeout, retry budget, or other numeric constant on a
model-invocation path without first reading
[`docs/product-goal-directive.md`](docs/product-goal-directive.md) section 8,
which states that central OpenCode, Strix, and Noema accept taking more than two
hours per model ("중앙 OpenCode, Strix, Noema는 모델당 두 시간 이상 걸릴 수 있음을
수용한다") and that speed is not a core consideration, accuracy is
("속도는 핵심 고려사항이 아니며 정확성을 우선한다"). `#1889`, `#1890`, and `#1892`
each capped a model step at 900 seconds on real evidence of a multi-hour hang,
and all three were reverted (`#1891`, `#1895`). Compelling hang evidence does not
exempt a change from that contract: runner occupancy is repaired at the
admission/continuation boundary or by an explicit provider terminal signal, never
by converting elapsed inference time into a model-failure verdict.
- Verify a citation before you rely on it, including your own. The first draft of
the bullet above cited a section number that does not exist in that file and
attributed a "timeout defaults to null" sentence to it that appears only in
`#1891`'s PR body — both caught by grepping the file instead of trusting the
summary that introduced them.
12 changes: 12 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,18 @@ repeatable compile command.
required workflow; skip at job level via a `changed-scope` gate job instead, and always keep one
job with no output-dependent `if:` so the run concludes `success` rather than `skipped`. See
`docs/doctoring/required-workflow-path-filter-boundary.md`.
- **Narrowing a PR does not carry its delta automatically.** When a large PR is split into
successors, diff the union of the successors against the original before treating the supersession
as complete — each successor passing its own tests does not prove the union still covers the
original's scope. `#1871` → `#1877` + `#1879` silently dropped the coverage/docstring delta and
left the required gate broken on `main` until `#1883`. See AGENTS.md's "Supersession and
constant-change review".
- **Model-path timeouts are policy-fixed, not an engineering judgment call.** `docs/product-goal-directive.md`
section 8 accepts that central OpenCode/Strix/Noema may take more than two hours per model and states
that speed is not a core consideration. `#1889`/`#1890`/`#1892` each added a 900-second cap on genuine
multi-hour-hang evidence and were all reverted (`#1891`, `#1895`). Fix runner occupancy at the
admission/continuation boundary instead; never convert elapsed inference time into a model-failure
verdict.
- **Org-wide binding conventions** (permissive licenses only — verify SPDX before adding anything;
cross-repo references as `owner/repo#num` or full URLs; durable knowledge in the repo/Project, not
private memory; one roadmap phase at a time) are defined in `docs/CWL-MASTER-CONTEXT.md` §7 and
Expand Down
Loading