feat(core): bind semantic node targets to business actions - #93
feat(core): bind semantic node targets to business actions#93seonghobae wants to merge 166 commits into
Conversation
…stcondition-response' into codex/restack-pr93
Signed-off-by: Seongho Bae <me@seonghobae.me>
…stcondition-response' into codex/restack-pr93 Signed-off-by: Seongho Bae <me@seonghobae.me> # Conflicts: # CHANGELOG.md
|
Restacked non-destructively on PR #271 exact head |
|
Exact head 82b0ebb now inherits #271 at 802ec80 and the shared #195 macOS loopback lifetime repair at b852245, without rewriting branch history. Exact-head local verification passed 141/141 Python contracts, Rust fmt/check/test/all-target Clippy/rustdoc, and exact 100% function/line/region/branch coverage. Fresh GitHub checks are required and currently queued. |
|
Writer lease RELEASED — root task01a06c0f-b427-7830-b654-9addcdfe7aff. Published/readback #93 82056d1 on #271 b0410ae by ordinary merge. Baseline9tests;342fb2c0 actual foreign-reply RED;9b4e6568 tenfocusedpass;reviewP2 wording RED12d032ef/fix82056d13.149Pythoncontracts,compileall,fullRust/fmt/check/strictClippy/rustdoc,CodeGraph,diff pass. Productioncoverage1403/14852/18976/1552 all100%,artifactSHA2569479014b94c1575a379d31fea09309deaf00143374b6dd6f04a539aaf452a685. Measurements began576c4316; finaldocs-onlycommits preserve completeRusttree/manifests/lock,finalPython andcoverageverifier rerun. Independentreviewresolved/no newfindings,notapproval. ActualEdgefinalcoreAPIvisual readable/no clipping oroverlap,notbrowseracceptance. CI34079739018 Rust101612632437/coverage101612632288 andMV334079739021 job101612632213 queued. Worktree /private/tmp/originweave-pr93-sync.37WHy9 preserves untrackedcoverage; noactivewriter. Nextsafeitem #95 policy-parentadoption. |
Current verified adoption — 2026-09-07
Published head
82056d13aa94c106060b84ee76be56fcb7787fc8adopts current prerequisite #271b0410ae92bd20eaf31d09b7d49390e13cb045999by ordinary merge. Original #930664f045and all parent history remain ancestors. The action-binding implementation and its seven integration tests remain byte-identical; parent network production and workflow gates are unchanged.Test-first
342fb2c0reproduced a replacement connection completing the original observation. Merge9b4e6568preserves the child authority API and adopts the stronger same-listener rejection/original-recovery test. The child node-validation guard uses the parent's existing registry identity; connection-generation provenance remains a distinct boundary. Review wording P2 was reproduced at12d032efand corrected at82056d13; independent read-only follow-up reports no remaining actionable findings, not a counted approval.Verification: 10 focused tests, 149 Python contracts, compileall, formatting, workspace/all-target check, full workspace tests, strict Clippy, warning-free workspace rustdoc, CodeGraph and diff checks pass. Exact production coverage is 1,403/1,403 functions; 14,852/14,852 lines; 18,976/18,976 regions; 1,552/1,552 branches.
coverage-current-parent.jsonSHA-2569479014b94c1575a379d31fea09309deaf00143374b6dd6f04a539aaf452a685. The long-running Rust measurements began at576c4316; the final two commits change only the Python documentation regression and Markdown, and the complete Rust tree/manifest/lock comparison is byte-identical. The coverage verifier was rerun at the final head; final Python verification passes independently.Actual sandbox-enabled Edge inspection of the final-head generated core API page found readable headings, signatures and authority caveats without clipping or overlap (
/tmp/pr93-rustdoc-82056d13.png). This is documentation presentation, not product-browser acceptance. Fresh hosted checks are required on this published head; predecessor success, skipped statuses and advisory reviews do not transfer.Keep Draft while #271 and its ancestors remain unmerged. #95 must adopt this exact head while retaining its deterministic-policy delta. No policy approval, browser authentication, end-to-end action success, protected-main merge or release is claimed.
Historical dossier — superseded head/check claims retained
Partial implementation of #28. This existing canonical action-binding lane has been non-destructively reconstructed onto the current WebDriver BiDi typed-text post-condition stack rather than replaced by a competing PR.
Current dependency state
main:87c4daa1830bac5a5228b6036752ad5633232085;802ec806cdd4560eab48c484f435766ecabda353on branchfeat/webdriver-bidi-type-text-postcondition-response;0664f0452cb329cd692cce7f61f9001652abfda2;b852245aa8da9ddc14ac5dbff5ebf1bcc665e65cto remove the macOS loopback test race without weakening production cleanup;The temporary ancestry reconciliation PR #275 merged only into this unprotected feature branch at
b4649c2aa579f0a7e98e5278e85141d12d099dc3. It is not protected-main delivery and transfers no check, review, or approval evidence.Implemented boundary
SemanticNodeActionBindingpairs the exact OriginWeave-owned semantic node target with an independently classified businessActionRequestwhile preserving the distinction between DOM/source-node origin and business target origin. It rejects an action request whose source origin does not match the admitted node's current origin and retains opaque node authority instead of accepting a reproducible descriptive tuple.This binding alone does not authorize policy, execute input, grant network/destination/secret/approval authority, or treat protocol ACK as a successful post-condition. The downstream policy/dispatch stack must independently revalidate current browser and semantic authority immediately before side effects.
Exact-current evidence
For exact head
0664f0452cb329cd692cce7f61f9001652abfda2, local validation passed 141/141 Python contracts, Rust fmt/check/test/all-target Clippy/rustdoc, and exact 100% production function/line/region/branch coverage. Fresh GitHub checks are queued and remain non-passing until terminal success; all predecessor GREEN evidence is historical only.Keep Draft while #271 and its ancestors remain Draft. No self-approval, force-push, destructive rebase, workflow/ruleset/secret mutation, gate weakening, tagging, release, or predecessor evidence transfer is authorized.
The current head also inherits #242 exact
55fef0c3fae1724eddada53e52c4a0311f509aa3, covering both macOS socket-lifetime fixture races. Exact-head local validation passed 141 Python contracts, full Rust gates, and exact 100% production coverage; fresh hosted checks remain required.