Skip to content

Make Pitot Workbench runnable from a clean repository - #133

Merged
bigboateng merged 2 commits into
mainfrom
feat/pitot-workbench-runnable
Jul 23, 2026
Merged

Make Pitot Workbench runnable from a clean repository#133
bigboateng merged 2 commits into
mainfrom
feat/pitot-workbench-runnable

Conversation

@bigboateng

Copy link
Copy Markdown
Contributor

Summary

Hardens the Pitot polyglot SDK so a first-time user can go from a clean repository to one real allow/deny decision without hand-holding — the v1 definition of done:

clean repo → pitot init → detected/selected language → runnable project → pitot dev → one real allow/deny decision → same project works with a second agent.

Scoped to labs/15-pitot/. No new languages or features added.

What changed

pitot init — runnable, safe, language-aware

  • Validates --role/--language; detects language from existing manifests; prompts interactively when needed; errors clearly when non-interactive and undetectable.
  • Non-destructive: refuses to overwrite existing files without --force.
  • Generates complete projects — source + package manifest (go.mod / Cargo.toml / package.json+tsconfig.json / requirements.txt+pyproject.toml) + .pitot.yaml — so every language runs as-is.

pitot dev — hardened

  • Splits --exec into program+args (or -- CMD ARGS), validates --host, uses a unique temp runtime path with cleanup, waits for runtime readiness before launching, reaps the server on exit.
  • New runtime Decision observer prints a terminal receipt ([ALLOW]/[DENY] kind (id) — message).

SDK correctness & packaging

  • TypeScript runner serializes per-line handling (ordered responses); package.json/tsconfig entry points made consistent (dist/).
  • Rust runner flushes per response and surfaces stdin errors; new crate Cargo.toml.
  • Python requires-python bumped to >=3.10 to match generated PEP 604 syntax.

Conformance suite

  • Rewritten as a layout-agnostic harness: all four languages × Consumer+Controller × {ordered stream, malformed-skip, deny, stdout-clean}. Rust gated on cargo, TS/Go gated on their toolchains, self-cleaning fixtures. Dropped four dead standalone fixtures.

README — leads with pitot initpitot dev → decision → second-agent swap; manual pitot run flow demoted to "Advanced".

Projectionpitot-distribution/UPSTREAM.json regenerated.

Verification

  • go build ./... && go vet ./... && go test ./... — pass
  • python3 -m unittest test_runners — 12 pass, 4 Rust skipped (no cargo in CI env), fixtures cleaned
  • build_pitot.py --write (107 files) then --check — no drift

Harden the polyglot SDK so a first-time user can go from a clean repo to a
real allow/deny decision without hand-holding, across all four first-class
languages (Python, TypeScript, Go, Rust).

- pitot init: validate --role/--language, detect language, prompt when
  interactive, refuse to clobber without --force, and generate complete
  runnable projects (source + package manifest + .pitot.yaml).
- pitot dev: split --exec into program+args (and support -- CMD ARGS),
  validate --host, use a unique temp runtime path with cleanup, wait for
  runtime readiness, reap the server on exit, and print a decision receipt
  via a new runtime Decision observer.
- SDK correctness: serialize the TypeScript runner (ordered responses); flush
  and surface stdin errors in the Rust runner; add the Rust crate Cargo.toml.
- Packaging: make TS main/types/tsconfig/files consistent (dist/); bump
  Python requires-python to >=3.10 to match generated PEP 604 syntax.
- Conformance: rewrite test_runners.py as a layout-agnostic harness covering
  all four languages x Consumer+Controller x ordered/malformed/deny/
  stdout-clean, gating toolchains and self-cleaning fixtures; drop dead
  standalone fixtures.
- README: lead with pitot init -> pitot dev -> decision -> second-agent swap;
  demote the manual runtime flow to Advanced.
- Regenerate pitot-distribution/UPSTREAM.json.
@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown

Pitot coding-agent E2E

Intelligence Flow is the verification source; Pitot's public README carries the latest main status.

Agent Ubuntu macOS Windows Result Evidence
Claude ✅ Pass · real CLI 2.1.217 · native · binary-observed anthropic messages ✅ Pass · real CLI 2.1.217 · native · binary-observed anthropic messages ✅ Pass · real CLI 2.1.217 · native · binary-observed anthropic messages ✅ Passing All platforms are required
Cursor ✅ Pass · real CLI 2026.07.20-8cc9c0b · native · binary-observed cursor connect proto ✅ Pass · real CLI 2026.07.20-8cc9c0b · native · binary-observed cursor connect proto ✅ Pass · real CLI 2026.07.20-8cc9c0b · WSL · binary-observed cursor connect proto ✅ Passing All platforms are required
Codex ✅ Pass · real CLI 0.145.0 · native · binary-observed openai responses ✅ Pass · real CLI 0.145.0 · native · binary-observed openai responses ✅ Pass · real CLI 0.145.0 · native · binary-observed openai responses ✅ Passing All platforms are required
GitHub Copilot CLI ✅ Pass · real CLI 1.0.73 · native · binary-observed openai chat ✅ Pass · real CLI 1.0.73 · native · binary-observed openai chat ✅ Pass · real CLI 1.0.73 · native · binary-observed openai chat ✅ Passing All platforms are required
Gemini ✅ Pass · real CLI 0.51.0 · native · binary-observed gemini generate content ✅ Pass · real CLI 0.51.0 · native · binary-observed gemini generate content ✅ Pass · real CLI 0.51.0 · native · binary-observed gemini generate content ✅ Passing All platforms are required
Kimi Code ✅ Pass · real CLI 0.29.0 · native · binary-observed openai chat ✅ Pass · real CLI 0.29.0 · native · binary-observed openai chat ✅ Pass · real CLI 0.29.0 · native · binary-observed openai chat ✅ Passing All platforms are required
OpenCode ✅ Pass · real CLI 1.18.4 · native · binary-observed openai responses ✅ Pass · real CLI 1.18.4 · native · binary-observed openai responses ✅ Pass · real CLI 1.18.4 · native · binary-observed openai responses ✅ Passing All platforms are required
Pi ✅ Pass · real CLI 0.81.1 · native · binary-observed openai chat ✅ Pass · real CLI 0.81.1 · native · binary-observed openai chat ✅ Pass · real CLI 0.81.1 · native · binary-observed openai chat ✅ Passing All platforms are required
Qwen Code ✅ Pass · real CLI 0.20.1 · native · binary-observed openai chat ✅ Pass · real CLI 0.20.1 · native · binary-observed openai chat ✅ Pass · real CLI 0.20.1 · native · binary-observed openai chat ✅ Passing All platforms are required

Runtime capabilities

Capability Ubuntu macOS Windows Result
pitot request ✅ Pass · real runtime allow/deny ✅ Pass · real runtime allow/deny ✅ Pass · real runtime allow/deny ✅ Passing

Source commit: 67082ad54276

@bigboateng
bigboateng merged commit d65c39c into main Jul 23, 2026
39 checks passed
@bigboateng
bigboateng deleted the feat/pitot-workbench-runnable branch July 23, 2026 12:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant