Skip to content

spec(tri): dev_view -- which surface shows the course HUD, pod rules - #13341

Merged
cursor[bot] merged 7 commits into
masterfrom
claude/competent-panini-23efda
Nov 9, 2026
Merged

cursor[bot] merged 7 commits into
masterfrom
claude/competent-panini-23efda

Conversation

@gHashTag

@gHashTag gHashTag commented Nov 8, 2026 •

Copy link
Copy Markdown
Collaborator

Refs #13251

What

specs/tri/dev_view.t27 (module TriDevView) holds the rules for which surface the tri dev flow uses to show the course HUD. No earlier spec covers this: the four specs/automation/browser-*.t27 specs and specs/t27os/browser_ws.t27 deal with booting the viewer, restarting the pod, sign-in, tab strips and the DSH bridge.

Rule Function Negative control
The Browser pane is the default. The pod is used only when the Docker daemon answers and the owner has allowed heavy runs on the Mac viewer_for, viewer_now either gate alone still gives the pane
The pod opens http://host.docker.internal:8027/hud_NN.png, because the pod cannot reach the host's 127.0.0.1 hud_url the pod URL never contains 127.0.0.1 or localhost; frame 100 and an unknown viewer give an empty URL
The CDP port is never published port_may_publish 9223 and 9222 are refused; 8080 and the mux port are allowed only on loopback
One pod per dev session, named browser-<session> pod_name, pod_step unsafe session names give an empty name; a second running pod gives REFUSE
Health: the pod answers on 8080 within 15 s. A timeout is WAITING_RESOURCE, not FAIL health, health_word FAIL only when the pod never started

Finding (observed in 999-multibots-telegraf, read only)

pod-driver.ts dockerDriver breaks rule 3 in three ways today:

  • it publishes the CDP bridge (127.0.0.1:0:9223)
  • it binds 8080 on all interfaces (0:8080)
  • it always mounts the profile volume

The spec records these as DOCKER_DRIVER_* constants, and dev_pod_may_use_docker_driver() is false. A dev pod needs a driver option in 999 before it can start.

Gates (run in a T27 OS pane, not the Mac shell)

  • t27c test-report specs/tri/dev_view.t27: 12 tests, 12 pass, FAIL 0, vacuous 0 of 12, 1 invariant proved
  • t27b test specs/tri/dev_view.t27 --check: 12 passed, 0 failed, 59 runtime asserts, 1 invariant held, RC 0

Open

  • Seal. No seal yet. It needs a master-built t27c. Seal coverage checks only specs that already have a seal.
  • Who starts the dev pod. dockerDriver cannot, as shown above. This needs a 999 driver option, which is not in this PR.
  • Gateway reach. That the pod can reach host.docker.internal:8027 is not verified (POD_REACHES_GATEWAY_VERIFIED = false). No pod was started.
  • Viewing the pod. Whether the neko viewer in the pane needs the mux port is still open.

Draft. Not for merge by this session.

🤖 Generated with Claude Code


Note

Low Risk
Spec-only addition with tests; behavior and dockerDriver integration are explicitly deferred and documented as unverified.

Overview
Adds specs/tri/dev_view.t27 (TriDevView) as the first spec for where tri dev shows course HUD frames after an iteration: default Claude Browser pane, optional 999 neko pod when Docker responds and the owner allows heavy Mac runs.

The spec codifies viewer selection (viewer_for / viewer_now), HUD URLs on :8127 (127.0.0.1 vs host.docker.internal), loopback-only publishing of 8080 plus one WebRTC mux with CDP ports forbidden, one browser-<session> pod per session, and 15s health semantics where slow start is WAITING_RESOURCE (not FAIL) until the pod is up—then the pane still shows the HUD.

It records that today’s dockerDriver fails rule 3 (dev_pod_may_use_docker_driver() is false) and that pod→gateway reachability is unverified (POD_REACHES_GATEWAY_VERIFIED = false). 12 tests and one invariant exercise the rules; no application or 999 driver changes in this diff.

Reviewed by Cursor Bugbot for commit fcaf9cd. Bugbot is set up for automated code reviews on this repo. Configure here.

The tri dev flow shows the course HUD in the Browser pane by default.
The neko pod from 999-multibots-telegraf is used only when the Docker
daemon answers and the owner has allowed heavy runs on the Mac. The pod
opens the HUD at host.docker.internal:8027, never publishes the CDP
port, is one pod per dev session named browser-<session>, and a health
probe past 15 s is WAITING_RESOURCE, not FAIL.

Observed: 999's dockerDriver publishes the CDP bridge, binds 8080 on all
interfaces and mounts the profile, so a dev pod cannot use it as is.

t27c test-report: 12 tests, 12 pass, 0 vacuous. t27b test --check:
12 passed, 1 invariant held.

Refs #13251

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-11-08 04:45:56 UTC

Summary

Status Count
Total Open PRs 47
PRs with Failing Checks 43
PRs with All Checks Green 4
READY 3
FAILING 43
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 43 + 0 + 0 = 46, and there are 47 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=b882be1e4933 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

…efs #13251)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-11-08 05:57:10 UTC

Summary

Status Count
Total Open PRs 47
PRs with Failing Checks 43
PRs with All Checks Green 4
READY 3
FAILING 43
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 43 + 0 + 0 = 46, and there are 47 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=b882be1e4933 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

…13251)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-11-08 06:07:59 UTC

Summary

Status Count
Total Open PRs 44
PRs with Failing Checks 40
PRs with All Checks Green 4
READY 3
FAILING 40
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 40 + 0 + 0 = 43, and there are 44 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=b882be1e4933 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

This was referenced Nov 8, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 0d18991. Configure here.

Comment thread specs/tri/dev_view.t27 Resolved
…13251)

is_cdp_port() names both the bridge 9223 and Chrome's 9222; mux_ok and
port_may_publish refuse either, so no host can publish 9222 by picking it as
the WebRTC mux. The CDP test gains that negative control.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 9, 2026
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-11-09 22:10:20 UTC

Summary

Status Count
Total Open PRs 40
PRs with Failing Checks 38
PRs with All Checks Green 2
READY 0
FAILING 38
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 38 + 0 + 0 = 38, and there are 40 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=b882be1e4933 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@cursor
cursor Bot merged commit c961a01 into master Nov 9, 2026
35 of 42 checks passed
@cursor
cursor Bot deleted the claude/competent-panini-23efda branch November 9, 2026 22:34
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.

2 participants