Prototype demonstration
One source, seven surfaces
Close a trail section on the left. Watch every page that mentions it change, from that one action.
The RFP asks for information "managed from a single source and automatically reflected throughout the website." This page is that sentence, running. There is one closure record. Seven surfaces ask about it. None of them holds a copy, so none of them can drift.
What you are looking at
This console stands in for the Craft control panel. The JSON it
writes is the contract the production CMS emits — the same
notices.json shape, validated against the same schema file that ships
with this prototype. The propagation you are about to see is real; the editor
chrome is ours.
We made that trade deliberately. Standing up PHP, a database and Craft to render a stock control panel would have consumed two days of a nine-day build and shown you nothing a screenshot could not. Building our own console let us put the editor and every affected surface on one screen — which is a better demonstration, and it is honest about what it is.
1 · The site-wide alert bar
display.site_alert_bar ∧ severity ∈ {critical, major} ∧ status ∈ {active, expiring} The real bar is at the very top of this page — this panel reports what the query returned for it.
2 · The map
display.map ∧ (active ∨ scheduled within 72h) → geometry from affects.segments Indicative alignment traced from published planning figures (FGEIS Jan 2026), not survey data. The full map is at /map/ and runs this same query.
3 · The trail section page
affects.segments ∋ this 4 · Trailhead and parking pages
affects.trailheads ∋ this ∨ affects.parking ∋ this ∨ affects.amenities ∋ this 5 · Plan Your Visit
route.segments ∩ affects.segments, for the chosen date and mode 6 · Events calendar
event.location ∈ affects.* ∧ dates intersect → "may be affected" 7 · Español
the same record, i18n.es The record itself
content/v1/notices.json One record. Seven queries. No copies. The live version of this file is at /api/v1/notices.json, and it is offered publicly — today, NYS Parks, 511NY and the MTA all publish HHFT's operational status while hhft.org's only alert slot carries a promotion for the annual report.
Is it really the same query?
The surfaces above run in your browser, which means the query had to be a pure function rather than something that only exists at build time. Two implementations of one query is exactly the drift this whole contract exists to prevent — so the equivalence is checked when the site is built, and the result is printed here rather than promised.
All 10 query shapes agree between this page's query and content.ts#noticesFor, over the 2 authored records, checked when this page was built.
| Query | Agree | Returned |
|---|---|---|
| all live | yes | notice-breakneck-station-rebuild:active |
| alert bar | yes | notice-breakneck-station-rebuild:active |
| map | yes | notice-breakneck-station-rebuild:active |
| planner | yes | notice-breakneck-station-rebuild:active |
| critical + major only | yes | notice-breakneck-station-rebuild:active |
| MTA-sourced | yes | notice-breakneck-station-rebuild:active |
| wheelchair mode | yes | — |
| any status | yes | notice-river-reach-boardwalk-works:scheduled, notice-breakneck-station-rebuild:active |
| segment seg-fjord-trail-south-river-reach-2 | yes | — |
| place th-little-stony-point | yes | — |
What this demonstrates, in the RFP's own terms
- A single source. One
Noticerecord. Seven surfaces query it. Nothing is duplicated, so nothing can fall out of step — which is the failure the RFP describes when it calls the current site "very content heavy, much of which is no longer needed." - Automatic reflection. No page was rebuilt and no second field was edited. Every surface asked the same question and got the new answer.
- Nothing goes stale.
statusis derived. Move the clock past the end time and the notice retires itself everywhere at once. - Validation is content design. A closure will not publish without telling a visitor what to do instead. The summary cap is in the schema, not in a style guide nobody reads.
- Accessibility is behaviour, not decoration. Critical is assertive and cannot be dismissed; major is polite. Dismissal persists per record and version, so editing a notice brings it back for people who waved it away. Severity always carries an icon and a word, never colour alone.
- Two languages, one record. Spanish is four fields on the notice. Clear the Spanish title and publish to see the warning an untranslated major notice raises.
The live conditions this same model carries — weather from two National Weather Service offices, NOAA tide predictions, Metro-North arrivals, 511NY road events, and sunrise and sunset computed on your device — are at Visit → Conditions.