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
|
## 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.
|
Development opened after the stable v0.1.2 release.
|
||||||
|
|
||||||
- Made explicit Android synchronization intent authoritative over automatic
|
- Made explicit Android synchronization intent authoritative over automatic
|
||||||
|
|
|
||||||
|
|
@ -746,6 +746,7 @@ Android writes:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
trainlog-sync-request-v1.json
|
trainlog-sync-request-v1.json
|
||||||
|
trainlog-sync-full-generation-request-v1.json
|
||||||
```
|
```
|
||||||
|
|
||||||
The request is replaced through the same direct `Documents/Trainlog` directory
|
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.
|
delivery's stable execution-session identity and retains all provenance.
|
||||||
|
|
||||||
The opt-in full-generation path is operational on the private daily
|
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
|
the production direct-libmtp adapter, correlated manifest/ACK V1 objects, and
|
||||||
persistent peer identities. Controlled USB and private Drive validation proved
|
persistent peer identities. Controlled USB and private Drive validation proved
|
||||||
the complete Web-initiated request, generation, import, publication, and ACK
|
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 |
|
| 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 | `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 -> 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 |
|
| PC agent -> Android | `trainlog-sync-receipt-v1.json` | `trainlog-sync-receipt` v1 |
|
||||||
|
|
||||||
No SQLite file is transferred.
|
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
|
until atomically replaced by matching objects. After both peer ACKs, Android
|
||||||
reports completion directly; it does not enter the legacy receipt wait state.
|
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;
|
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
|
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
|
exact `captured`, `published`, or `waiting_acknowledgement` generation. It may
|
||||||
|
|
|
||||||
|
|
@ -1544,6 +1544,11 @@ fixture's sample draft.
|
||||||
|
|
||||||
## Private full-generation rollout validation
|
## 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
|
The MTP visibility regression suite uses injected clocks and transport
|
||||||
callbacks, with no multi-second sleeps. It covers delayed Android publication,
|
callbacks, with no multi-second sleeps. It covers delayed Android publication,
|
||||||
multiple throttled polls, stale run references, a never-visible generation,
|
multiple throttled polls, stale run references, a never-visible generation,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue