Skip to content

feat(evidence): record model disclosure audit metadata - #91

Draft
seonghobae wants to merge 5 commits into
feat/sensitive-handle-lifecycle-evidencefrom
test/sensitive-model-disclosure-evidence
Draft

feat(evidence): record model disclosure audit metadata#91
seonghobae wants to merge 5 commits into
feat/sensitive-handle-lifecycle-evidencefrom
test/sensitive-model-disclosure-evidence

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

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

Buyer/security gap

Protected-main data governance requires credential-free sensitive-access evidence to retain model/provider/region/retention metadata when protected data is disclosed to a model. The current evidence receipt records the sensitive-data decision and handle lifecycle but has no bounded model-route audit metadata, so an operator cannot reconstruct which reviewed model route governed an AI-involved disclosure without relying on external logs.

Dependency

This Draft is stacked on unchanged exact PR #45 head 0f07fea031090c72a448fd9501b49d4dd7568419. That prerequisite owns the shared sensitive-evidence identifier validation surface; this lane must remain Draft while #45 is active.

TDD / RCA sequence

  1. Test-only head ca57239960af4abd09aabc90ddb36c9caefc2798 introduced the intended credential-free model-disclosure evidence contract, but CI run 31521173221 stopped first at canonical rustfmt. That setup failure is not counted as the intended RED.
  2. Formatting-only head 3c4ae22e1f16527b4ad63c9fe58095142e763a25 reached the real production boundary. CI run 31521597109, Rust contracts job 93879681560, passed repository contracts and canonical formatting, then cargo check --locked --workspace --all-targets failed with E0432 because SensitiveModelDisclosureEvidence and SensitiveModelDisclosureEvidenceInput did not exist. This is the valid exact-head RED.
  3. Production commit b1c8a79660a776e25337c65c598afb4be1e105a9 adds the narrow immutable evidence value, and af8af758a7d4873e2fa28a662f22f9296aeb8fe6 exposes it through the evidence crate root.
  4. Exact production head af8af758a7d4873e2fa28a662f22f9296aeb8fe6 passed CI run 31522004452: Rust contracts job 93881137254 and Production coverage job 93881137057 both succeeded, including repository contracts, formatting, locked workspace/all-target check, full tests, strict Clippy, rustdoc, and exact owned production function/line/region/branch coverage.
  5. Current exact head 3a33f83af7398038a2581e2e132fabf7183b17af adds only the truthful Unreleased changelog entry and has now passed fresh current-head CI run 31522457974. CodeRabbit's exact-head commit status is also success; GitHub reports the PR mergeable, and no formal reviews or inline review threads are currently returned. No predecessor-head result is promoted as current proof.

Implemented contract

SensitiveModelDisclosureEvidence is an immutable credential-free value object linked to the originating sensitive-data request_id and decision_id. It records only bounded reviewed identifiers for provider, model, processing region, retention policy, training policy, subprocessor policy, and export policy. Every identifier uses the existing sensitive-evidence validation contract; malformed, punctuation-only, whitespace-bearing, slash-bearing, or oversized identifiers fail closed as SensitiveEvidenceError::InvalidIdentifier.

The integration regressions exercise every public getter, every identifier position, the shared maximum identifier bound, and the absence of protected-value/provider-credential sentinel material from debug evidence.

Truth boundary

This receipt is audit metadata only. It does not authorize disclosure, authenticate a workload/provider, invoke a model, prove runtime route/region/retention/training/subprocessor/export behavior, carry prompts or outputs, store protected values or provider credentials, implement durable/tamper-evident audit sequencing, or close #10. Runtime/provider enforcement and protected-value disclosure remain separate trusted broker/orchestrator responsibilities.

Keep this PR Draft while #45 remains active. Any prerequisite or current-head movement requires fresh exact-head/live-base validation.

@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: 3dd9a486-3c3d-4ee2-8872-5bc064fb3d52

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(evidence): require model disclosure audit metadata feat(evidence): record model disclosure audit metadata 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