Skip to content

docs(examples): make exec canaries monorepo-robust and portable#149

Merged
pofallon merged 1 commit into
mainfrom
docs/exec-canaries-monorepo-robust
May 29, 2026
Merged

docs(examples): make exec canaries monorepo-robust and portable#149
pofallon merged 1 commit into
mainfrom
docs/exec-canaries-monorepo-robust

Conversation

@pofallon
Copy link
Copy Markdown
Contributor

Summary

Fixture/portability fixes for the exec/* canaries (the ⚠️ fixture rows in CANARY_STATUS.md), plus the manifest flips to ✅.

  • Git-root mount: bake --mount-workspace-git-root false into every exec example's up invocation. Run inside this monorepo the git root is mounted, so /workspace/<file> references land under /workspace/examples/...; the flag mounts the example folder directly. Harmless standalone.
  • id-label-targeting: containerLabels is not a devcontainer.json spec property (confirmed against containers.dev) — deacon correctly ignores it, so exec --id-label app.name=… found no container. Replaced with the spec-compliant runArgs: ["--label", "key=value", …]. README note updated.
  • non-interactive-streaming: host xxd isn't always installed → use coreutils od -An -tx1. Dropped the | head -n 5 on the JSON-streaming step (it SIGPIPE-killed the producer — exit 141 — under set -o pipefail; this is correct exec passthrough, not a deacon bug) to match the README, and corrected the README's "Forces PTY" wording.

Dependency

The exec canaries also needed two code fixes (PTY-without-terminal, camelCase env-probe values) — those are in #148 and should merge first. With #148 + this PR at main, all nine exec/* rows run green end-to-end (verified locally with the release binary).

🤖 Generated with Claude Code

- Bake `--mount-workspace-git-root false` into every exec example's `up`
  invocation so `/workspace/<file>` references resolve when the canary is
  run inside this monorepo (the git root would otherwise be mounted and the
  files land under `/workspace/examples/...`). Harmless when run standalone.
- id-label-targeting: replace the non-spec `containerLabels` property (which
  deacon correctly ignores) with the spec-compliant `runArgs: ["--label",
  "key=value", ...]`, so `exec --id-label app.name=…` can target the
  container. Update the README note accordingly.
- non-interactive-streaming: swap host `xxd` (not always installed) for
  coreutils `od -An -tx1`; drop the `| head -n 5` on the JSON streaming
  step (it SIGPIPE-killed the producer under `set -o pipefail`) to match
  the README, and fix the README's "Forces PTY" framing — a PTY is only
  allocated for an interactive (terminal) stdin.

Flips the nine exec/* rows to ✅ in CANARY_STATUS.md. The exec PTY and
env-probe code fixes these depend on are in #148.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the docs Documentation changes label May 29, 2026
@pofallon pofallon merged commit 1a8a0f2 into main May 29, 2026
10 checks passed
@pofallon pofallon deleted the docs/exec-canaries-monorepo-robust branch May 29, 2026 04:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant