Help us shape the future of Go! Take the 2026 Go Developer Survey

conformance/

directory
v0.19.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 22, 2026 License: MIT

README

Conformance fixtures

Fixtures are generated by TypeScript extractors against the pinned checkout in .upstream/ (make upstream); committed goldens are never edited by hand. make fixtures regenerates every registered family, and make fixtures-check generates into a temporary directory and diffs it with the committed tree. The extractors run with Node 22 or newer; the Makefile installs only the pinned dev-time tools they need.

There are two tiers. The render-golden families — every F12* directory plus the WP450 replay/preview/UI-demo files — are Orb-owned snapshots of Orb's own renderer (DECISIONS.md P6): they are excluded from upstream extraction and from the fixtures-check diff, guarded by their Go comparison tests, and regenerated only by make fixtures-tui (ORB_UPDATE_F12=1), which rewrites presentation values (frames, highlight output, theme colors, layout) in place while behavior-shaped values in the same files stay frozen upstream captures. Their manifest.json files keep the provenance of the original capture. Every other family is an upstream-extracted pi-parity gate.

A fixture change is accepted only when the upstream behavior changed, a case was deliberately added, or (render goldens only) an Orb presentation change was deliberately regenerated. A failing Go comparison is fixed in Go, never by weakening or hand-editing the golden.

Adding a family

Add one extractor under conformance/extract/, call it from generate.ts, emit a stable manifest.json plus deterministic data under conformance/fixtures/<family>/, and add the Go consumer. Extractors omit timestamps and other ambient data; IDs, clocks, temp paths and HOME are fixed or canonicalized at extraction time so goldens stay machine-independent.

Families

  • F1 — message serialization, partial JSON and TypeBox-style schemas.
  • F2 — provider request bytes, recorded stream/error traces and auth for every API shape: OpenAI, Anthropic, Google and Vertex, Mistral Conversations, Azure OpenAI Responses, Bedrock (through the pinned AWS serializer), pi-messages, Codex Responses (SSE and WebSocket framing), Copilot and xAI subscription metadata. Auth storage cases are byte-exact in both directions, including the OAuth callback pages and a live cross-runtime proper-lockfile contention check.
  • F3 — upstream's real agent loop and faux provider with fixed clocks and IDs, one exact JSON.stringify(AgentEvent) per JSONL line; F3-session runs upstream's runPrintMode over a real AgentSession (multiple prompts, queues, retry, compaction, error and abort).
  • F4 — the edit-diff module: normalization, matching, replacement, display diff and unified patch.
  • F5 — truncation helpers and the streaming output accumulator; spilled bytes compare as base64 so invalid UTF-8 stays observable.
  • F6 — session tree, branch persistence, fork wire, listing and HTML export (complete hash, embedded payload and a DOM projection).
  • F7 — a strict-LF bidirectional RPC transcript replayed through the Go mode and a built orb --mode rpc. make upstream-rpc-tests also runs upstream's RPC test files unmodified against the Go binary through upstream's RpcClient.
  • F8 — skills and prompt templates: argument substitution, invocation formatting, and extension-command, input-hook, skill-command and template resolution order.
  • F9 — system-prompt assembly, including progressive skill disclosure; Orb's identity substitutions are the exact ledgered ones.
  • F10 — compaction boundaries and token accounting.
  • F11 — the Go-native extension runner (ordered dispatch, middleware, errors, trust, input), built-in tools and product wiring.
  • F12 — Orb-owned TUI render snapshots.
  • F13-dynamic-workflows — @quintinshaw/pi-dynamic-workflows@3.5.1 driven through thirteen scenarios against real pinned createAgentSession sessions with the faux provider. The plugin is npm ci-installed from an embedded integrity-pinned lockfile (the one network-dependent step, served from the npm cache when offline). Files under reference-tui/ are reference-only upstream observations; the Go consumer enforces that marking.
  • WP250 — model pattern resolution, fuzzy --list-models tables, models.json composition and model-store persistence. The large models.dev input lives under ai/models/testdata/.
  • WP360 — pi packages and project trust: parseGitUrl over the full URL-form battery, DefaultPackageManager.resolve() over declarative fixture trees, settings persistence and the trust manager.
  • WP370Runtime — AgentSessionRuntime lifecycle over the session manager.
  • WP440 / WP440Read — image format handling and the read tool's image results.
  • WP450 — Orb-owned replay, preview and UI-demo render snapshots of the interactive components, plus the startup session picker and its search; recorded status-line events and callbacks stay frozen upstream captures.

Directories

Path Synopsis
Package f7 builds the deterministic session the F7 RPC transcript runs on: a faux model replaying the scenario's responses with fixed clocks and entry ids, behind a session host whose session switches are no-ops.
Package f7 builds the deterministic session the F7 RPC transcript runs on: a faux model replaying the scenario's responses with fixed clocks and entry ids, behind a session host whose session switches are no-ops.
Package runner provides shared conformance-fixture test helpers.
Package runner provides shared conformance-fixture test helpers.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL