decrating: replay PR #56 (plan+levels+chunking absorption) onto main#70
Conversation
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 24 minutes and 37 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: ⛔ Files ignored due to path filters (54)
📒 Files selected for processing (36)
✨ 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 |
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.
…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).
- 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
After rebasing PR #70 (plan+levels+chunking absorption replay) onto current main (which has PR #64's engine_parallel absorption), three drift corrections are needed: - engine::parallel::{mod,publish,tests}.rs: `shipper_plan::PlannedWorkspace` -> `crate::plan::PlannedWorkspace`; `shipper_chunking::chunk_by_max_concurrent` -> `crate::plan::chunking::chunk_by_max_concurrent`. The parallel engine was absorbed into shipper itself (PR #64), so it references sibling modules directly instead of the former microcrates. - engine::parallel::run_publish_parallel: drop the shipper_plan reconstruction dance (both sides use the same shipper_types::PlannedWorkspace) and forward the host ws directly to run_publish_parallel_inner. - plan::mod.rs: `crate::state::CURRENT_PLAN_VERSION` -> `crate::state::execution_state::CURRENT_PLAN_VERSION` (the const is re-exported from shipper-state via state::execution_state). - plan::chunking::chunk_by_max_concurrent: promote `pub(crate)` to `pub` so the integration BDD test (`tests/engine_parallel_chunking_bdd.rs`) and the engine::parallel re-export can reach it. - engine::parallel::mod.rs: `pub use crate::plan::chunking::chunk_by_max_concurrent` preserves the former `shipper::engine::parallel::chunk_by_max_concurrent` public surface for consumers.
e611d18 to
3d01e1b
Compare
Why
PR #56 (
shipper-plan + shipper-levels + shipper-chunking -> shipper::plan) was merged to the wrong base branch (feature/decrating-phase1-scaffoldinstead ofmain). As a result, its content never reachedmain.Downstream absorption agents are now blocked because
shipper-planstill depends onshipper-cargoandshipper-execution-coreonmain.Source
Cherry-pick-equivalent of branch
feature/decrating-absorb-plan, specifically:d62a08a- original PR decrating: absorb shipper-plan + levels + chunking into shipper::plan #56 absorption (plan + levels + chunking intoshipper::plan)dbbef4d- fix for lint + doc-test failures on decrating: absorb shipper-plan + levels + chunking into shipper::plan #56 (rustfmt import order + intra-doc link disambiguation incrates/shipper/src/plan/mod.rs)The replay was performed via
git merge --no-ff origin/feature/decrating-absorb-planand then fixing up a reference (shipper_state::CURRENT_PLAN_VERSION->crate::state::CURRENT_PLAN_VERSION) now that main has absorbedshipper-stateintoshipper::state.What's included
shipper-planintocrates/shipper/src/plan/*(with sub-modules, snapshots, tests, docs)levelsintocrates/shipper/src/plan/levels/(withLeveltype inshipper-types)chunkingintocrates/shipper/src/plan/chunking/shipper-plan,shipper-levels,shipper-chunkingworkspace membersmicro-planfeature and dependencies on itshipper-plan/shipper-levelsmatrix entries from the mutation-testing CI workflow and docsdbbef4dConflict resolution summary
git merge --no-ffproduced 5 conflicts; all resolved via union-of-removals per the replay playbook:Cargo.tomlshipper-planfrom workspace members (already hadshipper-process/lock/store/policy/config-runtimeremoved on main).crates/shipper/Cargo.tomlshipper-plandep,micro-planfeature, andmicro-planfrommicro-parallel/micro-all. Keep main's other absorption deltas.crates/shipper-engine-parallel/Cargo.tomlshipper-planandshipper-policydeps (union).shipper-chunkingalready dropped by auto-merge..github/workflows/mutation.yml-p shipper-plan,-p shipper-levels,-p shipper-policymatrix entries.docs/testing.mdPost-merge fix-up:
crates/shipper/src/plan/mod.rsusedshipper_state::CURRENT_PLAN_VERSION; sinceshipper-stateis now an optional dep on main and the value is mirrored in the in-cratecrate::statemodule, the two call sites were retargeted.Validation (local, Windows)
All green:
cargo check --workspace- OK (222 crates)cargo test -p shipper plan- 300 passedcargo test -p shipper- 1471 passed, 4 ignoredcargo test -p shipper-cli- 451 passed (25 suites)cargo build -p shipper-cli- OKcargo clippy --workspace --all-targets --all-features -- -D warnings- no issuescargo fmt --all -- --check- cleanRUSTDOCFLAGS=-Dwarnings cargo doc --workspace --no-deps --all-features- cleanUnblocks
a91d1e8b5)ac7f8b1a7)shipper-planTest plan