Skip to content

factorized-β implementation cell (rev-4 prereg AC1–AC10) #74

Description

@usurobor

Sub of: #73 (factorized-β wave).
Mode: design-and-build. cell_kind: implementation.
Dispatch: §5.2 single-session δ-as-γ (γ cap A−). Branch: cycle/{this-issue-number} off origin/main.
Scope-sizing: 10 ACs — at the top of the typical band; kept whole (one cohesive engine change: enumerate → adjudicate → aggregate → gate). Split only if β/γ enumerators diverge mid-flight.

Source of truth (frozen — α MUST NOT re-derive)

  • docs/beta/governance/CONSISTENCY-FACTORIZATION-PREREG.md rev 4 — the authority for the seam, enumerators, aggregation, and gate.
  • docs/beta/governance/fixtures/factorized-beta-controls.json — the B3 oracle (frozen; not tunable in this PR except a pre-run syntax fix).
  • Engine anchors already present: engine/ocaml/lib/mechanical_scoring.ml (extract_md_links, link_resolves, doc_slug_map, authority_alignment, target_file_fit), witness_numeric.ml, response_schema.ml, witness_medoid.ml, consistency.ml.

Implementation contract (pinned by δ; α implements to these, does not improvise)

  1. Allowed β locus kinds — exactly three, each mapped to its real mechanical anchor:
    citation_bears_claim (cross_reference/source_of_truth link+anchor), authority_claim (self-claim phrase with an inline link), target_file_fit (H1 words vs filename stem; parent dir for readme/skill). No repeated_fact, no γ/version kind, no undocumented kind.
  2. Deterministic pre-witness inventory. Enumerate loci per the prereg §"β locus enumerators"; canonical order (bundle file order → source line → kind order); locus_id assigned by that order. mechanical_status ∈ {resolved, unresolved} (two-valued; non-document links are not enumerated).
  3. Aggregation formula — exact: supports→0.0, insufficient→0.5, contradicts→1.0, unresolved→1.0 (no LLM call); kind weights citation_bears_claim=1.0, authority_claim=1.0, target_file_fit=0.5; β_factorized = 1 − Σ(w·d)/Σ(w), clamped [0,1]. N(T)=0 → β=1.0; locus_sparse ⇔ E(T)<5 on LLM-eligible count.
  4. Response validation: exactly one response per resolved locus_id; missing/duplicate → sample refused (counts against A0 yield).
  5. Gate wiring: evaluate A0/A1/A2/A3 + B1/B2/B3 + C exactly as preregistered, including the NO-DECISION rule (>1 held-out target locus_sparse).
  6. The LLM never emits a scalar; the engine computes β.

Acceptance criteria

  • AC1 — exactly the three allowed kinds (contract §1); no others.
  • AC2 — deterministic pre-witness inventory artifact with fields: target, locus_id, kind, source_path, source_span, target_path, target_span, mechanical_status, llm_called; written before any LLM call; uploaded + cited in close-out.
  • AC3 — locus IDs stable: regression test proving same bundle → same inventory + same IDs.
  • AC4 — response refused on any missing/duplicate resolved locus_id.
  • AC5 — unresolved loci scored d=1.0, no LLM call.
  • AC6 — aggregation exactly per contract §3.
  • AC7 — B3 fixture gate passes on the committed fixtures; jq -e . clean; all hard controls pass while n<20.
  • AC8 — A/B/C evaluated exactly as preregistered, incl. NO-DECISION.
  • AC9scripts/cm-admissibility.sh --self-test matrix unchanged.
  • AC10 — close-out records exactly one of PASS | FAIL | NO-DECISION; on FAIL/NO-DECISION no follow-up tweak without a new operator dispatch.

Proof commands

cd engine/ocaml && dune build && dune runtest && cd ../..
jq -e . docs/beta/governance/fixtures/factorized-beta-controls.json
scripts/cm-admissibility.sh --self-test
bash scripts/validate-release-gate.sh --mode pre-merge
bash scripts/verify-skill-bundle.sh

Then the pre-registered k=3 factorized-β run over all five held-out targets (credentialed CI witness), attaching: inventory artifacts, raw witness responses, validation artifacts, factorized-β reports, free-witness baseline, gate summary, and the PASS/FAIL/NO-DECISION close-out.

Out of scope

α/γ factorization; repeated_fact; more filing/checklist/card structure; standing promotion; release/ledger/tag/VERSION; editing the fixture manifest (except a pre-run syntax fix); tuning on real registry targets.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High prioritycddApplied to every issue that runs a CDD cycle

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions