feat(sensitive): compose full-field model disclosure authority - #89
Draft
seonghobae wants to merge 4 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 #10, stacked on PR #88.
Buyer/security gap
The active sensitive-model stack separately governs sensitive-data disclosure, exact provider/model/region policy, invocation metadata, output policy, and fallback. Those independent decisions must not be combinable across different tenant/task/field/purpose/destination/classification authorities, and an invocation route match alone must never authorize raw protected field bytes to enter a model request.
Dependency
This Draft remains stacked on exact PR #88 head
121d9d70d6c5592b9dff06d7ba09ee563958bfefand is not independently integrable while that prerequisite and the earlier sensitive-data/model-policy stack remain active.TDD / RCA sequence
1dcac8437e1011fdaed89aeea33bb793f7c3d869required a narrow full-field model-disclosure composition boundary before production exported one.31506672570, Rust contracts job93829914772, checked out that exact head. Python repository contracts and formatting passed, thencargo check --locked --workspace --all-targetsfailed with E0432 becauseModelDisclosureDecisionandevaluate_full_field_model_disclosuredid not exist. This is the intended exact-current RED boundary rather than predecessor or synthetic evidence.f2fbcae3f07cad722f43580aa5be0b4e691d2a9cadds only the deterministic metadata composition primitive and its public export. It first requires the existing sensitive-data policy to return explicitFullFieldDisclosure, then requires the disclosure request to carry the same completeSensitiveDataAuthorityas the model invocation request, and only then evaluates the existing route/context/prompt/schema/token/expiry invocation policy. Every weaker disclosure outcome remains non-authorizing, cross-authority composition fails closed, and typed invocation denial is preserved.Exact-head proof
On exact head
f2fbcae3f07cad722f43580aa5be0b4e691d2a9cagainst exact prerequisite #88 head121d9d70d6c5592b9dff06d7ba09ee563958bfef:31510796392: success;93843931110: repository Python contracts, formatting, locked workspace/all-target check, full tests, strict Clippy, and rustdoc all success;93843931222: exact owned production function/line/region/branch enforcement success;No predecessor-head check, review, or status is transferred to the current head.
Implemented contract
The current branch requires that:
DisclosureDecision::FullFieldDisclosurecan reach the raw-model-input composition boundary;DenyAccess, opaque-handle, derived-value, partial-field, human-approval-required, and dual-control-required outcomes remain non-authorizing;ModelDisclosureDecision::InvocationDenied(...)rather than being collapsed into authorization.Truth boundary
This slice does not prove that deterministic or handle-based execution was impossible, authenticate a workload/provider, resolve or disclose an opaque handle, carry a protected value, invoke a model, validate output bytes, enforce retention, attest runtime region/clock, or execute fallback.
ModelDisclosureDecision::Authorizedis metadata-only authority composition. The trusted broker still owns necessity, runtime/provider authentication, protected-value resolution inside its transaction boundary, exact route execution, output validation, and retention/export enforcement.Keep Draft while #88 and its prerequisite sensitive-data/model-policy stack remain active. This PR does not close #10.