Skip to content

decrating: absorb shipper-progress into shipper-cli::output::progress#67

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

decrating: absorb shipper-progress into shipper-cli::output::progress#67
EffortlessSteven merged 1 commit into
mainfrom
feature/decrating-absorb-progress

Conversation

@EffortlessSteven

Copy link
Copy Markdown
Member

Summary

Absorbs the standalone shipper-progress microcrate (~1425 LOC) into crates/shipper-cli/src/output/progress/ as crate-private modules. This is a pure absorption — the code had no upstream library consumer (shipper doesn't depend on it), no in-tree duplicate, and no shim to merge.

Implements Phase 5 of the decrating plan (§6) for CLI-only concerns.

What changed

  • New location: crates/shipper-cli/src/output/progress/ with modules:
    • mod.rsProgressReporter implementation (~200 LOC), items are pub(crate).
    • tests.rs — unit tests (~825 LOC, from lib.rs #[cfg(test)] mod tests).
    • proptests.rs — property tests (~190 LOC, from lib.rs mod property_tests + mod proptests).
    • bdd_tests.rs — BDD-style tests (from tests/progress_bdd.rs).
    • snapshot_tests.rs — insta snapshot tests (from tests/snapshots.rs).
    • snapshots/ — 22 insta .snap files (renamed with the new module path prefix).
  • Parent folder: crates/shipper-cli/src/output/ with mod.rs + CLAUDE.md. Ready for future output/format/ and output/reporter/ sub-modules.
  • Module declaration: mod output; added to crates/shipper-cli/src/main.rs; the use shipper_progress::ProgressReporter import is rewritten to use crate::output::progress::ProgressReporter.
  • Crate deletion: crates/shipper-progress/ removed.
  • Cargo.toml updates:
    • crates/shipper-cli/Cargo.toml: drop shipper-progress, add indicatif = "0.18.4" (now direct dep), add proptest dev-dep for the absorbed property tests.
    • fuzz/Cargo.toml: drop shipper-progress and the progress_reporter fuzz target — the absorbed type is now crate-private to a binary crate and can't be consumed by the fuzz harness.
  • Doc updates: docs/architecture.md and RELEASE_CHECKLIST_v0.3.0.md no longer mention the standalone crate.

Not touched: root Cargo.tomlshipper-progress was already not in the workspace members list.

Validation

  • cargo check --workspace — clean
  • cargo test -p shipper-cli — 25 test binaries, all passing (0 failures)
    • The absorbed 106 progress tests pass inline in the shipper bin test run
    • All other shipper-cli integration tests still pass
  • cargo clippy -p shipper-cli --all-targets --all-features -- -D warnings — clean
  • cargo fmt --all -- --check — clean
  • cargo run -p shipper-cli -- --help — CLI boots and prints the expected help text

Test plan

  • Library compiles on workspace check
  • All 106 absorbed progress tests pass in the new location with renamed snapshot files
  • All existing shipper-cli integration tests remain green
  • Clippy and fmt clean
  • Binary still executes and prints help
  • CI green on PR

@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 10 minutes and 6 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 10 minutes and 6 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: 50e6eca3-a17b-4d85-804f-35db4a2b21ac

📥 Commits

Reviewing files that changed from the base of the PR and between 5924c30 and 2e3ecca.

⛔ Files ignored due to path filters (25)
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__display_empty_name_and_version.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__display_multi_package_sequence.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__display_prerelease_version.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__display_single_package.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__percentage_large_workspace.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__percentage_milestones.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__percentage_single_package.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__percentage_three_packages.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__percentage_zero_total.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__state_after_first_package.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__state_fresh_reporter.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__state_full_lifecycle.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__state_overwrite_same_index.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__snapshot_tests__state_zero_packages.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__tests__snapshot_display_format_edge_cases.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__tests__snapshot_failed_midway_state.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__tests__snapshot_progress_at_0_percent.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__tests__snapshot_progress_at_100_percent.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__tests__snapshot_progress_at_25_percent.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__tests__snapshot_progress_at_50_percent.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__tests__snapshot_progress_at_75_percent.snap is excluded by !**/*.snap
  • crates/shipper-cli/src/output/progress/snapshots/shipper__output__progress__tests__snapshot_single_package_lifecycle.snap is excluded by !**/*.snap
  • crates/shipper-progress/tests/snapshots/snapshots__display_empty_name_and_version.snap is excluded by !**/*.snap
  • crates/shipper-progress/tests/snapshots/snapshots__display_single_package.snap is excluded by !**/*.snap
  • crates/shipper-progress/tests/snapshots/snapshots__percentage_zero_total.snap is excluded by !**/*.snap
📒 Files selected for processing (18)
  • RELEASE_CHECKLIST_v0.3.0.md
  • crates/shipper-cli/Cargo.toml
  • crates/shipper-cli/src/main.rs
  • crates/shipper-cli/src/output/CLAUDE.md
  • crates/shipper-cli/src/output/mod.rs
  • crates/shipper-cli/src/output/progress/CLAUDE.md
  • crates/shipper-cli/src/output/progress/bdd_tests.rs
  • crates/shipper-cli/src/output/progress/mod.rs
  • crates/shipper-cli/src/output/progress/proptests.rs
  • crates/shipper-cli/src/output/progress/snapshot_tests.rs
  • crates/shipper-cli/src/output/progress/tests.rs
  • crates/shipper-progress/CLAUDE.md
  • crates/shipper-progress/Cargo.toml
  • crates/shipper-progress/README.md
  • crates/shipper-progress/src/lib.rs
  • docs/architecture.md
  • fuzz/Cargo.toml
  • fuzz/fuzz_targets/progress_reporter.rs
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/decrating-absorb-progress

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: f904c07598

ℹ️ 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".

Comment thread crates/shipper-cli/Cargo.toml Outdated
Comment on lines 34 to 37
micro-auth = ["shipper/micro-auth"]
micro-git = ["shipper/micro-git"]
micro-events = ["shipper/micro-events"]
micro-lock = ["shipper/micro-lock"]
micro-encrypt = ["shipper/micro-encrypt"]

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 Restore missing shipper-cli micro feature aliases

This commit removes micro-git, micro-environment, and micro-storage from shipper-cli's [features], so those feature sets now hard-fail (for example, cargo test -p shipper-cli --features micro-git errors that the feature does not exist). The BDD CI matrix still invokes all three names in .github/workflows/ci.yml (feature-set list and cargo test -p shipper-cli --features ...), so those jobs will fail before tests execute and users lose the corresponding CLI feature toggles.

Useful? React with 👍 / 👎.

Comment thread fuzz/Cargo.toml Outdated
Comment on lines 23 to 24
shipper-retry = { path = "../crates/shipper-retry" }
shipper-levels = { path = "../crates/shipper-levels" }
shipper-chunking = { path = "../crates/shipper-chunking" }

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 Re-add shipper-levels dependency to fuzz manifest

Removing shipper-levels from fuzz/Cargo.toml breaks existing fuzz targets that still import shipper_levels::group_packages_by_levels (fuzz_targets/release_levels.rs and fuzz_targets/plan_levels.rs). That makes those targets fail to compile with unresolved crate errors, and it directly affects CI because the fuzz-smoke workflow runs cargo fuzz run release_levels.

Useful? React with 👍 / 👎.

Move shipper-progress crate (~1425 LOC) into crates/shipper-cli/src/output/progress/
as crate-private modules. CLI-only concern with no upstream library consumer —
pure absorption with no dedup or shim merge.

Splits the 1206-line lib.rs into focused sub-files:
- mod.rs: ProgressReporter implementation (~200 LOC)
- tests.rs: unit tests (~825 LOC)
- proptests.rs: proptest-based property tests (~190 LOC)
- bdd_tests.rs: BDD-style tests (absorbed from tests/progress_bdd.rs)
- snapshot_tests.rs: insta snapshot tests (absorbed from tests/snapshots.rs)
- snapshots/: 22 insta snapshot files

Also creates the new crates/shipper-cli/src/output/ folder with CLAUDE.md
as the parent for CLI output concerns (future PRs may add output/format/
and output/reporter/).

Other changes:
- Remove fuzz target for progress_reporter since the absorbed type is now
  crate-private to a binary crate and cannot be consumed by the fuzz harness.
- Update docs/architecture.md and RELEASE_CHECKLIST to drop the standalone
  crate entries.
- Add indicatif as a shipper-cli dependency (was transitive via shipper-progress).
- Add proptest as a shipper-cli dev-dependency for the absorbed property tests.

Per docs/decrating-plan.md §6 Phase 5.
@EffortlessSteven EffortlessSteven force-pushed the feature/decrating-absorb-progress branch from f904c07 to 2e3ecca Compare April 15, 2026 07:27
@EffortlessSteven EffortlessSteven merged commit f3bfa03 into main Apr 15, 2026
9 of 14 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