Skip to content

feat(prism): AutoModel recipe 2.0 + miner-funded Lium BYOK - #120

Merged
echobt merged 63 commits into
mainfrom
feat/prism-miner-paid-lium
Aug 12, 2026
Merged

feat(prism): AutoModel recipe 2.0 + miner-funded Lium BYOK#120
echobt merged 63 commits into
mainfrom
feat/prism-miner-paid-lium

Conversation

@echobt

@echobtechobt commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Ship Prism recipe 2.0.0 with automodel.base + automodel.patch submissions against the frozen NeMo AutoModel pin (automodel@v0.5.0, commit d02f49cb…, content SHA f8af64ef…), fail-closed pin application, persisted slim deltas, and a submission diff API.
  • Add miner-funded Lium evaluation: live intake and infrastructure retries use X-Lium-Api-Key; BYOK credentials remain in the in-process payer vault and are never persisted or logged.
  • Complete the production pin ceremony and v3 live-eval wiring: operators stage PRISM_AUTOMODEL_PIN_DIR, private eval assets are delivered after training, and the bounded real-Lium smoke remains an explicit operator validation.
  • Merge current main, preserving its weight-sealing, deployment-pin, and retry changes while keeping AutoModel 2.0 and miner-paid Lium behavior intact.

Validation

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace
  • cargo deny check
  • cargo run -p xtask -- loc-cap
  • cargo run -p xtask -- consensus-lint
  • cargo run -p xtask -- spec-check
  • cargo run -p xtask -- design-check
  • cargo run -p xtask -- external-docs-check
  • cargo clippy -p validator-bin --features dcap --all-targets -- -D warnings
  • bash deploy/scripts/assert-compose-matrix.sh
  • Prism v1 + v3 CPU harness smokes
  • GitHub Actions green on the final merge commit

Operator follow-ups

  • Stage the production AutoModel pin with deploy/scripts/stage-automodel-pin.sh and mount PRISM_AUTOMODEL_PIN_DIR on prism-challenge.
  • Run a bounded real Lium submission with a miner X-Lium-Api-Key; confirm missing keys fail closed and the miner account is billed.
  • Sync the miner-facing recipe/API updates to the public BaseIntelligence/prism repository (not a CI blocker for this PR).

echobt added 30 commits August 6, 2026 10:32
Non-normative spike doc synthesizing research into a single scoring
recommendation; no source code changed.
Validators re-entering the on-chain 100-block window (e.g. after a restart —
the submit dedupe is in-memory) pool-submitted a doomed extrinsic every tick
and then blocked ~4 blocks in dispatch confirmation, wedging the async
runtime long enough to fail the docker healthcheck (staging validator smoke
failed twice on this). submit_timelocked_weights/set_weights now read
LastUpdate + the window up front and return RateLimited immediately — no
pool spam, no confirm block; the post-submit confirm stays the source of
truth for the mid-flight race.
Also gives staging services the ordered endpoint failover list
(test.finney <-> test.chain, each service keeps its primary).
Single-file harness becomes a 12-file embedded package (main.py + prismlib/
+ eval/ registry). Miner code runs in an unshare --net subprocess with an
FD-3 result channel and per-phase timeouts (loud fallback when netns
unavailable). Seeded harness-owned train_stream with a real tokens_seen
counter; G6 intermediate probes fire from prism_telemetry.report;
additive METRICS_JSON v2 parsed by prism-lium. Recipe pin now hashes the
full harness file set.
composite.rs implements research/12 steps 0-6: fixed-anchor normalization,
two-level group means, lexicographic gates, mirror-gap penalty, weighted
geometric composite, clustered bootstrap SE, LCB -> lattice. Versioned
placeholder anchor set (anchors/v0.json). PRISM_SCORING_MODE=shadow keeps
the v2 bpb path bit-identical; composite mode is fail-closed.
SCORING_VERSION_V3 constant added (v2 remains live default).
Transformer++ (340.9M: RoPE/RMSNorm/SwiGLU/tied, 24x1024) and 3:1 gated
delta-net + sliding-window-attention hybrid (341.3M), pure torch, chunked
WY delta rule (chunk 64, fp32 core), arbitrary eval context (no position
tables). train_stream primary with legacy dataset_path fallback; CPU
verified (delta recurrence 1e-6, SWA 1.9e-9, 2-step train both paths).
Seeded procedural generators (recall, reasoning, long-context families)
plus eight eval modules g1..g8 with the run(model, ctx) contract, public
dev family under eval/public_dev, per-item cluster records for clustered
bootstrap, and the v3 two-phase flow: train subprocess saves a state_dict
checkpoint, hard kill, parent gate (survivors + JIT reset), then a fresh
netns eval subprocess rebuilds the model and runs the battery with
secret-seed Cantor derivation. v1 flow byte-identical by default.
Migration 0013 (prism_eval_run/group/metric, mirror pairs, anchor sets,
prereg, metric reports). New prism-zoneb crate (envelope schema, hash
chain, verdicts ok|flagged|quarantined) and prism-eval-store crate
(EvalStore memory+postgres impls, finalize_composite glue, zone b
ingest). API: eval detail on submissions/{id}, /metrics?zone=a|b,
/anchors, /preregistration. Orchestrator wiring left for integration.
Source-tree submissions (zip <=2MiB, prism.toml entry, vendor.lock hash
check, banned-binary/AST pattern scan shared via cheatguard_patterns.json,
canonical tree hash idempotency; legacy two-script ids unchanged). Lium
client streams harness output, stages private eval assets + file-delivered
SECRET_SEED after PHASE_TRAIN_DONE via a second ssh channel, fail-closed
when assets are configured but the tier is not private. prismlib cheatguard
battery (AST audit, thread diff, seed Cantor combine, determinism/poison/
timing checks). Attribution module (2x2 kernel-swap run builder) in
prism-recipe, re-exported through prism-challenge.
- register cheatguard.py + cheatguard_patterns.json in HARNESS_FILES
- embed v3 baselines (transformer_pp, hybrid_delta) via baselines.rs
- orchestrator: with_eval_store + finalize_for_submission composite path,
cap_exceeded terminal guard, scoring_mode config (legacy default)
- new prism-attribution crate: POST /v1/submissions/{id}/attribution
- harness two-phase: _await_eval_assets .ready wait, cap_exceeded payload
- RemoteExecResult: serde-flatten extra map for METRICS_JSON v2 payload
- docs: PRISM.md, PRISM_RECIPE.md, external-miner, COMPLETENESS, spikes
- tests: e2e_v3_wiring; all gates pass (clippy, fmt, 168 suites, xtask x5)
- rollup.py: emit flat battery.metrics (org.* keys) + mirrors harness-side
- contract test: real harness METRICS_JSON v2 fixture through finalize path
- torch_seed: Cantor lattice reduced mod 2^63-1 for torch APIs (g7/g8)
- g4_reasoning: tuple+list TypeError fixed; battery groups all ok
- PRISM_TEST_TRAIN_ROWS/VAL_ROWS overrides; harness smokes pass with torch
- POST /v1/submissions/{id}/zone-b with full validation lattice
- CI: harness-smoke job (cpu torch) gates deploy-staging
- harness upload embedded ~240KB base64 in one ssh argv entry, exceeding
MAX_ARG_STRLEN (128KB): every real-pod run failed at spawn (os error 7)
- now deterministic ustar streamed over stdin (stage_eval_assets pattern);
argv holds only tiny extract + run commands
- fix latent /dev/urandom infinite read in random_seed_hex (read_exact 16B)
- regression tests: argv stays small, tar contents byte-identical, deterministic
- drop base64 dep; prism-lium LOC 1499 -> 1498
- chunked delta rule saved ~5.8 GiB of fp32 pairwise-decay tensors per
block for backward (x18 blocks = ~104 GiB) -> CUDA OOM at first forward
- wrap each block in grad-enabled-only activation checkpointing; eval and
probes bypass it, gradients bitwise-identical, params unchanged (341.3M)
- measured CPU peak 79.3 -> 9.3 GiB (fwd+bwd); estimated pod peak ~14 GiB
- unknown cheat_codes coerce to CheatCode::Other (verdict preserved,
audited) instead of Parse -> llm_infra -> full 6h pod retrain
- missing_telemetry_hooks added to tool schema + parser (prompt/parser drift)
- token budget 24k -> 120k for v3 source trees; budget death triggers one
forced-verdict turn before NoVerdict
- post-run retries resume from persisted measurement (no re-provision);
reset_for_retry retains pod/receipt/metrics/bpb/telemetry
- prism domain rules: try/except ImportError telemetry shim is no violation
- verified live: OpenRouter review of hybrid_delta completes Clean in 9s
CPU Generator + CUDA device crashed the G7 TPOT loop (swallowed), and both
reference baselines ignored prism_width_multiplier so G8 stubbed as
width_knob_unsupported — leaving org.g7.tpot_ms_32k and org.g8.mup_lr_stability
missing and composite Ineligible.
The tokenizer was a challenge rule (GPT2TokenizerFast in every phase
entry) although it is an architecture decision a miner should own. It is
now part of the submission: prismlib.tokenizer is the single resolution
path (tokenizer/ files, a build_tokenizer(ctx) hook beside build_model,
else the pinned fallback) shared by the v1 entry and both v3 children,
injected as ctx["tokenizer"] with ctx["vocab_size"].
Fail-closed rather than silently scoring the wrong tokenizer: bounded
vocab, probe ids inside that vocab, encode/decode roundtrip, and a probe
fingerprint the train phase stores in the checkpoint and the eval phase
must reproduce. A hook in training.py is rejected (eval imports the
architecture module only), and intake refuses tokenizer/ files while the
pod stages seam projections instead of whole trees.
Comparability follows: bits_per_byte (bits over scored UTF-8 bytes) joins
the per-token bpb in METRICS_JSON and beside every g1.bpb.* key, g7 sizes
its probes from the resolved vocab, and eval.common.fit_to_tokens builds
contexts to an exact token budget for the long-context rework.
Real long documents scored the only way a pretrained base LM honestly can:
LongBench-v2 four-way MCQ by length-normalized logprob over the answer
texts, and HELMET RAG through HELMET's own non-chat few-shot template with
a bounded greedy decode and substring exact match. No chat template, no
judge, no summarization.
Operator-side `xtask natural-pack` fetches both sources at a pinned
revision, verifies every artifact's SHA-256, and writes a seeded private
pool plus a disjoint public_dev mirror so the contamination gap works the
way it already does for G2/G4. Datasets stay out of git; the packs live in
the operator eval-assets dir, which prism-lium already stages post-train.
Packs carry raw text + choices + gold only. All token math -- length
measurement and LongBench's middle-truncation -- runs on-pod against the
tokenizer the miner submitted, funnelled through one wrapper so there is a
single owner of it.
Phase C wires the rollup, composite and anchors; this lands the module,
the builder, the staging path and the fixtures.
Phase A's modular tokenizer landed the shared helpers this module was
standing in for. Swap the local encode/length wrappers for
common.tokenizer_of / encode / decode / token_len, and drop the
decode-less fallback: the contract validates an encode/decode roundtrip
before the battery runs, so a tokenizer without decode is a contract
error to surface, not a case to degrade around.
`_fit_middle` stays local and is now documented against its neighbours --
truncate_tokens keeps a prefix and would throw away the end of a LongBench
document, and fit_to_tokens grows a synthetic context rather than shrinking
a real one.
Official generators with private-seed regeneration and base-LM logprob
scoring; lengths via the modular tokenizer fit_to_tokens contract.
Stage kernels, helpers, and tokenizer/ under submission/ via tar-over-SSH-stdin
so miners are no longer limited to architecture.py + training.py seam projections.
Wire community protocols into the ranked path with weighted anchors,
fail-soft orchestration, and L* length capability.
Spell out recipe 1.4.0 G5 keys/weights, L*, and no IFT/chat/judge.
Public BaseIntelligence/prism now carries the miner guide; mirror
tokenizer / source-tree / CAP_EXCEEDED tips in troubleshoot.
Brings the branch up to date with 118 commits of v2 hardening while keeping
the v3 composite / source-tree structure. 21 conflicts resolved so that both
sides' behaviour survives rather than one side winning:
- score.rs: branch's `combine_final(outcome, mode)` keeps main's nuanced
cheap-similarity gating (`Copied` always zeroes, `Suspicious` only at
score >= 0.9 with non-trope evidence) ahead of the scoring-mode lattice.
- prompts / types / tools: keep main's non-causal label-leak screen and AST
bands alongside the branch's telemetry-shim tolerance and `Other` fallback.
- client.rs / ssh.rs: keep the branch's tar-over-stdin + streaming exec path
(BUG-5) and re-port main's harness log-tail retention onto it —
`truncate_tail` now feeds `exec_with_retries`, and a dropped session
harvests the on-pod log instead of losing the fatal tail.
- prism_store.rs: schema union of `miner_coldkey` (main) and `tree_blob`
(branch), with INSERT placeholders renumbered to match the bind chain.
- api.rs: intake resolves the owning coldkey *and* packs the source tree.
- submit.rs: accept main's deletion; the orchestrator takes `GatewayClient`
from `challenge_common`, which is what `EpochEmitter` expects.
- agentic.rs: drop the branch's inline `corpus_from_rows` for main's
coldkey-aware version in `prism_pipeline::precheck`.
Migrations 0013/0014 collided (one per side); the branch's two are renumbered
0017/0018 so `sqlx::migrate!` cannot silently skip a version. Fixed the
`PRISM.md` claim that source trees may be submitted as raw `application/zip` —
`sources_from_zip` rejects them and points at JSON `zip_base64`.
fmt, clippy, consensus-lint, spec-check, design-check and external-docs-check
pass; the workspace test suite is green. loc-cap does not pass: five crates
went over the 1500 non-test LOC cap purely by addition (prism-pipeline 1710,
prism-challenge 1620, prism-lium 1562, prism-store 1548, challenge-agentic
1514), since both branches had each trimmed to sit just under it. Fixing that
means relocating ~450 LOC across crate boundaries and is left to follow-ups.
prism-pipeline sat 210 LOC over the 1500 per-crate cap after merging main.
zone_b.rs was already a leaf (std + prism-zoneb re-exports + sha2, no
pipeline internals), so it belongs next to the contract types it validates
rather than behind a re-export in the pipeline crate.
prism-pipeline 1710 -> 1376; prism-zoneb 133 -> 471. Consumers
(prism-eval-store, prism-attribution) now import prism_zoneb directly.
prism-challenge sat 123 LOC over the 1500 per-crate cap after merging main.
Three moves, each to the crate that already owns the concern:
- Submission JSON views (list/detail/eval + the sha digest) to
prism-eval-store, whose module doc already claims the API JSON views.
- The v3 read-only eval routes (metrics?zone=a|b, /v1/anchors,
/v1/preregistration) to prism-attribution, following the narrow-state
MethodRouter pattern the attribution and zone-b routes already use.
- The queued row builder to prism-pipeline, next to ephemeral_candidate;
api.rs keeps a thin wrapper that resolves the coldkey from the metagraph.
The intake front-end (body parse, arch materialization, membership, error
envelope) is shared verbatim by real intake and the advisory precheck, so it
moves to a new prism-intake crate with the precheck route; keeping the two
paths on one front-end is what makes the advisory verdict comparable to the
one intake returns. That also collapses three copies of the error envelope
in prism-attribution onto the crate-root helper.
prism-challenge 1623 -> 1317. Behaviour unchanged: same routes, same error
shape ({"error": message, "code": code}), same front-end ordering.
prism-lium sat 61 LOC over the 1500 per-crate cap after merging main. Its
error taxonomy, provider shapes, pod telemetry series, and signed EvalReceipt
were already a pure leaf (std + serde + sha2 + the recipe train-hours cap),
so they move to a types crate the way prism-zoneb holds the Zone B contract.
prism-lium 1561 -> 1324. prism-lium re-exports every moved name, so
prism_lium::… stays the single import path for callers.
prism-store sat 48 LOC over the 1500 per-crate cap after merging main. The
submission row, stage lattice, patch, error taxonomy, and registry / epoch /
top-model records are a pure leaf, so they move out the way prism-lium-types
holds the Lium contract; the PrismStore trait, memory impl, and Postgres impl
stay behind.
Because the row's only Lium types are EvalReceipt and TelemetryPoint, both now
in prism-lium-types, this also drops the heavy prism-lium dependency (reqwest,
tokio) from the store crates entirely.
prism-store 1548 -> 1409. prism-store re-exports every moved name, so
prism_store::… stays the single import path for callers.
echobt added 21 commits August 9, 2026 11:48
Unread local stderr pipes can fill and stall the SSH session mid-run
even when the remote merges 2>&1 into stdout — matching a hung
live-Lium eval that left an idle pod with a dead harness.
Live Lium e2e harvested a torch.save FP32 checkpoint that exceeded the
old BF16×1.5 budget (exact n_params×3), so RECEIPT.json never landed and
playground could not load the parked weights. Budget now matches the
harness train dtype.
Live Lium harvest still refused under FP32×1.5: tied embed/lm_head
state_dict keys can pickle as ~2× measured n_params. Budget now covers
tying duplication plus pickle/tar overhead so RECEIPT.json can land.
Decouple tiny_caps stubs from PRISM_TEST_TRAIN_MINUTES so operators can
run a complete (non-stub) battery on real Lium with a ~12m train cap.
Forward eval sample/budget knobs into the pod harness env.
Operator-side script streams G1/G2/G5 mirrors (wikitext/finemath/codeparrot/fineweb 2025, OLMES G2, pg19+squad) without pulling FineWeb-Edu train pins.
Challenge runs as uid 65532 and defaulted to /var/lib/prism/artifacts
without an image-owned directory, so create_dir_all failed with
Permission denied after eval (termination RECEIPT only). Pre-create the
park in the Dockerfile, probe writability before SSH harvest, and surface
the configured path in mkdir errors.
Candidate walks that hit HTTP 429 left PENDING pods billing because
cleanup_after_rent(None) was a no-op. Always reclaim by pod_name after
failed rent/wait, terminate known ids, and keep the 429 backoff so
retries never abandon rented instances.
A real µP sweep that diverged stubbed g8.mup without the org key, so G8
composite completeness dropped mup_lr_stability. Emit stability=0.0 when
the sweep path runs but fails, keep 1/(1+|log2 ratio|) on success, and
document the semantics for anchors/rollup.
Keep per-item prompts, choices, gold/selected, and choice logprobs
(plus generative text) in METRICS_JSON inference_traces with size caps,
expose them via GET /v1/submissions/{id}/inference, and journal
playground completions next to parked artifacts.
Baseline architectures return a ModelOutput carrier; treating the whole
object as a tensor broke admin playground complete on harvested ckpts.
Default staged eval_tier=public from public HF held-out assets (full G1
domains+fresh, G2, G5 natural); keep private only for optional secret
mirrors. Raise pack cap to 256MiB and add overnight operator recipe.
Live GPU eval bills the miner's Lium account instead of the operator key.
Intake requires the header on live; keys stay in-process only.
Keeps prism-lium under the 1500 LOC cap.
Freeze NeMo AutoModel v0.5.0 (content SHA + PRISM_AUTOMODEL_PIN_DIR), reject fixture pins on live unless PRISM_AUTOMODEL_FIXTURE=1, and keep miner-funded Lium BYOK required for real GPU eval.
@coderabbitai

coderabbitaiBot commented Aug 11, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 247 files, which is 147 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a241b1bf-182a-4ad0-9097-3198fe7e4af8

📥 Commits

Reviewing files that changed from the base of the PR and between c6b3573 and 23ef770.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (247)
  • .github/workflows/ci.yml
  • bins/prism-challenge/Cargo.toml
  • bins/prism-challenge/src/main.rs
  • crates/challenge-agentic-types/Cargo.toml
  • crates/challenge-agentic-types/src/lib.rs
  • crates/challenge-agentic-types/src/types.rs
  • crates/challenge-agentic/Cargo.toml
  • crates/challenge-agentic/src/agent.rs
  • crates/challenge-agentic/src/lib.rs
  • crates/challenge-agentic/src/llm.rs
  • crates/challenge-agentic/src/prompts.rs
  • crates/challenge-agentic/src/sim.rs
  • crates/challenge-agentic/src/tools.rs
  • crates/challenge-agentic/tests/live_review.rs
  • crates/challenge-ast/src/lib.rs
  • crates/challenge-ast/src/source_cheats.rs
  • crates/crypto/src/lib.rs
  • crates/db/migrations/0017_prism_eval_v3.sql
  • crates/db/migrations/0018_prism_source_tree.sql
  • crates/db/src/prism_store.rs
  • crates/prism-artifacts/Cargo.toml
  • crates/prism-artifacts/src/http.rs
  • crates/prism-artifacts/src/lib.rs
  • crates/prism-artifacts/src/receive.rs
  • crates/prism-attribution/Cargo.toml
  • crates/prism-attribution/src/diff.rs
  • crates/prism-attribution/src/eval_views.rs
  • crates/prism-attribution/src/inference.rs
  • crates/prism-attribution/src/lib.rs
  • crates/prism-attribution/src/zone_b.rs
  • crates/prism-automodel/Cargo.toml
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/__init__.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/components/__init__.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/components/datasets/__init__.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/components/datasets/loader.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/components/models/__init__.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/components/models/toy/__init__.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/components/models/toy/model.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/components/training/__init__.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/components/training/loop.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/recipes/__init__.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/recipes/llm/__init__.py
  • crates/prism-automodel/fixtures/automodel-pin/nemo_automodel/recipes/llm/train_ft.py
  • crates/prism-automodel/fixtures/patches/happy.patch
  • crates/prism-automodel/src/apply.rs
  • crates/prism-automodel/src/classify.rs
  • crates/prism-automodel/src/env.rs
  • crates/prism-automodel/src/intake.rs
  • crates/prism-automodel/src/lib.rs
  • crates/prism-automodel/src/pin.rs
  • crates/prism-automodel/src/review.rs
  • crates/prism-challenge-task/src/lib.rs
  • crates/prism-challenge/Cargo.toml
  • crates/prism-challenge/src/agentic.rs
  • crates/prism-challenge/src/api.rs
  • crates/prism-challenge/src/eval_finalize.rs
  • crates/prism-challenge/src/leaf_emit.rs
  • crates/prism-challenge/src/lib.rs
  • crates/prism-challenge/src/orchestrator.rs
  • crates/prism-challenge/src/score.rs
  • crates/prism-challenge/tests/agentic_review_retry.rs
  • crates/prism-challenge/tests/arch_competition.rs
  • crates/prism-challenge/tests/cheat_arch_copy.rs
  • crates/prism-challenge/tests/cheat_metrics.rs
  • crates/prism-challenge/tests/copy_gate.rs
  • crates/prism-challenge/tests/e2e_orchestrate_sim.rs
  • crates/prism-challenge/tests/e2e_v3_wiring.rs
  • crates/prism-emit/src/leaf_emit.rs
  • crates/prism-emit/src/lib.rs
  • crates/prism-emit/src/submit.rs
  • crates/prism-emit/tests/epoch_semantics.rs
  • crates/prism-eval-store/Cargo.toml
  • crates/prism-eval-store/src/db.rs
  • crates/prism-eval-store/src/finalize.rs
  • crates/prism-eval-store/src/lib.rs
  • crates/prism-eval-store/src/memory.rs
  • crates/prism-eval-store/src/views.rs
  • crates/prism-eval-store/tests/contract_metrics_v2.rs
  • crates/prism-eval-store/tests/fixtures/metrics_json_v2_real.json
  • crates/prism-intake/Cargo.toml
  • crates/prism-intake/src/bearer.rs
  • crates/prism-intake/src/lib.rs
  • crates/prism-lium-harness/Cargo.toml
  • crates/prism-lium-harness/src/lib.rs
  • crates/prism-lium-payer/Cargo.toml
  • crates/prism-lium-payer/src/lib.rs
  • crates/prism-lium-types/Cargo.toml
  • crates/prism-lium-types/src/error.rs
  • crates/prism-lium-types/src/lib.rs
  • crates/prism-lium-types/src/receipt.rs
  • crates/prism-lium-types/src/types.rs
  • crates/prism-lium/Cargo.toml
  • crates/prism-lium/src/artifacts.rs
  • crates/prism-lium/src/client.rs
  • crates/prism-lium/src/lib.rs
  • crates/prism-lium/src/sim.rs
  • crates/prism-lium/src/ssh.rs
  • crates/prism-lium/tests/live_e2e.rs
  • crates/prism-pipeline/Cargo.toml
  • crates/prism-pipeline/src/composite.rs
  • crates/prism-pipeline/src/lib.rs
  • crates/prism-pipeline/src/pipeline.rs
  • crates/prism-pipeline/src/precheck.rs
  • crates/prism-pipeline/src/score.rs
  • crates/prism-pipeline/src/submission.rs
  • crates/prism-playground/Cargo.toml
  • crates/prism-playground/src/lib.rs
  • crates/prism-recipe/Cargo.toml
  • crates/prism-recipe/anchors/v0.json
  • crates/prism-recipe/baseline/architecture.py
  • crates/prism-recipe/baseline/training.py
  • crates/prism-recipe/baselines/hybrid_delta/NOTES.md
  • crates/prism-recipe/baselines/hybrid_delta/architecture.py
  • crates/prism-recipe/baselines/hybrid_delta/count_params.py
  • crates/prism-recipe/baselines/hybrid_delta/training.py
  • crates/prism-recipe/baselines/transformer_pp/NOTES.md
  • crates/prism-recipe/baselines/transformer_pp/architecture.py
  • crates/prism-recipe/baselines/transformer_pp/count_params.py
  • crates/prism-recipe/baselines/transformer_pp/training.py
  • crates/prism-recipe/harness/cheatguard_patterns.json
  • crates/prism-recipe/harness/eval/VENDOR.md
  • crates/prism-recipe/harness/eval/__init__.py
  • crates/prism-recipe/harness/eval/build_private_pack.py
  • crates/prism-recipe/harness/eval/build_public_pack.py
  • crates/prism-recipe/harness/eval/calibrate_anchors.py
  • crates/prism-recipe/harness/eval/common.py
  • crates/prism-recipe/harness/eval/g1_intrinsic.py
  • crates/prism-recipe/harness/eval/g2_downstream.py
  • crates/prism-recipe/harness/eval/g3_recall.py
  • crates/prism-recipe/harness/eval/g4_reasoning.py
  • crates/prism-recipe/harness/eval/g5_babilong.py
  • crates/prism-recipe/harness/eval/g5_longctx.py
  • crates/prism-recipe/harness/eval/g5_ruler.py
  • crates/prism-recipe/harness/eval/g6_curve.py
  • crates/prism-recipe/harness/eval/g7_inference.py
  • crates/prism-recipe/harness/eval/g8_stability.py
  • crates/prism-recipe/harness/eval/gen_longctx.py
  • crates/prism-recipe/harness/eval/gen_reasoning.py
  • crates/prism-recipe/harness/eval/generators.py
  • crates/prism-recipe/harness/eval/natural_docs.py
  • crates/prism-recipe/harness/eval/public_dev/README.md
  • crates/prism-recipe/harness/eval/public_dev/g1/domains/code.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g1/domains/news.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g2/arc_challenge.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g2/arc_easy.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g2/boolq.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g2/hellaswag.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g2/lambada.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g2/openbookqa.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g2/piqa.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g2/winogrande.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g5/natural/README.md
  • crates/prism-recipe/harness/eval/public_dev/g5/natural/helmet_rag.demos.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g5/natural/helmet_rag.jsonl
  • crates/prism-recipe/harness/eval/public_dev/g5/natural/natural_mcq.jsonl
  • crates/prism-recipe/harness/eval/public_dev/seeds.json
  • crates/prism-recipe/harness/eval/rollup.py
  • crates/prism-recipe/harness/eval/toklen.py
  • crates/prism-recipe/harness/eval/vendor_babilong.py
  • crates/prism-recipe/harness/eval/vendor_ruler.py
  • crates/prism-recipe/harness/main.py
  • crates/prism-recipe/harness/playground_infer.py
  • crates/prism-recipe/harness/prism_harness.py
  • crates/prism-recipe/harness/prismlib/__init__.py
  • crates/prism-recipe/harness/prismlib/automodel.py
  • crates/prism-recipe/harness/prismlib/cheatguard.py
  • crates/prism-recipe/harness/prismlib/dataset.py
  • crates/prism-recipe/harness/prismlib/envutil.py
  • crates/prism-recipe/harness/prismlib/eval_v3.py
  • crates/prism-recipe/harness/prismlib/manifest.py
  • crates/prism-recipe/harness/prismlib/miner_entry.py
  • crates/prism-recipe/harness/prismlib/probes.py
  • crates/prism-recipe/harness/prismlib/runner.py
  • crates/prism-recipe/harness/prismlib/scoring.py
  • crates/prism-recipe/harness/prismlib/stream.py
  • crates/prism-recipe/harness/prismlib/telemetry.py
  • crates/prism-recipe/harness/prismlib/tokenizer.py
  • crates/prism-recipe/harness/prismlib/train_v3.py
  • crates/prism-recipe/harness/prismlib/v3flow.py
  • crates/prism-recipe/harness/tests/smoke_battery.py
  • crates/prism-recipe/harness/tests/smoke_local.py
  • crates/prism-recipe/harness/tests/smoke_local.sh
  • crates/prism-recipe/harness/tests/smoke_natural.py
  • crates/prism-recipe/harness/tests/smoke_protocols.py
  • crates/prism-recipe/harness/tests/test_automodel_stage.py
  • crates/prism-recipe/harness/tests/test_g8_mup_rollup.py
  • crates/prism-recipe/harness/tests/test_inference_traces.py
  • crates/prism-recipe/harness/tests/test_tiny_caps_override.py
  • crates/prism-recipe/src/anchors.rs
  • crates/prism-recipe/src/attribution.rs
  • crates/prism-recipe/src/baselines.rs
  • crates/prism-recipe/src/lib.rs
  • crates/prism-recipe/src/review_tree.rs
  • crates/prism-recipe/src/zip_submit.rs
  • crates/prism-registry/Cargo.toml
  • crates/prism-registry/src/hooks.rs
  • crates/prism-registry/src/lib.rs
  • crates/prism-registry/src/publish.rs
  • crates/prism-registry/src/weights.rs
  • crates/prism-store-types/Cargo.toml
  • crates/prism-store-types/src/lib.rs
  • crates/prism-store-types/src/types.rs
  • crates/prism-store/Cargo.toml
  • crates/prism-store/src/arch.rs
  • crates/prism-store/src/dbprism.rs
  • crates/prism-store/src/emit.rs
  • crates/prism-store/src/eval.rs
  • crates/prism-store/src/lib.rs
  • crates/prism-store/src/store.rs
  • crates/prism-store/src/telemetry.rs
  • crates/prism-tree/Cargo.toml
  • crates/prism-tree/src/lib.rs
  • crates/prism-tree/src/scan.rs
  • crates/prism-tree/src/tar.rs
  • crates/prism-zoneb/Cargo.toml
  • crates/prism-zoneb/src/lib.rs
  • crates/prism-zoneb/src/validate.rs
  • deploy/Dockerfile
  • deploy/env/prism-challenge.env.example
  • deploy/scripts/prism-overnight-battery.sh
  • deploy/scripts/stage-automodel-pin.sh
  • deploy/secrets/README.md
  • docker-compose.yml
  • docs/COMPLETENESS.md
  • docs/PRISM.md
  • docs/PRISM_RECIPE.md
  • docs/external-miner/README.md
  • docs/external-miner/prism.md
  • docs/external-miner/troubleshoot.md
  • docs/runbooks/prism-overnight-battery.md
  • docs/spikes/prism-v3/README.md
  • docs/spikes/prism-v3/research/01-current-state-implementation.md
  • docs/spikes/prism-v3/research/02-current-state-docs-contracts.md
  • docs/spikes/prism-v3/research/03-beyond-transformers.md
  • docs/spikes/prism-v3/research/04-evaluation-beyond-loss.md
  • docs/spikes/prism-v3/research/05-long-context.md
  • docs/spikes/prism-v3/research/06-training-cost.md
  • docs/spikes/prism-v3/research/07-inference-efficiency.md
  • docs/spikes/prism-v3/research/08-custom-kernels-sandbox.md
  • docs/spikes/prism-v3/research/09-miner-metrics-leaderboards.md
  • docs/spikes/prism-v3/research/10-reasoning-small-scale.md
  • docs/spikes/prism-v3/research/11-sample-efficiency-scaling.md
  • docs/spikes/prism-v3/research/12-score-aggregation.md
  • docs/spikes/prism-v3/research/13-frontier-transfer.md
  • xtask/src/external_docs_check.rs
  • xtask/src/main.rs
  • xtask/src/natural_pack.rs

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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.

NeMo AutoModel pin trees exceed the 100-byte name field under submission/;
use POSIX prefix so live recipe 2.0 pack/upload fail-closes only past 255 bytes.
Persist only .prism/ + patch delta under the 17MiB DB cap; expand against
PRISM_AUTOMODEL_PIN_DIR when staging the Lium harness tar so live trains
still see the full applied pin tree.
Live eval fell back to stock train_ft (mlflow) because slim tree_blob
dropped miner prism.toml; keep knobs + recover entry on pod expand.
Preserve recipe 2.0 and miner-funded retries while integrating current weight sealing and deployment changes, then split support code to keep all workspace gates green.
@echobt
echobt merged commit 50c0470 into mainAug 12, 2026
4 checks passed
echobt added a commit that referenced this pull request Aug 12, 2026
PR #120 landed a second 0017_* file that collided with tip-supersede
already applied on staging/prod, crashing migrate with checksum mismatch.
Sign up for freeto 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.

1 participant

@echobt