mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 19:17:10 +00:00
docs(manual): a step bound counts observations, not runner steps
Claude-Session: https://claude.ai/code/session_01A5KmftdEJ49A9z5mF5ESrX
This commit is contained in:
1 parent
3f0132c92a
commit
a97e5fef8f
1 file changed
+23
@@ -180,6 +180,29 @@ Extractors are evaluated before properties and action generators. Use `.previous
|
|||||||
|
|
||||||
A property that is an `eventually` at the top level is one goal for the whole run: it is armed at the first step and discharged for good the first time it holds. Written inside `always(...)` the same formula is armed again at every step, which asks for the window to be met from every step in the run.
|
A property that is an `eventually` at the top level is one goal for the whole run: it is armed at the first step and discharged for good the first time it holds. Written inside `always(...)` the same formula is armed again at every step, which asks for the window to be met from every step in the run.
|
||||||
|
|
||||||
|
### Choosing a bound unit
|
||||||
|
|
||||||
|
`"milliseconds"` and `"seconds"` bound the window in wall-clock time, measured from
|
||||||
|
the step that armed the obligation. Use them when the deadline is about what a user
|
||||||
|
would sit through: a spinner that has to clear, a screen that has to appear.
|
||||||
|
|
||||||
|
`"steps"` bounds the window in observed steps instead, so the same window costs the
|
||||||
|
same however long each step took. Use it for anything compared across runs that move
|
||||||
|
at different speeds, such as two action-selection policies given the same step budget,
|
||||||
|
where a wall-clock window fails the slower one on elapsed time rather than on the app
|
||||||
|
misbehaving.
|
||||||
|
|
||||||
|
An observed step is a step the verifier evaluated. A step it skipped, a transitional
|
||||||
|
tree or an empty hierarchy, never reached the property and so does not consume the
|
||||||
|
window; the trace marks those steps with `skippedVerification`. The observed-step
|
||||||
|
count is therefore at most the runner's step number, and a step-bounded residual
|
||||||
|
records both: `within` carries the window the spec authored plus
|
||||||
|
`expiresAtObservation`, the observed step the obligation comes due at.
|
||||||
|
|
||||||
|
The unit does not change what an undischarged obligation means. An `eventually` that
|
||||||
|
never fires is a violation at the end of the run whichever unit bounded it, and a
|
||||||
|
window that never closed before the run ended is still a broken promise.
|
||||||
|
|
||||||
**Formula combinators** - available on every `Formula`:
|
**Formula combinators** - available on every `Formula`:
|
||||||
|
|
||||||
| Method | Meaning |
|
| Method | Meaning |
|
||||||
|
|||||||
Reference in new issue
Block a user