feat: taskstore v2 — store sidecar owns init+daemon, sessions connect-only #2

Merged
kgrotel merged 1 commit from taskstore-pod-architecture into main 2026-08-02 21:13:39 +00:00
Owner

Per the component spec: init logic and the dolt daemon move into a dedicated
store container (kmcp sidecar); MCP sessions and exec access are strictly
connect-only. Empirically verified in a podman pod mirroring the k8s pod
(shared netns + volume, separate containers).

  • store.sh: identities/git-repo/beads.role -> wipe non-server-mode scrap ->
    dolt sql-server 127.0.0.1:3307 (foreground-supervised, container lives as
    long as the daemon) -> first-boot bd init --server --server-host 127.0.0.1
    --server-port 3307 --prefix caiman -> validate metadata -> SQL health gate
    -> /tmp/taskstore-ready marker. Any failure = exit 1 = CrashLoop.
  • the explicit port persists in metadata.json and marks the daemon
    externally-managed: clients resolve 127.0.0.1:3307 from the PVC, refuse
    when it is down (never spawn), and bd's pgrep/pid-file daemon tracking is
    out of the client path entirely — which is what makes the cross-container
    split safe
  • session.sh (manifest cmd, spawned per MCP session by agentgateway):
    metadata guard + short SQL retry, then exec beads-mcp
  • smoke-test: rewritten for the store/session lifecycle; readiness polls the
    store ready line (bd list answers DURING init — SQL alone races init)
  • no official/community beads image exists at the pinned versions (upstream
    ships bare binaries); the in-repo image remains

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

Per the component spec: init logic and the dolt daemon move into a dedicated store container (kmcp sidecar); MCP sessions and exec access are strictly connect-only. Empirically verified in a podman pod mirroring the k8s pod (shared netns + volume, separate containers). - store.sh: identities/git-repo/beads.role -> wipe non-server-mode scrap -> dolt sql-server 127.0.0.1:3307 (foreground-supervised, container lives as long as the daemon) -> first-boot bd init --server --server-host 127.0.0.1 --server-port 3307 --prefix caiman -> validate metadata -> SQL health gate -> /tmp/taskstore-ready marker. Any failure = exit 1 = CrashLoop. - the explicit port persists in metadata.json and marks the daemon externally-managed: clients resolve 127.0.0.1:3307 from the PVC, refuse when it is down (never spawn), and bd's pgrep/pid-file daemon tracking is out of the client path entirely — which is what makes the cross-container split safe - session.sh (manifest cmd, spawned per MCP session by agentgateway): metadata guard + short SQL retry, then exec beads-mcp - smoke-test: rewritten for the store/session lifecycle; readiness polls the store ready line (bd list answers DURING init — SQL alone races init) - no official/community beads image exists at the pinned versions (upstream ships bare binaries); the in-repo image remains Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Per the component spec: init logic and the dolt daemon move into a dedicated
store container (kmcp sidecar); MCP sessions and exec access are strictly
connect-only. Empirically verified in a podman pod mirroring the k8s pod
(shared netns + volume, separate containers).

- store.sh: identities/git-repo/beads.role -> wipe non-server-mode scrap ->
  dolt sql-server 127.0.0.1:3307 (foreground-supervised, container lives as
  long as the daemon) -> first-boot bd init --server --server-host 127.0.0.1
  --server-port 3307 --prefix caiman -> validate metadata -> SQL health gate
  -> /tmp/taskstore-ready marker. Any failure = exit 1 = CrashLoop.
- the explicit port persists in metadata.json and marks the daemon
  externally-managed: clients resolve 127.0.0.1:3307 from the PVC, refuse
  when it is down (never spawn), and bd's pgrep/pid-file daemon tracking is
  out of the client path entirely — which is what makes the cross-container
  split safe
- session.sh (manifest cmd, spawned per MCP session by agentgateway):
  metadata guard + short SQL retry, then exec beads-mcp
- smoke-test: rewritten for the store/session lifecycle; readiness polls the
  store ready line (bd list answers DURING init — SQL alone races init)
- no official/community beads image exists at the pinned versions (upstream
  ships bare binaries); the in-repo image remains

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
kgrotel deleted branch taskstore-pod-architecture 2026-08-02 21:13:49 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ccio/imagefactory!2
No description provided.