|
| 1 | +# Mission Request Command Surface - Product Requirements |
| 2 | + |
| 3 | +> Keel should expose a native `mission request` command family so Keeper and other |
| 4 | +programs can compose mission-request parsing, validation, drafting, application, |
| 5 | +and acknowledgement without embedding provider-specific logic in Keel core. |
| 6 | + |
| 7 | +## Problem Statement |
| 8 | + |
| 9 | +The current Keeper and keeper-cli surfaces are too thin to ingest formal mission |
| 10 | +requests from external providers. Without a native Keel CLI surface, each |
| 11 | +provider worker would need to reimplement normalization, validation, and |
| 12 | +application behavior, which would fracture the planning contract and weaken |
| 13 | +replayability. |
| 14 | + |
| 15 | +## Goals & Objectives |
| 16 | + |
| 17 | +| ID | Goal | Success Metric | Target | |
| 18 | +|----|------|----------------|--------| |
| 19 | +| GOAL-01 | Validate bearing recommendation in delivery flow | Adoption signal | Initial rollout complete | |
| 20 | + |
| 21 | +## Users |
| 22 | + |
| 23 | +| Persona | Description | Primary Need | |
| 24 | +|---------|-------------|--------------| |
| 25 | +| Product/Delivery Owner | Coordinates planning and execution | Reliable strategic direction | |
| 26 | + |
| 27 | +## Scope |
| 28 | + |
| 29 | +### In Scope |
| 30 | + |
| 31 | +- [SCOPE-01] Define the canonical `keel mission request template|parse|validate|draft|apply|ack` command family. |
| 32 | +- [SCOPE-02] Define the provider-neutral mission request envelope and its stdin/stdout contract. |
| 33 | +- [SCOPE-03] Define the validation and acknowledgement semantics automation callers rely on. |
| 34 | + |
| 35 | +### Out of Scope |
| 36 | + |
| 37 | +- [SCOPE-90] Provider-specific polling and ingress workers in Keeper. |
| 38 | +- [SCOPE-91] Unrelated workflow or planning refactors outside the mission-request contract. |
| 39 | + |
| 40 | +## Requirements |
| 41 | + |
| 42 | +### Functional Requirements |
| 43 | + |
| 44 | +<!-- BEGIN FUNCTIONAL_REQUIREMENTS --> |
| 45 | +| ID | Requirement | Goals | Priority | Rationale | |
| 46 | +|----|-------------|-------|----------|-----------| |
| 47 | +| FR-01 | Implement the core user workflow identified in bearing research. | GOAL-01 | must | Converts research recommendation into executable product capability. | |
| 48 | +<!-- END FUNCTIONAL_REQUIREMENTS --> |
| 49 | + |
| 50 | +### Non-Functional Requirements |
| 51 | + |
| 52 | +<!-- BEGIN NON_FUNCTIONAL_REQUIREMENTS --> |
| 53 | +| ID | Requirement | Goals | Priority | Rationale | |
| 54 | +|----|-------------|-------|----------|-----------| |
| 55 | +| NFR-01 | Ensure deterministic behavior and operational visibility for the delivered workflow. | GOAL-01 | must | Keeps delivery safe and auditable during rollout. | |
| 56 | +<!-- END NON_FUNCTIONAL_REQUIREMENTS --> |
| 57 | + |
| 58 | +## Verification Strategy |
| 59 | + |
| 60 | +- Prove functional behavior through story-level verification evidence mapped to voyage requirements. |
| 61 | +- Validate non-functional posture with operational checks and documented artifacts. |
| 62 | + |
| 63 | +## Assumptions |
| 64 | + |
| 65 | +| Assumption | Impact if Wrong | Validation | |
| 66 | +|------------|-----------------|------------| |
| 67 | +| Bearing findings reflect current user needs | Scope may need re-planning | Re-check feedback during first voyage | |
| 68 | + |
| 69 | +## Open Questions & Risks |
| 70 | + |
| 71 | +| Question/Risk | Owner | Status | |
| 72 | +|---------------|-------|--------| |
| 73 | +| How should `keel mission request apply` behave when a request is exploratory rather than implementation-ready? | Planner | Open | |
| 74 | +| Which fields should be required on stdin versus derivable from provider metadata? | Planner | Open | |
| 75 | +| Should `ack` emit only provider-facing content or also a canonical audit record payload? | Planner | Open | |
| 76 | + |
| 77 | +## Success Criteria |
| 78 | + |
| 79 | +<!-- BEGIN SUCCESS_CRITERIA --> |
| 80 | +- [ ] Define the canonical `keel mission request template|parse|validate|draft|apply|ack` command family. |
| 81 | +- [ ] Define a provider-neutral request envelope that can be piped over stdin/stdout. |
| 82 | +- [ ] Define the minimum required inputs for GitHub issue activation and later provider expansion. |
| 83 | +- [ ] Define how Keeper and non-Keeper automation invoke the same Keel surface. |
| 84 | +<!-- END SUCCESS_CRITERIA --> |
| 85 | + |
| 86 | +## Research Analysis |
| 87 | + |
| 88 | +*From bearing assessment:* |
| 89 | + |
| 90 | +## Findings |
| 91 | + |
| 92 | + |
| 93 | +- A canonical mission-request CLI surface is already specified strongly enough to promote from research into strategic delivery work. [SRC-01] |
| 94 | +- Keeper and other automation need a scriptable command boundary instead of embedding provider parsing and mutation rules ad hoc. [SRC-01][SRC-02] |
| 95 | + |
| 96 | + |
| 97 | +## Opportunity Cost |
| 98 | + |
| 99 | + |
| 100 | +- Delaying this work keeps mission intake coupled to manual operator steps and blocks consistent provider composition in Keeper. [SRC-01][SRC-02] |
| 101 | + |
| 102 | + |
| 103 | +## Dependencies |
| 104 | + |
| 105 | + |
| 106 | +- The command surface should stay aligned with the provider-neutral mission request envelope already captured in the foundational bearing package. [SRC-01] |
| 107 | +- Keeper’s current CLI and runtime surface provide the execution context, but not yet the native request commands this mission is defining. [SRC-02] |
| 108 | + |
| 109 | + |
| 110 | +## Alternatives Considered |
| 111 | + |
| 112 | + |
| 113 | +- Keep mission-request handling inside Keeper-specific provider code. This was rejected because it would make GitHub-first ingress harder to generalize and would weaken the native Keel contract. [SRC-01][SRC-02] |
| 114 | + |
| 115 | +## Research Provenance |
| 116 | + |
| 117 | +*Source records from bearing evidence:* |
| 118 | + |
| 119 | +| ID | Class | Provenance | Location | Observed / Published | Retrieved | Authority | Freshness | Notes | |
| 120 | +|----|-------|------------|----------|----------------------|-----------|-----------|-----------|-------| |
| 121 | +| SRC-01 | manual | workspace | /home/alex/workspace/spoke-sh/keel/.keel/bearings/VDupml7OG/MISSION_REQUESTS.md | 2026-04-07 | 2026-04-07 | high | high | Existing research package already defines the candidate command family and normalized mission request envelope. | |
| 122 | +| SRC-02 | manual | workspace | /home/alex/workspace/spoke-sh/spoke/crates/keeper-cli/src/main.rs | 2026-04-07 | 2026-04-07 | medium | high | Current keeper-cli exposes only missions, start, and status commands, which leaves mission-request composition unimplemented. | |
| 123 | + |
| 124 | +--- |
| 125 | + |
| 126 | +*This PRD was seeded from bearing `VG6ggE3ud`. See `bearings/VG6ggE3ud/` for original research.* |
0 commit comments