Skip to content

REQ-021 is NOT satisfied by FEAT-065 alone — record why, before it looks it - #182

Merged
avrabe merged 1 commit into
mainfrom
req021-convergence-limit
Aug 27, 2026
Merged

REQ-021 is NOT satisfied by FEAT-065 alone — record why, before it looks it#182
avrabe merged 1 commit into
mainfrom
req021-convergence-limit

Conversation

@avrabe

@avrabe avrabe commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

With FEAT-065 now accepted, REQ-021 reads satisfiable and is not. The adjudication
machinery exists and is verified; the loop it promises cannot converge. Nothing on
the requirement said so — which is exactly how a future sweep promotes it.

Measured, by FEAT-065's own AC13 run

Four commit pairs of scry's history, ~13,800 obligations each:

discharged 0 on every real pair
gate FAILS on every real pair
uncertain ~47%, matching #123's measured 43–45% identity churn
stripped modules discharged unreachable by construction — FEAT-087 measured ident_survives_own_edit false for 10,520 of 10,520, and stripping is standard in release builds

The obstacle is precision, not adjudication

A correct div-by-zero repair guards with br_if on i32.eqz, establishing a
disequality — and an interval cannot represent one (#165). So the fix is invisible,
the agent is told the obligation still stands, and an agent gated on that re-fixes
working code.
That is the failure REQ-021 exists to prevent, reproduced by the thing
meant to prevent it.

What changes

  • the convergence limit is recorded on the requirement, not just in FEAT-065's ACs
  • FEAT-089 is now a typed depends-on rather than implicit in prose — the graph says
    what blocks what
  • explicit instruction not to promote REQ-021 on FEAT-065's acceptance

What would discharge it: FEAT-089 landing, then a re-measurement showing a genuine
fix reaching discharged on a shape an agent would actually write.

rivet=0 claim-check=0 drift-gate=0 fmt=0

🤖 Generated with Claude Code

https://claude.ai/code/session_01KkNzkNYzPh7366DkNijeNc

…oks it

With FEAT-065 now `accepted`, REQ-021 READS satisfiable and is not. The
adjudication MACHINERY exists and is verified; the LOOP it promises cannot
converge. Nothing on the requirement said so, which is how a future sweep
promotes it.

Measured by FEAT-065's own AC13 run over scry's history (4 commit pairs,
~13,800 obligations each):
  * `discharged` = 0 on every real pair
  * the gate FAILS on every real pair
  * ~47% `uncertain`, matching scry#123's measured 43-45% identity churn
  * on a STRIPPED module `discharged` is UNREACHABLE by construction (FEAT-087:
    ident_survives_own_edit false for 10,520 of 10,520), and stripping is
    standard in release builds

The obstacle is PRECISION, not adjudication. A correct div-by-zero repair guards
with `br_if` on `i32.eqz`, which establishes a disequality, and an interval
cannot represent one (scry#165) -- so the fix is invisible and the agent is told
the obligation still stands. An agent gated on that re-fixes working code, which
is the failure REQ-021 exists to prevent.

FEAT-089 is the unblocker, now recorded as a typed `depends-on` rather than left
implicit in prose. What would discharge REQ-021: FEAT-089 landing, then a
re-measurement showing a genuine fix reaching `discharged` on a shape an agent
would actually write.

rivet=0 claim-check=0 drift-gate=0 fmt=0.

Claude-Session: https://claude.ai/code/session_01KkNzkNYzPh7366DkNijeNc

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@temper-pulseengine

Copy link
Copy Markdown

Automated review for PR #182

pulseengine/scry:req021-convergence-limit → pulseengine/scry:main

Verdict: 💬 Comment

Summary: Adds requirement documentation and records convergence limit.

Findings: 0 mechanical (rivet) · 2 from local AI model.

Findings (2):

  1. artifacts/roadmap-3.0.yaml:307

          tags: [ai-agent, oracle, fix-verify-loop, gate, adversarial, v3.4]
    

    REQ-021 is NOT satisfied by FEAT-065 alone.

  2. artifacts/roadmap-3.0.yaml:318

          links:
    

    REQ-021 is NOT satisfied by FEAT-065 alone.


Generated by a local AI model and post-validated against a strict JSON contract. Each finding includes the verbatim line being criticised — verify by reading the file at the cited location.

Reviewed at e0ad9d9

@github-actions

Copy link
Copy Markdown

📐 rivet artifact delta

PR: #182 Base SHA: 6fa38896

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 (163 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 (162 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 263 263
full stats — head
Artifact summary:
  academic-reference               24
  competitive-analysis             11
  design-decision                  22
  feature                          93
  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                           263

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), 163 warning(s), 26 info(s)

Diff (base → head)

~ REQ-021
  description: changed
  link: + depends-on -> FEAT-089

0 added, 0 removed, 1 modified, 262 unchanged

~ NEW    WARN: [REQ-021] prose mentions 'FEAT-087' but no typed link to it; add a link in `links:` or remove the mention
0 new errors, 0 resolved errors, 1 new warnings, 0 resolved warnings

AADL model — head

spar/scry.aadl: OK

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

@avrabe
avrabe merged commit a91ecbe into main Aug 27, 2026
13 checks passed
@avrabe
avrabe deleted the req021-convergence-limit branch August 27, 2026 15:22
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