-
Notifications
You must be signed in to change notification settings - Fork 69
chore - layout step 3: split the root crate into compiler and oven crates with an Incan-free Oven ring #1480
Copy link
Copy link
Labels
choreA chore: small / contained unit of workA chore: small / contained unit of workincan compilerSuggestions, features, or bugs related to the Compiler (frontend/backend/codegen)Suggestions, features, or bugs related to the Compiler (frontend/backend/codegen)runtime / core cratesSuggestions, features, or bugs related to the `incan-core`, `incan-stdlib`, 'incan-derive` cratesSuggestions, features, or bugs related to the `incan-core`, `incan-stdlib`, 'incan-derive` cratestoolingSuggestions, features, or bugs related to the Tooling (CLI/formatter/test runner)Suggestions, features, or bugs related to the Tooling (CLI/formatter/test runner)
Milestone
Description
Activity
Metadata
Metadata
Assignees
Labels
choreA chore: small / contained unit of workA chore: small / contained unit of workincan compilerSuggestions, features, or bugs related to the Compiler (frontend/backend/codegen)Suggestions, features, or bugs related to the Compiler (frontend/backend/codegen)runtime / core cratesSuggestions, features, or bugs related to the `incan-core`, `incan-stdlib`, 'incan-derive` cratesSuggestions, features, or bugs related to the `incan-core`, `incan-stdlib`, 'incan-derive` cratestoolingSuggestions, features, or bugs related to the Tooling (CLI/formatter/test runner)Suggestions, features, or bugs related to the Tooling (CLI/formatter/test runner)
Type
Projects
- StatusShow more project fieldsDone
Area
Summary
Step 3 of the workspace layout rewrite (parent: #1478). Split what remains of the root crate into
incan_frontend,incan_ir,incan_emit,incan_format,incan_inspect,incan_oven_facet, and the Oven cratesoven_model,oven_store,oven_rustc,oven_interop,oven_cargo_compat(withoven_registryreserved, empty). Relocate the roottests/to the crates that own the behavior. Turn on the Oven-only compile guard.The Oven boundary is the load-bearing part. Measured on dev.4, the proposed Oven sources reach into Incan rings in exactly these places, each of which moves to
incan_oven_facetor becomes internal:oven/rustc.rs→cli::commands::build(internal after #1266);oven/legacy_cargo.rs→ SDK inventory discovery, provider digests,backend::project::runner;oven/loaf.rsanddependency_resolver.rs→incan_core::lang::stdlib::StdlibExtraCrateSource;lockfile.rs→provider::*,library_manifest::*,frontend::LibraryManifestIndex;dependency_resolver.rs→frontend::ast::Span,frontend::diagnostics::CompileError;backend/project/runner.rs→ cfg-gatedrust_inspectcalls. The full table is inloaves/LAYOUT.mdunder "The Oven boundary".Scope
lockfile.rsanddependency_resolver.rssplit into generic Oven halves and Incan-specific facet halves; therust_inspecthook inversion inrunner.rs;tests/relocation per the disposition table; the CI guard.oven_registryimplementation (RFC 125); thera_ap_load-cargoto project-JSON loader change inincan_inspect(its own follow-up; the crate boundary does not depend on it); directory moves intoloaves/(step 4).lockfile.rsembeds SDK-provider and library-manifest types in the lock schema, so the split needs an extension point inoven_modelrather than a copy of the types.oven/rustc.rsis 10.5k lines and Oven failures surface as authority and fingerprint errors rather than compile errors; verify with the Oven replay lanes, not unit tests alone.Plan
incan_frontend,incan_ir,incan_emit,incan_formatfirst: pure moves, snapshots must not change.oven_model,oven_store,oven_rustc,oven_interop,oven_cargo_compatnext, withincan_oven_facetcreated in the same PR series so the facet absorbs each outward edge as it is cut.incan_inspectfromcrates/rust_inspectplussrc/rust_inspect/.tests/: codegen and lowering toincan_emit; parity corpus, replacement, generated-Rust artifact and audit tests toincan_driver; CLI integration and layering guardrails to the CLI crate; Oven regressions tooven_rustc; property tests split by subject; fixtures beside their tests.cargo check -p oven_model -p oven_store -p oven_rustc -p oven_registry -p oven_interop -p oven_cargo_compatin a checkout with the compiler crates absent.Done when
cargo checkpasses in CI with no compiler crates present.oven_*crate lists anincan_*crate as a dependency.make testpasses; codegen snapshots unchanged; the roottests/directory is empty.