Skip to content

feat(extension): bind native host manifest authority - #169

Draft
seonghobae wants to merge 73 commits into
feat/native-messaging-framing-boundaryfrom
test/native-messaging-manifest-authority
Draft

feat(extension): bind native host manifest authority#169
seonghobae wants to merge 73 commits into
feat/native-messaging-framing-boundaryfrom
test/native-messaging-manifest-authority

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

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 optional supports_native_initiated_connections, then delegates authority-bearing values to the existing exact host/path/interface/origin validator.

Implemented contracts include:

  • 64 KiB pre-parser document budget before text storage;
  • complete JSON-object parsing with duplicate/unknown/missing/wrong-typed field rejection, strict escapes and surrogate handling, no trailing data, and no trailing commas;
  • exact stdio interface enforcement;
  • exact canonical chrome-extension://<id>/ allow-list entries, bounded before excess-element decoding;
  • platform-aware executable-path shape and a 32 KiB path budget;
  • exact host/extension membership;
  • retention of Chromium's optional supports_native_initiated_connections declaration as data only; and
  • deterministic typed errors with explicit causal sources only for nested host-name/manifest failures.

Successful 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 description to exist and be a JSON string but accepted the empty string, while Chromium rejects an empty required description. The existing regression and typed InvalidFieldValue repair 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:

  • CI run 32717349605: success;
  • Rust contracts job 97401377810: repository contracts, canonical formatting, locked workspace/all-target check, full tests, strict Clippy, and rustdoc success;
  • Production coverage job 97401377404: exact owned-production function/line/region/branch enforcement success;
  • production functions, lines, regions, and branches: 100%;
  • exact coverage artifact 9516487879, ZIP SHA-256 b9e72617b6d6001614f83139755752b8063e14b284a388155f3038d2863eb7e8;
  • Manifest V3 Compatibility run 32717349584: success;
  • formal reviews: none returned at the latest refetch; and
  • inline review threads: none returned at the latest refetch.

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.

@coderabbitai

coderabbitai Bot commented Aug 16, 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

Copy link
Copy Markdown
Contributor Author

RCA: the branch added crates/originweave-extension to the Cargo workspace without adding it to the repository workspace contract, and its tinyvec_macros lockfile checksum differed from the registry-verified parent value. The new Rust files also had pending rustfmt changes. Commit 0da81d9 restores the workspace contract and checksum and applies rustfmt.

Verified locally at this head: 155 Python repository tests, cargo fmt --all --check, all locked workspace/all-target Rust tests, Clippy with warnings denied, rustdoc with warnings denied, and LLVM coverage at 100% functions/lines/regions/branches.

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