OciServe-bewijs: 'Portefeuille koppelen' is hardgecodeerd 'niet beschikbaar' terwijl de server de importroutes heeft #2423

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

Wat wil je bereiken

Een cursist haalt bestaande badges en diploma's binnen (koppelen aan een portefeuille of een publieke verificatielink plakken), kiest zelf wat hij deelt, en dat wordt bewijs bij een badge. #2040 is gesloten; de server-kant waar het op wachtte (OciServe #524) staat er.

Wat mist er nu (origin/main 5802e9360)

  • lib/widgets/dialogs/ociserve_evidence.dart:463-482 bouwt een PortfolioConnection(state: PortfolioConnectionState.unavailable) en toont OciServePortfolioLink dus altijd als "nog niet beschikbaar". De docstring in ociserve_portfolio_link.dart zegt: "OciServe#524 definieert het server-protocol. Tot die tijd …".
  • Geen aanroep van portfolio-imports in de gateway.

Contract (OciServe 560f1ba)

De server haalt zelf niets op bij een badgeplatform; hij accepteert wat de client heeft gevonden. OciDeck moet dus de ophaalstap doen (koppelen of publieke link), zonder dat er een lookup op e-mailadres is — dat blijft uitgesloten (docs/EVIDENCE.md §6.3).

  1. POST …/participants/{pid}/portfolio-imports (Idempotency-Key) body {items:[{issuer_id, credential_id?, title, issued_at?, valid_until?, raw_credential?}]} → 201 {import_id, status, item_count}. Dit landt in een tijdelijke import-sessie in het eigen beeld van de cursist; er wordt nog niets gedeeld.
  2. GET …/portfolio-imports/{import_id} → {import_id, status, items:[…]} voor het keuzescherm.
  3. POST …/portfolio-imports/{import_id}/select body {selected_item_ids:[uuid…], evidence_type_id, evidence_type_version_id} → de gekozen items worden bewijsstukken. Een aanroep per bewijssoort.

Gevraagd

  • Vervang de hardgecodeerde status door de echte toestand: niet verbonden, ophalen, kiezen, klaar.
  • Houd de ontwerpregels van #2040: eerst alles ophalen, dan pas zelf kiezen wat je deelt (minimalisatie); nooit zoeken op e-mailadres; de cursist ziet wat hij deelt en kan het intrekken.
  • Het ophalen bij een extern platform is egress naar een derde: leg per platform vast welke gegevens de verbinding raakt, vraag bewust om verbinding, en maak de lokale ervaring nergens afhankelijk van het slagen.
  • Bij de keuze: de bewijssoort volgt uit de eis (zie LibreKAT/Ocideck#2422); toon bij een mismatch een begrijpelijke melding in plaats van de servercode.

Toets op de kernwaarden

Alleen actief voor wie bewust met een OciServe is verbonden (ongewijzigd); zonder server blijft OciDeck volledig lokaal werken. Geen telemetrie, geen wijziging van het bestandsformaat, geen nieuwe verplichte afhankelijkheid. De route staat al in de gepinde speckopie (test/fixtures/ociserve_openapi.yaml, OciServe 45d9a87), dus de pin hoeft niet omhoog; registreer de nieuwe aanroepen wel in test/ociserve_api_drift_test.dart (de contractpoort, #2042).

Acceptatiecriteria

  • Het keuzescherm toont alle opgehaalde items en deelt alleen wat de cursist aanvinkt (test: niet-aangevinkte items komen niet in selected_item_ids).
  • Een import die wordt afgebroken laat niets achter in het dossier.
  • Per ondersteund platform staat in docs/PRIVACY.md welke gegevens worden opgehaald en waarheen.

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

Aanleverpad: LibreKAT/Ocideck#2422. 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 Een cursist haalt bestaande badges en diploma's binnen (koppelen aan een portefeuille of een publieke verificatielink plakken), kiest zelf wat hij deelt, en dat wordt bewijs bij een badge. #2040 is gesloten; de server-kant waar het op wachtte (OciServe #524) staat er. ## Wat mist er nu (origin/main `5802e9360`) - `lib/widgets/dialogs/ociserve_evidence.dart:463-482` bouwt een `PortfolioConnection(state: PortfolioConnectionState.unavailable)` en toont `OciServePortfolioLink` dus altijd als "nog niet beschikbaar". De docstring in `ociserve_portfolio_link.dart` zegt: "OciServe#524 definieert het server-protocol. Tot die tijd …". - Geen aanroep van `portfolio-imports` in de gateway. ## Contract (OciServe `560f1ba`) De server haalt **zelf niets** op bij een badgeplatform; hij accepteert wat de client heeft gevonden. OciDeck moet dus de ophaalstap doen (koppelen of publieke link), zonder dat er een lookup op e-mailadres is — dat blijft uitgesloten (`docs/EVIDENCE.md` §6.3). 1. `POST …/participants/{pid}/portfolio-imports` (`Idempotency-Key`) body `{items:[{issuer_id, credential_id?, title, issued_at?, valid_until?, raw_credential?}]}` → 201 `{import_id, status, item_count}`. Dit landt in een tijdelijke import-sessie in het eigen beeld van de cursist; er wordt nog niets gedeeld. 2. `GET …/portfolio-imports/{import_id}` → `{import_id, status, items:[…]}` voor het keuzescherm. 3. `POST …/portfolio-imports/{import_id}/select` body `{selected_item_ids:[uuid…], evidence_type_id, evidence_type_version_id}` → de gekozen items worden bewijsstukken. Een aanroep per bewijssoort. ## Gevraagd - Vervang de hardgecodeerde status door de echte toestand: niet verbonden, ophalen, kiezen, klaar. - Houd de ontwerpregels van #2040: eerst alles ophalen, dan pas zelf kiezen wat je deelt (minimalisatie); nooit zoeken op e-mailadres; de cursist ziet wat hij deelt en kan het intrekken. - Het ophalen bij een extern platform is egress naar een derde: leg per platform vast welke gegevens de verbinding raakt, vraag bewust om verbinding, en maak de lokale ervaring nergens afhankelijk van het slagen. - Bij de keuze: de bewijssoort volgt uit de eis (zie LibreKAT/Ocideck#2422); toon bij een mismatch een begrijpelijke melding in plaats van de servercode. ## Toets op de kernwaarden Alleen actief voor wie bewust met een OciServe is verbonden (ongewijzigd); zonder server blijft OciDeck volledig lokaal werken. Geen telemetrie, geen wijziging van het bestandsformaat, geen nieuwe verplichte afhankelijkheid. De route staat al in de gepinde speckopie (`test/fixtures/ociserve_openapi.yaml`, OciServe `45d9a87`), dus de pin hoeft niet omhoog; registreer de nieuwe aanroepen wel in `test/ociserve_api_drift_test.dart` (de contractpoort, #2042). ## Acceptatiecriteria - [ ] Het keuzescherm toont alle opgehaalde items en deelt alleen wat de cursist aanvinkt (test: niet-aangevinkte items komen niet in `selected_item_ids`). - [ ] Een import die wordt afgebroken laat niets achter in het dossier. - [ ] Per ondersteund platform staat in `docs/PRIVACY.md` welke gegevens worden opgehaald en waarheen. ## 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 Aanleverpad: LibreKAT/Ocideck#2422. 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#2423
No description provided.