Skip to content

Latest commit

 

History

History
2025 lines (1805 loc) · 148 KB

File metadata and controls

2025 lines (1805 loc) · 148 KB

Wiki Log

Append-only. grep "^## \[" docs/wiki/log.md for the timeline.

[2026-05-29] design | 30-structure sitemap gereconcilieerd (staleness-notice weg)

Dashboard meldde 30-structure.md ouder dan recent-bewerkte pagina's (mtime-check). Sitemap gecontroleerd + bijgewerkt naar de huidige realiteit: per-locatie atelierpagina's (P-19) toegevoegd onder Open dansateliers: Atelier Leon in de boom (zoals edities/ onder Mariage), Atelier-rij in het content-model uitgebreid (eigen detailpagina per open atelier via slug, kind van het overzicht) en Venue-rij (photo/photo_credit + Filament VenueResource). Impact-omschrijving ongewijzigd geverifieerd (16/5-edit was copy, geen structuur). Re-save → structureStale nu null; dashboard 200, 0 warnings/drift.

[2026-05-29] build | 6 patterns → WF 🟢 + Dn-26 closed (16/5-jaar framing)

Frederik promoted 6 mature, multiply-used, render-verified patterns to WF 🟢: SP-01 nav · SP-02 footer · SP-04 subpage-top · SP-07 date-row · SP-08 agenda-list · SP-09 funder-wall (6/15; rest WF 🟠, UI 🔴). Registry + Dn-22 + index-blockquote bijgewerkt. Dn-26 closed (Frederik ruling): canonieke longevity-frasering = "16 jaar bezig, 5 jaar (als) vzw", nooit kaal "16 jaar" voor de organisatie. Toegepast op Home (hero + meta) en Impact (description + cijfers gesplitst in twee stats: 16 jaar samen dansen sinds 2010 binnen Ultima Vez · 5 jaar als vzw sinds 2021); Historiek + Over-index waren al eerlijk; P-02-getal blijft getrokken. Em-dashes in Impact §5-cijfers meteen opgeruimd. P-01/P-02 Top-gaps ge-pruned (ruling gemaakt; enkel feitelijke 2010-startjaar-confirm blijft). Telling: Closed 11 · Partly 4 · Open 11.

[2026-05-29] design | Concerns-lint: 4 Partly→Closed + patterns-pipeline (Dn-22)

Concern-review met Frederik. Closed: Dn-09 (faseringsmodel beslist; kalenderdatum = client-planning, geen design-vraag) · Dn-12 (editie-flows beslist + gebouwd, interest-only; rest = QA + minors-form via Dn-03) · Dn-14 (vocabulaire vast + in gebruik; pagina's schrijven hoort bij Dn-23) · Dn-03 (alle v1-formflows slaan niets op → geen design-GDPR-vraag meer; de stored deelnemers-DB incl. minderjarigen valt buiten v1 en gradueert naar het Build- register B-; newsletter blijft Dn-11). Dn-26 Open→Partly: P-02-getal getrokken, Historiek + Over-index framen al eerlijk ("X jaar bezig, 5 jaar vzw" / vzw-2021-vs-werk-2010), maar Home + Impact dragen de claim nog kaal — wacht op client-ruling. Telling nu Closed 10 · Partly 5 · Open 11. Dn-22: patronen-tabel kreeg een 2-traps pipeline (WF + UI) + legende, zoals de pagina's; parser (BuildStatus::parsePatterns) + /build patronen-sectie + tests aangepast. 15/15 op WF 🟠, UI 🔴 overal (Surface dicht); WF-🟢-kandidaten voorgesteld (SP-01/02/04/07/08/09) — wacht op Frederiks pass (Wire-gate). Dashboard: 0 warnings, 0 drift.

[2026-05-29] build | P-19 Back 🟢→🟠 + "Schoenen mogen uit" van P-03 geschrapt

Back teruggezet naar 🟠 (bezig): het lees-pad is live + test-covered, maar de admin (AtelierResource/VenueResource) is gebouwd, niet uitgebouwd/getest tot sign-off — dus het data-pad is niet "verified live" per de honesty-gate. Registry-rij + roll-up Back-regel bijgewerkt. Los hiervan: "Schoenen mogen uit" ook van P-03 (atelier-leon §4) verwijderd (niet geverifieerd; foto's tonen dansers mét schoenen).

[2026-05-29] build | P-19 "De eerste keer hier"-beeld vervangen (scrutiny → collectief)

Het seppe-circle-beeld (iemand in het midden, groep kijkt toe) ondermijnde de geruststelling van de sectie. Vervangen door atelier-leon-pink-trousers-joy (iedereen danst vrij door elkaar, gemengde leeftijden, niemand in het midden). studio-intergen-walk (binnen, alle leeftijden) paste qua boodschap ook, maar is al P-03's hero — vermeden om herhaling.

[2026-05-29] build | P-19 /critique — witgaten + breedte-inconsistentie weg

Gemeten (Playwright): §"Waar en wanneer" linkerkolom 226px vs rechter 651px (witgat ~425px); §"De eerste keer" op 80rem terwijl de andere 2-koloms sectie op 56rem zat (springende rechterrand). Opgelost: (1) álle secties cappen op --max-content 56rem → beide 2-koloms secties even breed op elke breakpoint; (2) buitenkant-foto van rechterkolom naar linkerkolom bij het adres, kaart vult de rechterkolom (items-stretch) → kolommen even hoog (1440: 570/570 en 500/500); (3) §4-beeld md:h-full zodat het de tekstkolom volgt. Sub-zin "De dates van deze {dag}groep…" geschrapt (vertaalkost, redundant met kop). Detail-suite 7/7; desktop + mobiel geverifieerd.

[2026-05-29] build | P-19 /arrange — venue-foto van hero → klein bij de kaart

De buitenkant-foto is functioneel (herkenning), geen sfeerbeeld. Verplaatst van full-width banner bovenaan naar een kleine 4/3-foto bóven de kaart in de rechter "wayfinding"-kolom van "Waar en wanneer" (foto + kaart samen = wat het is + waar het is); sectie-grid op items-start. Enig sfeerbeeld blijft het dansbeeld in "De eerste keer hier". Ook "Schoenen mogen uit" geschrapt (niet geverifieerd; foto toont dansers mét schoenen — staat nog op P-03). Detail-suite 7/7 groen; desktop+mobiel geverifieerd.

[2026-05-29] build | P-19 /critique — dates-duplicatie weg + venue-banner + Pianofabriek-foto

/critique-sessie: de "eerstvolgende keer"-datum stond dubbel (§3 promo-regel + §4-lijst). §3 toont nu enkel de wekelijkse cadans; §4 "Eerstvolgende keren hier" is de enige thuis voor concrete dates. §2 buitenkant-foto omgezet van SP-13 (natuurlijke hoogte) naar een vaste-verhouding banner (16/9→21/9, object-cover) zodat staande uploads niet ontsporen. Pianofabriek-foto geplaatst (Wikimedia CC BY-SA, staand → banner-crop). Detail- suite 7/7 groen; render desktop+mobiel geverifieerd.

[2026-05-29] build | P-19 content-model gestroomlijnd + Filament-beheer (lead, venue-foto)

Pragmatische review van de dynamische content op de atelierpagina, met het oog op × 3 talen: beslist dat de pagina geen per-instance prose draagt. Doorgevoerd: vrije-tekst "hoe geraak je er" geschrapt → OSM-route-deeplink (taalneutraal); begeleider-blok conditioneel (verdwijnt als lead leeg, geen placeholder meer); §2 wordt een buitenkant-foto per venue (venue.photo, niet per atelier-slug). Nieuwe velden: venues.photo + photo_credit (migratie, publieke disk + storage:link). Filament: AtelierResource (begeleider/slug/dag-uur/actief) + VenueResource (adres/coördinaten/ foto-upload) toegevoegd (v4 schema-split). Atelier::getRouteKeyName teruggedraaid → publieke route bindt expliciet {atelier:slug} zodat Filament's record-binding (id) blijft werken, ook voor de school-atelier zonder slug. Foto-zoektocht: Pianofabriek-kandidaat op Wikimedia Commons (CC BY-SA 4.0, © Adacoco 2021); Maison des Cultures geen vrije foto (heritage = © Gewest) → team-eigen foto aanbevolen; geen binaries gecommit (admin-upload). Tests: AdminResourcesSmokeTest (2, Livewire form-build asserts lead+photo) + detail-suite groen; volledige suite 82/83 (1 pre-existing EditionModelTest). Registry P-19 Conf 2→3, Assets 🔴→🟠; brief content-model-sectie toegevoegd.

[2026-05-29] design | Image-map Phase 2 — assets mapped to slots and wired into content pages

  • Ran Phase 2 of the image-mapping playbook: mapped catalogued assets to per-page image slots and wired them into the views + public/img/. New slot map at 91-image-map-new-site.md; 90-image-map.md Phase-2 status flipped deferred → done.
  • ✅ wired: home §2 hero, dansateliers hub (hero + 2 section beelden + 3 cards), atelier-leon, leon-op-school, opzetten (2 cards), impact §6, plus the 3 shared SiteSections::work() cards (Atelier Leon, Leon op school, Mariage). Credits recorded; project-card/placeholder-div slots expose no credit field, so credits only render on photo-blocks.
  • ⚠️ candidates needing a Surface decision: Mariage §2 (live Vimeo trailer vs. an SP-13 still) and historiek §6 (Mariage frame as lineage anchor; no Atelier Quartier 2017 / Birds frame exists).
  • ❌ honest gaps (top priority): per-editie Mariage hero photography (one frame per city/year), the mobiele dansstudio as a movable space (hub card + page + shared card), per-venue place-photos for atelier-detail, and team portraits (BG-3 keeps v1 text-only). Library is action, not place.

[2026-05-29] build | P-19 Atelier Leon — losse atelierpagina gebouwd (Wire 🔴→🟠, Back 🔴→🟢)

Page built end-to-end: slug op Atelier (migration + factory + seeder), nested route dansateliers.atelier-leon.detail (open+actief only; school/inactief/onbekend → 404, bound by slug), view dansateliers/atelier-detail.blade.php met echte NL-copy (header + praktisch

  • OSM-kaart + eerstvolgende-hier + eerste-keer), nieuwe SP-17 Map block (partials/map.blade.php, Leaflet/OSM, grayscale, no-JS deep-link). Venue lat/lng geseed (approximatief, team bevestigt). Inbound links live: P-03 §4 "Waar en wanneer"-blokken linken nu door ("Bekijk deze plek →") en agenda open-atelier-rijen wijzen op de detailpagina. Een agent draaide een /critique-sessie → §4 ontdaan van redundante venue/titel per rij, eerstvolgende-datum naar boven, §5 aankomst-specifiek gemaakt (vult P-03 aan i.p.v. herhaalt). Tests: nieuwe AtelierDetailPageTest (6, groen) + BuildStatusTest 18→19 bijgesteld; suite 79/80 groen (1 pre-existing EditionModelTest-failure, los hiervan). Render desktop+mobiel visueel geverifieerd; Wire blijft 🟠 (Frederik-critique earns 🟢). Registry + roll-up + SP-17 bijgewerkt.

[2026-05-29] design | P-19 Atelier Leon — losse atelierpagina (new page-type, UX speedrun)

Live UX-planning speedrun w/ Frederik. New child-detail page-type under P-03: one page per open Atelier instance (Pianofabriek-wo, Maison-za), nested URL /dansateliers-performances/atelier-leon/{venue}, scope = open ateliers only, with a Leaflet/OSM map (project's first). Serves the post-decision visitor: locatie-specifieke logistiek + sfeer + eerstvolgende-hier + eerste-keer-geruststelling. Linked from P-03 §4 "Waar en wanneer" block + agenda date-row titles. Brief 42-briefs/19-atelier-detail (Conf 2/5, all build stages 🔴 — needs slug on Atelier + route/view); registered P-19 in 40-skeleton registry + roll-up; index row added. Not built.

[2026-05-29] build | P-02 pipeline — reclassified to orientation hub + Back ❓→🟠

Registry row (40-skeleton) updated after the redesign + critique rounds: Type Util 3–5Mkt 3 (hub) (brief reclassification, orientation hub / Mkt-register, 3 bands); Back ❓ → 🟠 (Mariage open-call chip reads Edition:: openInschrijving() live, render-verified — consistent with P-01). Held: Wire 🟠 (Claude caps at 🟠; awaits Frederik's own 🟢 pass), Conf 3 (more asset-dependent now: 7 photo gaps + consent-pending quotes + open Dn-26), Assets/UI/OK 🔴. Top gaps rewritten (7 foto's, Schoemaker/Hadja consent, Dn-26 ruling, redesign-live note); roll-up Back-🟠 list += P-02. Verified via BuildStatus::report(): row parses, no warnings, no unexpected drift.

[2026-05-29] build | P-02 Dansateliers & performances — redesign built + critique-refined

Built the P-02 redesign from the 02-brief: beeldgedragen hero + two sporen (doe-zelf-mee / breng-Leon-naar-jouw-plek) with on-ramp cards, replacing the old 4-card utility index. Then three Frederik-led critique rounds refined it:

  • Layout: asymmetric side-by-side hero (headline high, not banner-then-text); sporen re-weighted — spoor 1 (P1) leads with the prominent image, spoor 2 (P3/P4) is a lighter text-led band. ⚠️ Overrides the brief's D-3 "two equal sporen" — brief to follow.
  • On-ramps: bridged with lead-in lines + feeling-first card copy; Atelier Leon card carries live weekly cadence from the Atelier model (Wo Pianofabriek / Za Maison des Cultures), richer than the lighter Mariage pointer.
  • Quotes: voice-matched (deelnemer in spoor 1, coördinator Schoemaker in spoor 2), demoted to caption-weight; Schoemaker attribution now carries her role.
  • Copy/facts: removed banned word traject; replaced vague "echte weg" with a concrete what-actually-happens line; pulled the "al 16 jaar" longevity claim from the hero (→ Dn-26, see below) for a verifiable present-tense line.

Renders desktop+mobile at https://leon.test/dansateliers-performances, em-dash-free public copy. Still Wire 🟠 — awaiting Frederik's own critique+refine pass before 🟢.

Dn-26 added (Open): the site-wide "sinds 2010 / 16 jaar" longevity frame conflates the practice lineage with Leon vzw (opgericht 2021) — needs a team/client ruling on what's honest; canonical home = Historiek. Number pulled from P-02; Home/Impact/Historiek still carry it pending the ruling. Readiness now Open 12 / Total 26.

[2026-05-28] lint | Wiki prune — archive Discovery, drop -content.md, slim index

Reduced the default reading path from ~159k to ~119k words (67 → 39 indexed files).

  • Archived the 12 concluded Discovery files into docs/wiki/_archive/discovery/ — local-only (untracked + .git/info/exclude), out of the index, browse-on-demand. Kept discovery/21-organisation + discovery/12-client-kickoff-2026-05-19 as live reference. Repointed inbound links from kept pages; fixed the 2 kept files' archived-sibling links.
  • Deleted the 16 42-briefs/XX-content.md strawman files — page copy now lives in the built Blade views. Stripped the sibling links from the 16 briefs + 40-skeleton.md.
  • Slimmed index.md to one line per page (3028 → 924 words). Light de-journal of kept briefs + HOT pages (current-state over changelog).
  • CLAUDE.md gained: wiki reading-tier rule, "history → log/git not page annotations", and "built pages keep copy in the Blade, no -content.md".
  • Verified: /build dashboard parses clean (warnings empty, 18 pages, 14 patterns, 24 concerns); link scan shows zero prune-caused dangling links (4 pre-existing typos + 8 historical log.md links remain, left untouched).
  • Follow-up (2026-05-29): the _archive files had already been pushed to the public remote (in history, commit since rewritten away locally) before the archive decision. Rather than rewrite shared public history, the team accepted it as not sensitive enough. The files stay untracked on disk going forward (.git/info/exclude); the historical commits remain in the repo. Treat the content as already public from 2026-05-28.

[2026-05-28] build | P-05 Mariage — critique fixes + trailer + closing-performance band

Acted on a /critique of /dansateliers-performances/mariage (wireframe lens). Built the sections the page was missing and added two things Frederik asked for: the Vimeo trailer and a band that guides the public to a Mariage editie's closing voorstelling when it is near.

  • §5 "Hoe een editie groeit" — proces · nazorg · continuïteit · evolutie (strawman, NL, tone-checked: no traject/creatie, no em-dash in running copy) with an embedded SP-12 quote (Hadja) between nazorg and continuïteit.
  • §6 "Mariage in jouw stad?" — the durable commission CTA Plan een gesprek/samenwerken/opzetten (P3/P4) + SP-09 variant C inline partner line (strawman, BG-6).
  • Vimeo trailer embedded in §2 (player.vimeo.com/video/1074336504?dnt=1, 16:9, lazy). ⚠️ shows a Vimeo "couldn't verify connection" notice in the headless/sandbox browser — verify in a real browser + check the video's Vimeo embed-domain setting (may be restricted to leon.dance).
  • New partials/upcoming-performance-band.blade.php — conditional, self-removing; promotes the next public Mariage voorstelling only when ≤ 8 weeks out (recruitment band carries the editie while the group forms; this takes over as the show nears). Needs an SP-id (sibling to SP-16) — left for the pattern-owning pass to avoid racing concurrent edits to 41-patterns.
  • page-header gained optional $eyebrowHref; Mariage eyebrow now links up to the dansateliers-performances index (orientation fix). Body copy capped to container-text.
  • TDD: tests/Feature/MariagePageTest.php (5 tests) — watch band shows ≤8wk / hidden far / hidden none / hidden non-public; page always offers the commission CTA + trailer. Green.
  • Pipeline: P-05 Assets 🔴→🟠 (trailer embedded; photos pending). Wire stays 🟠 per the Wire-🟢 gate (awaits Frederik's own critique pass). Roll-up Assets line + render-passed list updated.
  • ⚠️ Unrelated red: EditieModelTest::test_seeder_creates_six_mariage_edities_with_luik_open fails (now 7 edities, molenbeek open) — stale vs. the concurrent editie-reseed; owned by that thread.

[2026-05-28] build | Wire-🟢 gate correction — only Frederik's critique promotes a page to 🟢

Frederik: the wireframes are not done — he still needs to critique + refine them himself, so a page must not be marked Wire 🟢 on Claude's render/tone check alone. Reverted P-01, P-02, P-08, P-13 from 🟢 back to 🟠 (the two prior entries below bumped them this session). The render + tone work those entries describe still stands and is real — em-dash sweep, banned-word removal (traject/werking), full-width mobile CTAs — the pages just sit at 🟠 "render+tone done, awaiting critique." Roll-up now states the gate explicitly. P-18 left at 🟢 (set by an earlier session, not this one) — flag to Frederik whether it should also drop pending his critique. Next step: a critique + refine pass (Frederik-led) is the path from 🟠 → 🟢.

[2026-05-28] build | Index pages (P-02, P-08, P-13) Wire 🟠→🟢 — Wire pass continues

Drove the three index pages to wireframe-complete (visually verified desktop 1440 + mobile 390). All three are thin Util pages (page-header + list/card grid + footer wall) that rendered correctly; the work was a tone pass on the shared App\Support\SiteSections copy that feeds them:

  • P-08 Samenwerken: removed TOV-banned words from the link-list subs — traject op maatdanstraject op maat, dagelijkse werkinghet dagelijkse werk bij Leon; also dropped the arrows inside the first sub (read as dev shorthand in body copy).
  • P-13 Over Leon: em-dash in the Historiek card desc → comma.
  • P-02 Dansateliers: lede begeleide trajectenbegeleide danstrajecten; its work-grid cards were already em-dash-fixed in the P-01 pass (shared array).
  • Verified: all three pages now 0 em-dashes + 0 banned words in rendered HTML; clean reflow on mobile (cards/rows stack 1-col).
  • 40-skeleton: P-02 / P-08 / P-13 Wire 🟠→🟢; roll-up now 5 Wire-🟢 (P-01, P-02, P-08, P-13, P-18). Conf unchanged (Kristin content review still owed on all three).

[2026-05-28] build | Home (P-01) Wire 🟠→🟢 — first Wire-pass page after Contact

Drove Home to wireframe-complete (visually verified desktop 1440 + mobile 390):

  • Tone fix: removed em-dashes from the shared work-grid card copy (App\Support\SiteSections::work()) — 3 descriptions reworked to comma/colon per TOV no-em-dash rule. Fixes Home §3 and the Dansateliers index (P-02), which share the array.
  • Mobile CTA: hero buttons now full-width stacked < 640 px, inline auto-width ≥ 640 px (flex-col sm:flex-row + w-full sm:w-auto) — the brief's "full-width on mobile" playbook rule (flex-wrap alone didn't trigger it at 390 px). Rebuilt assets (npm run build) so the new sm: utilities compile.
  • Verified: renders clean both viewports · running copy em-dash-free (only brand name "KANAL — Centre Pompidou" remains, in an alt attr) · no TOV-banned words · skip-link + <main id="main-content"> present.
  • 40-skeleton: P-01 Wire 🟠→🟢; roll-up now 2 Wire-🟢 (P-01 + P-18). Conf stays 3 (content review still owed by Kristin).
  • Open a11y note (cross-cutting, not P-01-only): .btn-* height is 2.25rem (36 px) < 44 px tap-target — a global SP-01 fix, deferred.

[2026-05-28] build | SP-10 inschrijving form — interest-only slice of Dn-03 (email-only, no store)

Unblocked the editie §5 signup: replaced the mailto: + "GDPR-flow geklaard" annotation bridge with a working server-handled form. Same decouple-then-build move that resolved the contact slice (2026-05-28-contact-form-design.md): the internal, stored participant DB (deelnemers, incl. minors → consent capture) stays genuinely blocked under Dn-03, but a low-friction interest form does not. The external newsletter / ESP is a separate concern (Dn-11) — not part of Dn-03.

  • POST /inschrijving (throttle:5,1) → InschrijvingController@store · StoreInschrijvingRequest (naam req · email req · bericht nullable · editie exists:edities,slug) · honeypot website checked in the controller (silent drop, no leaked error) · InschrijvingRequestMail (subject Inschrijving — {project}: {editie}, replyTo submitter) → emails/inschrijving-request.
  • Editie context carried as the slug (hidden field), resolved server-side to the human label — no arbitrary text reaches the subject line.
  • partials/inschrijving-form.blade.php (SP-10) — no own h2 (lives under §5 "Inschrijving"); PRG success panel on session('inschrijving_success'), error summary + old input on failure. Wired into dansateliers/mariage-editie.blade.php open-branch (replaces mailto + annotation).
  • Data-minimisation: emails the team only, stores nothing — no applications table/model. No special-category data; actual enrollment + parental consent for minors stays offline.
  • TDD: tests/Feature/InschrijvingFormTest.php (6 tests, written-failing-first) — valid send + PRG, missing naam/email, optional bericht, unknown editie rejected, honeypot drop, rate-limit. Full suite 51 pass / 1 skip. Browser-verified on Luik 2026: form renders + success state + mail logged (To hello@leon.dance, Reply-To submitter, subject "Inschrijving — Mariage: Luik 2026").
  • Wiki: Dn-03 → inschrijving-interesse slice resolved; remaining Dn-03 blocker = the internal stored participant DB (minors consent). External newsletter ESP stays at Dn-11 (separated out — was wrongly bundled into Dn-03). · SP-10 🔴→🟠 built in 40-skeleton + 41-patterns (only 🔴 left = SP-08 deprecated) · P-06 Top-gaps dropped the GDPR-blocker note.

[2026-05-28] build | Pipeline reconcile — P-05/P-06 registry rows caught up to the Editie/open-call flow

The 2026-05-28 open-call wave updated 40-skeleton's patterns table + briefs but left the page-registry rows stale. Caught them up to shipped reality:

  • P-05 Mariage: Wire 🔴→🟠 (view renders editie-grid + SP-16 band from the model — "nog niet gerenderd" note was false) · Back ❓→🟠 (queries Editie) · dropped [research] Editie-model gap.
  • P-06 Mariage editie: Conf 2→3 (template now data-backed by 6 seeded edities + Filament admin) · dropped [research] Editie-Eloquent-model gap.
  • Roll-up: Wire 🟠 15→16 (P-05 no longer 🔴) · Back-🟠 list +P-05 · ≤2-confidence set now P-11 only.
  • Verified via BuildStatus::report()warnings + drift empty.

[2026-05-28] build | Open-call / inschrijving flow (Editie model + SP-16 band + EditieResource)

8-task build wave on feat/open-call-inschrijving. First Build-phase data model.

  • App\Models\Editie Eloquent model + migration (create_edities_table). Inschrijving-control fields: inschrijving_open (bool toggle) + inschrijving_closes_at (nullable auto-close). Methods: status() · isInschrijvingOpen() · inschrijvingClosesSoon(). Scope: openInschrijving(). Relation: events().
  • EditieSeeder — 6 Mariage edities seeded; Luik 2026 has inschrijving_open = true (the live open call).
  • Route-model binding by slug — unknown editie slug → 404 (closes P-06 brief gap #8).
  • Editie page (P-06) §5 refactored — inschrijving copy now driven by isInschrijvingOpen() (team toggle), NOT by date-status. Three reading-modes: open · gesloten-niet-afgelopen · afgelopen.
  • SP-16 Open-call band (resources/views/partials/open-call-band.blade.php) — conditional self-removing; variants home (P-01, no section-budget slot) + project (P-05 Mariage, above §4 editie-grid). Eyebrow NIEUWE EDITIE; CTA Ontdek deze editie; closing-date line when near.
  • Open-call chip on shared work-grid SP-05 Mariage card — appears on P-01 §3 + P-02 §2 when Editie::openInschrijving()->exists().
  • Mariage page (P-05) §4 — editie cards now rendered from Editie model with status chips (closes brief gap #8 on P-05).
  • Filament EditieResource (app/Filament/Admin/Resources/Edities/) — UI for the inschrijving_open toggle + inschrijving_closes_at date.
  • GDPR boundary: flow only. Inschrijving form (SP-10, minors consent) still blocked by Dn-03 — editie §5 CTA remains mailto: until Dn-03 clears.
  • Wiki updates: Dn-12 note advanced · Dn-22 bumped to v0.5 (12/14 patterns) · SP-16 spec added to 41-patterns · 40-skeleton patterns table + prose updated · BG-5 + BG-8 annotations in P-06 brief · gaps #1 + #8 resolved in P-06 brief · gap #8 resolved in P-05 brief · SP-16 conditional noted in P-01 + P-02 briefs · Editie + Inschrijving rows extended in 30-structure content model. Build-phase B- register not yet created — pointer added in Design register.

[2026-05-28] design | Home hero reframed (reader-addressed) + em-dash sweep done

Em-dash sweep completed. Removed every spaced em-dash from rendered public copy across ~25 Blade views (4 parallel agents, split by directory), per the rule logged below. Replaced with comma / colon / period; page titles now use " · " instead of " — ". Left untouched by design: the proper name "KANAL — Centre Pompidou", quote attributions (— naam), empty-value '—' placeholders, bracketed wireframe placeholders, and code comments. php artisan view:cache compiles clean.

Home hero reframed (P-01 §1). User's call: the old h1 "Een open uitnodiging om mee te dansen — met de mensen die het al doen." read as an offer-statement (mission-statement feel) and was long. New direction borrows Debateville's structure (title speaks to the reader, the paragraph explains and lands the emotional benefit) in Leon's quiet register:

  • h1: "Dans een keer mee." (reader-addressed; "Dans" avoids the "Kom…/Kom langs" echo with the primary CTA)
  • lede: "Bij Leon dans je wekelijks samen met andere Brusselaars: in een open atelier of op de scène van een grote voorstelling. Geen ervaring nodig. Je hoort er meteen bij."
  • gewichtsregel: "In Brussel sinds 2010. Gratis, zonder inschrijving." (de-duped "wekelijks", now in the lede)
  • Encoded the reader-addressed-title principle in TOV §Home (✓/✗ examples updated) and synced 42-briefs/01-home-content.md.

[2026-05-28] design | Tone of voice — ban the em-dash in public copy

User flagged that the live copy is full of gespatieerde em-dashes (X — Y), the clearest tell of AI/dossier writing (spotted on Home hero and Contact intro). Added the rule to identity/10-tone-of-voice.md in three places: a Stijl & ritme bullet (split the sentence, or use comma/colon/parentheses; only exception is attribution after a quote), the Verboden in publieke copy list, and a new checklist item #9 (was 8). Fixed the guide's own Home example, which used the banned em-dash. Mirrored the rule into CLAUDE.md Content rules and bumped its "8-point" → "9-point" reference. Not yet swept: ~150 em-dashes remain across the public Blade views (historiek 20, mariage-editie 14, leon-op-school 14, …) — copy rewrite offered as follow-up.

Per user "Can you dispatch agents to already draft the skeleton and content (and implement the code) for the other pages? Taking your best guess. No need to ask me questions." — dispatched 15 parallel agents (general-purpose subagent), one per remaining page (P-11 Doen skipped, blocked by Dn-19 Strategy work). Each agent ran the full per-page playbook: read project context → write Skeleton brief at 42-briefs/NN-{slug}.md → write NL content strawman at NN-{slug}-content.md → rewrite resources/views/{path}.blade.php → smoke-test HTTP 200. All 15 returned successful. End-state: 17 of 18 pages at 🟠 first draft across all 5 stages (Brief · Wireframe · Content · Code; Approved still awaits client). Only P-11 stays 🔴 across the board.

  • Pages delivered (15): P-02 Dansateliers index · P-03 Atelier Leon · P-04 Leon op school · P-06 Mariage editie (template) · P-07 Mobiele dansstudio · P-08 Samenwerken index · P-09 Opzetten · P-10 Uitnodigen · P-12 Agenda · P-13 Over Leon index · P-14 Missie & visie · P-15 Impact · P-16 Team · P-17 Historiek · P-18 Contact.
  • Conf distribution: P-18 = 4 (snapshot data verified verbatim from current-site mirror). 15 pages at 3. P-06 = 2 (template — per-editie facts gap across 5 non-Brussels instances). Roll-up: avg 2.9 / 5 (was 2.6).
  • Patterns library v0.4 — 11 / 13 at 🟠:
    • SP-11 Contact pattern promoted 🔴 → 🟠 first draft (inline first uses on P-09 §8 + P-10 §6; lift to partials/contact.blade.php on 3rd caller).
    • SP-12 Quote/testimony now has a Blade partial — resources/views/partials/quote.blade.php created by the P-15 Impact agent (canonical implementation: $quote, $attribution, $context?, $variant?). Reused by P-09 / P-14; inline-rendered on P-04 / P-05 / P-06 / P-17 (lift to partial on next pass).
    • SP-08 Agenda preview strip DEPRECATED — superseded by direct SP-07 ×N usage in P-01 §4 and P-15 "In cijfers". Slot kept for ID stability; no spec planned.
    • Only 🔴 remaining: SP-10 Inschrijving form (blocked by Dn-03 GDPR; on-page stubs render mailto: + visible "form in voorbereiding" annotation).
  • Candidate patterns surfaced (not yet promoted):
    • SP-14 text-link rows — 3 uses (P-01 §5 · P-08 §2 · P-18 §3); ready to promote on next pattern-pass.
    • Person card (P-16 local SP-NEW-1) — defer until 2nd use.
    • SP-15 map placeholder (P-18 only) — defer until Leaflet bootstraps in app.js (per CLAUDE.md: OpenStreetMap + Leaflet.js only).
  • Brief gaps closed by implementation: P-12 Agenda agent simplified the routes/web.php agenda route to Route::view (self-contained @php block in the view handles filter logic + URL state). P-06 Mariage editie agent kept the live Event query and added a status-aware editie metadata map (hard-coded slug→title/period/ status until Editie Eloquent model lands — pending [research] gap).
  • Cross-page content gaps surfaced:
    • Hadja quote re-used by design across P-05 Mariage + P-14 Missie & visie + P-15 Impact — single consent ask covers all three.
    • "Sinds 2010" jaartal-frame used by P-01 Home + P-15 Impact + P-17 Historiek + P-13 Over Leon — single confirmation covers all four.
    • Schoemaker quote re-used by P-04 Leon op school + P-09 Opzetten — single consent ask.
    • "in voorbereiding" wording shared by P-08 (Doen card) + P-18 (Contact form note) — single editorial decision.
  • Validation gates: all 15 reported 8/8 PASS (sections answer user question, single primary CTA per page, state inventory explicit, section budget respected, no either/or notes, patterns referenced by SP-id, canonical home for facts, mobile-first sketch).
  • design/40-skeleton.md: 15 page registry rows updated (Brief/Wireframe/Content/ Code 🔴 → 🟠 each, Conf updated, gap pointers refined with brief links). Roll-up refreshed: 17/18 pages at 🟠, avg conf 2.9. Patterns library section bumped to v0.4 with the deprecation + candidate notes.
  • design/41-patterns.md: status snapshot v0.3 → v0.4. SP-11 promoted with first-use convention. SP-12 implementation pointer updated to the Blade partial. SP-08 re-classified as deprecated. New "Candidate patterns" subsection added below status snapshot.
  • design/01-concerns.md: Dn-22 updated (11/13 drafted; SP-08 deprecated; only SP-10 🔴 blocker). Dn-23 updated (avg conf 2.6 → 2.9; 6 pages-at-≤2 → 2 pages-at-≤2). Phase-conclusion counts unchanged (no new concerns): 6 Closed · 6 Partly · 12 Open · 24 total.
  • index.md: 15 rows added (one per new brief, with sibling content + conf + key decisions).
  • No git commit / no git add (shared multi-thread tree — user commits).
  • Next sensible moves: (a) walk through the briefs for client/team review and consent calls — many gaps are blocked on Kristin/Sam input; (b) close the SP-12 inline-render → partial migration pass (P-04/P-05/P-06/P-17 switch to @include('partials.quote')); (c) promote SP-14 text-link rows to its own partial (3-use threshold met).

[2026-05-27] design | P-05 Mariage — Skeleton brief v0.1 (autonomous, best-guess)

Per user "open the P-05 Mariage brief. And ask a little questions as possible. Follow your best guesses." — wrote the Mariage project page brief autonomously without brainstorming Q&A. All structural decisions documented inline as BG-1 … BG-7 best-guess calls (reversible on user review):

  1. BG-1 hero treatment: SP-04 variant B (text header + SP-13 photo as next sibling) — same pattern as home, consistent.
  2. BG-2 hero CTAs: none. Project-info-first; CTAs land in §6. Belonging dial per TOV §Dansateliers: "Inschrijven als laatste sectie, niet als sales-blok."
  3. BG-3 §4 Edities: all 6 chronological newest-first with status chips (aankomend · lopend · afgelopen). N=6 fits without pagination.
  4. BG-4 quote source: Hadja (67) verbatim from missie-visie current-site mirror — P1 belonging-dial voice (re-used per strategy/20-personas).
  5. BG-5 §5 sub-headings: 4 named beats Proces · Nazorg · Continuïteit · Evolutie matching the Project entity fields.
  6. BG-6 inline partner mention: SP-09 variant C prose line naming per-Mariage partners (KANAL · KVS · CAMPO · BRONKS · MUS-E + funder tier).
  7. BG-7 §6 CTA: "Plan een gesprek"/samenwerken/opzetten (verb-first per TOV).
  • New page design/42-briefs/05-mariage.md — full brief. 5-Kern · BG-1…BG-7 table · full-page ASCII (desktop + mobile) · 6 section specs · state inventory · patterns invoked table · canonical-home-for-facts · validation 8/8 PASS · 8 open gaps tagged + owner-assigned. Conf 2 → 3.
  • 3 new patterns first-drafted as side-effect:
    • SP-06 Editie card (date-forward cousin of SP-05): title {city} {year} + status chip + period; whole-card link; variant A text-only / B with cover photo; states default · aankomend · lopend · afgelopen · overflow · hover.
    • SP-12 Quote / testimony: single voice — no carousels, no walls. Quote text + attribution + optional context; variants A inline frame / B standalone section / C pull-quote. No portrait photo by default (rights overhead).
    • SP-09 variant C inline: prose line for per-project partners — verb-led framing ("komt tot stand met", "met steun van"), no logo grid. Documented full anatomy inside the existing SP-09 spec.
  • design/41-patterns.md — 3 new pattern specs appended; status snapshot bumped to v0.3 (10 / 13 at 🟠).
  • design/40-skeleton.md — P-05 row updated (Brief 🔴 → 🟠, Wireframe 🔴 → 🟠, Conf 2 → 3, Top gaps refined). Pattern library status updated.
  • design/01-concerns.mdDn-22 Partly (8 → 10 patterns drafted; remaining 3 are SP-08 redundant / SP-10 GDPR-blocked / SP-11 contact-on-demand). Counts unchanged: 6 Closed · 6 Partly · 12 Open · 24 total.
  • index.md42-briefs/05-mariage.md row added above 01-home-content row.
  • No code changes yet. Brief approved → next pass renders code (per-page Content
    • Code columns). The 6-page render is on the autonomous-dispatch wave below.
  • No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-27] build | P-01 Home Code 🔴 → 🟠 (strawman rendered, §4 live from Event model)

Third pass on P-01: moved Code column from 🔴 routable shell to 🟠 first draft — strawman rendered. While the work was in progress, the user (separate thread) shipped the Event entity backend (model + enum + migration + seeder + Builder scopes), which let §4 wire to live data instead of seeded strawman. Brief gap #6 ([research] Agenda backend feed) → CLOSED; brief gap #7 (public-only filter) → CLOSED in implementation.

  • 4 new Blade partials under resources/views/partials/ (canonical implementations of their respective SP-patterns):
    • project-card.blade.php (SP-05) — accepts $title · $desc · $href · $image?; whole-card link, hover-tint, image slot collapses if absent.
    • date-row.blade.php (SP-07) — accepts $date · $time · $type · $location · $href; mobile reflow via flex-col md:flex-row; $type slot accepts any display label.
    • funder-wall.blade.php (SP-09, NEW) — accepts $variant ('full' default / 'featured'). Renders 4 tiers (Met steun van · Co-producenten · Speelplekken · In samenwerking met) with strawman partner data (real data pending SharePoint). Featured variant: larger tiles, more breathing, eyebrow h2 above.
    • photo-block.blade.php (SP-13) — accepts $src · $alt · $credit? · $caption? · $variant?. Missing-asset = section collapses (Dn-20 guard). Ready for first asset; unused on home v0.1.
  • resources/views/partials/footer.blade.php — extracted inline wall into the new funder-wall partial; suppressed on home (@unless (Route::is('home'))) to avoid double-show when P-01 §6 renders the Featured variant.
  • resources/views/home.blade.php — full rewrite per brief. 6 sections + NL strawman copy (per 42-briefs/01-home-content): §1 hero (eyebrow + h1 + lede + 2 CTAs + jury 1-line band) · §2 placeholder comment for photo block (collapsed) · §3 SP-05 × 4 with NL card copy · §4 live from Event model (top-3 upcoming public events, internal types excluded, NL dd D.MM date format via isoFormat('dd D.MM') + setLocale('nl'), empty state copy) · §5 3 text-link rows · §6 SP-09 Featured variant. Page-level <title> + meta description set on @extends('layouts.app', [...]).
  • Live data wire-up authored by the user in @php block at top of home.blade.php: \App\Models\Event::query()->where('is_public', true)->whereNotIn('type', [LWP, LRDT]) ->upcoming()->limit(3)->get() + a $hrefFor closure that maps practice_slug/project_slug to the right route. Closes gap #6 ([research] Agenda backend feed was open since brief v0.1 this morning).
  • Smoke-tested all 5 home-adjacent routes return 200; home/over-leon screenshots captured at 1440×900 desktop + 390×844 mobile (Playwright). Verified:
    • All 6 home sections render (with §2 correctly collapsed for missing photo).
    • Funder wall shows exactly once on home (§6 Featured) and once on /over-leon (footer default) — suppression works as designed.
    • §4 renders 3 live events from DB: DI 2.06 · 13:30 Mariage in de klas — BRONKS, DI 2.06 · 15:30 Atelier Mariage x MUS-E — GBS Kameleon, WO 3.06 · 14:00 Atelier Mariage x Ketmet — Cultureghem.
    • Mobile: §3 cards stack 1-up, CTAs full-width, SP-09 2-col grid, SP-07 wraps date/time above title.
  • One bug fixed mid-flight: Blade comment {{-- ... --}} inside an @php block in the funder-wall partial caused a PHP parse error ("unexpected identifier 'partner'"). Replaced with // PHP comments. Lesson: Blade syntax doesn't apply inside @php.
  • design/40-skeleton.md — P-01 Code 🔴 → 🟠; gap pointers refined (gap #6 removed). Pipeline lifecycle paragraph updated to document the partials-as-pattern- implementation convention.
  • design/41-patterns.md — SP-05 / SP-07 / SP-09 / SP-13 implementation pointers updated from "no partial yet" to live file references.
  • Tasks #17–#21 completed. Brainstorming-skill arc for P-01 Home v0.1 fully closed: Brief 🟠 + Wireframe 🟠 (desktop + mobile) + Content 🟠 + Code 🟠 + (Approved still awaits client).
  • No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-27] lint | Event model reconciled with raw agenda (30-structure.md)

Cross-checked the Event entity in 30-structure.md against the verbatim 65-entry transcription in 25-agenda.md. Two gaps surfaced; both folded into the content-model table.

  • klas added to the type enum. Real-world data: 21 / 65 entries (≈ 32 %) are school sessions (Leon in de klas, Mariage in de klas) — the second-most-common type after Atelier Leon (13). The spec's enum had no slot for it; school events would have defaulted to a wrong type. Now: open atelier · klas · repetitie · try-out · voorstelling · Leons White Page · Leon rond de tafel. Sitemap filter list updated to match.
  • lead + partners added as Event fields. Every transcribed entry carries a named facilitator (Lena, Stef, Seppe, Kristin/Adnane, Team Leon) and many carry one or more collaborators via the x grammar (Atelier Mariage x MUS-E, Leon on tour x Opening De Loods). The Excel columns Kristin actually maintains are Date · Time · Activity · Lead · Venue — so the model now mirrors that. lead = free-text string; partners = free-text string of x-collaborators (v1; promote to a Collaborator table later if needed — not the funder/partner wall, which stays its own entity).
  • Time + venue + visibility fields named explicitly. starts_at · ends_at · venue · is_public · notes. Venue stays a string for v1 (7 venues cover all 65 entries; cheap to normalise later if it earns its keep).

⚠️ No new Dn- concern raised — this is a Structure-spec consistency lint, not a new open question. The IA principles (one shared vocabulary; agenda 2-axis filter; internal events shown by default with a 1-line explainer) all still hold; the type list inside those rules just got one entry longer.

Files touched: docs/wiki/design/30-structure.md (content-model table row · sitemap filter list · frontmatter updated: 2026-05-20 → 2026-05-27 + sources line). No index.md change needed (the row's summary still describes the same entities). No Concerns register change.

[2026-05-27] design | P-01 Home — Content strawman v0.1 + brief mobile sketch

Second pass on P-01: closed brief gap #8 (mobile wireframe) — validation gate now 8 / 8 PASS, awaiting user review. Then advanced P-01 down the pipeline: Content column 🔴 → 🟠 with NL strawman copy aligned to identity/10-tone-of-voice §Home.

  • design/42-briefs/01-home.md updated — desktop wireframe sibling: full mobile ASCII (< 768 px), responsive notes (CTA full-width mobile, §3 grid 1↔2-col, SP-09 2↔3↔6-col, SP-07 wrap behaviour, no mobile-only content). Validation gate item 8 ticked. Status banner updated: brief 🟠 first draft (gate 8/8 PASS — awaiting review for 🟡 reviewed).
  • design/42-briefs/01-home-content.md — NEW. Sibling to the brief; structure and content evolve independently. Per-section NL strawman copy with explicit TOV discipline applied:
    • Hero h1: TOV-approved "Een open uitnodiging om mee te dansen — met de mensen die het al doen."
    • Lede: "Een wekelijks open atelier, en grotere voorstellingen waarin Brusselaars samen op de scène staan. Geen ervaring nodig om mee te doen."
    • Jury 1-line band: "In Brussel sinds 2010. Wekelijks samen, gratis en zonder inschrijving." — uses the "16 jaar bezig"-frame (2026 − 16 = 2010 lineage point); jaartal te bevestigen door Sam/Kristin.
    • §3 work cards (4): title + 1-line desc per card (Atelier Leon · Leon op school · Mariage · Mobiele dansstudio).
    • §4 Agenda: template rows + empty-state copy ("Geen aankomende publieke events. Kijk gerust op de volledige agenda.").
    • §5 Samenwerken: h2 + 1-zin intro + 3 verb-first link rows.
    • §6 partners: tier captions per SP-09 spec.
    • <head>: <title> + meta description strawman.
    • TOV-checklist 6/6 inline pass (uitnodigend · concreet · warm zonder zoetsappig · toonbaar i.p.v. prijzend · plain niet schools · één lezer per pagina).
  • Per-gap movement on P-01:
    • Gap #1 NL h1 + lede: open → 🟠 strawman
    • Gap #3 jury band wording: open → 🟠 strawman
    • Gap #7 public-only filter: open → 🟠 strawman (recommended + documented)
    • Gap #8 mobile sketch: closed
    • Gaps #2 (hero photo), #4 (partner data), #5 (card covers), #6 (Agenda backend) = unchanged; asset/client/research-blocked.
  • design/40-skeleton.md — P-01 row Content column 🔴 → 🟠; gap pointers refined. Roll-up note updated.
  • design/01-concerns.md Dn-23 updated with the P-01 advance.
  • index.md42-briefs/01-home-content.md row added (above the brief row).
  • No code changes. Strawman is doc-only; Blade rendering = Code-column 🔴 → 🟠 transition in a downstream pass.
  • Next step options: (a) Kristin review on the strawman to confirm jaartal + tone; (b) move P-01 Code column 🔴 → 🟠 by rendering the 6 sections with this strawman copy; (c) open P-05 Mariage brief.
  • No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-27] design | P-01 Home — Skeleton brief v0.1 (first per-page brief)

Per user "open the first page brief", ran the brainstorming skill for P-01 Home — the highest-leverage page + the load-bearing case for unblocking SP-03 hero. Visual companion server enabled (http://localhost:54294, files under .superpowers/brainstorm/). 4 user decisions taken Socratically (Claude proposes → user reacts → next question):

  1. Dominant note → invitation-forward (per D-iv). P1 newcomer leads; jury rigor sits immediately below the line, not in it.
  2. Jury second-line signal → 1-line factual copy band (.meta style under CTAs). Reads as plain fact to a newcomer, as proof to a jury. Strawman: "Wekelijks in Brussel. Vier projecten lopend."
  3. Hero treatment → text-only hero + photo as next sibling (SP-04 variant-B logic applied to home). Walker / Boris Charmatz discipline. Avoids the empty-void / fragile hero failure mode.
  4. Agenda preview → next-3 list (SP-07 ×3). Best P1 utility; density-as-proof job stays on /agenda.
  5. §3 duplication fix. User flagged: the 4-card IA grid duplicated §4 Agenda + §5 Samenwerken. Resolved by replacing the grid with a 4-card work showcase (Atelier Leon · Leon op school · Mariage · Mobiele dansstudio) → each section now has a unique destination tier (§3 work · §4 utility · §5 commission · §6 proof).
  • New page design/42-briefs/01-home.md — full brief. 5-Kern · full-page ASCII wireframe · per-section spec (composition · pattern · CTAs · states · canonical-home- for-facts) · state inventory · patterns invoked table · validation gate (7 / 8 pass — mobile sketch owed) · 8 open gaps tagged + owner-assigned. Tagged gaps: [content] × 3 (NL hero copy / jury band wording / partner data), [asset] × 2 (hero photo / 4 card covers), [research] × 1 (Agenda backend feed), [strategy] × 1 (home-preview filter for internal types), [design] × 1 (mobile sketch).
  • 4 new patterns first-drafted as side-effect (the "drafted on first use" rule):
    • SP-03 Hero — home (thin, page-specific — spec lives in the brief);
    • SP-05 Project card (cover optional + title + 1-line desc + whole-card link; variants A photo / B text-only; used on P-01 §3, P-02, P-05, agenda);
    • SP-07 Date-row (atomic agenda row: date · time · type · location; variants A condensed / B full; type enum from Glossary; used on P-01 §4, P-05, P-06, P-12);
    • SP-13 Photo block (single editorial photo + credit + caption; variants A full-width / B contained / C inline; missing-asset = section collapses, Dn-20 anti-pattern guard).
  • SP-08 Agenda preview strip flagged possibly redundant — P-01 §4 uses SP-07 ×3 directly without needing a wrapping pattern. Re-evaluate before opening P-13 Impact ("In cijfers" surface).
  • design/41-patterns.md — 4 new pattern specs appended; status snapshot bumped to v0.2 (8 / 13 at 🟠).
  • design/40-skeleton.md — P-01 row updated (Brief 🔴 → 🟠, Wireframe 🔴 → 🟠, Conf 2 → 3, Top gaps refined). Pattern library table refreshed (4 → 8 at 🟠). Roll-up avg confidence 2.5 → 2.6.
  • design/01-concerns.mdDn-22 Partly (4 → 8 patterns drafted; remaining 5 are SP-06/08/10/11/12). Dn-23 Open → Partly (P-01 first page lifted off baseline). Counts: 6 Closed · 6 Partly · 12 Open · 24 total.
  • index.md42-briefs/01-home.md row added (above 41-patterns row).
  • Brainstorm artifacts preserved in .superpowers/brainstorm/37841-1779915184/ (5 HTML screens: welcome · hero-treatment · agenda-preview · section-list · fix-duplicate). .superpowers/ already in .gitignore.
  • No code changes. Brief is the artifact; code stage runs later (P-01 Code column still 🔴 "routable shell exists" — moves to 🟠 when Blade renders the 6 sections with strawman copy).
  • Next steps after user reviews the brief: mobile sketch (closes brief gap #8 → 🟢 Final); then either pick the next page brief (Mariage P-05 surfaces SP-06 + SP-11/SP-12) or move P-01 to the Content stage (write the NL strawman that closes gaps #1, #3, #7 enough to draft).
  • No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-27] design | Skeleton patterns library v0.1 — structural shell drafted (4 / 13)

Per user instruction "proceed with shared patterns first", drafted the structural shell of the shared patterns library (site-level prerequisite for any per-page brief work, per playbook). 4 of 13 patterns moved from 🔴 stub → 🟠 first draft. Specs follow the convention: Purpose · Used on · Anatomy (ASCII) · Composition contract · Variants · States · Tokens · Deviations · Open decisions · Implementation pointer.

  • New page design/41-patterns.md — sibling to 40-skeleton, holds the full pattern specs. Index stays in 40-skeleton (linked per row). A pattern enters 41 the moment it leaves 🔴 stub. Self-documenting convention block at the bottom of 41 for promoting any remaining 🔴 pattern.
  • SP-01 Primary nav (🟠) — sticky top · h-16 · wordmark left + 4 nav items + lang switcher right (NL · FR · EN, current = bold). No hamburger (Dn-20 anti-pattern): 4 items wrap visibly into a second row on mobile. Active state = font-medium, prefix-match. Border-bottom hairline; no shadow/blur (CLAUDE.md banned). Aligned with existing partials/nav.blade.php — no implementation change needed.
  • SP-02 Footer (🟠) — 2 zones: SP-09 funder/partner wall (full composition, all 4 tiers) + bottom row (copyright/address · Contact + Over Leon + lang placeholder + legal). Stacks vertically on mobile. No newsletter in footer v1 (blocked by Dn-03 GDPR + Dn-11 ESP, both Open). No sitemap link. Existing partials/footer.blade.php renders v0 with strawman single-tier wall — needs tiered upgrade once real partner data lands.
  • SP-04 Subpage top (🟠) — used on P-02 … P-18 (every non-home page). Default = plain heading: optional eyebrow (uppercase meta, locates page in IA) + h1 (clamp scale) + optional lede (max prose width). Variant B = SP-13 photo as next sibling (NOT nested) — keeps heading crisp + avoids the empty-void-hero failure mode (Dn-20). Variant C = index-only (h1 + 1-line intro). No breadcrumbs in v1 (IA is flat). Aligned with existing partials/page-header.blade.php.
  • SP-09 Funder/partner wall (🟠) — the distributed proof spine per Dn-16 / IA principle 6 (no standalone "for funders" page). 4 tiers, fixed top-down order: Met steun van · Co-producenten · Speelplekken · In samenwerking met — captions visible (not tooltips). Within-tier order = alphabetical (no implied ranking). Tile = uniform h-16, aspect-flexible, 1px border, --radius. Grid responsive (2 → 3 → 6 cols). Wireframe = text placeholders; real logos render greyscale at Surface. 3 variants: Full (footer) · Featured (P-01 home below-fold, larger tiles) · Inline (P-05/P-06 per-project, prose line not grid).
  • Deliberately deferred:
    • SP-03 Hero — home stays 🔴 stub — needs the 5-tension home synthesis session, not a derivative draft.
    • SP-05 / SP-06 / SP-07 / SP-08 / SP-10 / SP-11 / SP-12 / SP-13 (project card · editie card · date-row · agenda strip · inschrijving form · contact pattern · quote block · photo block) stay 🔴 — drafted on first page-brief use to keep specs grounded in concrete usage, not speculative coverage.
  • design/40-skeleton.md §Shared patterns library — table updated: 4 rows to 🟠 first draft + spec links; preamble updated ("4 / 13 patterns at 🟠 first draft").
  • design/01-concerns.mdDn-22 Open → Partly (structural shell drafted; remainder = SP-03 + content/component patterns on demand). Phase-conclusion-readiness recount: 6 Closed · 5 Partly · 13 Open · 24 total.
  • index.md41-patterns.md row added above the 40-skeleton row.
  • No code changes. All four patterns are aligned with existing Blade partials — upgrades are deferred until real content (partner data) or new pages require them.
  • No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-27] design | Skeleton phase opened — plane plan + page registry (NL v1)

Opened the Skeleton phase (Garrett Plane 4) on the user's instruction, ahead of the pipeline step that will generate per-page briefs, wireframes, NL content, and Blade code. Read the full UX Planning playbook (Notion, 3 paginated block fetches, 277 blocks total — first complete re-read since Strategy/Scope opened) and distilled the Skeleton plane's rules into the new plane file. v1 scope = NL only (per user steer; aligns with the existing Build v0.1 NL-only routing). FR/EN routing model formally deferred to a Skeleton sub-decision (Dn-24 NEW).

  • New page design/40-skeleton.md — plane plan + page registry (the single source of pipeline status). Sections: Kern (5 decisions) · Pipeline lifecycle (5 statuses) · Confidence scoring (1–5 + tagged gap pointers) · Section budgets (anti-bloat ceiling) · State inventory checklist · Shared patterns library (SP-01 … SP-13, all 🔴 stub — site-level prerequisite per playbook: "page-level skeleton has a hard prerequisite — the site-level shared patterns library must exist first") · Page registry (18 NL v1 pages P-01 … P-18 — slug + type + 5-stage status columns + Conf 1–5 + Top gaps) · Validation gate · Open going into Surface · Cross-links.
  • Pipeline lifecycle (per page, per stage): 🔴 stub → 🟠 first draft → 🟡 reviewed → 🟢 final → ✅ approved. Five stages tracked independently: Brief (sections, states, CTAs) · Wireframe (ASCII mockup) · Content (NL copy) · Code (Blade) · Approved (client sign-off). Code stubs already exist (Build v0.1) — start as 🔴 "routable empty shell".
  • Content-confidence scoring (per page, 1–5): scored against "could I write high-quality NL copy for this page today?". 1 = vague brief, fundamental decisions pending · 2 = brief drafted, key facts missing · 3 = could write strawman, needs team review · 4 = could write near-final, minor verification · 5 = client-confirmed material, could write final now. Top gaps = ≤3 short pointers per page, each tagged [content] (text from team) · [strategy] (Dn-/S- concern open) · [asset] (photo/ logo/data) · [client] (decision owed) · [research] (Frederik to investigate).
  • Baseline state (honest): every page row 🔴 across every stage; Code at 🔴 "routable empty shell". Avg content-confidence = 2.5/5, median 3. Seven pages at score ≤ 2 (P-01 home, P-04 Leon op school, P-05/P-06 Mariage + editie, P-09 opzetten, P-10 uitnodigen, P-15 Impact). Hard blocker: P-11 (Vrijwilligers/stage doen — Dn-19 Strategy work pending). Single biggest cross-page gap: SharePoint content extraction (photos, partner lists, quotes, team material).
  • Shared patterns library scaffolded (13 entries, all 🔴 stub): SP-01 Primary nav · SP-02 Footer · SP-03 Hero home · SP-04 Subpage top · SP-05 Project card · SP-06 Editie card · SP-07 Date-row · SP-08 Agenda preview strip · SP-09 Funder/partner wall · SP-10 Inschrijving form · SP-11 Contact pattern · SP-12 Quote/testimony block · SP-13 Photo block. Discipline: no page brief may reference an undeclared pattern (per playbook).
  • Section budgets baked in (anti-bloat): Utility/index/contact 3–5 + CTA · Marketing/ info/story 5–7 + CTA · Conversion/intake/home 6–8 + CTA. Declared at the top of every brief. Forces a cut decision while authoring.
  • Validation gate (per playbook): sections answer a user question (not a content type) · one visually-dominant primary CTA + 1–2 secondary · state inventory explicit · section budget respected · no either/or notes survive · patterns referenced by SP-id · canonical home named for each load-bearing fact · mobile-first.
  • design/00-design-plan.md — Skeleton row "not started" → DRAFT v0.1 (2026-05-27).
  • design/01-concerns.md3 new concerns: Dn-22 patterns library still stub (resolves as patterns land) · Dn-23 baseline content-confidence 2.5/5 + page-by-page resolution path · Dn-24 NL/FR/EN routing model deferred (decide after NL v1 reaches Final). Phase-conclusion-readiness recount: 6 Closed · 4 Partly · 14 Open · 24 total.
  • index.md — Skeleton row added between Structure and Image Map.
  • No per-page briefs generated yet — registry is the v0.1 deliverable; per-page work (one file per page in a future 42-briefs/ subfolder) starts once the user signs off on the schema and we agree on order of attack (likely: home + Mariage project page first per 00-design-plan §Plane order, then shared patterns, then the rest by content-confidence tier).
  • No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-27] scaffold | Identity folder opened — Tone of Voice v1

Opened the identity folder (previously empty) and filed its first page: docs/wiki/identity/10-tone-of-voice.md — the working reference for every webcopy string on the new site. Brainstormed shape via three structural questions; user picked single voice + register-dial (one Leon-stem, not twin profiles), Dutch prose, website-only scope.

  • Source: Frederik's Notion playbook Playbook: Tone of voice guide (2026-03-28) for the template (TOV statement → voice attributes → style → terminology → channel adaptations); Frederik's own Impact Studio TOV guide for the quality bar (rhythm + openers + checklist sections added on top of the bare playbook).
  • Built on: strategy/40-value-proposition (the one substance, two registers idea + invitation-forward posture D-iv) · glossary (gedeelde vocabulaire; the TOV page points at the glossary, does not duplicate it, and adds voice-specific toon-aanvullingen
  • Page shape: TOV-statement (24 woorden, NL) → Eén stem, twee registers (the register-dial table P1/P4 vs P2/P3 vs P5) → 6 kenmerken with NL ✓/✗ pairs → stijl & ritme → openers/CTA's/afsluiters/empty-states/404 → woordenlijst (toon-aanvullingen + verboden: duurzaam · laagdrempelig · inclusief · diversiteit · creatie in publieke copy · werking · traject buiten funder-pagina · uniek · bekroond · vernieuwend · passie · empoweren
    • clichés) → per-pagina dial-richting (home, project/editie, agenda, Over Leon, Samenwerken, Pers, 404/forms) → 7-puntenchecklist voor nieuwe webcopy → consolidated wat we vermijden.
  • CLAUDE.md: added a "Tone of voice" pointer in the Build phase — Laravel top-of-section paragraph (next to Sitemap and Glossary) so anyone writing copy lands on it; also added a one-line reference in the Content rules block under Wireframing mode. The TOV is now the v1 reference for every webcopy string on the new site.
  • Scope kept narrow: website only (flyers / press / dossiers / internal comms explicitly out of scope for v1 per user). The TOV will absorb those channels later if asked.
  • Status: ⚠️ V1, working but not signed off. Sam & Kristin validate on the content-complete NL draft (S-02); changes after that land in this page.
  • No new concern raised — the TOV operationalises existing Strategy decisions (D-iv invitation-forward; one substance, two registers). S-02 already tracks the client-validation gate.
  • Wiring: index.md +1 row (Identity / Cross-cutting) right after the Glossary row. No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-27] build | Laravel scaffold + page stubs

Scaffolded the Laravel project at repo root and stubbed every page in the Structure sitemap. Wiki tooling (package.json, node_modules) moved into scripts/ so Laravel could own root-level npm.

  • Stack: Laravel 13 · Blade · Tailwind 4 (Vite) · SQLite (dev). No Flux/Flux Pro per request — Filament/Livewire will arrive when admin is needed.
  • Routes (18): all named, NL slugs, source = design/30-structure.md. Four top-level groups: dansateliers-performances · samenwerken · agenda · over-leon. Mariage editie pages via {editie} param (strawman list of 6).
  • Layout: layouts/app.blade.php + partials/{nav,footer,page-header}.blade.php. Skip-link, <main>, NL/FR/EN placeholder, tiered funder/partner wall stub.
  • Design tokens: DESIGN.md + :root in resources/css/app.css (grayscale, one radius, approved spacing, system-ui only, .section / .btn-* / containers).
  • Banned-fonts cleanup: removed bunny('Instrument Sans') from vite.config.js (Instrument Sans is banned per Frontend-wireframe playbook). Built CSS now has zero Google/Bunny font imports; only the standard system-ui fallback stack.
  • CLAUDE.md: added "Build phase — Laravel" section (wireframing rules, tokens & conventions, banned patterns, directory shape).
  • Smoke test: all 18 routes return 200. Vite build clean (46 kB CSS).
  • Carry-forward to Skeleton: FR/EN URL & language-switcher routing model (deferred per Structure); home interaction-design (5-tension piece); editie page shape; mariage editie list (currently hardcoded strawman → CMS-backed).

Client pushback on the 18-reference static-design library ("not a fan of these sites, let's see if we can find sites that feel like they're dancing"). Reframed: "dancing" isn't one thing — it splits into 4–5 motion registers. Pre-aligned which fit Leon:

  • 🌬 Breathing · slow · cinematic — IN (phrasing, anticipation, follow-through; contemporary dance at slow tempo)
  • 👆 Cursor-as-choreographer · scroll-as-phrasing — IN (user's motion through the page IS the dance; contact-improv energy; fits participatory ethos)
  • Playful · bouncy · springy — OUT (Brand-of-Cuberto risk; lands commercial rather than dancing-bodies)
  • Physics · WebGL · sculptural — OUT (art-tech-spectacle register, too far from Leon's warmth)

Curated 17 URLs under the two in-scope registers — 8 breathing, 9 cursor — appended as new section § Kinetic references — sites that move in docs/wiki/design/50-visual-inspiration.md. No screenshots, no full write-ups per client steer: "just links are fine, I'll do the discovery myself." Each entry is URL + one-line what to watch for pointer. Plus a 3-bullet kinetic-specific anti-pattern guard (scroll-jacking, semantic-less cursor effects, motion-everywhere syndrome).

⚠️ Scope implication flagged in the section header and a new concern Dn-21: motion as a load-bearing surface element means it must be systematic (component-level, design-system-resident — Kristin can't author timing curves); the image map may need to expand to moving-image assets; performance/battery cost rises. A future Scope amendment is implied if a kinetic direction is chosen — flagged for the next Scope reconciliation.

Phase-conclusion-readiness updated: 6 Closed · 4 Partly · 11 Open · 21 total. Dn-21 awaits client live-browsing feedback on the 17 URLs → register pick → Scope amendment. Files touched: 50-visual-inspiration.md (+ kinetic section), 01-concerns.md (+ Dn-21 + counts), this log.

[2026-05-26] design | Surface-plane research-collecting — 18-reference visual inspiration library

Pre-staged Surface (Garrett plane 5) ahead of Skeleton landing — user asked for visual design inspiration without formally opening Surface. Two sourcing methods chosen deliberately to avoid the local echo: (i) international dance peers, ethos-aligned with Leon (participatory · intergenerational · community-rooted · choreographer-led collective · nomadic) — explicit steer away from BE/NL same-subsector references (Rosas, P.A.R.T.S., Damaged Goods, Eastman, Peeping Tom, les ballets C de la B, Voetvolk, Needcompany, Kaaitheater, Beursschouwburg, KVS, deSingel, BOZAR, Viernulvier, KFDA, HF — all dropped); (ii) design-gallery "dance" sweep. Plus a small set of non-dance wildcards (multilingual / motion / editorial / solo-artist) and 3 cultural institutions (Serpentine · KW Berlin · Walker) — all international, none BE/NL.

Captured 18 references to docs/raw/assets/inspiration/ via Playwright (1440×900 desktop window, single PNG each, 4s settle, best-effort cookie dismiss): 8 dance peers (Dance Exchange · Boris Charmatz · Akram Khan · Sasha Waltz · Käfig/Merzouki · Hofesh Shechter · BTJ-AZ at NYLA · Studios Kabako); 3 institutions (Serpentine · KW · Walker); 4 wildcards (Pro Helvetia · Bureau Borsche · Are.na · Olafur Eliasson); 3 gallery picks (William Forsythe · Festival d'Avignon · ImPulsTanz). Capture pipeline: scripts/capture-inspiration.py — reusable, takes <slug> <url> pairs, handles common cookie-banner patterns across EN/FR/NL/DE.

Format per entry (locked early after proof-of-format on Liz Lerman): thumbnail · URL

  • capture date + tags · Why it's here (anchored to Strategy) · Observations (verbatim, no interpretation) · Transferable to Leon (⚠️ marks interpretations per CLAUDE.md rule, cross-linked to Strategy/Scope/Structure pages) · What NOT to copy.

8 north-stars elevated with rationale + theme synthesis: Boris Charmatz (photo discipline — THE primary reference for Leon's image-selection) · Liz Lerman / Dance Exchange (mission-on-photo register-pair in one frame) · Pro Helvetia (multilingual

  • institutional-playful palette, CH 4-lang benchmark with multilingualism IN the wordmark) · KW Berlin (Plain Language as first-class option) · Walker (single hero image + name + date range template) · Festival d'Avignon (countdown + edition-number + bold single color) · ImPulsTanz (hand-drawn mark + intergenerational subject + magazine-cover composition) · Are.na (text-first discipline + maintainability ethic).

Cross-cutting themes (the take-home set): (1) photo selection IS positioning — Charmatz / ImPulsTanz / Lerman / Walker all spend their hero on a single photograph whose subject does the work; (2) multilingual surface as identity, not chrome — Pro Helvetia bakes Italian into wordmark, KW puts Plain-Language in language switcher; (3) calm wordmark vs. hot content — let the type stay quiet; (4) time-anchored content keeps site alive — visible timestamps signal living site not catalogue; (5) maintainability is a Surface concern, not just a Scope concern. Anti-patterns list as guardrail for Skeleton: autoplay-video hero (Hofesh demonstrated the fragility), empty void hero, hidden hamburger as primary nav, transactional Tickets register, maximalist single-color hero at daily-use scale.

New concern Dn-20 added (Surface section E — first concern in that bucket): visual direction not yet chosen; plane opens after Skeleton lands. Cross-check pending: screen image map against the Boris Charmatz / ImPulsTanz photo-discipline benchmark. Plain-NL question (KW's Einfache Sprache) to take to client

  • Kristin. Phase-conclusion-readiness updated: 6 Closed · 4 Partly · 10 Open · 20 total. 00-design-plan.md Surface row updated: not-started → research-collecting. index.md entry added.

Files touched: docs/wiki/design/50-visual-inspiration.md (new), docs/wiki/design/ 00-design-plan.md (Surface row), docs/wiki/design/01-concerns.md (+ Dn-20 + phase-readiness counts), docs/wiki/index.md (+ entry), scripts/capture-inspiration.py (new — reusable capture script), docs/raw/assets/inspiration/*.png (18 captures).

[2026-05-18] scaffold | LLM wiki initialised + Discovery phase set up

Created the standalone LLM-wiki repo for the Leon engagement (frontend + possible backend services), modelled on the kidicalmass docs/ instantiation. Decisions: standalone git repo (no Leon codebase yet); Discovery-only phase structure for now (later phases YAGNI); live CLAUDE.md schema at repo root (fixes the gap kidicalmass had where wiki rules were spec-only). Discovery is run as a structured desk-research dossier — the user's "Desk research voor website redesign" playbook (8 phases, 5 principles) was read from Notion and adapted into the schema. Created: CLAUDE.md, docs/raw/ (+ research/, assets/), docs/wiki/index.md, this log, docs/wiki/discovery/discovery-plan.md, and the design spec under docs/superpowers/specs/.

[2026-05-18] discovery | Desk research run — site audit + 5 buckets + synthesis

Ran the Discovery desk-research playbook autonomously, pre-client. Crawled all 12 leon.dance pages (Phase 1 → site-audit.md): platform is Squarespace (not Wix), key problems = image-only agenda, no multilingual system, off-platform MS-Forms sign-up, no structured content, thin IA, no owned socials. Per user redirect mid-run, de-scoped SEO (Phase 2) and Best-practices (Phase 6) and reorganised output around the 5 "what we need to learn" buckets: organisation.md (Leon vzw not found in Kunstendecreet 2023–27 werkingssubsidies ⚠️ → likely project/VGC funded; Tornar/INVITED/Birds were Ultima Vez productions; governance unknown), offerings-audiences.md (6 offers; Mariage = participatory production; Apartheid Free Zone = Palestine/Lebanon solidarity + BDS-aligned partnership review; 6 inferred audience segments), ecosystem.md (peers: Ultima Vez/les ballets C de la B/kabinet k/fABULEUS; peers use structured agenda+archive, real localisation, custom CMS), technical-context.md (needed backend services, maintenance-capacity risk). Synthesised desk-research.md (overview: SWOT, priorities, recommended structure, consolidated client questions). Updated index. All interpretations ⚠️-marked; internal figures explicitly named as unknowable from desk research.

[2026-05-18] discovery | Initial Leon desk research (web, pre-client)

Ran an initial public web search on Leon before the structured discovery run. Key signal: leon.dance = Leon vzw, the work structure around choreographer Seppe Baeyens — nomadic participatory dance in Brussels (Atelier Leon weekly workshops; large intergenerational works Birds / INVITED), funded by the Flemish government + VGC, operating EN/FR/NL. Raw findings with citations saved to docs/raw/research/leon-initial-desk-research-2026-05-18.md; synthesised into discovery/discovery-plan.md ("What we know so far"). Open: legal/funding detail and jaarverslag, team/decision-makers, what "Apartheid Free Zone" and "Mariage" are, current site stack, needed backend services.

[2026-05-18] ingest | Quick first-impression review of leon.dance

Ingested the user's "Quick first impression review" Notion page (a cold, single-reviewer walkthrough of leon.dance, written pre-client). Reclassified on read: it is a first-party qualitative research source, not a method playbook. Raw saved verbatim to docs/raw/research/quick-first-impression-review-2026-05-18.md (immutable). Synthesised into discovery/first-impression-review.md with observation/⚠️-interpretation split. Because the structured desk-research run had since landed, the synthesis was written as a resolution map: nearly every cold-read hypothesis is independently confirmed/answered by site-audit.md / offerings-audiences.md / technical-context.md (Squarespace, image-only agenda, weak audience-framing IA, no socials, trilingual = mixed-language weakness), with the audience-framing gap being a notable independent corroboration. Net-new client questions surfaced (who is the agenda for; is it hand-maintained / automate the backstage system; trilingual = values vs. maintenance) folded into discovery-plan.md open questions (8–10). Updated index.md. Still open: agenda audience.

[2026-05-18] ingest | Client contacts — Sam De Wit (coordinator) + Kristin Rogghe (comms)

User provided the client-side contacts: Sam De Wit (coordinator) is the primary contact; he invited colleague Kristin Rogghe (communications) to the client meeting, which is being arranged (date TBC). Filed into discovery-plan.md → "Who to talk to" (was a TBD placeholder). Cross-link noted: a "Kristin Rogghe" already appears among the ~14 associated artists on /who-we-are-1 in site-audit.md⚠️ flagged to confirm whether the comms lead is the same person / part of the artistic core. Resolves part of discovery-plan open Q2 (team & decision-makers).

[2026-05-18] discovery | Organisation operating-model deep-dive

Deeper desk research on how Leon is governed/staffed/funded/produced (user asked for more elaborate methods). KBO Public Search on enterprise 0769.579.192 gave hard facts: Leon vzw incorporated 10 Jun 2021; 6-person board (5 since 2023-12-04 + Sam De Wit since 2025-03-25); Seppe Baeyens not a statutory director; employer with social security only since 1 Jan 2025 (freelance/project-based before). Demos field piece confirmed the Ultima Vez → Leon lineage (Atelier Quartier 2017 = Atelier Leon template; Sam De Wit ex-Ultima Vez community worker) and a deliberative/"searching", resource-tense working culture (⚠️ Ultima-Vez-era). Venues credit Birds to "Leon" (La Monnaie/De Munt, CAMPO) — repertoire migrating from Ultima Vez. Kristin Rogghe = dramaturg/choreographer and comms → the artistic-core-as-comms cross-link flag is resolved. Subsidy instrument/amount, statute purpose text, and annual accounts are [GAP] — subsidy registers (Vlaams subsidieregister, CJM projectsubsidies, VGC) and KBO aggregators (opencorporates, web.archive.org) were app/PDF-gated or blocked; routed to manual lookup + client. Wrote discovery/organisation-operating-model.md (confidence-marked: [REG]/[SRC]/⚠️/[GAP]), tightened organisation.md (resolved prior team/governance ⚠️s), updated index.md.

[2026-05-18] ingest | Vlaams Subsidieregister export (LEON, KBO 0769579192)

User browser-downloaded the Vlaams Subsidieregister CSV — closes the funding [GAP]. Filed verbatim to docs/raw/research/subsidieregister-vlaanderen-leon-2026-05-18.md (immutable). Confirmed: Leon's Flemish funding is project-based via Decreet Bovenlokale Cultuurwerking 2018 (€84,250 awarded 2023; paid 75,825 + 8,425) and Polsslag Brussel (€88,000 awarded 2023; €78,000 awarded 2025) — no Kunstendecreet line (corrects the earlier ⚠️ "Kunstendecreet project" guess; Leon is funded as supra-local cultural / Brussels-cohesion work, not as a structurally-funded kunsten company). Scale ≈ €172k Flemish project funding awarded 2023. Updated organisation-operating-model.md (Funding [GAP]→[REG] + ⚠️ positioning interpretation + snapshot row), tightened organisation.md, updated index.md. Still open: site-claimed VGC support (not in Flemish register — VGC separate); city/EU; whether a Kunstendecreet/structural application is planned; annual accounts (NBB/griffie-gated).

[2026-05-18] query | Why does Leon need a website / whom does it serve

User asked the foundational question: why would Leon have a website, what purpose does it serve? Answered from the wiki and, on the user's go-ahead, filed the synthesis back as discovery/website-purpose.md. Core framing (⚠️ interpretation on cited facts): the site is not for Leon's core mission audience (neighbourhood atelier participants + special-ed pupils are reached offline); it serves the sustaining ecosystem it can't reach in person — programmers/venues (bookability dossier, currently absent), funders/policy (legitimacy, given young+project-only+no-Kunstendecreet vs Ultima Vez ≈ €1.04M), press & public (multilingual what/when/where), co-creators (frictionless owned sign-up vs MS Forms). Jobs: credibility, bookability, discoverability hub (owned channel — discovery is partner-driven), proof/archive, conversion. Surfaces open Q #1 (which audience is the site primarily for) as a brief-defining client question. Cross-linked from offerings-audiences.md (Implications) and desk-research.md (Framing); added to index.md. No new facts — pure synthesis of existing pages.

[2026-05-18] discovery | Triangulating the "website-purpose" claim (incl. peer-site research)

User flagged the website-purpose claim as counterintuitive and asked to solidify it. Stress- tested it four independent ways and wrote them into website-purpose.md as "How we know" + "What would change our mind": (1) falsification — if the site were the participant funnel we'd see X; site shows the opposite (image agenda, no atelier reg by design); (2) revealed preference — Leon maintains legitimacy/proof artefacts, lets participant tooling rot; (3) per-segment funnel map — site is decisive only for the non-core audiences; (4) peer-site triangulation — new live web research on Ultima Vez / les ballets C de la B / kabinet k / fABULEUS. Key new finding: even Ultima Vez's Atelier Quartier (Leon's direct analogue) is "free, weekly, no registration, just come" — a showcase page, not a sign-up funnel; all four peers build production+calendar+archive showcases, participation never enrolled via site. Honest refinement: peers don't run press-kit/funder portals either → a Leon programmer/funder section is a differentiator, not catch-up. Core claim strengthened, not overturned; named the disconfirming client questions. Cross-linked into ecosystem.md (participation-section bullet refined) and index.md summary updated. Sources: the four peer sites (live, 2026-05-18).

[2026-05-18] ingest | Browser desk-research dossier (VGC, CJM, productions, team)

User supplied a structured browser-session dossier; filed verbatim to docs/raw/research/leon-vzw-desk-research-browser-2026-05-18.md (immutable). Closes/strengthens several items. Funding now confirmed: + VGC meerjarige werkingssubsidie 2023–2025 = €14,840/yr (VGC PDF retrieved; site's VGC claim verified) on top of the subsidieregister Bovenlokale Cultuurwerking + Polsslag Brussel; verified-negative on Kunstendecreet (full werkingssubsidies 2023–27 table + projectsubsidies 2026 r1 scanned; Leon absent; 2022–25 project PDFs not opened line-by-line — strong not absolute). Scale benchmark added to ecosystem.md (Ultima Vez €1,040,387/yr structural vs Leon project-only ≈ low six figures). Production split clarified: Birds production stays Ultima Vez, Leon tour-direction from 2023; Mariage = Leon's own production (premiere 21.09.2024 MolenFest); Kosmos 2027 = Leon co-produces with KANAL & KVS; Leon joined Circuit network 2022. Team correction: Emma Ducheyne = comms (Mariage 2025), Isabelle Azaïs = production+scenography, Kristin Rogghe = dramaturg (INVITED/Birds) + KVS city dramaturg — ⚠️ flagged who actually owns website/comms (Kristin strategic vs Emma operational), correcting the earlier "Kristin = comms" resolution. Namesake dancer Leon Gyselynck performed in INVITED (2018); ⚠️ spelling variant Gyselinck/Gyselynck. Updated organisation-operating-model.md (funding [GAP]→[REG], people, lineage/pipeline, snapshot, open Qs), organisation.md, ecosystem.md, offerings-audiences.md, index.md. Board/governance already covered via KBO (this dossier still lists it as a gap).

[2026-05-18] capture | current-site mirror of leon.dance

Ran the website content-capture playbook. Built scripts/capture-site.mjs (+ unit-tested scripts/capture/lib.mjs) and wrote a verbatim corpus to docs/raw/current-site/ (pages, sitemap, images index, crawl-log, hand-curated notes). Spec: docs/superpowers/specs/2026-05-18-current-site-content-capture-design.md. Plan: docs/superpowers/plans/2026-05-18-current-site-content-capture.md.

[2026-05-19] query | Current site running cost

Client question: what does the current Squarespace site cost Leon? Plan tier/billing are not publicly observable (already an open client Q in site-audit.md). Filed a costed estimate as new page discovery/current-site-cost.md: verified Squarespace + unused Cart (no ecommerce tier needed) + .dance premium TLD; 2026 Squarespace pricing pulled (web, official + Tooltester + Website Builder Expert). ⚠️ Estimate: subscription ~€190–€280/yr (Core ~€276 likeliest given custom CSS/code), .dance domain ~€40–55/yr, all-in ≈ €230–€340/yr. Key takeaway recorded: migration case is capability-driven, not hosting cost-saving. Cross-linked from + bumped technical-context.md (migration considerations, sources, updated 2026-05-19); added index row.

[2026-05-19] lint | discovery folder restructure

Reorganised docs/wiki/discovery/ for navigability: 11 flat files → 9 tier-coded numerically-prefixed files. Scheme: 0x method · 1x synthesis/front-door · 2x evidence · 9x raw input.

  • Renamed: discovery-plan→00-discovery-plan, desk-research→10-desk-research, website-purpose→11-website-purpose, site-audit→20-site-audit, offerings-audiences→22-offerings-audiences, ecosystem→23-ecosystem, first-impression-review→90-first-impression-review.
  • Merged organisation + organisation-operating-model21-organisation.md (layered: summary spine + confidence-marked deep-dive; markers preserved).
  • Merged technical-context + current-site-cost24-technical-context.md (cost folded in as "Running cost (estimated)" + 3 ask-client items into open questions).
  • Relinked all cross-references, rebuilt index.md, updated CLAUDE.md path examples and added the tier-numbering convention to "Page conventions".
  • Earlier log entries intentionally still reference pre-restructure filenames (append-only).

[2026-05-19] ingest | Agenda image OCR → 25-agenda.md

Transcribed the image-only /agenda (7 Squarespace screenshots, 6 unique + 1 dup) into a new evidence page discovery/25-agenda.md: 65 dated entries Mar–May 2026 as a chronological table + venues key + source provenance. Method: downloaded the WebP files (served as .png), converted, and read each as left/right half-crops at full resolution (downscaled full image is unreadable).

  • Findings (⚠️): only ~2 public shows (Show Mariage 10/04 & 26/04) among ~61 internal workshop/in-school entries — reinforces 11-website-purpose.md; on-page image order is non-chronological; last image duplicated in markup; addresses are NL/FR hybrids with a De Loods street-name spelling inconsistency.
  • Corrected 20-site-audit.md row 7 (was "7 events" → 7 image files / 65 dated entries) and cross-linked it to the new page; added index.md row.
  • Open questions (ticketed vs free shows; who keeps the agenda current) flagged for 10-desk-research.md.

[2026-05-19] query | What the agenda reveals → 26-agenda-analysis.md

Answered "what can we infer about Leon's offer/work from the agenda" and filed it as a new synthesis page discovery/26-agenda-analysis.md (per query workflow — valuable analysis compounded back into the wiki).

  • Activity mix from 65 entries: Mariage family ≈57% (37), recurring Atelier/à-l'école ≈43% (28), only 2/65 public (Show Mariage). Confirms 4 of 6 offers with dated evidence; White Page / AFZ / rond de tafel absent in window.
  • Independently corroborates the weekly cadence (Wed Pianofabriek / Sat Maison des Cultures) and the partnership/co-production model; surfaces named partners (MUS-E, Ketmet, BRONKS, RITCS) and a delivery-team division of labour mapping every agenda lead to the associated-artist pool.
  • Cross-linked per user request: added agenda-corroboration notes into 22-offerings-audiences.md (Implications) and 21-organisation.md (Team and roles), plus links to 11-website-purpose.md, 24-technical-context.md, 20-site-audit.md. Added index.md row; 6 open questions routed to 10-desk-research.md.

[2026-05-19] discovery | Cross-sector comparator — Debateville → 27-comparator-debateville.md

User pointed at debateville.org (Brussels youth-debate vzw) as a reference: a well-made, impact/traction-led site for an org with a similar funding stream. Ran a competitive/comparison desk-research pass (live site + Open Collective + LinkedIn + Donors&partners page) and filed a new evidence-tier page discovery/27-comparator-debateville.md.

  • Key framing: Debateville is a funding-ecology + site-strategy comparator, not an artistic peer — near-identical money structure to Leon (project/foundation/public portfolio: King Baudouin Foundation, VGC, Flanders, Brussels City; no single structural line), beneficiary reached offline. So it is independent cross-sector corroboration of [11-website-purpose] — and, unlike the four dance peers, it does run the funder/press/ impact portal → upgrades that page's "honest refinement" from speculative differentiator to a proven move for a project-funded org.
  • 7 transferable site patterns documented (homepage metric band, 3-tier evidence ladder, audience-first "Voor wie…" IA, annual impact-report hub, tiered/captioned funder wall, press+awards nav, owned mentor/co-creator funnels) + 6 scope ideas for Leon each mapped to an existing finding. ⚠️ Steer (confirmed with user): adopt the structure, lead the proof qualitatively (artistic/relational), not a metrics dashboard — Leon's value doesn't reduce to survey %s the way a skills programme's does.
  • Cross-linked: 23-ecosystem.md (new cross-sector-comparator section + open Q1 sharpened), 11-website-purpose.md (new triangulation angle #5; "four"→"five"; sources/updated bumped), 10-desk-research.md (detail-pages list + audience-first-IA sharpening of the recommended structure; sources/updated bumped). Added index.md row. 4 open client questions surfaced (metrics-vs-qualitative; individual-donor audience?; report editorial capacity; funder overlap to confirm). Sources cited inline (no raw file — docs/raw/ is read-only); site live 2026-05-19.

[2026-05-19] discovery | First client conversation — Sam & Kristin → 12-client-kickoff-2026-05-19.md

The pivotal discovery milestone: the first client meeting (Sam De Wit, coordinator; Kristin Rogghe, comms). User supplied the transcript + 2 workshop-board photos in conversation (not filed to docs/raw/ — that is the human's curation step; flagged to the user). Frederik ran the covert actor-card + page-card workshop (per the agreed don't-present-findings style). Synthesised into a new 1x-tier front-door page discovery/12-client-kickoff-2026-05-19.md (client truth supersedes ⚠️ desk-research inference where they diverge).

  • Headline new fact: Leon is bidding for Kunstendecreet structural funding 2028–2032 — dossier deadline 1 Dec 2026, jury ≈ Jan–Jul 2027; the website is its visitekaartje for that jury. Dates and hardens the previously-inferred legitimacy job; de-facto plan anchor = beleidsplan Dec 2026 / decisions ~Sept–Oct 2026.
  • [11-website-purpose] confirmed + materially refined: hardest groups offline ("Nope") and funders/programmers/press confirmed; but the site must also convert potential new participants (post-offline-trigger moment-of-truth) and the client refuses a single primary audience (arts/funder + mission audience "evenwaardig"; rebalance away from subsidiedossiertaal). Added an internal (freelance) artists & staff audience.
  • Closed across the wiki: no social media (principled — ethical + capacity); agenda = Excel→screenshot→paste by Kristin, audience = impact+participant+internal mix; trilingual = resource shortcut (new site → proper localisation); who built/maintains (Jeroen-built / Kristin-maintained, editorial-capacity risk confirmed real); Squarespace not a constraint (Frederik builds custom, free, ≈ current recurring cost); Mariage = first flagship "creatie" in a repeatable type; qualitative-led proof confirmed.
  • Newly opened: participant DB/CRM + possible team backstage now firm wants; Notion-as-source-of-truth coupled to the site hypothesis to research; antenne concentration-vs-spread (undecided); GDPR/minors for the DB; passive social presence; which impact figures are safe given per-funder dossier framing; accessibility/brand still open.
  • Open-question review (deliverable 2): swept every page's open-questions + ⚠️ assumptions and updated with client status — 00-discovery-plan (Qs 1–10 mostly closed), 10-desk-research (banner + consolidated-Qs map), 11-website-purpose (validation banner
    • "what would change our mind" resolved), 20-site-audit (social closed, unknowns), 21-organisation (Kunstendecreet bid confirmed; Kristin-comms resolved; open Qs 1/7/8), 22-offerings-audiences (Qs 1–5; segments validated), 23-ecosystem (Qs 1–2), 24-technical-context (who-maintains resolved; backend scope firmed + Notion; Qs 1–10), 25-agenda/26-agenda-analysis (provenance + cadence Qs), 27-comparator-debateville (qualitative-led + capacity confirmed). Each touched page got the client-meeting-2026-05-19 source + updated: 2026-05-19. Added index.md row.

[2026-05-19] ingest | Client-meeting transcript filed to docs/raw/

Per the user's explicit instruction (overriding the general docs/raw/ read-only schema rule — the user is the curator and delegated the ingest step), filed the verbatim auto-transcription of the 2026-05-19 client meeting to docs/raw/research/client-meeting-2026-05-19.md (immutable, with the standard RAW-SOURCE header; ASR errors/typos preserved). This makes the client-meeting-2026-05-19 source shorthand cited across all 13 discovery pages resolve to a real raw file. The two workshop-board photos were not filed (binary; described in 12-client-kickoff's §10). Updated 12-client-kickoff-2026-05-19.md's source note (was "not filed" → now points at the raw file; quotes flagged as lightly normalised vs. the authoritative raw ASR).

[2026-05-19] scaffold | Per-phase Concerns register (new schema rule) + Discovery register

User asked for a central, per-phase Concerns register with explicit open/closed status, replacing scattered per-doc open-question lists as the place to read status. Two design choices confirmed via AskUserQuestion: (a) a dedicated 0x-tier file per phase; (b) register rolls up, per-doc lists keep local detail, cross-referenced by concern ID.

  • CLAUDE.md: added a new "## Concerns register (per phase)" section (one register per phase = docs/wiki/<phase>/0x-concerns.md; deduplicated concerns; stable phase-letter IDs D-/S-/Dn-/B-, never renumbered; status Open/Partly/Closed with mandatory resolution+pointer; conclusion gate: no silent Open). Wired into directory layout, Phased-approach, Filename-numbering (0x now "method/agenda + Concerns register"), Running-discovery, Ingest workflow (new step 6), Lint workflow (reconcile register vs. per-doc detail).
  • New page discovery/01-concerns.md: consolidated every open question/⚠️/gap across all discovery pages into 46 deduplicated concerns (D-01–D-46), grouped A–F, each with status + detail page + resolution/pointer, plus a phase-conclusion-readiness band (19 Closed · 6 Partly · 21 Open). Verdict: Discovery can be concluded — remaining Open/Partly are client-input/Strategy items, none silently open; they become the seed of the Strategy register.
  • Cross-refs: added a "status is authoritative in the register (IDs …)" pointer to the per-doc "Open questions" sections on 00, 10, 11, 12, 20, 21, 22, 23, 24, 26, 27 (sections kept as local detail). Added index.md row.

[2026-05-19] scaffold | Design phase opened — UX Planning, Scope draft v0.1

Opened the Design phase on the user's instruction, run via the user's UX Planning playbook (Notion — Garrett's five planes, bottom-up, Socratic). Read the full playbook (3 paginated block fetches) + the strategic basis (11-website-purpose, 12-client-kickoff). Created docs/wiki/design/:

  • 00-design-plan.md — phase front-door. Engagement = site-level custom rebuild replacing Squarespace. Strategy plane is owned by a separate STRATEGY thread (out of this thread); Scope traces to the interim strategy basis (discovery 11 + 12) until it lands. Defines a plane-aligned filename scheme for the design phase (00 plan · 01 concerns · 10 strategy[ext] · 20 scope · 30 structure · 40 skeleton · 50 surface — distinct from the discovery tier scheme, which is discovery-scoped). Parks a provisional principles-tuning (content/functionality = hybrid; maintainability gate + Won't-Have elevated; no-social = hard constraint) to reconcile with the Strategy thread.
  • 01-concerns.md — the Design Concerns register (schema-required; IDs Dn-). Seeded 10 Open concerns from the Scope draft, grouped A (strategy dependency — → Strategy thread), B (scope decisions for the interview), C (build/technical to research). Boundary rule: strategic concerns are consumed, not re-litigated here.
  • 20-scope.mdScope (Plane 2) draft v0.1. Per-section confidence table (user request). Hybrid product-type framing (content-led public surface + functionality-led backstage); 14 functional requirements Kano-classified with phase + traceability; content
    • lifecycle table (ROT-audited); first-class Won't-Have list; 6 critical user flows; the playbook's 4 project-type checkpoints (form backend = custom server; agenda = the mixed-flow split into participant + impact surfaces; partner logo-band required); cut-pass applied (F10 reduced, F10–F12/F14 → Phase 2); Scope validation checklist (2 Partial on Strategy-traceability + content owners). Status: DRAFT — client interview pending.

Added 3 index.md rows (Phase = Design). Next: interview the user on the Open/[BLOCKER] items, then finalise Scope and move up to Structure.

[2026-05-19] lint | Concerns register reworked open-first (scannability)

User flagged 01-concerns.md as hard to scan — the core job ("what still needs resolving") was buried: 46 rows grouped by topic with Open/Closed interleaved and long resolution text on closed items dominating. Reworked the page open-first:

  • Centrepiece = the Unresolved list (27: 🔴 21 Open · 🟡 6 Partly), grouped by area with a terse "Needs (next step)" column (ask-client / design decision / Frederik-to-research).
  • Closed (19) demoted to an "audit trail" table at the bottom (kept for provenance/why).
  • Status markers 🔴/🟡/✅ for one-pass eye-filtering; tightened "At a glance" to a single verdict line (Discovery concludable; all unresolved = Strategy carry-forward = its seed).
  • IDs unchanged (D-01–D-46) → per-doc pointers and the index.md row still hold.
  • CLAUDE.md: added a durable "Layout = open-first" bullet to the Concerns-register rule so every future phase's register follows the same scannable shape.

[2026-05-19] strategy | Strategy phase — first version (brief + 5 artifacts + register)

Started the Strategy phase (Garrett Strategy plane) in docs/wiki/strategy/, mirroring the discovery structure. Produced step-by-step with Frederik (analyse research → first versions w/ confidence + rationale → Socratic interview → write-up).

  • Pages: 00-strategy-brief (front door + locked decisions + confidence scheme), 10-organisation-goals, 20-personas, 30-jobs-to-be-done, 40-value-proposition, 50-user-journey, 01-concerns (Strategy register, IDs S-).
  • 5 locked strategic decisions (taken in-session): D-i G1/G2 resolved on the time axis (Kunstendecreet keystone = dated bar; newcomer = everyday front door; evenwaardig in tone+image kept as governing principle); D-ii one participant persona across journey stages (not 3); D-iii one qualitative proof ladder, three routed entries; D-iv invitation-forward positioning posture (G1 rigor below the line + deep proof-route as safeguard); D-v map 3 journeys (one per goal), note the rest.
  • Confidence scheme: every element C: High/Med/Low + Basis + To-validate; the only validation gate is the client's reaction to the content-complete NL draft (no second meeting) + the incoming SharePoint material.
  • Concerns register seeded: 10 strategy-bearing concerns (S-01…S-10), 4 new in-session decisions (Partly, await gate) + 6 re-homed discovery carry-forwards (with D- pointers); Scope/Design carry-forwards deliberately left in the Discovery register, not dragged in.
  • Wiring: index.md +7 rows (phase order: Discovery → Strategy → Design); CLAUDE.md Phased-approach refreshed (Discovery concluded; Strategy & Design active), directory layout + strategy/design numbering + log-op enumeration added; forward link from 12-client-kickoff. The separate Design thread (at Scope, blocked on Dn-01 / Dn-08 awaiting Strategy) now has its input — Design must reconcile its Scope draft against this brief.

[2026-05-19] discovery | Design Scope v0.2 — client interview + Strategy reconciliation

Ran the client interview (Frederik, in-thread) on the v0.1 Scope draft, then reconciled Scope to the now-landed Strategy v1 (strategy/00–50, written by the separate thread). Socratic per the UX Planning playbook (Claude proposes → user reacts → finalise).

  • Interview decisions (locked): CRM / contact-management hard out — replaced by a light per-project application → screen → list → export → newsletter pipeline (no relational store, no follow-up, no on-the-spot artist entry). Ticketing/payments hard out. Media not a feed — existing photo/film archive + extra material reused site-wide as social proof (= the proof-ladder qualitative rung, D-iii); no participant uploads. Single all-in launch (no phased launch); the custom backstage tools are the first trim if time runs short (protected core = public legitimacy surface + application→newsletter). New project → edition content-model (overview aanbod → project page → participatory traject with named editions; each edition own page / name / cohort / typed dates rehearsal-class→show; simple creatie = single page). Application ≠ regular "in" participant; participant self-managed attendance under debate (not v1). Newsletter must leave Squarespace → select an ESP + migrate Squarespace contacts + embed its form; recurring-cost flag to the team.
  • 20-scope.md → v0.2 (rewrite). Every functional/content item now traces to Strategy v1 — G1–G5 · personas P1–P6,N · journeys J1/J2/J3 · proof-ladder D-iii · invitation-forward D-iv. 14 functional reqs Kano-classified with an explicit trim order; F7+F10 (quotes+media) merged into F3 (one proof ladder, capacity-safe); CRM/ticketing removed; content+lifecycle table; Won't-Have rewritten; flows = J1/J2/J3 + P4/P5/P6/N noted; project-type checkpoints updated (custom server form backend; agenda split; funder/partner logo-wall; edition mixed-flow to verify). Validation checklist: traceability Pass (was Partial); cut-pass Pass.
  • glossary.md (new, cross-cutting, wiki-root). Provisional terminology index (aanbod / project / creatie / traject / editie / cohort / rehearsal / show / application vs. deelnemer / backstage / antenne …) with working labels + candidates + status; framed as a terminology card-sort for the next client session (suits the printed-card method).
  • design/01-concerns.md reconciled. 10 → 14 concerns: Closed Dn-01 (Strategy landed → Scope traces to it), Dn-05 (ticketing), Dn-06 (media); Partly Dn-07 (P6 light; attendance split out), Dn-09 (single-launch decided, date not pinned); Open Dn-02/03/04/08/10 + new Dn-11 (ESP choice/migration/cost, BLOCKER), Dn-12 (edition date-types & public flow — verify w/ team), Dn-13 (backstage attendance — verify), Dn-14 (terminology → glossary workshop). None silently Open; Design cannot conclude (Scope still DRAFT; gate = content-complete NL draft; Structure not started).
  • Wiring: index.md — Design Plan / Concerns / Scope rows refreshed + new Glossary row (Cross-cutting). No git commit / no git add (shared multi-thread tree).

[2026-05-19] lint | Reframe "client refuses a single primary audience" (too hard)

User review of the Strategy brief flagged "the client refuses to subordinate / refuses a single primary audience" as stated too hard — it was dialogue, not a refusal, and noted a site legitimately carries several goals/audiences ("it doesn't, and probably can't, be that simple"). Wording-only pass, substance unchanged, applied for wiki consistency:

  • Strategy: 00-strategy-brief (the spine reframed — multiplicity of goals/audiences is normal, two considerations shape it, the dated one is load-bearing by deadline not rank; D-i row), 10-organisation-goals (G2 row, "how G1/G2 cohere", the resolution note).
  • Discovery (consistency — the strategy derived from these): 11-website-purpose (banner), 12-client-kickoff (TL;DR §2, the §2 sub-heading, open-Q status line), 01-concerns D-01, 10-desk-research (banner + closed-by-kickoff line), 22-offerings-audiences (open-Q1), and the index.md kickoff summary row.
  • Not touched: append-only log.md history (earlier entries keep their original wording by the append-only rule — this entry records the correction instead).
  • New behaviour-memory saved (feedback-framing-restraint): don't dramatise client stances as hard refusals/binaries; attribute to the dialogue; multiplicity is fine.
  • The separate Design thread had already reconciled Scope v0.2 to Strategy v1; this is a label softening only — its D-i/D-iv traces still hold.

[2026-05-19] lint | Discovery Concerns register — Frederik review pass (27 → 10 unresolved)

Frederik walked the unresolved list and gave per-concern direction (voice notes) through the website-engagement lens. Reconciled the register accordingly — no IDs renumbered, all moves recorded with resolution + pointer (Frederik review 2026-05-19, with → 12-client-kickoff where the meeting was the substantive basis).

  • 17 Closed: answered — D-11 (Sam = de-facto zakelijk leider), D-23 (free walk-in), D-37 (ticketing always via partner venues), D-26 (no donor/membership audience — grant/subsidy + project/consortium only), D-39 (accessibility = high/strict, all-ages, Frederik's call); out-of-website-scope — D-09 / D-12 / D-28 (won't-resolve), D-10 (small-team working model: Sam + Kristin, Seppe internal, not board-run), D-17 / D-21 / D-22 (no social feed / cart / dynamic media-recap), D-41 (domain price immaterial here); directional answer — D-05 (no booking automation → light "how the collaborative-funding constellation works" explainer; email entry kept), D-03 (de-emphasis agreed; folds into Vision/About, placement → design), D-36 (no full participant DB/CRM; lightweight backstage only; scoped in Strategy/Design), D-42 (newsletter+analytics free within Squarespace today → become separately-costed add-ons on the custom stack — recurring-cost watch-item).
  • 8 refined (stay unresolved, now explicit Strategy/Design carry-forwards): D-13 (Ultima Vez — site heritage framing agreed: 16-yr history within UV → spun out, "their history, not went rogue"; remainder = Birds rights wording to clear with Ultima Vez), D-14 (funders-vs-partners classifiable from desk research, no client input; placement → skeleton), D-29 (network memberships — defer to design/skeleton), D-35 (Notion-as-source too vague to assess — needs an on-site co-working day; possible in-site admin alternative), D-33 (no fixed launch but expected during/just after summer 2026), D-38 (GDPR/minors only bites if the site has forms — design-in then), D-44 (antenne concentration vs spread = Leon's own decision, client-confirmed), D-45 (publishable impact figures — design/skeleton with client). D-24 / D-40 unchanged.
  • Counts: 27 → 10 unresolved (🔴 2 Open · 🟡 8 Partly) · ✅ 19 → 36 Closed · 46 total. Discovery still concludable; the 10 remain the seed for the Strategy/Design registers. Added the review banner; rebuilt the Unresolved list + audit trail; fixed the in-page anchor (…-27…-10). index.md row still accurate (no count in it). No git commit / no git add (shared multi-thread tree).

[2026-05-19] strategy | Personas enriched + 4-page anti-overlap ownership contract

User flagged the personas page as lightweight and asked to strengthen it without causing overlap with JTBD / value-prop / journey. Investigated all four + the raw sources; agreed two decisions with the user (ownership contract; labelled-field profile format).

  • Anti-overlap ownership contract added as a one-line header on all four strategy pages: 20 owns the person · 30 the job · 40 the promise · 50 the sequence over time. Cross-link by stable ID (P1–P6, N); never restate. "Needs from the site" deleted from personas (it was JTBD's job, duplicated).
  • 20-personas rewritten to evidence-graded labelled-field profiles (context / trigger / motivation / anxiety / behaviour / representativeness / voice / evidence). Enriched now from the 793-line client transcript (line-cited) — confidently, since most personas don't need the survey: P2/P3/P5 are desk-ceiling (the survey can't reach a jury/programmer/press — stated, accepted); P1/P4 marked ⟶ survey will firm. Grading separates verbatim vs ⚠️-inference vs workshop-articulated (per [[feedback-framing-restraint]]).
  • Real participant/teacher voice folded in from the captured immutable mirror docs/raw/current-site/pages/missie-visie-nl.md (the page the user pointed to): P1 gets real participant verbatim ("…I can be myself there and I meet people I would never have otherwise encountered."; FR "…être différent ensemble."); P4 gets a real leerkracht-deelnemer quote. Closes P1's voice gap; residual = the unfiltered voice
    • drop-off reasons (Leon-curation bias) — the survey's specific job.
  • 30/40/50: ownership header only (they already cross-ref by ID — no persona-context to trim). S-07 refined (personas now enriched; survey scoped to the unfiltered P1/P4 voice). index.md personas row refreshed.
  • No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-19] strategy | Desk-research enrichment run — 4 streams, saved raw + wiki

To strengthen the thin Strategy artifacts, agreed (with the user) a prioritised desk-research bundle and ran 4 parallel research agents (research-only, isolated context): B1 Kunstendecreet structural-funding assessment framework + jury-advice landscape; B2 partner-org corpus + welfare/education gatekeeper decision-logic (P4); B3 press / recognition corpus (P5 + proof); A mining of already-held sources (current-site mirror, browser dossier, transcript 2nd pass).

  • Saved per user instruction (raw + wiki):
    • Raw (immutable): docs/raw/research/desk-research-strategy-enrichment-2026-05-19.md — the 4 agent reports verbatim with all URLs/line-refs + a provenance header (created at user instruction; now read-only like other raw notes).
    • Wiki (synthesised): docs/wiki/strategy/90-research-evidence-2026-05-19.md — evidence-graded distillation by persona/section + "how this feeds the artifacts" map + open follow-ups. Establishes the 90 = research-input tier for the Strategy phase (mirrors discovery's 90); noted in 00-strategy-brief (the numbering source-of-truth) and index.md (+1 row).
  • Headline findings: the Kunstendecreet participatie functie is defined and scored on 3 things (method-meerwaarde · process/aftercare/continuity · quality-evolution) and the decree itself names an org's own communication channels as proof — turns G1/P2 from inferred to rubric-grounded. Net-new: the mobiele dansstudio/bike = a bookable P3 offer with no digital surface; "antenne" = a constrained cross-sector cluster; citeable partner-voice quotes for P4; net-new EN/FR participant quotes for P1; Mariage has zero critic reviews (proof-ladder press-rung risk).
  • Caveats recorded: 23–27 rubric ≠ 28–32 (Visienota not yet public — don't hard-wire aandachtspunten); analogue ≠ Leon (P4 single-trajectory depth); re-verify dynamoPROJECT.
  • Next: synthesise into 20/30/40/50 (+ G1) and refine S-07/S-08 + add the Mariage-press concern (task in progress). No git commit / no git add (shared multi-thread tree).

[2026-05-19] strategy | Synthesised the desk-research into the artifacts

Folded 90-research-evidence-2026-05-19 into the Strategy artifacts (ownership contract preserved; evidence-graded; cite the 90 page which carries granular sources).

  • 20-personas: P2 rubric-grounded (Kunstendecreet participatie functie scored on method-meerwaarde · process/aftercare/continuity · quality-evolution; decree counts an org's own channels as proof; "16 not 5 years"); P3 +the bike (bookable, no digital surface) + Mariage-as-replicable-format + Kosmos/Birds; P4 antenne = constrained cross-sector cluster + institutional-not-artistic fear + partner-coordinator voice (Schoemaker/Dewin); P5 +press-angle + the open Mariage-press gap.
  • 30-JTBD: P2 job = the rubric; P3 job +bike; new Forces section (push/pull/anxiety/habit incl. principled no-social → site absorbs the channel job); proof-job rungs now rubric-anchored + the Mariage-press caveat.
  • 40-VP: RTBs hardened (P2 rubric-mapped; P3 bike/format; P4 partner-voice + institutional reassurance; P5 lineage-proxy + S-11).
  • 50-journey: J2 future = deep proof-ladder read against the rubric; J3 +replicable format + bike-no-surface. 10-goals: G1 rubric-grounded.
  • Concerns: S-07 (personas further enriched) + S-08 (rubric-anchored) refined; +S-11 (Mariage has no critic reviews → lineage-proxy; ask the team) +S-12 (research- freshness: 23–27≠28–32, re-verify dynamoPROJECT). Counts 10→12 (7 Open · 5 Partly).
  • Mariage-press handling per the user: treated as open / ask-the-team (possible missed press), not a baked-in proxy stance. index.md rows refreshed. No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-19] strategy | JTBD / VP / journey deepened to match the personas

Final enrichment pass: gave 30/40/50 the same structural depth the personas got, inside the ownership contract (each page deepens only what it owns; cross-ref by ID; no overlap), evidence-graded, citing the 90 research page.

  • 30-JTBD → job profiles per persona: functional / emotional / social job · hired over what (the alternative/non-consumption) · done when (success signal — for P2 = the Kunstendecreet rubric) · dominant force. The global Forces section reframed as the system-level view (per-persona force now in each profile).
  • 40-VP → promise profiles per persona: unique value · only-here differentiator (vs Ultima Vez/peers + Debateville; the decree-counts-the-site-as-proof lever) · RTB → concrete owned asset · register pair (same promise in institutional vs belonging words — the two-registers idea made concrete; linked from the rebalance section) · not promising (honest anti-scope).
  • 50-journey → bounded staged arcs: J1/J2/J3 as Trigger→Land→Orient→★Decisive→Act→ After with what-happens&feels · current-friction · future-move(→VP link), plus the single make-or-break moment + entry/exit. Kept bounded (no service-blueprint); P4/P5 upgraded to a one-line "shape", still not arc-mapped (D-v / scope mandate).
  • Concerns unchanged (structural deepening of the same evidence — S-07 already covers it); index.md 30/40/50 rows refreshed. No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-19] design | Image Map — Asset Catalogue (Phase 1)

Ran Phase 1 of the Notion image-mapping playbook ("catalogue what exists"). Leon has no separate photo dump, so (per the user) the source set = the current-site mirror — the 85 image URLs in docs/raw/current-site/images.json. The mirror only indexes URLs, so each was fetched from the Squarespace CDN at its largest render (?format=2500w → WebP, long edge ≤ 2500 px), measured (sips), and viewed.

Applied the playbook exclusion criteria (no taste calls): 9 excluded — 6 /agenda calendar screenshots + 3 third-party "Apartheid Free Zones" campaign banners (NL/FR/EN). 2 dropped as byte-identical duplicate downloads (074≡081, 063≡075). 74 accepted, copied with kebab-case names into docs/raw/assets/: 70 photography/ (participatory intergenerational dance — Atelier Leon, Mariage, à l'école, on Tour; ~10 photographers named in filenames), 2 logos/ (low-res raster only ⚠️), 2 posters/events/ (Mariage).

Per the user's two convention decisions: assets → docs/raw/assets/ (the layout's designated bucket; the read-only rule binds the hand-curated research/, not this machine-organised bucket); page filed the Leon way, not the playbook's flat image-map.md — as design/90-image-map.md (a media-asset evidence appendix in the 90 research-input tier, mirroring strategy/90-…; plane files 20/30/40/50 stay clean). The page carries the catalogue + excluded/dup tables + a gaps/"ask-the-client" list (no brand kit, no team portraits, no venue/illustration, ~63/70 photos skew to /gallery+Mariage).

Concerns reconciled: Dn-10 (brand assets) gains an evidence pointer (current site has only low-res raster, no vector); Dn-15 added (photo-archive reuse rights / credit obligations uncatalogued — gates the photographic surface the Dn-06 social-proof decision assumes). Register count 14→15 (Open 9→10). Phase 2 (per-slot map) deferred — it needs Skeleton (40) image slots, which has not started; lands later as design/91-image-map-new-site.md. Updated index.md (+image-map row, refreshed concerns row). No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-19] strategy | Strategy phase CONCLUDED

Concluded the Strategy phase (user-confirmed). The five artifacts + brief + 90-research-evidence + register are a complete, coherent, evidence-graded first version; the Design thread is already consuming it.

  • Conclusion gate (CLAUDE.md) satisfied: 12 unresolved (🔴 7 Open · 🟡 5 Partly), 0 silently Open — every S-01…S-12 carries an explicit disposition (validation-gate / ask-client / Scope-phase). Same pattern as Discovery's conclusion (carry-forwards, not unfinished work).
  • Reconciled the register's "At a glance" from "not yet concludable"✅ concluded, with the explicit distinction "concluded" ≠ "client-validated" (the content-complete-draft review + Kristin's P1/P4 survey are post-conclusion checkpoints, not unfinished strategy work). Fixed the stale …-10 anchor → …-12.
  • Carry-forwards seed Scope: the unresolved S- rows + the Scope/Design Discovery carry-forwards feed the Scope phase (run in the Design thread, already at Scope and reconciled to Strategy v1).
  • Wiring: 00-strategy-brief (+phase-status banner), index.md (concerns row), CLAUDE.md (Phased approach: Strategy → concluded). Open downstream item of record: S-11 (ask the team re possibly-missed Mariage press). No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-19] lint | Glossary → opinionated proposed lexicon from verbatim

User asked for a decisive stab at the glossary: it was a list of too many candidate labels with an open card-sort (a Dn-14 blocker). It shouldn't have been — the verbatim research (live-site capture + kickoff) already contains Leon's own words for almost everything.

  • glossary.md rewritten from "candidates + workshop card-sort" to an opinionated, evidence-cited lexicon. Every term carries Leon's own quote + source. New status scheme: proposed-strong (Leon's exact live word — e.g. "Previous editions:" on /mariageeditie; creatie from kickoff §9; deelnemer/voorstelling/inschrijven/atelier from site verbatim) · proposed · internal-only (frontstage/backstage, cohort, "Nope", application-pipeline — never site copy) · → Structure/→ Strategy.
  • Decisions made (no longer open): Mariage = the creatie (parent), each dated staging = an editie (closes the Scope F4 naming Q); the typed-date vocabulary = open atelier · repetitie · try-out · voorstelling (supplies Dn-12's naming half); group label = groep (site), cohort demoted to internal-only; the invented "rehearsal-class" umbrella dropped; "aanbod" rejected as a designer's word — the overview/root label is an IA/Structure decision, removed as a vocabulary blocker.
  • design/01-concerns.md: Dn-14 Open → Partly (proposed lexicon exists; only confirm-or-correct remains; not a blocker on the content-complete draft). Counts: Partly 2→3, Open 10→9. Dn-12 detail split (date-types settled · public-watch flow still Open). Prose + readiness table reconciled. Still none silently Open.
  • Wiring: 20-scope.md (framing line, Kern 3, F4 row, §4 line, Open-questions bullet — (gloss.) hedging dropped, lexicon adopted, F4 naming marked resolved); index.md glossary row rewritten. No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-19] discovery | Scope v0.3 — Strategy-v1.x review + 2nd client interview

Reviewed the concluded + enriched Strategy (brief now ✅-concluded; 10 G1 rubric-grounded; 90-research-evidence appendix; +S-11/S-12) and the parallel 90-image-map ingest, then ran a second client interview and applied Scope v0.3.

  • Impact assessment delivered first (talk-through before building): the enrichment changes Scope as content-spec sharpening + caveats, not a structural rework — the 14 F-items / creatie→editie model / no-CRM / single-launch spine all stand.
  • Interview decisions (locked): (1) follow the Kunstendecreet participatie rubric loosely (S-12: 28–32 aandachtspunten not public — only the criteria structure is durable) and invisibly — the site reads as Leon's own story, never a jury checklist (new rubric-invisibility guardrail principle; the invisibility is the rebalance). (2) Press page → DECISION/conditionalMariage has zero published critic reviews (S-11); a standalone "Pers" page only if substantial enough — check with the client; recognition (lineage-proxy + juried selection, no won prizes) folds into the proof ladder F3 regardless. (3) Photo credits/rights → deferred, per-asset where needed, not a Scope blocker (revises Dn-15's "gates the photographic surface"). (4) Donor/membership → Won't-Have v1 (audience question stays Strategy S-10). (5) Bookable surface = a contact request only — no booking section/paid-offers system (resolves S-05 for Design). (6) Validation gate now + Kristin's P1/P4 survey; F12 P4 path = Leon-initiated, partner-coordinator-framed, not an application/lead-gen; Mariage = replicable format corroborates F4.
  • 20-scope.md → v0.3 (rewrite). New "what changed v0.2→v0.3"; F2/F3 restructured to the rubric substance (method-meerwaarde · process/nazorg/continuity · quality+evolution) with the invisibility guardrail; F10 → DECISION; F11 = contact-request, S-05 resolved; donor Won't-Have; settled glossary lexicon adopted throughout (werking + creatiestraject/voortrajecteditie/groep/deelnemer/toeschouwer/inschrijven; date-types open atelier·repetitie·try-out·voorstelling; "aanbod" is not a label → Structure); confidence summary + validation checklist + Open-questions refreshed.
  • design/01-concerns.md reconciled. 15 → 18 (5 Closed · 3 Partly · 10 Open): +Dn-16 (press substantial-enough → check client, ← S-11), +Dn-17 (donor/membership Won't-Have decided; audience Q stays Strategy S-10), +Dn-18 (booking=contact-request, ← S-05); Dn-04 rubric-anchored-but-loose-and-invisible; Dn-15 annotated deferred/non-blocking. None silently Open; Design still cannot conclude (gate = content-complete draft + Kristin survey).
  • Wiring: index.md Concerns + Scope rows → v0.3 / 18-concern counts. No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-19] design | Glossary → two-layer model (6-persona debate corrects over-claim)

User pushed back: the "opinionated proposed lexicon" leaned too much on the team's internal words and under-weighted the target audiences ("'creatie' isn't something they'd feel they can participate in"). Dispatched six parallel persona agents (P1 newcomer · P2 jury · P3 programmer · P4 partner-coordinator · P5 press/public · P6 internal) to debate every term. Unanimous, independent convergence:

  • The method was circular. Grading a term proposed-strong because "Leon already says it" sampled the current site — which is written in the subsidiedossiertaal the redesign exists to remove. Provenance ≠ audience fit. The earlier "not-a-blocker / confirm-or-correct" framing was an over-claim.
  • Fix = two layers. Layer A the internal content model (creatie→editie→groep→ typed-dates) is correct and kept (CMS/backstage/IA; P6 disambiguation; P2 continuity evidence). Layer B the public surface label is chosen per register, not inherited — restoring Strategy's one substance, two registers that the old page silently collapsed.
  • Sharpest conflict — editie: P3's "Previous editions" list is a speellijst (his single best booking signal); P1 reads "I missed it"; P5 "just a free show"; P6 the essential internal unit. Register-split, decided deliberately.
  • creatie/traject/werking fail P1/P4/P5 publicly (art-world / dossier register); voorstelling·deelnemer·publiek·atelier·typed-dates are the durable shared spine; internal-only fence (cohort/backstage/Nope/antenne) was correct.
  • Four gap clusters the source-method could not surface (it never asked these audiences): process/decree (proces·toeleiding·nazorg·omkadering·continuïteit·duurzaam partnerschap), welfare (begeleid traject op maat·vrijblijvend·kennismaking), booking (productie/format·boekbare formule·technische fiche·coproductie·professional contact path), public-practical (the verbatim "gratis·zonder reservatie·datum·plaats·uur" triplet; "agenda" locked as anchor; a quotable press genre noun).
  • glossary.md rewritten to the two-layer model + per-register table + gaps. Dn-14 stays Partly but the remainder is substantial open design work (Layer B + gaps), carried into the content-complete draft & Structure — not a client formality (earlier over-claim corrected). Wiring: design/01-concerns.md (Dn-14 row + prose), index.md glossary row, 20-scope.md (framing line, Kern bullet, F4 conf, §4 line, Open-questions bullet, validation checklist — "lexicon settled" → "internal model settled, public labels per-register open"). No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-19] design | Glossary collapsed to one shared vocabulary (drop A/B layers)

User feedback: the A/B (internal-model vs per-register public label) split is confusing in practice"both of us in the frontend (the public site) and both of us in the backstage (the admin, and me in the code). Let's try to use the general terminology as much as possible." Frederik and the team work across both surfaces; a deliberately divergent vocabulary taxes the two people doing all the work. The persona debate's substance was right, but the structural remedy (two layers) was the wrong shape.

  • User-steered tiebreaker (AskUserQuestion): "Plainest general word everywhere." One shared vocabulary, biased to the public, used identically in code, admin and site.
  • glossary.md v3 — one shared vocabulary: project · editie · groep · deelnemer · publiek · voorstelling · inschrijving · open atelier · repetitie · try-out · atelier / Atelier Leon · mobiele dansstudio. creatie→**project** (the one consequential rename — general, understood by newcomer/partner/dev/admin; was the most P1/P4/P5- alienating word in the debate). werking dropped as a label (recurring practices named individually: Atelier Leon · Leon op school · Leons White Page · Leon rond de tafel · Leon on tour). traject demoted to funder-page copy (not a system noun). toeschouwerpubliek. In-house jargon, never user-facing (small list, normal): cohort · frontstage/backstage · antenne · "Nope" · application pipeline · voortraject.
  • Debate substance preserved as page-level copy notes (P1 plain invite · P4 welfare framing · P2 proof content w/ traject/proces/nazorg/omkadering/continuïteit/duurzaam partnerschap · P3 booking content w/ productie/format/technische fiche/coproductie · P5 public-practical "gratis · zonder reservatie · datum · plaats · uur" + agenda anchor + a quotable press genre noun) — not a parallel naming system.
  • Dn-14 stays Partly: vocabulary settled; remainder = ordinary content-complete- draft work + the IA root label at Structure. Over-claim of "Layer A settled / Layer B substantial-open" replaced with the simpler honest framing.
  • Wiring: 20-scope.md ~15 edits — framing line, Kern §3+§5, F4/F5/F7/F11 rows, P3 persona row, §4 row, content-types row, ROT row, technical line, journeys, open- questions bullet, validation checklist, link-to-next-plane — creatie→project, werking dropped, two-layer language removed; design/01-concerns.md (Dn-14 row + prose); index.md Glossary + Scope rows. Memory note refined (the two-layer remedy itself was a misstep — prefer one ubiquitous vocab biased to the hardest public audience). No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-20] lint | Strategy register — Discovery reconciliation (3 close)

Cross-checked the Strategy register against the up-to-date Discovery register. Three Strategy concerns close because their Discovery anchor was already closed at the 2026-05-19 Frederik review:

  • S-05 (paid offers / dedicated booking section appetite) → resolved via D-05: no booking automation, stays email-led; instead a light "how this collaborative-funding constellation works" explainer; no pricing detail. G3/J3 shape accordingly.
  • S-06 (P6 / backstage scope boundary) → resolved via D-36: boundary holds; lightweight backstage only, no participant DB/CRM; re-examine only in Scope/Design if a site treatment genuinely depends on it.
  • S-10 (individual-donor / membership audience) → resolved via D-26: none; funding is grant/subsidy + project-based; strategy stays grant + commission framed.

Counts: 12 → 9 unresolved (🔴 7 → 5 Open · 🟡 5 → 4 Partly) · ✅ 0 → 3 Closed. Also fixed a stale anchor link (#unresolved--what-still-needs-resolving-27-10) and lightly refreshed the parenthetical examples list of Scope/Design/Build discovery carry-forwards (dropped items already closed in Discovery: governance, staffing, accessibility, ticketing, AFZ placement, dynamic gallery; kept: Notion feasibility, GDPR, network memberships, Birds rights wording, footer-partners classification). No git commit / no git add (shared multi-thread tree — user commits).

[2026-05-20] design | Structure plane crystallised (Garrett Plane 3) — Variant 1B

Crystallised the Design Structure plane (30-structure.md) after a Socratic in-thread workshop with Frederik. The plane was run UX-Planning style: summarise what Scope/Strategy/Glossary already lock for IA, surface the genuinely-open forks, settle them iteratively, then produce the sitemap. Page-level layout (the home, the project-page) is deliberately deferred to Skeleton.

  • Variant choice (audit trail). Three variants weighed: V1 full audience-first nav (Debateville pattern) → discarded (forces self-identification, rubric-visibility risk, fragments the work); V2 pure routed spine (content-first, all in-page routing) → discarded (cannot honour Glossary register-split for P3/P4/P2 on a shared page); V1B adopted — content-first primary nav + single audience-bridge (Samenwerken) whose children are intentional-action labels. Closest to Belgian art-org grammar, respects register-split where it matters, honours Kern 2 (invitation-forward home).
  • The five top-level items: Dansateliers · Voorstellingen & projecten · Samenwerken · Agenda · Over Leon. Modal nav grammar named as a principle (some items by what, some by relation — each frame the one its audience naturally uses).
  • Two load-bearing IA insights from the workshop:
    • Trajectory, not product. Leon's offer is process, not catalogue. The bookable surfaces all use trajectory verbs (opzetten · uitnodigen · doen). There is no "book a finished show" path because Leon's economic model doesn't include one. Mariage is commissioned, not booked — so it routes through Participatief dansproject opzetten, not a separate "Een voorstelling programmeren" child (considered and dropped). This is a real Scope F11 amendment noted as a pending Scope reconciliation.
    • Agenda has a dual job. With the team-confirmed "LWP + Leon rond de tafel are internal" combined with the user's "show everything by default + simple filters," the unfiltered Agenda becomes a visible proof-density signal for funders/jury (the rubric's continuïteit · process · evolution criteria visibly evidenced) while filters do the utility job for participants/freelancers. Same surface, two jobs, no rubric-language.
  • Samenwerken's children = intentional-action labels (user direction): Participatief dansproject opzetten · Mobiele dansstudio uitnodigen · Vrijwilligerswerk of stage doen. Three trajectory verbs, register-clear children. P4 + P3 commissioners both land on opzetten (Mariage-shape, Kosmos-shape, Leon-op-school instances); the bike has its own child; vrijwilligers/stagiairs as a new audience surface the team flagged at the workshop (deserves a section — they receive recurring email enquiries).
  • Recurring practices distribute by audience-fit (team-confirmed: LWP + Leon rond de tafel are internal). No "werking" umbrella, no overview root: Atelier Leon → Dansateliers; Leon op school → Samenwerken (as a concrete instance under opzetten); LWP + Leon rond de tafel → Agenda only (no dedicated landing page; event-label is the entire public surface — small content task to add a 1-line public explainer); Leon on tour → Agenda dates + Boekingen track-record. Resolves the IA root-label question Scope/Glossary deferred.
  • Over Leon → slim (user direction: "what the team can pull off"). Sub-pages: Missie & visie · Impact · Team · Historiek · Contact. Jaarverslag dropped (team doesn't produce one). Standalone Pers page dropped (Dn-16 closes Won't-Have v1 — user: "Pers gone for now"; recognition folds into Historiek). The deep proof rung (Scope F2/F3) becomes distributed: a slim Impact page (method + proces/nazorg + qualitative evidence
    • "In cijfers" auto-pulled from Agenda data — no manual %-dashboard) + per-project trajectory documentation on V&P pages + lineage on Historiek + the funder/partner wall in the site-wide footer + the Agenda's density signal. No standalone "for funders" page; rubric-invisibility strengthens.
  • The label settled at Structure (was deferred by Scope): Voorstellingen & projecten (user choice; rejected Creaties because Glossary v3 makes "creatie" P1-bouncing — kept only as informal in-house speech).
  • Persona/journey routing checked: J1 (P1) → Dansateliers ✓; J2 (P2) → Over Leon → Impact ✓ (load-bearing journey to test at validation); J3 (P3) → Samenwerken → opzetten / uitnodigen ✓; P4 → Samenwerken → opzetten ✓; P5 → Agenda + Historiek ✓; N → no path ✓; vrijwilliger/stagiair (new) → Samenwerken → doen (surface in place, persona pending).
  • Concerns register reconciled (18 → 19):
    • Closed: Dn-16 (Pers Won't-Have v1).
    • Open → Partly: Dn-12 (editie flow shape resolved structurally — inschrijving + deelnemer practical-info on editie page; publiek via Agenda; team-verify remainder).
    • NEW Open: Dn-19 vrijwilligers/stagiairs as a site audience — needs persona + JTBD + journey from Strategy thread; team to share email corpus as raw research input; a new S- concern to open on next Strategy sync.
    • Pending Scope reconciliations recorded (not new Dn- IDs): Scope Kern 3 (no overview root; practices distribute), F10 (Pers → Won't-Have), F11 (trajectory-not-product amendment), F2/F3 (distributed proof). Touched on next Scope ingest.
    • Counts: ✅ 5 → 6 · 🟡 3 → 4 · 🔴 10 → 9 · total 18 → 19. None silently Open.
  • Wiring: docs/wiki/design/30-structure.md (new); design/01-concerns.md (counts + Dn-12/14/16 rows + Dn-19 added + carry-forward note + new "Scope reconciliations pending" section); design/00-design-plan.md (plane status DRAFT 2026-05-20 + Skeleton-priority note); index.md (+1 row for 30-structure; Scope row unchanged). No git commit / no git add (shared multi-thread tree — user commits).
  • Next: Skeleton (Plane 4). Highest-priority skeletons = the home (the 5-tension interaction-design piece Structure deferred) and the Voorstellingen & projecten project page (using Mariage as the test case).

[2026-05-20] design | Structure v0.2 — 4-item nav restructure + terse rewrite for downstream LLM use

Iterated Structure v0.1 → v0.2 (30-structure.md) after a follow-on workshop and verification against the current /what-we-do mirror. The IA restructure resolves a v0.1 gap (Leon op school + Leon on tour buried) and gives the file a spec shape for downstream LLM consumption (Laravel scaffolding · Skeleton wireframes · per-section UX planning).

  • Top-level merged: Dansateliers + Voorstellingen & projecten → Dansateliers & performances. 5 → 4 top-level items (Dansateliers & performances · Samenwerken · Agenda · Over Leon).
  • Naming pattern named as an IA rule: Generic-first, brand-second<category>: <Leon's brand name>. Children: Open dansateliers: Atelier Leon · Ateliers op school: Leon op school · Participatieve performances: Mariage · Mobiele dansstudio. Visitor reads what it is + what Leon calls it in one scan.
  • Verified vs. /what-we-do mirror: the current site describes "Leon on tour" as the umbrella for participatieve performances ("…a large-scale performance like Mariage"), not as a peer recurring practice. Glossary v3 listed it as a peer — that was wrong. Lint applied: "Leon on tour" dropped from the recurring-practices line; Participatieve performances is the public category. Apartheid Free Zones placement clarified in the same glossary entry (→ Over Leon → Missie & visie, per Strategy S-03).
  • Birds → Historiek (lineage). It's an Ultima Vez production Leon tour-directs since 2023 — best surfaced as the "16 not 5 years" trust signal (G1/P2), not on the same shelf as Mariage. Kosmos 2027 added under Participatieve performances only when ready (no advance placeholder).
  • Mobiele dansstudio has its canonical page under Dansateliers & performances; Samenwerken → uitnodigen becomes an intake/routing page that links to it (same pattern as opzetten linking to Mariage / Leon op school / Kosmos in the container).
  • Content model added to the doc (entities for Laravel scaffolding): Project (hasMany Editie) · Editie · RecurringPractice · Event · Page · Partner/Funder · Inschrijving. Public-vs-internal recurring-practice distinction made explicit (LWP + Leon rond de tafel = internal-only, no landing page, events only on Agenda).
  • Terse rewrite (per user request — "less verbose, less reasoning, file used for downstream decisions"): file dropped from ~440 → ~190 lines. Cut: variant audit-trail (V1 / V2 / V1B history — now in this log entry), trade-off prose, "honest cost" framing, long IA-principle explanations. Kept: sitemap, IA principles as one-line rules, content model, per-section content tables, persona routing, Scope reconciliations, open Skeleton items, concerns moves, validation gate.
  • Concerns unchanged at v0.2 (still 19; Dn-12 Partly, Dn-16 Closed, Dn-19 Open carried from v0.1).
  • Wiring: 30-structure.md (rewrite); glossary.md (lint: recurring-practices row + AFZ placement note); 01-concerns.md (status prose: Structure v0.1 → v0.2); 00-design-plan.md (plane row → v0.2 + new summary); index.md (Structure row refreshed with v0.2 spec summary). No git commit / no git add (shared multi-thread tree — user commits).
  • Next: Skeleton (Plane 4). The doc is now in shape for parallel-dispatch per-section Skeleton work (the home + each top-level branch can be picked up independently).

[2026-05-28] build | Contact/booking form — Dn-03 contact slice unblocked

Decoupled Dn-03: built a server-handled contact form (POST /contact → ContactController → ContactRequestMail, honeypot, no-JS PRG, email-only/no store) on a legitimate-interest basis. Promoted SP-11 to partials/contact-form.blade.php; added /privacybeleid stub + footer link; added form-control styles + danger/success tokens. Live on uitnodigen + contact page. Dn-03 Open [BLOCKER] → Partly (inschrijving/minors + newsletter/ESP remain blocked). Spec: docs/superpowers/specs/2026-05-28-contact-form-design.md.

[2026-05-28] build | Privacybeleid page populated + internal privacy register

Replaced the /privacybeleid placeholder with real NL AVG copy for the one data flow (the contact form): controller identity, purpose, lawful basis (6.1.f/6.1.b), recipients, retention, rights, and the GBA complaint route. Mail provider confirmed = Resend (US) → § "Met wie we ze delen" discloses the US transfer under EU-VS DPF + SCC's. No cookie banner (one strictly-necessary functional cookie, disclosed). Added internal Art. 30 register (gitignored) with a confirm-with-Leon checklist. Feature test (PrivacyPageTest) pins the mandatory disclosures. Dn-03 stays Partly (inschrijving/minors + newsletter/ESP remain blocked). Spec: docs/superpowers/specs/2026-05-28-privacy-page-design.md · Plan: docs/superpowers/plans/2026-05-28-privacy-page.md.

[2026-05-28] build | Tone of voice — add kenmerk "vanuit de lezer, niet vanuit onze structuur"

Added a 7th kenmerk + 8th checklist item to identity/10-tone-of-voice.md: write from the reader's intent, don't reference the site's own organisation ("daar hoort een eigen pagina bij", "in de sectie hieronder", "op onze website vind je") when you can just name the reader's action. Surfaced by a contact-page copy fix. CLAUDE.md "7-point" → "8-point" checklist in both citations.

[2026-05-28] build | Contact (P-18) — OSM map fixed + open-atelier list dynamic; pipeline updated

Fixed the contact-page Leaflet map: corrected coords to Osseghemstraat 53 (50.8552, 4.3201, verified via Nominatim — old coords ~700 m off), zoom 16 → 15, and turned the location label into a permanent grayscale tooltip (was click-only popup). Made the "open atelier" block dynamic — it now reads upcoming public open_atelier Events (limit 3, SP-07 date-row, agenda fallback) instead of hardcoded weekly lines; no new model (reuses Event, same source as Agenda). 40-skeleton P-18 row: Wire 🟠→🟢, Back 🟠→🟢, Assets 🔴→⚪ (no assets needed); OSM-coords gap closed. Roll-up updated.

[2026-05-28] build | SP-08 Agenda list revived — extracted the duplicated agenda strip into one partial

The "Agenda preview strip" was deprecated in favour of using SP-07 date-row ×N directly — but the inline skeleton (empty-state → bordered list → the Event→date-row mapping → trailing link) had duplicated across four views (home §4, atelier-leon §4, contact §3, mariage-editie §6), so the date format + venue ?? '—' fallback lived in four places. Built partials/agenda-list.blade.php as a list-only @include partial (props: events, href closure, emptyText, linkLabel?, linkHref?); each caller keeps its own query + heading. Refactored all four call sites; verified all render 200 with rows + empty states + correct trailing links (mariage keeps its bespoke "→ Naar Mariage" empty link via the optional-link escape hatch). Minor intentional change: the "see all" link now renders in both states (was inline in the empty sentence on atelier/contact); contact margin mt-4→mt-6. No page-row stage changes (pure extraction). Docs: 41-patterns SP-08 row + new spec section + counts (14/14, none 🔴); 40-skeleton SP-08 row + roll-up (v0.6); Dn-22 updated. Spec: docs/superpowers/specs/2026-05-28-agenda-list-partial-design.md.

[2026-05-28] build | Mariage editions corrected to real data — fictional cities replaced, no stage change

The seeded edities (P-05/P-06) were fictional strawman (Brussel, Antwerpen, Rotterdam, Gent, Marseille, Luik). Replaced with the 6 real Mariage editions from the current-site mirror (docs/raw/current-site/pages/mariage.md "Previous editions"): MolenFest Molenbeek 2024 (21.09, première) + Week van de Verbeelding Gaasbeek (02.11.2024) · MolenFest Molenbeek 2025 (06.09) + Winterfeest GC De Platoo Koekelberg (19.12.2025) · Cultureghem Anderlecht (10.04.2026) + Volt FESTIVAL BRONKS Brussel (26.04.2026). Source typo noted: the page lists "26.04.2025" for the BRONKS show but the doe-mee page confirms 2026. Added one invented future editie (molenbeek-2026, MolenFest 06.09.2026, open call live) so the SP-10 sign-up flow is testable. EditieSeeder rewritten (idempotent prune) + EventSeeder voorstellingen retied to the real slugs/dates; mariage.blade lede + intro, open-call-band, historiek timeline, mariage-editie residency wording, and EditieForm example slug updated to match. Conceptual note: Mariage is a recurring participatory festival performance, not a city residency — residency fields (stadgenoot, groep_*, quote) left null. Verified: 7 edities, molenbeek-2026 = aankomend + open call, others afgelopen, each with 1 voorstelling; project + open editie pages render (signup form live). No stage change (Conf held at 3 per Frederik; editions sourced but per-editie prose still team-supplied); Top gaps + roll-up refreshed for P-05/P-06.

[2026-05-28] build | Event data model — Phase 1: Venue + Atelier models (Atelier Leon page now dynamic)

First slice of the full-normalization spec (spec · plan). New Venue model (naam/gebied/adres + nullable lat/lng) and Atelier model (type: open|school, standing venue + day/time; scopes open/school/active/ordered; dayLabel/timeRange/displayName) with an AtelierType enum. events gains nullable atelier_id + venue_id FKs (additive — the legacy venue string and the practice/project/editie slugs are untouched); Event gets an atelier() relation + a forAtelierType scope. Seeders: VenueSeeder + AtelierSeeder (idempotent, wired into DatabaseSeeder), EventSeeder populates the FKs. The Atelier Leon §4 "Waar en wanneer" block now renders from Atelier::open() (verified live — identical to the old hardcode) and "Eerstvolgende" from Event::forAtelierType(open). 6 commits on main; full suite green bar one pre-existing unrelated failure. 40-skeleton P-03 Back ❓→🟢 (Wire held 🟠 per the self-promote gate). The Event::venue() relation was deliberately NOT added (collides with the venue string column) — deferred to Phase 2 along with the Project model + Editie→Edition rename + slug→FK cutover.

[2026-05-29] build | Event data model — Phase 2 complete: Project model + Editie→Edition + slug→FK cutover

Concludes the full-normalization spec (phase-2 plan). New Project model; EditieEdition (class/table editions/Filament EditionResource; the NL label, route name, {editie} param + view file stay Dutch). FKs editions.project_id + events.edition_id; repetities now attach to an editie; events.venuevenue_name + Event::venue() (+ venueLabel() fallback); a school Atelier (nullable weekly-slot fields) parents klas events. agenda/home/mariage read events via relationships (forProjectedition.project); the practice_slug/project_slug/editie_slug columns (+ editions.project_slug) were dropped. An Event saving-guard enforces type↔parent (atelier | edition | none). Verified: migrate:fresh --seed clean (14 events, no guard rejection), agenda + mariage + editie pages render 200, dashboard no drift; suite green bar one pre-existing unrelated failure (EditionModelTest 7-vs-6). Executed subagent-driven on main (commits 26f3a15…625b0b3), per the agreed "commit full coherent set" strategy — bundling in-flight parallel inschrijving/copy work in the touched files. Concerns register left untouched (parallel-hot); the model-normalization item can be marked concluded on the next lint.