OciServe-contractpoort: toets ook de omgekeerde richting (serverroutes die OciDeck nooit aanroept), zoals Keiko #372 #2430

Closed
opened 2026-10-14 18:40:48 +00:00 by brenno · 1 comment
Owner

Wat wil je bereiken

De contractpoort vangt een route die OciDeck aanroept maar die de server verandert of verwijdert. Hij vangt niet het omgekeerde: een route die de server voor OciDeck biedt (of waarvan de spec zegt dat OciDeck hem aanroept) en die nooit wordt aangesloten. Daardoor bleven de onderstaande keten-gaten onzichtbaar terwijl de bijbehorende issues op gesloten stonden.

Wat er nu is (origin/main 5802e9360)

  • test/ociserve_api_drift_test.dart controleert per route die ociserve_gateway*.dart aanroept dat hij in de gepinde spec staat met de velden die OciDeck leest.
  • Keiko heeft sinds #372 ook de omgekeerde poort: tool/check_api_drift.dart rekent elke spec-route die niemand aanroept op, tenzij hij met een reden in _unusedSpecRoutes staat ("Elke nieuwe spec-route die niemand gebruikt staat hier als bewuste keuze, of moet worden aangesloten"). Die lijst telt nu 58 routes en is in feite Keiko's zichtbare achterstand.
  • Voor OciDeck bestaat dat niet. Bij deze audit bleken minstens deze deelnemerroutes onaangeroepen: me/calendar-subscription (POST/DELETE), me/calendar.ics, …/lessons/{id}/opened, auth/ocideck-login, me/avatar (PUT/DELETE), evidence-items (POST/GET), badge-readiness, portfolio-imports (3 routes), …/attempts/{id}/score, certificates en …/pdf, themes, invitation-registration-* en self-register (LibreKAT/Ocideck#2422 t/m LibreKAT/Ocideck#2429).

Gevraagd

  • Definieer het OciDeck-oppervlak: routes met /me/, de deelnemer-eigen routes (participants/{pid}/… die de gekoppelde deelnemer mag lezen), en de publieke registratie- en intakeroutes. Staf-routes (ledenbeheer, planning, beleid, enzovoort) vallen er structureel buiten, net als /me/ bij Keiko.
  • Laat de poort rood worden voor een spec-route in dat oppervlak die OciDeck niet aanroept en die niet met een reden in een unusedSpecRoutes-lijst staat.
  • Zet de huidige gaten er met hun issuenummer als reden in, zodat ze zichtbaar en aftelbaar blijven; haal ze weg zodra ze zijn gebouwd.
  • Werk docs/CHECKS.md ("OciServe contractpoort") bij met de nieuwe regel en de manier om een route bewust uit te zonderen.

Acceptatiecriteria

  • Een nieuwe /me/-route in de pin laat de test falen totdat hij is aangesloten of uitgezonderd.
  • Canary-test: een route die uit de lijst met uitzonderingen wordt gehaald laat de poort falen.
  • Elke uitzondering heeft een reden of issuenummer.

Acceptatiecriteria (algemeen)

  • Nieuwe aanroepen staan in de contractpoort met de velden die OciDeck leest.
  • Nieuwe l10n.d('…')-teksten via make add-l10n (31 talen).
  • make check groen; docs/USER_GUIDE.md, docs/SOURCE_MAP.md en CHANGELOG.md bijgewerkt.

Gerelateerd

Overzicht: brenno/OciServe#659.


Keten-audit van 2026-10-14, getoetst aan OciServe 560f1ba, Keiko 093f679 en OciDeck 5802e9360. Overzicht: brenno/OciServe#659.

## Wat wil je bereiken De contractpoort vangt een route die OciDeck aanroept maar die de server verandert of verwijdert. Hij vangt niet het omgekeerde: een route die de server voor OciDeck biedt (of waarvan de spec zegt dat OciDeck hem aanroept) en die nooit wordt aangesloten. Daardoor bleven de onderstaande keten-gaten onzichtbaar terwijl de bijbehorende issues op gesloten stonden. ## Wat er nu is (origin/main `5802e9360`) - `test/ociserve_api_drift_test.dart` controleert per route die `ociserve_gateway*.dart` aanroept dat hij in de gepinde spec staat met de velden die OciDeck leest. - Keiko heeft sinds #372 ook de omgekeerde poort: `tool/check_api_drift.dart` rekent elke spec-route die niemand aanroept op, tenzij hij met een reden in `_unusedSpecRoutes` staat ("Elke nieuwe spec-route die niemand gebruikt staat hier als bewuste keuze, of moet worden aangesloten"). Die lijst telt nu 58 routes en is in feite Keiko's zichtbare achterstand. - Voor OciDeck bestaat dat niet. Bij deze audit bleken minstens deze deelnemerroutes onaangeroepen: `me/calendar-subscription` (POST/DELETE), `me/calendar.ics`, `…/lessons/{id}/opened`, `auth/ocideck-login`, `me/avatar` (PUT/DELETE), `evidence-items` (POST/GET), `badge-readiness`, `portfolio-imports` (3 routes), `…/attempts/{id}/score`, `certificates` en `…/pdf`, `themes`, `invitation-registration-*` en `self-register` (LibreKAT/Ocideck#2422 t/m LibreKAT/Ocideck#2429). ## Gevraagd - Definieer het OciDeck-oppervlak: routes met `/me/`, de deelnemer-eigen routes (`participants/{pid}/…` die de gekoppelde deelnemer mag lezen), en de publieke registratie- en intakeroutes. Staf-routes (ledenbeheer, planning, beleid, enzovoort) vallen er structureel buiten, net als `/me/` bij Keiko. - Laat de poort rood worden voor een spec-route in dat oppervlak die OciDeck niet aanroept en die niet met een reden in een `unusedSpecRoutes`-lijst staat. - Zet de huidige gaten er met hun issuenummer als reden in, zodat ze zichtbaar en aftelbaar blijven; haal ze weg zodra ze zijn gebouwd. - Werk `docs/CHECKS.md` ("OciServe contractpoort") bij met de nieuwe regel en de manier om een route bewust uit te zonderen. ## Acceptatiecriteria - [ ] Een nieuwe `/me/`-route in de pin laat de test falen totdat hij is aangesloten of uitgezonderd. - [ ] Canary-test: een route die uit de lijst met uitzonderingen wordt gehaald laat de poort falen. - [ ] Elke uitzondering heeft een reden of issuenummer. ## Acceptatiecriteria (algemeen) - [ ] Nieuwe aanroepen staan in de contractpoort met de velden die OciDeck leest. - [ ] Nieuwe `l10n.d('…')`-teksten via `make add-l10n` (31 talen). - [ ] `make check` groen; `docs/USER_GUIDE.md`, `docs/SOURCE_MAP.md` en `CHANGELOG.md` bijgewerkt. ## Gerelateerd Overzicht: brenno/OciServe#659. --- _Keten-audit van 2026-10-14, getoetst aan OciServe `560f1ba`, Keiko `093f679` en OciDeck `5802e9360`. Overzicht: brenno/OciServe#659._
Author
Owner

Gemerged in #2444 (merge-commit 5446218c72). Na het samenvoegen met main is de per-bestand-dekking van de nieuwe provider-, dialoog- en bewijslagen met tests aangevuld; make check, check-secrets en sast zijn groen. #2424 was al gedekt door me/exam-results.

Gemerged in https://pawprint.vigilis.online/LibreKAT/Ocideck/pulls/2444 (merge-commit 5446218c72). Na het samenvoegen met main is de per-bestand-dekking van de nieuwe provider-, dialoog- en bewijslagen met tests aangevuld; make check, check-secrets en sast zijn groen. #2424 was al gedekt door me/exam-results.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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
LibreKAT/Ocideck#2430
No description provided.