docs(skills): an unreached eventually convicts at run end

This commit is contained in:
pj committed 2026-08-16 01:03:35 +05:30
1 parent fea42e2899
commit 45568f656b
1 file changed
+5 -1
+5 -1
View File
@@ -115,7 +115,11 @@ every reading take its answer from there. `routeOfFrame` in folio's
to the next, which is how you state "this action had that effect". `now(f)` to the next, which is how you state "this action had that effect". `now(f)`
evaluates at the current step inside a formula body. evaluates at the current step inside a formula body.
`eventually(f).within(n, "steps" | "seconds" | "milliseconds")` requires `f` `eventually(f).within(n, "steps" | "seconds" | "milliseconds")` requires `f`
before the window closes; unbounded, it never fails a finite run. At the top before the window closes and convicts at the step it does not. Unbounded, it
does not stop being a liveness obligation: one that never fires is violated when
the run ends, with the reason `eventually never satisfied`. So an `eventually`
over a state your run may not reach fires on every run that does not reach it,
and that is the usual way a first spec ends up red for no reason. At the top
level an `eventually` is one goal for the whole run, armed once and discharged level an `eventually` is one goal for the whole run, armed once and discharged
for good the first time it holds; written inside `always` it re-arms at every for good the first time it holds; written inside `always` it re-arms at every
step, which asks for the window to be met from everywhere. Every formula has step, which asks for the window to be met from everywhere. Every formula has