The hotfix what-if action added in #355 drives the real hotfix.Finalizer, so it faithfully simulates the divergence onset and version allocation. It does not yet preview the multi-env cherry-pick chain that hotfix.Planner.PlanChain computes, because PlanChain calls git.IsAncestor directly with no injectable seam, so it cannot run without a git checkout.
Scope:
- Add an ancestry seam to internal/hotfix (and internal/git as needed) so PlanChain can resolve ancestry through an injected reader, mirroring the record-only seams the simulator already uses for the Finalizer.
- Drive PlanChain from the hotfix simulate action to preview the per-commit, per-env cherry-pick plan alongside the outcome diff.
- Unit tests over a seeded chain; no git or network.
Follow-up to #312.
The hotfix what-if action added in #355 drives the real hotfix.Finalizer, so it faithfully simulates the divergence onset and version allocation. It does not yet preview the multi-env cherry-pick chain that hotfix.Planner.PlanChain computes, because PlanChain calls git.IsAncestor directly with no injectable seam, so it cannot run without a git checkout.
Scope:
Follow-up to #312.