Skip to content

PR 3/3: Crucible backend (capstone) - #98

Draft
ericeil wants to merge 1 commit into
eric/rustfrom
eric/crucible-app
Draft

PR 3/3: Crucible backend (capstone)#98
ericeil wants to merge 1 commit into
eric/rustfrom
eric/crucible-app

Conversation

@ericeil

@ericeil ericeil commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

PR 3 of 3 — Crucible backend (capstone)

Part of the stacked split of eric/crucible (see docs/pr-split-plan.md).
Stack: mastereric/ecosystemeric/rusteric/crucible-app.
Base: eric/rust (PR #97) — review PRs #96 and #97 first.

The tip of the stack — the Solana verification application, wiring PR 1 (ecosystem) +
PR 2 (rust framework) + the upstream command sandbox together.

What this adds

  • composer/crucible/* and rust/crucible-app (the Crucible wheel)
  • Crucible RAG: committed manifest rust/crucible-app/crucible_kb.rag.json + shared
    composer/scripts/rag_import.py, composer/rag/{import_format,db}.py, composer/tools/crucible_rag.py
  • ReportBackend "crucible" + render labels + as_report_backend
  • Sandbox default → launcher for crucible (fail-closed; the launcher itself is upstream)
  • test_scenarios/solana_vault + the crucible test gates — the vault sample also makes PR 2's
    test_solana_gate runnable from here
  • docs/application-abstraction.md — the five pieces of an analyzed application / Rust app
    framework (moved here from the ecosystem PR, where it did not belong), plus the crucible-*
    design docs

Finalizes the PR 2 cross-cutting intermediates

  • rust/Cargo.toml re-adds the crucible-app workspace member.
  • rustapp/adapter.py swaps the tag cast back to the validating as_report_backend, now that
    report/schema.py closes ReportBackend to {prover, foundry, crucible}.
  • Carries the crucible-specific sandbox tweaks: sandbox/recipes.py per-run RUSTUP_HOME;
    docker-compose.sandbox.yml un-gated run-confined-build.

Verification

  • cargo build (all 4 crates) ✓
  • crucible-layer modules import ✓

Notes

  • Draft: the real-LLM gates were not run here — test_crucible_gate,
    test_crucible_setup_gate, test_crucible_formalize_gate, test_crucible_e2e_gate.
    (setup/formalize were verified green earlier this cycle against a real crucible build.)

🤖 Generated with Claude Code

@ericeil
ericeil force-pushed the eric/crucible-app branch 2 times, most recently from bb347ed to f003b03 Compare July 23, 2026 19:46
@ericeil
ericeil force-pushed the eric/crucible-app branch 2 times, most recently from a707702 to d890343 Compare July 23, 2026 19:58
@ericeil
ericeil force-pushed the eric/crucible-app branch from d890343 to a985a45 Compare July 23, 2026 20:15
@ericeil
ericeil force-pushed the eric/crucible-app branch from a985a45 to c4f8b82 Compare July 23, 2026 22:23
@ericeil
ericeil force-pushed the eric/crucible-app branch 2 times, most recently from 0712081 to 85b3424 Compare July 23, 2026 23:55
@ericeil
ericeil force-pushed the eric/crucible-app branch from 85b3424 to f1381ae Compare July 24, 2026 00:02
@ericeil
ericeil force-pushed the eric/crucible-app branch from f1381ae to 18ba037 Compare July 24, 2026 00:08
@ericeil
ericeil force-pushed the eric/crucible-app branch 2 times, most recently from 0e5cdff to e2249eb Compare July 31, 2026 19:37
The Solana verification application, wiring PRs 1–2 and the upstream command
sandbox together: the `crucible_app` wheel (`rust/crucible-app` — harness
authoring, the in-loop judge, per-component units), the crucible RAG corpus as
a committed manifest plus the shared importer, the `solana_vault` scenario and
the crucible gates, and the container vertical (`Dockerfile.crucible`, the
compose overlays, the entrypoint's setup-db).

Rebased onto `eric/rust`, which now carries the framework layer these sit on.
Everything in this commit is crucible-owned; the framework changes the Crucible
work produced (the driver's `preflight` phase, the abstract component unit, the
cargo/Solana build capabilities, the sandbox build grants, the RAG seam) live in
PR 2, where the rest of that layer already was.

Adopting PR 2's `uv sync`-builds-the-workspace mechanism:

* `crucible_app` is back in the `apps` group and `[tool.uv.sources]`, so a bare
  `uv sync` compiles it — `dev` includes `apps`, and the container image (which
  sets `UV_NO_DEV=1`) still gets neither.
* Its crate carries `[tool.uv] cache-keys` like the others, so editing the crate
  recompiles the wheel with no manual `maturin develop`. `templates/**/*.j2` and
  `askama.toml` are keys here and not on the other crates because askama
  compiles the templates *into* the binary — editing a `.j2` changes the wheel
  exactly as editing a `.rs` does.
* `rust/Cargo.lock` is committed (no longer gitignored) and regenerated to
  include `crucible-app`; `uv.lock` likewise.

docs/pr-split-plan.md records the boundary this re-split settled on.
@ericeil
ericeil force-pushed the eric/crucible-app branch from e2249eb to e369524 Compare July 31, 2026 23:55
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.

1 participant