Files
sanderling/pkg/spec
pj 454988fbc8 fix(trace): an action names the generator that produced it
The setup exclusion landed for the model arm only, because only a model
pick stamped a source. A seeded run returned setup's action through the
same entry with no marker, so its denominator still counted the login
while the model arm's did not, and the two are compared.

serializeAction names setup and seeded on the wire, so both arms are
counted by one rule. An already-recorded trace names nothing and keeps
exactly the count it was reported with; unattributed_actions counts those
steps so the old denominator cannot pass as the new one. TraceVersion is
deliberately unbumped: oracle-reduction refuses a differing version, and
a bump would make all 169 recorded runs unreplayable.
2026-08-18 17:58:38 +05:30
..

@sanderling/spec

TypeScript spec API for sanderling, a property-based UI fuzzer for Android, iOS and web apps.

A spec exports properties (what the app must always or eventually do), extractors (structured state read off the UI), and action generators (what sanderling is allowed to do). The sanderling CLI evaluates the spec against a running app once per step.

npm install --save-dev @sanderling/spec

Getting started installs the CLI and runs a first spec. The spec language reference lists every primitive, and the case study walks a complete spec end to end.

The CLI bundles this package's TypeScript sources at run time, so keep the CLI and the package on the same release.