diff --git a/README.md b/README.md index 0e5bb1d..a59ce36 100644 --- a/README.md +++ b/README.md @@ -180,8 +180,9 @@ Question id (derived from the file's path - see routing requires_chain (question ref the visitor's ?chain= lineage must end at), followup (nav-hidden until the visitor carries a chain; inferred from the - tree when unset), responsible {name, contact}, - alternatives[] + tree when unset), event {starts, duration, place} + (announced page - see below), responsible + {name, contact}, alternatives[] Alternative name, description, action, disabled (announced, not yet takeable), consequence[label], encouragements[], images[] (1 = banner, 2+ = card deck), @@ -236,6 +237,28 @@ review resource's transitions — fireable by whoever holds one specific record's `?chain=` link plus its matching email (the unsubscribe pattern). +**Announced pages.** A question carrying an `event:` block + +```yaml +event: + starts: 2026-09-12T18:00:00+02:00 # RFC 3339, with offset + duration: 3h # m / h / d, e.g. "1d 6h" + place: Galleri X, Oslo # optional, shown verbatim +``` + +is announced in the header of every page (name, when, "in 3 days") +while its window is open, instead of listed in the footer nav. The +page itself is an ordinary question - RSVP, directions, whatever its +alternatives say. When the window closes the page turns into a +followup (only visitors carrying an answer chain still see it) and +portal moves the page's record in the runtime-owned `portal_events` +bucket from `announced` to `awaiting_summary`, publishing that on +`portal.answers.submitted` like any decision (alternative "Summary +due") - the "post what happened" task. `/review`'s "Announced pages" +desk reads that bucket; **Posted what happened** closes the task. +Lint warns when pages carry `event:` but nothing reads +`portal_events`. + **Attended buckets** (lint-enforced): every `record_as` bucket must be read by some `kv` resource in this repo (a desk or listing) — or its `aggregates.yaml` entry must carry `attended_by: + Pages with an `event:` window, kept here by portal itself. When a + window closes the record becomes a task: post what happened, + then mark it done. + action: /review + consequence: [Confirm] + features: + - name: "" + description: "" + resource: + source: + kind: kv + bucket: portal_events + requires_group: owners + transitions: + - from: awaiting_summary + to: summarized + label: Posted what happened + - from: announced + to: summarized + label: Needs no summary