diff --git a/BUILT.md b/BUILT.md index 1d2fda1..91cd216 100644 --- a/BUILT.md +++ b/BUILT.md @@ -865,8 +865,8 @@ frame that erred with nothing unwound, so the condition and every restart betwee ``` flan: unhandled Missing — stopped, not dead. - restart: retry - restart: use-placeholder + 0. restart: retry + 1. restart: use-placeholder ``` Four decisions, each of which is the reason something is where it is: diff --git a/NEXT.md b/NEXT.md index eea97ea..7c1f927 100644 --- a/NEXT.md +++ b/NEXT.md @@ -298,11 +298,11 @@ plan.org's single line on it (831) names a `for` the language does not have and ### Bugs found and not yet fixed -- **`web/examples/breakdemo.out` is stale and `check.sh` fails on it.** Commit `4a6a8fa` made the break banner number - its restarts (` 0. restart: retry`) and the `.out` was never repinned; `web/index.html` quotes the same stale - banner. Repinning it is not a one-liner — the program stops at a break loop and waits for a choice, so running it - from `check.sh` hangs rather than printing. It needs the harness to drive the socket, or the demo needs to end by - aborting. +- ~~`web/examples/breakdemo.out` is stale and `check.sh` fails on it.~~ **Fixed.** Commit `4a6a8fa` made the break + banner number its restarts and the `.out` was never repinned. Nothing had to drive the socket in the end: + `check.sh` already builds this one `--dev` and runs it under `timeout 5`, keeping what it printed before it + stopped, so the repin was the `.out` plus the two prose copies of the banner — `web/index.html` and `BUILT.md` — + and a sentence on the page saying what the numbers are for, since a restart is taken by position. - ~~A shadowed restart is offered and cannot be taken.~~ **Fixed.** A restart is taken by *position* now: `(:op "restart-at" :index N :name NAME)` on the daemon, `restart-at N NAME` on the agent, and a numbered diff --git a/web/examples/breakdemo.out b/web/examples/breakdemo.out index 4383858..5ace326 100644 --- a/web/examples/breakdemo.out +++ b/web/examples/breakdemo.out @@ -1,4 +1,4 @@ flan: unhandled Missing — stopped, not dead. - restart: retry - restart: use-placeholder + 0. restart: retry + 1. restart: use-placeholder diff --git a/web/index.html b/web/index.html index 0760c5c..87299f9 100644 --- a/web/index.html +++ b/web/index.html @@ -983,12 +983,14 @@ frame that erred, with nothing unwound, so the condition and every restart betwe and the top are still live:

flan: unhandled Missing — stopped, not dead.
-  restart: retry
-  restart: use-placeholder
+ 0. restart: retry + 1. restart: use-placeholder -

From there you fix the function, install it, and take a restart. Control never left -the erring frame, so retry calls through the indirection cell and reaches -the new body. Installing while stopped is allowed; there is no frame in progress.

+

From there you fix the function, install it, and take a restart. The numbers are +how one is taken: a restart is chosen by position, because an inner one may shadow an +outer one of the same name and a name alone could not tell you which you were getting. +Control never left the erring frame, so retry calls through the +indirection cell and reaches the new body. Installing while stopped is allowed; there is no frame in progress.

The break loop lives in vendor/agent, which is an optional package. A program that does not import it leaves the hook null and stops the old way — the message