feat: add DD-078 evidence report ledger - #179
Conversation
Greptile SummaryThis PR implements the
Confidence Score: 5/5Safe to merge. All changes are additive and backward-compatible through IdMode::Compatibility, covered by 2,009 nextest cases plus focused report and schema-validation tests. The ledger model, exit-code logic, coverage projection, and both renderers are thoroughly tested. The previously flagged issues are verifiably fixed at this head with regression tests covering both paths. No new correctness issues were identified. Files Needing Attention: No files require special attention.
|
| Filename | Overview |
|---|---|
| src/verification/report.rs | New 3,940-line RunReport evidence ledger with coverage projection, threshold evaluation, exit-code logic, and both human renderers. Previously flagged issues resolved and covered by tests. |
| src/intent.rs | Extends Feature/Scenario with StableId fields; wires id:/verification:/rationale: parsing with duplicate detection; backward-compatible via IdMode::Compatibility. |
| src/main.rs | Replaces ad-hoc summary arithmetic with RunReport, adds --json/--min-* flags to intent coverage, removes ~250 lines of redundant output code. |
| tests/verification_truth_tests.rs | New 394-line test file covering duplicate ID detection, malformed IDs, strict/compat mode, and truth model obligation linkage. |
| tests/intent_studio_tests.rs | Replaces old JSON assertions with schema-validated RunReport, adds human-output LINKED/UNLINKED regression test, legacy feature ID coverage test, and threshold flag integration test. |
| tests/fixtures/verification/reports/schema-v1.json | Committed JSON Schema (draft 2020-12) for RunReport v1; strict (additionalProperties: false) and used in integration tests. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[intent check / intent coverage] --> B{profile}
B -->|live execution| C[run_compatibility_live]
B -->|implementation| D[implementation_coverage]
C --> C1[run_tests_against_server]
C1 --> C2[from_live_results]
C2 --> C3[assemble]
D --> D1[generate_coverage_report]
D1 --> D2[from_implementation_coverage]
D2 --> D3[from_truth → assemble]
C3 --> E[RunReport]
D3 --> E
E --> F{output}
F -->|--json| G[serde_json stdout]
F -->|human| H{implementation profile?}
H -->|yes| I[render_implementation_human LINKED/UNLINKED]
H -->|no| J[render_human PASS/FAIL/DOCS]
Reviews (3): Last reviewed commit: "fix: report implementation coverage trut..." | Re-trigger Greptile
… into feat/dd078-slice-1b-evidence-report
Summary
Implements DD-078 Task/Slice 1B on top of Slice 1A (#178):
RunReportevidence ledger and committed schema v1;intent check --jsonandintent coverage --jsonplus implementation/executable/verified thresholds;Truth guarantees
@implements/linkage metadata cannot prove execution.Validation
Exact head:
296c0a6bd747e92830a9b4333d95393addb7bbe9cargo fmt --checkcargo test --libRUST_MIN_STACK=8388608 cargo nextest run— 2,009/2,009 passedRUST_MIN_STACK=8388608 cargo test --doccargo build --profile dev-releasegit diff c3d179e...HEAD --checkReview notes
This is a stacked PR. Its base is
feat/dd078-slice-1a-truth-model/ #178, notmain.JUnit, project discovery, policy/grants, planning, execution providers, fixtures/resources, and later DD-078 slices remain out of scope.