Skip to content

chore(sync): develop → main — E2E board stale-evidence fix - #424

Merged
beyondnetPeru merged 1 commit into
mainfrom
develop
Aug 4, 2026
Merged

chore(sync): develop → main — E2E board stale-evidence fix#424
beyondnetPeru merged 1 commit into
mainfrom
develop

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

Brings #423 to main. The E2E scenario board published 12 "cross-surface divergences" that do not exist: they came from a capture made by a run whose MCP OPA engine crashed for want of --experimental-vm-modules, so every tools/call fail-closed. Re-run correctly, the suite reports zero.

The board now stamps its measurement time, so a stale capture cannot read as observed fact.

🤖 Generated with Claude Code

#423)

They were not product defects. All twelve had one shape — MCP FORBIDDEN
while CLI and REST succeeded — and the message names the cause:

  Native: []. OPA: [OPA_ERROR: ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING_FLAG:
  A dynamic import callback was invoked without --experimental-vm-modules]

Native ABAC raised NO violation. The OPA engine could not load its wasm
for want of a Node flag, and dispatch requires both engines to allow, so
every `tools/call` fail-closed. The capture that produced them was made
on 2026-08-03 at 09:56 by a run launched WITHOUT that flag; `npm run
test:exploration` does pass it. Re-run through the npm script, the same
suite reports ZERO findings — measured here, not argued.

So the defect is mine, in what this board did with its input. It rendered
a stale capture with no indication of age, and twelve non-existent
divergences read as observed fact. A derived artifact exists to make
exactly that impossible.

`coverage.json` carries no timestamp of its own, so the page now stamps
the file's mtime and names the command that produces it. A reader can see
the measurement predates the tree it describes.

Four hypotheses died on the way and none was the answer: classification
drift between the rego and the TS map (all twelve tools ARE classified),
a role the policy does not know (`reader` needs no named role for read
tools), a missing scope (none of the twelve declares one), and a harness
that never authenticates (it starts the server with `allowNoAuth`). The
message was in `howto-capture.json` the whole time; reading it first
would have cost four fewer steps.

Not changed here, and worth its own look: the exploration suite is red on
this machine for an unrelated and ALREADY RECORDED reason — the how-to
capture embeds rule ids that differ by environment (`DRIFT-01` on the
runner, `INH-03` here), documented in GT-650. Regenerating locally fixes
one half and breaks the other, so the files are left untouched.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner August 4, 2026 13:28
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

📊 Bilingual Coverage Impact

PR Changes

  • Paired EN/ES files modified: 1
  • New EN files needing ES translation: 0

Repository Coverage

Metric Value
Total EN files 527
Total ES files 501
Paired files 0
Coverage 0%

Good: All EN changes have ES counterparts.


Generated by GitHub Actions

@beyondnetPeru
beyondnetPeru merged commit d09e874 into main Aug 4, 2026
62 of 63 checks passed
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