Review desk: announced pages (portal_events)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
16e5a27bde
commit
799e2b3c8c
@@ -180,8 +180,9 @@ Question id (derived from the file's path - see routing
|
|||||||
requires_chain (question ref the visitor's ?chain=
|
requires_chain (question ref the visitor's ?chain=
|
||||||
lineage must end at), followup (nav-hidden until
|
lineage must end at), followup (nav-hidden until
|
||||||
the visitor carries a chain; inferred from the
|
the visitor carries a chain; inferred from the
|
||||||
tree when unset), responsible {name, contact},
|
tree when unset), event {starts, duration, place}
|
||||||
alternatives[]
|
(announced page - see below), responsible
|
||||||
|
{name, contact}, alternatives[]
|
||||||
Alternative name, description, action, disabled (announced,
|
Alternative name, description, action, disabled (announced,
|
||||||
not yet takeable), consequence[label],
|
not yet takeable), consequence[label],
|
||||||
encouragements[], images[] (1 = banner, 2+ = card deck),
|
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
|
record's `?chain=` link plus its matching email (the unsubscribe
|
||||||
pattern).
|
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
|
**Attended buckets** (lint-enforced): every `record_as` bucket must be
|
||||||
read by some `kv` resource in this repo (a desk or listing) — or its
|
read by some `kv` resource in this repo (a desk or listing) — or its
|
||||||
`aggregates.yaml` entry must carry `attended_by: <who/what consumes
|
`aggregates.yaml` entry must carry `attended_by: <who/what consumes
|
||||||
|
|||||||
@@ -116,3 +116,26 @@ alternatives:
|
|||||||
- name: body
|
- name: body
|
||||||
label: Body
|
label: Body
|
||||||
type: prosekit
|
type: prosekit
|
||||||
|
|
||||||
|
- name: Announced pages
|
||||||
|
description: >
|
||||||
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user