Repository navigation
Prove durable result reads through an Android provider - #87
isomorphisms wants to merge 26 commits into
Conversation
|
The previous replacement-install job 107488880213 passed distinct Android UIDs and two complete independent provider descriptors, then failed mechanically: android-emulator-runner executed 'provider_pid=...' and the following 'test -n "$provider_pid"' in separate shell invocations. The following multiline loop would also be split by the action. The existing workflow now runs PID read, non-empty assertion, host kill, the original ten bounded polls and final death assertion in one explicitly fail-fast shell invocation. Generation/process identity changes and the late durable 'hello\n' read checks remain intact. No Java/runtime, Binder authority, result-store or URI-grant behavior changed. The command parses locally; fresh hosted APK/build/emulator checks are required at the new exact head. This is a compatibility edit within the inherited shell-based action, avoiding a new bootstrap dependency. Draft/physical MIRO A1 evidence boundaries remain unchanged. |
|
Two mechanical emulator-harness repairs are now published, with product/grant/store/reader code unchanged. Commit 121bff4 keeps provider PID creation, kill and bounded death polling in one shell invocation because android-emulator-runner executes each script line separately. Run 37224117110/job/111500662577 then actually passed distinct UIDs, two independent complete descriptors, and provider-host PID termination. Its later failure was that Android delivered the second launch to the existing reader activity, so the onCreate-only read did not execute; the receipt still contained only the original two-readers event. Commit c22b6c7 adds activity-clear-top to that late launch so a fresh reader activity executes the existing read. The payload and changed provider generation/process-identity assertions are retained. Fresh build/emulator checks are required for c22b6c7. No physical URI-grant survival is claimed. |
|
Mechanical harness qualification is now PASS at exact head c22b6c7, PR run https://github.com/isomorphisms/ib/actions/runs/37225682645/job/111504899744. The reader receipt embeds that exact source SHA. It proves separate UIDs (provider 10116 / caller 10117), two independently complete hello\n descriptors, host PID 3349 termination, then a late six-byte read from new PID 3534, provider generation 2 and a changed provider process identity. APK tests/lint/signing/build also pass for this head. Product/grant/store/reader code was unchanged by the two workflow fixes. This closes the hosted shell-state and activity-launch blockers. The draft and physical MIRO A1 URI-grant survival questions remain; emulator host death is not force-stop/reboot or phone evidence. |
|
Superseded and closed under the authorized retirement sweep. Compared exact head c22b6c7 with current Longview implementation 041734f. Provider and reader source are identical; store changes preserve legacy results and strengthen bounded immutable publication. The two late harness fixes have equivalent qualified implementations in Longview. This is semantic supersession, not ancestry. Current replacement-install job 111973985861 passed the provider/read/death obligations; cancelled heavy/renderer jobs do not count as passes. All unresolved MIRO host-death/force-stop/reboot URI-grant obligations are preserved at https://github.com/isomorphisms/ib/blob/843c7bcf5336c685c4a96a4b4bc28b96fbc7a5dc/docs/provider-retirement.md. Exactly one live successor: isomorphisms/ib PR #114, “Consolidate Longview through the Binder boundary with retained acceptance work” (#114). It remains draft; no physical/Shizuku acceptance is invented. Branch retained. |
Refs #84.
Stacks on PR #82, “Make protected long-view tasks restartable.”
This deliberately implements only the durable-result physical experiment boundary:
hello-v1result under IB app-privatefiles/durable-results/;ContentProviderusing explicit URI grants;ParcelFileDescriptorfor each open;org.isomorphisms.ib.resultreadercaller shim so the consumer has a distinct Android UID;termux-open-url.The provider is not the durable store. Provider generation is recorded separately so a later MIRO A1 run can demonstrate a new provider process reading the same app-private result.
CI builds/signs both APKs, replacement-installs them as distinct Android UIDs, then performs an actual cross-UID provider read in the emulator and requires two independently opened descriptors to both return the complete
hello\npayload. That is emulator evidence only. It does not claim the URI grant survives IB host death, force-stop, or reboot on the MIRO A1; those remain the physical acceptance questions in #84.