Files
kandev/docs/specs/guide/traceability-and-lifecycle.md
T
2026-08-24 21:30:53 +00:00

74 lines
2.7 KiB
Markdown

# Traceability and Lifecycle
## Traceability chain
Kandev uses this traceability chain:
```text
REQ -> AC -> system design -> work order -> test
```
Requirements own product behavior. System designs own the technical path. Work
orders own implementation scope. Tests provide executable evidence.
## References
A system design lists its `REQ-*` references in frontmatter. A work order lists
the applicable `REQ-*` and `AC-*` identifiers and its system-design paths.
Use an `@covers AC-...` annotation in a test name or nearby comment when the
mapping is not clear from the test location. Do not add a second coverage ID
unless a tool requires one.
Do not copy requirement text into a system design or work order. If an isolated
execution environment needs the text, generate a snapshot and record the source
commit.
## Status values
System indexes use `draft`, `active`, or `retired`. Their `migration` field uses
`in_progress` or `complete`.
Requirement documents use:
- `draft`: The behavior is not yet accepted.
- `active`: The behavior is the current product contract.
- `deprecated`: The behavior remains documented during removal or transition.
System-design documents use:
- `draft`: The technical design is not yet accepted.
- `current`: The design describes the current intended system.
- `superseded`: Another design replaced this design.
Work orders use `pending`, `in_progress`, `blocked`, `done`, or `cancelled`.
Implementation state does not change a requirement document from `active` to
`shipped`. Delivery state belongs to plans, work orders, and coverage evidence.
## Stable identities
Requirement and acceptance-criterion IDs do not change when a file moves. Do
not reuse removed IDs. A replacement requirement references the requirement
that it supersedes.
## Migration
Migrate one system at a time. Use this sequence:
1. Create the system `README.md`, define its boundary, and set
`migration: in_progress`.
2. Inventory the legacy specifications that the system owns.
3. Extract observable behavior into requirement documents.
4. Extract technical contracts and design into system-design documents.
5. Add stable IDs and cross-references.
6. Name the new documents as authoritative in the system index.
7. Add a short link to the system `README.md`, or archive the legacy document
outside `docs/specs/<system>/`.
8. Set `migration: complete` and remove obsolete size exceptions.
Do not keep two editable sources of truth during migration.
Do not mark migration complete while requirement files contain generic criteria
that defer to copied legacy prose. Extract observable behavior into `AC-*` IDs.
Move technical facts into system designs, then remove the copied source detail.