Skip to content

feat(pitot): make the SDKs ready for outside builders - #262

Merged
bigboateng merged 1 commit into
mainfrom
codex/pitot-sdk-readiness
Jul 31, 2026
Merged

feat(pitot): make the SDKs ready for outside builders#262
bigboateng merged 1 commit into
mainfrom
codex/pitot-sdk-readiness

Conversation

@bigboateng

Copy link
Copy Markdown
Contributor

What & why

Stacked companion to the Interlock interface/readiness PR (#261). Building on Interlock means transporting decisions over Pitot, so the Pitot SDKs are part of the "ready for people to start building/testing" surface. This PR closes the gap between the SDK exists and the SDK is safe to build on — every change is feature-preserving.

Changes

  • Conformance is now CI-enforced. The cross-language suite (pitot-distribution/sdk/tests/test_runners.py) drives Python/TypeScript/Go/Rust runners through identical fixture cases (controller stream order, malformed-skip, deny, consumer stdout-cleanliness) but lived outside the discovered test path — the parity guarantee was written, never gated. It's now a dedicated sdk-conformance job. Enabling it caught a real defect it had hidden: the Rust consumer fixture referenced event.type_field, which doesn't exist — the wire field is event_type (#[serde(rename = "type")]). Fixed.
  • Rust SDK is built + tested in isolation in that job for the first time.
  • Java/C# honestly labeled as types-only previews (README in each dir; pointed at the four first-class SDKs). A new lockstep-gate test fails the moment a preview gains a build manifest without being version-locked and conformance-tested — a preview can't silently start shipping.
  • Version-lockstep gate documents + covers the Go binding (its version is the scaffold constant pitotPackageVersion — the one Go-side string that can drift).
  • Per-SDK quickstart READMEs (TypeScript, Python, Rust): build your first Controller/Consumer, install via the CLI front door, run behind an agent.
  • No more Rust artifact churn: build_pitot.py skips target/ and Cargo.lock, with a matching sdk/rust/.gitignore, so a local cargo build can't perturb the projected public surface.
  • Aligned a stale sample kind in request_test.go (interlock.decideinterlock.effect); assertions unchanged.

Verification (all green locally)

  • go build ./... && go test ./... (full Pitot module)
  • SDK cross-language conformance (test_runners.py) — pass (Rust skips locally where toolchain absent; CI installs it)
  • version-lockstep + preview-guard tests — pass
  • build_pitot.py --check (projection/golden drift gate) — matches after regen
  • pitot_adapter_supervisor.py check — pass
  • gofmt clean

Locus scope

The interface between Pitot and Interlock was Locus-certified in the companion PR (adapter-collapse reachable:false; broker-authority controllable:true). The frontier here was engineering readiness, not correctness — this PR is the readiness half. All verdicts model-scoped/advisory per the recorded obligations.

Release note: labs/15-pitot/pitot-distribution/release-notes/2026-07-31-sdk-readiness-for-external-builders.md.

Building on Pitot means writing a Controller or Consumer in a language
binding, so the bindings had to become something an outsider can pick up
and trust. This closes the gaps between "the SDK exists" and "the SDK is
safe to build on" — all feature-preserving.

- CI-enforce the cross-language conformance suite (Python/TS/Go/Rust) as
  a dedicated sdk-conformance job; it lived outside the discovered test
  path, so the parity guarantee was written but never gated. Enabling it
  caught a real defect it had hidden: the Rust consumer fixture used a
  field (type_field) that does not exist — the wire field is event_type.
- Build and test the Rust SDK in isolation in that job (first time in CI).
- Label Java and C# as types-only previews (README in each dir) and add a
  lockstep-gate test that fails the moment a preview gains a build
  manifest without being version-locked and conformance-tested.
- Document and cover the Go binding version (scaffold constant
  pitotPackageVersion) in the version-lockstep gate.
- Add per-SDK quickstart READMEs (TypeScript, Python, Rust): build your
  first Controller and Consumer, install via the CLI front door.
- Stop Rust build-artifact churn: build_pitot skips target/ and
  Cargo.lock, with a matching sdk/rust/.gitignore, so a local cargo build
  can never perturb the projected public surface.
- Align a stale sample kind in request_test.go (interlock.decide ->
  interlock.effect) with the now-canonical request kind; assertions
  unchanged.

Disclosure-Reviewed: reviewed — public-safe only, private facet kept out of this commit
@github-actions

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
Devin ✅ Pass · real CLI 3000.3.22 · native · binary-observed devin connect proto ✅ Pass · real CLI 3000.3.22 · native · binary-observed devin connect proto ✅ Pass · real CLI 3000.3.22 · native · binary-observed devin connect proto ✅ 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: 545ac2c341be

@bigboateng
bigboateng merged commit ef3ef32 into main Jul 31, 2026
46 checks passed
@bigboateng
bigboateng deleted the codex/pitot-sdk-readiness branch July 31, 2026 19:38
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