Skip to content

feat(ops): the panel render gate — dead-widgets-zero wired into deploy-gate.sh (#1804) - #1805

Merged
aarontrowbridge merged 1 commit into
live-test/stack-e2efrom
opencode/issue-1804-panel-gate
Oct 17, 2026
Merged

aarontrowbridge merged 1 commit into
live-test/stack-e2efrom
opencode/issue-1804-panel-gate

Conversation

@aarontrowbridge

Copy link
Copy Markdown
Member

Closes #1804.

The binding of product judgment to execution: acceptance measured in what the panel renders, not what the tree contains.

  • ops/hub/panel-gate.mjs — the repo-owned probe: boots the real panel through the frontdoor, settles, asserts (1) composer renders, (2) zero stuck loading states past settle, (3) no per-URL poll loop above 1 req/s in any sliding second, (4) every 4xx/5xx carries a documented honest-absence reason (reason-checked — the no-fleet-peers fallback passes, a bare 404 from a shipped surface fails).
  • deploy-gate.sh --panel-gate — runs it as part of the battery, shipping the module to the harness at gate time (no machine-owned gate code drifts from the discipline). Fails closed: exit 1 = the dist does not ship.

Verified both ways: PASS against the live lane build (99 requests, 0 4xx/5xx, composer rendered, zero spinners, no loops); FAIL on constructed bad signatures — all three detectors exercised (stuck animate-spin past settle; 53-requests-in-8s poll loop named with the sliding-second evidence; unexplained 404 from a shipped surface, body-checked).

Per the directive: this gate runs as part of every deploy ritual until it is wired into the script — now it is. The lockstep surfaces return when #1803's ports wire their feeds, by port work, never by deploy decision.

…y-gate.sh (#1804)

After any dist swap, the headless probe boots the REAL panel through the
frontdoor and asserts the composer renders, zero stuck loading states past
the settle window, no per-URL poll loop above 1 req/s, and every 4xx/5xx
carries a documented honest-absence reason. The module is repo-owned and
shipped to the harness at gate time — no machine-owned gate code.

Acceptance is what the panel renders, not what the tree contains. The
standing constraint (no surface ships without live data) becomes mechanical:
dead-widgets-zero or the dist does not ship. Detectors exercised on
constructed bad signatures (spinner, poll loop, unexplained 404 — all three
fail closed) and passing against the live lane build (99 requests, 0 4xx/5xx).
@coderabbitai

coderabbitai Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 1673583a-1367-492c-a652-2b4f572e2ac4

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge merged commit e21ad4b into live-test/stack-e2e Oct 17, 2026
10 of 12 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