Parent: #77. Filing role: κ. Dispatch: .cdd/DISPATCH §5.2 single-session δ-as-γ — γ-axis grade capped at A− per release/SKILL.md §3.8 (state in closeout).
Mode: design-and-build. Depends on: nothing. Parallel with: Sub-1.
Problem
What exists: preregs live as prose (e.g. docs/beta/governance/CONSISTENCY-FACTORIZATION-PREREG.md, rev-4). There is no schema that makes a prereg a checkable object.
What is expected: schemas/prereg.cue typing a prereg as a first-class compile object, plus valid/invalid fixtures, so a compiler can ask "does this prereg actually fit the CM's declared axes, evidence, factorization, gates, and report?"
Where they diverge: nothing today typechecks a prereg. A CM can assert a prereg exists; TSC cannot mechanically check that its gate tests the axis it claims or that its success condition can't be gamed.
Impact
Second foundation unit (parallel with Sub-1). Preregs are, per #77, one of the main relation objects β measures — "for this axis, using this evidence and this factorization, this experiment counts as success/failure." Without a typed prereg, Sub-3's β-Fit stage (Prereg↔Axis, Prereg↔Success-Gate) has nothing to operate on.
PINNED CONSTRAINT — preregs are typed β objects, not experiment notes
A prereg is a β contract. prereg.cue must type: id, title, axis, status (proposed|approved|executed|failed|passed|no_decision), human_intent (claim, why_it_matters), hypothesis (variance_source, intervention), factorization (inventory_owner / judgment_owner / aggregation_owner + loci with kind/enumerator/spans), judgment_contract (allowed_labels, evidence_required, refusal), aggregation (formula, label_weights, kind_weights), consistency_gate (samples, agreement_floor, standing_effect), discrimination_gate (controls), no_decision, success (all-of), failure (any-of), post_result_rule (on_failure/on_success/forbidden). If a prereg can't be expressed like this, it is not yet executable.
Source of truth
| Claim / surface |
Canonical source |
Status |
| Prereg to type as a conformance fixture |
docs/beta/governance/CONSISTENCY-FACTORIZATION-PREREG.md |
Shipped (terminal FAIL) |
| Bounded-adjudication precedent |
engine/ocaml/lib/factorized_beta.{ml,mli} |
Shipped (0.12.0) |
| Master design intent |
#77 |
Source |
Acceptance criteria
AC1: schemas/prereg.cue
Types the full prereg object above.
- Oracle:
cue vet a valid prereg passes; a prereg missing factorization.*_owner, or with judgment_contract.allowed_labels that don't match aggregation.label_weights, fails.
- Positive: a well-formed prereg vets clean. Negative: label/weight mismatch fails vet.
AC2: valid + invalid fixtures
fixtures/preregs/valid/*.yaml and .../invalid/*.yaml covering: axis-not-declared, evidence-absent, factorization owners undeclared, judgment labels ≠ aggregation weights, gate not executable, failure/no-decision consequence missing, standing_effect absent.
- Oracle: every valid fixture vets clean; every invalid fixture fails with the expected reason.
AC3: the factorized-β prereg types as a conformance fixture
Express CONSISTENCY-FACTORIZATION-PREREG.md (rev-4) as a prereg.cue-conforming object (a valid fixture), demonstrating the schema captures a real, executed prereg — including its recorded terminal FAIL status.
- Oracle: the factorized-β prereg fixture vets clean; its
status: failed and post_result_rule.on_failure: record_failed_experiment round-trip.
Proof plan
- Invariant: a prereg is executable iff it types against
prereg.cue with owners declared, labels matching weights, and success/failure/no-decision consequences defined.
- Oracle:
cue vet over the fixture set.
- Positive: valid fixtures + the factorized-β prereg vet clean.
- Negative: each invalid fixture fails with its named reason.
- Known gap: typing a prereg proves it is well-formed, not that its gate is un-gameable — the semantic Prereg↔Success-Gate check is Sub-3's β-Fit stage.
Non-goals
No compiler (Sub-3). No re-run of the factorized-β experiment — it is typed here only as a fixture, its FAIL unchanged. No meter-consistency reopen; no v3.2.5.
Closure
Closeable when AC1–AC3 met, all fixtures vet as expected, the factorized-β prereg round-trips as a valid failed-status fixture, non-goals unviolated, γ cap A− stated in closeout.
Parent: #77. Filing role: κ. Dispatch:
.cdd/DISPATCH§5.2 single-session δ-as-γ — γ-axis grade capped at A− perrelease/SKILL.md§3.8 (state in closeout).Mode: design-and-build. Depends on: nothing. Parallel with: Sub-1.
Problem
What exists: preregs live as prose (e.g.
docs/beta/governance/CONSISTENCY-FACTORIZATION-PREREG.md, rev-4). There is no schema that makes a prereg a checkable object.What is expected:
schemas/prereg.cuetyping a prereg as a first-class compile object, plus valid/invalid fixtures, so a compiler can ask "does this prereg actually fit the CM's declared axes, evidence, factorization, gates, and report?"Where they diverge: nothing today typechecks a prereg. A CM can assert a prereg exists; TSC cannot mechanically check that its gate tests the axis it claims or that its success condition can't be gamed.
Impact
Second foundation unit (parallel with Sub-1). Preregs are, per #77, one of the main relation objects β measures — "for this axis, using this evidence and this factorization, this experiment counts as success/failure." Without a typed prereg, Sub-3's β-Fit stage (Prereg↔Axis, Prereg↔Success-Gate) has nothing to operate on.
PINNED CONSTRAINT — preregs are typed β objects, not experiment notes
A prereg is a β contract.
prereg.cuemust type:id,title,axis,status(proposed|approved|executed|failed|passed|no_decision),human_intent(claim, why_it_matters),hypothesis(variance_source, intervention),factorization(inventory_owner / judgment_owner / aggregation_owner +lociwith kind/enumerator/spans),judgment_contract(allowed_labels, evidence_required, refusal),aggregation(formula, label_weights, kind_weights),consistency_gate(samples, agreement_floor, standing_effect),discrimination_gate(controls),no_decision,success(all-of),failure(any-of),post_result_rule(on_failure/on_success/forbidden). If a prereg can't be expressed like this, it is not yet executable.Source of truth
docs/beta/governance/CONSISTENCY-FACTORIZATION-PREREG.mdengine/ocaml/lib/factorized_beta.{ml,mli}Acceptance criteria
AC1: schemas/prereg.cue
Types the full prereg object above.
cue veta valid prereg passes; a prereg missingfactorization.*_owner, or withjudgment_contract.allowed_labelsthat don't matchaggregation.label_weights, fails.AC2: valid + invalid fixtures
fixtures/preregs/valid/*.yamland.../invalid/*.yamlcovering: axis-not-declared, evidence-absent, factorization owners undeclared, judgment labels ≠ aggregation weights, gate not executable, failure/no-decision consequence missing, standing_effect absent.AC3: the factorized-β prereg types as a conformance fixture
Express
CONSISTENCY-FACTORIZATION-PREREG.md(rev-4) as aprereg.cue-conforming object (a valid fixture), demonstrating the schema captures a real, executed prereg — including its recorded terminal FAIL status.status: failedandpost_result_rule.on_failure: record_failed_experimentround-trip.Proof plan
prereg.cuewith owners declared, labels matching weights, and success/failure/no-decision consequences defined.cue vetover the fixture set.Non-goals
No compiler (Sub-3). No re-run of the factorized-β experiment — it is typed here only as a fixture, its FAIL unchanged. No meter-consistency reopen; no v3.2.5.
Closure
Closeable when AC1–AC3 met, all fixtures vet as expected, the factorized-β prereg round-trips as a valid failed-status fixture, non-goals unviolated, γ cap A− stated in closeout.