Migrate startup paths from SessionBeacon to StartupNudge (gt-7pp3l)

All 12 startup paths now use session.StartupNudge instead of the
older SessionBeacon pattern. The key difference is that StartupNudge
includes sender information, enabling better predecessor discovery
via gt seance.

Files updated:
- crew_lifecycle.go: 3 locations (refresh, restart)
- start.go: 2 locations (crew start)
- deacon.go: 1 location (deacon start)
- witness.go: 1 location (witness start)
- up.go: 4 locations (mayor, witness, crew, polecat)
- mayor.go: 1 location (mayor start)
- session/manager.go: 1 location (polecat spawn)

Format change:
Old: [GAS TOWN] address • molID • timestamp
New: [GAS TOWN] recipient <- sender • timestamp • topic[:mol-id]

This completes the Agent Startup Consolidation epic (gt-85whr).

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
gastown/crew/gus
2025-12-31 11:52:34 -08:00
committed by Steve Yegge
parent 6f1b6269b1
commit b7c26d52e1
7 changed files with 79 additions and 46 deletions

View File

@@ -799,12 +799,13 @@ func runStartCrew(cmd *cobra.Command, args []string) error {
// Give Claude time to initialize after process starts
time.Sleep(constants.ShutdownNotifyDelay)
// Inject session beacon for predecessor discovery via /resume
// Inject startup nudge for predecessor discovery via /resume
address := fmt.Sprintf("%s/crew/%s", rigName, name)
beacon := session.SessionBeacon(address, "")
if err := t.NudgeSession(sessionID, beacon); err != nil {
// Non-fatal: session works without beacon
}
_ = session.StartupNudge(t, sessionID, session.StartupNudgeConfig{
Recipient: address,
Sender: "human",
Topic: "cold-start",
}) // Non-fatal: session works without nudge
// Send gt prime to initialize context
if err := t.NudgeSession(sessionID, "gt prime"); err != nil {
@@ -940,10 +941,13 @@ func startCrewMember(rigName, crewName, townRoot string) error {
// Give Claude time to initialize
time.Sleep(constants.ShutdownNotifyDelay)
// Inject session beacon for predecessor discovery via /resume
// Inject startup nudge for predecessor discovery via /resume
address := fmt.Sprintf("%s/crew/%s", rigName, crewName)
beacon := session.SessionBeacon(address, "")
_ = t.NudgeSession(sessionID, beacon) // Non-fatal
_ = session.StartupNudge(t, sessionID, session.StartupNudgeConfig{
Recipient: address,
Sender: "human",
Topic: "cold-start",
}) // Non-fatal
// Send gt prime to initialize context (non-fatal: session works without priming)
_ = t.NudgeSession(sessionID, "gt prime")