Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
c1884ba
test(network): require bounded BiDi JSON envelope parsing
seonghobae Aug 29, 2026
052e531
feat(network): classify bounded BiDi JSON envelopes
seonghobae Aug 29, 2026
fc346e1
fix(network): apply rustfmt to BiDi JSON exports
seonghobae Aug 29, 2026
5d9e1ff
fix(network): apply canonical rustfmt to BiDi JSON parser
seonghobae Aug 29, 2026
552a10d
test(network): exercise BiDi JSON parser boundaries
seonghobae Aug 30, 2026
7b8b67c
fix(test): send literal BiDi JSON over loopback
seonghobae Aug 30, 2026
1c47c14
style(test): apply canonical rustfmt
seonghobae Aug 30, 2026
3a1a87c
fix(network): remove impossible BiDi parser evidence branches
seonghobae Aug 30, 2026
ac6b532
test(network): cover public BiDi JSON parser branches over loopback
seonghobae Aug 30, 2026
32a7d96
test(network): cover malformed BiDi error ids
seonghobae Aug 30, 2026
b3d26d1
test(network): cover remaining BiDi parser transport paths
seonghobae Aug 30, 2026
6ef3c4c
test(network): cover raw UTF-8 BiDi JSON transport
seonghobae Aug 30, 2026
6a0ffd6
fix(test): encode raw UTF-8 BiDi fixture as str bytes
seonghobae Aug 30, 2026
dba07d9
test(network): cover missing BiDi envelope members over real transport
seonghobae Aug 30, 2026
57750f9
test(network): exercise BiDi debug and display on public transport path
seonghobae Aug 30, 2026
627f2c5
test(network): expose test-only bounded BiDi text fixture
seonghobae Aug 30, 2026
36466c8
fix(network): remove unused BiDi text test fixture
seonghobae Aug 30, 2026
0a364e5
test(network): exercise public BiDi JSON boundary in unit build
seonghobae Aug 30, 2026
51ae918
test(network): cover BiDi JSON parser residual paths
seonghobae Aug 30, 2026
e6d5166
test(network): cover escaped slash in BiDi JSON unit path
seonghobae Aug 30, 2026
1bdfb42
test(network): reject non-protocol BiDi error codes
seonghobae Sep 4, 2026
87854fd
fix(network): validate WebDriver BiDi error codes
seonghobae Sep 4, 2026
53acd59
docs(doctoring): correct WebDriver BiDi ErrorCode evidence
seonghobae Sep 4, 2026
7560fa1
docs(changelog): record BiDi error-code hardening
seonghobae Sep 4, 2026
7f31e50
docs(changelog): preserve redirect-cycle evidence wording
seonghobae Sep 4, 2026
8914012
test(network): reject invalid BiDi event method names
seonghobae Sep 4, 2026
977c4c3
fix(network): validate WebDriver BiDi event names
seonghobae Sep 4, 2026
c6ab0c5
fix(network): restore JSON envelope test fixtures
seonghobae Sep 4, 2026
4a9d7fa
fix(network): reject malformed BiDi event names
seonghobae Sep 4, 2026
9b70403
docs(doctoring): refresh WebDriver BiDi 2026-09-03 evidence
seonghobae Sep 4, 2026
6cade89
test(network): require spec-defined client-window error
seonghobae Sep 4, 2026
56e70a2
test(network): colocate client-window interop regression
seonghobae Sep 4, 2026
7578078
test(network): remove duplicate interop harness
seonghobae Sep 4, 2026
01ef429
fix(network): admit client-window BiDi errors
seonghobae Sep 4, 2026
3df49e6
docs(network): align BiDi error vocabulary evidence
seonghobae Sep 4, 2026
7a45943
docs(network): record BiDi ErrorCode inconsistency accurately
seonghobae Sep 4, 2026
9fa4f37
docs(changelog): preserve BiDi error-code discrepancy
seonghobae Sep 4, 2026
6407895
test(docs): lock BiDi error-vocabulary evidence
seonghobae Sep 4, 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 @@ -54,6 +54,7 @@ All notable changes to OriginWeave are documented in this file. The format follo

### Changed

- Aligned the bounded WebDriver BiDi error-envelope vocabulary with the current specification by admitting the defined `no such client window` response while retaining fail-closed rejection of unknown error codes.
- 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 All @@ -68,6 +69,7 @@ All notable changes to OriginWeave are documented in this file. The format follo

### Security

- WebDriver BiDi local-end error envelopes now admit the 30-value rendered W3C `ErrorCode` CDDL plus the separately defined normative `no such client window` error; arbitrary strings still fail closed, and realistic loopback coverage exercises both that compatibility exception and the hostile unknown-code path.
- Raw page content cannot become a trusted instruction.
- Raw secrets are rejected and secret-capable actions require an opaque broker handle.
- Crawler mode is read-only, must pair with the public-crawl purpose, and fails closed without an applicable robots-policy decision.
Expand Down
13 changes: 11 additions & 2 deletions crates/originweave-network/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,24 @@
//! It also bridges a session-correlated WebDriver BiDi loopback target from
//! `originweave-core` into one bounded exact TCP connection, binds and validates
//! the RFC 6455 opening exchange, provides bounded masked client writes and
//! unmasked server-frame reads, and assembles bounded WebDriver BiDi text messages
//! without granting browser, TLS, policy, or Agent authority.
//! unmasked server-frame reads, assembles bounded WebDriver BiDi text messages, and
//! classifies complete local-end JSON envelopes without exposing generic JSON bodies
//! or granting browser, TLS, policy, secret, or Agent authority.

#![forbid(unsafe_code)]
#![deny(missing_docs)]

mod connection;
mod webdriver_bidi_connection;
mod webdriver_bidi_json_envelope;
mod webdriver_bidi_websocket_frame;
mod webdriver_bidi_websocket_handshake;
mod webdriver_bidi_websocket_message;
mod webdriver_bidi_websocket_opening_recovery;

#[cfg(test)]
mod webdriver_bidi_json_envelope_public_boundary_tests;

pub use connection::{
ConnectionPlan, DirectTcpConnection, MAX_CONNECT_TIMEOUT, MAX_CONNECTION_ATTEMPTS,
NetworkError, SocketConnectionEvidence,
Expand All @@ -27,6 +32,10 @@ pub use webdriver_bidi_connection::{
WebDriverBiDiTcpConnection, WebDriverBiDiTcpConnectionError,
WebDriverBiDiTcpConnectionEvidence, WebDriverBiDiTcpConnectionPlan,
};
pub use webdriver_bidi_json_envelope::{
MAX_WEBDRIVER_BIDI_JS_UINT, MAX_WEBDRIVER_BIDI_JSON_DEPTH, WebDriverBiDiJsonEnvelope,
WebDriverBiDiJsonEnvelopeError, WebDriverBiDiJsonEnvelopeKind,
};
pub use webdriver_bidi_websocket_frame::{
MAX_WEBSOCKET_FRAME_PAYLOAD_SIZE, MAX_WEBSOCKET_FRAME_TIMEOUT,
WebDriverBiDiWebSocketEstablished, WebDriverBiDiWebSocketFrame,
Expand Down
Loading
Loading