Skip to content

fix(testing): the E2E board published 12 divergences that do not exist - #423

Merged
beyondnetPeru merged 1 commit into
developfrom
fix/e2e-board-stale-evidence
Aug 4, 2026
Merged

fix(testing): the E2E board published 12 divergences that do not exist#423
beyondnetPeru merged 1 commit into
developfrom
fix/e2e-board-stale-evidence

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

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, not argued.

The defect is in this board, not in the product

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

Hypothesis Refuted by
Classification drift rego ↔ TS map (the GT-602 shape) All twelve tools are classified, all as read_tools
A role the policy does not know reader needs no named role — read tools allow any role
A missing/mismatched scope None of the twelve declares one; requiredScope resolves to read
A harness that never authenticates It starts the server with allowNoAuth: true → READER_CONTEXT

The message was in howto-capture.json the whole time. Reading it first would have cost four fewer steps.

Not changed here

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 those files are left untouched.

Guard Result
ci-runner.mjs governance ✅ 17 scripts
generate-e2e-scenario-board --check ✅ current
gitleaks dir . ✅ exit 0

🤖 Generated with Claude Code

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:23
@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 1bbd4a2 into develop Aug 4, 2026
31 checks passed
@beyondnetPeru
beyondnetPeru deleted the fix/e2e-board-stale-evidence branch August 4, 2026 13:28
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