Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions docs/design/iter-slm253-lot2-02-not-authorized-20260725.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"contract_hash": "d312bc70e05cbff00233edb79e34408bb4a9e7e7c09dffd14c64497e73f61eaa",
"contract_id": "structured-latent-readout-gate-v1",
"issue": {
"activation_requirement": "SLM-251 (LOT1-02) provides a qualified faithful causal checkpoint/recipe and continued explicit control, and SLM-252 (LOT2-01) selects or bounds the supervision timing/readout routing.",
"alias": "LOT2-02",
"gate_contract_id": "structured-latent-readout-gate-v1",
"linear_issue": "SLM-253",
"slug": "lot2-02-structured-readout",
"title": "Compare independent-token PCL with structured, set-valued, and block-autoregressive semantic readouts"
},
"lot1_01_disposition": "not_authorized",
"lot1_02_disposition": "not_authorized",
"schema_version": "lot_downstream_gate/v1",
"verdict": "not_authorized",
"verdict_rationale": "LOT2-02 (SLM-253) activation requires: SLM-251 (LOT1-02) provides a qualified faithful causal checkpoint/recipe and continued explicit control, and SLM-252 (LOT2-01) selects or bounds the supervision timing/readout routing. The LOT1-02 launch gate reports 'not_authorized' (LOT1-01 disposition 'not_authorized'): no faithful K x c model path, curriculum, Stage 0 parent, or continued-explicit control exists, and SLM-249's oracle ceiling is not positive. Closing not_authorized in plan-only/bounded-diagnostic mode; no training, factorial, intervention, or systems code is added by this disposition.",
"version_stamp": {
"code_commit": "e77a0efc18618a854e95938357b97d09b62f9a38",
"code_dirty": true,
"components": {
"harness.experiments": "v112"
},
"stamp_schema": "version_stamp/v1",
"stamped_at": "2026-07-25T16:08:42.975048+00:00"
}
}
15 changes: 15 additions & 0 deletions docs/design/iter-slm253-lot2-02-not-authorized-20260725.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# SLM-253 LOT2-02 — Downstream-gate disposition (structured-latent-readout-gate-v1)

Verdict: **not_authorized**

LOT2-02 (SLM-253) activation requires: SLM-251 (LOT1-02) provides a qualified faithful causal checkpoint/recipe and continued explicit control, and SLM-252 (LOT2-01) selects or bounds the supervision timing/readout routing. The LOT1-02 launch gate reports 'not_authorized' (LOT1-01 disposition 'not_authorized'): no faithful K x c model path, curriculum, Stage 0 parent, or continued-explicit control exists, and SLM-249's oracle ceiling is not positive. Closing not_authorized in plan-only/bounded-diagnostic mode; no training, factorial, intervention, or systems code is added by this disposition.

## Upstream chain

- LOT1-02 launch gate (SLM-251): `not_authorized`
- LOT1-01 activation gate (SLM-250): `not_authorized`
- Activation requirement: SLM-251 (LOT1-02) provides a qualified faithful causal checkpoint/recipe and continued explicit control, and SLM-252 (LOT2-01) selects or bounds the supervision timing/readout routing.

## Non-goals honored

No training campaign, factorial, readout/decoder, intervention, systems measurement, or production default change. This disposition is itself the deliverable while the upstream activation gate is unmet.
13 changes: 13 additions & 0 deletions src/slm_training/harnesses/experiments/lot_downstream_gate.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,19 @@ def to_dict(self) -> dict[str, Any]:
"control, curriculum, and fairness manifests."
),
),
"SLM-253": DownstreamIssueSpec(
linear_issue="SLM-253",
alias="LOT2-02",
title="Compare independent-token PCL with structured, set-valued, and block-autoregressive semantic readouts",
gate_contract_id="structured-latent-readout-gate-v1",
slug="lot2-02-structured-readout",
activation_requirement=(
"SLM-251 (LOT1-02) provides a qualified faithful causal "
"checkpoint/recipe and continued explicit control, and SLM-252 "
"(LOT2-01) selects or bounds the supervision timing/readout "
"routing."
),
),
}


Expand Down
34 changes: 28 additions & 6 deletions src/slm_training/resources/versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -1912,7 +1912,7 @@
]
},
"harness.experiments": {
"version": "v118",
"version": "v119",
"kind": "harness",
"paths": [
"scripts/run_slm298_capacity_context_curriculum.py",
Expand All @@ -1921,6 +1921,11 @@
"tests/test_scripts/test_run_slm298_capacity_context_curriculum.py"
],
"history": [
{
"version": "v119",
"date": "2026-07-25",
"note": "register SLM-253 LOT2-02 in the LOT downstream gate registry; closes not_authorized off the unmet LOT1-02 launch gate"
},
{
"version": "v118",
"date": "2026-07-25",
Expand Down Expand Up @@ -1981,6 +1986,11 @@
"date": "2026-07-25",
"note": "add SLM-300 AP-015 self-context exposure-bias curriculum manifest, policy-origin-mixture wiring/fixture harness, and mixture-zero legacy-equivalence invariant"
},
{
"version": "v112",
"date": "2026-07-25",
"note": "register SLM-253 LOT2-02 in the LOT downstream gate registry; closes not_authorized off the unmet LOT1-02 launch gate"
},
{
"version": "v111",
"date": "2026-07-25",
Expand Down Expand Up @@ -9796,17 +9806,29 @@
]
},
"harness.experiments.lot_downstream_gate": {
"version": "v1",
"version": "v2",
"kind": "gate",
"paths": [
"src/slm_training/harnesses/experiments/lot_downstream_gate.py",
"docs/design/iter-slm252-lot2-01-not-authorized-20260725.json",
"docs/design/iter-slm252-lot2-01-not-authorized-20260725.md",
"docs/design/iter-slm253-lot2-02-not-authorized-20260725.json",
"docs/design/iter-slm253-lot2-02-not-authorized-20260725.md",
"scripts/evaluate_lot_downstream_gate.py",
"src/slm_training/harnesses/experiments/lot_downstream_gate.py",
"tests/test_harnesses/experiments/test_lot_downstream_gate.py",
"tests/test_scripts/test_evaluate_lot_downstream_gate.py",
"docs/design/iter-slm252-lot2-01-not-authorized-20260725.json",
"docs/design/iter-slm252-lot2-01-not-authorized-20260725.md"
"tests/test_scripts/test_evaluate_lot_downstream_gate.py"
],
"history": [
{
"version": "v2",
"date": "2026-07-25",
"note": "add SLM-253 LOT2-02 registry entry + not_authorized iter docs (structured-latent-readout-gate-v1)"
},
{
"version": "v2",
"date": "2026-07-25",
"note": "add SLM-253 LOT2-02 registry entry + not_authorized iter docs (structured-latent-readout-gate-v1)"
},
{
"version": "v1",
"date": "2026-07-25",
Expand Down
11 changes: 11 additions & 0 deletions tests/test_harnesses/experiments/test_lot_downstream_gate.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,3 +97,14 @@ def test_render_markdown_covers_chain() -> None:
assert "SLM-252" in markdown
assert "not_authorized" in markdown
assert "LOT1-02" in markdown


def test_slm253_real_contracts_are_not_authorized() -> None:
"""LOT2-02 additionally requires LOT2-01's selected routing; with the
LOT1 chain unmet there is no faithful checkpoint or routing contract.
"""
fidelity, trace = _real_contracts()
contract = evaluate_downstream_gate(DOWNSTREAM_ISSUES["SLM-253"], fidelity, trace)

assert contract.verdict == NOT_AUTHORIZED
assert contract.contract_id == "structured-latent-readout-gate-v1"
9 changes: 9 additions & 0 deletions tests/test_scripts/test_evaluate_lot_downstream_gate.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,12 @@ def test_run_against_explicit_contract_paths(tmp_path: Path) -> None:
markdown = (out / "lot2_01_supervision_routing_gate.md").read_text()
assert "SLM-252" in markdown
assert "not_authorized" in markdown


def test_slm253_run_reports_not_authorized(tmp_path: Path) -> None:
out = tmp_path / "gate253"
rc = evaluate_lot_downstream_gate.main(["--issue", "SLM-253", "--out", str(out)])
assert rc == 0
data = json.loads((out / "lot2_02_structured_readout_gate.json").read_text())
assert data["verdict"] == "not_authorized"
assert data["issue"]["alias"] == "LOT2-02"
Loading