From 1898be6cb0ba94c9a7d512ce87e57bfb386fe647 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Sat, 12 Sep 2026 09:08:35 +0700 Subject: [PATCH] Repin the break banner, which has numbered its restarts since 4a6a8fa The .out file and the two places that quote it in prose had the banner from before restarts were numbered, so check.sh had been red on breakdemo since that commit. The .out is regenerated from the same build --dev and timeout run check.sh does, rather than typed: the leading blank line and the three spaces before each number are part of what is compared. The page gets a sentence it was missing. A number in front of a restart is not decoration -- a restart is taken by position, because an inner one can shadow an outer one of the same name -- and the banner showed the numbers without the page ever saying what they were for. --- BUILT.md | 4 ++-- NEXT.md | 10 +++++----- web/examples/breakdemo.out | 4 ++-- web/index.html | 12 +++++++----- 4 files changed, 16 insertions(+), 14 deletions(-) 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