Samenwerken: elf dia-velden komen bij invoegen wel over, bij bewerken niet #1808

Closed
opened 2026-08-27 13:23:25 +00:00 by brenno · 0 comments
Owner

Wat er misgaat

Elf velden hebben precies de vorm van imageZoom uit #1803: slideToJson draagt
ze wél, SlideField niet. Een nieuwe dia komt dus compleet aan, maar het
wijzigen van zo'n veld op een bestaande dia bereikt de ander nooit — zonder
melding, zonder conflict.

aiAssistedFields · bulletMarkerOverride · findingRole ·
improvementLayout · privacy · quality · timelineAnimationMs ·
timelineCurrentIndex · timelineLayout · timelineReveal · viewLimit

Ze staan sinds #1803 op de schuldlijst unsyncedBaseline in
tool/check_collab_field_parity.dart, dus ze zijn geteld en zichtbaar — maar
nog niet beslist.

Waarom dit één issue is en geen elf

Ze delen oorzaak, vorm en reparatie: een regel in SlideField, een regel in
slideFieldValue, een regel in applyOp, een regel in de codec-soortenkaart,
een testgeval. Elf losse issues zouden de lijst vullen zonder één extra inzicht.
De schuldlijst is de teller; dit issue is de plek waar per veld de keuze
vastligt.

De vraag per veld is niet "kunnen we het" maar "hoort het mee te reizen"

Dat verschilt echt:

  • timelineLayout, timelineReveal, timelineAnimationMs — geautoriseerde
    instellingen van de dia. Horen vrijwel zeker mee.
  • bulletMarkerOverride, improvementLayout — idem, opmaakkeuzes van de auteur.
  • viewLimit — een niet-destructief weergavevenster dat in het .md staat.
    Waarschijnlijk mee, maar het raakt wat de zaal ziet, dus het verdient een
    bewuste blik.
  • privacy, quality — dispositie-velden. Hier is het geen vanzelfsprekendheid:
    de één laat een bevinding accepteren en de ander niet, en de vraag is of dat
    besluit van de auteur of van het document is.
  • findingRole, aiAssistedFields — attestatie-achtige velden; wie schreef wat.
    Mogelijk juist niet klakkeloos overschrijven.
  • timelineCurrentIndex — waarschijnlijk presentatiestand, geen inhoud. Kan best
    een bewuste uitsluiting worden.

Voorstel

Per veld één beslissing, en die beslissing vastleggen waar hij te lezen is:
synchroniseren (met testgeval), óf verplaatsen naar deliberatelyNotSynced mét
de reden ernaast. De schuldlijst hoort daarna leeg of bijna leeg te zijn.

Elke gesynchroniseerde toevoeging krijgt dezelfde regressievorm als #1803: lees
de wáárde na toepassing, niet of een hervergelijking leeg is — zie #1811 voor
waarom die hervergelijking hier niets bewijst.

Herkomst

#1803. De poort make check-collab-field-parity bracht de hele oppervlakte in
kaart; dit is de helft die wél in de codec zit. De andere zeven, die er helemaal
niet in zitten, staan in #1807.

**Wat er misgaat** Elf velden hebben precies de vorm van `imageZoom` uit #1803: `slideToJson` draagt ze wél, `SlideField` niet. Een **nieuwe** dia komt dus compleet aan, maar het **wijzigen** van zo'n veld op een bestaande dia bereikt de ander nooit — zonder melding, zonder conflict. `aiAssistedFields` · `bulletMarkerOverride` · `findingRole` · `improvementLayout` · `privacy` · `quality` · `timelineAnimationMs` · `timelineCurrentIndex` · `timelineLayout` · `timelineReveal` · `viewLimit` Ze staan sinds #1803 op de schuldlijst `unsyncedBaseline` in `tool/check_collab_field_parity.dart`, dus ze zijn geteld en zichtbaar — maar nog niet beslist. **Waarom dit één issue is en geen elf** Ze delen oorzaak, vorm en reparatie: een regel in `SlideField`, een regel in `slideFieldValue`, een regel in `applyOp`, een regel in de codec-soortenkaart, een testgeval. Elf losse issues zouden de lijst vullen zonder één extra inzicht. De schuldlijst is de teller; dit issue is de plek waar per veld de keuze vastligt. **De vraag per veld is niet "kunnen we het" maar "hoort het mee te reizen"** Dat verschilt echt: - `timelineLayout`, `timelineReveal`, `timelineAnimationMs` — geautoriseerde instellingen van de dia. Horen vrijwel zeker mee. - `bulletMarkerOverride`, `improvementLayout` — idem, opmaakkeuzes van de auteur. - `viewLimit` — een niet-destructief weergavevenster dat in het `.md` staat. Waarschijnlijk mee, maar het raakt wat de zaal ziet, dus het verdient een bewuste blik. - `privacy`, `quality` — dispositie-velden. Hier is het geen vanzelfsprekendheid: de één laat een bevinding accepteren en de ander niet, en de vraag is of dat besluit van de auteur of van het document is. - `findingRole`, `aiAssistedFields` — attestatie-achtige velden; wie schreef wat. Mogelijk juist *niet* klakkeloos overschrijven. - `timelineCurrentIndex` — waarschijnlijk presentatiestand, geen inhoud. Kan best een bewuste uitsluiting worden. **Voorstel** Per veld één beslissing, en die beslissing vastleggen waar hij te lezen is: synchroniseren (met testgeval), óf verplaatsen naar `deliberatelyNotSynced` mét de reden ernaast. De schuldlijst hoort daarna leeg of bijna leeg te zijn. Elke gesynchroniseerde toevoeging krijgt dezelfde regressievorm als #1803: lees de wáárde na toepassing, niet of een hervergelijking leeg is — zie #1811 voor waarom die hervergelijking hier niets bewijst. **Herkomst** #1803. De poort `make check-collab-field-parity` bracht de hele oppervlakte in kaart; dit is de helft die wél in de codec zit. De andere zeven, die er helemaal niet in zitten, staan in #1807.
brenno 2026-08-27 20:29:18 +00:00
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#1808
No description provided.