Skip to content

feat(sensitive): require model disclosure necessity - #90

Draft
seonghobae wants to merge 4 commits into
feat/sensitive-model-full-field-disclosurefrom
feat/sensitive-model-disclosure-necessity
Draft

feat(sensitive): require model disclosure necessity#90
seonghobae wants to merge 4 commits into
feat/sensitive-model-full-field-disclosurefrom
feat/sensitive-model-disclosure-necessity

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Partial implementation of #10, stacked on PR #89.

Buyer/security gap

Protected-main data governance requires raw protected data to enter a model only when deterministic or handle-based execution cannot satisfy the approved task. PR #89 composes full-field disclosure with a reviewed model invocation, but its own truth boundary correctly leaves necessity to the trusted broker. This slice makes that missing precondition explicit at the policy composition boundary so an otherwise valid route cannot authorize raw model input while a lower-disclosure path remains available.

Dependency

This Draft is stacked on unchanged exact PR #89 head f2fbcae3f07cad722f43580aa5be0b4e691d2a9c. It is not independently integrable while PR #89 and its sensitive-data/model-policy prerequisites remain active.

TDD / implementation sequence

  1. Exact test-only head 8642375fa5a96a5a0cb5d6fab11aee8077092b8b added the regression contract requiring an explicit necessity decision, typed lower-disclosure alternatives, and proof that necessity cannot upgrade weaker sensitive-data authorization.
  2. Production was then implemented narrowly in a dedicated model_disclosure policy module. Current exact head is 166d68bc8e42f41fcd21965609af222e69fd3d4c.
  3. The composition continues to evaluate the existing full-field sensitive-disclosure + exact reviewed model-invocation boundary first. Necessity is considered only after that boundary authorizes, so caller-supplied necessity metadata cannot upgrade DenyAccess, opaque-handle, derived-value, partial-field, approval-required, authority-mismatched, expired, or otherwise denied policy.
  4. ModelDisclosureNecessity::NoLowerDisclosurePath permits the already-authorized composition to remain authorized. LowerDisclosurePathAvailable fails closed as FullFieldNotNecessary for an opaque handle, deterministic transform, local rule, structured tool, or approved derived value.

Exact-head proof

On unchanged exact head 166d68bc8e42f41fcd21965609af222e69fd3d4c against unchanged exact prerequisite #89 head f2fbcae3f07cad722f43580aa5be0b4e691d2a9c:

  • CI run 31517056344: success;
  • Rust contracts job 93864715090: repository contracts, canonical formatting, locked workspace/all-target check, full tests, strict Clippy, and rustdoc all success;
  • Production coverage job 93864715163: exact owned production function/line/region/branch enforcement success;
  • CodeRabbit exact-head commit status: success;
  • no formal reviews or inline review threads are currently returned; and
  • GitHub reports the Draft mergeable against its unchanged prerequisite base.

No predecessor-head check, review, mergeability result, or synthetic status is transferred to this exact head.

Truth boundary

This slice carries policy metadata only. It does not carry or release protected bytes, authenticate a broker/provider/workload, prove that a caller-supplied NoLowerDisclosurePath claim is truthful, inspect current task executability, invoke a model, validate output bytes, enforce retention/export, attest runtime region/clock, execute fallback, or close #10. The trusted broker/orchestrator remains responsible for deriving necessity from current task/runtime state immediately before protected-value resolution and for executing only the exact independently authorized route.

Keep this PR Draft while #89 and the prerequisite sensitive-data/model-policy stack remain active. Fresh exact-head/live-base acceptance is required after any dependency movement.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 89a72352-8868-40fe-af29-f7628a8886ee

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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 seonghobae changed the title test(sensitive): require model disclosure necessity feat(sensitive): require model disclosure necessity Aug 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant