Files
huskies/PLAN.md
T
2026-05-13 06:27:10 +00:00

25 lines
2.0 KiB
Markdown

# Plan: Story 919
## ACs → implementation locations
- AC 1 (`MergeFailure + Unblock → Merge`): `server/src/pipeline_state/transition.rs:295` — change `Ok(Coding)` to `Ok(Merge { feature_branch, commits_ahead })`. Also requires adding `feature_branch: BranchName` and `commits_ahead: NonZeroU32` to `Stage::MergeFailure` in `server/src/pipeline_state/types.rs:113`, and carrying those fields through the `Merge → MergeFailure` transition at `transition.rs:200`.
- AC 2 (`Coding (blocked) + Unblock → Coding` unchanged): `server/src/pipeline_state/transition.rs:289``(Blocked { .. }, Unblock) => Ok(Coding)` already correct; no change needed.
- AC 3 (regression test): `server/src/pipeline_state/tests.rs` — add `merge_failure_unblock_returns_to_merge` CRDT-based test.
## Decisions
- Add `feature_branch` and `commits_ahead` to `MergeFailure` (rather than use synthetic defaults in the transition): allows the exact merge state to be restored on Unblock. Rejected: synthetic values at transition time (would require story_id not available in the transition function, or use a placeholder that loses the real branch name).
- Update all `Stage::MergeFailure { reason }` construction sites to include the new fields with synthetic defaults where real values are unavailable (CRDT read, `from_dir`, migration).
## Current state
Not started — fresh session.
## What's left
- [ ] Add `feature_branch: BranchName` and `commits_ahead: NonZeroU32` to `Stage::MergeFailure` in `types.rs`
- [ ] Update `types.rs` `from_dir` construction of `MergeFailure`
- [ ] Update `transition.rs`: carry fields in `Merge → MergeFailure`, self-loop, fix `MergeFailure + Unblock → Merge`
- [ ] Update `crdt_state/read.rs` `MergeFailure` construction
- [ ] Update `crdt_state/write/migrations.rs` `MergeFailure` construction
- [ ] Update `tests.rs`: all `Stage::MergeFailure { .. }` constructions, rename+fix unblock test
- [ ] Add CRDT-based regression test (AC3)
- [ ] Run run_check, fix any clippy/fmt issues
- [ ] Run run_tests, commit