docs(website): the public surface, and the flag that decides what reaches it (Phase 14a) #224
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/events-p14a-public-surface"
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?
Events Phase 14a, docs half. One of two:
website(website#196),docs— both ontoedge.EVENTS.mdgains a new §I section on the public surface, the four API surface rows filled in,listedin §D, and the §J rows for player profiles and mobile.EVENTS_PLAN.mdrecords the 14a/14b split and 14a as built.BACKEND_DESIGN.mdnames the two tiers the Phase 14a reads live on.MODULE_API.mdrecords core's own capability list beside a module's.listedis announcement, not permissionThe decision that shaped the phase, and §D says why it is not a second answer to what
statealready answers:statesays schedulable,listedsays announced. The two came apart the moment there was a public surface at all, because publishing is what makes a definition runnable — so without the column a surprise invasion would have to be advertised a fortnight in advance in order to be allowed to happen. It defaults to 1, so every definition keeps the behaviour it had while the only reader was staff, and unlisting is the deliberate act.Two things this phase corrected in the document rather than in code
A venue was never a field. §I's screens table and the API surface table had both described one since the first revision — the definition editor's sections, and what an event page shows. There has never been one: not a column, not a key in
spec, not an input on Phase 13's form, not a string anywhere in either repo. Rather than add a field on the way past to a public page, both descriptions dropped it; the storyline already carries the where. (The word stays in §G and §B2 as ordinary English for a place in the world, which is what it always meant there.)The url variable this document has carried as a promise since Phase 10 is now kept.
eventUrl, carrying?run=, arriving with the page it points at — which is what makes it a version bump rather than a correction.What §I now records about the public surface
The rule for what reaches it (
listedandreadyand not a rehearsal, all three in SQL); that a visitor's calendar is a list where an operator's is a grid, because the same data is answering a different question; that the public shapes are a projection rather than a filtered admin shape, and that this is the security property — building the public answer by deleting fields from an operator's is the direction that fails silently; the three things absent from every shape and why each one is; and whyfailed/missedpublish ascancelledwhilepausedpublishes aslive.It also records that participation history is mounted twice, and that it is the third screen to need the
notificationPaths.jsmapping for the reason the first two did: the route is role-agnostic and the web'sRequirePlayeris what disagrees.The three defects, written down
Because both suites were green on either side of each one, and that is the argument for the walk in a sentence. Two were the same mistake in two files — a split reading a status where it should read a clock — and the third was a screen the reviewing admin could not open at all.
Checks
docshas no CI. Every relative link and in-page anchor in the new sections was resolved by hand; the files are CRLF in the working tree and each diff is content-sized (--numstat11/4, 127/14, 49/10, 11/0), so none carries the\r\r\nfull-file rewrite.🤖 Generated with Claude Code
https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4