Skip to content

decrating: absorb shipper-execution-core into shipper::runtime::execution#69

Merged
EffortlessSteven merged 1 commit into
mainfrom
feature/decrating-absorb-execution-core-v2
Apr 15, 2026
Merged

decrating: absorb shipper-execution-core into shipper::runtime::execution#69
EffortlessSteven merged 1 commit into
mainfrom
feature/decrating-absorb-execution-core-v2

Conversation

@EffortlessSteven

Copy link
Copy Markdown
Member

Summary

  • Move the shipper-execution-core microcrate (~2100 LOC: 92 LOC of impl + ~2000 LOC of tests/proptests/snapshots) into crates/shipper/src/runtime/execution/mod.rs as the first occupant of the new runtime/ layer.
  • Rewrite all use shipper_execution_core::X to use crate::runtime::execution::X across shipper (engine/mod.rs, engine/parallel/{mod,publish,tests}.rs).
  • Migrate the fuzz target and BDD tests to the new path; delete the old crate, workspace entry, and all docs references.

Stacking note

Stacks on top of PR #64 (engine-parallel absorption). Until #64 merges to main, this PR's diff-against-main will include the engine-parallel commits as well — that's expected. Once #64 merges, the diff here will shrink to just the execution-core absorption (~52 files, 95 insertions / 178 deletions net for this commit alone).

Notes

  • Items are pub rather than pub(crate) because the external fuzz/fuzz_targets/execution_core.rs target exercises them directly. Documented in runtime/execution/CLAUDE.md; can be tightened in a later pass once the fuzz surface is rationalized.
  • Snapshot files renamed from shipper_execution_core__tests__snapshots__* to shipper__runtime__execution__tests__snapshots__* with source: metadata updated to the new path.
  • insta dev-dep on shipper now enables the yaml feature (previously relied on the microcrate's own dev-dep).
  • The two BDD tests moved to crates/shipper/tests/execution_bdd.rs (external test crate, imports via the public shipper::runtime::execution path).

Per docs/decrating-plan.md §6 Phase 2.

Validation

  • cargo check --workspace — clean
  • cargo test -p shipper runtime::execution — 128 passed, 0 failed
  • cargo test -p shipper — 1054 passed, 3 ignored, 0 failed
  • cargo test -p shipper-cli — 450 passed, 0 failed
  • cargo clippy -p shipper --all-targets --all-features -- -D warnings — clean
  • cargo fmt --all -- --check — clean

Test plan

@gemini-code-assist

Copy link
Copy Markdown

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@coderabbitai

coderabbitai Bot commented Apr 15, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@EffortlessSteven has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 16 minutes and 34 seconds before requesting another review.

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 16 minutes and 34 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 6dce149c-baad-4e00-acf8-4fb52d606d53

📥 Commits

Reviewing files that changed from the base of the PR and between 95cc84f and 1beeb19.

⛔ Files ignored due to path filters (33)
  • Cargo.lock is excluded by !**/*.lock
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_backoff_constant_sequence.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_backoff_exponential_clamped.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_backoff_exponential_sequence.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_backoff_immediate_sequence.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_backoff_linear_sequence.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_classify_already_uploaded.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_classify_auth_denied.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_classify_empty_output.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_classify_network_reset.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_classify_network_timeout.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_classify_rate_limit.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_classify_unknown_error.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_execution_state_empty_packages.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_execution_state_single_ambiguous.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_execution_state_single_failed.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_execution_state_single_pending.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_execution_state_single_published.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_execution_state_single_skipped.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_execution_state_single_uploaded.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_retry_config_constant.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_retry_config_exponential.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_retry_config_immediate.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_retry_config_linear.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_state_ambiguous_resolved.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_state_failure_flow.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_state_multi_package_mixed_outcomes.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_state_skip_flow.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_state_success_flow.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_transition_all_skipped_plan.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_transition_ambiguous_to_published.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_transition_pending_to_failed_retry_to_published.snap is excluded by !**/*.snap
  • crates/shipper/src/runtime/execution/snapshots/shipper__runtime__execution__tests__snapshots__snapshot_transition_pending_to_uploaded_to_published.snap is excluded by !**/*.snap
📒 Files selected for processing (19)
  • Cargo.toml
  • RELEASE_CHECKLIST_v0.3.0.md
  • crates/shipper-execution-core/CLAUDE.md
  • crates/shipper-execution-core/Cargo.toml
  • crates/shipper-execution-core/README.md
  • crates/shipper/Cargo.toml
  • crates/shipper/src/engine/mod.rs
  • crates/shipper/src/engine/parallel/CLAUDE.md
  • crates/shipper/src/engine/parallel/mod.rs
  • crates/shipper/src/engine/parallel/publish.rs
  • crates/shipper/src/engine/parallel/tests.rs
  • crates/shipper/src/lib.rs
  • crates/shipper/src/runtime/execution/CLAUDE.md
  • crates/shipper/src/runtime/execution/mod.rs
  • crates/shipper/src/runtime/mod.rs
  • crates/shipper/tests/execution_bdd.rs
  • docs/architecture.md
  • fuzz/Cargo.toml
  • fuzz/fuzz_targets/execution_core.rs
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/decrating-absorb-execution-core-v2

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d40b4a3e83

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

)
})?
} else {
reg.fetch_sparse_index_file(reg.base_url(), crate_name)?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use registry index base for sparse readiness checks

When ReadinessMethod::Index (or Both with index-first behavior) is used, this call fetches sparse index metadata from reg.base_url(), which is the API host (https://crates.io), not the sparse index host (https://index.crates.io for crates.io). That makes index readiness probes fail/timeout in parallel publish even after a successful upload, leading to ambiguous/failure outcomes under index-based readiness settings.

Useful? React with 👍 / 👎.

…tion

Stacks on top of PR #64 (engine_parallel absorption) — engine-parallel no
longer depends on shipper-execution-core externally.

Move ~2100 LOC (92 LOC of impl + ~2000 LOC of tests/proptests/snapshots)
into crates/shipper/src/runtime/execution/mod.rs as the sole submodule of
the new runtime/ layer directory. No in-tree duplicate or _micro.rs shim
existed — pure relocation. Update all `use shipper_execution_core::X` to
`use crate::runtime::execution::X` across shipper (engine/mod.rs,
engine/parallel/publish.rs, engine/parallel/mod.rs, engine/parallel/tests.rs).

Fuzz target `fuzz/fuzz_targets/execution_core.rs` now imports from
`shipper::runtime::execution::*` (fuzz crate already depends on shipper).
Remove the `shipper-execution-core` entry from `fuzz/Cargo.toml`.

Move the two BDD tests from `crates/shipper-execution-core/tests/execution_core_bdd.rs`
into `crates/shipper/tests/execution_bdd.rs`. Rename snapshot files from
`shipper_execution_core__tests__snapshots__*` to
`shipper__runtime__execution__tests__snapshots__*` and update their
`source:` metadata. Enable the `yaml` feature on shipper's insta dev-dep.

Items are exposed as `pub` (rather than `pub(crate)`) because the external
fuzz target exercises them directly; this exception is documented in
`runtime/execution/CLAUDE.md` and will be tightened in a later pass.

Delete crates/shipper-execution-core, drop it from the workspace members,
remove the dep from shipper's Cargo.toml, and purge it from
docs/architecture.md and RELEASE_CHECKLIST_v0.3.0.md.

Per docs/decrating-plan.md §6 Phase 2.
@EffortlessSteven EffortlessSteven force-pushed the feature/decrating-absorb-execution-core-v2 branch from d40b4a3 to 1beeb19 Compare April 15, 2026 07:21
@EffortlessSteven EffortlessSteven merged commit b001c0f into main Apr 15, 2026
9 of 15 checks passed
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