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." +}