sandbox-agent/factory/packages/backend/CLAUDE.md
2026-03-09 14:00:20 -07:00

1.6 KiB
Raw Permalink Blame History

Backend Notes

Actor Hierarchy

Keep the backend actor tree aligned with this shape unless we explicitly decide to change it:

WorkspaceActor
├─ HistoryActor(workspace-scoped global feed)
├─ ProjectActor(repo)
│  ├─ ProjectBranchSyncActor
│  ├─ ProjectPrSyncActor
│  └─ HandoffActor(handoff)
│     ├─ HandoffSessionActor(session) × N
│     │  └─ SessionStatusSyncActor(session) × 0..1
│     └─ Handoff-local workbench state
└─ SandboxInstanceActor(providerId, sandboxId) × N

Ownership Rules

  • WorkspaceActor is the workspace coordinator and lookup/index owner.
  • HistoryActor is workspace-scoped. There is one workspace-level history feed.
  • ProjectActor is the repo coordinator and owns repo-local caches/indexes.
  • HandoffActor is one branch. Treat 1 handoff = 1 branch once branch assignment is finalized.
  • HandoffActor can have many sessions.
  • HandoffActor can reference many sandbox instances historically, but should have only one active sandbox/session at a time.
  • Session unread state and draft prompts are backend-owned workbench state, not frontend-local state.
  • Branch rename is a real git operation, not just metadata.
  • SandboxInstanceActor stays separate from HandoffActor; handoffs/sessions reference it by identity.
  • Sync actors are polling workers only. They feed parent actors and should not become the source of truth.

Maintenance

  • Keep this file up to date whenever actor ownership, hierarchy, or lifecycle responsibilities change.
  • If the real actor tree diverges from this document, update this document in the same change.