Skip to content

Repair a claim that was true when written and false for months after - #198

Merged
avrabe merged 1 commit into
mainfrom
fix-drifted-verifies-claim
Sep 1, 2026
Merged

Repair a claim that was true when written and false for months after#198
avrabe merged 1 commit into
mainfrom
fix-drifted-verifies-claim

Conversation

@avrabe

@avrabe avrabe commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

The drift

artifacts/aspice-vmodel.yaml said:

the dev REQ-* carry no verifies link by construction

Measured today: 15 of 21 dev requirements carry an incoming verifies, every one from a verification artifact (VER-001..VER-015). The statement is false.

It was true when written. At bea3ddf (FEAT-033) no artifact type could source a verifies link onto a dev REQ-* — that was precisely the gap FEAT-033 existed to close. Then 6be7359 added artifacts/verifications.yaml"wire the dev V's right side — 15/21 REQs verified, 6 honestly open" — whose artifacts link straight at the dev REQ-*. Nothing revisited this comment. It stayed checked in, false, for months.

The replacement carries no count

Writing "15 of 21" would drift the same way, just more slowly. The comment now states the structure — dev REQ-* are verified by verification artifacts in verifications.yaml, whose DELIBERATELY UNCOVERED block names each gap with what evidence would close it — and points at rivet coverage for the current split rather than restating it.

How it survived me yesterday

FEAT-097 (#196) repaired a corrupted sentence one line above this one. I was editing for a different defect and treated the surrounding prose as given, so I rewrote its neighbour and propagated this verbatim.

Proximity to a thing you are fixing is not evidence that a claim is true. A false statement adjacent to a repair is likelier to be re-blessed than one nobody is looking at.

Checked for other copies first

Fixing only the copy I happened to be reading would be the same failure shape as the one being corrected:

  • carry no verifies link — appears exactly once in the repo
  • FEAT-033's description states it in the past tense ("requirements had no verifies backlinks") — still historically accurate, left alone
  • the residuals added yesterday to FEAT-033 and FEAT-097 do not repeat it

No gate added — and that is a decision, not an omission

The six uncovered requirements (REQ-003/004/005/007/020/021) are already declared individually in verifications.yaml, each with a "Would verify:" naming the evidence that would close it. That block sits directly above the data it describes.

Binding it mechanically would mean scraping ^#\s+(REQ-\d+) out of a YAML comment — this repo's dominant documented failure class (four instances of text-matching when the question is discrimination) — deployed to guard a block whose own editor is already looking at it. Bad trade.

rivet coverage --fail-under was also considered and rejected: set below the current value it is #117's loose floor; set at it, any legitimate artifact addition that shifts the denominator fails.

Refs: FEAT-097

🤖 Generated with Claude Code

https://claude.ai/code/session_01KkNzkNYzPh7366DkNijeNc

artifacts/aspice-vmodel.yaml said "the dev REQ-* carry no verifies link
by construction". Measured today: 15 of 21 dev requirements carry an
incoming `verifies`, every one of them from a `verification` artifact.
The statement is simply false.

It was TRUE when FEAT-033 landed (bea3ddf) — no artifact type could
source a `verifies` link onto a dev REQ-*, which is the gap FEAT-033
existed to close. Commit 6be7359 then added artifacts/verifications.yaml
("wire the dev V's right side — 15/21 REQs verified, 6 honestly open"),
whose `verification` artifacts link straight at the dev REQ-*. Nothing
revisited this comment. It stayed checked in, false, for months.

THE REPLACEMENT CARRIES NO COUNT. Writing "15 of 21" would drift exactly
the same way, just more slowly. The comment now states the STRUCTURE —
dev REQ-* are verified by `verification` artifacts in
verifications.yaml, whose DELIBERATELY UNCOVERED block names each gap
with what evidence would close it — and points at `rivet coverage` for
the current split rather than restating it.

HOW IT SURVIVED ME YESTERDAY, which is the reusable part. FEAT-097 (#196)
repaired a corrupted sentence one line above this one. I was editing for
a different defect and treated the surrounding prose as given, so I
rewrote its neighbour and propagated it verbatim. Proximity to a thing
you are fixing is not evidence that a claim is true; a false statement
adjacent to a repair is likelier to be re-blessed than one nobody is
looking at.

Checked for other copies before fixing the one I happened to be reading:
`carry no verifies link` appears exactly once in the repo, and FEAT-033's
own description states it in the PAST tense ("requirements had no
verifies backlinks"), which is still historically accurate. The residuals
added yesterday to FEAT-033 and FEAT-097 do not repeat it.

NO GATE ADDED, and that is a decision. The six uncovered requirements are
already declared individually in verifications.yaml with a "Would verify"
for each — the best artifact in this repo for its purpose — and it sits
directly above the data it describes. Binding it mechanically would mean
scraping `^#\s+(REQ-\d+)` out of a YAML comment, which is this repo's
dominant documented failure class (four instances of text-matching when
the question is discrimination) deployed to guard a block its own editor
is already looking at. `rivet coverage --fail-under` was also considered
and rejected: below the current value it is scry#117's loose floor, at it
any legitimate artifact addition that shifts the denominator fails.

Refs: FEAT-097

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KkNzkNYzPh7366DkNijeNc
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown

📐 rivet artifact delta

PR: #198 Base SHA: d0a9b830

Validation

head — `rivet validate` result
  SR-11 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-12 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-13 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-2 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-3 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-4 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-5 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-6 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-7 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-8 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-9 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SYS-1 (system-req, status: accepted) — missing: sys-integration-verification
  SYS-2 (system-req, status: accepted) — missing: sys-integration-verification
  SYS-3 (system-req, status: accepted) — missing: sys-integration-verification
  SYS-4 (system-req, status: accepted) — missing: sys-integration-verification
  SYS-5 (system-req, status: accepted) — missing: sys-integration-verification
  → run `rivet validate --explain SR-1` to see which link type and source types satisfy a gap

Result: PASS (186 warnings)
Schemas: common@0.3.0 (embedded), dev@0.3.0 (embedded), research@0.1.0 (embedded), research-ext@0.1.0 (on-disk), safety-case@0.1.0 (embedded), aspice@0.2.0 (embedded)
base — `rivet validate` result (for comparison)
  SR-11 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-12 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-13 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-2 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-3 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-4 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-5 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-6 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-7 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-8 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SR-9 (sw-req, status: accepted) — missing: sw-integration-verification, unit-verification
  SYS-1 (system-req, status: accepted) — missing: sys-integration-verification
  SYS-2 (system-req, status: accepted) — missing: sys-integration-verification
  SYS-3 (system-req, status: accepted) — missing: sys-integration-verification
  SYS-4 (system-req, status: accepted) — missing: sys-integration-verification
  SYS-5 (system-req, status: accepted) — missing: sys-integration-verification
  → run `rivet validate --explain SR-1` to see which link type and source types satisfy a gap

Result: PASS (186 warnings)
Schemas: common@0.3.0 (embedded), dev@0.3.0 (embedded), research@0.1.0 (embedded), research-ext@0.1.0 (on-disk), safety-case@0.1.0 (embedded), aspice@0.2.0 (embedded)

Artifact stats

base head
Total artifacts 267 267
full stats — head
Artifact summary:
  academic-reference               24
  competitive-analysis             11
  design-decision                  22
  feature                          97
  market-finding                    7
  requirement                      21
  safety-context                    3
  safety-goal                       5
  safety-justification              4
  safety-solution                   6
  safety-strategy                   1
  stakeholder-req                   3
  sw-req                           13
  sw-verification                  13
  sys-verification                  5
  system-req                        5
  technology-evaluation            12
  verification                     15
  TOTAL                           267

Orphan artifacts (no links): 12
  CA-001
  CA-002
  CA-003
  CA-004
  CA-005
  CA-006
  CA-007
  CA-008
  CA-009
  CA-010
  CA-011
  FEAT-078

Diagnostics: 0 error(s), 186 warning(s), 31 info(s)

Diff (base → head)


0 added, 0 removed, 0 modified, 267 unchanged

AADL model — head

spar/scry.aadl: OK

Posted by the rivet-delta workflow. Informational only — does not gate the PR.

@avrabe
avrabe merged commit a169048 into main Sep 1, 2026
13 checks passed
@avrabe
avrabe deleted the fix-drifted-verifies-claim branch September 1, 2026 18:35
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.

1 participant