docs(sync): document decoupled generation admission
This commit is contained in:
parent
ab3986200e
commit
0262433615
5 changed files with 21 additions and 2 deletions
|
|
@ -2,6 +2,13 @@
|
|||
|
||||
## Unreleased — 0.1.3
|
||||
|
||||
- Decoupled the Android full-generation request from the strict legacy V3
|
||||
compatibility signal. One explicit intent now publishes the dedicated
|
||||
`trainlog-sync-full-generation-request-v1.json` channel first; the legacy
|
||||
request is published with the same identity only after a fresh V3 snapshot
|
||||
succeeds. The desktop daemon prioritizes this channel and durably
|
||||
deduplicates a bounded set of request identities across both channels.
|
||||
|
||||
Development opened after the stable v0.1.2 release.
|
||||
|
||||
- Made explicit Android synchronization intent authoritative over automatic
|
||||
|
|
|
|||
|
|
@ -746,6 +746,7 @@ Android writes:
|
|||
|
||||
```text
|
||||
trainlog-sync-request-v1.json
|
||||
trainlog-sync-full-generation-request-v1.json
|
||||
```
|
||||
|
||||
The request is replaced through the same direct `Documents/Trainlog` directory
|
||||
|
|
|
|||
|
|
@ -47,7 +47,11 @@ Completed history hides the active preparation exclusively through the
|
|||
delivery's stable execution-session identity and retains all provenance.
|
||||
|
||||
The opt-in full-generation path is operational on the private daily
|
||||
installation. The loopback Web control and foreground Android coordinator use
|
||||
installation. Android explicit synchronization uses a dedicated coordination
|
||||
filename carrying the unchanged request-v1 payload. Legacy V3 signalling is
|
||||
additive and occurs only after a fresh strict V3 snapshot succeeds; daemon
|
||||
request identities are deduplicated across both bounded channels. The loopback
|
||||
Web control and foreground Android coordinator use
|
||||
the production direct-libmtp adapter, correlated manifest/ACK V1 objects, and
|
||||
persistent peer identities. Controlled USB and private Drive validation proved
|
||||
the complete Web-initiated request, generation, import, publication, and ACK
|
||||
|
|
|
|||
|
|
@ -185,6 +185,7 @@ does not publish to it or let it override an artifact in the new endpoint.
|
|||
| PC -> Android | `programs-v1.json` | optional staged `trainlog-programs` v1 companion: full nondeleted snapshot plus unacknowledged deletion tombstones |
|
||||
| Android -> PC | `program-executions-v1.json` | optional `trainlog-program-executions` v1 companion: stable in-progress/completed provenance |
|
||||
| Android -> PC agent | `trainlog-sync-request-v1.json` | `trainlog-sync-request` v1 |
|
||||
| Android -> full-generation daemon | `trainlog-sync-full-generation-request-v1.json` | `trainlog-sync-request` v1 |
|
||||
| PC agent -> Android | `trainlog-sync-receipt-v1.json` | `trainlog-sync-receipt` v1 |
|
||||
|
||||
No SQLite file is transferred.
|
||||
|
|
@ -917,7 +918,8 @@ for its ACK). Objects retained from an interrupted conversation are ignored
|
|||
until atomically replaced by matching objects. After both peer ACKs, Android
|
||||
reports completion directly; it does not enter the legacy receipt wait state.
|
||||
|
||||
The peer publication precedes one fresh `trainlog-sync-request-v1` signal on
|
||||
The peer publication precedes one fresh
|
||||
`trainlog-sync-full-generation-request-v1` signal on
|
||||
every explicit Android attempt. This wakes the existing user-session daemon;
|
||||
it is not an ACK and does not alter generation identity. A retry may resume an
|
||||
exact `captured`, `published`, or `waiting_acknowledgement` generation. It may
|
||||
|
|
|
|||
|
|
@ -1544,6 +1544,11 @@ fixture's sample draft.
|
|||
|
||||
## Private full-generation rollout validation
|
||||
|
||||
Routing regressions cover a strict V3 refusal in the presence of causal
|
||||
deletions, publication of the dedicated full-generation request before legacy
|
||||
compatibility, same-identity dual-channel deduplication, full-generation
|
||||
priority over stale legacy requests, and bounded durable seen-request state.
|
||||
|
||||
The MTP visibility regression suite uses injected clocks and transport
|
||||
callbacks, with no multi-second sleeps. It covers delayed Android publication,
|
||||
multiple throttled polls, stale run references, a never-visible generation,
|
||||
|
|
|
|||
Loading…
Reference in a new issue