Skip to content

Supervisor threads: follow-ups - #219

Merged
hhff merged 10 commits into
mainfrom
threads-followups
Nov 14, 2026
Merged

hhff merged 10 commits into
mainfrom
threads-followups

Conversation

@hhff

@hhff hhff commented Nov 14, 2026

Copy link
Copy Markdown
Member

Small follow-ups left after supervisor threads (#185/#194/#205/#215). The plan and the spec were reviewed adversarially by Fable, and so was this diff.

Changes

  • Artifacts: a published tree is served only under the slug whose folder it was on main, either main's tree now or one in that folder's first-parent history (git log --raw -t --no-renames). Before this, any tree with an artifact.json could be served under any slug. Only a yes is remembered. Spec §8 is updated.
  • Dashboard: a thread's question answered elsewhere (the CLI or another tab) no longer flashes "Answer it in the Inbox". The card reads the answer from the page's data, and drawOrHold redraws the open card. The test covers the stale-read race with held reads, not a timer.
  • Box: boot removes run/supervisor-pane-role along with run/supervisor-pane.
  • Tests:
    • /api/view gets a test for the 500 it answers when describe fails (a folder it can't read; skipped as root, and CI doesn't run as root).
    • The focus and presses tests move to free in-block ports.
    • test/lib/ports.mjs now states the real rule for scans and the layout for each file.
  • Spec §4: the click under the overlay is lost only when the pointer hasn't moved at all. That stays deliberate: forwarding the click would turn the read-only bridge into one that acts on the page.

Considered and dropped after review

  • Forwarding that click into the lens. It widens the preview lens from reading to acting.
  • A DEVTEAM_PORT_SPAN setting. Those tests pin their port, so the hub never scans.
  • A kitHasRecover memo. Every caller asks once per repo, so it would never hit. Commit 2ad06ed adds it and the next commit reverts it.

Tests (Node 24.21.0, targeted):

  • viewer, threads and boot tests: 54/54
  • test/machine.test.mjs and test/recovery.test.mjs
  • test/gateway.test.mjs: 67/67
  • publish and tree tests

🤖 Generated with Claude Code

hhff and others added 10 commits November 13, 2026 19:38
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s, and a failed help is never kept

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r it was on main

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the file uses, and the port layout says the real rule

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… soon as the page's data says so

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…and is kept so the lens stays read-only

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… per process, so it never hit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… each line is

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

hhff commented Nov 14, 2026

Copy link
Copy Markdown
Member Author

CI note: kit (22, rest) failed twice in the typing/focus test before it passed on the third attempt. The page made no /api/data read after its first one, so it timed out at '1 polls'. kit (24, rest) failed once in 'a press on Resolve across a read' and passed on rerun. On Node 22.12 locally, the whole of test/dashboard.test.mjs passes 144/144, and the two tests pass on their own on 24 and 22. I couldn't tie either failure to this diff. This branch moves the focus test's hub and base to +56/+57 and adds tlCard() in drawOrHold, so please look at the focus test if it flakes on main later.

🤖 Generated with Claude Code

@hhff

hhff commented Nov 14, 2026

Copy link
Copy Markdown
Member Author

Reviewed at 665ac99:

  • An artifact tree is now bound to its slug: it must be main's tree for that folder now, or in that folder's first-parent history. That tightens what's served.
  • The slug is checked against LINK_ID before it reaches any git pathspec, and only a yes is cached, keyed by slug and tree.
  • Boot also removes supervisor-pane-role. Being an image change, this will restart the box on release, and box-recover handles that.

Locally on Node 24, the kit tests pass 82 of 82 and the dashboard tests 144 of 144. On CI, kit (22, rest) failed once, in the focus tests. Its rerun passed, and so did the same tests locally, so it was the known load flake. CI now passes 9 of 9. Merging.

@hhff
hhff merged commit 6d704e4 into main Nov 14, 2026
22 of 25 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