Skip to content

🤖 feat: add verify-xum skill that drives the real Xum web UI - #7895

Merged
ThomasK33 merged 44 commits into
mainfrom
verify-xum-skill
Nov 4, 2026
Merged

ThomasK33 merged 44 commits into
mainfrom
verify-xum-skill

Conversation

@ThomasK33

Copy link
Copy Markdown
Member

Why

Agents that change Xum have no scripted way to drive the real app and prove the change the way a user sees it. This adds a project-local verify-xum skill: one command starts an isolated, mock-AI dev server from the checkout, and a feature map says how to drive and check each main feature, with evidence that survives teardown.

What changed

  • .xum/skills/verify-xum/scripts/verify-xum.sh has launch, doctor, env, capture, idle, send-ready and cleanup. Launch wraps make dev-server-sandbox --clean-providers --clean-projects with XUM_MOCK_AI=1, an env -i allowlist and its own process group, and seeds a trusted demo project and one workspace through the HTTP API.
  • SKILL.md covers launch, doctor, drive, evidence, cleanup and the traps found while proving it.
  • features/ maps five features (workspaces, chat, review, command palette, settings), each with exact agent-browser commands, the expected UI state and an on-disk side effect to check.

Scope

  • Covers the web UI of the dev server. Electron and model-driven explorers stay with the existing dev-desktop-sandbox, electron and bug-bash skills, which the skill links to.
  • No product code changes. The proof runs found no product defect. Every failure traced to headless Chromium ((hover: none), no window focus), the mock AI, or the Vite dev server.

Blast Radius

New files only, under .xum/skills/. The script never touches ~/.xum: it refuses a second server per checkout, kills only the process group it started, and deletes only the mux-dev-server-* root that the sandbox created.

Verification

  • A scratch driver ran every command in SKILL.md and every step of the five recipes on the final head, with an assertion per step: 108 checks passed, 0 failed, about 2 minutes, no model calls. After cleanup, the sandbox root, the process group, the checkout lock and the browser session were gone, and the 46 evidence files remained.
  • Refusal paths ran too: a second launch, the wrong Bun on PATH, a launch that times out (it cleans up), and doctor on a stopped run (9 FAIL lines, exit 1).
  • make static-check passed, and verify-xum shows up as a project skill.

The Review tab after a worktree edit, and a stopped mock stream:

Review tab with the uncommitted diff of src/math.ts

Chat with a mock stream stopped and marked INTERRUPTED


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: xhigh

A project-local verification skill: verify-xum.sh launches one mock-AI
make dev-server-sandbox per checkout (env -i, setsid process group,
seeded project and workspace), checks it with doctor, waits with idle
and send-ready, captures evidence that survives cleanup, and a feature
map covers workspaces, chat, review, command palette and settings.
Signed-off-by: Thomas Kosiewski <tk@coder.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-04T08:54:32.244962Z 31bf25d Manual request
🔒 Security Review ✅ Completed 2026-11-04T08:55:47.552265Z 31bf25d Manual request

Security findings

Advisory findings (2)

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ae3d23714a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .xum/skills/verify-xum/SKILL.md Resolved
… bounded probes, group identity

- The newest-run link lives in the checkout's git dir next to the lock, so two checkouts that
  share VERIFY_XUM_HOME never load each other's run.
- launch takes the checkout lock under flock, so two launches at once cannot both start.
- Every curl has --max-time, and the readiness loop uses a wall-clock deadline.
- doctor deletes the previous version.json before it asks /version again.
- cleanup signals the group only while a process in it has VERIFY_XUM_SERVER_OF=<run id>.
- SKILL.md says a canned todo_write still writes its TODO list.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8601eba987

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

…ound every launch phase

- settings.md and command-palette.md wait for the option to be selected before Enter. The
  first palette open after a page load shows a loading input that drops Enter
  (LazyCommandPalette.tsx:37/60), so an Enter typed right after the text was lost.
- settings.md waits until no modal dialog is open after Escape. The palette shortcuts do
  nothing while one is (isDialogOpen(), keybinds.ts:291, App.tsx:1133).
- README and SKILL.md: run a step's commands as one && chain, so a failed wait stops it
  instead of typing into the composer.
- env also puts the helper on PATH, so the recipes' bare verify-xum.sh resolves.
- launch checks its deadline during port discovery, the readiness loop, every seed API call
  and the workspace-setup wait.
…unnable review recipe

- load_run refuses a run that another checkout launched, so cleanup and doctor never act on it.
- cleanup signals a group only while its live leader is still the launch's make
  dev-server-sandbox, and blanks the group id in state.env after the stop.
- doctor reads /version without writing a file. SKILL.md says every check line reads ok.
- review.md Restore unmarks the hunk, unchecks Uncommitted and closes the Review tab, so the
  recipe runs again in the same run.
- settings.md drives Ctrl+, too. chat.md and workspaces.md create the evidence folder first.
- SKILL.md: Linux only, the xum run snippet runs under env -i with a fake key (it refuses
  without one, and the old snippet used the caller's real keys), two more proof standards.
- workspaces.md records that document.hasFocus() was true on agent-browser 0.33.2.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2ddacc6f52

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .xum/skills/verify-xum/SKILL.md Resolved
…absolute

The live Xum's server URL and token are also in the env as legacy MUX_* names, which the CLI
reads, so env -u of the XUM_* names alone did not keep them out. A relative VERIFY_XUM_HOME made
the run link in the git dir point at a path relative to the git dir.
… exited, end recipes on the workspace

- workspaces.md runs idle after each create's reply. The reply text shows before the stream
  ends, and archiving a streaming workspace opens a confirm dialog instead.
- cleanup treats a zombie group leader (empty cmdline) like an exited one, so it still stops the
  group's live members.
- review.md says to repeat from Open the sidebar after a cold-cache page reload.
- settings.md Restore re-opens the workspace: Escape from a Settings URL lands on /project.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 90251e3cbf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

…ive TMPDIR absolute

- README: start every recipe whose preconditions name Verify playground by opening it. The
  workspaces and command-palette recipes end on release-notes, and the recipes read their
  evidence from $VERIFY_XUM_WORKSPACE_ID.
- make -C runs the sandbox from the checkout, so a relative TMPDIR resolved there while the
  script resolved the logged XUM_ROOT against the caller's directory.
@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 6d27855043

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6d27855043

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .xum/skills/verify-xum/features/chat.md Resolved
@ThomasK33

Copy link
Copy Markdown
Member Author

Stopping the review loop at round 5 of 6 on head 6d27855043cab598e2907bb47a7277911b2d95e1, pending maintainer direction.

  • Findings per round: 6, 2, 2, 2, 2. Rounds 2 to 5 each found two new medium-severity edge cases in a different place, so the loop is not converging.
  • Round 5's two findings are valid and are not blockers (no security flaw, no data-loss risk, core behavior works). Both threads have the reason and the deferred fix, and both are resolved. One follow-up PR will fix both: hold the launch guard until the server's process group ID is in the lock, and run verify-xum.sh idle after the second chat send.
  • An independent readiness advisor, with a clean context, reached the same conclusion: ready with that tracked follow-up.
  • Evidence at this head: the proof driver, which runs SKILL.md and every recipe literally, passed 147/147. make static-check is green. A re-verifier lane returned PASS at 2ddacc6f52.

This PR changes only files under .xum/skills/verify-xum/. Merging it needs a waiver of the clean-verdict rule for this head.


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: xhigh

… saved chat reply

- launch keeps the flock fd open, and the server's make and dev-server-sandbox.ts inherit it,
  so the lock stays held while the server runs at whatever point the launcher dies. A second
  launch is refused at once. launch saves state, the run link and its cleanup trap before the
  spawn, and cleanup reads the group id and XUM_ROOT from the pidfile and server log when a
  killed launch never saved them.
- chat.md waits until chat.jsonl has the second reply before it reads the history. The
  transcript shows the reply before the server saves it at stream end.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d4c7f314be

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@ThomasK33

Copy link
Copy Markdown
Member Author

Review-cap waiver: ThomasK33 approved one seventh review round for this PR (option B), recorded before the round starts.

Scope of round 7:

  1. Simplify the launch lock in scripts/verify-xum.sh. Remove the inherited-lock-fd and crash-recovery machinery, and keep one guard: launch refuses while the process group recorded for this checkout is alive. This answers the round-6 finding about the lock freeing while the inner make dev-server survives.
  2. Fix features/review.md: after a cold-cache reload, the recovery step continues at "Include uncommitted edits", not "Open the sidebar".
  3. Correct the SKILL.md sentence about which processes hold the lock.

If round 7 raises a new valid P1 or P2, the loop stops and reports instead of iterating.


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

…rited lock

- launch refuses while the process group recorded for this checkout's newest run is alive,
  checked with the same leader-cmdline and run-id test that cleanup uses. The group's leader
  appends its id to the run's state.env before it starts make, so the guard and cleanup find it
  at whatever point the launcher dies. The flock now only serializes the check and the spawn,
  and the server does not inherit it.
- Removed the inherited lock fd, the separate pidfile and lock file, and cleanup's pidfile and
  server-log fallbacks. state.env is written atomically.
- doctor checks that the checkout's newest-run link names the run.
- review.md: after a cold-cache reload the sidebar and Review tab stay open, so the recovery
  continues at Include uncommitted edits.
- command-palette.md: #7897 is on main, so the loading input keeps an early Enter. The wait for
  the selected option stays.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a450f19ed0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@ThomasK33

Copy link
Copy Markdown
Member Author

Review-cap waiver: ThomasK33 approved one eighth review round for this PR (option A), recorded before the round starts.

Scope of round 8:

  1. P1 (round 7): launch clears inherited VERIFY_XUM_PGID, VERIFY_XUM_ROOT, VERIFY_XUM_BACKEND, VERIFY_XUM_URL, VERIFY_XUM_WORKSPACE_ID and VERIFY_XUM_WORKTREE before its first state write, and the pgid read keeps only the last match. A stale exported value from eval "$(verify-xum.sh env)" can then no longer make launch fail and strand a server.
  2. P2: each readiness probe uses the time left before the launch deadline.
  3. P2: the settings recipe waits until config.json holds the new value before it captures or reloads.
  4. The sandbox-root double-fault case (launcher dies in the root-logging gap and a child ignores SIGTERM) stays a stated limit in SKILL.md.

If round 8 raises a new valid P1 or P2, the loop stops and reports.


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

When the app fails before it strips ?token= (a renderer error, a chunk
that does not load), the browser stays on a URL with the token, and
capture saved that URL into the evidence, which is meant to be shared.
capture now passes the URL and the snapshot through redact_token, which
replaces the token (raw and URL-encoded) and any token= value with
<redacted>. Cleanup does the same in every text file of the evidence
and in the server log, before it deletes server.lock.

---
_Generated with [`xum`](https://github.com/coder/xum) • Model: `anthropic:claude-opus-5-5` • Thinking: `xhigh`_

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5caa4030d6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

…ing the server

Stopping the group makes the backend delete server.lock within about a
second, so cleanup's redaction loaded an empty token and left a bare
token in the evidence. Cleanup now reads the token first, and the
redactor gets it on fd 3. The token= pattern also matches only a
non-empty value, so an empty ?token= and the Makefile banner's
?token=<token> stay as they are.

---
_Generated with [`xum`](https://github.com/coder/xum) • Model: `anthropic:claude-opus-5-5` • Thinking: `xhigh`_
@ThomasK33

Copy link
Copy Markdown
Member Author

@codex security review

Head: fcfed1d

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: fcfed1dbd8

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fcfed1dbd8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

…eaches the browser

- agent-browser 0.33 serves each session's screen and input as a
  WebSocket on 127.0.0.1 that any local account can connect to, and a
  new daemon starts it on its own. open now runs stream disable every
  time, refuses to open while stream status reports it on, and closes
  the session if it comes on during the open. stream disable also drops
  clients that connected before.
- SKILL.md says to run the skill only where you are the only local
  account: Chrome's DevTools port on 127.0.0.1 asks for no credentials,
  and agent-browser cannot turn it off.
- Launch keeps a copy of the token in the private run folder (0600),
  so capture and cleanup can redact while server.lock is gone (a
  backend restart). Cleanup deletes the copy last.

---
_Generated with [`xum`](https://github.com/coder/xum) • Model: `anthropic:claude-opus-5-5` • Thinking: `xhigh`_

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ed843b41ed

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@ThomasK33

Copy link
Copy Markdown
Member Author

@codex security review

Head: ed843b4

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: ed843b41ed

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ed843b41ed

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

A run home inside the checkout publishes the token cache and evidence
through Vite. File modes do not help because Vite runs as the same user.
Launch now refuses that home before creating any folder. Every command
that loads a run checks it too, including a run an older version left
there. The check resolves symlinks and .. physically and covers both
the current checkout and the main worktree of a linked checkout.

---

_Generated with `xum` • Model: `anthropic:claude-opus-5-5` • Thinking: `xhigh` • Cost: `$153.98`_

<!-- mux-attribution: model=anthropic:claude-opus-5-5 thinking=xhigh costs=153.98 -->
@ThomasK33

Copy link
Copy Markdown
Member Author

@codex security review

Head: f02d0b0

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: f02d0b04fa

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f02d0b04fa

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Vite allows its detected workspace root (server.fs.allow defaults to
searchForWorkspaceRoot(root)), and that root can be a parent of the
checkout, for example a folder whose package.json declares workspaces.
A run home under that parent passed the checkout check, and Vite served
<run>/token to an unauthenticated request.

Every home check now asks the checkout's own vite for that root
(searchForWorkspaceRoot of the physical checkout, as vite started there
computes it) and refuses a home inside it, in addition to the checkout
and the main worktree. When vite cannot answer, the check refuses.

---

_Generated with `xum` • Model: `anthropic:claude-opus-5-5` • Thinking: `xhigh` • Cost: `$166.57`_

<!-- mux-attribution: model=anthropic:claude-opus-5-5 thinking=xhigh costs=166.57 -->

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 83da137e2b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@ThomasK33

Copy link
Copy Markdown
Member Author

@codex security review

Head: 83da137

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: 83da137e2b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 83da137e2b

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

CI's shellcheck (0.8.0) reports SC2015 on `A && B || die`. The check
is now an if/else with the same result: vite_workspace_root prints the
root only when the checkout's vite reports one absolute path, and
refuses otherwise.

---

_Generated with `xum` • Model: `anthropic:claude-opus-5-5` • Thinking: `xhigh` • Cost: `$171.54`_

<!-- mux-attribution: model=anthropic:claude-opus-5-5 thinking=xhigh costs=171.54 -->
@ThomasK33

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🚀

Reviewed commit: 31bf25da8f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 31bf25da8f

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@ThomasK33
ThomasK33 added this pull request to the merge queue Nov 4, 2026
Merged via the queue into main with commit 33e1b92 Nov 4, 2026
47 of 50 checks passed
@ThomasK33
ThomasK33 deleted the verify-xum-skill branch November 4, 2026 09:04
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