docs(hub): uitrolstand per host + drie veldbevindingen uit de AskUserQuestion-uitrol #180

Merged
janpeter merged 1 commit from docs/hub-hook-uitrolstand into main 2026-08-19 18:47:46 +02:00
Owner

Documentatie-nalevering van de uitrol van vandaag. Geen code.

Wat er niet meer klopte

docs/runbooks/hub-permission-hook.md zei nog "Stand per 2026-08-14: scrum4me-server = 120, max2 = 0, JP's Mac heeft de hook niet geregistreerd". max2 staat sinds vandaag op 300 — JP zette die host aan nadat de AskUserQuestion-brug daar bewezen was. Dat is veilig omdat de docker-workers de hostconfiguratie niet lezen (HOME=/home/agent, geen ~/.claude-mount, geverifieerd met docker inspect op alle draaiende worker-containers), en die onderbouwing staat nu bij de regel zelf — anders leest hij als een schending van de waarschuwing twee alinea's verderop.

Drie dingen die de uitrol zelf opleverde

Alle drie in docs/runbooks/hub-askuserquestion-hook.md, want ze kosten anders iemand een ronde:

  1. De levende-sessieproef kan niet headless. In claude -p bestaat de ingebouwde AskUserQuestion-tool niet (gemeten op 2.1.235) — geen aanroep, geen hook, geen push. Een geslaagde headless run bewijst dus niets, en dat is een aantrekkelijke valkuil omdat headless de makkelijkste manier lijkt om een hook te testen.
  2. Een verse sessie is niet nodig. De hook vuurt binnen een sessie die al liep vóór de registratie — consistent met "uitrol geldt per direct" uit het permission-runbook.
  3. Een tik op een optieknop beantwoordt de approval meteen en laat de melding verdwijnen. Daarna is er geen gelegenheid meer om een toelichting te typen; dat veld zit uitsluitend in het detailscherm. Twee rooktesten strandden hierop voordat de derde het additionalContext-pad aantoonde.

Verder toegevoegd

  • Stand per host met de registratievorm erbij: scrum4me-server gebruikt een wrapper-script met een 0600-envbestand (settings.json is daar 664 en mag het secret niet bevatten), max2 een inline set -a-regel met absolute paden. Die vormen verschillen dus per host — spiegel wat er voor de permission-hook staat in plaats van het voorbeeld uit het runbook over te nemen.
  • De expliciete regel niet activeren na alleen de scriptproef. Dat is op max2 misgegaan: daar bleek de levende proef achteraf te slagen, maar op het moment van aanzetten wist niemand dat.
  • Diagnose kan alleen vanaf scrum4me-server: bij lege stdout + exit 0 is het verschil tussen "er ging nooit een push uit" en "niemand antwoordde" alleen uit hub_approvals te lezen, en die tabel is vanaf max2 niet leesbaar (permission denied voor de s4m-queue-rol, en geen psql).

Verificatie

npm run verify groen (272 bestanden / 2197 tests) en npm run docs groen (223 docs geïndexeerd, alle links geldig).

Documentatie-nalevering van de uitrol van vandaag. Geen code. ## Wat er niet meer klopte `docs/runbooks/hub-permission-hook.md` zei nog *"Stand per 2026-08-14: scrum4me-server = 120, max2 = 0, JP's Mac heeft de hook niet geregistreerd"*. max2 staat sinds vandaag op **300** — JP zette die host aan nadat de AskUserQuestion-brug daar bewezen was. Dat is veilig omdat de docker-workers de hostconfiguratie niet lezen (`HOME=/home/agent`, geen `~/.claude`-mount, geverifieerd met `docker inspect` op alle draaiende worker-containers), en die onderbouwing staat nu bij de regel zelf — anders leest hij als een schending van de waarschuwing twee alinea's verderop. ## Drie dingen die de uitrol zelf opleverde Alle drie in `docs/runbooks/hub-askuserquestion-hook.md`, want ze kosten anders iemand een ronde: 1. **De levende-sessieproef kan niet headless.** In `claude -p` bestaat de ingebouwde `AskUserQuestion`-tool niet (gemeten op 2.1.235) — geen aanroep, geen hook, geen push. Een geslaagde headless run bewijst dus *niets*, en dat is een aantrekkelijke valkuil omdat headless de makkelijkste manier lijkt om een hook te testen. 2. **Een verse sessie is niet nodig.** De hook vuurt binnen een sessie die al liep vóór de registratie — consistent met "uitrol geldt per direct" uit het permission-runbook. 3. **Een tik op een optieknop beantwoordt de approval meteen en laat de melding verdwijnen.** Daarna is er geen gelegenheid meer om een toelichting te typen; dat veld zit uitsluitend in het detailscherm. Twee rooktesten strandden hierop voordat de derde het `additionalContext`-pad aantoonde. ## Verder toegevoegd - **Stand per host** met de registratievorm erbij: `scrum4me-server` gebruikt een wrapper-script met een 0600-envbestand (settings.json is daar 664 en mag het secret niet bevatten), `max2` een inline `set -a`-regel met absolute paden. Die vormen verschillen dus per host — spiegel wat er voor de permission-hook staat in plaats van het voorbeeld uit het runbook over te nemen. - De expliciete regel **niet activeren na alleen de scriptproef**. Dat is op max2 misgegaan: daar bleek de levende proef achteraf te slagen, maar op het moment van aanzetten wist niemand dat. - **Diagnose kan alleen vanaf `scrum4me-server`**: bij lege stdout + exit 0 is het verschil tussen "er ging nooit een push uit" en "niemand antwoordde" alleen uit `hub_approvals` te lezen, en die tabel is vanaf max2 niet leesbaar (`permission denied` voor de s4m-queue-rol, en geen `psql`). ## Verificatie `npm run verify` groen (272 bestanden / 2197 tests) en `npm run docs` groen (223 docs geïndexeerd, alle links geldig).
docs(hub): uitrolstand per host + drie veldbevindingen uit de AskUserQuestion-uitrol
All checks were successful
CI / Lint, Typecheck, Test & Build (pull_request) Successful in 5m23s
CI / Deploy Manual (workflow_dispatch) (pull_request) Has been skipped
CI / Detect deploy-relevant changes (pull_request) Has been skipped
CI / Deploy Preview (PR) (pull_request) Has been skipped
CI / Deploy Production (main) (pull_request) Has been skipped
23b3466e4a
De standregel in het permission-hook-runbook stond nog op 2026-08-14 (max2 = 0)
terwijl max2 vandaag op 300 is gezet, nadat de AskUserQuestion-brug daar bewezen
was. Dat is veilig omdat de docker-workers de hostconfiguratie niet lezen —
geverifieerd met docker inspect op alle draaiende worker-containers.

Drie dingen die de uitrol zelf opleverde, nu in het AskUserQuestion-runbook:

- De levende-sessieproef kan NIET headless: `claude -p` heeft de ingebouwde
  AskUserQuestion-tool niet (2.1.235), dus er wordt niets aangeroepen en er gaat
  geen push uit. Een geslaagde headless run bewijst niets.
- Een verse sessie is niet nodig; de hook vuurt in een sessie die al liep vóór de
  registratie.
- Een tik op een optieknop beantwoordt de approval meteen en laat de melding
  verdwijnen — daarna kun je geen toelichting meer typen. Dat veld zit alleen in
  het detailscherm.

Plus de stand per host (beide op 300/330, verschillende registratievorm) en de
notitie dat hub_approvals alleen vanaf scrum4me-server leesbaar is, wat de
diagnose van een lege hook-uitvoer daar vastpint.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
s4m-codex-reviewer left a comment

APPROVED

Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.

Findings

  • Geen blokkerende of error-severity findings.

Review

De PR is docs-only en actualiseert de hub-runbooks met operationele bevindingen van 2026-08-19. De wijziging aan docs/INDEX.md is consistent met de aangepaste last_updated in docs/runbooks/hub-permission-hook.md.

De nieuwe tekst blijft conform de bestaande productdocs rond hub permission hooks: wait>0 op fleet-hosts blijft expliciet gekoppeld aan worker-isolatie, en de max2-stand wordt met die isolatie onderbouwd. De AskUserQuestion-aanvullingen leggen een headless-testvalkuil en diagnosebeperking vast zonder bestaand gedrag of API-contract te wijzigen.

Tests: niet van toepassing voor deze docs-only wijziging.

# APPROVED Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - Geen blokkerende of error-severity findings. ## Review De PR is docs-only en actualiseert de hub-runbooks met operationele bevindingen van 2026-08-19. De wijziging aan `docs/INDEX.md` is consistent met de aangepaste `last_updated` in `docs/runbooks/hub-permission-hook.md`. De nieuwe tekst blijft conform de bestaande productdocs rond hub permission hooks: `wait>0` op fleet-hosts blijft expliciet gekoppeld aan worker-isolatie, en de max2-stand wordt met die isolatie onderbouwd. De AskUserQuestion-aanvullingen leggen een headless-testvalkuil en diagnosebeperking vast zonder bestaand gedrag of API-contract te wijzigen. Tests: niet van toepassing voor deze docs-only wijziging.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/Scrum4Me!180
No description provided.