0.85 — Every witness reads back its effect, and the mutation audit covers grants
· 4 min read
0.85 — Every witness reads back its effect, and the mutation audit covers grants | ESS0.85.0 adds format ess/34, in which a compensating refusal may delete its row and a named refusal requires the row it addressed unchanged. The mutation audit gains two grant classes, lists the sites it could not mutate and runs on the scenario clock. Go synthesis, the clap target and the generated explorers fix six defects.ESSfield-noteessfield-noteadopterdevelopertry-spec-driven-developmentresearch
0.85.0 adds one source format, ess/34, and moves the mutation report to ess-mutation-report/8
and the manifest to ess-mutation-manifest/7 where they list something new. A model with nothing
new keeps its bytes. The changelog
lists every change; this note covers each of them.
Every witness reads back its effect
- From
ess/34a compensating refusal (compensates: truebesideexternal:) may delete its addressed row withdeletes:andinstance:. Its scenario requires the error, no event and the row absent from every immediate view. - From
ess/34a namedwhen:orwhen_related:refusal of a command addressing an existing row snapshots that row completely and requires it unchanged. Below it, suites keep their bytes. - At every format, a further witness of a deleting branch requires the deleted row absent, and a
guard's boundary row for a
deletes:branch is sent for a row of its own. - A non-refusing
unknown_instance:branch must store no row with the identity it was sent. - A view row field set from an
Optional<T>input through its declared conversion is asserted at the value sent.
The mutation audit covers grants and lists its gaps
- Two new classes audit actor grants:
grant-dropremoves one command from one actor'smay:,grant-addgives an actor one served command it lacks (#710). Where either is selected, the baseline and every mutant's suite keep their<command>/grant/deniedscenarios. - Each site a selected class excluded or could not mutate is listed with its reason under
unmutated_sites, in the text, the report and the manifest (#711). The summary says how many of the sites considered were scored.--fail-on-unmutatedmakes such a site block exit 0; the default exit status is unchanged. error-swapmutates a refusal that carries its error's payload, re-keying the entry to the error swapped in (#709).--target interpretedruns synthesized scenarios on the scenario clockrunuses, so a model with anowguard is scored.
Go synthesis and the generated explorers
- Go synthesis copies a required event field into an
Optionalcommand input as a pointer, and writes a served component namedserverorwireunder a repaired file name instead of panicking. --target clapgenerates one tree with every group of the components that share acli.binary; validation refuses a group, command or view two of them both declare.- The generated explorers agree with the interpreter on an
external:branch for a stored row, fail an answer that leaves out a required response member, and explore only the scoped component's commands and views.