fix(spec): section 7 stated its own premise and then applied itself beyond it
Section 7 justified the fixture-is-ground-truth ordering with "Two implementations that return different verdicts" and then stated the rule with no scope. For signatures/active-content.json there is no second implementation, and the seed runtime has stated the classification behind it is calibration it does not freeze. As written, section 7 turned a change they reserved into a bug on their side. New section 7.1 keys the scope on a structural property, never on a table name: a scope only one runtime implements, whose payload that runtime authored. It creates no fourth verdict - the declaration schema closes result with additionalProperties:false over four counts, so a fifth would break every consumer's parser. The case still fails and is still named in failed_cases; what changes is what the failure licenses concluding. Two limits are stated rather than left to inference: it does not reach a third-party implementer of the same table, and it is not a licence for a runtime to self-declare its own divergence as calibration. manifest.json 0.6.1 -> 0.6.2 retires the open-question sentence, quoted rather than dropped. The retirement is partial: "section 7 is NOT amended by this block" stays true, because the spec was amended by its own release. Neighbours measured over the whole repository, widened past "ground truth" to the second paragraph's own wording. CONVENTIONS.md and CLAUDE.md carried the premise and are changed; SECURITY.md gets a cross-reference only, since its claim is about a fixture expecting too little and 7.1 does not narrow that direction; README.md and docs/extraction-plan.md are named as deliberately untouched. Breaking in category, minor in number - 0.x, per the reading [0.3.0] recorded. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012pZ2FLQ6xkWvj2VcwgwnQv
This commit is contained in:
parent
c75c546614
commit
f0a511369d
6 changed files with 157 additions and 5 deletions
|
|
@ -284,6 +284,47 @@ This ordering is the whole point of the repository. Two implementations that ret
|
|||
different verdicts on the same input are not holding different opinions; one of them has a
|
||||
bug.
|
||||
|
||||
### 7.1 Where the second paragraph does not hold
|
||||
|
||||
**Through corpus version 0.8.1 this section stated the rule above with no scope at all**, and
|
||||
the scope was load-bearing: the justification names *two* implementations. Where a case's
|
||||
scope is a table only one runtime implements, and that runtime authored the payload the case
|
||||
was extracted from, there is no second implementation whose disagreement the paragraph could
|
||||
adjudicate. Which cases those are is recorded in the corpus, not asserted per run — see
|
||||
`active_content_provenance.asymmetry` in
|
||||
[`conformance/manifest.json`](../conformance/manifest.json).
|
||||
|
||||
For such a case, a disagreement by the **seed runtime itself** is a third thing, and it is
|
||||
neither of the two the paragraph offers:
|
||||
|
||||
- The fixture is not proven wrong. It recorded that runtime's behaviour correctly at the
|
||||
commit and version its own measurement block pins, and a later classification does not
|
||||
reach back and falsify an earlier measurement.
|
||||
- The runtime does not necessarily have a bug. Where the seed runtime has stated that the
|
||||
classification behind such a table is calibration it does not freeze, a release that
|
||||
classifies the payload differently is a change it reserved, not a defect.
|
||||
|
||||
So: the fixture MUST NOT be rewritten on the strength of the divergence alone; the divergence
|
||||
SHOULD be recorded against the version pinned; and re-pinning the case to a later version of
|
||||
the seed runtime is a separate decision, taken deliberately and released on its own. This is
|
||||
the disposition §5 already applies to a stale `observed_out_of_scope` entry, extended to the
|
||||
one place where it can reach a verdict — and a divergence recorded here is the signal that
|
||||
the re-pinning decision is due, not a reason to leave it open.
|
||||
|
||||
Three things this does **not** do.
|
||||
|
||||
- **It creates no fourth verdict.** The counts of §1.1 and
|
||||
[`schema/conformance-declaration.schema.json`](../schema/conformance-declaration.schema.json)
|
||||
are unchanged: a case whose expected findings are not produced still **fails**, and is still
|
||||
named in `failed_cases`. What changes is what the failure licenses concluding, not what is
|
||||
reported.
|
||||
- **It does not reach a third-party implementer** of the same table. Against them the fixture
|
||||
is the contract, exactly as §7 states — which is what these cases were minted to provide,
|
||||
and the only thing they can prove while one runtime is all there is.
|
||||
- **It is not a licence to self-declare.** The exemption is carried by the corpus's own
|
||||
provenance record for the scope. A runtime MUST NOT claim it for a case by asserting that
|
||||
its own divergence is calibration.
|
||||
|
||||
## 8. What conformance does and does not prove
|
||||
|
||||
Passing this corpus proves that a runtime agrees with the other runtimes that pass it, on
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue