Skip to content

feat(room): prx pod up verb — launch per-repo pod + rootless doorDir - #748

Merged
bdelanghe merged 9 commits into
mainfrom
feat/pod-up-verb
Jun 23, 2026
Merged

feat(room): prx pod up verb — launch per-repo pod + rootless doorDir#748
bdelanghe merged 9 commits into
mainfrom
feat/pod-up-verb

Conversation

@bdelanghe

Copy link
Copy Markdown
Contributor

Summary

  • Adds prx pod up verb: launches the per-repo pod (claude-room + beadsd-room + keeperd-room), attests the launch (best-effort L2), returns { pod, containers, l2LaunchDigest }
  • DEFAULT_DOOR_DIR is now rootless — prefers $XDG_RUNTIME_DIR/prx/doors, falls back to ~/.local/run/prx/doors — no sudo required on macOS or rootless Linux
  • Pod verb injects process.cwd() as spec.repo so the /work bind-mount resolves at launch time
  • Verb is registered in verb-registry and routed via cli.ts (if (orchestratorVerb === "pod" && orchestratorRest[0] === "up"))
  • Tests updated to derive expected dir from DEFAULT_DOOR_DIR / perRepoPod.doorDir rather than hardcoded paths

Live verification

$ bun scripts/pr_state.ts pod up
{
  "pod": "prx-pod",
  "containers": 3,
  "l2LaunchDigest": null
}

l2LaunchDigest: null is expected — best-effort attestation without a live keeper door socket wired. The pod itself (3 containers) launched successfully.

Test plan

  • bun x tsc --noEmit → EXIT:0
  • bun test test/room/ → 76 pass, 0 fail
  • Live prx pod up → pod: prx-pod, containers: 3

🤖 Generated with Claude Code

bdelanghe and others added 6 commits June 23, 2026 08:02
- per-repo-pod: use DEFAULT_DOOR_DIR (rootless) instead of a comment placeholder
- pod-up-verb: inject process.cwd() as repo so /work bind-mount resolves
- tests: update hardcoded /run/prx/doors to use DEFAULT_DOOR_DIR / perRepoPod.doorDir
- changeset: pod-up-verb minor for @bounded-systems/prx

Verified live: prx pod up returns { pod: 'prx-pod', containers: 3, l2LaunchDigest: null }
The null digest is expected — best-effort attestation without a live keeper door socket.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@bdelanghe
bdelanghe requested a review from a team as a code owner June 23, 2026 12:18
@github-code-quality

github-code-quality Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / unit

The overall coverage in the feat/pod-up-verb branch remains at 88%, unchanged from the main branch.

Show a code coverage summary of the most impacted files.
File main f2809a6 feat/pod-up-verb ddf843b +/-
packages/prx/sr...pr-state/cli.ts 60% 60% 0%
packages/prx/src/room/pod.ts 99% 99% 0%
packages/prx/sr...erb-registry.ts 100% 100% 0%
packages/prx/sr...per-repo-pod.ts 100% 100% 0%
packages/prx/sr.../pod-up-verb.ts 0% 77% +77%

Updated June 23, 2026 12:42 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.


import { verbRegistry } from "../../src/cli/verb-registry.ts";
import { podUpVerb } from "../../src/room/pod-up-verb.ts";
import { perRepoPod } from "../../src/room/per-repo-pod.ts";
Comment thread packages/prx/test/room/podman.test.ts Fixed
bdelanghe and others added 3 commits June 23, 2026 08:25
- pod.ts: replace process.env with getEnv (ambient authority guard)
- openapi.json: regenerated to include pod up verb

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
run() calls the real podman stack; covered by e2e, not a unit test.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… gate)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@bdelanghe
bdelanghe enabled auto-merge (squash) June 23, 2026 12:58
@bdelanghe
bdelanghe merged commit cff799e into main Jun 23, 2026
10 checks passed
@bdelanghe
bdelanghe deleted the feat/pod-up-verb branch June 23, 2026 15:15
@github-project-automation github-project-automation Bot moved this from Todo to Done in Front Desk Jun 23, 2026
@bdelanghe
bdelanghe restored the feat/pod-up-verb branch July 1, 2026 02:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants