Skip to content

feat(core): add node-bound WebDriver BiDi text input - #266

Draft
seonghobae wants to merge 19 commits into
fix/webdriver-bidi-pointer-click-node-authorityfrom
feat/webdriver-bidi-node-type-text
Draft

feat(core): add node-bound WebDriver BiDi text input#266
seonghobae wants to merge 19 commits into
fix/webdriver-bidi-pointer-click-node-authorityfrom
feat/webdriver-bidi-node-type-text

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Pointer session and reply adoption — 2026-09-07

Published exact head e3885f69df2cf3899184209efdee5b11bba1bd86 adopts #265 e94a2372fe3771f9ddf70291d34fc9a7e4770ec9 through ordinary merge d9503b30, preserving child eb6c236ff2f4a58b807a2f2c914bd1ddb6079fb3 and all contributor histories. Canonical regression replay 009f9a41 actually failed all3 cases: foreign-session pointer dispatch, replacement success and replacement error consuming the original request. The repair reuses parent node/session validation, typed monotonic dispatch, connection registration and sealed response admission. The entire core tree is byte-identical to the child predecessor, and the entire network tree is byte-identical to the reviewed parent; all8text/privacy tests and6navigation-postcondition tests remain intact.

All21 focused tests and full locked Rust1.97.1 formatting, all-target/all-feature check,workspace tests including5compile-fail doctests, strictClippy, warning-denying rustdoc,145Python contracts,compileall,CodeGraph and diff checks pass. Unchanged pinned nightly2026-08-01 coverage passes:1310/1310functions,13766/13766lines,17524/17524regions,1452/1452branches,each100%. Artifact coverage-receipt-e3885f69.json SHA-256 a06aebb7c2f30c153c3a3867f3b7847d9c485ae2db5ba2b23029ca0375e4ec79; experimental branch instrumentation warning retained.

Independent read-only preservation review found no actionable findings, not counted approval. Actual in-app screenshot of the published new checkpoint verifies readable hashes, wrapping and full scope caveats without observed clipping or overlap. This is GitHub presentation evidence, not product-browser acceptance. Fresh CI 34068882527 (Rust 101582455954,coverage 101582456074) and MV3 34068882439 (job 101582455624) are queued; no new-head hosted pass claimed.

The child's rewritten issue-28/text/privacy dossier and parent's dated receipt history are both retained. This slice constructs bounded non-secret text commands; it does not implement typed text dispatch, dispatch-time text authority, policy authorization, browser authentication or causal page effects. Existing #267 is the next transport owner. Keep Draft pending parent-first protected integration, required checks/review and runtime/release acceptance. No force rewrite,workflow/ruleset/secret change,protected merge,tag or release.

Historical text-command checkpoints — evidence applies only to named heads

Current pointer-parent adoption — 2026-09-06

Exact head eb6c236ff2f4a58b807a2f2c914bd1ddb6079fb3 adopts current #265 7147893c96ca95c9b5b275d8011c5bfe99aab065 through ordinary merge 5a722867, preserving original child cc9980c0 and both contributor histories. Actual socket RED 18a64573 reproduced inherited foreign-session dispatch before adoption. Parent session provenance, current-node pointer authority, typed dispatch, deadline safeguards and all four restored postcondition tests are retained. Text-input source and all eight existing tests, including privacy-safe diagnostics, are byte-identical to the original child.

This slice still constructs bounded non-secret text commands; it does not provide typed text transport, dispatch-time text revalidation, policy authorization or browser outcome proof. The existing #267 transport is the next dependent owner, not a reason to duplicate it here. CHANGELOG and the action-postcondition dossier explicitly separate these boundaries and historical observations.

Exact-head local verification

All 24 focused tests, complete locked Rust 1.97.1 workspace tests including doctests, formatting, all-target/all-feature check, strict Clippy and warning-denying rustdoc pass. All 145 Python contracts, compileall, CodeGraph sync and diff checks pass. Independent read-only preservation review found no actionable findings; this is not counted approval.

Pinned nightly2026-08-01 production coverage passes unchanged gates: 1309/1309 functions, 13749/13749 lines, 17512/17512 regions, 1452/1452 branches (each100%). Artifact coverage-text-eb6c236f.json, SHA256 596097f5545490f6a4bd29a7b718a61aeb43f0ef738e02a61f372232ecd64543. The unstable branch-instrumentation warning remains explicit; no exclusions or skipped security evidence.

Hosted and visual boundary

Fresh actual Edge visual inspection completed on the published body and Checks page: exact head eb6c236f, Draft state, readable wrapping and no observed clipping or overlap. CI34037184023 jobs101497284111/101497284304 and MV334037183844 job101497283496 are queued and match the API. This is GitHub presentation evidence only, not OriginWeave product-browser acceptance. Local GREEN is not hosted acceptance. Keep Draft pending parent-first protected delivery, required reviews/checks and real Chromium acceptance. No force push, protected merge, self-approval, workflow/ruleset/secret change, tag or release.

Preserved historical report at cc9980c

Partial implementation of #28, stacked directly on PR #265 branch fix/webdriver-bidi-pointer-click-node-authority exact head ffa70ee0f499b86ff51837fb95733fd5cf57ff89.

Buyer-visible boundary

This slice implements node-bound WebDriver BiDi text input through one deterministic input.performActions command. Construction revalidates the registry-issued browser session, exact browsing-context identifier, canonical origin, current document epoch, registry provenance, and admitted sharedId before serializing any action. The command focuses the exact admitted element with an element-origin primary-button pointer sequence before emitting bounded keyboard key-down/key-up pairs. Text is non-empty, limited to 512 UTF-8 bytes, and rejects control, non-space whitespace, and reviewed Unicode format characters. This public typing path remains non-secret; secret material must use the separately governed broker/fill boundary.

Test-first privacy repair

A current-source privacy defect was repaired test-first on this same canonical branch. At exact RED head 11ada2a54fc3f9fc3225e654670319bc5fa6f0b2, the new diagnostic regression caused Rust contracts to fail at Run tests because derived Debug exposed the complete serialized wire command, including buyer-provided typed text. The production repair replaces derived Debug with a metadata-only implementation retaining only command_id, method, and text_bytes; typed text, browsing-context identifiers, admitted node identifiers, and the serialized JSON payload are omitted. Wire serialization and authority checks are unchanged.

The source repair first passed exact native CI and Manifest V3 evidence at 1958720a2f0f7e33e40bcea0073c486f37ad278d. That predecessor evidence is retained only as repair lineage and is not promoted to the current head.

Canonical traceability repair

The same branch also refreshes docs/traceability/action-postcondition-evidence.md, which had stale active-PR claims: it still named merged PR #44 as canonical owner, used an old protected-main baseline, treated merged PR #65 as active, and omitted the current #261#266 WebDriver BiDi stack. The dossier now distinguishes protected-main fixture/evidence truth from active-stack evidence, names issue #28 as the owning product gap, records the current navigation/pointer/text authority stack, and preserves the non-transitive rule that protocol acknowledgement or serialization is not successful action completion.

CHANGELOG.md now also records the node-bound non-secret text-input boundary and its privacy-safe diagnostic contract on the current head.

Exact-current evidence

Current exact head is cc9980c095577e968014908aeb7c9fda06e516f3 against unchanged live base ffa70ee0f499b86ff51837fb95733fd5cf57ff89. GitHub reports the PR open, Draft, and mergeable.

Exact native CI run 33452452534 completed success on this unchanged head:

  • Rust contracts job 99685153032: exact checkout, repository contracts, canonical formatting, workspace check, full tests, strict Clippy, and API documentation/rustdoc success;
  • Production coverage job 99685153215: exact owned-production function/line/region/branch measurement, diagnostics upload, and exact enforcement success.

Manifest V3 Compatibility run 33452452537, job 99685153070, also completed success on the same exact head.

Fresh formal reviews and inline review comments are empty at the current exact-head sweep; no independent approval is claimed or inferred. Organization-required workflow results absent from the exact-head inventory remain absent evidence rather than passing evidence.

No predecessor, skipped, pending, cancelled, stale, synthetic, model-only, author-only, or status-only evidence is promoted to this exact head.

Stack / authority boundary

Keep Draft while #265 and its ancestors remain Draft. Protected-main AGENTS.md and the live organization ruleset remain authoritative. This scheduled writer does not merge, self-approve, force-push, destructively rebase, alter workflows/rulesets/secrets, weaken checks, tag, release, or publish.

@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

seonghobae commented Sep 6, 2026

Copy link
Copy Markdown
Contributor Author

Text-input parent-adoption writer RELEASED — 2026-09-06 13:49 UTC

Current pointer-parent adoption — 2026-09-06

Exact head eb6c236ff2f4a58b807a2f2c914bd1ddb6079fb3 adopts current #265 7147893c96ca95c9b5b275d8011c5bfe99aab065 through ordinary merge 5a722867, preserving original child cc9980c0 and both contributor histories. Actual socket RED 18a64573 reproduced inherited foreign-session dispatch before adoption. Parent session provenance, current-node pointer authority, typed dispatch, deadline safeguards and all four restored postcondition tests are retained. Text-input source and all eight existing tests, including privacy-safe diagnostics, are byte-identical to the original child.

This slice still constructs bounded non-secret text commands; it does not provide typed text transport, dispatch-time text revalidation, policy authorization or browser outcome proof. The existing #267 transport is the next dependent owner, not a reason to duplicate it here. CHANGELOG and the action-postcondition dossier explicitly separate these boundaries and historical observations.

Exact-head local verification

All 24 focused tests, complete locked Rust 1.97.1 workspace tests including doctests, formatting, all-target/all-feature check, strict Clippy and warning-denying rustdoc pass. All 145 Python contracts, compileall, CodeGraph sync and diff checks pass. Independent read-only preservation review found no actionable findings; this is not counted approval.

Pinned nightly2026-08-01 production coverage passes unchanged gates: 1309/1309 functions, 13749/13749 lines, 17512/17512 regions, 1452/1452 branches (each100%). Artifact coverage-text-eb6c236f.json, SHA256 596097f5545490f6a4bd29a7b718a61aeb43f0ef738e02a61f372232ecd64543. The unstable branch-instrumentation warning remains explicit; no exclusions or skipped security evidence.

Hosted and visual boundary

Fresh actual Edge visual inspection completed on the published body and Checks page: exact head eb6c236f, Draft state, readable wrapping and no observed clipping or overlap. CI34037184023 jobs101497284111/101497284304 and MV334037183844 job101497283496 are queued and match the API. This is GitHub presentation evidence only, not OriginWeave product-browser acceptance. Local GREEN is not hosted acceptance. Keep Draft pending parent-first protected delivery, required reviews/checks and real Chromium acceptance. No force push, protected merge, self-approval, workflow/ruleset/secret change, tag or release.

Normal push/readback verified; no writer remains held by root task01a06c0f-b427-7830-b654-9addcdfe7aff. Original acquisition13:40UTC atcc9980c0. Next source owner267 already has text transport; adopt this parent and audit typed correlation/preflight separately. New238reviewthreads PRRT_kwDOTulPlM6fsIep / PRRT_kwDOTulPlM6fsIet are valid documentation-boundary findings, next separate docslease. No source mutation outside266.

Commit-Message-Assisted-by: Codex (via Codex)
Signed-off-by: Seongho Bae <me@seonghobae.me>
Commit-Message-Assisted-by: Codex (via Codex)
Signed-off-by: Seongho Bae <me@seonghobae.me>

# Conflicts:
#	crates/originweave-network/tests/webdriver_bidi_navigation_subscription_registry_transport_provenance.rs
Commit-Message-Assisted-by: Codex (via Codex)
Signed-off-by: Seongho Bae <me@seonghobae.me>

seonghobae commented Sep 6, 2026

Copy link
Copy Markdown
Contributor Author

Writer lease RELEASED — root task01a06c0f-b427-7830-b654-9addcdfe7aff; no source/docs writer retained.

Published/readback verified266e3885f69df2cf3899184209efdee5b11bba1bd86,parent265e94a2372fe3771f9ddf70291d34fc9a7e4770ec9,Draft. Regression009f9a41 real0/3RED;ordinaryd9503b30adoption preservedallhistory,entirecoretreebyte-identicalchild,entirenetworktreebyte-identicalreviewedparent.21focused/fullRust1.97.1fmtchecktests/5compilefails/strictClippy/rustdoc,145Python,compileall,CodeGraph,diff pass. Pinnedcoverage1310functions/13766lines/17524regions/1452branches100percent;SHA256a06aebb7c2f30c153c3a3867f3b7847d9c485ae2db5ba2b23029ca0375e4ec79. Independent readonly review no actionable findings,not counted approval.

Actualinapp exacthead screenshot fullcheckpoint readable/no clippingoroverlap. FreshCI34068882527 Rust101582455954/coverage101582456074 andMV334068882439 job101582455624 queued. FullPRhistory/childtextprivacydossier/parentdatedreceipt checkpoints retained. Textconstructiononly,nottextdispatch/browsercausality/protectedacceptance. No sourcewriteoutside266,workflow/ruleset/secret/force/protectedmerge/tag/release/gate weakening. Originalacquisitioneb6c236f after5559594727and2655563064004releases; no further edits under this lease.

Copy link
Copy Markdown
Contributor Author

Exact-head hosted evidence checkpoint — evidence-only PR-state lease acquired after fresh public coordination confirmed the prior #266 writer 5563186050 RELEASED and no later unreleased #266 lease; released in this same checkpoint with no source/docs/ref mutation.

Exact current head e3885f69df2cf3899184209efdee5b11bba1bd86, parent #265 e94a2372fe3771f9ddf70291d34fc9a7e4770ec9, Draft. The hosted runs that were queued in the publication checkpoint have now actually completed terminal GREEN on this unchanged head: CI 34068882527 — Rust contracts 101582455954 success through repository contracts, rustfmt, workspace check, full tests, strict Clippy and API docs; Production coverage 101582456074 success through exact enforcement. MV3 34068882439 / pinned Chrome for Testing job 101582455624 is also terminal success, including hardened-runner undeclared-egress blocking and the real MV3 compatibility fixture.

This updates hosted evidence only. The prior in-app screenshot remains GitHub-presentation evidence, not text-dispatch/browser-causality acceptance; no new screenshot is claimed here. #266 remains Draft and its product boundary is still text construction, with #267 owning transport. No workflow/ruleset/secret/gate change, force update, source write, protected merge, tag or release occurred. No #266 writer remains held after this checkpoint.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant