Herontwerp formulierintake als optionele OciServe Managed Intake #2259

Closed
opened 2026-10-04 12:10:29 +00:00 by brenno · 0 comments
Owner

Aanleiding

De huidige intake-ontwerpen gaan uit van een afzonderlijke, blinde OciIntake-server die alleen versleutelde bytes ziet. Dat was geen oorspronkelijke productbelofte. Het verhindert bovendien de gewenste eenvoudige gebruikersreis: een respondent verifieert een mailbox, stuurt optioneel in, ontvangt een terugkeerlink en kan later met een verse code ophalen of corrigeren wanneer dat is toegestaan.

Dit issue vervangt die richting door OciServe Managed Intake. Het is de ontwerp- en productpoort vóór nieuwe implementatie.

Upstream contract: brenno/OciServe#629

Productuitgangspunten

  • Een formulier wordt lokaal in OciDeck als gewone Markdown gemaakt en kan volledig lokaal worden ingevuld.
  • Insturen naar OciServe is optioneel. Lokaal opslaan/exporteren blijft altijd beschikbaar en begrijpelijk.
  • Publiceren naar OciServe maakt een onveranderlijke snapshot; het lokale bestand blijft de bron.
  • OciServe is verwerker en kan de inhoud technisch verwerken. OciDeck claimt niet dat de server plaintext cryptografisch nooit kan lezen.
  • Respondenten hebben geen OIDC-account nodig.
  • Een e-mailcode bewijst tijdelijk bezit van de mailbox; hij is geen database-id, blijvend wachtwoord of encryptiesleutel.
  • Een terugkeerlink wijst naar precies één inzending. Ophalen, corrigeren en intrekken vragen telkens een verse code.
  • Definitief ingestuurde bytes worden niet overschreven. Een toegestane correctie maakt een nieuwe revisie.
  • De geverifieerde mailbox is transport-/toegangsmetadata. Een e-mailadres dat als antwoord in het formulier staat, is gewone formulierinhoud en hoeft niet gelijk te zijn.

Te ontwerpen gebruikersreizen

  1. Maker publiceert een versie naar OciServe en ontvangt een deelbare uitnodiging.
  2. Respondent opent die uitnodiging, kan lokaal invullen en kiest zelf of die instuurt.
  3. Bij insturen vraagt OciServe een e-mailadres en verstuurt een eenmalige code.
  4. Na verificatie kan de respondent concept of definitieve inzending uploaden en ontvangt een terugkeerlink per mail.
  5. Later openen van die link vraagt een nieuwe code voordat inhoud beschikbaar komt.
  6. Als een organisator een correctieronde heeft geopend, wordt lokaal bewerken aangeboden en wordt definitief een nieuwe revisie ingestuurd.
  7. Zonder netwerk, bij weigering of bij storing blijven lokaal opslaan en de afzonderlijke bestandsroute bruikbaar.

Formaatbesluit

Een .ocideck is nu een presentatie-/projectpakket. Formulieren zijn .md; inzendingen zijn .zip en optioneel .zip.age. Noem een formulierdraft daarom niet terloops .ocideck.

Dit ontwerp moet kiezen tussen:

  • bestaande leesbare Markdown plus inzendpakket behouden (voorkeur); of
  • een nieuwe extensie alleen na een afzonderlijk, expliciet formaatbesluit met migratie en uitwisselbaarheidstoets.

De bestaande age-verzegelde route kan als optionele offline overdrachtsroute blijven bestaan, maar niet als authenticatie- of sleutelmodel van OciServe.

Op te leveren documentatie

  • Herschrijf docs/design/FORM_INTAKE.md op deze richting.
  • Markeer/verwijder INTAKE_PROTOCOL.md en INTAKE_SERVER_REQUIREMENTS.md als oude, onuitgebrachte OciIntake-contracten.
  • Leg toestanden, rechten, foutpaden, revisies, retentie en gegevensstromen vast.
  • Werk privacy-, beveiligings-, gebruikers- en toegankelijkheidsdocumentatie bij.
  • Maak expliciet welke handelingen lokaal zijn, welke OciServe gebruiken en welke gegevens daarbij de machine verlaten.

Acceptatiecriteria

  • “Niet insturen” is een volwaardige, geteste gebruikersuitkomst zonder verborgen functieverlies.
  • Geen scherm of document belooft dat OciServe de inhoud cryptografisch nooit kan lezen.
  • Publicatie, respondentverificatie, concept, definitief, hervatten, correctie, intrekken en lokale uitweg zijn eenduidig beschreven.
  • Link, locator, e-mailcode en servergrant zijn aparte begrippen.
  • Definitieve revisies zijn immutable en blijven aan exact één formulierversie gekoppeld.
  • Mailboxmetadata wordt niet gelijkgesteld aan een formulierantwoord.
  • Offline .zip.age en Managed Intake hebben verschillende namen, sleutels en vertrouwensmodellen.
  • Het formaatbesluit beschermt Markdown-uitwisselbaarheid en introduceert niet stilzwijgend een nieuw .ocideck-formaat.
  • Ontwerp sluit aan op het definitieve OciServe OpenAPI-contract en beschrijft migratie vanaf de onuitgebrachte oude route.

Afbakening

Dit issue bevat geen implementatie. Het moet eerst worden geaccepteerd; opruimen van het onuitgebrachte protocol en bouwen van de nieuwe reis volgen in afzonderlijke issues.

Uitvoeringskaart

  • #2263 — trek PR’s #2254–#2258 gecontroleerd terug
  • #2261 — scheid en herpositioneer de offline age-route
  • #2262 — pin en bewaak het definitieve OciServe-contract
  • #2260 — bouw de nieuwe optionele gebruikersreis

Volgorde: #2259 → (#2263, #2261); OciServe #629 gemergd → #2262; (#2263, #2262 en benodigde OciServe-uitvoering) → #2260.

## Aanleiding De huidige intake-ontwerpen gaan uit van een afzonderlijke, blinde OciIntake-server die alleen versleutelde bytes ziet. Dat was geen oorspronkelijke productbelofte. Het verhindert bovendien de gewenste eenvoudige gebruikersreis: een respondent verifieert een mailbox, stuurt optioneel in, ontvangt een terugkeerlink en kan later met een verse code ophalen of corrigeren wanneer dat is toegestaan. Dit issue vervangt die richting door **OciServe Managed Intake**. Het is de ontwerp- en productpoort vóór nieuwe implementatie. Upstream contract: https://pawprint.vigilis.online/brenno/OciServe/issues/629 ## Productuitgangspunten - Een formulier wordt lokaal in OciDeck als gewone Markdown gemaakt en kan volledig lokaal worden ingevuld. - Insturen naar OciServe is optioneel. Lokaal opslaan/exporteren blijft altijd beschikbaar en begrijpelijk. - Publiceren naar OciServe maakt een onveranderlijke snapshot; het lokale bestand blijft de bron. - OciServe is verwerker en kan de inhoud technisch verwerken. OciDeck claimt niet dat de server plaintext cryptografisch nooit kan lezen. - Respondenten hebben geen OIDC-account nodig. - Een e-mailcode bewijst tijdelijk bezit van de mailbox; hij is geen database-id, blijvend wachtwoord of encryptiesleutel. - Een terugkeerlink wijst naar precies één inzending. Ophalen, corrigeren en intrekken vragen telkens een verse code. - Definitief ingestuurde bytes worden niet overschreven. Een toegestane correctie maakt een nieuwe revisie. - De geverifieerde mailbox is transport-/toegangsmetadata. Een e-mailadres dat als antwoord in het formulier staat, is gewone formulierinhoud en hoeft niet gelijk te zijn. ## Te ontwerpen gebruikersreizen 1. Maker publiceert een versie naar OciServe en ontvangt een deelbare uitnodiging. 2. Respondent opent die uitnodiging, kan lokaal invullen en kiest zelf of die instuurt. 3. Bij insturen vraagt OciServe een e-mailadres en verstuurt een eenmalige code. 4. Na verificatie kan de respondent concept of definitieve inzending uploaden en ontvangt een terugkeerlink per mail. 5. Later openen van die link vraagt een nieuwe code voordat inhoud beschikbaar komt. 6. Als een organisator een correctieronde heeft geopend, wordt lokaal bewerken aangeboden en wordt definitief een nieuwe revisie ingestuurd. 7. Zonder netwerk, bij weigering of bij storing blijven lokaal opslaan en de afzonderlijke bestandsroute bruikbaar. ## Formaatbesluit Een `.ocideck` is nu een presentatie-/projectpakket. Formulieren zijn `.md`; inzendingen zijn `.zip` en optioneel `.zip.age`. Noem een formulierdraft daarom niet terloops `.ocideck`. Dit ontwerp moet kiezen tussen: - bestaande leesbare Markdown plus inzendpakket behouden (voorkeur); of - een nieuwe extensie alleen na een afzonderlijk, expliciet formaatbesluit met migratie en uitwisselbaarheidstoets. De bestaande age-verzegelde route kan als optionele **offline overdrachtsroute** blijven bestaan, maar niet als authenticatie- of sleutelmodel van OciServe. ## Op te leveren documentatie - Herschrijf `docs/design/FORM_INTAKE.md` op deze richting. - Markeer/verwijder `INTAKE_PROTOCOL.md` en `INTAKE_SERVER_REQUIREMENTS.md` als oude, onuitgebrachte OciIntake-contracten. - Leg toestanden, rechten, foutpaden, revisies, retentie en gegevensstromen vast. - Werk privacy-, beveiligings-, gebruikers- en toegankelijkheidsdocumentatie bij. - Maak expliciet welke handelingen lokaal zijn, welke OciServe gebruiken en welke gegevens daarbij de machine verlaten. ## Acceptatiecriteria - [ ] “Niet insturen” is een volwaardige, geteste gebruikersuitkomst zonder verborgen functieverlies. - [ ] Geen scherm of document belooft dat OciServe de inhoud cryptografisch nooit kan lezen. - [ ] Publicatie, respondentverificatie, concept, definitief, hervatten, correctie, intrekken en lokale uitweg zijn eenduidig beschreven. - [ ] Link, locator, e-mailcode en servergrant zijn aparte begrippen. - [ ] Definitieve revisies zijn immutable en blijven aan exact één formulierversie gekoppeld. - [ ] Mailboxmetadata wordt niet gelijkgesteld aan een formulierantwoord. - [ ] Offline `.zip.age` en Managed Intake hebben verschillende namen, sleutels en vertrouwensmodellen. - [ ] Het formaatbesluit beschermt Markdown-uitwisselbaarheid en introduceert niet stilzwijgend een nieuw `.ocideck`-formaat. - [ ] Ontwerp sluit aan op het definitieve OciServe OpenAPI-contract en beschrijft migratie vanaf de onuitgebrachte oude route. ## Afbakening Dit issue bevat geen implementatie. Het moet eerst worden geaccepteerd; opruimen van het onuitgebrachte protocol en bouwen van de nieuwe reis volgen in afzonderlijke issues. ## Uitvoeringskaart - #2263 — trek PR’s #2254–#2258 gecontroleerd terug - #2261 — scheid en herpositioneer de offline age-route - #2262 — pin en bewaak het definitieve OciServe-contract - #2260 — bouw de nieuwe optionele gebruikersreis Volgorde: #2259 → (#2263, #2261); OciServe #629 gemergd → #2262; (#2263, #2262 en benodigde OciServe-uitvoering) → #2260.
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#2259
No description provided.