Problem / why
Rollback uses a global Previous ring and a global rollback ref namespace
(internal/rollback/rollback.go). For a multi-component manifest, rolling back one component
must not affect siblings.
Scope (firm intent, to be refined after P1)
- Per-component
Previous ring under state.components[comp][env].
- Segment the rollback ref namespace per component:
RollbackRefPrefix becomes
rollback/<comp>/<env>.
- Port the rollback
Apply overlay to component-major.
Files / areas touched
internal/rollback/rollback.go.
Tests and coverage required
- e2e: rolling back A leaves B's state and refs untouched.
- A single-component regression test that rollback is unchanged.
Acceptance criteria
- A per-component rollback touches only that component's ring, refs, and state subtree.
- Single-component rollback is unchanged.
Dependencies
Blocked by the independent promotion milestone. Can land alongside R1.
Problem / why
Rollback uses a global
Previousring and a global rollback ref namespace(
internal/rollback/rollback.go). For a multi-component manifest, rolling back one componentmust not affect siblings.
Scope (firm intent, to be refined after P1)
Previousring understate.components[comp][env].RollbackRefPrefixbecomesrollback/<comp>/<env>.Applyoverlay to component-major.Files / areas touched
internal/rollback/rollback.go.Tests and coverage required
Acceptance criteria
Dependencies
Blocked by the independent promotion milestone. Can land alongside R1.