feat(extension): bound native messaging framing - #154
Draft
seonghobae wants to merge 15 commits into
Draft
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Partial implementation of #27, stacked on live PR #82 (
feat/native-messaging-host-authority).Buyer/security gap
PR #82 establishes exact extension-to-native-host authority but intentionally leaves native-messaging stdio framing and process integration unimplemented. A hostile or buggy host must not be able to make OriginWeave accept an unbounded, truncated, overlong, directionally oversized, or invalid-text native-messaging frame before a later adapter parses JSON or treats payload bytes as untrusted observation data.
Current dependency / stack state
The independently resolved live prerequisite is exact #82 head
427d2f32431139dc7ed59e60df00fd9d0c4eeba0. Current exact #154 head isd2e1ae8d654703b76897db202980fec82d26babc.The prerequisite moved after this Draft was opened by adding public native-host/request identity getters and their tests. The previous #154 head
5a66d3687092aedcd83bb04ae06b0051087e2892had not incorporated those production getters while its inherited/native-messaging tests expected them. Exact CI run31906244904, Rust contracts job95064418409, therefore failed first at the locked workspace check with four E0599 missing-method errors forextension_id/host_name.The current head non-destructively merges the live prerequisite as a second parent while preserving this PR's framing delta. Fresh ancestry comparison reports #154 ahead of #82 with
behind_by=0and merge base exactly427d2f32431139dc7ed59e60df00fd9d0c4eeba0. No prerequisite check, review, status, mergeability result, or synthetic merge result is transferred.Keep Draft while #82 remains active.
RED -> RCA -> GREEN
cdf290eed42e3d2cf1d3c8f9532f7f97452c6509established the missing framing contract. CI run31797616110reachedcargo check --locked --workspace --all-targetsand failed because the framing API did not yet exist.b5ec0ae0abe00b3d051f0a868e57f883eb13829cexposed canonical rustfmt differences;9e0bdb05bfbb023f9739e41f5c877776eae7cb14applied them and was exact-green against its then-current base.d2e1ae8d654703b76897db202980fec82d26babcrepairs the dependency topology without force-push, destructive rebase, or semantic broadening.Current exact-head evidence
On unchanged exact head
d2e1ae8d654703b76897db202980fec82d26babcagainst exact live prerequisite427d2f32431139dc7ed59e60df00fd9d0c4eeba0:31908472261: success;95069845044: repository contracts, canonical formatting, locked workspace/all-target check, full tests, strict Clippy, and rustdoc success;95069845104: exact owned-production function/line/region/branch measurement and enforcement success;31908472054: success;Security/SAST workflows not generated for this stacked Draft base are absent and are not represented as passing evidence. Skipped diagnostic-upload steps are likewise not promoted as passing gates. No predecessor-head, prerequisite-head, queued, pending, skipped, cancelled, absent, stale, status-only, model-only, or synthetic evidence is promoted as current proof.
Truth boundary
This slice is framing/resource-boundary work only. It does not spawn or sandbox a native host, validate an installed host manifest or operating-system registration owner, parse or trust JSON, authenticate message provenance, authorize Agent actions, expose secrets, persist authority, or claim complete Chromium native-messaging integration. A later trusted process adapter must compose exact host authority, registered-host/process ownership, bounded binary stdio, JSON parsing, and untrusted-message classification without turning Chrome
nativeMessagingpermission into Agent authority.