docs: establish staged feature planning workflow

This commit is contained in:
2026-09-07 17:14:21 +00:00
parent 0349682eb9
commit 4e861f1f3e
4 changed files with 155 additions and 22 deletions

View File

@@ -33,6 +33,8 @@ remotes.
## Sources of Truth
- `docs/roadmap/mvp.md`: settled MVP scope, architecture, and open design work.
- `docs/roadmap/features/`: durable scope and target state for selected units
of work.
- `docs/status.md`: current cross-repository progress and next work.
- `docs/decisions/`: durable rationale for significant architectural choices.
- `docs/plans/`: temporary implementation plans for substantial work.
@@ -68,10 +70,27 @@ link and a concise deployment consequence are sufficient.
- Update `docs/roadmap/mvp.md` when a design question becomes a settled scope
or architecture decision.
- Discuss and select the next unit of work before planning implementation.
- Give each selected feature a four-digit identifier and matching documents at
`docs/roadmap/features/<id>-<slug>.md` and
`docs/plans/<id>-<slug>.md`. Add the same identifier to `docs/status.md`.
- Write and agree on the feature roadmap before writing its implementation
plan. The roadmap owns scope, target end state, rationale, constraints, and
acceptance criteria.
- Write implementation plans as dependency-ordered stages suitable for
GPT-5.6-Terra to execute sequentially. Number stages with consecutive
integers beginning with `Stage 1`; do not skip numbers or use nested stage
numbering. Each stage must identify its repository, preconditions, required
behavior, validation, completion criteria, and expected commit.
- Resolve architectural choices during roadmap and plan review. Do not leave
unresolved design judgment to the implementation agent.
- Update `docs/status.md` when cross-repository work starts, becomes blocked,
or is completed. Completed items must point to concrete evidence.
- Create a file in `docs/plans/` only for work spanning multiple meaningful
steps or repositories. Remove or archive stale execution detail after the
work is complete; durable rationale belongs in `docs/decisions/`.
- Out-of-band implementation should commit each completed stage when that
stage leaves its owning repository valid. Review the implementation and its
validation evidence before marking the feature complete.
- Retain feature roadmaps as durable records. Remove or archive obsolete
implementation detail after completion; durable architectural rationale
belongs in `docs/decisions/`.
- Use the status values `proposed`, `ready`, `in_progress`, `blocked`, `done`,
and `deferred`.

View File

@@ -13,7 +13,11 @@ only workspace documentation, planning, and shared development utilities.
development.
- [`docs/roadmap/mvp.md`](docs/roadmap/mvp.md) records settled MVP decisions
and open design work.
- [`docs/roadmap/features/`](docs/roadmap/features/) contains durable feature
roadmaps for selected units of work.
- [`docs/status.md`](docs/status.md) records current cross-repository progress.
- [`docs/plans/template.md`](docs/plans/template.md) defines the staged format
used for out-of-band implementation.
Run `./scripts/status` to see the branch and working-tree state of every
repository in the workspace manifest.

View File

@@ -1,37 +1,98 @@
# Plan: <Title>
# Implementation Plan <ID>: <Title>
Status: proposed
## Goal
Target executor: GPT-5.6-Terra
State the outcome this plan must achieve.
Feature roadmap: `docs/roadmap/features/<id>-<slug>.md`
## Non-goals
## Objective
List adjacent work that is intentionally outside this plan.
Summarize the implementation outcome. The feature roadmap remains authoritative
for scope, rationale, target end state, and acceptance criteria.
## Owning Repositories
## Execution Rules
List every repository this work may change and what each repository owns.
- Execute stages in numeric order.
- Number stages with consecutive integers beginning with `Stage 1`. Do not use
zero-based, decimal, nested, or nonsequential stage identifiers.
- Before each stage, confirm its preconditions and the working-tree state of
its owning repository.
- Preserve unrelated and pre-existing changes.
- Do not make unresolved product or architecture decisions during execution;
stop and report the decision required.
- Run every stage's validation before committing it.
- Commit each completed stage when it leaves the repository in a valid state,
using the commit intent specified by that stage.
- Do not begin a dependent stage after an earlier stage fails validation.
## Dependencies and Settled Decisions
## Starting State and Preconditions
Link applicable roadmap sections and decision records. Record prerequisites
that constrain implementation.
- List required branches, revisions, tools, dependencies, and prior features.
- Identify expected clean or intentionally dirty working trees.
## Acceptance Criteria
## Repository Scope
- Define observable conditions for completion.
- List every repository that may change and the changes it owns.
- List repositories that may be inspected but must remain unchanged.
## Implementation Sequence
## Stage 1: <Independently Verifiable Outcome>
1. Describe the first independently verifiable step.
### Objective
## Validation
State the single outcome delivered by this stage.
List the commands, tests, or inspections that demonstrate completion.
### Preconditions
## Progress
- List facts that must be true before editing begins.
Keep only concise current state and blockers here. Git history should preserve
obsolete execution detail.
### Owning Repository
`<repository path>`
### Required Changes
1. Describe concrete behavior to implement, including relevant files or
components where known.
2. State invariants, compatibility requirements, and explicit exclusions.
### Validation
Run:
```text
<exact validation command>
```
Expected result: describe the required observable outcome, not merely a zero
exit code.
### Completion Criteria
- List the evidence required before this stage is complete.
### Commit
Commit intent: `<type and concise purpose>`
## Stage 2: <Next Independently Verifiable Outcome>
Repeat the complete stage structure above. Add, remove, or split stages so
each is ordered by dependency, reviewable on its own, and small enough to
diagnose without repeating unrelated work. Continue with `Stage 3`, `Stage 4`,
and subsequent consecutive integers as needed.
## Final Validation and Handoff
- Run cross-stage and cross-repository validation required by the feature
roadmap.
- Confirm every changed repository is clean and identify all resulting commit
hashes.
- Summarize deviations from this plan, unresolved findings, and deferred work.
- Do not mark the feature `done`; implementation results require review first.
## Progress Notes
Keep only concise current state, completed stage references, and blockers here.
Git history and implementation commits should preserve detailed execution
evidence.

View File

@@ -0,0 +1,49 @@
# Feature <ID>: <Title>
Status: proposed
## Summary
State the selected unit of work and the outcome it enables.
## Problem or Opportunity
Describe why this feature is needed and the current limitation it addresses.
## Scope
- List behavior and deliverables included in this feature.
## Non-goals
- List adjacent behavior intentionally excluded from this feature.
## Target End State
Describe the observable repository, deployment, and operator state after the
feature is complete. Keep this independent of the implementation sequence.
## Repository Ownership
Identify every repository involved and the durable responsibility each one
owns. Distinguish repositories that will change from read-only sources of
application contracts.
## Constraints and Settled Decisions
Link the MVP roadmap and applicable decision records. Record technical or
operational constraints that implementations must preserve.
## Rationale and Alternatives
Explain material tradeoffs and why the selected end state is preferred. Omit
this section when the choice is mechanical and needs no durable rationale.
## Acceptance Criteria
- Define observable, testable conditions required for feature completion.
## Dependencies and Follow-up Work
List prerequisites and explicitly deferred work without expanding this
feature's scope.