docs(events): Phase 2 as built — the runner #210
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/events-phase-2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The docs half of Event System Phase 2. Pairs with
RunicGateway/websitefeat/events-phase-2.Two files, and the diff is additive except for two table rows.
EVENTS.md§E, §F and §L gain what building the runner settled. Six things:
runningwith a NULL lease. The step-status row says so, because the ENUM has no state for "waiting on a human" and adding one would be a tableALTERthatCREATE TABLE IF NOT EXISTSnever delivers to an existing deployment. The reclaim was written to take back only a lease that is non-NULL and expired — which is what lets a cue posted on Friday still be waiting on Monday.{ ok: true, await: 'human' }parks,{ ok: true, holdFor: <seconds> }finishes and delays what follows. Members rather than special cases keyed on an action id, so the runner never names a verb and Phase 7 hands a module the same door.holdForon the last step of a phase holds the NEXT phase. The later phase's steps do not exist at that moment, so the instant crosses the boundary. See the finding below.scheduledand lets its own grace window decide. Failing it at once would say the system broke when it correctly declined to overlap two events; queueing it would let an event announced for 8pm start at 11pm, which is whatmissedexists to prevent.nin §L'sretry(n)isEVENT_STEP_MAX_ATTEMPTS, and all threeon_failuredispositions write the STEPfailed— the disposition governs the run.skippedis left for a human's skip control in Phase 3, because a status meaning both "nobody ran this" and "this failed and we moved on" makes the run console's summary line unreadable.Plus a note on what "materialise" covers in this phase (the grace window only — the validator accepts
kind: 'manual'alone until Phase 4) and one saying Phase 2 added no routes at all, so nobody reads the still-absent live controls as a regression.EVENTS_PLAN.mdMarks Phase 2 complete, and records the four org-lead decisions (2026-09-02) and the three things the build settled on its own — including the two that are corrections rather than choices:
claimTickcarried anOR claimed_by = ?escape for a tick re-entering its own claim — which is precisely the overrun this phase's CAS is meant to protect against, sincesetIntervalfires whether or not the last callback returned.It also records where the claim paths are actually proved, and why that needed a second test file: engagement Phase 4a's cooldown claim was green against its stub and always allowed the send against a real server, because the connector defaults
foundRows: true. A stub can only ever agree with whoever wrote it.Verify
docshas no CI. Every relative link and anchor in both files was checked by hand — all resolve. The working tree is CRLF undercore.autocrlf=true, so both files were read universal-newline and written back\r\n;git diff --numstatis 62/2 and 65/0, and the two deletions are the two table rows that were genuinely rewritten.