Repository navigation
feat: Browser extension H2 browser runtime lifecycle protected sessions and actual browser harnesses (#703) - #719
Conversation
…sessions-and-actual-browser-harnesses: Implement scoped browser runtime protected read sessions and native harnesses for #703
|
To preview the documentation for this pull request, visit the following URL:
|
There was a problem hiding this comment.
Current status: All findings originating in this review are resolved.
Last reconciled on0ab51bf. See aggregate Bugbot status.
🤖 Bugbot review snapshot
Bugbot reported 3 potential problems when commit 3fb9bd3 was analyzed. This snapshot is historical; use the status block above for current state. 3 findings are linked to changed code.
Findings
- medium: ESR version check rejects the pinned browser —
extension/tooling/runtime_harness.mts:12 - medium: Safari extension installation uses an unsupported WebDriver route —
extension/tooling/webdriver.mts:70 - low: HTTP-date Retry-After values are ignored —
extension/src/adapters/github/get_reader.ts:27
Bugbot: review complete
|
Copilot approval · Human review neededStatus: A protected workflow, policy, or trust-boundary file changed. Technical evidenceRevision: |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #719 +/- ##
===========================================
+ Coverage 94.25% 94.42% +0.16%
===========================================
Files 990 1024 +34
Lines 32046 32997 +951
Branches 9404 9728 +324
===========================================
+ Hits 30205 31156 +951
Misses 702 702
Partials 1139 1139
🚀 New features to boost your workflow:
|
…sessions-and-actual-browser-harnesses: Preserve provider retry deadlines and local recovery guidance for #703
There was a problem hiding this comment.
Current status: All findings originating in this review are resolved.
Last reconciled on0ab51bf. See aggregate Bugbot status.
🤖 Bugbot review snapshot
Bugbot reported 1 potential problem when commit 90332c5 was analyzed. This snapshot is historical; use the status block above for current state. 1 finding is linked to changed code.
Findings
- low: Failed Xcode builds do not save the build log —
extension/tooling/safari_container.mts:43
There was a problem hiding this comment.
Current status: All findings originating in this review are resolved.
Last reconciled on0ab51bf. See aggregate Bugbot status.
🤖 Bugbot review snapshot
Bugbot reported 3 potential problems when commit 47c6b3f was analyzed. This snapshot is historical; use the status block above for current state. 3 findings are linked to changed code.
Findings
- medium: Release the background page lease when the route becomes ineligible —
extension/src/infrastructure/content_runtime.ts:31 - medium: A stale Connect request can revoke a newer session —
extension/src/application/message_gateway.ts:76 - low: Use separate storage areas in the browser fixture —
extension/test/fixtures/browser.ts:21
…sessions-and-actual-browser-harnesses: Fence gateway persistence and native navigation scopes for #703
There was a problem hiding this comment.
Current status: All findings originating in this review are resolved.
Last reconciled on0ab51bf. See aggregate Bugbot status.
🤖 Bugbot review snapshot
Bugbot reported 1 potential problem when commit 742ab5b was analyzed. This snapshot is historical; use the status block above for current state. 1 finding is linked to changed code.
Findings
- medium: Downloaded browser binaries are hashed but not verified —
.github/workflows/setup_platform_smoke.yml:672
…sessions-and-actual-browser-harnesses: Verify native browser download digests before extraction for #703
There was a problem hiding this comment.
Current status: All findings originating in this review are resolved.
Last reconciled on0ab51bf. See aggregate Bugbot status.
🤖 Bugbot review snapshot
Bugbot reported 1 potential problem when commit be6e2be was analyzed. This snapshot is historical; use the status block above for current state. 1 finding is linked to changed code.
Findings
- medium: Oversized response assertion fails on a locked stream —
extension/test/contracts/runtime_reads.test.ts:69
…ifecycle-protected-sessions-and-actual-browser-harnesses
Branch synchronized
6 verification checks passed. |
There was a problem hiding this comment.
Current status: All findings originating in this review are resolved.
Last reconciled on0ab51bf. See aggregate Bugbot status.
🤖 Bugbot review snapshot
Bugbot reported 1 potential problem when commit a808605 was analyzed. This snapshot is historical; use the status block above for current state. 1 finding is linked to changed code.
Findings
- medium: Bracket access bypasses the network-authority check —
extension/tooling/architecture_validation.mts:49
…sessions-and-actual-browser-harnesses: Reject computed network authority outside the reader for #703
Adds the shared H2 runtime for the complete GitHub productivity extension. Navigation, revoked permissions and concurrent Connect attempts cannot publish an obsolete page/account result or disconnect a newer connection. Native GitHub drafts, selection and focus remain owned by GitHub.
Changes
Add scoped mount/refresh/dispose with immutable route/object/settings/credential fences, bounded atomic settings/migration/rollback and localized connection/recovery UI.
Keep credentials and scheduler state in protected session storage; local storage holds only nonsecret preferences. Expose closed semantic GET projections with bounded quotas, cache, independent cancellation and provider backoff.
Fence Connect preference persistence and failure cleanup to the current operation/session. Native tab URL/loading events cancel background page leases, including protected routes and same-URL reloads.
Open private runtime settings through a trusted native button and closed background action in the originating verified window. Same-document messages validate both native frame provenance and the current tab; arbitrary URLs, extra message fields and protected/private contexts remain rejected. No new permissions or public extension resources.
Package all three targets reproducibly. Native harnesses focus only their inert authored fixture heading, require real visibility, click the actual settings button and follow exactly one new native context. Safari verifies the actual registered containing extension identity, signature and embedded resources. Cleanup finishes before success evidence is published.
Pin and verify official ESR/driver archive digests before extraction. Update the SDD, capability catalog and user/developer documentation together. The complete 150-feature/803-case product and local center/setup journeys retain their owning milestone scope.
Reject computed network API acquisition outside the designated reader, including function/key aliases, optional access, computed binding names and literal-union keys. Eight actual AST regressions preserve unrelated data and the reader exemption.
Verification
Current head:
0ab51bfcbfa86eaa8b81631365d9287a106b268c. Complete extension input-tree SHA-256:60c22c6de3c06bd5e3b34320ac7acfc733a77ec9601c5aa04805b4e04da843c5.invalid.extensions.copilot.h2.Extension (UNSIGNED)on macOS 27.0.1 / Xcode 27.1. Its actual embedded resources match the current three-target build.Evidence limits
No real credential or private repository is used. Native evidence executes genuine extension code/APIs against an independently authored fixture after a public github.com bootstrap. API-floor/absence contracts remain separate deterministic tests; older floor browser binaries are not presented as executed. The macOS ESR startup failure remains separate from Linux ESR acceptance. Full product features, multi-OS/version and human accessibility/performance acceptance, store signing and publication retain their owning milestone scope.
Closes #703