trainlog/docs/reviews/program_execution_flow_v1_evidence.md

112 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Program execution flow V1 validation evidence
Status: `PASS`
This record covers both the isolated implementation evidence and the completed
private coordinated rollout. It does not claim a tag or public release.
## Functional evidence
- Android starts one projected Program session through the production durable
singleton, returns the same draft on replay, refuses an unrelated singleton,
and refuses a second execution after completion.
- Finalization retains the stable `program_id`, `program_session_id`, and
execution `session_id`; reopening preserves completion and creates no draft.
- A production full-generation scenario imports `programs-v1` on Android,
performs and finalizes the session, publishes `program-executions-v1`, imports
completed history and provenance on desktop, accepts the real correlated ACK,
and exposes Web `completed` before continuing through deletion and replay.
- Existing logical Program deletion, tombstone ACK, restart and
non-resurrection coverage remains in the same integrated scenario.
## Validation evidence
- Native Meson suite: 87/87 passed.
- ASan/UBSan Meson suite with Web assets: 89/89 passed.
- Android JVM suite: 231 passed, 5 intentionally skipped hardware cases.
- Android debug and private release builds passed; release lint passed.
- Web Vitest: 94/94 passed; TypeScript and production build passed.
- Real headless Firefox against the C server passed desktop and exact 390×844
Programs flows, including readable state text and deletion confirmation.
- Populated desktop migration continues from v25 through v27 with identical
business projections, integrity `ok`, empty foreign-key check, and an empty
execution ledger. Android v24 to v25 migration preserves the active draft and
invents no Program provenance.
- JSON/import validators, `git diff --check`, and
`tools/check_changed_c_format.sh main` passed.
## Private deployment evidence
- Source commit: `949ace63013feb714657f81cf809029276ec8e79`.
- Desktop candidate SHA-256:
`a6aa6745fe3f8cf55c25272d9b92c97b2ab3242041764d07555536733f04ab12`.
Its 49-file inventory, source commit, desktop schema v27 and
`program-executions-v1` companion were verified before installation.
- Android private release SHA-256:
`7ce6aaa0e6bd889b4e369c4dac3785c6344515ba4ea8190daa78c01ad271ecdf`.
Official Android tools verified application ID
`com.labfytools.trainlog`, versionName 0.1.2, versionCode 17,
nondebuggable release metadata, and certificate SHA-256
`aa56c97f2781a0d01f007f4444c3970deb58ad8327ca3da7b0b90f37dbe2ad25`.
The previous installed package was the same application and certificate at
versionCode 16. Installation used `adb install -r`; no uninstall or data
clear occurred.
- Verified pre-install backups are stored outside the repository under
`program-flow-v17-rollout-20260918T193800Z`. The desktop snapshot is schema
v26 with integrity `ok`; the Android archive is schema v24 and contains the
complete SQLite store and preferences. A post-migration Android archive and
the final post-replay archive both verify as schema v25 with integrity `ok`.
- Desktop migrated from schema v26 to v27 with integrity `ok` and an empty
foreign-key check. Android migrated from schema v24 to v25 with integrity
`ok`, an empty foreign-key check, no active draft invented, and its nine
pre-existing completed sessions retained.
## Real execution, synchronization, and deletion
The rollout used only disposable Program
`pg_17a00000-0000-4000-8000-000000000001`. Its single projected session was
started on Android, left and resumed, then completed as
`se_6bb66f59-a6fb-4759-a75d-c1a79ea107e8`. Android displayed `Effectuée`.
The correlated execution exchange completed as run
`sy_b9c2e545-ec63-4836-beea-cff1aa7c5115`, consuming Android generation
`gen_9a0b7968-eeee-49ba-895b-36aa1783e412` and acknowledging desktop
generation `gen_0b52e009-f654-4da4-8f1b-f23665c97784`. The inbound generation
contained the production `program-executions-v1.json`; desktop and Web exposed
the same completed Program provenance.
The second idempotence exchange completed as run
`sy_81d12965-846d-4502-a864-8ded4d5f1f1d`, with inbound generation
`gen_60e615b9-d06f-43ca-8280-c3bd96cebe63` and outbound generation
`gen_55dd9234-0f8c-4a1a-9b57-d6d549888e82`. It retained one execution link,
one completed session, and no active draft.
The revision-guarded Web deletion created exactly one durable Program deletion.
Run `sy_fa74a008-6767-40e2-b973-7bda38eaad68` consumed Android generation
`gen_598eff4b-4b3d-4b8f-8202-1e0c153568ff`, published desktop generation
`gen_36f3dbbd-1610-463e-ab0d-f43c10392117`, and recorded its correlated
acknowledgement. Android retained exactly one tombstone and no live disposable
Program.
After Trainlog services and both stores were closed and reopened, the real
desktop production consumer replayed the preserved pre-deletion generation
`gen_9a0b7968-eeee-49ba-895b-36aa1783e412`. It returned the exact stored
`sqlite-commit-full` consumed ACK and changed no execution, session, deletion,
or Program cardinality. The final correlated run
`sy_ffb11cba-fa2a-43a4-89dc-7395b8a6cbc3` completed with inbound generation
`gen_020b4747-9260-4cd7-ac92-8381b93bfa73`, outbound generation
`gen_ff13e95b-274e-4abd-a006-c8bbddf6ded1`, zero reconciled sessions, and no
missing capability. The deleted Program did not reappear.
The protected Program
`Renforcement 4 semaines — priorité ceinture abdominale` remains active and
unique with its original identity, 24 sessions, 164 ordered entries, and no
`deleted_at`. Real Firefox loaded the deployed C server at 1440×1000 and exact
390×844 viewports; both had no document overflow, showed the protected Program,
and excluded the disposable Program. `trainlog-web.service` and
`trainlog-syncd.service` were active at closeout.
## Candidate boundary
The candidates were built from the exact functional source commit before this
deployment-only evidence update. This documentation commit changes no runtime
artifact; no tag or public release was created.