ADR-030: Coverage + Wrap DX Polish¶
Status¶
Proposed (March 2026)
Context¶
The current MCP governance spine is complete and working on main: - tool taxonomy and class-aware matching - coverage report contract + generator + wrap emission - session/state window contract + informational wrap export
B4 focuses on CLI/DX polish only. We need a small, low-risk contract for usability improvements without changing policy semantics or runtime enforcement.
Decision¶
Introduce a DX-only polish scope for coverage and wrap exports:
assay coverageadds format selection:--format json|md-
mdprovides a human-readable summary for PR/review workflows. -
assay coverageadds declared tools file input: --declared-tools-file <path>- File is one tool per line.
- Empty lines and comment lines (
# ...) are ignored. -
Values are unioned with repeated
--declared-toolflags. -
assay mcp wrapexport logging is consistent: --coverage-outwrites one stderr line in a stable style.--state-window-outwrites one stderr line in the same style.
Constraints (frozen)¶
- No schema changes (
coverage_report_v1andsession_state_window_v1stay unchanged). - No workflow or required-check changes.
- No behavior changes to enforcement paths.
- Exit precedence remains unchanged:
wrapped > coverage > state-window.
Error Handling (frozen)¶
- Input/contract parsing failures return exit code
2. - Output write failures return exit code
3. - Wrapped process exit remains authoritative.
Out of Scope¶
- Any policy DSL changes.
- Any state backend implementation.
- Any taint/semantic dataflow features.
- Any runtime behavior changes beyond DX output formatting and file-input ergonomics.
Acceptance Criteria (B4A)¶
- ADR-030 documents
--format mdand--declared-tools-file. - ADR-030 documents both
--coverage-outand--state-window-outlogging consistency. - ADR-030 documents exit-precedence invariants.
- Reviewer gate enforces docs-only scope + workflow ban.