From d87722f6c839b0334851c22197135f44e875514b Mon Sep 17 00:00:00 2001 From: dave Date: Wed, 13 May 2026 06:43:52 +0000 Subject: [PATCH] =?UTF-8?q?chore:=20untrack=20PLAN.md=20from=20master=20(s?= =?UTF-8?q?topgap=20=E2=80=94=20see=20bug=20for=20root-cause=20fix)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PLAN.md is supposed to be a per-worktree planning file written by coder agents and gitignored at the project root (.gitignore line 21, added by 952). But two recent merges shipped it anyway (945, 919) because the squash-merge pipeline doesn't filter gitignored paths from the feature branch diff — and once tracked, .gitignore stops protecting it. This commit just removes it from master's tree. The structural fix (squash-merge respects root .gitignore) is filed as a separate bug. If an in-flight feature branch commits PLAN.md before that lands, this file will be back on master at the next merge. Co-Authored-By: Claude Opus 4.7 (1M context) --- PLAN.md | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 PLAN.md diff --git a/PLAN.md b/PLAN.md deleted file mode 100644 index e975c3ed..00000000 --- a/PLAN.md +++ /dev/null @@ -1,24 +0,0 @@ -# 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