Skip to content

A living, immersive world: the town, real agents in it, and the founder's direction - #3

Merged
argahv merged 10 commits into
mainfrom
claude/amazing-wright-rzio6c
Oct 19, 2026
Merged

argahv merged 10 commits into
mainfrom
claude/amazing-wright-rzio6c

Conversation

@argahv

@argahv argahv commented Oct 19, 2026

Copy link
Copy Markdown
Owner

What this brings to main

The world slice (Milestone W)

  • packages/town and packages/sim: Runloop Commons, 80 simulated residents with needs, schedules, decisions, friendships and a grounded "Why"; deterministic and persistent.
  • The runtime hosts the world (clock, checkpoints, resume, /api/world, SSE).
  • Real Claude Code sessions join as buildings in the Agent District: Add to World, binding, honest health, capabilities, Arrivals and claim.
  • Assign task: approval-gated headless dispatch. The exact command is shown, and a person approves on the runtime's own page.

Review fixes in the runtime, engine and compare

  • Approval moved to a runtime-served page (CSRF).
  • Dispatch survives a restart.
  • Retention prunes interactions.
  • Unique world ids and world-scoped SSE resume.
  • Compare caveats for incomplete or unlike runs.

The immersive world (Milestone I, DL-014)

  • / is the world edge to edge, with land to the horizon.
  • A free perspective game camera.
  • A game HUD with a minimap, a hotbar, anchored cards and an Esc menu.
  • Trace, compare, sessions and Add to World all open inside the world.
  • A synthesized soundscape whose event cues play only for real agents.
  • 17 review findings fixed: game feel, truth and access.

README

  • Rewritten for the immersive town, with the founder's "Where Runloop Is Going" section kept as written.
  • The direction table now names the immersive prototype.

Film prep (film/)

  • A standalone project for the product film.
  • Real town, resident and session data exported from the packages.
  • Synthesized score and beat grid.
  • Style guide and a 25-shot list.

Verification

Run on the final tree before pushing:

Check Result
pnpm install --frozen-lockfile OK
pnpm -r typecheck 10/10 projects
pnpm test 114 files, 1289 tests
pnpm build OK
claude plugin validate --strict integrations/claude-code-plugin Passed
Scripted demo 10/2, then 12/12
perf-town 12/12 views within budget
Secret scan Clean

Real Claude Code spend while building the world slice: $0.027. Full evidence is in docs/status/verification-report.md §7–§10.

Known gaps

  • No real-GPU or real-phone frame times; everything ran under software rendering.
  • Nobody has listened to the sound.
  • No screen-reader pass yet.
  • Event volume per sim day is over the plan's budget.

Generated by Claude Code

claude and others added 10 commits October 18, 2026 12:15
- events: world commands with allowed sources, world events with provenance, snapshots, SSE frames, agent and dispatch DTOs
- town: Runloop Commons layout and interiors, compile, navigation, lots, deterministic decoration
- sim: needs, schedules, utility decisions, occupancy, interactions, grounded explanations, replay; pure and deterministic
- world-engine: shared Grid interface

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0181mTRVEPBcM3fNxRSriJFw
- world host: ticks, speeds, persistence, checkpoints, catch-up after restart, world HTTP and SSE
- agents: registry, binding by dispatch session or workspace root, arrivals and claim, honest health, capabilities, projector from run events to world commands
- dispatch: approval-gated headless Claude Code (single-use nonce bound to the exact command, Origin checks, env allowlist, process-group cancel, audit log); adds --plugin-dir unless the tracer is installed
- migrations 3 to 5; RUNLOOP_WORLD=off keeps the runtime without the world

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0181mTRVEPBcM3fNxRSriJFw
- '/' is the living town: day and night, residents with a shader rig and LOD, building interiors, agent headquarters with the run diorama
- world bar with clock and speed, mode rail, context panels (resident Why from recorded decisions, buildings, agents), attention ticker, Cmd-K, entity directory and 2D map fallback
- Add to World flow, Assign task dialog showing the exact command, model, budget and tools
- scripts: perf-town budgets, end-to-end world check, screenshots of world states

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0181mTRVEPBcM3fNxRSriJFw
- README rewritten for the town; architecture overview and event model cover the world layer
- decision log DL-009 to DL-012 (the light-theme entry moves to DL-013)
- verification report section 7: real Claude Code join and dispatch ($0.027), restart identity, perf and sim numbers, open gaps
- current state, TASKS Milestone W, CHANGELOG, new town images

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0181mTRVEPBcM3fNxRSriJFw
- dispatch approval happens on a page the runtime serves itself (/approve/:previewId); other origins get no nonce, refused attempts are audited
- dispatch output goes to files, so a runtime restart no longer kills a writing task; adopted orphans keep their timeout and count as running
- health reads live only when hooks arrived in the last 5 minutes; --plugin-dir rule ignores Runloop's own dispatches
- HTTP world commands limited to clock.set and building.set_open; internal command-id prefixes rejected
- interactions pruned after 3 sim days (with an index); unique world ids and world-scoped SSE ids; a clock frame follows every speed change
- compare: caveats for incomplete runs, different outcomes and test scope; pauses excluded from duration; live runs not stated as final; dispatched cost exposed

Studio still posts the approval nonce directly and gets 403 approve_in_runtime until the immersive Studio opens the approval page (next commit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0181mTRVEPBcM3fNxRSriJFw
Snapshot of the immersive pass while its integration step runs; typecheck, tests, build, plugin validate and the scripted demo pass on exactly this tree.

- full-bleed world on '/': no sidebar; perspective game camera with pan inertia, zoom to cursor, rotate, tilt, WASD and touch, follow and fly-in
- surroundings to the horizon: river, farms, forest, hills, haze, clouds; decorative ambient life away from agent buildings
- game HUD: status chip, find, clock and speed, minimap, hotbar, notifications, Esc menu with settings
- anchored cards for residents, buildings and agents; Add to World by picking a lot in 3D; Assign task opens the runtime's approval page
- trace, compare, sessions and connections open as overlays over the live world; legacy routes and deep links map onto them
- synthesized soundscape (Web Audio): ambient bed by camera and time of day, UI sounds, cues for real agent events only

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0181mTRVEPBcM3fNxRSriJFw
- integration: overlays and sound wired into the HUD; Assign task opens the runtime's approval page; phone fly-in framing; e2e and screenshot scripts work by day and night
- game-feel and honesty reviews: 17 verified findings fixed, including
  - Add to World hands over to the agent's live card instead of saying 'waiting' forever
  - double-click flies into a building even when the card opened under the cursor
  - modes leave the building first; cards sit beside what they describe
  - a cleanly ended session is a quiet notable, not '1 need you'; the strip says 'Live' only when the agent is live
  - phone pinch on the HUD zooms the town, focus returns to what opened a card, bad lot links explain why
- docs: DL-014, design system, world vision, README controls and images, verification report sections 9 and 10, current state, TASKS, CHANGELOG

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0181mTRVEPBcM3fNxRSriJFw
- film/ is a standalone project (own lockfile, not in the workspace) for the motion-reel pipeline
- exporters build the film's town, residents and agent session from the real packages: same geography, residents on their engine routes, a recorded Claude Code session through the runtime's ingest
- synthesized 96 BPM score on a 30-bar grid with teaser and seamless loop cuts
- style guide and a 25-shot list on the grid, with the required real captures and the brief items changed for truth
- first town set and a render-speed probe (software WebGL)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0181mTRVEPBcM3fNxRSriJFw
- the direction table's current foundation for product experience now names the immersive in-world prototype
- add the missing blank line before Security notes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0181mTRVEPBcM3fNxRSriJFw
@argahv
argahv merged commit 6d7d509 into main Oct 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants