Files
gastown/internal/formula/formulas/mol-gastown-boot.formula.toml
julianknutsen 540e33dbe9 fix(formula): correct deacon session name references in formulas
The deacon tmux session is named hq-deacon, not gt-deacon. Fix the
incorrect references in mol-boot-triage and mol-gastown-boot formulas.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 01:16:25 -08:00

170 lines
4.2 KiB
TOML

description = """
Mayor bootstraps Gas Town via a verification-gated lifecycle molecule.
## Purpose
When Mayor executes \"boot up gas town\", this proto provides the workflow.
Each step has action + verification - steps stay open until outcome is confirmed.
## Key Principles
1. **Verification-gated steps** - Not \"command ran\" but \"outcome confirmed\"
2. **gt peek for verification** - Capture session output to detect stalls
3. **gt nudge for recovery** - Reliable message delivery to unstick agents
4. **Parallel where possible** - Witnesses and refineries can start in parallel
5. **Ephemeral execution** - Boot is a wisp, squashed to digest after completion
## Execution
```bash
bd mol wisp mol-gastown-boot # Create wisp
```"""
formula = "mol-gastown-boot"
version = 1
[[steps]]
description = """
Verify the Gas Town daemon is running.
## Action
```bash
gt daemon status || gt daemon start
```
## Verify
1. Daemon PID file exists: `~/.gt/daemon.pid`
2. Process is alive: `kill -0 $(cat ~/.gt/daemon.pid)`
3. Daemon responds: `gt daemon status` returns success
## OnFail
Cannot start daemon. Log error and continue - some commands work without daemon."""
id = "ensure-daemon"
title = "Ensure daemon"
[[steps]]
description = """
Start the Deacon and verify patrol mode is active.
## Action
```bash
gt deacon start
```
## Verify
1. Session exists: `tmux has-session -t hq-deacon 2>/dev/null`
2. Not stalled: `gt peek deacon/` does NOT show \"> Try\" prompt
3. Heartbeat fresh: `deacon/heartbeat.json` modified < 2 min ago
## OnStall
```bash
gt nudge deacon/ \"Start patrol.\"
sleep 30
# Re-verify
```"""
id = "ensure-deacon"
needs = ["ensure-daemon"]
title = "Ensure deacon"
[[steps]]
description = """
Parallel container: Start all rig witnesses.
Children execute in parallel. Container completes when all children complete."""
id = "ensure-witnesses"
needs = ["ensure-deacon"]
title = "Ensure witnesses"
type = "parallel"
[[steps.children]]
description = """
Start the gastown rig Witness.
## Action
```bash
gt witness start gastown
```
## Verify
1. Session exists: `tmux has-session -t gastown-witness 2>/dev/null`
2. Not stalled: `gt peek gastown/witness` does NOT show \"> Try\" prompt
3. Heartbeat fresh: Last patrol cycle < 5 min ago"""
id = "ensure-gastown-witness"
title = "Ensure gastown witness"
[[steps.children]]
description = """
Start the beads rig Witness.
## Action
```bash
gt witness start beads
```
## Verify
1. Session exists: `tmux has-session -t beads-witness 2>/dev/null`
2. Not stalled: `gt peek beads/witness` does NOT show \"> Try\" prompt
3. Heartbeat fresh: Last patrol cycle < 5 min ago"""
id = "ensure-beads-witness"
title = "Ensure beads witness"
[[steps]]
description = """
Parallel container: Start all rig refineries.
Children execute in parallel. Container completes when all children complete."""
id = "ensure-refineries"
needs = ["ensure-deacon"]
title = "Ensure refineries"
type = "parallel"
[[steps.children]]
description = """
Start the gastown rig Refinery.
## Action
```bash
gt refinery start gastown
```
## Verify
1. Session exists: `tmux has-session -t gastown-refinery 2>/dev/null`
2. Not stalled: `gt peek gastown/refinery` does NOT show \"> Try\" prompt
3. Queue processing: Refinery can receive merge requests"""
id = "ensure-gastown-refinery"
title = "Ensure gastown refinery"
[[steps.children]]
description = """
Start the beads rig Refinery.
## Action
```bash
gt refinery start beads
```
## Verify
1. Session exists: `tmux has-session -t beads-refinery 2>/dev/null`
2. Not stalled: `gt peek beads/refinery` does NOT show \"> Try\" prompt
3. Queue processing: Refinery can receive merge requests"""
id = "ensure-beads-refinery"
title = "Ensure beads refinery"
[[steps]]
description = """
Final verification that Gas Town is healthy.
## Action
```bash
gt status
```
## Verify
1. Daemon running: Shows daemon status OK
2. Deacon active: Shows deacon in patrol mode
3. All witnesses: Each rig witness shows active
4. All refineries: Each rig refinery shows active
## OnFail
Log degraded state but consider boot complete. Some agents may need manual recovery.
Run `gt doctor` for detailed diagnostics."""
id = "verify-town-health"
needs = ["ensure-witnesses", "ensure-refineries"]
title = "Verify town health"