feat(extension): bind native host manifest authority - #169
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Signed-off-by: Seongho Bae <me@seonghobae.me>
|
RCA: the branch added Verified locally at this head: 155 Python repository tests, |
Partial implementation of #27, stacked on exact current PR #154 head
26b94fa505eaf0eb555ce410f790f2d6bd671c9f.Buyer/security boundary
This branch turns Chrome native-messaging host-manifest text into a bounded, typed, fail-closed authority input without treating manifest possession as installation, process, message, or Agent authority. It validates the complete reviewed JSON schema for
name,description,path,type,allowed_origins, and optionalsupports_native_initiated_connections, then delegates authority-bearing values to the existing exact host/path/interface/origin validator.Implemented contracts include:
stdiointerface enforcement;chrome-extension://<id>/allow-list entries, bounded before excess-element decoding;supports_native_initiated_connectionsdeclaration as data only; andSuccessful parsing does not prove filesystem/registry installation, executable existence or ownership, Chromium feature/policy enablement, process provenance, authenticated stdio, message provenance, protected-value access, or Agent capability.
Current defect repairs
A current-source audit against Chromium found a compatibility defect: OriginWeave required
descriptionto exist and be a JSON string but accepted the empty string, while Chromium rejects an empty required description. The existing regression and typedInvalidFieldValuerepair remain present.When the live #154 prerequisite moved, this child had become semantically stale despite retaining its unique manifest work. A non-destructive ancestry reconstruction first made the live prerequisite an ancestor. Fresh parent-to-child comparison then exposed predecessor parent content still embedded in the child: native-messaging rustdoc incorrectly called the 64 MiB browser-to-host ceiling a Chrome limit, the doctoring page retained the same obsolete compatibility claim, and the current parent changelog entry had been lost. The branch was repaired by restoring those exact parent-owned files from current #154 and then recording only this branch's host-manifest authority addition. No force push, destructive rebase, or whole-file product overwrite was used.
Exact current state
Live prerequisite:
26b94fa505eaf0eb555ce410f790f2d6bd671c9f(#154).Exact current head:
1cd62ee1042f9e63852f55da0ec01166cf5e9ba5.Fresh comparison is ahead 62 / behind 0, with merge base exactly equal to the live prerequisite. The net diff is limited to the host-manifest implementation/tests plus one changelog line; stale parent-owned framing and doctoring differences are gone. GitHub reports this PR open, Draft, and mergeable.
Exact-head evidence
On unchanged exact head
1cd62ee1042f9e63852f55da0ec01166cf5e9ba5:32717349605: success;97401377810: repository contracts, canonical formatting, locked workspace/all-target check, full tests, strict Clippy, and rustdoc success;97401377404: exact owned-production function/line/region/branch enforcement success;9516487879, ZIP SHA-256b9e72617b6d6001614f83139755752b8063e14b284a388155f3038d2863eb7e8;32717349584: success;The coverage job log proves checkout of exact head
1cd62ee1042f9e63852f55da0ec01166cf5e9ba5. Security/SAST and protected-main central OpenCode/Noema/Strix workflows not generated for this exact stacked feature-base head are absent, not passing. No prerequisite, predecessor, stale, synthetic-merge, queued, skipped, cancelled, status-only, or model-only evidence is promoted as current proof.Dependency / integration discipline
Keep Draft while #154/#82 remain active. No checks or reviews transfer across heads. After any prerequisite movement, recompute ancestry, inspect semantic parent deltas, preserve unique manifest work, and revalidate the resulting exact child head.
Passing automation is not independent approval. This scheduled actor does not merge, self-approve, force-push, destructively rebase, alter workflows, add secrets, weaken checks, tag, or publish.