# 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.