test/docs: connect.sh parity test + Guix runtime in examples (phase 3) #8

Merged
pti merged 1 commit from feat-guix-parity-docs into main 2026-07-07 13:37:00 +02:00
Owner

Phase 3 of design/guix-container-runtime.md (§11) — parity tests + docs. Completes the Guix-runtime work.

Parity test

writeMCPConfig (guix path) vs connect.sh (devcontainer path) must emit the same MCP server entry. Runs the real connect.sh via sh and compares:

  • type = sse on both
  • same base+path (/sse), and cwd decodes to the same value on both
  • headers both-present (matching Bearer) or both-absent

Semantic, not byte: connect.sh minimally URL-encodes cwd, writeMCPConfig uses url.QueryEscape — different encodings, identical decoded value. Covers token / no-token; skips cleanly if sh/connect.sh absent.

Docs

examples/devcontainer/README.md now steers Guix hosts to the native wraptool up --scaffold-guix, noting the devcontainer template is for non-Guix hosts. (CLAUDE.md covered in phases 1–2.)

Verified

Parity test passes running connect.sh; full go test ./... + golangci-lint clean.

Roadmap: only phase 4 (strict-net / pasta) remains, deferred.

🤖 Generated with Claude Code

Phase 3 of `design/guix-container-runtime.md` (§11) — parity tests + docs. Completes the Guix-runtime work. ## Parity test `writeMCPConfig` (guix path) vs `connect.sh` (devcontainer path) must emit the same MCP server entry. Runs the real `connect.sh` via `sh` and compares: - `type` = sse on both - same base+path (`/sse`), and `cwd` **decodes** to the same value on both - headers both-present (matching `Bearer`) or both-absent Semantic, not byte: `connect.sh` minimally URL-encodes cwd, `writeMCPConfig` uses `url.QueryEscape` — different encodings, identical decoded value. Covers token / no-token; skips cleanly if `sh`/`connect.sh` absent. ## Docs `examples/devcontainer/README.md` now steers Guix hosts to the native `wraptool up --scaffold-guix`, noting the devcontainer template is for non-Guix hosts. (CLAUDE.md covered in phases 1–2.) ## Verified Parity test passes running connect.sh; full `go test ./...` + golangci-lint clean. Roadmap: only phase 4 (strict-net / pasta) remains, deferred. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
test/docs: connect.sh parity test + Guix runtime in examples (phase 3)
All checks were successful
Lint / lint (pull_request) Successful in 16s
5ecf3b9fe5
Phase 3 of design/guix-container-runtime.md. Add a parity test asserting the Go
writeMCPConfig (guix path) and the wraptool-connect connect.sh (devcontainer
path) emit the same MCP server entry for the same inputs — semantic, not byte
(connect.sh minimally URL-encodes cwd, writeMCPConfig uses url.QueryEscape, so
they must decode identically). Covers token and no-token. Guards skip when sh or
connect.sh is unavailable.

Docs: examples/devcontainer/README.md now points Guix hosts at the native
`wraptool up` runtime (--scaffold-guix), noting the devcontainer template is
only for non-Guix hosts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
pti merged commit 93c5b8f9fd into main 2026-07-07 13:37:00 +02:00
pti deleted branch feat-guix-parity-docs 2026-07-07 13:37:01 +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!8
No description provided.