# Semantiek — Schrijfkamer (eigen dimensie op BeleidsBibliotheek)

**Architectuur (vastgelegd 2026-06-15):** [`docs/SCHRIJFKAMER_ARCHITECTUUR.md`](docs/SCHRIJFKAMER_ARCHITECTUUR.md)  
**Stuurdocument:** [`docs/PERSPECTIEF_SEMANTISCHE_ANALYSE.md`](../docs/PERSPECTIEF_SEMANTISCHE_ANALYSE.md)  
**Backlog:** B-050 in [`BACKLOG.md`](../BACKLOG.md)

## Hosting

| Omgeving | URL |
|----------|-----|
| Lokaal | `http://127.0.0.1:8800/semantiek/dossier/schrijfkamer.html` |
| ACC (eigen vhost) | `https://schrijfkamer.besluit-wijzer.nl` |

Deploy Schrijfkamer: `./deploy-schrijfkamer.sh "notitie"` — **niet** via `./deploy.sh`.  
Sync bibliotheek-basis: `python3 semantiek/scripts/sync_basis_bibliotheek.py`

## Structuur

| Pad | Doel |
|-----|------|
| `templates/analyse-template.md` | Het analyse-format (vijf vragen + spelregels) |
| `analyses/` | Eén bestand per besluit: `<taakveld>_<korte-naam>.md` |
| `bronnen/` | Lokaal verzameld bronmateriaal (PDF-tekst, transcriptfragmenten) — groot materiaal niet in git |
| `dossier/` | **GUI-prototype "Schrijfkamer"** — twee pilotdossiers (geen framework, geen build) |
| `dossier/index-archief.html` | **Pilot #1** — Huisvestingsverordening (8.3): tijdlijn, analyse, stemmingen, debat |
| `dossier/index-ihp.html` | **Pilot #2** — IHP onderwijs + SKOW (4.2, Rebecca Baart): tijdlijn, analyse, toezeggingen — geen debat |
| `dossier/dossier-data.js` | Data pilot #1 |
| `dossier/dossier-ihp-data.js` | Data pilot #2 (concept Fable 5, jun 2026) |
| `dossier/opsteller.html` | **Schrijfkamer (primaire view)** — drie kolommen: links **6 dossierbouwstenen**, midden **preview + invoegen**, rechts **wit collegevoorstel** (Verdana, logo SVG). Export ODT/PDF/Word/HTML. |
| `dossier/semantiek-config.js` | **Zichtbaarheid optionele lagen** — o.a. `toonOverdracht: false` verbergt overdracht-referentie |
| `dossier/overdracht-data.js` | **Overdracht excerpt** (hoofdstuk 6 wonen) — apart van analyse/bouwstenen; alleen referentie |
| `dossier/overdracht.html` | Standalone pagina overdracht-excerpt (zonder schrijfvel) |
| `dossier/collegevoorstel-bron-data.js` | **Placeholder** oorspronkelijk collegevoorstel B&W (nov 2025) — tot iBabs/DMS-bron binnen is |
| `dossier/schrijfkamer.html` | **Ingang Schrijfkamer** — BBV-ophanging dossiers + college portefeuille 2026 (intern) |
| `dossier/schrijfkamer-registry.js` | Registry: dossiers ↔ BBV-hoofdstuk ↔ portefeuillehouder |
| `dossier/college-portefeuille-data.js` | College geïnstalleerd 2 jun 2026 — volledige portefeuilleverdeling (intern) |
| `dossier/index.html` | Doorverwijzing → `schrijfkamer.html` |
| `dossier/dossier-data.js` | Dossierdata + `bouwstenen[]` (volgorde 1–6) |
| `dossier/logo-wassenaar.svg` | Officieel logo gemeente Wassenaar (SVG, wassenaar.nl) |
| `corpus/` | **Offline corpus** — manifest.json, basis-bibliotheek, iBabs-JSON, tekstlaag |
| `scripts/sync_basis_bibliotheek.py` | Sync curated snapshot `wassenaar/` → `corpus/basis/` + SHA-256 |
| `scripts/build_debat_data.py` | Genereert `dossier/debat-data.js` uit VTT + iBabs-sprekerslijst |

**Prototype bekijken:**
- **Presentatie (5 slides · verhaal):** `http://127.0.0.1:8800/semantiek/presentatie.html` — concerncontroller → bibliotheek → F5 Schrijfkamer → demo
- **Cloudkeuze + NDS-kader:** `semantiek/docs/cloud-leveranciers-nds.md` (BIT vs Cloud.nl, links NDS Prioriteit 1 + DICTU-toetsingsinstrument)
- **Schrijfkamer (hub):** `http://127.0.0.1:8800/semantiek/dossier/schrijfkamer.html`
- Pilot #1 (huisvesting): `http://127.0.0.1:8800/semantiek/dossier/index-archief.html` · schrijfveld: `opsteller.html`
- Pilot #2 (IHP/SKOW): `http://127.0.0.1:8800/semantiek/dossier/index-ihp.html`

(`dashboard.py` serveert het hele projectpad.)

## Pilotmateriaal (F1) — wat er al ligt

### Pilot #1 — taakveld 8.3 Wonen en bouwen (af)

| Stuk | Bron |
|------|------|
| Huisvestingsverordening Wassenaar 2023 | [CVDR697251](https://lokaleregelgeving.overheid.nl/CVDR697251/1) — geldende tekst |
| Tweede wijziging Huisvestingsverordening (raad 16 dec 2025) | iBabs-raadsstuk (link in `wassenaar/beleidsnota-per-taakveld-data.js`, taakveld 8.3) |

Waarom interessant: recente keten, politiek gevoelig (woonwagenstandplaatsen, afstammingsbeginsel) — vraag 4 en 5 hebben hier echte inhoud.

### Pilot #2 — taakveld 4.2 Onderwijs (IHP + SKOW)

| Stuk | Bron |
|------|------|
| Herijking IHP onderwijshuisvesting 2024–2039 | iBabs apr 2025 (`126c9ef7-…`); lokaal `bronnen/ihp_2024_2039.txt` |
| Definitieve locatie SKOW (fusieschool) | Raad 4 jun 2024; `bronnen/skow_locatie_2024.pdf` (scan) |
| Uitgangspunten / startnotitie | Raad 26 nov 2024 (in IHP verwerkt) |
| Samenwerkingsakkoord 2026–2030 | `college-2026/…pdf` — SKOW + IHP-reserveringsnormen |
| Verordening huisvesting onderwijs | [CVDR369822/2](https://lokaleregelgeving.overheid.nl/CVDR369822/2) |

Portefeuille nieuwe cyclus: **Rebecca Baart** (Onderwijs, Integratie). Optie A: alleen semantisch dossier (`index-ihp.html`), geen Schrijfkamer-kloon, geen agent 4.2 (later).

Waarom interessant: IHP = financiële morel + projectketen SKOW; koppeling coalitieakkoord 2026–2030.

### Kandidaat B — taakveld 2.2 Parkeren

| Stuk | Bron |
|------|------|
| Besluitketen parkeren (college 13-01-2026 → raad 24-02-2026 → publicatie) | `BESLUITKETEN_EXPERIMENT_PER_TAAKVELD['2.2']` in `wassenaar/beleidsnota-per-taakveld-data.js`; achtergrond in `docs/ONTDEKKINGEN_2026-05_AGENTEN_ARCHIEF.md` §2 |

Waarom interessant: de keten college → raad → publicatie is al uitgezocht; perfect om de analysevragen op een hele besluitvormingslijn te testen i.p.v. op één los document.

### Transcripties — DOORBRAAK 2026-06-12: transcript raad 16 dec 2025 binnengehaald

De raadsvergadering van **16 december 2025** (vaststelling Tweede wijziging Huisvestingsverordening) is via de automatische ondertiteling van de uitzending als **volledig transcript** opgehaald:

| Bestand in `bronnen/` | Inhoud |
|------|--------|
| `raad_20251216_transcript.vtt` | Volledige vergadering, WebVTT (automatische ondertiteling, NL) |
| `raad_20251216_agendapunt8_huisvestingsverordening.vtt` | Alleen agendapunt 8 (00:35:40–01:17:40, 652 cues — ~42 min debat) |
| `raad_20251216_agendapunt8_ibabs_metadata.md` | iBabs-metadata: stemuitslag (80% voor / 20% tegen, HvW tegen), sprekerslijst met tijdcodes op náám, 2 toezeggingen (whr. Bloemendaal), amendementen A (DLW) en B (HvW) |

**Hoe het werkt (reproduceerbaar voor elke raadsvergadering):**

1. iBabs-agendapagina (`wassenaar.bestuurlijkeinformatie.nl/Agenda/Index/<guid>`) bevat de uitzending als **Company Webcast-iframe**: `sdk.companywebcast.com/sdk/player/?id=dggovww808_YYYYMMDD_1` (kanaal `dggovww808` = WODV-legacy, zie `raad-opnames/`).
2. De player vraagt een **publiek VTT-spoor** op: `…/players/<player-guid>/vtt/public/nl` (met signed URL die de player zelf genereert — af te lezen via de browser/netwerkverkeer).
3. De **sprekerslijst op de iBabs-pagina** (tijdcode → naam, per agendapunt) is de sleutel om de anonieme spreker-labels (spk1/spk2) in het VTT op naam te brengen.

**Kwaliteitswaarschuwing:** ondertiteling is automatisch gegenereerd (ASR) — eigennamen en vaktermen zijn soms verhaspeld (bijv. "was er naar 2023" = "Wassenaar 2023", "de heer Pauli" = Paulides). Citaten in analyses dus altijd checken tegen de uitzending; de griffie-disclaimer op de agendapagina zegt dit zelf ook.

**Governance:** openbare vergadering, openbare uitzending, publiek VTT-spoor — Spoor 1. Raadsleden in functie; geen bijzondere persoonsgegevens opslaan.

## Werkwijze pilot (F1)

1. Kies kandidaat (A of B).
2. Haal de brontekst(en) binnen naar `bronnen/` (geldende tekst + raadsstuk; bij B ook collegebesluit).
3. Fable 5 maakt de analyse volgens `templates/analyse-template.md` → bestand in `analyses/`, status `concept`.
4. Dick reviewt: klopt de samenvatting, is de duiding waardevrij, zijn vraag 4/5 geverifieerd of expliciet "niet geverifieerd"?
5. Na akkoord: status `geverifieerd` + evaluatie of het format werkt voor een opsteller van collegevoorstellen (F2).
