docs(manifest): the active-content fixtures pin a version, and nothing said so
The seed runtime's v1.0.0 freezes its exported Python surface and explicitly not its detection behaviour. The manifest pinned commit and version per measurement block but never recorded that the thing pinned is a version rather than a frozen classification. manifest 0.5.2 -> 0.6.0, one new field next to active_content_provenance. asymmetry, bounded by what the fixtures actually assert: all seven carry pattern_id only, so three of the four calibration dimensions cannot move them. Both pins named, not one. Their statement is attributed, not restated as ours. Also closes the omission 0.7.3 named: the same misquote in docs/secret-egress-divergence.md:75-76. Not the fix the note implied - those lines are one single-backtick span across a line break, so the outer delimiter is promoted to double backticks instead. spec section 7 deliberately untouched and named in CHANGELOG. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016yZobrgUiRtpLSWx8i7u2Z
This commit is contained in:
parent
757570dd49
commit
c23aea9062
3 changed files with 59 additions and 4 deletions
54
CHANGELOG.md
54
CHANGELOG.md
|
|
@ -9,6 +9,60 @@ Versioning note: the repository tag versions **the contract** (file set, key nam
|
|||
case ids, disposition semantics). Each JSON file additionally carries its own
|
||||
`"version"` field, bumped when that file changes.
|
||||
|
||||
## [0.8.0] — 2026-08-13
|
||||
|
||||
**The seven active-content fixtures pin a VERSION of the seed runtime, and nothing said so.**
|
||||
That runtime tagged `v1.0.0` on 2026-08-13 and stated that the freeze covers its exported Python
|
||||
surface only, excluding detection behaviour: severities, thresholds, lexicon entries and
|
||||
dispositions are calibration there and move in minor and patch releases. The manifest already
|
||||
pinned commit and version per measurement block, but nowhere recorded that the thing pinned is a
|
||||
version rather than a frozen classification. No case is minted, no data file is touched, no id is
|
||||
proposed.
|
||||
|
||||
### Added
|
||||
|
||||
- **`conformance/manifest.json` 0.5.2 → 0.6.0 —
|
||||
`active_content_provenance.pins_a_version_not_a_frozen_classification`.** One field, scoping the
|
||||
neighbouring `asymmetry` rather than replacing it, and deliberately narrower than the runtime's
|
||||
own statement. The exposure is bounded by what the fixtures assert, which was read from all seven
|
||||
rather than assumed: every finding carries `pattern_id` and nothing else — no severity, no
|
||||
threshold, no disposition — so three of the four dimensions that runtime names as calibration
|
||||
cannot move one of these cases at all. The fourth can, because which `active:` ids a payload
|
||||
yields *is* the classification. The field names both pins (six at 0.4.0 / `de09711`, the seventh
|
||||
at 0.7.0 / `be9759b`) rather than one, since a single version would flatten two measurements into
|
||||
one header — the defect `superseded_for_one_case` exists to prevent. Their v1.0.0 statement is
|
||||
**attributed** to their coord message of 2026-08-13T20:40:31Z, not restated as a fact measured
|
||||
from this side.
|
||||
|
||||
- The field also names the disposition of a future divergence, so it is not left to be inferred: a
|
||||
later 1.x that classifies one of these payloads differently is not a breach by them and does not
|
||||
make the fixture wrong. The fixture stays ground truth at its pinned version, the divergence is
|
||||
measured and recorded, and re-pinning is a separate decision — the same disposition this corpus
|
||||
already applies to a stale `observed_out_of_scope` entry.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **`docs/secret-egress-divergence.md:75-76` carried the same misquote `conformance/manifest.json`
|
||||
had corrected in 0.7.3**, named there as a deliberate omission and closed here. The field's value
|
||||
ends ``ascending `order` `` — the backticks are the field's own. The fix is *not* the one the
|
||||
omission note implied: those two lines are a single code span delimited by **single** backticks
|
||||
across a line break, so inserting the field's backticks inside it would have terminated the span
|
||||
at the first one and rendered the quote broken. The outer delimiter is promoted to double
|
||||
backticks instead, which is what lets the inner singles survive. The manifest's correction ported
|
||||
as a literal string because JSON has no backtick semantics; markdown does. Verified by extracting
|
||||
the span from the file on disk, unfolding the line break, and comparing to the decoded value in
|
||||
`signatures/secret-egress.json` — equal — and by confirming no backtick run of length ≥ 2 sits
|
||||
inside the span.
|
||||
|
||||
### Not done, and named rather than left silent
|
||||
|
||||
- **`spec/conformance-corpus.md` section 7 is untouched.** It states the disagreement rule without
|
||||
scope: *"The fixture is ground truth. A runtime that disagrees is wrong."* Read against the
|
||||
active-content scope, whose only implementing runtime has now said in writing that its
|
||||
classification may legitimately move, that rule would call a calibration change there a bug. The
|
||||
manifest field records the interaction and explicitly does not amend the spec. Whether the
|
||||
normative rule needs a scope is a decision for its own release.
|
||||
|
||||
## [0.7.3] — 2026-08-13
|
||||
|
||||
**The README still argued the premise 0.7.2 retired, and the two files sat on a public remote
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue