Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
39c4544
test(mv3): define real downloads compatibility contract
seonghobae Aug 9, 2026
50138f1
feat(mv3): declare downloads compatibility permission
seonghobae Aug 9, 2026
b98c2ca
test(mv3): add deterministic local download fixture
seonghobae Aug 9, 2026
bedc430
feat(mv3): exercise bounded local downloads API
seonghobae Aug 9, 2026
7d25a50
test(mv3): propagate downloads compatibility evidence
seonghobae Aug 9, 2026
054b32a
test(mv3): require downloads evidence every browser pass
seonghobae Aug 9, 2026
5c5f9d0
test(mv3): require bounded surface failure diagnostics
seonghobae Aug 9, 2026
9259e28
fix(mv3): retain bounded surface failure evidence
seonghobae Aug 9, 2026
b10e3cc
test(mv3): require bounded downloads failure stages
seonghobae Aug 9, 2026
20f1d83
fix(mv3): classify bounded download failure stages
seonghobae Aug 9, 2026
dd94266
fix(mv3): propagate bounded download diagnostics
seonghobae Aug 9, 2026
a38d56d
test(mv3): name bounded downloads readiness evidence
seonghobae Aug 10, 2026
643298d
test(mv3): require loopback downloads evidence
seonghobae Aug 10, 2026
61a5a64
fix(mv3): download from controlled fixture origin
seonghobae Aug 10, 2026
c58bde7
test(mv3): keep download diagnostics fixture-bounded
seonghobae Aug 10, 2026
669e308
test(mv3): require bounded download diagnostics in runner evidence
seonghobae Aug 10, 2026
27ce890
fix(mv3): preserve bounded download stage diagnostics
seonghobae Aug 10, 2026
e1042bf
merge: align MV3 downloads proof with protected main
seonghobae Aug 15, 2026
7bd2d43
test(mv3): exercise raw diagnostic sanitization
seonghobae Aug 15, 2026
7d21945
test(mv3): reproduce restart download overwrite race
seonghobae Aug 15, 2026
806f571
fix(mv3): avoid restart download overwrite race
seonghobae Aug 15, 2026
6ffb02e
test(mv3): expose swallowed session cleanup failures
seonghobae Aug 16, 2026
1d391df
fix(mv3): fail closed on unexpected session cleanup
seonghobae Aug 16, 2026
8759518
test(mv3): normalize unittest mock imports
seonghobae Aug 16, 2026
02e4550
test(mv3): reject untrusted browser binary overrides
seonghobae Aug 16, 2026
7cbc2fa
fix(mv3): bind browser executables to pinned workspace paths
seonghobae Aug 16, 2026
f410460
test(mv3): preserve session cleanup failure over teardown errors
seonghobae Aug 16, 2026
319f5b5
fix(mv3): preserve cleanup cause across process teardown
seonghobae Aug 16, 2026
6a1ace6
test(mv3): keep timeout kill fallback non-failing
seonghobae Aug 16, 2026
d60f305
fix(mv3): keep bounded wait timeout fallback successful
seonghobae Aug 16, 2026
ac7f1f5
test(mv3): retain bounded fallback failure evidence
seonghobae Aug 16, 2026
7fc08e5
fix(mv3): retain fallback teardown diagnostics
seonghobae Aug 16, 2026
ab8a6e9
test(mv3): reject raw webdriver error retention
seonghobae Aug 16, 2026
f6f307f
fix(mv3): sanitize webdriver protocol errors
seonghobae Aug 16, 2026
4e24f41
test(mv3): require chrome.downloads primary citation
cursoragent Aug 16, 2026
1141103
docs(mv3): record chrome.downloads APA evidence
cursoragent Aug 16, 2026
d9914c6
test(mv3): reject raw ChromeDriver startup errors
seonghobae Aug 16, 2026
3a35b78
fix(mv3): classify ChromeDriver startup failures
seonghobae Aug 16, 2026
9c29a08
test(mv3): reject raw click postcondition text
seonghobae Aug 16, 2026
5f5d0e6
fix(mv3): classify click postcondition mismatches
cursoragent Aug 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ All notable changes to OriginWeave are documented in this file. The format follo

### Changed

- Classified Manifest V3 real-click post-condition failures as a fixed mismatch token so page-controlled WebDriver text cannot enter runner exception text.
- Recorded the current Chrome Extensions `chrome.downloads` primary reference in APA 7th form and stated that the active downloads lane proves one controlled loopback payload in pinned Chromium, not Agent filesystem authority.
- Separated logical origin authority from resolved network destination authority; an origin grant no longer implies permission to connect to every resolver result.
- Separated resolved-address authorization from direct transport evidence; an approved IP now becomes a usable stream only after the operating system reports the exact requested IP and port.
- Separated exact TCP peer proof from authenticated TLS service identity; an observed peer becomes an authenticated HTTPS stream only after explicit-root, fixed-time, SAN-bound WebPKI verification over that same stream.
Expand Down
12 changes: 12 additions & 0 deletions docs/doctoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,14 @@ This document records external evidence that changes OriginWeave architecture, t

The 1 June 2026 WebDriver BiDi Working Draft defines a bidirectional remote-control protocol, events, commands, and user contexts. Because it remains a W3C Working Draft, OriginWeave places BiDi behind a versioned adapter and Web Platform Tests-derived contract tests rather than make it the internal authority model.

### Manifest V3 downloads compatibility

The current Chrome Extensions Downloads API documents the `downloads` manifest permission and `chrome.downloads` methods that initiate, monitor, search, and inspect downloads. That living vendor reference is API semantics only. OriginWeave treats a successful controlled loopback download in pinned Chromium as compatibility evidence for one declared surface, not as Agent filesystem authority, general download persistence, or a claim that every Downloads method is supported.

### Manifest V3 click post-condition diagnostics

W3C WebDriver Get Element Text returns the rendered text content of a located element. That value is page-controlled data, not a trusted diagnostic token. The Manifest V3 compatibility runner therefore compares the fixture output against the exact expected `clicked` token and, on mismatch, raises only the classified message `real click post-condition mismatch`. Raw element text must not enter exception text, trial evidence, or logs.

### Browser origin equivalence

The WHATWG URL host parser and Chromium canonicalizer classify shortened decimal, integer, hexadecimal, legacy octal-looking, and mixed-component numeric hosts as IPv4 or broken IPv4 candidates rather than ordinary DNS names. Chromium's regression suite includes values such as `192`, `0xC0a80001`, `030052000001`, and mixed hexadecimal components. A non-final empty `0x` component can participate in Chromium's multi-part IPv4 truncation behavior, but a final `0x` label does not produce an IPv4 number because stripping its prefix leaves no digits; it remains a domain label. Chromium also warns that broken IP-like hosts must not be connected because another resolver could accept them. OriginWeave therefore admits only canonical dotted-decimal IPv4 into its policy origin type, rejects browser-special numeric spellings before DNS validation, and preserves final non-numeric DNS labels such as `0x`.
Expand Down Expand Up @@ -98,6 +106,8 @@ Autio, C., Schwartz, R., Dunietz, J., Jain, S., Stanley, M., Tabassi, E., Hall,

Bonica, R., Cotton, M., Haberman, B., & Vegoda, L. (2017). *Updates to the special-purpose IP address registries* (RFC 8190). Internet Engineering Task Force. https://doi.org/10.17487/RFC8190

Chrome for Developers. (n.d.). *chrome.downloads*. Google. Retrieved August 16, 2026, from https://developer.chrome.com/docs/extensions/reference/api/downloads

Chromium Authors. (n.d.). *Proxy support in Chrome* [Source documentation]. Chromium. https://chromium.googlesource.com/chromium/src/+/a3e71ebfa307d8760eb68b777e2998a869940092/net/docs/proxy.md

Chromium Authors. (2026). *URL canonicalizer unit tests* [Source code]. Chromium. https://chromium.googlesource.com/chromium/src/+/446d05d21720f0b3505ec21057b3e9f909784262/url/url_canon_unittest.cc
Expand Down Expand Up @@ -154,6 +164,8 @@ Web Hypertext Application Technology Working Group. (2026). *URL standard*. http

World Wide Web Consortium. (2013). *PROV-O: The PROV ontology*. https://www.w3.org/TR/prov-o/

World Wide Web Consortium. (2018, June 5). *WebDriver* (W3C Recommendation). https://www.w3.org/TR/2018/REC-webdriver1-20180605/

World Wide Web Consortium. (2026, June 1). *WebDriver BiDi* (W3C Working Draft). https://www.w3.org/TR/2026/WD-webdriver-bidi-20260601/

Xu, J., Sun, Q., Schwendeman, P., Nielsen, S., Cetin, E., & Tang, Y. (2025). *TRINITY: An evolved LLM coordinator* [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2512.04695
Expand Down
14 changes: 13 additions & 1 deletion docs/doctoring/mv3-compatibility.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Manifest V3 compatibility evidence baseline

- **Status:** Active implementation evidence for issue #27
- **Reviewed:** 2026-08-11
- **Reviewed:** 2026-08-16
- **Pinned browser:** Chrome for Testing `150.0.7871.129`, Chromium revision `r1639810`

OriginWeave uses Chromium as its compatibility kernel, so browser-extension compatibility must be demonstrated with executable Chromium evidence rather than inferred from architecture alone. The protected-main lane exercises a controlled unpacked Manifest V3 extension against one exact Chrome for Testing build and proves service-worker, content-script, storage, declarative-network-request, tabs, windows, scripting, commands, side-panel, bookmarks/history read compatibility, restart persistence, repeatability, and one real WebDriver click/post-condition. Active stacked compatibility work adds downloads, bounded bookmark/history mutation, profile isolation, explicit extension update/version-migration evidence, and an exact content-script isolated-world check. OriginWeave does **not claim 100% Chrome extension compatibility**.
Expand Down Expand Up @@ -38,6 +38,14 @@ The release-quality capability matrix must remain coupled to executable evidence

For history compatibility specifically, the current official Chrome Extensions API documents the `history` manifest permission and Promise-returning `chrome.history.addUrl`, `chrome.history.search`, and `chrome.history.deleteUrl` methods. This living vendor reference establishes API semantics only. OriginWeave release evidence continues to depend on the exact pinned Chromium fixture and exact-head CI result rather than inferring compatibility from documentation.

## Downloads API primary evidence

For downloads compatibility specifically, the current official Chrome Extensions API documents the `downloads` manifest permission and the `chrome.downloads` methods that initiate, monitor, search, and inspect downloads. This living vendor reference establishes API semantics only. Active PR #43 exercises one controlled loopback payload through pinned Chromium and retains only allow-listed stage diagnostics. That proof is not Agent filesystem authority, general download persistence, unsafe-filename handling, or a release claim that every `chrome.downloads` method works.

## Click post-condition diagnostic boundary

W3C WebDriver Get Element Text returns rendered element text. That value is page-controlled data. The compatibility runner compares the fixture output against the exact expected `clicked` token and, on mismatch, retains only the classified message `real click post-condition mismatch`. Raw element text must not enter exception text or trial evidence.

## Update-migration evidence boundary

Restart persistence and extension update migration are separate compatibility claims. A successful restart proves only that state survives a new browser process. The active update-migration lane additionally uses a trial-local copy of the checked-in fixture, preserves the same extension path and ephemeral profile across passes, changes only the controlled manifest version from `1.0.0` to `1.0.1`, observes `chrome.runtime.getManifest().version`, and requires the fixture schema marker to migrate from version 1 to version 2. The checked-in fixture is not rewritten by the test. This establishes one deterministic unpacked-extension version transition; it does not establish Chrome Web Store update behavior, enterprise rollout semantics, downgrade behavior, or arbitrary third-party extension migration safety.
Expand All @@ -60,10 +68,14 @@ Chrome for Developers. (2023, May 2). *The extension service worker lifecycle*.

Chrome for Developers. (n.d.). *chrome.declarativeNetRequest*. Google. Retrieved August 9, 2026, from https://developer.chrome.com/docs/extensions/reference/api/declarativeNetRequest

Chrome for Developers. (n.d.). *chrome.downloads*. Google. Retrieved August 16, 2026, from https://developer.chrome.com/docs/extensions/reference/api/downloads

Chrome for Developers. (n.d.). *chrome.history*. Google. Retrieved August 11, 2026, from https://developer.chrome.com/docs/extensions/reference/api/history

Chrome for Developers. (n.d.). *Manifest file format*. Google. Retrieved August 9, 2026, from https://developer.chrome.com/docs/extensions/reference/manifest

Bynens, M. (2023, June 12). *Chrome for Testing*. Chrome for Developers. https://developer.chrome.com/docs/automation-and-testing/chrome-for-testing

Google Chrome Labs. (2026, July 21). *Chrome for Testing availability*. https://googlechromelabs.github.io/chrome-for-testing/

World Wide Web Consortium. (2018, June 5). *WebDriver* (W3C Recommendation). https://www.w3.org/TR/2018/REC-webdriver1-20180605/
Loading
Loading