Skip to content

feat(testing): an E2E scenario board, derived from the runs rather than written - #421

Merged
beyondnetPeru merged 1 commit into
developfrom
feat/e2e-scenario-board
Aug 4, 2026
Merged

feat(testing): an E2E scenario board, derived from the runs rather than written#421
beyondnetPeru merged 1 commit into
developfrom
feat/e2e-scenario-board

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

The Core's cross-surface explorer and the Tracker's RoboSoft robots each emit machine-readable evidence, into two places, and nobody reads them together. This renders both onto one page.

It is not a second backlog

That line is the point. gap-tracking.md stays the only place a defect's status lives. This page owns which scenarios exist, which ran, what was observed and cites GT-NNN without ever owning one. Two pages claiming truth about one defect drift, and the drift is always found late — which is what that board spends its time catching.

Derived, not maintained

Same reasoning as the interface how-to, which is generated from live capture: a hand-written matrix is stale the first time a suite changes and nobody remembers the file.

Deliberately NOT wired into the derived-artifact chain (guard 46). Both inputs are gitignored and exist only after a local run, so a fresh CI checkout has none — and a chain link nobody can satisfy is a gate that gets routed around. Instead each section states when it was measured and from which run, and a missing input renders as NOT RUN, which is a different statement from "nothing failed".

Two wrong readings, both pinned

The RoboSoft evidence was misread twice before this landed:

  1. c.ok — a field it does not emit. undefined !== false is true, so every check counted as a pass.
  2. Treating every soft check as its own bucket — but a soft check that passed belongs under passed; soft is reserved for one that failed and was downgraded to non-blocking. Measured: 226 pass+hard, 3 pass+soft, 1 fail+soft, 0 fail+hard → the runner's 229/0/1.

The page now carries a reconciliation banner that fires when per-robot sums disagree with the run's own totals. It is what caught the second reading.

What it says today

Source Result
Core — cross-surface 73 operations declared · 48 bound and executed · 66 invocations · 4 declared on all three surfaces and never reached · 12 consistency observations (5 P1, 7 P2)
Tracker — RoboSoft 229 passed · 0 failed · 1 soft, across 10 robots against a live cluster

The 12 observations are worth a look on their own: the surfaces disagree on success for the same operation (gate-evaluate, sdlc-status, validate-satellite, dora-metrics, agents-list at P1). They are not registered as gaps here — that is the board's job and a separate, human-reviewed step.

Guard Result
ci-runner.mjs governance ✅ 17 scripts
04-check-bilingual-parity ✅ 1653 files, 527 EN docs
--check mode ✅ current

🤖 Generated with Claude Code

…an written

The Core's cross-surface explorer and the Tracker's RoboSoft robots each
emit machine-readable evidence, into two places, and nobody reads them
together. This renders both onto one page.

It is NOT a second backlog, and the line is the point. `gap-tracking.md`
stays the only place a defect's status lives; this page owns "which
scenarios exist, which ran, what was observed" and CITES GT ids without
ever owning one. Two pages claiming truth about one defect drift, and the
drift is always found late — which is what that board spends its time
catching.

Derived rather than maintained, for the same reason the interface how-to
is generated from live capture: a hand-written matrix is stale the first
time a suite changes and nobody remembers the file.

Deliberately NOT wired into the derived-artifact chain (guard 46). Both
inputs are gitignored and exist only after a local run, so a fresh CI
checkout has none — and a chain link nobody can satisfy is a gate that
gets routed around. Instead each section states when it was measured and
from which run, and a missing input renders as "NOT RUN", which is a
different statement from "nothing failed".

Two readings of the RoboSoft file were wrong before this one, and both
are pinned in comments: `c.ok` is a field it does not emit (so
`undefined !== false` counted every check as a pass), and a soft check
that PASSED belongs under `passed` — `soft` is reserved for one that
failed and was downgraded. The page now carries a reconciliation banner
that fires when the per-robot sums disagree with the run's own totals; it
is what caught the second reading.

What it says today: Core 73 operations declared, 48 bound and executed
across 66 invocations, 4 declared on all three surfaces and never
reached, and 12 consistency observations (5 P1, 7 P2) — the surfaces
disagree on success for the same operation. Tracker 229/0/1 across 10
robots against a live cluster.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner August 4, 2026 04:43
@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 24de68f into develop Aug 4, 2026
31 checks passed
@beyondnetPeru
beyondnetPeru deleted the feat/e2e-scenario-board branch August 4, 2026 04:48
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