fix: Commit embedded formulas for go install @latest (#117)
* fix: Commit embedded formulas for go install @latest The internal/formula/formulas/ directory was gitignored, causing `go install github.com/steveyegge/gastown/cmd/gt@latest` to fail with: pattern formulas/*.formula.json: no matching files found The go:embed directive requires these files at build time, but go install @latest doesn't run go:generate. By committing the generated formulas, users can install directly without cloning. Maintainers should run `go generate ./...` after modifying .beads/formulas/ to keep the embedded copy in sync. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * ci: Add check for committed embedded formulas Adds a new CI job that: 1. Builds without running go:generate (catches missing formulas) 2. Verifies committed formulas match .beads/formulas/ source Also removes redundant go:generate steps from other jobs since formulas are now committed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore: exclude towers-of-hanoi test formulas from embed These are durability stress test fixtures (pre-computed move sequences), not production formulas users need. Excluding them reduces embedded content by ~10K lines. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: gus <steve.yegge@gmail.com>
This commit is contained in:
committed by
GitHub
parent
4ffdc4fe40
commit
1e76bfd7ce
@@ -0,0 +1,169 @@
|
||||
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 gt-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"
|
||||
Reference in New Issue
Block a user