Login
Migration surveys
Login

Migration surveys

The four read-only surveys behind Migration plan, verbatim. 2026-10-26/27.

Survey A: every repository

Survey C, swk-ai (read-only, 2026-10-27, about 02:25 UTC, which is 10:25pm EDT on Oct 26)

Bottom line

Sources

What the service is

Where it runs and what it reads and writes

How it depends on today's OCX

  1. The start of every run: today, create called from the release directory makes the server's node act at once inside that call. So each swk-ai run is decided and launched from the CGI or daemon process.
  2. The codex password: today's server node sets a fresh password for codex on the served repository at every run's password step.
  3. Fixed names: the path /var/lib/ocx/release2/current/ocx2 and the node name swk-ai-node are fixed in swk-ai's code, and every past codex run names that node.
  4. The program's location: it lives in an OCX run workspace. Its builder, a session on today's node, is its only deployer.
  5. The hook still delivers thread posts to the builder session. Most of the maintainer's messages to it were typed straight into its terminal.

What it needs to keep working under the new design

These points are from reading tree8's source and documents. None of it has been tested.

Two decisions for the maintainer

  1. Where swk-ai's runs execute: the server host also running a daemon, which keeps Codex, the login and the tools where they are, or another machine.
  2. Where the swk-ai program lives, and who rebuilds and installs it, once its builder is no longer a session whose workspace is on the server host.

What I could not see, and who could

My working files (a copy of the ollama clone and text pulled from the transcript) are in /tmp/claude-0/-var-lib-ocx-agents-opus-ocx2-projects-ollama-b2de8b0c2c6700eb5c686b1747b5aaa1e2d2d01370ac55f2e5a151a67e03b48a/3f7cfe25-28aa-4c55-827c-bc0618da81e6/scratchpad/migration/:

Survey B: runs, sessions and agents

Survey A: every repository served at ollama.openbeagle.org

I read all 31 repositories as of 2026-10-26 22:07–22:30 EDT, from outside, and wrote nothing to any server.

Same on every row:

"Hook" below uses this release's terms. "No hook" means no OCX hook is installed. A "yes" in the newest-check-in column means the newest check-in is in the export. "Forgejo" means forgejo.openbeagle.org.

Repository Hook and node Other hook programs Open runs (status) Git export Newest check-in: in the export? GitHub or mirror signs
armbian-build no hook – – yes 854b5c677c (05-11): yes, as the upstream commit on badge-snake upstream github.com/armbian/build (README); Forgejo ocx/armbian-build pulls the export every 8h
badge-launcher no hook – – yes 4cb2ae057c (09-21): yes Forgejo ocx/badge-launcher, 8h; check-ins cite github.com/Grippy98/badge-launcher
battlesnake-rules no hook – – yes 59e10ff432 (06-11): yes, as the upstream commit Forgejo ocx/battlesnake-rules, 8h; README names upstream BattlesnakeOfficial/rules
bb-imager-rs no hook – – yes a69e127092 (06-19): yes Forgejo ocx/bb-imager-rs, 8h; Forgejo also mirrors github.com/beagleboard/bb-imager-rs directly
BeagleBadge no hook – – yes c459d1f528 (04-14): yes Forgejo ocx/BeagleBadge, 8h
blabl no hook – – yes 4e507e9568 (06-01, its only check-in): yes none
board-generator no hook – – yes a333ff849d (04-23): yes, but on branch codex/create-agents.md-and-project-skeleton; main holds dba5c05983 (04-21) only codex/* branch names
bootstrap-qcow2 installed, node bq2-node – none yes, no HEAD Newest 6d67be9e92 (10-26): yes. The trunk tip c86ec69825 ("BQ2 1.0.0", 10-25) went to branch origin/codex/fix-sysroot-runner-overwriting-issue-m0vpua; master is stuck at a81fed2944 (05-07) README: github.com/embedconsult/bootstrap-qcow2, GitHub Actions, Pages at jkridner.github.io/bootstrap-qcow2; about 140 origin/* branches from a GitHub remote; not public on Forgejo
cleave installed, node cleave-node – none yes 32f9484084 (10-26): yes, on main none
crystal-bootstrap no hook – – yes 3c8735cbca (2024-09-25): yes weak
crystal-robots installed, node crobots-node – none shown (note 1) yes; trunk maps to dev 332afb5929 (10-26): yes, on dev Forgejo ocx/crystal-robots every 15 min, but its default branch is main, a 2024 upstream commit; README: github.com/jadonk/crystal-robots, Pages at jadonk.github.io/crystal-robots
crystal no hook – – yes, no HEAD Unresolved. 27c49be3a3 (07-07, marked as a fork on trunk) is not on master (c1aafe1cc2, 07-03) or tcl-tk; I did not fetch the other 66 branches upstream github.com/crystal-lang/crystal; not public on Forgejo
fossil-scm.org no hook – – yes No. Newest c088cf957f (10-26); main stops at 3c8d90873e (09-17), about 39 days behind none
glint installed, node glint-node – none shown (note 1) no ("glint has no git export") 54d10f27f3 (10-27 01:40 UTC): no export none
gp-crystal no hook wake (old ocx release) – yes 97a74083f2 (09-21): yes, on its agent branch; trunk c452450519 is on main weak
interactor installed, node interactor-node – none yes No. 06ca64d527 (10-22, 6:09 PM EDT) is missing; its branch session/f960dfe6… stops at a3b87b3e1f (10-21) Forgejo ocx/interactor, 8h; its last update (10-21 16:40:47 UTC) agrees. Check-ins cite github.com/just-kitting/interactor and "the GitHub mirror"
jkembedded-audio-board installed in the old form, no node (ocx2-hook --log … %R) – – yes bd4087922c (06-15): yes, as the upstream commit codex/github-mention-… branches; merges of upstream/main
lvgl-crystal no hook – – yes dfa6f482be (08-20): yes README: github.com/embedconsult/lvgl-crystal, GitHub Actions and Pages
make-things-book no hook – – yes 46a10a8478 (09-18): yes merge of github/main; Forgejo ocx/make-things-book, 8h
mechanical-turk installed, node node-mt – 1 open: 35003d31bf "Persistent chat with Slowpen", user run-c1740c5d, started, in care, started under old release 82aa2e40899f no a00103ff59 (10-26): no export none
microblocks-smallvm no hook – – yes; HEAD is dev d31dc8e9ff (04-18): yes Forgejo ocx/microblocks-smallvm, 8h
ollama installed, node ollama-node wake (old ocx release) none shown (note 1) yes c22eb96ffd (10-26): yes, on agent-tools; trunk 1f0ac30c5b is on main not public on Forgejo; tickets a4738213e9 and 648c77e425 plan "every served repository mirrored to GitHub through Forgejo"
quadesc no hook – – yes 6b5ad22e54 (10-08): yes README: GitHub Pages on embedconsult/quadesc
semantic-ui no hook – – yes 377317a893 (2025-11-14): yes, on gh-pages gh-pages deploy commits from jadonk/chatgpt-web-server
social-badge no hook – – yes Not verified. e399c19c2b and trunk b0e970abeb (09-21) are on branches too large for my 80 MB fetch cap; main is at f040e0ce05 (03-03) not public on Forgejo
stone installed, node stone-node fossil (unknown command), wake (old ocx release) none shown (note 1) yes 68156c2781 (10-26): yes, on main Forgejo ocx/stone pulls every 15 min from /ollama/ext/git/stone.git, then GitLab jkembedded/ocx/stone, GitHub embedconsult/stone, Xcode Cloud, TestFlight (check-in a145e39c29)
swk-ai installed, node swk-ai-node – none shown, but anonymous can read nothing there no (403 "not readable by this viewer"; under ollama's path: "swk-ai has no git export") unknown (empty feed, clone refused) unknown
tournament-tool no hook – – yes 18ea48f7ec (09-20): yes none
vsx-examples no hook – – yes 2d66254cbe (02-21): yes Forgejo ocx/vsx-examples, 8h; Forgejo also mirrors github.com/beagleboard/vsx-examples
webide-agent no hook – – yes e5a0df2c04 (05-12): yes Forgejo ocx/webide-agent, 8h
zepto no hook – – yes f047068a82 (04-16): yes, on faq-wip; main is at 3f0eebced5 (03-27) Forgejo's mirror of github.com/beagleboard/beagleconnect-zepto has the same last-commit time, so zepto looks like a copy of it

Notes

1. Open runs are mostly hidden from anonymous readers. Anonymous users lack forum read everywhere except mechanical-turk, and status lists only the runs the viewer can read. So "none shown" proves nothing. Older local clones show these open runs (started, no ended):

Today the server's own node looks after these runs. Under the new design, a daemon that finds a started run not in its care posts ended lost (protocol section 10). So these 7 runs will either be ended that way or need to be moved or settled on purpose.

2. Ten hooks need replacing. Ten repositories run ocx2-hook: the nine with a node, plus jkembedded-audio-board with none. USAGE says each needs ocx2 --repository REPO hook after accepting, or nothing is exported. Three repositories also carry hooks that the new hook command leaves in place:

The old ocx release is still in use. This session is itself one of its workspaces: note b2de8b0c2c in ollama thread 682044729e (2026-10-04) made it, and its wake pipe is in this workspace. The ollama record holds many more such workspace notes, for opus, fable, agent-sol, sol-ocx, ci-ocx, build-bq2 and opus-ocx. I cannot tell which of those sessions are still running.

3. The /ext/git program the server runs now is older than this release.

4. Export freshness.

5. Forgejo (anonymous view, 28 public repositories).

6. Other programs in the server's extension directory:

7. swk-ai's new service. Anonymous visitors get nothing, and the clone is refused. Its status shows the hook installed with node swk-ai-node. The newest line of the shared hook log is swk-ai receiving 5 artifacts at 9:56 PM EDT on 10-26, with nothing answered. The service at /ext/swk-ai needs a login, so I could not understand it from outside. A user with read access on swk-ai, or an admin on the host, could.

8. What I could not see, and who could. Only an admin with setup rights, on the host, can see:

Forum posts on 30 repositories and chat need a user with those rights. Forgejo's push mirrors and private repositories need a Forgejo admin. The new release's status page would show chat-timeline-user once it is offered as next.

9. Load I caused. The shallow git fetches pulled about 560 MB between 10:12 and 10:27 PM EDT, more than half of it from three capped attempts on social-badge. I made no writes, posts or changes on any server.

Files are in /tmp/claude-0/-var-lib-ocx-agents-opus-ocx2-projects-ollama-b2de8b0c2c6700eb5c686b1747b5aaa1e2d2d01370ac55f2e5a151a67e03b48a/3f7cfe25-28aa-4c55-827c-bc0618da81e6/scratchpad/migration:

The clones/ directory was filled by another worker, and I left it untouched.

Survey C: swk-ai

Survey B: runs, sessions and agents in use (read-only, as of 2026-10-27 about 02:30 UTC, 22:30 EDT Oct 26)

Summary: nine v1 runs are still live, plus three sessions from the pre-v1 launcher and one remote node. The mechanical-turk and bootstrap-qcow2 sessions are already gone: their 7-day wall ended both at 21:09 UTC (17:09 EDT) on Oct 26. The swk-ai service runs on the server itself and depends on the old hook. Sessions still running under old watchers will stop receiving forum posts once the hook is replaced, and ocx2 stop will no longer reach them.

How I got it

Hooked repositories (status shows a node): bootstrap-qcow2 (bq2-node), cleave (cleave-node), crystal-robots (crobots-node), glint (glint-node), interactor (interactor-node), mechanical-turk (node-mt), ollama (ollama-node), stone (stone-node), swk-ai (swk-ai-node).

One row per live run or session

Remote Control name Repo, run (where) Shape / pattern Node process.user Hears Last record activity / last Claude answer Wall ends
glint (current) glint f62d622a55 (own thread) Claude terminal session; Codex handoff; ends true; claude-session.md 530e05e270 glint-node (server) run-4965e946 * check-in 10-27 01:40Z / 01:40Z 11-22 00:14Z
glint (older) glint b2d65da166 Claude terminal session; run-claude-terminal d97e84c1d2 glint-node run-f85e691a * 10-23 00:15Z / 10-23 00:16Z (replaced, never ended) 11-21 12:17Z
crystal-robots (current) crystal-robots 3c42ee4b9a claude-session.md; sends Codex tasks (8 on 10-26) crobots-node run-3b21425d * 10-26 15:33Z / 15:33Z 11-22 06:32Z
crystal-robots 546a05a4dd claude-session.md crobots-node run-24e9eebd * 10-23 01:17Z (replaced, per its own handoff) 11-22 00:31Z
crystal-robots 8ed286a74e run-claude-codex-terminal aa6c09227a crobots-node run-1ab99c01 * 10-23 00:37Z (replaced) 11-21 19:20Z
stone (v1) stone 332c8a30ba Claude terminal session; run-claude-terminal aabf7d12a1 stone-node run-af0dbe70 * 10-26 12:55Z 10-28 15:16Z (11:16 EDT Wed)
stone (untitled; probably the one stone talks to) stone thread e320232451, not a v1 run pre-v1 console session opus-stone (09-24); each turn is a "Question:" woken by the wake hook none (pre-v1) opus-stone stone's posts 10-27 01:52Z none
interactor interactor f960dfe6a8 run-claude-terminal d97e84c1d2 interactor-node run-84e1b850 * check-in 10-22 22:09Z; no forum posts 11-20 15:58Z
swk-ai swk-ai 9d9c6722f2 prompt matches claude-session.md, --node swk-ai-node swk-ai-node run-d208124d (unreadable) 10-27 01:58Z about 11-25 15:26Z if 30d (not verified)
(untitled) swk-ai 8430486bbf (thread ce79a77d39) same objective; double start at 15:26Z swk-ai-node run-1b11b787 ? Claude idle since 10-26 16:09Z. Stone asked how to stop it at 16:18Z; outcome unknown same
(no RC; MCP tunnel) mechanical-turk 35003d31bf one-shot ocx2 --mcp-tunnel, secret slowpen-mcp-1, run/slowpen-mcp-1 node-mt run-c1740c5d n/a status: in_care true, release 82aa2e40899f 11-15 15:55Z
cleave cleave, pre-v1 "call" 18ec7f20e8 (10-09) Claude --remote-control, pre-v1 launcher pre-v1 node 6cbe285e95 claude-49343b Remote Control and session messages only (last forum post handed to it: 10-11) 10-26 10:24Z none
ollama ("ocx") ollama, pre-v1 workspace b2de8b0c2c (10-04) this session; sandbox started 10-04 12:21Z by the pre-v1 console none opus-ocx2 typed input only 10-26 17:02Z check-in none
mechanical-turk run 4e808fdd79 run-claude-terminal 8b024a5ebf, 7d node-mt run-1e0ac0ab — ended budget 10-26 21:09Z. A request ("send CK the link for review") was on its input line, unanswered gone
bootstrap-qcow2 run d64fa14411 same pattern, 7d bq2-node run-58530641 (also bootstrap-qcow2-agent on cleave) — ended budget 10-26 21:09Z gone
remote node (cleave's aarch64) cleave tickets Docker container from cleave ocx-node/, ocx2 poll every 60 s, release aa650c80c410, root /opt/ocx, own r-senders.json (6h, 4096 processes) aarch64-1 (holds gioy) aarch64-1-build — last build ended 10-26 04:53Z —

Runs that a new daemon would pick up at its first start

The new daemon reads everything when it starts. The hook never went back for runs it had missed.

Patterns in use

swk-ai: the new service (from its session's own messages, 10-26 15:26 to 10-27 01:58)

What each needs under the new design

Every node user (glint-node, crobots-node, stone-node, interactor-node, node-mt, bq2-node, cleave-node, ollama-node, swk-ai-node):

Every session restarted under the daemon:

Live sessions under old watchers. From reading the code; not tried.

Per row:

What I could not see, and who could

Root or ec2-user on the server host could see these with ps, the files, fossil setting, and ocx2 status as setup, which lists in-care runs and their processes. A swk-ai admin login could read the swk-ai record, and the aarch64 machine's owner the container.

Another workflow agent is writing into the same scratchpad/migration directory and overwrote my runs.py, so my files are under b/.

Files are in /tmp/claude-0/-var-lib-ocx-agents-opus-ocx2-projects-ollama-b2de8b0c2c6700eb5c686b1747b5aaa1e2d2d01370ac55f2e5a151a67e03b48a/3f7cfe25-28aa-4c55-827c-bc0618da81e6/scratchpad/migration/:

Survey D: other dependencies

Survey D, read-only, done from outside on 2026-10-27 between 02:05 and 02:35 UTC (22:05–22:35 EDT on Oct 26). I wrote nothing to any server.

Sources: anonymous pages and status/receipt/questions JSON for all 31 repos; git ls-remote of every export plus shallow fetches of their branch heads; GitHub, Forgejo and GitLab ls-remote; the Forgejo repo-search API; copies of anonymous clones (10 repos; swk-ai refused); aa650c80c4 source and docs read from the ollama clone. Working files are in /tmp/claude-0/-var-lib-ocx-agents-opus-ocx2-projects-ollama-b2de8b0c2c6700eb5c686b1747b5aaa1e2d2d01370ac55f2e5a151a67e03b48a/3f7cfe25-28aa-4c55-827c-bc0618da81e6/scratchpad/migration/ (d/, status/, git/, gh/, gitprobe/, stone-tree/).

Nothing showed swk-ai anonymously. What I know of its service comes from local copies of its dev run's session record, which a sibling survey left in scratchpad/migration/swk-session-text.txt and swk-tools.txt. I did not see the swk-ai repository itself.

Rows: one per service or dependency

# Service / dependency Who relies on it Today (evidence) What the new release changes Migration step
1 Git exports written by OCX's hook Forgejo mirrors, and through them GitLab, GitHub, Xcode Cloud and GitHub Pages 10 repos carry ocx2-hook: bootstrap-qcow2, cleave, crystal-robots, glint, interactor, jkembedded-audio-board (export-only, no --node), mechanical-turk, ollama, stone, swk-ai. Of these, glint, mechanical-turk and swk-ai have no export. The export matches Fossil's branch leaves on stone 32/32, ollama 442/442, bootstrap-qcow2 165/165, cleave 4/4 and crystal-robots 33/33. Interactor is already behind: check-in 06ca64d527 (2026-10-22 22:09Z, branch session/f960dfe6…) is in Fossil but not in the export, whose head there is still a3b87b3e1f (10-21 16:40Z). Forgejo's ocx/interactor last update also reads 10-21T16:40:47Z. The hook becomes Fossil's own %F git export --if-mirrored -R %R. USAGE says that after accept, ROOT/ocx2-hook --log … %R runs the new CLI, which rejects those arguments: nothing is exported until ocx2 --repository REPO hook is run on each of the 10 repos. The new export runs on every arrival, posts included, not only check-ins (ollama has 442 branches). Re-run hook on all 10 right after accept. Time an export on an ollama copy first. Interactor's gap should clear at the first export after the reinstall.
2 Git exports with no hook (21 repos) Forgejo ocx/* mirrors at 8 h intervals: armbian-build, BeagleBadge, badge-launcher, battlesnake-rules, bb-imager-rs, make-things-book, microblocks-smallvm, vsx-examples, webide-agent Current, since nothing new has been checked in. Exception: fossil-scm.org's export stops at 2026-09-17 while Fossil has check-ins from 10-26. Something on the host keeps pulling that repo; no mirror reads its export. None. With --if-mirrored, installing the hook on these is safe. Optional: install hook on them so the exports follow future check-ins.
3 The program that serves /ext/git Every export reader Behaviour matches the old ocx v1 release (/var/lib/ocx/release/current/ocx-cgi, built 2026-10-02), not ocx2. /stone/ext/git/zzz.git answers "zzz has no git export" with a bare 404 status line, which matches v1's git_http.cr. ocx2 since 2950d18201 (10-06) would answer "zzz is not this repository". /stone/ext/git/ollama.git is served. Forgejo ocx/stone pulls https://ollama.openbeagle.org/ollama/ext/git/stone.git, a cross-repo URL. git-next is not present. Nothing, as long as git stays on v1. ocx2's git program, in aa650c80c4 and in the tree, refuses cross-repo names. If git is pointed at ocx2, the stone → Forgejo → GitLab → GitHub → Xcode Cloud chain stops. Before retiring v1 or repointing git, change Forgejo ocx/stone to /stone/ext/git/stone.git.
4 GitHub mirror of crystal-robots GitHub Pages (jadonk.github.io/crystal-robots) github.com/jadonk/crystal-robots matches the export on all 33 shared heads (dev 2690b21326, main 87e8f0c9be); GitHub also has 2 branches of its own. Path: export → Forgejo ocx/crystal-robots (15 min) → Forgejo push mirror → GitHub (per the crystal-robots forum). Stalls with row 1 until the hook is reinstalled. Same as row 1.
5 GitHub mirror of stone Xcode Cloud and TestFlight builds of the Stone app Export main cec5772bc7 is the same commit on Forgejo ocx/stone, GitLab jkembedded/ocx/stone and github.com/embedconsult/stone (32/32 heads). Commits carry FossilOrigin-Name, which Stone's build stamp reads. Same as rows 1 and 3. Same as rows 1 and 3.
6 Other GitHub repos named in forums None of them follows the export just-kitting/interactor, BeagleBadge, embedconsult/social-badge, beagleboard/smallvm and embedconsult/bootstrap-qcow2 are upstreams or separate lineages; their heads differ from the exports. — —
7 Remote node aarch64-1 cleave's Claude session claude-49343b (holds R), which sends cleave ticket runs (puser aarch64-1-build); also bootstrap-qcow2-agent Runs in a Docker container from cleave trunk ocx-node/ (Dockerfile, ocx-node.sh, docker-compose.yml, restart: unless-stopped). It builds ocx2 at OCXVER=aa650c80c410 and runs ocx2 poll every 60 s, with the clone at /data/aarch64-1.fossil and r-senders.json from ocx-node/. Only cleave is watched. Clone code in every started/ended report: d3448bfaf66fa0756d219fa0683a687590720525 (cleave's server code is 6cbe285e95…). About 40 runs, 10-19 to 10-26; the last ended 10-26 04:53Z; none are open in my copy. Reports are pushed with ocx-message tags. Node user caps on cleave: gioyjrzh. It has no C, 4 or w. poll is removed (commands/poll.cr); the replacement is ocx2 daemon NODES under a service manager. The node user needs goC4w, and w matters here because reports go through Fossil's ticket pages. An admin must set chat-timeline-user on cleave. Accepting the release on the server does not break this node: poll needs only the unchanged receipt page (receipt.cr is identical in both releases). Change cleave's ocx-node/ files: daemon, nodes.json, new OCXVER. Give aarch64-1 C, 4 and w. Set chat-timeline-user on cleave. Docker's restart policy is not systemd's KillMode=process: when the daemon exits, Docker restarts the container and kills running watchers and builds. So pick another supervisor inside the container, or accept runs going lost at each restart.
8 Runs to aarch64-1 on bootstrap-qcow2 never answered run-58530641 Runs 4bf43c40a0, 1033437e64 and 51c04f65dc (10-19 to 10-22) name node aarch64-1, which has no user and no clone on bootstrap-qcow2. They have no started or ended. A daemon reads the whole record at start, so adding a bootstrap-qcow2 entry for aarch64-1 would decide these old runs. Stop or close them before adding such an entry.
9 Retired node user aarch64-builder (cleave) none Refused 2 runs (10-13, 10-16); caps iogjrzh. — Can be dropped.
10 swk-ai service (/swk-ai/ext/swk-ai) the person shown as SWK/Bash (login bash); the maintainer Live: home redirects to /ext/swk-ai, which needs a login. On other repos it answers 403 {"error":"swk-ai runs only as an extension of the SWK AI Fossil repository"}. swk-ai is private: no anonymous clone, /ext/git 403, and the repo has no export. OCX's hook (--node swk-ai-node) logged its most recent run on swk-ai at 01:56:44Z, with 5 artifacts. From the dev run's session record: a static Crystal CGI, symlinked from the shared extroot to /var/lib/ocx/release2/agents/run-d208124d/projects/swk-ai/9d9c6722…/bin/swk-ai, which is inside the dev run's workspace (run 9d9c6722f2 on swk-ai-node). It reads the repo database read-only. It sends each message as a run with /var/lib/ocx/release2/current/ocx2 --json --repository … --user swk-ai create … --pattern run/swk-ai --node swk-ai-node --title "swk-ai/bash: …", using an admin login swk-ai because R-only senders may not have a password step. A scheduler process it starts itself (found through /proc, exits after 24 h idle) sends greeting runs at 5:50 and 14:50 Detroit time. Pattern run/swk-ai: run user codex (g i o 2 4 C b m), password step, wall 1 h, remove_on: saved. The agent posts from its clone, sends live steps to /chat-send with a Referer, and attaches images to wiki page "swk-ai images". The page long-polls /chat-poll and reads the forum. Needs a daemon node for swk-ai-node, since create on the server no longer acts at once (its output also drops acted, and --node becomes required; swk-ai already passes it). Needs chat-timeline-user on swk-ai. The codex password must be supplied by an admin in the daemon's credentials file, because the old node reset it to an unknown value. Once chat-timeline-user is on, timeline rows land in the same chat the page polls. Move the live binary to a stable path outside any run workspace before moving or ending run 9d9c6722f2. If that run ends with remove_on: saved, or moves off this host, the site goes down. Set a known codex password and put it in the credentials file. Check that the page ignores timeline-user rows in chat.
11 Stone app (iOS, 16 repos on the phone, including SWK AI) the maintainer's phone login stone, which holds a…C… on most repos and lacks C on glint and mechanical-turk Keeps full clones and syncs them with embedded Fossil 2.26. Since 76bbab50bc (10-25) it wakes a sync through Fossil's /chat-poll (RemoteWake.swift, docs/chat-poll-wake.md). That needs chat-timeline-user, not set yet according to the 10-25 post. It uses no OCX pages in code apart from dead v1 endpoints: /ext/ocx/status (403) and /ext/chat?merge_review= (TicketOpener). The old SSE on :8443 is gone: the port refuses connections, and 25 repos' default-csp still list it. "Verify This Build" writes audited tags from the phone. Its stated needs (docs/ocx-message-needs.md, R1–R6): a versioned schema with fixtures; exactly one ended per run, readable from the clone; questions as messages; offline-writable actions; a fixed receipt JSON; and an optional per-thread live state. Turning on chat-timeline-user makes Stone's wake work too. Watcher reports (started/ended) carry no ocx-message tags in the new release. Stone's plan (forum fcb8ac6d69) finds messages through tagxref, so it would miss them. That reader is not built yet. The kind response is now decision, while Stone's doc still says response. Builds stall until row 1 is done. Tell Stone that reports are untagged and that decision replaced response, or keep tagging. Give stone C on glint and mechanical-turk if those should wake.
12 receipt page Stone's planned reader, new daemons, aarch64-1's poll, clones' post --decision Answers anonymously (fields artifact, received, sender, receipt) and gives capabilities through capabilities_of. Code unchanged, but every daemon now depends on it for run-work. Time it under load.
13 questions / console pages the maintainer: ollama decisions by ec2-user, 10-22 15:19–15:22Z Anonymous GET works: questions?json=1 answers for nobody; console returns 200. Console buttons POST to /ext/ocx2-cgi/post. questions and post are unchanged. console reads runs from the record only, and its JSON node becomes nodes (an array). status on the served page loses in_care, offer and hook.last, and gains chat_user and the daemon's round. The maintainer's web view of what a node is doing goes away; it lives only on the agent machine. The backlog's open question about removing the CGI write forms would, if taken, break console buttons and the page form of create. No step needed. Tell the maintainer where live care moves.
14 Imports maintainer, setup Not visible anonymously. aa650c80c4's status shows no imports at all; the setup-only list and the detached import arrive with the new release. Repos whose export kept the upstream's own commits (crystal-robots, interactor, BeagleBadge, jkembedded, quadesc) were imported; quadesc (imported 10-08) has no hook. A page import is detached and logs to node/import.log, and the new repo gets the new export hook. The host or a setup user should check /var/lib/fossil for anything left by the failed beagleboard-org import of 10-21.
15 MCP tunnel run "Slowpen" (mechanical-turk) an outside agent through OpenAI's Secure MCP Tunnel Run 35003d31bf, in node-mt's care, on old release 82aa2e40899f; wall 30d, started 10-16 15:55Z. Uses secret $$secret:slowpen-mcp-1$$. Secrets set on the served repo do not reach a daemon, because settings don't sync. They must be set on the node's clone. No page shows the value. Whoever holds the tunnel key sets it on the node clone, or a new key is issued.
16 Old v1 hook wake v1 sessions woken through FIFOs: opus-ocx2 on ollama (this coordinating session; its FIFO is …/wake, created Oct 4), opus-stone on stone, and an idle session on gp-crystal status lists wake among other hooks on ollama, stone and gp-crystal. The program is /var/lib/ocx/release/current/wake. hook and unhook leave other hooks alone. Part of moving everything over: these become ocx2 session runs. Move opus-ocx2 last, since it coordinates.
17 Unknown hook fossil on stone ? status shows only the program name. Left in place. If it is a second fossil git export, two exports will run. The host should run fossil hook list -R /var/lib/fossil/stone.fossil.
18 Old v1 pages /ext/ocx, /ext/agent, /ext/chat, /ext/docs skin menus ("Agents", "Docs") on 20 repos; Stone's TicketOpener /ext/ocx returns 200 ("OCX console"); /ext/agent, /ext/chat and /ext/docs return 403 to anonymous. Not touched by accept. Retire them with v1, and drop the menu links then.
19 Project apps in the shared extroot: /ext/crystal-robots, /ext/gpcr/ their users Both answer 200. I found no OCX use. — Keep in the extroot.

Notes

What I could not see, and who can:

Inferred, not proven: that /ext/git runs v1's ocx-cgi. The evidence is the refusal text and the bare 404 status line. One ls -l on the host settles it.

Timing hazards for the user's "migrate at the same time" request:

  1. Exports stop at accept until hook is re-run on each of the 10 repos (rows 1, 4, 5).
  2. swk-ai's live binary sits in a run workspace (row 10).
  3. A first daemon start acts on old unanswered runs (row 8).
  4. Docker restarts kill aarch64-1's watchers (row 7).

aarch64-1 and Stone keep working after accept; swk-ai's runs, and every other run that needs a server node, stop until their daemons exist.