/** * legal.mjs โ€” the handful of values the legal pages and the signup form must agree on. * PLAN.md ยง9, built in phase 6. * * --------------------------------------------------------------------------------------- * WHY THESE THREE THINGS ARE HERE AND NOT IN THE PAGES * --------------------------------------------------------------------------------------- * Each is stated in more than one place and would be wrong in exactly one of them: * * `minimumAge` /terms says it, /privacy repeats it, the consent sentence beside the * signup checkbox commits somebody to it, and the Play Data Safety notes * answer a question about it. Four surfaces, one number (D31). * `lastUpdated` A legal page with no date is a legal page nobody can reason about, and * two pages with different dates invites the reader to work out which one * is stale. They changed together; they say so together. * `licence` Quoted on /terms and in the footer. * * The contact address is deliberately NOT here. It is a `brand.json` field read through * `src/lib/brand.mjs` (D13), so that changing the published address stays a file copy on a * mount rather than an edit to the source โ€” and `checkFacts.mjs` fails the build if one is * typed into any file under `src/`. */ export const legal = { /** * The date the legal pages last changed, in the format they render it. * * Bump it in the same commit that changes what either page says. It is not generated * from git: a build timestamp would move on every rebuild and tell a reader nothing, * and a commit date would move when a stylesheet changed. */ lastUpdated: '2026-09-01', /** * The minimum age to sign up for the beta. The org lead's decision, 2026-08-24 (D31). * * Eighteen, chosen over thirteen and sixteen: it is above the children's-consent * threshold in every EEA state, so consent works as a basis with no parental-consent * machinery โ€” which this form has no way to obtain and no way to verify. It is the * simplest thing to state truthfully for a beta that needs twelve people. * * A number rather than a sentence because four surfaces render it. What the site can * actually enforce is a statement, not a check, and every one of those surfaces is * written to say so plainly rather than implying verification that does not happen. */ minimumAge: 18, /** The licence, quoted on /terms and in the footer. */ licence: { id: 'GPL-3.0-or-later', url: 'https://www.gnu.org/licenses/gpl-3.0.html', }, };