esc
Sunday Night
The V3 Saga

Sunday Night

The Mission After the Weekend Saga's architectural epiphanies, it was time to prove the theory. Target: Rocket components with full lifecycle. Objective: Make web components feel like they belong in...

December 13, 2025

The Mission

After the Weekend Saga’s architectural epiphanies, it was time to prove the theory. Target: Rocket components with full lifecycle. Objective: Make web components feel like they belong in a Go codebase.

The Battle of the Infinite Spinner

00:15 AM: Page loads. Spinner spins. Spins more. Still spinning.
00:16 AM: “We need both JS imports? No wait, just one. No wait…”
00:17 AM: datastar-pro-rocket.js - the pro version with rockets, obviously.
Page loads. πŸŽ‰

The Signal Hunt

Components rendered. Looked beautiful. Clicked “Back”…

Uncaught ReferenceError: $tabID is not defined
    at cleanup
    at disconnectedCallback

The reptile brain speaks: “but when we create a component we can pass the tabid as a data-parameter somehow?”

Claude (99.7% trusting the reptile): Let me check the docs…

data-props:tab-id="string" + $$tabId = 🦎🧠πŸ’ͺ

The Moment of Truth

πŸ“¦ Loading catalog component
πŸ“‹ Loading menu  
πŸ“¦βŒ Catalog component closed    ← onCleanup() FIRED

The component lifecycle works. Setup runs, cleanup runs. Server knows when components live and die. Go templates serving Rocket fuel.

What We Shipped

  • Menu loads Rocket components via @get (no pre-rendering hidden divs)
  • Props passed properly: data-attr:tab-id β†’ $$tabId
  • onCleanup() notifies server on component removal
  • Full emoji-powered lifecycle logging

The Stack (as of midnight)

Browser ──@get──→ Go Handler ──SSE──→ <agent-catalog>
                                          ↓
                                      $$tabId captured
                                          ↓
                                      onCleanup()
                                          ↓
                                      fetch('/close')
                                          ↓
                                      πŸ“¦βŒ logged

Status

  • Rocket: launched πŸš€
  • Reptile brain: vindicated 🦎
  • Architecture: validated βœ“
  • Sleep: soonβ„’

The V3 POC lives. The game loop is dumb. The components are smart. NATS routes. Context manages lifecycle. And now Rocket components join the party.

Tomorrow: maybe Phase 2 Strategy component. Or maybe more kombucha. The reptile will decide.