chore - 1480 oven_store and oven_rustc are crates - #1578
Open
dannymeijer wants to merge 7 commits into
Open
dannymeijer wants to merge 7 commits into
dannymeijer wants to merge 7 commits into
Conversation
This was referenced Sep 15, 2026
…an-ir-and-incan-emit-crates
…n-store-and-oven-rustc-crates
25 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The Oven ring becomes crates, and Oven stops knowing what Incan is. Two halves.
The inversions. On dev.5
src/ovenreached into the compiler in exactly two ways, and both now arrive as data. The compiler's identity —INCAN_VERSIONandSDK_PROVIDER_CODEGEN_REVISION, read by the store's release-domain pruning and the Loaf baker's provenance — isoven_model::compiler_identity::CompilerIdentity, handed in byOvenStore::with_release,OvenLoafBakerContextandOvenLegacyCargoPrepareRequest. The provider facts — where the SDK provider root is, what the inventory file is called, how staged provider digests are refreshed, and what a packaged provider looks like on disk — are the four methods ofoven_store::OvenProviderHooks, carried asArc<dyn OvenProviderHooks>by the same requests and read bydigest_dependency_specs;NoProviderHooksis the test double.src/oven_facet.rsin the root is Incan's answer to both:compiler_identity(),provider_hooks()andIncanProviderHooks, which is where the three SDK-staging functions that read the inventory went. The Cargo tree-digest cluster (648 lines) andProviderArtifactDigestErrormoved below the frontend intooven_model::digest, becauseworkspace_authorityneeded it and the frontend'sartifact.rsonly re-exports it. After this,grep -r 'crate::(frontend|provider|library_manifest|version|driver|cli)' src/ovenis empty.The split.
loaves/oven/oven_storeissrc/oven.rs— the receipt model, whole — as its crate root, withstore,store_mirror,closure_proof,progressandprocess.loaves/oven/oven_rustcisrustc/,loaf/,loaf_mirror,plan/,native_test/,native_contract,interopandlegacy_cargo/with the Loaf fixtures, one strongly connected component on dev.5, and depends onoven_store. The root keepsovenas a shim re-exporting both under the old paths, so the 53crate::oven::OvenReceipt, 42crate::oven::rustc::…and every othercrate::oven::spelling in the driver, CLI andtests/is untouched.make check-oven-ringbuilds the three Oven crates in a workspace that contains nothing else.Two things the plan of attack on #1480 said differently, and why:
oven_store, notoven_rustc. Measured:store.rsneedsOvenReceipt,OvenBuildIntentanddigest_bytesfrom the root, and the root needs nothing from the baker side.loaves/LAYOUT.mdalready lists "receipts, identities" underoven_store.incan_oven_facetis not a crate yet.IncanProviderHooksreadsSdkInventoryanddiscover_active_sdk_inventoryfromsrc/provider/, the loaders that becomeincan_providerin the next step; the facet moves with them.Facts the split carries, each fixed here:
#[cfg(test)]code is never compiled for a dependent's tests.oven_store::test_support(the frozen fixture project the store tests publish) and the two gates the driver's tests reach inoven_rustc—plan::test_supportandOvenRegistryLeafAuthority::new— are#[cfg(any(test, feature = "test_support"))];process_is_runninglikewise for the baker tests. The root's dev-dependencies turn both features on.loaf.rstests were Incan facts checked against Oven's fixtures — that the complete-stdlib Loaf fixtures cover every checked SDK component module, and that the envelope's inspection surface matchesincan_core::lang::stdlib::extra_crate_deps(). They live in the facet's tests now; nothing underloaves/ovennamesincan_core.CARGO_MANIFEST_DIRmeant the checkout root inlegacy_cargo(the source-compiler vocab support root) andsdk_staging(the runtime crates); both anchor atoven_model::toolchain_layout::development_root()now. The one test that walkscrates/incan_stdlibmoved to the root with the other two.pub(super)items were parent-module-only and never reachable from the root; they arepub(crate)in the new crates rather thanpub, and the two module-private types that sat in their signatures follow them topub(crate). Everything that waspub(crate)ispub, as in the earlier steps.loaf.rstoloaves/oven/oven_rustc/src/fixtures/; the Makefile release canary, the CI cache keys,oven_evidence.yml, the two release packaging scripts and the installer test that names the evidence workflow follow the path.tests/vocab_guardrails.rswalkedsrcandcratesonly; it walksloavestoo now, so the frontend, IR, emission and Oven code did not silently leave it.…_issue1469) exercisedIncanProviderHooks, so it moved fromoven.rs's tests to the facet's.Type of change
docs/RFCs/*)Area(s)
Key details
oven_storedepends onoven_model, serde, sha2/hex, toml, thiserror;oven_rustcon those plusoven_store, rustix, semver, tempfile, tracing.Cargo.lockgains both. TheOvenProviderHookstrait andCompilerIdentityare the Oven ring's only two facts about the compiler.pubis wider than the crates' eventual surface.interopandlegacy_cargostay modules ofoven_rustcuntil their edges intoloafandrustcare cut;lockfile/dependency_resolver(the generic-vs-facet split) andbackend/project/{plan,lock_projection}are the next Oven steps.Testing / verification
cargo check -p incanin the six feature configurations;cargo clippy --all-targetsdefault and--all-featureswith-D warnings; rustdoc gate lastcargo test -p oven_model -p oven_store -p oven_rustc— 556 tests (121 / 77 / 358)cargo test --test codegen_snapshot_tests— 266 unchangedcargo test --test cli_layering_guardrails --test vocab_guardrails --test layering_guardoven,oven_facet,driver::build,driver::tests,cli::commands::ovenmake check-oven-ring— three cratescargo test --test oven_pr_regressionsmake test-one TEST_ROOT=tests/cli_surface_tests.rs TEST_EXACT=a_cargo_manifest_beside_a_loaf_manifest_warns_without_stopping_the_build— bake + buildDocs impact
Checklist
Part of #1480 (slice 5, #1478). Builds on #1576 and #1577: the branch carries their commits, so the diff shows all three steps until they land and merge-commit syncs narrow it to this one.