Skip to content

ci(example-regen): run the C# starter contract on real generator output - #187

Merged
clabonte merged 1 commit into
mainfrom
ci/example-regen-gen-contract
Oct 28, 2026
Merged

clabonte merged 1 commit into
mainfrom
ci/example-regen-gen-contract

Conversation

@clabonte

Copy link
Copy Markdown
Collaborator

Follow-up from #186. The C# starter contract was only proven on a synthetic tree in ci.yml. example-regen now seeds it into the component that the add-component step generates with the pinned jar, then runs three checks there:

  • the contract
  • apply-gen-patches.sh --check
  • the mutation test: skips are allowed for surfaces hello-orders does not generate, misses are not

Run locally against 0.19.0 output (229 tracked files): 16 rules green; mutation test 13 ok, 0 missed, 3 skipped (GEN-040 to GEN-042: hello-orders generates no handler or application-service bases).

That first real run found two defects, both fixed here:

  • GEN-021 flagged the comment in add-component's own seeded .gitignore (from fix(add-component): stop seeding a .gitignore that hides the path manifest #185) that says the manifest is deliberately not ignored. It now matches ignore lines only, and the synthetic seed carries the same comment so the case stays covered.
  • GEN-042's mutation hard-coded IOrderPlacedHandler, which exists only in the synthetic tree, so it reported a miss on any real repo without that handler. It now derives the interface name from a generated *HandlerBase, and skips like GEN-040 and GEN-041 when there is none.

🤖 Generated with Claude Code

The starter contract was only ever proven on a synthetic tree. example-regen
now seeds it into the component the add-component step generates with the
pinned jar, and runs the contract, the patch check and the mutation test
there (skips allowed for surfaces hello-orders does not generate, misses not).

Running it locally against 0.19.0 output found two defects, fixed here:

- GEN-021 flagged the comment in add-component's own seeded .gitignore that
  says the manifest is deliberately not ignored. It now matches ignore lines
  only, and the synthetic seed carries the same comment so it stays covered.
- The GEN-042 mutation hard-coded IOrderPlacedHandler, which exists only in
  the synthetic tree, so it reported a miss on any real repo without that
  handler. It now derives the interface from a generated *HandlerBase and
  skips, like GEN-040 and GEN-041, when there is none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@clabonte
clabonte merged commit c4479c9 into main Oct 28, 2026
8 checks passed
@clabonte
clabonte deleted the ci/example-regen-gen-contract branch October 28, 2026 15:22
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