feat(up): shared developer harness pool mounted into the container #19

Merged
pti merged 1 commit from feat-harness-pool into main 2026-07-07 17:23:44 +02:00
Owner

Realizes design/harness-descriptor.md §7 — the provisioning half. Makes multi-harness testing frictionless.

What

A developer-scoped pool $XDG_DATA_HOME/wraptool/harness-pool is created and --shared into every guix container:

  • bin/ → prepended to PATH (harness binaries).
  • home/ → the harness HOME (its config/auth/state).

So a harness binary and its auth are installed once, across all projects and sessions — no per-session reinstall or re-auth. It's the developer's toolbox: kept out of manifest.scm (the project) and outside the credential-isolation boundary (host secrets stay host-side, reached via MCP).

Verified e2e

A binary dropped in pool/bin is on PATH inside the container, runs under --emulate-fhs, HOME = pool/home, and state it writes persists on the host pool for the next session.

Usage

  1. Install your harness into ~/.local/share/wraptool/harness-pool/bin/ once (its own installer, or drop the native binary).
  2. wraptool up --harness <name> → it's on PATH, auth persists.

Build/vet/golangci-lint clean. (Shell-wiring; the e2e above is the verification — no unit test, to avoid writing into the real data dir.)

Follow-ups

  • Optional wraptool harness install|list convenience (design §7).
  • Phase 4: connect.shwraptool init.

🤖 Generated with Claude Code

Realizes `design/harness-descriptor.md` §7 — the provisioning half. Makes multi-harness testing frictionless. ## What A developer-scoped pool `$XDG_DATA_HOME/wraptool/harness-pool` is created and `--share`d into every guix container: - `bin/` → prepended to `PATH` (harness binaries). - `home/` → the harness `HOME` (its config/auth/state). So a harness binary **and its auth** are installed **once, across all projects and sessions** — no per-session reinstall or re-auth. It's the developer's toolbox: kept out of `manifest.scm` (the project) and outside the credential-isolation boundary (host secrets stay host-side, reached via MCP). ## Verified e2e A binary dropped in `pool/bin` is on `PATH` inside the container, runs under `--emulate-fhs`, `HOME` = `pool/home`, and state it writes **persists on the host pool** for the next session. ## Usage 1. Install your harness into `~/.local/share/wraptool/harness-pool/bin/` once (its own installer, or drop the native binary). 2. `wraptool up --harness <name>` → it's on PATH, auth persists. Build/vet/golangci-lint clean. (Shell-wiring; the e2e above is the verification — no unit test, to avoid writing into the real data dir.) ## Follow-ups - Optional `wraptool harness install|list` convenience (design §7). - Phase 4: `connect.sh` → `wraptool init`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(up): shared developer harness pool mounted into the container
All checks were successful
Lint / lint (pull_request) Successful in 12s
38fe908dbf
Realizes design/harness-descriptor.md §7 provisioning. A developer-scoped pool
($XDG_DATA_HOME/wraptool/harness-pool) is created and shared into every guix
container: bin/ is prepended to PATH, home/ becomes the harness HOME. So a
harness binary and its auth/state are installed once and reused across all
projects and sessions — no per-session reinstall or re-auth. It is the
developer's toolbox, kept out of manifest.scm (the project) and out of the
credential-isolation boundary (host secrets stay host-side, via MCP).

Verified e2e: a binary dropped in pool/bin is on PATH inside the container, runs
under --emulate-fhs, HOME points at pool/home, and state it writes persists on
the host pool for the next session.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
pti merged commit 0745b9719f into main 2026-07-07 17:23:44 +02:00
pti deleted branch feat-harness-pool 2026-07-07 17:23:44 +02: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
pti/wraptool!19
No description provided.