From ef7f15cfc5c93126b93b81a71600770f40af4c40 Mon Sep 17 00:00:00 2001 From: mayor Date: Tue, 30 Dec 2025 21:04:57 -0800 Subject: [PATCH] feat(session): Add GUPP propulsion nudge for autonomous work execution MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SessionStart now sends a PropulsionNudge after the beacon to trigger Claude to check the hook and begin work immediately. This makes the propulsion principle bulletproof - agents no longer wait for witness to nudge them. GUPP = Gas Town Universal Propulsion Principle: "If work is on your hook, YOU RUN IT." 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- internal/session/manager.go | 10 ++++++++++ internal/session/names.go | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/internal/session/manager.go b/internal/session/manager.go index 497f4055..abc27a1a 100644 --- a/internal/session/manager.go +++ b/internal/session/manager.go @@ -201,6 +201,16 @@ func (m *Manager) Start(polecat string, opts StartOptions) error { // Non-fatal: session works without beacon } + // GUPP: Gas Town Universal Propulsion Principle + // Send the propulsion nudge to trigger autonomous work execution. + // The beacon alone is just metadata - this nudge is the actual instruction + // that triggers Claude to check the hook and begin work. + // Small delay to ensure beacon is processed first. + time.Sleep(500 * time.Millisecond) + if err := m.tmux.NudgeSession(sessionID, PropulsionNudge()); err != nil { + // Non-fatal: witness can still nudge later + } + return nil } diff --git a/internal/session/names.go b/internal/session/names.go index ecedf91c..5a2b6118 100644 --- a/internal/session/names.go +++ b/internal/session/names.go @@ -57,3 +57,11 @@ func SessionBeacon(address, molID string) string { timestamp := time.Now().Format("2006-01-02T15:04") return fmt.Sprintf("[GAS TOWN] %s • %s • %s", address, molID, timestamp) } + +// PropulsionNudge generates the GUPP (Gas Town Universal Propulsion Principle) nudge. +// This is sent after the beacon to trigger autonomous work execution. +// The agent receives this as user input, triggering the propulsion principle: +// "If work is on your hook, YOU RUN IT." +func PropulsionNudge() string { + return "Run `gt mol status` to check your hook and begin work." +}