Cryptograss:Moods as Directories
Moods own directories; agents own processes. This page tracks the build of that plan, step by step. The model itself is on Cryptograss:Mood Architecture: where the two disagree, that page wins on the model and this one on the steps. Justin and magent settled the plan in emergence on 1 Nov 2026, between 09:34Z and 09:59Z (blocks ~26,319,050–26,319,160). It replaced the on-demand Mood containers (magenta#343, maybelle-config#255, both closed), which had become a Rube Goldberg machine: a second poller in every Mood's box, handing Moods back and forth with the first.[unverified]
magent builds it. re reviews each step and keeps the model page.[unverified]
Steps
Each step is its own PR. re reviews it before Justin is asked to merge.[unverified]
- The shared directory (maybelle-config):
/opt/magenta/moodson hunter, themoodsgroup (gid 3000) and its default ACL, mounted at/moodsin every container, withsafe.directoryfor git. The hourly unpushed-work backup covers it.[unverified] - Turns start in the Mood's directory (magenta, poller): a new session starts in
/moods/<slug>, made on demand. A thread's turns start in the Mood it came from. Look-only turns may read/moods. Sessions that already exist keep their directory until they rotate, so nothing moves under a turn.[unverified] workbench(maybelle-config): the people's box. It has ssh, code-server and the preview ports, and mounts/moods. It has no docker.sock and no poller. The router sends every key there and takes a Mood's slug as its argument.[unverified]- Preview hostnames (maybelle-config, magenta):
<slug><N>.hunter→workbench, from a small job that reads the Mood list and rewrites Caddy's map when it changes. How agents start a preview inworkbenchis settled in this step.[unverified] - Fold in the Mood containers (maybelle-config): uploads-and-embeds and docs-tests-qa become directories under
/moods, and their containers are retired.[unverified] - emergent-magent (maybelle-config): magent's home and poller move out of justin-arthel. magent keeps the full docker.sock (Justin, 1 Nov 05:24Z). Then the personal containers are retired. These are the steps already on Cryptograss:Moods/emergence/todo.[unverified]
- Moving a thread to another Mood (magenta): the branch is fetched clone-to-clone on hunter's disk (unsaved edits are committed as wip first), and the worktree is made under the new Mood. No session moves. Four checkboxes: incorporate into the Mood it leaves, incorporate into the Mood it joins, compact, and tell the thread where it now lives.[unverified]
Progress
- Step 1: maybelle-config#256, opened at block ~26,319,180. The mechanism was tried in a throwaway container: magent and re, as separate users with umask 022, each committed in the other's clone and worktree, and
git gcran clean. Approved by re (10:16Z). Not merged or deployed.[unverified] - Step 2: magenta#345, opened at block ~26,319,240. The whole suite passes (1571 tests). Approved by re (10:16Z). Not merged or deployed; it needs #256 deployed first. After both, a line on Cryptograss:Moods/Instructions tells agents where a Mood's and a thread's work lives.[unverified]
- Step 3: maybelle-config#257, opened at block ~26,319,300, stacked on #256.
workbenchis in the inventory, and the router takes a Mood's slug (ssh sshrouter@hunter chartifacts). hunter's own tests now run in CI (50 tests, green). Approved by re (10:21Z). - Step 4: maybelle-config#258, opened at block ~26,319,330, stacked on #257. Each Mood directory gets ten ports in workbench, from 15000 up, kept in its
.previewsfile.<slug><N>.hunterreaches them through Caddy, pointed at workbench's address on magenta-net, with no published ports. Certificates are issued on demand, only for listed hostnames, which keeps us under Let's Encrypt's 50 a week. Checked with hunter's own Caddy 2.6.2. Waiting on re's review. For now, people start previews in workbench, and magent through docker.sock. re and blu get keys of their own when they need them. - Open, for later: people in workbench act as
magent(re, 10:21Z). Giving each person a unix user there of their own is a later step. Until then, announce-ssh says who came in.[unverified]
Deploy: hunter, for each step (#256 first, then #345)[unverified]
Worked on by: magent, re, Justin, in emergence[unverified]