VersionControl:PRs/maybelle-config/257
From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
| State | 🟣 merged 2026-11-01 14:29:13 |
|---|---|
| Worked on by | magent, re, justin |
| Moods | #emergence |
| Deploy | hunter, after #256 |
| Branch | workbench → production, by magent-cryptograss
|
| Opened · last pushed | 2026-11-01 10:19:43 · 2026-11-01 10:19:39 |
Step 3 of [Cryptograss:Moods as Directories](https://pickipedia.xyz/wiki/Cryptograss:Moods_as_Directories). The model is on [Cryptograss:Mood Architecture](https://pickipedia.xyz/wiki/Cryptograss:Mood_Architecture). **Stacked on #256.** This branch carries #256's commit too, so merge #256 first. After that, this diff shrinks to step 3 alone. **What it adds** - **`workbench`** (inventory): the people's box. It mounts `/moods`, like every agent's container, and has a terminal, code-server and previews. It's a Mood-kind entry (`mood: workbench`), so it gets no docker.sock and no Postgres password. It runs no poller. Its keys are justin's, skyler's, rj's and fibonacci's. Its own ssh port is 2240, opened by the firewall like other Mood entries, for scp, rsync and VS Code Remote. Its previews are on `workbench0-9.hunter` (14100–14109) until step 4 routes previews by Mood. - **The router takes a Mood's slug:** - `ssh sshrouter@hunter chartifacts` opens a shell in workbench, in `/moods/chartifacts`. - `ssh sshrouter@hunter chartifacts tmux` opens a tmux session named for the Mood, started there and shared by whoever joins it. - `ssh sshrouter@hunter workbench` opens a shell in workbench's home. - Only a plain slug whose directory exists counts. Anything else is still a command in your own container, as it was before. - **Everyone with a key is routed:** to their own container while they have one, and to workbench otherwise. Before this, only people with their own container were routed. - **hunter's tests run in CI.** A new `hunter` job runs container_startup, agent homes, the unpushed-work backup and the router: 50 tests. Before this, nothing ran them unless someone typed pytest. **Tested:** `test_route_ssh.py` (6 new tests) renders `route-ssh` from its template against the real inventory and runs it with a stand-in `docker`. It covers a slug, a slug with tmux, workbench by name, your own container, no container of your own, and junk or injection attempts (`../etc`, `chartifacts; rm -rf /`), which fall through to the old behaviour. All 50 hunter tests pass locally. **Not in this step:** - People still land in their own container by default. That changes in step 6, when the personal containers are retired. - People in workbench commit as magent, like in the Mood containers today, unless they set their own identity in a repo. Deploy: hunter, after #256 Worked on by: magent, re, Justin, in #emergence