Skip to content

SLM-251: close LOT1-02 not_authorized via launch-gate evaluator - #930

Merged
Tyler-R-Kendrick merged 3 commits into
mainfrom
slm-251-lot1-02-not-authorized
Jul 26, 2026
Merged

SLM-251: close LOT1-02 not_authorized via launch-gate evaluator#930
Tyler-R-Kendrick merged 3 commits into
mainfrom
slm-251-lot1-02-not-authorized

Conversation

@Tyler-R-Kendrick

Copy link
Copy Markdown
Owner

Summary

Closes SLM-251 (LOT1-02) not_authorized in plan-only mode. The curriculum campaign cannot launch honestly against the real committed upstream contracts:

  • SLM-248 transfer authorization: needs_target_trace_contract (required authorize_bounded_implementation)
  • SLM-249 trace oracle ceiling: inconclusive (required oracle_ceiling_positive); its own allowed_lot1_implementation authorizes no LOT1 implementation (K/c is a bounded-probe recommendation, not a data-derived budget)
  • SLM-250 (LOT1-01) itself closed not_authorized (PR SLM-250: close LOT1-01 not_authorized via activation-gate evaluator (restored) #927) — no faithful K×c model path, curriculum hooks, or Stage 0 parent checkpoint exists, so there is no treatment arm and no matched continued-explicit control to attribute against

Adds Lot102LaunchGateV1 (src/slm_training/harnesses/experiments/lot1_02_activation_gate.py + CLI scripts/evaluate_lot1_02_activation_gate.py) which reuses the SLM-250 lot1_01_activation_gate module rather than duplicating gate logic, plus the SLM-249 explicit-allowance check. Synthetic positive fixtures prove the evaluator flips to authorized_wiring_only when prerequisites are honestly met — it is not hardcoded to fail.

Stacked on PR #927 (base slm-250-lot1-01-not-authorized) since the evaluator imports the LOT1-01 module.

Verification

  • pytest tests/test_harnesses/experiments/test_lot1_02_activation_gate.py tests/test_scripts/test_evaluate_lot1_02_activation_gate.py — 6 passed (13 incl. LOT1-01 tests)
  • python -m scripts.evaluate_lot1_02_activation_gate — exit 0, all three gates unmet, version-stamped iter docs regenerated post-bump (docs/design/iter-slm251-lot1-02-not-authorized-20260725.{json,md})
  • python -m scripts.verify_version_stamps --check — ok (harness.experiments v110, new harness.experiments.lot1_02_activation_gate v1)
  • python -m scripts.repo_policy — ok; git diff --check — clean

Honest scope

  • Plan-only closeout: no training campaign, no curriculum code, no Stage 0 checkpoint, no GPU dispatch, no semantic-quality claim.
  • Successor trigger: if the LOT1-01 gate flips to authorized (SLM-248 amended + SLM-249 successor returns oracle_ceiling_positive), re-run both evaluators; LOT1-02 campaign work should then be re-filed.

claude and others added 2 commits July 25, 2026 10:51
LOT1-01's own hard activation gates require SLM-248's fidelity-contract
verdict to be authorize_bounded_implementation and SLM-249's trace gate
verdict to be oracle_ceiling_positive. The real committed upstream
artifacts report needs_target_trace_contract and inconclusive
respectively (SLM-249's own allowed_lot1_implementation field says
"none: ... not authorized by this issue"). Per the issue's own text,
this closes not_authorized in plan-only mode without any Kxc
model/training code.

Adds a small, reusable, tested LotusOpenUIModelContractV1 evaluator
that reads the two upstream contracts and derives the verdict from
their real published fields (not hardcoded to always fail — a
synthetic both-gates-met case is tested to flip the result to
authorized_wiring_only). Re-running the same CLI after SLM-249 gets a
real oracle-ceiling campaign will honestly reflect the new
disposition.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KShriKrGosZr67yVPFgi78
LOT1-02's launch prerequisites are unmet against the real committed
upstream contracts: SLM-248 reports needs_target_trace_contract (not
authorize_bounded_implementation), SLM-249's trace gate reports
inconclusive (not oracle_ceiling_positive), its own
allowed_lot1_implementation authorizes no LOT1 implementation, and
LOT1-01 (SLM-250) itself closed not_authorized -- so no faithful K x c
model path, curriculum hooks, or Stage 0 parent exist to train, and
there is no treatment arm to attribute against a continued-explicit
control. Per LOT1-01's own gate law this closes LOT1-02 not_authorized
in plan-only mode with no training/curriculum/model code.

Adds a small tested Lot102LaunchGateV1 evaluator that reuses the
SLM-250 lot1_01_activation_gate module (no parallel path) and adds the
SLM-249 explicit-allowance check; synthetic positive fixtures prove it
flips to authorized_wiring_only when prerequisites are honestly met.
@vercel

vercel Bot commented Jul 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
slm-training Ready Ready Preview, Comment Jul 26, 2026 11:03pm

Request Review

@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@Tyler-R-Kendrick, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 56 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: e0208543-bab5-419c-97b2-216243d8dd7d

📥 Commits

Reviewing files that changed from the base of the PR and between fcc7e8f and e864640.

📒 Files selected for processing (7)
  • docs/design/iter-slm251-lot1-02-not-authorized-20260725.json
  • docs/design/iter-slm251-lot1-02-not-authorized-20260725.md
  • scripts/evaluate_lot1_02_activation_gate.py
  • src/slm_training/harnesses/experiments/lot1_02_activation_gate.py
  • src/slm_training/resources/versions.json
  • tests/test_harnesses/experiments/test_lot1_02_activation_gate.py
  • tests/test_scripts/test_evaluate_lot1_02_activation_gate.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch slm-251-lot1-02-not-authorized

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…uthorized

# Conflicts:
#	src/slm_training/resources/versions.json
@Tyler-R-Kendrick
Tyler-R-Kendrick merged commit 35fd715 into main Jul 26, 2026
4 of 6 checks passed
@Tyler-R-Kendrick
Tyler-R-Kendrick deleted the slm-251-lot1-02-not-authorized branch July 26, 2026 23:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants