Problem
`workspace.dependsOn` triggers a downstream bump when an upstream package is bumped, but `src/monorepo/run/mod.rs:535-617` always emits a patch, regardless of the upstream bump type:
```rust
compute_next_version(.., BumpType::Patch, strategy) // line ~568
```
That means: if `@scope/core` goes `1.x → 2.0.0` (breaking), `@scope/cli` which depends on it gets a `patch` bump — even though `cli` is now compiling against a breaking new `core` API. End users upgrade `cli` thinking it's a patch and break in prod.
Also, the dependency version range declared in `package.json` / `Cargo.toml` peer maps is never rewritten — consumers continue pinning the old range.
Comparison
- changesets propagates the bump type and offers `updateInternalDependencies: "patch"|"minor"` to tune.
- release-please does manifest-level cascade with the same bump type.
Proposal
- Track the bump type of upstream packages and propagate it. Default: `major-on-major` (only major cascades).
- Optional `workspace.update_dependents: true` that, when bumping pkg `B`, rewrites version constraints in `A`'s manifest where `A.dependsOn = ["B"]`.
- Config shape:
```toml
[[package]]
depends_on = [{ name = "core", propagate = "major-on-major" }]
```
Test plan
- Fixture: `feat!:` on B with A depending on B → A gets major.
- Fixture: `update_dependents = true` rewrites `A/package.json` deps.
Problem
`workspace.dependsOn` triggers a downstream bump when an upstream package is bumped, but `src/monorepo/run/mod.rs:535-617` always emits a patch, regardless of the upstream bump type:
```rust
compute_next_version(.., BumpType::Patch, strategy) // line ~568
```
That means: if `@scope/core` goes `1.x → 2.0.0` (breaking), `@scope/cli` which depends on it gets a `patch` bump — even though `cli` is now compiling against a breaking new `core` API. End users upgrade `cli` thinking it's a patch and break in prod.
Also, the dependency version range declared in `package.json` / `Cargo.toml` peer maps is never rewritten — consumers continue pinning the old range.
Comparison
Proposal
```toml
[[package]]
depends_on = [{ name = "core", propagate = "major-on-major" }]
```
Test plan