A pre-1.0 release with a behaviour change, which is why the minor moves.
Changed:
- A Gherkin arrange fills unspecified members through the shared policy
instead of default(T) (#421): an unspecified Guid is a fresh id rather than
Guid.Empty, and a non-nullable string is "" rather than null.
DefaultValues keeps the old rule for a suite that depends on it.
- import-event-model writes a stub's fields when the model names them (#422):
positional records typed from a step's declaration or a test's sample, an
undeclared identity as a Guid. Field-less only when the model names none.
Added:
- Partial objects (#416, #417-#420): Specify<T>() and partial tables build,
match and render only the members a spec names; any-order, contains and
absent event sets; Gherkin results grids and steps; BOBCAT032 checks table
columns and With(x => x.Member) paths at compile time (#415).
- Declared defaults (#421): DeclaredDefaults.For<T, TMember>(x => x.Member,
value), and PartialObjects.UnspecifiedValues for a process-wide policy.
- A Guid reads as the variable it was declared as: `var theAppointment =
Guid.NewGuid();` renders as theAppointment.
- Supervisor: WorkerConnectionStrings hands each worker ConnectionStrings__{name}
(#414), the Aspire convention.
- import-event-model reads emlang as published models write it (#422): several
documents, short-form slices, long keys, non-string props, test values,
processor slices.
- bobcat run / preview / pick / watch, with run the default command.
- Values in specifications, ObjectSetVerification, notes.
Fixed:
- SpecOutput wrote ANSI escape codes into test output on GitHub Actions.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017DbTkhs3JxSMCWasTzPdRq