diff --git a/meta/resources/workflow-canonical.md b/meta/resources/workflow-canonical.md index c0f3693d..159eee91 100644 --- a/meta/resources/workflow-canonical.md +++ b/meta/resources/workflow-canonical.md @@ -52,8 +52,9 @@ Failure handling lives **inline in the protocol step that triggers it**. `## Protocol` is a **single ordered list of steps**. It may be a flat numbered/bulleted list, or `### N. Title` blocks each holding an ordered list. The server treats it as one ordered sequence and assigns step numbers at load time. -**Do not write absolute intra-protocol step-number references** ("go to step 3") — -composition and renumbering shift them; refer to steps descriptively. +A step number is therefore a position the loader assigns, not an address: +**do not write absolute intra-protocol step-number references** ("go to step 3"). +Refer to steps descriptively. ## Base-contract inheritance diff --git a/section-framing-triage.json b/section-framing-triage.json index 685ca13d..f1ce99c5 100644 --- a/section-framing-triage.json +++ b/section-framing-triage.json @@ -45,6 +45,11 @@ "verdict": "harmless", "rationale": "orientation-only" }, + { + "site": "meta/resources/workflow-canonical.md", + "verdict": "harmless", + "rationale": "orientation-only" + }, { "site": "meta/resources/writing-register.md", "verdict": "harmless", diff --git a/workflow-design/resources/anti-patterns.md b/workflow-design/resources/anti-patterns.md index 8e74d78c..1d433686 100644 --- a/workflow-design/resources/anti-patterns.md +++ b/workflow-design/resources/anti-patterns.md @@ -1787,7 +1787,7 @@ Protocol restates a tool parameter's shape, which the tool's own schema already A durable reference identifies a Protocol phase by its position, so it keeps resolving after a renumber and points at work it no longer names. -**Detect:** A rule, I/O description, Capability, resource body, README, or another technique's Protocol cites a phase of some `## Protocol` by ordinal — "step N", "phase N", "the Nth step" — rather than by the technique or op that owns it. An ordinal is not a symbol: it survives insertion, deletion and reordering by silently addressing whichever phase now holds that index, so the claim goes false with nothing failing. Test: insert one phase above the cited one and re-read the citing sentence; if it now names the wrong work, flag it. +**Detect:** A rule, I/O description, Capability, resource body, README, or another technique's Protocol cites a phase of some `## Protocol` by ordinal — "step N", "phase N", "the Nth step" — rather than by the technique or op that owns it. Step numbering belongs to the loader, per [workflow-canonical](../../meta/resources/workflow-canonical.md#protocol), so the citation survives insertion, deletion and reordering by silently addressing whichever phase now holds that index and goes false with nothing failing. Test: insert one phase above the cited one and re-read the citing sentence; if it now names the wrong work, flag it. **Do not flag:** Ordinals inside the same `## Protocol` that owns the numbering, where the phases and the reference move in one edit. A link to the phase's heading anchor, which fails a guard rather than drifting when the heading changes. Rules cited by dotted address — a rule name is not a position (`dotted-rule-address`). An ordinal that is part of a declared id, heading text, or quoted output rather than a citation.