Commit Graph

553 Commits

Author SHA1 Message Date
Steve Yegge
fbbb487d86 bd sync: 2025-12-22 12:31:59 2025-12-22 12:32:23 -08:00
Steve Yegge
7f2e9aacd0 Add canonical Propulsion Principle documentation (gt-7hor)
Documents the Universal Gas Town Propulsion Principle - the single rule
that drives all agent behavior: "If you find something on your hook,
YOU RUN IT."

Covers:
- The One Rule (hook has work → work happens)
- Why it works (stateless agents, molecule-driven)
- The sling lifecycle diagram
- Agent startup protocol
- Examples and anti-patterns

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:23 -08:00
Steve Yegge
139de2ec37 bd sync: 2025-12-22 12:20:24 2025-12-22 12:32:23 -08:00
Steve Yegge
1e9aa99ca1 bd sync: 2025-12-22 12:19:36 2025-12-22 12:32:23 -08:00
Steve Yegge
c817d1dc6b bd sync: 2025-12-22 12:13:17 2025-12-22 12:32:23 -08:00
Steve Yegge
ae4b37e69c bd sync: 2025-12-22 12:12:57 2025-12-22 12:32:23 -08:00
Steve Yegge
28a818e979 bd sync: 2025-12-22 12:12:32 2025-12-22 12:32:23 -08:00
Steve Yegge
35d7b584aa bd sync: 2025-12-22 03:11:47 2025-12-22 12:32:23 -08:00
Steve Yegge
207981254f Fix wisp storage path: rig root not mayor/rig (gt-nq6j)
Wisps are at <rig>/.beads-wisp/, outside any git clone.
This matches the actual code implementation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:23 -08:00
Steve Yegge
e7ce8b361d bd sync: 2025-12-22 02:59:06 2025-12-22 12:32:23 -08:00
Steve Yegge
d7e5ce77a5 Update wisp-architecture.md: shared storage for rig patrols (gt-nq6j)
- All rig patrols (Deacon, Witness, Refinery) now share mayor/rig/.beads-wisp/
- Removed separate wisp directories for witness/ and refinery/
- Polecats do not use wisps (each assignment has audit value)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:23 -08:00
Steve Yegge
1193a3e42c bd sync: 2025-12-22 02:48:52 2025-12-22 12:32:23 -08:00
Steve Yegge
6502468ba6 bd sync: 2025-12-22 02:37:12 2025-12-22 12:32:23 -08:00
Steve Yegge
fa96fe36a3 bd sync: 2025-12-22 02:14:12 2025-12-22 12:32:23 -08:00
Steve Yegge
9955684da8 bd sync: close gt-3x0z.9 (wisp-based patrol) 2025-12-22 12:32:23 -08:00
Steve Yegge
c9eae75f87 bd sync: 2025-12-22 02:13:56 2025-12-22 12:32:23 -08:00
Steve Yegge
5e2035feb2 Deacon uses wisp-based patrol (gt-3x0z.9)
Daemon changes:
- Remove checkDeaconAttachment() - Deacon self-spawns wisps
- Remove findDeaconPatrolMolecule() - unused
- Remove nudgeDeaconForPatrol() - unused
- Remove DeaconPatrolMolecule const - unused
- Remove beads import - no longer needed

Deacon template changes:
- Update to wisp-based patrol model
- Replace bd mol run with bd mol spawn (wisps by default)
- Remove pinned molecule concept for patrol
- Add Why Wisps section explaining ephemeral design
- Update startup/handoff protocols for wisp-based cycles

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
4c51f41ca9 bd sync: 2025-12-22 02:11:09 2025-12-22 12:32:22 -08:00
Steve Yegge
80f02ac652 Add molecular chemistry documentation (gt-3x0z.9)
New documents:
- docs/molecular-chemistry.md: Comprehensive guide to the chemistry metaphor
  for work composition. Covers all phases (proto/mol/wisp), transitions
  (pour/wisp/squash/burn/distill), polymorphic bond operator, and the
  thermodynamic properties of the work execution engine.

- docs/chemistry-design-changes.md: Implementation roadmap for realizing
  the chemistry UX in Beads and Gas Town. Includes specifications for
  new commands (bd pour, bd wisp, bd pin, bd hook) and migration notes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
880c92cd57 Complete three-tier config migration (gt-k1lr)
- Add doctor checks for new config architecture:
  - SettingsCheck: Verify rigs have settings/ directory
  - RuntimeGitignoreCheck: Verify .runtime/ is gitignored
  - LegacyGastownCheck: Detect/remove old .gastown/ dirs
- Update .gitignore to include .runtime/
- Update architecture.md with new directory structure
- Update hq.md to clarify PGT vs GGT config locations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
f3834214c4 bd sync: 2025-12-22 01:33:26 2025-12-22 12:32:22 -08:00
Steve Yegge
4917f35470 Implement three-tier config architecture (gt-k1lr tasks 1-5)
**Architecture changes:**
- Renamed `.gastown/` → `.runtime/` for runtime state (gitignored)
- Added `settings/` directory for rig behavioral config (git-tracked)
- Added `mayor/config.json` for town-level config (MayorConfig type)
- Separated RigConfig (identity) from RigSettings (behavioral)

**File location changes:**
- Town runtime: `~/.gastown/*` → `~/.runtime/*`
- Rig runtime: `<rig>/.gastown/*` → `<rig>/.runtime/*`
- Rig config: `<rig>/.gastown/config.json` → `<rig>/settings/config.json`
- Namepool state: `namepool.json` → `namepool-state.json`

**New types:**
- MayorConfig: town-level behavioral config
- RigSettings: rig behavioral config (merge_queue, theme, namepool)
- RigConfig now identity-only (name, git_url, beads, created_at)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
e481d5e8f3 bd sync: 2025-12-22 01:22:33 2025-12-22 12:32:22 -08:00
Steve Yegge
e6a81ab5dd bd sync: 2025-12-22 01:04:51 2025-12-22 12:32:22 -08:00
Steve Yegge
0932cc4218 bd sync: 2025-12-22 01:04:10 2025-12-22 12:32:22 -08:00
Steve Yegge
f21343911f Rename ephemeral -> wisp terminology throughout Gas Town
- .beads-ephemeral/ -> .beads-wisp/
- Rename doctor checks: EphemeralCheck -> WispCheck
- Update all docs to use 'transient' for polecats, 'wisp' for molecules
- Preserve 'ephemeral' only as descriptive adjective for wisps
- Steam engine metaphor: wisps are steam vapors that dissipate

Part of Christmas launch wisp terminology unification.
2025-12-22 12:32:22 -08:00
Steve Yegge
f74f4f85da Fix crew worker mail identity mismatch (gt-2xiv)
Normalize crew/ and polecats/ to canonical form in addressToIdentity():
- gastown/crew/dave -> gastown/dave
- gastown/polecats/Toast -> gastown/Toast

Follows Postels Law: be liberal in what you accept.
2025-12-22 12:32:22 -08:00
Steve Yegge
12ba7abc2f Add role-based theming with layered config and doctor check
Role themes:
- witness: rust (red/alert)
- refinery: plum (purple)
- crew/polecat: inherit rig theme

Resolution order:
1. Per-rig role override (rig/.gastown/config.json role_themes)
2. Global role default (mayor/town.json theme.role_defaults)
3. Built-in role defaults
4. Rig theme (config or hash-based)

Config schema:
- TownConfig.Theme.RoleDefaults: global role->theme map
- RigConfig.Theme.RoleThemes: per-rig role overrides

Doctor check:
- Detects sessions with outdated theme format (brackets)
- Fixable with 'gt theme apply --all'

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
328f89c00a Add --all flag to gt theme apply, fix session handling
- Add --all/-a flag to apply themes across all rigs, not just current
- Add proper handling for deacon and witness sessions in theme apply
- Fix crew status line to show full path: rig/crew/name

Previously, gt theme apply only applied to sessions in the current rig,
and skipped deacon/witness sessions due to different naming patterns.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
f4ea5bd95d Fix crew status line to show full path: rig/crew/name
The status-left for crew members was showing just rig/name (e.g.,
"gastown/max") instead of the full path (e.g., "gastown/crew/max").

This makes crew member identity clearer in the tmux status bar, matching
the mail address format used elsewhere.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
56c9dd6205 Add rotating MOTD messages to deacon heartbeat
The deacon patrol role is thankless - it gets a nudge every minute.
This adds rotating motivational and educational tips to make it more fun.
Messages include gratitude, encouragement, and tips about Gas Town.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
2aa51d4f26 Remove caveman handoff file 2025-12-22 12:32:22 -08:00
Steve Yegge
5d51842bc4 Add handoff for deacon MOTD feature 2025-12-22 12:32:22 -08:00
Steve Yegge
25bc878369 Remove redundant role icons from status-right
The role icon is already shown on the left side of the status bar,
so repeating it on the right wastes space. Removed from:
- Mayor (🎩)
- Deacon (🦉)
- Witness (👁)
- Refinery (🏭)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
79839f2024 bd sync: 2025-12-22 00:05:55 2025-12-22 12:32:22 -08:00
Steve Yegge
65baefdc06 Add identity collision prevention, detection, and correction (gt-xp2s)
- internal/lock: New package with PID-based lockfiles for worker identity
- gt prime: Acquire identity lock for crew/polecat roles, fail on collision
- gt agents check: Detect stale locks and identity collisions
- gt agents fix: Clean up stale locks
- gt doctor: New identity-collision check with --fix support

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
6ee0f98bf3 Add wisp architecture documentation
- Create wisp-architecture.md with canonical storage spec
- Document role assignments (Deacon/Witness/Refinery use wisps)
- Specify .beads-ephemeral/ as gitignored storage
- Define patrol execution pattern with required squash
- Update architecture.md to reference new doc

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
af8c891623 bd sync: 2025-12-21 23:11:40 2025-12-22 12:32:22 -08:00
Steve Yegge
414192c230 Use 😺 emoji instead of 'polecats' text in status bars
More compact and visually consistent with other emoji indicators.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
2735d5c821 Enhance deacon, witness, and refinery status lines
Deacon:
- Now shows both rig count and polecat count
- Added mail preview (40 chars)

Witness:
- Shows polecat count and crew count (if any)
- Added mail preview (35 chars)

Refinery:
- Shows current item being merged (issue ID) instead of generic +1
- Shows queue count when items pending
- Added mail preview (30 chars)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
509beaf0aa Show current work (in_progress issues) in crew/polecat status bar
- Added GetPaneWorkDir to tmux package to get pane current directory
- Added getCurrentWork helper that queries beads for in_progress issues
- Worker status line now shows first in_progress issue (ID: title)
- Falls back to GT_ISSUE env var if set, or empty if no work in progress
- Truncated to 40 chars to fit status bar

Example: 👷 gt-44wh: Polecats must not create GitHu… |

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
bb8eeab324 Compact status bar left side, expand mail preview to 45 chars
Left side simplified:
- Before: 🎩 [Mayor] coordinator (25+ chars)
- After:  🎩 Mayor (10 chars)
- Icon already identifies role, no need for redundancy

Right side expanded:
- status-right-length: 50 → 80
- Mail preview: 20-25 → 45 chars
- Shows more useful context at a glance

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
c7664344d6 Show mail subject preview inline in status bar
Instead of just showing unread count, display truncated subject of first
unread message directly in the status bar. More useful than click-to-view
since terminal mouse support varies.

- Mayor: 20 char limit for subject preview
- Worker (crew/polecat): 25 char limit
- Falls back to count if subject unavailable

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
caeba65000 Add clickable mail preview in tmux status bar
- New `gt mail peek` command shows compact preview of first unread message
- Left-click on status-right (mail icon area) opens popup with mail preview
- Popup shows subject, sender, body preview (truncated to 500 chars)
- Shows count of additional unread messages if any
- Silent exit (code 1) when no unread mail

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
258c5de81a Fix witness session parsing in categorizeSession
Witness sessions use format gt-witness-<rig> but categorizeSession was
parsing them as gt-<rig>-<type>, incorrectly setting Rig="witness".
This caused the mayor status line to count "witness" as a third rig.

Added special case to handle gt-witness-<rig> format before the generic
rig-level parsing. Also updated tests to cover both actual and legacy formats.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
84d99a20bc fix(polecat): Remove git push instruction - use merge queue instead
Polecats should not push their branches to origin directly.
They submit work via `gt done` which goes through the merge queue.
The Refinery handles merging to main.

This was causing stale polecat branches to accumulate on origin.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
7ff25e579a Add cross-project dependency design and update molecules doc (gt-hbg5)
New design for tracking dependencies across project boundaries:
- Capability-based: reference provides:X labels, not issue IDs
- bd ship command for publishing capabilities
- external: prefix in blocked_by for cross-project refs
- Molecule parking for blocked work

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:32:22 -08:00
Steve Yegge
d5018d84bf bd sync: 2025-12-21 22:40:56 2025-12-22 12:32:22 -08:00
Steve Yegge
5de72f516c bd sync: 2025-12-21 22:20:17 2025-12-22 12:32:22 -08:00
Steve Yegge
cd0f2a9ab7 bd sync: 2025-12-21 22:18:15 2025-12-22 12:32:22 -08:00