docs(runicnpc): stage 8 built and walked; MODULE_API 1.12.0 progress(), map.live's RunicNPC rows
- website/MODULE_API.md: 1.12.0, an event action's optional progress(): its envelope, its two answer shapes, and the rule that it answers for one reader and never fails loudly. - website/EVENTS.md §I: a live occurrence's progress lines. - rust-link/PROTOCOL.md §17.3: map.live's RunicNPC rows (name, key, boss, health, add) and the world layer's boss. - runicnpc/PLAN.md: stage 8's design renamed live -> progress, and its "Built" section, with the branches, the tests and the walk on both rigs in the browser and on the emulator. Also recorded in the plan: a core finding outside this stage. The public page never shows a live run's phase label, because phaseLabel looks phases up by id while specs key them by key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -1472,6 +1472,23 @@ true about the server and nothing about the event. `paused` is the same argument
|
||||
direction: an operator holding a run for two minutes is not a state a public page should render, and
|
||||
one that said "paused" would invite a question whose answer is internal.
|
||||
|
||||
**A live occurrence says how it stands, in its modules' words (MODULE_API 1.12.0).** The spec stays
|
||||
unpublished, but a visitor watching an invasion wants to know it is going somewhere. An action may
|
||||
declare an optional `progress()`, and while a run is live core asks each such step. The live
|
||||
occurrence carries the answers as `progress`, in step order.
|
||||
|
||||
- **The shapes.** Each answer is a `label` with either `left` of `of` ("Bandits: 3 of 8 left") or a
|
||||
`percent` ("The Juggernaut: 62%").
|
||||
- **Core interprets neither.** The page and the app render the text and nothing else; a game's words
|
||||
never enter core (RunicNPC D305).
|
||||
- **The reader.** The route takes an optional session, and `progress()` is told the reader's account
|
||||
id. The module applies its own visibility settings: Rust's follows its map's events layer.
|
||||
- **Failure.** A module that is slow (over 2 s), throws or answers any other shape gives no line,
|
||||
never an error on the page.
|
||||
- **Caching.** Answers are cached per run and reader for 5 s. The page re-reads every 15 s while the
|
||||
event is live.
|
||||
- **Only the live occurrence.** A finished run has results, and a scheduled one has nothing to count.
|
||||
|
||||
**The six public triggers gained `eventUrl` here, which is the version bump this file promised.**
|
||||
Until Phase 14a there was no page, so they declared no url at all — `news.post` had already paid for
|
||||
that mistake once, previewing a link in the template editor that was dead in every mail it sent. The
|
||||
|
||||
Reference in New Issue
Block a user