Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
b8b0e7c
🤖 feat: add verify-xum skill that drives the real Xum web UI
ThomasK33 Nov 2, 2026
f3358aa
🤖 fix: verify-xum idle exits 3 on a lazy chunk that failed to load
ThomasK33 Nov 2, 2026
dc61c42
🤖 docs: wrap a review recipe line
ThomasK33 Nov 2, 2026
2c35da6
🤖 refactor: strip narration comments from verify-xum.sh
ThomasK33 Nov 2, 2026
0a6cc03
🤖 refactor: name the verify-xum helpers that lost their comments
ThomasK33 Nov 2, 2026
ae3d237
🤖 fix: keep verify-xum doctor output to its ok/FAIL lines
ThomasK33 Nov 3, 2026
8601eba
🤖 fix: address verify-xum review: per-checkout run link, atomic lock,…
ThomasK33 Nov 3, 2026
f8fb2fe
🤖 fix: wait for the selected palette option, stop on a failed wait, b…
ThomasK33 Nov 3, 2026
d9fce8d
🤖 fix: scope verify-xum runs to their checkout, read-only doctor, rer…
ThomasK33 Nov 3, 2026
2ddacc6
🤖 docs: prettier-format the chat and review recipes
ThomasK33 Nov 3, 2026
baa5040
🤖 fix: run the api CLI under env -i, make a relative VERIFY_XUM_HOME …
ThomasK33 Nov 3, 2026
90251e3
🤖 fix: wait for each create's stream to end, treat a zombie leader as…
ThomasK33 Nov 3, 2026
6d27855
🤖 fix: open the seeded workspace at each recipe's start, make a relat…
ThomasK33 Nov 3, 2026
d4c7f31
🤖 fix: hold the checkout lock in the server's processes, wait for the…
ThomasK33 Nov 3, 2026
b370153
Merge remote-tracking branch 'origin/main' into verify-xum-skill
ThomasK33 Nov 3, 2026
34bdfc5
🤖 fix: guard launch on the newest run's process group, not on an inhe…
ThomasK33 Nov 3, 2026
a450f19
🤖 docs: drop the SIGKILL leftover-folder note: dev-server-sandbox.ts …
ThomasK33 Nov 3, 2026
a7882a7
🤖 fix: clear inherited run state in launch, bound probes by the deadl…
ThomasK33 Nov 3, 2026
b74b7f1
🤖 docs: prettier-format the settings recipe
ThomasK33 Nov 3, 2026
6e3e29f
🤖 fix: stop doctor's Vite check and cleanup's session check from fail…
ThomasK33 Nov 3, 2026
8b0fb49
Merge remote-tracking branch 'origin/main' into verify-xum-skill
ThomasK33 Nov 3, 2026
a928bd9
🤖 fix: round-8 verify-xum findings, auth-token support, launch crash …
ThomasK33 Nov 3, 2026
f9c41d1
🤖 fix: keep verify-xum runs in a private home, read the token on stdin
ThomasK33 Nov 3, 2026
1f518fb
🤖 fix: open verify-xum pages without the token in any argv, wait for …
ThomasK33 Nov 3, 2026
2c1a71f
🤖 fix: verify-xum open refuses a path that leaves the run's origin
ThomasK33 Nov 3, 2026
6eca3f2
🤖 fix: verify-xum review restore waits for the sidebar to settle
ThomasK33 Nov 3, 2026
898b606
Merge remote-tracking branch 'origin/main' into verify-xum-skill
ThomasK33 Nov 3, 2026
eef9d3a
🤖 fix: verify-xum launch keeps its guard until the new group is visible
ThomasK33 Nov 3, 2026
71411b9
🤖 fix: verify-xum recipes read workspace ids and wait for slow writes
ThomasK33 Nov 3, 2026
76a7bcd
🤖 fix: verify-xum clears git's repository variables before it touches…
ThomasK33 Nov 3, 2026
43b5088
🤖 fix: verify-xum checks every folder above the run home before it so…
ThomasK33 Nov 3, 2026
73f97cd
🤖 fix: verify-xum open refuses //-normalized paths before agent-brows…
ThomasK33 Nov 3, 2026
876479c
🤖 fix: verify-xum gives the server tree a private TMPDIR and ignores …
ThomasK33 Nov 3, 2026
3781fb5
🤖 fix: verify-xum failure cleanup keeps the run link until the new gr…
ThomasK33 Nov 3, 2026
e127ca9
🤖 fix: verify-xum review waits for the read marker before it captures
ThomasK33 Nov 3, 2026
67e654f
Merge remote-tracking branch 'origin/main' into verify-xum-followup
ThomasK33 Nov 3, 2026
85b734b
🤖 fix: verify-xum opens its launch guard without following a symlink
ThomasK33 Nov 3, 2026
8287bb5
🤖 fix: verify-xum keyboard archive waits until scratch-notes is open
ThomasK33 Nov 3, 2026
ca008e3
🤖 fix: verify-xum seeds the demo repo without templates, attributes o…
ThomasK33 Nov 3, 2026
aae7b61
🤖 fix: verify-xum changes the newest-run link only while it holds the…
ThomasK33 Nov 3, 2026
6698c90
🤖 fix: verify-xum recipes read workspace ids in the same call as thei…
ThomasK33 Nov 3, 2026
aa68137
🤖 fix: verify-xum proof standards require a phone-width pass
ThomasK33 Nov 3, 2026
5caa403
🤖 fix: verify-xum keeps the auth token out of the evidence
ThomasK33 Nov 3, 2026
03d1569
Merge commit '5caa4030d6' into verify-xum-followup2
ThomasK33 Nov 3, 2026
663215c
🤖 fix: verify-xum opens its launch guard without a blocking FIFO race
ThomasK33 Nov 3, 2026
fcfed1d
🤖 fix: verify-xum cleanup redacts with the token it read before stopp…
ThomasK33 Nov 3, 2026
f8edd52
Merge commit 'fcfed1dbd8' into verify-xum-followup2
ThomasK33 Nov 3, 2026
7e5711c
Revert "🤖 fix: verify-xum opens its launch guard without a blocking F…
ThomasK33 Nov 3, 2026
7f7c2b5
🤖 fix: verify-xum refuses a git dir that another account can write
ThomasK33 Nov 4, 2026
ed843b4
🤖 fix: verify-xum turns off agent-browser's stream before the token r…
ThomasK33 Nov 4, 2026
58362b7
Merge commit 'ed843b41ed' into verify-xum-followup2
ThomasK33 Nov 4, 2026
0172619
🤖 fix: verify-xum open falls back to the run's token copy
ThomasK33 Nov 4, 2026
8269446
🤖 fix: verify-xum review toggle waits for each sidebar state
ThomasK33 Nov 4, 2026
f02d0b0
🤖 fix: keep verify-xum run homes outside Vite's file root
ThomasK33 Nov 4, 2026
83da137
🤖 fix: keep verify-xum run homes outside Vite's workspace root
ThomasK33 Nov 4, 2026
cf5ef96
Merge commit '83da137e2b' into verify-xum-followup2
ThomasK33 Nov 4, 2026
b4a36ba
🤖 fix: verify-xum starts make only after the server group's id is rec…
ThomasK33 Nov 4, 2026
31bf25d
🤖 fix: verify-xum's Vite root check uses an explicit if/else
ThomasK33 Nov 4, 2026
d05bc42
Merge commit '31bf25da8f' into verify-xum-followup2
ThomasK33 Nov 4, 2026
ff022b0
Merge remote-tracking branch 'origin/main' into verify-xum-followup2
ThomasK33 Nov 4, 2026
b48bdde
🤖 fix: verify-xum refuses a folder at the run link and writable folde…
ThomasK33 Nov 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions .xum/skills/verify-xum/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,12 @@ Surfaces:

## Launch

The script runs on Linux only: it needs `setsid`, `flock`, `ss` and `/proc`. Bun on PATH must be
the version in `package.json` `packageManager`. Launch refuses another Bun.
The script runs on Linux only: it needs `setsid`, `flock`, `ss` and `/proc`. Every command
refuses a checkout whose git dir (or, for a worktree, its common git dir) is not yours or is
writable by group or others, and one with a folder above that git dir that is not yours or
root's, or that group or others can write without the sticky bit: the launch lock and the
newest-run link live there. Use a checkout of your own, not a shared repository. Bun on PATH must be the version in `package.json`
`packageManager`. Launch refuses another Bun.

```bash
.xum/skills/verify-xum/scripts/verify-xum.sh launch
Expand Down Expand Up @@ -185,6 +189,14 @@ Proof standards:
the worktree alone. A mock run does not prove a change to provider requests or tool execution:
report that part as not verified, or prove it at that boundary.
- Capture the action and the resulting state, not only the final screen.
- Check a UI change at phone width too. Run `agent-browser set viewport 375 812` and
`verify-xum.sh idle`, repeat the changed recipe's steps and captures with names that end in
`-375`, and look for clipped text, content past the right edge
Comment thread
ThomasK33 marked this conversation as resolved.
Resolved
(`agent-browser eval 'document.documentElement.scrollWidth <= innerWidth'` prints `true`) and
controls that cover each other. When the phone layout reaches a step's control another way, or
does not show it, follow the phone layout's own path to it or capture that it is absent, and
say which. Run `agent-browser set viewport 1280 720` afterwards. A change with no UI needs no
phone pass: say so.
- Check side effects next to what is visible: rows in
`$VERIFY_XUM_ROOT/sessions/<workspace id>/chat.jsonl`, entries in `$VERIFY_XUM_ROOT/config.json`,
git state in the worktree, or the CLI view above.
Expand Down
16 changes: 8 additions & 8 deletions .xum/skills/verify-xum/features/command-palette.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,17 @@ Preconditions:
`agent-browser wait '[aria-label="Command palette"]'` and
`agent-browser wait '[role="listbox"][aria-label="Suggestions"] [role="option"]'`: on the first
open of a page the list fills a moment after the combobox shows. The combobox
`Command palette` is expanded, with the listbox `Suggestions`. Run `agent-browser press Escape`.
The combobox is gone.
- **Switch workspace.** Read the id with `RN_ID=$(verify-xum.sh workspace-field release-notes id)`
(see [workspaces](./workspaces.md) **Open from the sidebar**). Press Ctrl+Shift+P, wait for the
palette as above, then run
`Command palette` is expanded, with the listbox `Suggestions`. Run `agent-browser press Escape`
and `agent-browser wait --fn '!document.querySelector("[aria-label=\"Command palette\"]")'`.
The combobox is gone. The press can return before the palette closes, and the next shortcut
would then close the palette that is still open instead of opening it.
- **Switch workspace.** Press Ctrl+Shift+P, wait for the palette as above, then run
`agent-browser keyboard type "release"` and
`agent-browser wait '[role="option"][aria-selected="true"][aria-label="release-notes"]'`.
`Suggestions` lists the option `release-notes`, selected. Run `agent-browser press Enter` and
`agent-browser wait --url "**/workspace/$RN_ID"`: the palette closes first and navigates a
moment later. The URL is `/workspace/$RN_ID`. Capture
`command-palette/switched`.
`agent-browser wait --url "**/workspace/$(verify-xum.sh workspace-field release-notes id)"`:
the palette closes first and navigates a moment later. The URL is the `release-notes`
workspace's. Capture `command-palette/switched`.
- **Command mode.** Run `agent-browser press F4` and
`agent-browser wait '[aria-label="Command palette"]'`. The combobox value is `>`, and
`Suggestions` lists commands such as `Open Settings` and `Change Model…`.
Expand Down
8 changes: 5 additions & 3 deletions .xum/skills/verify-xum/features/review.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,11 @@ Preconditions:
`$VERIFY_XUM_ROOT/sessions/$VERIFY_XUM_WORKSPACE_ID/review-state.json` has `"isRead": true` for
that hunk. Capture `review/read`.

- **Keyboard toggle.** Run `agent-browser press Control+Shift+B`. The sidebar collapses, and the
button `Expand right sidebar` is back. Run `agent-browser press Control+Shift+B` again. The
button reads `Collapse right sidebar`, and the tab `Review 1/1 Close Review` is selected.
- **Keyboard toggle.** Run `agent-browser press Control+Shift+B` and
`agent-browser wait '[aria-label="Expand right sidebar"]'`. The sidebar collapses, and the
button `Expand right sidebar` is back. Run `agent-browser press Control+Shift+B` again and
`agent-browser wait '[aria-label="Collapse right sidebar"]'`. The button reads
`Collapse right sidebar`, and the tab `Review 1/1 Close Review` is selected.
- **Restore.** The sidebar slid open again: run `verify-xum.sh idle`, then
`agent-browser find role button click --name "Mark as read (M)" --exact`. The tab reads
`Review 0/1` at once, and the app writes `review-state.json` a moment later. Wait for
Expand Down
8 changes: 4 additions & 4 deletions .xum/skills/verify-xum/features/workspaces.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,10 @@ Preconditions:
`agent-browser wait '[aria-label="Restore workspace release-notes"]'`. The region
`Archived workspaces` lists `release-notes` and `scratch-notes`. Run
`agent-browser find role button click --name "Restore workspace release-notes" --exact`, then
wait for the result with `agent-browser wait --url "**/workspace/$RN_ID"` (`RN_ID` as in
**Open from the sidebar**) and
`agent-browser wait '[aria-label="Select workspace release-notes"]'`. The app is on
`/workspace/$RN_ID`, the sidebar row is back, and `config.json` has an
wait for the result in the same bash call with
`agent-browser wait --url "**/workspace/$(verify-xum.sh workspace-field release-notes id)"` and
`agent-browser wait '[aria-label="Select workspace release-notes"]'`. The app is on the
`release-notes` workspace URL, the sidebar row is back, and `config.json` has an
`unarchivedAt` time for it. Capture `workspaces/restored`.
- **CLI view.** List the workspaces through the CLI:

Expand Down
Loading
Loading