decrating: absorb shipper-plan + levels + chunking into shipper::plan#56
Conversation
…to shipper::plan Move shipper-plan (3492 LOC), shipper-levels (1450 LOC), and shipper-chunking (814 LOC) into crates/shipper/src/plan/ as crate-private modules. plan/mod.rs absorbs shipper-plan; plan/levels/ absorbs shipper-levels; plan/chunking/ absorbs shipper-chunking. Delete the stale 1584-LOC duplicate at crates/shipper/src/plan.rs and the 1-LOC re-export shim at plan_micro.rs. Remove all three standalone crates from workspace members and shipper's deps. Drop the micro-plan feature. build_plan, PlannedWorkspace, and SkippedPackage stay publicly reachable (public library API). Other plan internals become pub(crate). Since shipper-engine-parallel and shipper-types sit below shipper in the dependency graph, move the shared domain types (PlannedWorkspace, SkippedPackage) into shipper-types; add a crate-public group_packages_by_levels algorithm to shipper-types to replace the absorbed shipper-levels dependency; inline chunk_by_max_concurrent into shipper-engine-parallel for the same reason. Update fuzz targets to consume the absorbed APIs via shipper::plan and shipper_types. All three absorbed in one PR because they share creation of the new crates/shipper/src/plan/ layer dir (Rust can't have both plan.rs and plan/mod.rs simultaneously).
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Sweep-cleanup of CI workflows, templates, and docs for references to microcrates and micro-* feature flags that have been deleted or are queued for deletion via absorption PRs #52 #54 #55 #56 #57 #58. Changes: - .github/workflows/ci.yml - removed deleted features (micro-lock, micro-plan, micro-policy, micro-process, micro-store) from BDD matrix - .github/workflows/mutation.yml - removed shipper-plan, shipper-policy, shipper-levels from the mutation-testing target list - .github/workflows/release.yml - added note that publish order is finalized in Phase 8 of the decrating plan - templates/circleci-config.yml - matching feature-matrix cleanup - docs/architecture.md - per-crate absorbed notes in microcrates table plus top-of-section notes on Dependency Graph and Module Responsibilities pointing out those sections reflect pre-decrating state - docs/testing.md - removed deleted crates from example test invocations and the mutation-testing example - RELEASE_CHECKLIST_v0.3.0.md - header note listing absorbed crates and pruned publish steps - RELEASE_NOTES_v0.3.0.md - reworded Modular Architecture bullet to reflect the consolidated public-crate layout References to still-in-flight absorptions (auth, environment, git, storage, engine-parallel, registry, progress) are left alone - they will be cleaned up in their respective absorption PRs. Per docs/decrating-plan.md.
2562e11
into
feature/decrating-phase1-scaffold
- Reorder `pub use` after `use` in `crates/shipper/src/plan/mod.rs` to satisfy `cargo fmt --check` (import grouping rule). - Fix broken intra-doc links `[ReleasePlan]` and `[PlannedWorkspace]` in the `plan` module-level docs by using disambiguated paths `[`ReleasePlan`](shipper_types::ReleasePlan)` and `[`PlannedWorkspace`](shipper_types::PlannedWorkspace)`. The bare links failed under `-D rustdoc::broken-intra-doc-links` because neither name is in scope at doc-resolution time for the module. CI logs: - https://github.com/EffortlessMetrics/shipper/actions/runs/24437331983/job/71394343775 - https://github.com/EffortlessMetrics/shipper/actions/runs/24437331983/job/71394343790
Sweep-cleanup of CI workflows, templates, and docs for references to microcrates and micro-* feature flags that have been deleted or are queued for deletion via absorption PRs #52 #54 #55 #56 #57 #58. Changes: - .github/workflows/ci.yml - removed deleted features (micro-lock, micro-plan, micro-policy, micro-process, micro-store) from BDD matrix - .github/workflows/mutation.yml - removed shipper-plan, shipper-policy, shipper-levels from the mutation-testing target list - .github/workflows/release.yml - added note that publish order is finalized in Phase 8 of the decrating plan - templates/circleci-config.yml - matching feature-matrix cleanup - docs/architecture.md - per-crate absorbed notes in microcrates table plus top-of-section notes on Dependency Graph and Module Responsibilities pointing out those sections reflect pre-decrating state - docs/testing.md - removed deleted crates from example test invocations and the mutation-testing example - RELEASE_CHECKLIST_v0.3.0.md - header note listing absorbed crates and pruned publish steps - RELEASE_NOTES_v0.3.0.md - reworded Modular Architecture bullet to reflect the consolidated public-crate layout References to still-in-flight absorptions (auth, environment, git, storage, engine-parallel, registry, progress) are left alone - they will be cleaned up in their respective absorption PRs. Per docs/decrating-plan.md.
# Conflicts: # .github/workflows/mutation.yml # Cargo.toml # crates/shipper-engine-parallel/Cargo.toml # crates/shipper/Cargo.toml # docs/testing.md
Adds 5 binding rules learned from real incidents during execution: - R-PR-1: Always pass --base main explicitly to gh pr create. Real incident: PR #56 merged to feature/decrating-phase1-scaffold instead of main. Content never reached main. Cargo + execution-core absorptions silently broke against the stale main. Recovery required PR #70 (replay of #56 onto main). - R-PR-2: Verify branch state at session start (worktree HEAD switching). - R-PR-3: Use forward-slash absolute paths in Edit/Write on Windows (backslash paths silently fail to persist). - R-PR-4: Pre-flight grep for cross-crate deps before absorbing. - R-PR-5: Type-promotion fallback when cascade is too tangled for global reorder (per PR #56's pattern). These rules are now binding for all remaining agent prompts.
- Reorder `pub use` after `use` in `crates/shipper/src/plan/mod.rs` to satisfy `cargo fmt --check` (import grouping rule). - Fix broken intra-doc links `[ReleasePlan]` and `[PlannedWorkspace]` in the `plan` module-level docs by using disambiguated paths `[`ReleasePlan`](shipper_types::ReleasePlan)` and `[`PlannedWorkspace`](shipper_types::PlannedWorkspace)`. The bare links failed under `-D rustdoc::broken-intra-doc-links` because neither name is in scope at doc-resolution time for the module. CI logs: - https://github.com/EffortlessMetrics/shipper/actions/runs/24437331983/job/71394343775 - https://github.com/EffortlessMetrics/shipper/actions/runs/24437331983/job/71394343790
decrating: replay PR #56 (plan+levels+chunking absorption) onto main
Summary
Phase 2 absorption: Move three planning-layer microcrates into the
shipperlibrary as crate-private modules, so thatcrates/shipper/src/plan/is the single home for workspace planning algorithms.shipper-plan(3492 LOC) ->crates/shipper/src/plan/mod.rsshipper-levels(1450 LOC) ->crates/shipper/src/plan/levels/mod.rsshipper-chunking(814 LOC) ->crates/shipper/src/plan/chunking/mod.rsThree crates, one layer, one atomic PR: creating the
plan/layer dir requires deleting the existing flatcrates/shipper/src/plan.rs, so all three absorptions must coexist with that structural change in the same commit.Why all three at once
plan/mod.rs(fromshipper-plan),plan/levels/(fromshipper-levels), andplan/chunking/(fromshipper-chunking) must all share the newcrates/shipper/src/plan/directory — Rust disallows bothplan.rsandplan/mod.rs, so the layer has to come into existence as one structural change.What changed
Source moves
shipper-plan/src/lib.rsintocrates/shipper/src/plan/mod.rs(single file — kept as one module, tests referencesuper::*heavily).shipper-levels/src/lib.rsintocrates/shipper/src/plan/levels/mod.rs.shipper-chunking/src/lib.rsintocrates/shipper/src/plan/chunking/mod.rs..snapfiles and renamed them fromshipper_plan__*,shipper_levels__*,shipper_chunking__*toshipper__plan__*,shipper__plan__levels__*,shipper__plan__chunking__*.Deletes
crates/shipper/src/plan.rs(1584 LOC, stale duplicate)crates/shipper/src/plan_micro.rs(1 LOC shim)crates/shipper-plan/,crates/shipper-levels/,crates/shipper-chunking/Visibility
build_plan,PlannedWorkspace,SkippedPackagestay reachable from outside (public library API — re-exported fromshipper::plan).group_packages_by_levels,PublishLevel<T>,chunk_by_max_concurrentare nowpub(crate)insideshipper::plan::*.Downstream fallout (no shim crates)
shipper-engine-parallelandshipper-typessit BELOWshipperin the graph and cannot depend onshipper, so they cannot simply re-import fromshipper::plan:PlannedWorkspaceandSkippedPackageintoshipper-types(natural home for shared plan data types).shipper::planre-exports them so the public surface is unchanged.group_packages_by_levels<T, F>()generic algorithm +GenericPublishLevel<T>toshipper-typesto replace the absorbedshipper-levelsdependency.ReleasePlan::group_by_levelsnow uses this inline function.chunk_by_max_concurrent<T: Clone>()intoshipper-engine-parallel(17 LOC algorithm, natural home since parallel engine is the only consumer).shipper::plan::build_plan,shipper_engine_parallel::chunk_by_max_concurrent, andshipper_types::group_packages_by_levels.Features + deps
micro-planfeature fromcrates/shipper/Cargo.tomlandcrates/shipper-cli/Cargo.toml.micro-planfrom themicro-parallelandmicro-allfeature lists.shipper-cargoandshipper-stateare now non-optional dependencies ofshipper(they were previously feature-gated for the oldmicro-planpath; the absorbed canonical code uses them unconditionally).shipper-levelsdependency fromshipper-typesandshipper.shipper-planandshipper-chunkingdeps fromshipper-engine-parallel.members.consoleandinsta["yaml"]to shipper dev-dependencies (required by absorbed tests).Misc
.github/workflows/mutation.yml,docs/testing.md, andRELEASE_CHECKLIST_v0.3.0.mdto drop references to deleted crates.LOC delta
git diff --statsummary vsfeature/decrating-phase1-scaffold:The deletions include the 1584-LOC stale duplicate
plan.rsplus the smallershipper-levels/shipper-chunkingREADMEs, Cargo.tomls, test files, and CLAUDE.mds. The absorbed sources themselves are renames (zero LOC delta for the copies).Validation
cargo check --workspace --all-targets --all-features— cleancargo clippy --workspace --all-targets --all-features -- -D warnings— cleancargo test -p shipper— 1077 tests pass (959 lib + 118 integration), 4 ignoredcargo test -p shipper-cli— all CLI tests passcargo test -p shipper-types -p shipper-engine-parallel— all passcargo build -p shipper-cli— cleanplan::testssnapshot tests pass (with renamed snapshot files)plan::levels::snapshot_testssnapshot tests passplan::chunking::snapshot_testssnapshot tests passTest plan
cargo check --workspacecargo test -p shipper plancargo test -p shippercargo test -p shipper-clicargo build -p shipper-clicargo clippy --workspace --all-targets --all-features -- -D warnings