0.85 — Every witness reads back its effect, and the mutation audit covers grants
· 3 min read
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.