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-slm254-lot3-01-not-authorized-20260725.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"contract_hash": "99053bd6cd87993e05a2d3585b94b382a51e21183a25dad2b31d286da0cbea73",
"contract_id": "causal-latent-use-gate-v1",
"issue": {
"activation_requirement": "SLM-251 provides a qualified faithful latent checkpoint preserving strict outcomes versus the continued explicit control; SLM-252 selects the routing/timing/grounding contract (or explicitly authorizes a bounded causal study); SLM-253 selects the readout contract and target factors; and a gold/oracle trace substitution ceiling is nonzero.",
"alias": "LOT3-01",
"gate_contract_id": "causal-latent-use-gate-v1",
"linear_issue": "SLM-254",
"slug": "lot3-01-causal-latent-use",
"title": "Establish latent-factor availability, necessity, and specificity with causal interventions"
},
"lot1_01_disposition": "not_authorized",
"lot1_02_disposition": "not_authorized",
"schema_version": "lot_downstream_gate/v1",
"verdict": "not_authorized",
"verdict_rationale": "LOT3-01 (SLM-254) activation requires: SLM-251 provides a qualified faithful latent checkpoint preserving strict outcomes versus the continued explicit control; SLM-252 selects the routing/timing/grounding contract (or explicitly authorizes a bounded causal study); SLM-253 selects the readout contract and target factors; and a gold/oracle trace substitution ceiling is nonzero. 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": "f0c05a941e8a5ddf3fa0c2ee8ad68069497d086f",
"code_dirty": true,
"components": {
"harness.experiments": "v113"
},
"stamp_schema": "version_stamp/v1",
"stamped_at": "2026-07-25T16:11:10.889626+00:00"
}
}
15 changes: 15 additions & 0 deletions docs/design/iter-slm254-lot3-01-not-authorized-20260725.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# SLM-254 LOT3-01 — Downstream-gate disposition (causal-latent-use-gate-v1)

Verdict: **not_authorized**

LOT3-01 (SLM-254) activation requires: SLM-251 provides a qualified faithful latent checkpoint preserving strict outcomes versus the continued explicit control; SLM-252 selects the routing/timing/grounding contract (or explicitly authorizes a bounded causal study); SLM-253 selects the readout contract and target factors; and a gold/oracle trace substitution ceiling is nonzero. 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 provides a qualified faithful latent checkpoint preserving strict outcomes versus the continued explicit control; SLM-252 selects the routing/timing/grounding contract (or explicitly authorizes a bounded causal study); SLM-253 selects the readout contract and target factors; and a gold/oracle trace substitution ceiling is nonzero.

## 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.
15 changes: 15 additions & 0 deletions src/slm_training/harnesses/experiments/lot_downstream_gate.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,21 @@ def to_dict(self) -> dict[str, Any]:
"routing."
),
),
"SLM-254": DownstreamIssueSpec(
linear_issue="SLM-254",
alias="LOT3-01",
title="Establish latent-factor availability, necessity, and specificity with causal interventions",
gate_contract_id="causal-latent-use-gate-v1",
slug="lot3-01-causal-latent-use",
activation_requirement=(
"SLM-251 provides a qualified faithful latent checkpoint "
"preserving strict outcomes versus the continued explicit "
"control; SLM-252 selects the routing/timing/grounding contract "
"(or explicitly authorizes a bounded causal study); SLM-253 "
"selects the readout contract and target factors; and a "
"gold/oracle trace substitution ceiling is nonzero."
),
),
}


Expand Down
25 changes: 21 additions & 4 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": "v119",
"version": "v120",
"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": "v120",
"date": "2026-07-25",
"note": "register SLM-254 LOT3-01 in the LOT downstream gate registry; closes not_authorized (causal study not authorized) off the unmet LOT1/LOT2 chain"
},
{
"version": "v119",
"date": "2026-07-25",
Expand Down Expand Up @@ -1986,6 +1991,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": "v113",
"date": "2026-07-25",
"note": "register SLM-254 LOT3-01 in the LOT downstream gate registry; closes not_authorized (causal study not authorized) off the unmet LOT1/LOT2 chain"
},
{
"version": "v112",
"date": "2026-07-25",
Expand Down Expand Up @@ -9806,23 +9816,30 @@
]
},
"harness.experiments.lot_downstream_gate": {
"version": "v2",
"version": "v3",
"kind": "gate",
"paths": [
"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",
"docs/design/iter-slm254-lot3-01-not-authorized-20260725.json",
"docs/design/iter-slm254-lot3-01-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"
],
"history": [
{
"version": "v2",
"version": "v3",
"date": "2026-07-25",
"note": "add SLM-253 LOT2-02 registry entry + not_authorized iter docs (structured-latent-readout-gate-v1)"
"note": "add SLM-254 LOT3-01 registry entry + not_authorized iter docs (causal-latent-use-gate-v1)"
},
{
"version": "v3",
"date": "2026-07-25",
"note": "add SLM-254 LOT3-01 registry entry + not_authorized iter docs (causal-latent-use-gate-v1)"
},
{
"version": "v2",
Expand Down
13 changes: 13 additions & 0 deletions tests/test_harnesses/experiments/test_lot_downstream_gate.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,16 @@ def test_slm253_real_contracts_are_not_authorized() -> None:

assert contract.verdict == NOT_AUTHORIZED
assert contract.contract_id == "structured-latent-readout-gate-v1"


def test_slm254_real_contracts_are_not_authorized() -> None:
"""LOT3-01's own text: if the gates fail, close with
causal_study_not_authorized rather than manufacturing interpretability
evidence. With the LOT1/LOT2 chain unmet there is no faithful latent
checkpoint to intervene on.
"""
fidelity, trace = _real_contracts()
contract = evaluate_downstream_gate(DOWNSTREAM_ISSUES["SLM-254"], fidelity, trace)

assert contract.verdict == NOT_AUTHORIZED
assert contract.contract_id == "causal-latent-use-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 @@ -46,3 +46,12 @@ def test_slm253_run_reports_not_authorized(tmp_path: Path) -> None:
data = json.loads((out / "lot2_02_structured_readout_gate.json").read_text())
assert data["verdict"] == "not_authorized"
assert data["issue"]["alias"] == "LOT2-02"


def test_slm254_run_reports_not_authorized(tmp_path: Path) -> None:
out = tmp_path / "gate254"
rc = evaluate_lot_downstream_gate.main(["--issue", "SLM-254", "--out", str(out)])
assert rc == 0
data = json.loads((out / "lot3_01_causal_latent_use_gate.json").read_text())
assert data["verdict"] == "not_authorized"
assert data["issue"]["alias"] == "LOT3-01"
Loading