M1 decisions
Recorded so a later change has to contradict them on purpose.
Accepted
- The index speaks factory, not multiplexer. Session lists and encoded window titles are not the product.
- Window = seat. Role isolation is a window, not a pane.
- Views are cameras. Recipes live in the app. They do not mutate the land.
- Observers do not resize. Snapshots and mosaics never
SIGWINCHa live agent. - tmux stays as process host. Do not shop multiplexers for a compositor they cannot be.
- One tree, several renderers. Keyboard TUI now; tablet attach by embedding this TUI; a seat server later if live mosaics must be honest.
- Materialize is optional and temporary.
Rejected
| Idea | Why not |
|---|---|
Keep prefix + s as the factory chooser |
Lists the wrong tree |
| One tmux session per milestone as identity | Encodes WHAT as WHERE; the index already crosses sessions |
| Flatten every seat into one session before the tablet has the tree | Makes tmux-ws's window list the old chooser |
| Ticket workshop as a permanent 2×2 of panes | Skip-level glass; unreadable on a tablet; layout law |
| View-sized live attach of the real windows | One window, one size; shrinks or crops |
| Switch to Zellij / WezTerm mux for views | Same ontology |
| Pixel-scale VNC of terminals | Works, looks bad, wrong layer |
factory-tui as a display-popup that exits on go |
Cannot be the standing embed |
Open (not M1)
- Declared seat size (last interactive client, or a default such as 160×50) once a seat server exists.
- A Home control in tmux-ws that returns the client to the factory session.
- Whether machine crew stays in its own session forever.
- Crane-rooted Nix package so the binary survives store GC.
Observable test for M1
A stranger who has cloned this repository can:
- Read flat-land and compositor and state what a seat, a view, and an observer are.
- Run
nix develop -c cargo testand see the window-name parser and colour snapshot tests pass. - Run the binary inside tmux, walk a tree that is not a session list, and open a seat without the app resizing other seats.
The milestone artifact is this document set plus the browse-camera
prototype. It is marked temporary: a later milestone owns the
rooted package and the standing --serve embed.