fix(ociserve): houd het agendatoken, de les-audit en het thema bij de afspraak #2447

Merged
brenno merged 4 commits from fix/ociserve-keten-nalevering into main 2026-10-15 20:52:08 +00:00
Owner

Samenvatting

#2444 is al gemerged. Drie afspraken uit die keten stonden nog niet in de gelande code:

  • Een agenda-URL die de OciServe-host verlaat wordt geweigerd. Het token blijft op die host, en de foutmelding noemt de URL niet.
  • Een geopende les krijgt één idempotentiesleutel voor de eerste call en de wachtrij-herhaling. Een 4xx komt niet in de wachtrij.
  • Een organisatiethema wordt niet stil overschreven als de ETag ontbreekt of een ster is. If-Match: * blijft de keuze ná een conflict.

De kostenoverlay-test eist niet langer exact nul: de teller loopt op een echte stopwatch en tikt onder een volle suite al een cent door.

Kernwaarden

Geen nieuw bestandsformaat, geen nieuwe afhankelijkheid, geen extra egress. OciServe blijft opt-in. De agenda-weigering vernauwt uitgaand verkeer: het feed-token gaat niet naar een andere host.

Niet gedraaid

make check, make check-secrets en make sast zijn lokaal groen. ZAP/DAST niet: er is geen webserver om te spinnen.

Test

  • make check
  • agenda-link buiten de host faalt en lekt het token niet
  • les-open herhaalt met dezelfde sleutel; 404 blijft uit de wachtrij
  • lege of ster-ETag is geen If-Match
## Samenvatting #2444 is al gemerged. Drie afspraken uit die keten stonden nog niet in de gelande code: - Een agenda-URL die de OciServe-host verlaat wordt geweigerd. Het token blijft op die host, en de foutmelding noemt de URL niet. - Een geopende les krijgt één idempotentiesleutel voor de eerste call en de wachtrij-herhaling. Een 4xx komt niet in de wachtrij. - Een organisatiethema wordt niet stil overschreven als de ETag ontbreekt of een ster is. `If-Match: *` blijft de keuze ná een conflict. De kostenoverlay-test eist niet langer exact nul: de teller loopt op een echte stopwatch en tikt onder een volle suite al een cent door. ## Kernwaarden Geen nieuw bestandsformaat, geen nieuwe afhankelijkheid, geen extra egress. OciServe blijft opt-in. De agenda-weigering vernauwt uitgaand verkeer: het feed-token gaat niet naar een andere host. ## Niet gedraaid `make check`, `make check-secrets` en `make sast` zijn lokaal groen. ZAP/DAST niet: er is geen webserver om te spinnen. ## Test - [x] `make check` - [x] agenda-link buiten de host faalt en lekt het token niet - [x] les-open herhaalt met dezelfde sleutel; 404 blijft uit de wachtrij - [x] lege of ster-ETag is geen If-Match
Het token in de feed-URL is een geheim. Een absolute of scheme-relatieve link van de server mag dat geheim niet naar een andere host sturen, en de foutmelding noemt de URL niet.

Co-authored-by: Cursor <cursoragent@cursor.com>
De eerste audit en de wachtrij-herhaling delen één idempotentiesleutel. Een 4xx is een afwijzing en hoort niet in de wachtrij te blijven.

Co-authored-by: Cursor <cursoragent@cursor.com>
Een ontbrekende ETag of een letterlijke ster is geen If-Match. Overschrijven met een ster blijft de keuze die de gebruiker zelf maakt na een conflict.

Co-authored-by: Cursor <cursoragent@cursor.com>
De teller loopt op een echte stopwatch; onder een volle suite is het bedrag dan al een cent verder terwijl het equivalent er nog gewoon bij staat.

Co-authored-by: Cursor <cursoragent@cursor.com>
brenno merged commit d191e3d0d5 into main 2026-10-15 20:52:07 +00:00
brenno deleted branch fix/ociserve-keten-nalevering 2026-10-15 20:52:11 +00:00
Sign in to join this conversation.
No description provided.