Skip to content
Merged
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
27 changes: 21 additions & 6 deletions docs/modeling-discipline.md
Original file line number Diff line number Diff line change
Expand Up @@ -250,12 +250,21 @@ machine-checked meta-lens detects fired triggers, this review smell *is*
the enforcement.

**Scaffold exception:** early-milestone code (marked `// scaffold:
<sunset-milestone>`) can defer its `DECISIONS.md` classification *ledger*
until the sunset milestone. The exception covers the ledger only β€” the
required one-line 🟒/🟑/πŸ”΄ tag on the coproduct itself is **not**
waived (a scaffold coproduct still carries it, typically
`// 🟑 feature:<sunset-milestone> β€” DECISIONS.md …`, the milestone being
the gate). Scaffolds must be revisited before sunset.
<sunset-milestone>`) can defer only the *verbose* part of its
`DECISIONS.md` classification ledger β€” the dissolution-patterns-tried
analysis β€” until the sunset milestone. The exception covers that
analysis **only**. It does **not** waive: (a) the required one-line
🟒/🟑/πŸ”΄ tag on the coproduct; nor (b) β€” for a 🟑 β€” the **bound
dissolution plan** (the named missing primitive/consumer, its owning
substrate PR or task, and the dissolve-on-arrival follow-up). A 🟑's
plan-binding is the minimum that makes it a *valid* 🟑 (see the 🟑
disposition above) β€” it is recorded in `DECISIONS.md` even when the
fuller patterns-tried analysis defers. The gate names the **concrete
missing primitive**, e.g. `// 🟑 feature:<missing-primitive> β€”
DECISIONS.md <entry>` β€” a bare `<sunset-milestone>` is **not** a valid
gate (a milestone-only gate leaves the dissolution path non-checkable);
the sunset milestone records *when* the scaffold is revisited, not
*what* it waits on. Scaffolds must be revisited before sunset.

**Worked example (v2 retrospective):** `v2::ExprData` had 22 variants.
Failed pattern 1 (every consumer dispatches on all 22), pattern 2
Expand Down Expand Up @@ -742,6 +751,12 @@ gap in a low-risk area β†’ NON-BLOCKING.
rework now than to accept a substrate bug that propagates through three
milestones before anyone notices.

**Dissolution findings (Practice 10) are an always-BLOCKING class.** The
NON-BLOCKING tier above does not apply to them: a dissolution finding β€”
walker / traverse / predicate / carrier / emit-template β€” is resolved
only by a πŸ”΄ / tracked-🟑 / substantiated-🟒 disposition (Practice 10),
never graded NON-BLOCKING and never waved off as a cleanup.

## For Reviewers

A review applies the **five invariant principles from
Expand Down
Loading