docs(android): section 4 verified on device
save: attempt 1 - GET
save: decrypt+patch in 4519 ms
save: re-encrypt in 23 ms
save: published, new sha 802515d4...
The phone writes to the vault. The 23 ms measure the reused key: the second
derivation was worth the same 4.5 seconds as the first.
Three things are recorded as open rather than left to be rediscovered: the 409
retry is written but has never run, there is no offline editing (the phone
patches the snapshot it just pulled, so Save needs the network - that is the
price of having no merge to write), and only one field is editable.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+28
-5
@@ -387,11 +387,34 @@ d'interface d'édition.
|
||||
gagne par `uuid` sur `updated_at`, tombstones qui propagent les
|
||||
suppressions, et l'arbitrage de résurrection (une entrée modifiée après sa
|
||||
date de suppression survit à la tombstone).
|
||||
5. **L'interface d'édition.** Modifier un champ, marquer l'entrée sale, bumper
|
||||
`updated_at` en UTC (`toISOString` côté JS, `NowUTC` côté Delphi — mélanger
|
||||
heure locale et UTC a déjà décalé l'arbitrage une fois).
|
||||
6. **Le conflit 412** — retirer, refusionner, renvoyer, avec un nombre
|
||||
d'essais borné. Le poste Windows fait exactement cela, en trois essais.
|
||||
5. ~~**L'interface d'édition**~~ — **faite**, éditeur en ligne sur la ligne du
|
||||
mot de passe. `updated_at` est bumpé en UTC par `PMA.VaultPatch`.
|
||||
6. ~~**Le conflit 412**~~ — **écrit**, sous forme de **409** (le code de Gitea),
|
||||
trois essais, en rejouant tirer→patcher→publier. **Jamais éprouvé** : il
|
||||
faudrait publier depuis le poste pendant que le téléphone enregistre.
|
||||
|
||||
### Vérifié sur appareil — 2026-08-17
|
||||
|
||||
```
|
||||
save: attempt 1 - GET
|
||||
save: decrypt+patch in 4519 ms
|
||||
save: re-encrypt in 23 ms
|
||||
save: published, new sha 802515d4...
|
||||
```
|
||||
|
||||
Les 23 ms mesurent l'économie de la clé réutilisée : la seconde dérivation
|
||||
valait les mêmes 4,5 secondes que la première.
|
||||
|
||||
**Ce qui reste ouvert**, par ordre d'importance :
|
||||
|
||||
- le **409** n'a jamais tourné ;
|
||||
- **pas d'édition hors ligne** : le téléphone patche l'instantané qu'il vient
|
||||
de tirer, donc sans réseau *Save* échoue. C'est le prix de ne pas avoir de
|
||||
fusion à écrire. Une file de modifications en attente la ramènerait, avec
|
||||
l'arbitrage qui va avec ;
|
||||
- **un seul champ** est modifiable. `PatchEntryField` prend déjà le nom du
|
||||
champ, donc l'identifiant ou le site coûteraient une ligne ; créer ou
|
||||
supprimer une entrée, en revanche, exige uuid et tombstones.
|
||||
|
||||
### Ce qu'on peut s'épargner
|
||||
|
||||
|
||||
Reference in New Issue
Block a user