Repository navigation
Make protected long-view tasks restartable - #82
Merged
Merged
Conversation
9 of 17 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the first real IB protected long-view path from current
main.IB.LongViewTaskas the browser-owned semantic model for durable task, tab, navigation, renderer, Activity, host-process, session, form, heap, and reconstruction state;state/tasksandstate/tabsidentities with synced atomic manifest replacement and append-only navigation history;What survives
Across renderer death:
Across host-process death, the same items survive in the app-private task record. A new per-process identity advances the host generation and attaches a replacement renderer to the same logical task.
What does not survive
A reconstructed page remains
session=not-provenuntil the user records Session works. Needs repeat records an explicit incomplete remote-site state.OAuth/native authorization boundary
The provider-neutral task record can carry adapter/provider/client identities, scopes, redirect origin, transaction phase, expiry, and references to protected state/nonce/PKCE material. It has no fields for authorization codes or tokens and rejects unknown fields.
PR #79, “Receive local Drive authorization handoffs,” remains separate. A native adapter may populate this continuation metadata, but it does not own IB task/tab/navigation identity or turn its one-time code into durable browser state.
PR #74 evidence
PR #74, “Keep incremental WebView loads alive while using another app,” remains useful failure evidence: the MIRO A1 killed a hidden renderer despite a foreground service and WebView's highest public renderer priority. This PR retains important renderer priority only as an optimization. It does not require Picture-in-Picture, foreground service residence, foreground use, or a kept-awake screen.
The switchable URL work from merged PR #78, “Make large-page renderer URL switchable,” is assimilated into the real launcher without preserving PiP as the architecture.
Issue coverage
Refs #71 and #81.
This satisfies the browser-owned identity, renderer replacement, host-process discovery, false-continuity refusal, conservative navigation, ordinary-state secret exclusion, and explicit incomplete-state portions.
Issue #71 should remain open for explicitly permitted ordinary third-party form restoration and MIRO A1 evidence. Issue #81 should remain open until the real authenticated/device-verification sequence passes on the MIRO A1. Whole-device reboot is not claimed.
Deterministic evidence
Local source checks at the submitted tree:
git diff --checktests/idric-public-vocabulary-self-test.shtests/idric-public-vocabulary.shThe Idriç smoke now fails the process if either required identity-preserving transition, false continuity refusal, ordinary-tab non-durability, sensitive URL refusal, or the cross-language record contract fails.
Android unit tests cover renderer and host transitions, Activity-versus-host distinction, atomic discovery, query/code exclusion, authorization references, false authentication/heap claims, explicit remote block, unsafe path refusal, and ordinary-tab non-persistence.
Exact-head hosted evidence for
1b29a3aa6a6727197f86e61fb5bbaae57a96cfca:universal merge gate / merge-gate: success;Android WebView protected transaction / build-apk: success (unit tests, lint, boundary check, signed APK);Android WebView protected transaction / replacement-install: success, including two installs without uninstall;IB browser foundation / idric-core: success, including the executable long-view transition smoke;IB browser foundation / scientific-media: success.APK artifact
ib-webview-protected-transaction-apk:10722287944;sha256:3dca725c4f88cf3e263acf53144e50373ac09e098b9a55fdf66df389c4133b6c;These hosted checks are deterministic/emulator evidence, not physical MIRO A1 acceptance.
Physical evidence still required
The CI-built signed APK must be replacement-installed on the MIRO A1 without uninstalling. The real IB Long View path must then exercise:
The receipt includes exact source head, APK identity, Android/WebView versions, host PID and generations, renderer identity/generation, task/tab/navigation/run identities, elapsed off-screen duration, authentication result, reconstruction result, and required repeated step. CI or emulator results are not physical acceptance.