Skip to content

feat: per-adapter sensitivity evidence line (issue #68) - #90

Merged
geuben merged 26 commits into
mainfrom
worktree-issue-68-sensitivity-evidence
Aug 29, 2026
Merged

feat: per-adapter sensitivity evidence line (issue #68)#90
geuben merged 26 commits into
mainfrom
worktree-issue-68-sensitivity-evidence

Conversation

@geuben

@geuben geuben commented Aug 29, 2026

Copy link
Copy Markdown
Owner

Summary

  • Fixes the sensitivity check's observed: evidence capturing the wrong output line on some runners (xdist worker headers, XCTest console noise)
  • Adds Verdict.target_evidence to each adapter: pytest extracts the first E-line of longrepr, xctest the first : error: line of the per-test window, gradle the first line of the <failure> message, vitest the first line of failureMessages[0], exec the last non-empty combined-output line
  • Schema v7: sensitivity_check.evidence_line TEXT stored at check time; render prefers it over the raw first line; empty evidence → <no assertion line captured> sentinel; NULL (legacy rows) → old first-line fallback; lines over 160 chars are tail-capped with

Commits

86db050 docs: friction log and PRD update for issue-68-sensitivity-evidence
146e153 feat: tail-keeping cap on the observed evidence line
e6d5235 test: an over-long observed line keeps its tail
a7004cc refactor: legacy rows with NULL evidence keep the first-line fallback
8e03088 feat: render the no-assertion-line sentinel instead of wire noise
8e68e09 test: empty evidence renders <no assertion line captured>
ddc6024 feat: friction log prefers evidence_line for the observed snippet
b2dc16f test: observed line shows evidence_line, not the raw first line
739ed8a refactor: sensitivity check stores the adapter's evidence line in the ledger
619c0bd feat: schema v7 — sensitivity_check.evidence_line stored at check time
53ad973 test: sensitivity check persists evidence_line on its ledger row
9012b32 refactor: exec evidence falls back to the last non-empty output line
78771ff feat: exec evidence falls back to the last non-empty line
1df55d5 test: exec evidence is the last non-empty combined-output line
bebee75 feat: gradle evidence extracted from the failure element's message
e0a5301 test: gradle evidence is the junit failure message line
248e550 feat: vitest evidence extracted from failureMessages[0]
3c0c019 test: vitest evidence is the first failureMessage line
1f1b40b refactor: xctest evidence is the error line, not interleaved console noise
5817c6a feat: xctest evidence is the first ': error:' line of the test's window
e04e009 test: xctest evidence line ignores console noise in the test window
dad64c6 test: pin empty pytest evidence when no E-line exists
b464cf7 refactor: pytest evidence is the assertion line, not the xdist worker header
a2b7ecb feat: Verdict.target_evidence — pytest extracts the first E-line of longrepr
a4be0c7 test: pytest evidence line skips the xdist worker header

Test coverage note

All decision-point operators in new code are covered by at least one test (pseudo-mutation analysis passed). 429 tests passed. Gates: uv run ruff check src tests (clean), uv run pytest (429 passed).

Plan fidelity

11/11 cycles declared and delivered, 0 skipped. 1 red_first_violation integrity event. 0 blockers, 0 human interventions.

Closes #68

geuben added 25 commits August 28, 2026 17:09
TDD-Run: 12
TDD-Cycle: 1
TDD-Phase: red
…ongrepr

TDD-Run: 12
TDD-Cycle: 1
TDD-Phase: green
… header

TDD-Run: 12
TDD-Cycle: 1
TDD-Phase: refactor
TDD-Run: 12
TDD-Cycle: 2
TDD-Phase: pin
…noise

TDD-Run: 12
TDD-Cycle: 3
TDD-Phase: refactor
TDD-Run: 12
TDD-Cycle: 4
TDD-Phase: red
TDD-Run: 12
TDD-Cycle: 4
TDD-Phase: green
TDD-Run: 12
TDD-Cycle: 5
TDD-Phase: red
TDD-Run: 12
TDD-Cycle: 6
TDD-Phase: green
TDD-Run: 12
TDD-Cycle: 6
TDD-Phase: refactor
… ledger

TDD-Run: 12
TDD-Cycle: 7
TDD-Phase: refactor
TDD-Run: 12
TDD-Cycle: 9
TDD-Phase: red
TDD-Run: 12
TDD-Cycle: 10
TDD-Phase: refactor
TDD-Run: 12
TDD-Cycle: 11
TDD-Phase: red
TDD-Run: 12
TDD-Cycle: 11
TDD-Phase: green
- Render friction log (11/11 cycles, 1 red_first_violation, 0 blockers)
- Extend tdd sensitivity check PRD row with per-adapter evidence line
- Update schema version to v7 in the storage section
@geuben
geuben merged commit 06047e2 into main Aug 29, 2026
10 checks passed
@geuben geuben mentioned this pull request Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

sensitivity check: observed evidence captures the wrong output line on some runners

1 participant