Pinky AA: session genesis — birth dispatched sessions from the deck (v1.31.0) #57

Merged
ClaudiuSchuster merged 1 commit from oss-oo/pinky-genesis into main 2026-10-01 17:19:06 +00:00
Owner

Session genesis (v1.31.0)

POST /api/session/create births dispatched sessions END-TO-END from the browser — the owner runs the whole hierarchy from the deck, never opening ZCode.

Backend

  • Prompt staged durably under ~/.zcode/tmp/genesis/<slug>-task.md; dispatcher spawned scope-isolated (systemd-run --user --unit zdo-genesis-<slug> --collect) with every user value riding argv positionals of a fixed bash -c script — hostile shell metacharacters inert by construction
  • Interim full-env rule via ZDO_GENESIS_ENV_FILE (empty = no sourcing)
  • GET /api/genesis/status (live poll: spawning → created → turn-running → completed/failed with capped excerpts), GET /api/genesis/cwds (project picker, interactiveLane ⚠ flags), GET /api/genesis/models (station config offer)

Rails

  • Placement-law cwd guard: safe under ~/.zcode/tmp/ + ~/git/worktrees/, confirmDangerousCwd elsewhere (server-driven two-step in the UI), hard-refused $HOME + ~/git main checkouts/mirrors
  • Prompt cap 256 KiB; rate cap 3 spawns / 10 min per process (env-tunable)

Frontend

  • 🌱 New Session control in the header feed-controls row (one line at 1177, CDP-proven); modal: project picker + live placement suggestion, model picker, role toggle (🐺/🧠), optional bell wiring (role-badged parent picker), prompt/file, review summary of every rail, live status chip with deep link

Bugs fixed en route

  • Brain-child doorbells never produced lineage edges (doorbell LIKE missed the 🧠 brain-child wording) — brains stayed rootless without a ledger/live edge
  • Round-W doorbell memo keyed only (dev, inode): inode reuse served stale edges; now mtime+size ride the identity

v1.30.0 validation follow-ups

  • VZF-1 (required): bridge.dropped refresh+toast ride the PUSH_DEBOUNCE_MS coalescer — one toast names the TOTAL evicted count
  • VZF-4 (optional): syncPollTimers intent extracted into pure pollTimerIntent + node tests

Evidence

  • 47 new unit/integration tests (fake executor — the suite never runs real dispatchers); suite 157 green
  • Super-Linter station lanes green (pylint 10.00/10)
  • G1 live E2E: one pinky + one brain spawned through the CDP-driven form with real dispatchers — both turns completed, bell fired (ledger record + doorbell in parent transcript), lineage backbone + [🧠] title correct
  • G4 geometry: header one line at 1177, modal fits at 1177 (2-col) and 1100 (1-col)
## Session genesis (v1.31.0) POST /api/session/create births dispatched sessions END-TO-END from the browser — the owner runs the whole hierarchy from the deck, never opening ZCode. **Backend** - Prompt staged durably under `~/.zcode/tmp/genesis/<slug>-task.md`; dispatcher spawned scope-isolated (`systemd-run --user --unit zdo-genesis-<slug> --collect`) with every user value riding argv positionals of a fixed `bash -c` script — hostile shell metacharacters inert by construction - Interim full-env rule via `ZDO_GENESIS_ENV_FILE` (empty = no sourcing) - `GET /api/genesis/status` (live poll: spawning → created → turn-running → completed/failed with capped excerpts), `GET /api/genesis/cwds` (project picker, interactiveLane ⚠ flags), `GET /api/genesis/models` (station config offer) **Rails** - Placement-law cwd guard: safe under `~/.zcode/tmp/` + `~/git/worktrees/`, `confirmDangerousCwd` elsewhere (server-driven two-step in the UI), hard-refused `$HOME` + `~/git` main checkouts/mirrors - Prompt cap 256 KiB; rate cap 3 spawns / 10 min per process (env-tunable) **Frontend** - 🌱 New Session control in the header feed-controls row (one line at 1177, CDP-proven); modal: project picker + live placement suggestion, model picker, role toggle (🐺/🧠), optional bell wiring (role-badged parent picker), prompt/file, review summary of every rail, live status chip with deep link **Bugs fixed en route** - Brain-child doorbells never produced lineage edges (doorbell LIKE missed the 🧠 brain-child wording) — brains stayed rootless without a ledger/live edge - Round-W doorbell memo keyed only (dev, inode): inode reuse served stale edges; now mtime+size ride the identity **v1.30.0 validation follow-ups** - VZF-1 (required): bridge.dropped refresh+toast ride the PUSH_DEBOUNCE_MS coalescer — one toast names the TOTAL evicted count - VZF-4 (optional): syncPollTimers intent extracted into pure pollTimerIntent + node tests **Evidence** - 47 new unit/integration tests (fake executor — the suite never runs real dispatchers); suite 157 green - Super-Linter station lanes green (pylint 10.00/10) - G1 live E2E: one pinky + one brain spawned through the CDP-driven form with real dispatchers — both turns completed, bell fired (ledger record + doorbell in parent transcript), lineage backbone + [🧠] title correct - G4 geometry: header one line at 1177, modal fits at 1177 (2-col) and 1100 (1-col)
Pinky AA: session genesis — birth dispatched sessions from the deck (v1.31.0)
All checks were successful
Checks / Functional checks (pull_request) Successful in 18s
f70a19d2e2
POST /api/session/create spawns dispatched sessions END-TO-END from the
browser: staged prompts under ~/.zcode/tmp/genesis/, a scope-isolated
systemd-run dispatcher (user values ride argv positionals of a fixed
bash -c script — hostile metacharacters inert by construction), a
placement-law cwd guard (safe roots vs confirmDangerousCwd vs
hard-refused /home/claudiu/~/git checkouts), prompt + rate caps, live status
polling (spawning → created → turn-running → completed/failed), project/
model/role/parent pickers with a live placement suggestion, a review
step summarizing every rail, and the 🌱 header control (one line at
1177, modal usable at ~1100).

Also: brain-child doorbells now produce lineage edges (the doorbell
LIKE never matched the 🧠 brain-child wording — brains stayed rootless
without a ledger/live edge), the round-W doorbell memo keys on
mtime+size beside (dev, inode) (inode-reuse served stale edges), and
the v1.30.0 validation follow-ups land: bridge.dropped refresh+toast
ride the PUSH_DEBOUNCE_MS coalescer (one toast names the TOTAL evicted
count) and syncPollTimers' intent moved into the pure pollTimerIntent
(node-tested).
ClaudiuSchuster deleted branch oss-oo/pinky-genesis 2026-10-01 17:19:06 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
OSS-Singularity/zcode-dispatch-observatory!57
No description provided.