|
| 1 | +# VOYAGE REPORT: Implement Mission Stack Context Surfaces |
| 2 | + |
| 3 | +## Voyage Metadata |
| 4 | +- **ID:** VGe8Ad6Jy |
| 5 | +- **Epic:** VGe7mCcFW |
| 6 | +- **Status:** done |
| 7 | +- **Goal:** - |
| 8 | + |
| 9 | +## Execution Summary |
| 10 | +**Progress:** 3/3 stories complete |
| 11 | + |
| 12 | +## Implementation Narrative |
| 13 | +### Surface Mission Stack In Turn Next And Mission Status |
| 14 | +- **ID:** VGe8Mf0Jg |
| 15 | +- **Status:** done |
| 16 | + |
| 17 | +#### Summary |
| 18 | +Thread the new Mission Stack projection through the canonical operator surfaces. |
| 19 | +`turn`, `next`, and `mission next --status` should explain local stack context, |
| 20 | +current gating, and cross-repo dependencies while staying unchanged when no |
| 21 | +stack is active. |
| 22 | + |
| 23 | +#### Acceptance Criteria |
| 24 | +- [x] [SRS-02/AC-01] `keel turn` renders Mission Stack id, branch, member role, mode, checkpoint, and foreign-execution state in both text and JSON surfaces. <!-- verify: cargo test -p keel turn_surfaces_mission_stack_context_in_text_and_json, SRS-02:start:end, proof: ac-1.log --> |
| 25 | +- [x] [SRS-03/AC-01] `keel next` emits stack-aware block or yield decisions when local execution is forbidden by the active Mission Stack state. <!-- verify: cargo test -p keel next_emits_stack_aware_decisions, SRS-03:start:end, proof: ac-2.log --> |
| 26 | +- [x] [SRS-04/AC-01] `keel mission next --status` reports linked member missions, pending negotiations, and waiting receipts for the local stack. <!-- verify: cargo test -p keel mission_next_status_surfaces_stack_dependencies, SRS-04:start:end, proof: ac-3.log --> |
| 27 | + |
| 28 | +#### Verified Evidence |
| 29 | +- [ac-1.log](../../../../stories/VGe8Mf0Jg/EVIDENCE/ac-1.log) |
| 30 | +- [ac-2.log](../../../../stories/VGe8Mf0Jg/EVIDENCE/ac-2.log) |
| 31 | +- [ac-3.log](../../../../stories/VGe8Mf0Jg/EVIDENCE/ac-3.log) |
| 32 | + |
| 33 | +### Load Mission Stack Projection From Local Manifest |
| 34 | +- **ID:** VGe8MfYJW |
| 35 | +- **Status:** done |
| 36 | + |
| 37 | +#### Summary |
| 38 | +Add the first repo-local Mission Stack read model. Keel should be able to load |
| 39 | +optional stack metadata from `.keel/stacks/<id>/manifest.yaml`, combine it with |
| 40 | +current git/worktree state, and produce a deterministic local projection for |
| 41 | +other adapters to consume without modifying the core board model. |
| 42 | + |
| 43 | +#### Acceptance Criteria |
| 44 | +- [x] [SRS-01/AC-01] Keel loads a Mission Stack projection from repo-local manifest metadata and derives local member role, stack mode, checkpoint, linked missions, and receipt state. <!-- verify: cargo test mission_stack_loads_projection_from_manifest_and_git_state --lib, SRS-01:start, proof: ac-1.log --> |
| 45 | +- [x] [SRS-01/AC-02] The projection derives current branch and checkout/worktree metadata needed for later guardrails. <!-- verify: cargo test mission_stack_derives_branch_and_worktree_state --lib, SRS-01:end, proof: ac-2.log --> |
| 46 | +- [x] [SRS-NFR-01/AC-01] Repos without stack metadata remain a no-op and preserve current single-repo behavior. <!-- verify: cargo test mission_stack_absent_repo_is_noop --lib, SRS-NFR-01:start:end, proof: ac-3.log --> |
| 47 | + |
| 48 | +#### Verified Evidence |
| 49 | +- [ac-1.log](../../../../stories/VGe8MfYJW/EVIDENCE/ac-1.log) |
| 50 | +- [ac-2.log](../../../../stories/VGe8MfYJW/EVIDENCE/ac-2.log) |
| 51 | +- [ac-3.log](../../../../stories/VGe8MfYJW/EVIDENCE/ac-3.log) |
| 52 | + |
| 53 | +### Enforce Mission Stack Diagnostics And Foreign Worktree Guards |
| 54 | +- **ID:** VGe8Mg4Jj |
| 55 | +- **Status:** done |
| 56 | + |
| 57 | +#### Summary |
| 58 | +Add the first enforcement layer for Mission Stack protocol rules. `doctor` |
| 59 | +should diagnose wrong-branch, checkpoint, foreign-worktree, and stack-close |
| 60 | +leftover violations, and execution surfaces should refuse unsupported foreign |
| 61 | +checkout paths instead of silently proceeding. |
| 62 | + |
| 63 | +#### Acceptance Criteria |
| 64 | +- [x] [SRS-05/AC-01] `keel doctor` reports Mission Stack violations for wrong branch, missing checkpoint acknowledgment, and unsupported foreign execution state. <!-- verify: cargo test -p keel doctor_reports_mission_stack_violations, SRS-05:start, proof: ac-1.log --> |
| 65 | +- [x] [SRS-05/AC-02] Closed stacks with leftover managed foreign worktrees are reported conservatively instead of being deleted automatically. <!-- verify: cargo test -p keel doctor_reports_closed_stack_worktree_leftovers, SRS-05:end, proof: ac-2.log --> |
| 66 | +- [x] [SRS-06/AC-01] Stack-aware adapter output exposes deterministic machine-readable fields for Mission Stack context and gating decisions. <!-- verify: cargo test -p keel mission_stack_surfaces_expose_deterministic_json, SRS-06:start:end, proof: ac-3.log --> |
| 67 | +- [x] [SRS-NFR-02/AC-01] Stack-aware surfaces preserve repo-local heartbeat semantics and do not redefine pacemaker state. <!-- verify: cargo test -p keel mission_stack_surfaces_preserve_heartbeat_semantics, SRS-NFR-02:start:end, proof: ac-4.log --> |
| 68 | +- [x] [SRS-NFR-03/AC-01] Foreign-worktree guardrails fail safe by blocking unsupported execution without mutating uncertain checkouts. <!-- verify: cargo test -p keel mission_stack_guardrails_fail_safe, SRS-NFR-03:start:end, proof: ac-5.log --> |
| 69 | + |
| 70 | +#### Verified Evidence |
| 71 | +- [ac-1.log](../../../../stories/VGe8Mg4Jj/EVIDENCE/ac-1.log) |
| 72 | +- [ac-2.log](../../../../stories/VGe8Mg4Jj/EVIDENCE/ac-2.log) |
| 73 | +- [ac-3.log](../../../../stories/VGe8Mg4Jj/EVIDENCE/ac-3.log) |
| 74 | +- [ac-4.log](../../../../stories/VGe8Mg4Jj/EVIDENCE/ac-4.log) |
| 75 | +- [ac-5.log](../../../../stories/VGe8Mg4Jj/EVIDENCE/ac-5.log) |
| 76 | + |
| 77 | + |
0 commit comments