docs: record Programs Android rollout
This commit is contained in:
parent
f431b6ec9c
commit
db722588f8
5 changed files with 93 additions and 27 deletions
14
CHANGELOG.md
14
CHANGELOG.md
|
|
@ -2,8 +2,9 @@
|
|||
|
||||
## Unreleased — 0.1.2
|
||||
|
||||
- Implemented `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1` without
|
||||
deployment. Desktop schema v26 adds terminal logical Program deletion with
|
||||
- Completed the private coordinated deployment of
|
||||
`TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1`. Desktop schema v26 adds
|
||||
terminal logical Program deletion with
|
||||
request/deleted revisions, durable response replay, generation linkage and
|
||||
acknowledgment state; source definitions and derived preparations remain,
|
||||
while deleted Programs cannot resurrect or prepare. The responsive Sessions
|
||||
|
|
@ -14,9 +15,12 @@
|
|||
`trainlog-programs` V1 (`programs-v1.json`) publishes nondeleted Programs and
|
||||
unacknowledged tombstones under capability `programs-v1`; it changes neither
|
||||
`TRAINLOG_FORMAT_V1`, mobile V3, catalog exchange, nor preparations. Real
|
||||
Firefox Programs screenshots are recorded in
|
||||
`docs/reviews/programs_presentation_android_delete_v1_evidence.md`;
|
||||
deployment remains pending.
|
||||
Firefox Programs screenshots and real rollout evidence are recorded in
|
||||
`docs/reviews/programs_presentation_android_delete_v1_evidence.md`. The
|
||||
signed private Android update advanced versionCode 15 to 16 without
|
||||
uninstall or data clearing. A real disposable Program tombstone was consumed
|
||||
and acknowledged, and a final correlated exchange after component restart
|
||||
proved persistence, idempotence, and non-resurrection.
|
||||
|
||||
- Completed the private grouped rollout of Web Sessions deletion and Program
|
||||
V1 from desktop source `a0fc48f082b76dba2ae3a56fceb492169de89f89`.
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ over direct MTP; it never copies SQLite database files between devices.
|
|||
|---|---|
|
||||
| Android | Capture and quickly correct sets, repetitions, loads, durations, and continuous activities; reorder active and completed-session occurrences; capture feedback, J+1 follow-ups, body measurements, and AI proposals; trigger sync; show quick summaries. |
|
||||
| Desktop TUI | Administer, inspect, maintain, import/export, correct canonical history, and provide technical tools. |
|
||||
| Local Web (0.1.2 development) | Display the Dashboard and the implemented Sessions inventory, deletion, manual preparation, Android-delivery, and embedded Programs workflow through typed Trainlog Core/API boundaries. Programs has responsive detail and terminal logical deletion; its latest Android projection companion is implemented but not deployed. Analyse, the standalone Programmes route, and Exercises remain placeholders. |
|
||||
| Local Web (0.1.2 development) | Display the Dashboard and the implemented Sessions inventory, deletion, manual preparation, Android-delivery, and embedded Programs workflow through typed Trainlog Core/API boundaries. Programs has responsive detail, terminal logical deletion, and a privately deployed read-only Android projection. Analyse, the standalone Programmes route, and Exercises remain placeholders. |
|
||||
|
||||
No interface reconstructs business truth from SQLite tables. The local Web is
|
||||
a sibling adapter, not an extension of the TUI. On `main`, its loopback-only
|
||||
|
|
@ -335,10 +335,9 @@ As of 2026-09-18:
|
|||
`WEB_DASHBOARD_V1=PASS/FROZEN` and `TRAINLOG_WEB_SESSIONS_V1=PASS/FROZEN`;
|
||||
Programs is implemented inside Sessions; Analyse, Exercises, and the
|
||||
standalone top-level Programmes route remain placeholders;
|
||||
- `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1=IMPLEMENTED_VALIDATED`:
|
||||
desktop Programs presentation/logical deletion and the Android read-only
|
||||
projection are implemented and have real Firefox screenshot evidence, but
|
||||
deployment remains pending;
|
||||
- `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1=PASS`: the coordinated
|
||||
private desktop/Android deployment, real Firefox presentation, correlated
|
||||
`programs-v1` deletion ACK, restart/replay, and non-resurrection checks pass;
|
||||
- `TRAINLOG_WEB_V1=CONTRACT_FROZEN / IMPLEMENTATION_STARTED`;
|
||||
- `TRAINLOG_SYNC_GENERATION_ACK_V1=PASS/FROZEN` through explicit staged
|
||||
services; automatic synchronization still selects V3. The trusted local
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ The opt-in full-generation path is operational on the private daily
|
|||
installation. The loopback Web control and foreground Android coordinator use
|
||||
the production direct-libmtp adapter, correlated manifest/ACK V1 objects, and
|
||||
persistent peer identities. The latest controlled rollout verified real
|
||||
desktop and Android backups, restoration and migration on copies, desktop
|
||||
schema v24 to v25, and an in-place private Android update from versionCode 14
|
||||
to 15. The installed APK remains `com.labfytools.trainlog` 0.1.2, is
|
||||
desktop and Android backups, populated-copy migration, desktop schema v25 to
|
||||
v26, and an in-place private Android update from versionCode 15 to 16. The
|
||||
installed APK remains `com.labfytools.trainlog` 0.1.2, is
|
||||
non-debuggable, and retains certificate SHA-256
|
||||
`aa56c97f2781a0d01f007f4444c3970deb58ad8327ca3da7b0b90f37dbe2ad25`.
|
||||
One preparation created explicitly as disposable was withdrawn through the Web
|
||||
|
|
@ -81,7 +81,7 @@ parallel implementation of its rules.
|
|||
| Web Dashboard V1 | `WEB_DASHBOARD_V1=PASS/FROZEN` |
|
||||
| Web Sessions V1 | `TRAINLOG_WEB_SESSIONS_V1=PASS/FROZEN` (controlled desktop/Android deployment validated) |
|
||||
| Web Sessions deletion and Programs V1 | `TRAINLOG_WEB_SESSIONS_DELETE_AND_PROGRAMS_V1=PASS` (private grouped rollout validated) |
|
||||
| Programs presentation, Android projection, and deletion | `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1=IMPLEMENTED_VALIDATED` (not deployed; real Firefox Programs screenshots recorded) |
|
||||
| Programs presentation, Android projection, and deletion | `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1=PASS` (private coordinated deployment and restart/replay validated) |
|
||||
| Sync orchestrator/report V1 | `TRAINLOG_SYNC_ORCHESTRATOR_REPORT_V1=PASS/FROZEN` |
|
||||
| Web sync API V1 | `TRAINLOG_WEB_SYNC_API_V1=PASS/FROZEN` |
|
||||
| Web sync button V1 | `TRAINLOG_WEB_SYNC_BUTTON_V1=PASS/FROZEN` |
|
||||
|
|
@ -272,6 +272,20 @@ snapshot plus unacknowledged tombstones under capability `programs-v1`; a
|
|||
durable correlated ACK records acknowledgment. It changes neither
|
||||
`TRAINLOG_FORMAT_V1`, mobile V3, catalog exchange, nor preparations.
|
||||
|
||||
The private Programs rollout migrated desktop schema v25 to v26 and Android
|
||||
schema v23 to v24 after verified backups, then installed the signed
|
||||
non-debuggable versionCode 16 APK without uninstalling or clearing data. The
|
||||
real 24-session Program remained unique and readable on Web and Android. A
|
||||
clearly disposable Program was imported, synchronized, cancelled once without
|
||||
mutation, then logically deleted through the Web confirmation. Android consumed
|
||||
the real tombstone and desktop recorded its correlated generation ACK. A first
|
||||
post-restart attempt failed before generation with `device_unavailable` and
|
||||
`PTP_ERROR_IO`; no success state was recorded. Releasing the stale bounded MTP
|
||||
worker and restarting the local ADB server restored the same physical peer. The
|
||||
subsequent correlated exchange completed in both directions, and store reopen
|
||||
confirmed one durable Android tombstone, one acknowledged desktop deletion,
|
||||
no duplicate Program, and no resurrection.
|
||||
|
||||
The controlled deployment preserved the installed Android signing identity and
|
||||
advanced its private `versionCode` from 13 to 14 without uninstalling or
|
||||
clearing data. The requested six-occurrence validation preparation was already
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
This record captures the implementation and validation evidence presently
|
||||
available for `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1`.
|
||||
|
||||
The feature is implemented and validated in the recorded automated and real
|
||||
Firefox Programs presentation checks. It is **not deployed**. This record does
|
||||
not assign `PASS` or `FROZEN` status.
|
||||
The feature is implemented, validated, and deployed on the authorized private
|
||||
desktop/Android pair. `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1=PASS`.
|
||||
This is not a public release and does not change a FROZEN exchange contract.
|
||||
|
||||
## Implemented contract
|
||||
|
||||
|
|
@ -66,15 +66,63 @@ post-migration integrity check passed, foreign-key violations numbered **0**,
|
|||
and the business-data SHA-256 was identical before and after migration:
|
||||
`b264dd1b5fd7cdc599b2f6e2a20c01af794949e7871b8e3107ff3b29a06c6e11`.
|
||||
|
||||
The program identity hash was `1b14...`; the 24 sessions hash was `593f...`;
|
||||
the 164 entries hash was `b991...`; and the two preparations hash was
|
||||
`2e273...`. The copy contained no `deleted_at` values and no
|
||||
The Program hash was
|
||||
`1b14ba7d8dbfbd3d3b19b6584e399fce3f161e1aa20591ca21676530dc0ebd43`;
|
||||
the 24 ordered sessions hash was
|
||||
`593f91572cccb109f76175be249afad5b0e311c429b56ef0cee141a5deb7f3a4`;
|
||||
the 164 entries hash was
|
||||
`9ca6742dd168777b7653a857bc695dbf1f59f10abf489bfaae24660b69fdb1cc`;
|
||||
and the two preparations hash was
|
||||
`2e2733b2624248210c390e5d592fe03e4130775ddb24e7fdb93280b4f778ec25`.
|
||||
The copy contained no `deleted_at` values and no
|
||||
`program_deletions` rows. All 45 unchanged business tables matched their
|
||||
canonical field-level hashes.
|
||||
|
||||
These results are implementation and presentation-validation evidence. They do
|
||||
not substitute for separate deployment validation.
|
||||
## Private deployment validation
|
||||
|
||||
## Remaining validation
|
||||
The authorized rollout used source commit
|
||||
`f431b6ec9cab68e0d41d04815ba41bac55787485`. The coordinated desktop archive
|
||||
SHA-256 was
|
||||
`072fb61c8ddc86ebd9fed650c3928ddfd07010823358e0cd6cfefb3de11d4597`;
|
||||
the private release APK SHA-256 was
|
||||
`bbf3fa5b3ddce3d83b13d22170c23ae0196991b31b70466f85fa124ed72fb297`.
|
||||
The installed `com.labfytools.trainlog` remained non-debuggable and retained
|
||||
certificate SHA-256
|
||||
`aa56c97f2781a0d01f007f4444c3970deb58ad8327ca3da7b0b90f37dbe2ad25`.
|
||||
|
||||
- Validate deployment separately before representing the feature as deployed.
|
||||
The real desktop database migrated from schema v25 to v26 with
|
||||
`integrity_check=ok`, no foreign-key violations, and unchanged field-level
|
||||
Program data. The real Program retained its stable identity, title, active
|
||||
state, 24 ordered sessions, 164 entries, occurrences, targets, equipment,
|
||||
rests, notes, and preparation provenance. Android migrated from schema v23 to
|
||||
v24 without changing any of its 46 pre-existing tables.
|
||||
|
||||
The real Web import created only the disposable Program
|
||||
`pg_dd90fbc1-8131-41f1-9d49-f516e34a17da`. Its first confirmation cancellation
|
||||
made no mutation. Confirmed deletion produced revision
|
||||
`pgr_5c34b25a-678e-49e5-89a2-eecebd4e361f`; Android consumed its tombstone and
|
||||
desktop correlated acknowledgment with generation
|
||||
`gen_5a260b7c-6377-4805-82bb-d793fc41e35f`.
|
||||
|
||||
After both components restarted, the first attempted control run failed before
|
||||
either generation was created: `device_unavailable` followed a real
|
||||
`PTP_ERROR_IO`. The failure was retained and was not rewritten as success. A
|
||||
stale `trainlog-sync-once --request-only` worker owned the MTP descriptor;
|
||||
stopping only `trainlog-syncd` released it. A bounded libmtp probe found the
|
||||
same Samsung SM-G990B, and restarting the local ADB server restored the same
|
||||
serial and peer advertisement without reconnecting, reinstalling, clearing, or
|
||||
restoring either store.
|
||||
|
||||
The final post-restart run
|
||||
`sy_2b2320a8-e182-41a5-b238-ac04f0d4e5f2` completed with desktop generation
|
||||
`gen_9afcc6f9-f7a5-4eec-a24e-696182addfe8`, Android generation
|
||||
`gen_0b101149-5ba8-4ba2-9912-eca8cc9d9953`, two durable `consumed` ACKs, no
|
||||
missing capability, and `sessions_reconciled=0`. A final Android backup has
|
||||
schema v24, `integrity_check=ok`, no foreign-key violations, one synchronized
|
||||
Program with 24 sessions, and exactly one tombstone for the disposable Program.
|
||||
Its archive SHA-256 is
|
||||
`cad5830062578984e77f7900246701b5e1a6bc7629054d012ef34c7cd5f36669`.
|
||||
Desktop has schema v26, one acknowledged deletion ledger row, no visible
|
||||
disposable Program, and one unchanged real Program. Closing and reopening the
|
||||
services and Android application preserved those results. Both Trainlog user
|
||||
services were active at closeout.
|
||||
|
|
|
|||
|
|
@ -59,9 +59,10 @@ explicit trusted opt-in. The authorized private direct-MTP rollout passed on
|
|||
real hardware; automatic V3 selection remains unchanged without that opt-in.
|
||||
The next separately contracted Web surface is Exercises. Sessions deletion and
|
||||
its Programs subtab are complete in software and are not reopened by that
|
||||
future contract. `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1` is
|
||||
implemented and validated in automated and real Firefox Programs presentation
|
||||
checks, but is not deployed. It must not be reopened by the Exercises contract.
|
||||
future contract. `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1=PASS` after
|
||||
its coordinated private desktop/Android deployment, correlated deletion ACK,
|
||||
and post-restart non-resurrection validation. It must not be reopened by the
|
||||
Exercises contract.
|
||||
|
||||
`TRAINLOG_SYNC_GAP_CONTRACT_V1=CONTRACT_FROZEN / IMPLEMENTATION_IN_PROGRESS`
|
||||
defines the complete-sync target and its bounded dependency order.
|
||||
|
|
|
|||
Loading…
Reference in a new issue