feat(sensitive): require fresh model fallback availability - #87
Draft
seonghobae wants to merge 6 commits into
Draft
feat(sensitive): require fresh model fallback availability#87seonghobae wants to merge 6 commits into
seonghobae wants to merge 6 commits into
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 #86.
Buyer/security gap
PR #86 makes sensitive-model fallback fail closed on unknown or unreviewed routes, but its availability classification had no explicit lifetime. A stale
AvailableorUnavailableobservation must not remain usable indefinitely for sensitive-model routing.Dependency
This Draft is stacked on unchanged exact PR #86 head
a2c391a5e038dc9e3d6978885d9bdd943487294fand must remain Draft while #86 and its prerequisite sensitive-data stack remain active.TDD / RCA sequence
34d49aea1c77491c63a22f2670d10f39a162d24dadded the intended freshness contract but CI run31496279876stopped first at canonical rustfmt. That setup failure was not counted as the intended RED.4ac8a00a2674e6b66fcea9a794c3475d874dec41established the valid production-boundary RED in CI run31499917777, Rust contracts job93806922219: repository contracts and formatting passed, then the locked workspace check failed becauseModelRouteAvailabilityEvidence, trusted evaluation time, and the invalid/expired decisions did not exist.f25de0ed1d44d25319265129c7f8353791936c42added the bounded availability-evidence lifetime and fail-closed evaluator changes; head746786bc8e19bc1c48b9a59534f1540b46327aeeexported the new public evidence type.31500329485on exact head746786bc8e19bc1c48b9a59534f1540b46327aeebecame fully GREEN: Rust contracts job93808479509and Production coverage job93808479514both succeeded, including repository contracts, formatting, locked workspace/all-target check, full tests, strict Clippy, rustdoc, and exact owned production function/line/region/branch coverage.1437462dd5704b8cbb365702629ece2139ca24c0recorded the new boundary. A fresh whole-PR patch audit caught one unrelated wording drift in an existing TLS changelog bullet; that was treated as a scope-integrity defect rather than accepted as noise.b1273d7bc34fffee262be4bd2da24c24520d11dbremoves that unrelated drift while retaining only the intended availability-freshness changelog delta.31500975874is GREEN: Rust contracts job93810643624and Production coverage job93810643723both succeeded with the complete contract and exact coverage gates.No predecessor-head check, review, mergeability result, or synthetic status is transferred to the current head.
Implemented contract
The branch now requires:
ModelRouteAvailabilityEvidencevalue with an exclusivevalid_untilhorizon;trusted_timefrom the same authoritative time domain as that horizon;PrimaryAvailabilityInvalid;trusted_time >= valid_untilto fail closed asPrimaryAvailabilityExpired;PrimaryAvailabilityUnknown;Unavailableevidence to enter fallback consideration; andFocused regressions cover fresh primary availability, primary-policy precedence over freshness, invalid and exact-boundary expiry, unknown availability, absent/one-sided fallback policy, exact reviewed fallback success, and mismatched fallback denial.
Exact-current evidence
For exact head
b1273d7bc34fffee262be4bd2da24c24520d11dbagainst unchanged exact basea2c391a5e038dc9e3d6978885d9bdd943487294f:31500975874: success;93810643624: success;93810643723: success, including exact owned production function/line/region/branch enforcement;Truth boundary
This deterministic policy slice does not probe provider health, prove when an availability observation was collected, attest the clock, authenticate or invoke a provider, retry, disclose protected values, persist health state, or execute the selected route. Constructing availability evidence does not make the observation authoritative. A trusted broker/orchestrator must derive the availability state and validity horizon from its reviewed runtime boundary, supply evaluation time from the same authoritative time domain, and execute only the exact route authorized by this policy.
This PR does not close #10. Keep it Draft while #86 and the prerequisite sensitive-data stack remain active; fresh exact-head/live-base acceptance is required after any dependency movement.