chore: add a petstore codegen spike as the witness for the codegen target surface (#64) - #65
Merged
Wahbeh-Mohammad merged 1 commit intoSep 2, 2026
Conversation
Wahbeh-Mohammad
deleted the
64-establish-the-codegen-target-surface-with-a-petstore-example-as-its-witness
branch
September 2, 2026 20:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #64.
examples/petstore/is a throwaway spike, not a shipped example: a frozen OpenAPI document byte-identical to the Python witness's, a deterministic generator, a projection-only facade, a hand-writtenServiceCore, a regen-diff guard, and a 15-case canary over an in-memory transport covering unary calls, cursor pagination, SSE with a[DONE]sentinel, a merge-patch body's three Tristate states, all three auth-tier outcomes, and both close semantics. The deliverable isexamples/petstore/FINDINGS.md, which confirms all five hypothesised gaps — no executor tier, noStatusErrorMap,OperationDescriptormerging its static and per-call halves, theoperationauth tier having no source, andFakeTransportbeing unreachable from the entry point — and records five more found while building, including thatSchema<T>is decode-only and thatPaginatorhas no status-mapping hook. It also corrects the plan's isolation claim: four gates ignoreexamples/, butgts lint .does not, which is why the example carries its owntsconfig.jsonfor eslint'sprojectServiceand why the generator formats its output through the samegts/.prettierrc.jsonthe lint rule uses. Nothing underpackages/,tests/,scripts/,bunfig.toml,package.jsonoreslint.config.jsis touched, no package depends on the tree, andbun run testcollects 164 files before and after — so no changeset, since nothing consumer-facing changed.Verified with
run-ci.mjs --clean --node-floor(19/19 green, Bun pinned to 1.3.14,test:nodealso on Node 20.3.0), a clean housekeeping probe, andbun test ./examples/petstoreat 15/15.