Machine-verifiable freeze registrations + adapter attribution declarations + site build provenance
Context
The owner’s completion directive (2026-07-22) named a real weakness the
foundation carried: confirmatory benchmark mode was gated on the mere
EXISTENCE of docs/registrations/stage-b-v1/ — “a directory’s mere existence
cannot enable confirmatory execution.” It further required that real
adapters declare their attribution semantics explicitly (never guessed) and
that the deployed site disclose build provenance.
Decision
- Freeze registrations become verifiable documents
(
irrevonbench/freeze-registration/v1,src/irrevon/bench/freeze.py). A registration binds, by SHA-256: the exact preregistration bytes, each analysis-implementation source file (REQUIRED_ANALYSIS_PATHS), the §0.1 parameters as required numbers, and — Stage B — the fixture manifest root hash, the dev master seed, and the §7 holdout commitment pair. It must carry a non-sentinelregistered_by, anowner_attestation, and anexternal_stampreference (signed tag / OpenTimestamps / OSF).refuse_unless_confirmatory_allowednow verifies BOTH stages structurally and against the current tree; post-freeze edits to the preregistration or analysis code break verification until a recorded amendment (amendments[], append-only, records what had been observed).irrevon bench freeze --stage A|B --draft-out|--verifyprovides the tooling; drafts carryREQUIRED-HUMANsentinels and can never verify. Honest boundary: hash binding + structural attestation is the offline mechanical maximum — it proves consistency and completeness, not authorship; authorship stays governed by the human-only policy ondocs/registrations/and by the out-of-band stamp reviewers check. - Attribution declarations (additive
attributionblock on the capability-declaration schema): every destination declares its oracle attribution modes, strongest first, from {exact, stable-id-projection, metadata, temporal-window, ambiguous, impossible} plus the fields read. Optional today for backward compatibility; REQUIRED for benchmark use at Stage-B (the registration binds declarations via digests on run manifests). Refdest declarations updated (C1/C2: exact + stable-id-projection; C3: impossible — fixture-truth-only per §2.1 L1). The oracle’s never-guess discipline (ADR-0032) is thereby a declared, per-destination contract rather than a refdest-specific behavior. - Site build provenance: every page’s footer discloses the build
commit (Vercel
VERCEL_GIT_COMMIT_SHAat deploy, local git otherwise, “unknown” honestly), the build timestamp, and the explicit caveat that a static build cannot know whether it still matches the default branch. The two newest public-relevant research documents (the benchmark guide and the effect-semantics mappings) are rendered on the site through the existing drift-gated mirror pipeline.
Alternatives
- Cryptographic signature verification of registrations — rejected for
now: no key infrastructure exists to verify against offline; a
signed-git-tag reference in
external_stampgives reviewers the same assurance out-of-band without inventing key management. - Trusting the freeze directory with tightened policy only — rejected: policy without mechanism was exactly the audited weakness.
- A separate attribution schema — rejected: attribution is a property of the destination contract; it belongs on the capability declaration.
Consequences
Confirmatory mode is now impossible to enable accidentally or by structural
mimicry without also matching the tree’s exact hashes and passing sentinel
checks; analysis-code changes after freeze become mechanically visible; the
check-bench-integrity gate’s freeze-honesty check upgraded to structural
verification. Conformance tests: tests/bench/test_freeze.py (11 tests,
incl. the bare-directory regression pin and the amendment path),
schema example suites, CLI pins.
Risks
An amendment mechanism is only as honest as its use — amendments record what was observed, but nothing can force that record to be truthful; that remains a governance property. The provenance footer’s local-git fallback reports the build checkout’s commit, which for a dirty tree is approximate (the caveat text covers it).
Reopen trigger
The actual Stage-A freeze act (first real registration exercises the verifier end-to-end); any decision to add signing-key infrastructure; MCP SEP adoption of effect-semantics fields (would extend the attribution block’s mapping story).