Define verification of MI utilization against authorization-filtered decisions #246
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
P1
P2
P3
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Creatidy/scarcity-router#246
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Observed installed behavior
At canonical SR
f96d58e6d7d0fffdbe70476850d824efa5de2fb5, MId65891668b7e79f7b666c021f02a1b4bf8c4ca9c, Foundry PR #8 was run with verified local TLS, protected bootstrap, two registered synthetic resources, and distinct client grants. Both authenticated/v1/selectresponses returnedno_solutionbecause the registered catalog hadreasoning_effort: nulland no viable provider state. The filtered response redacted the restricted resource ID, while the retained internal routed decision contained it. This confirms only that no-solution projection, not privacy or correctness for a viable filtered choice.For each request, the retained MI utilization decoded successfully against the retained internal routed decision, context, timestamp and exact cut. The public HTTP
decisionequaledroute.selectionbut differed from the retained internal selection (in this run,expired_happy_hour_rules). Passing the raw HTTP response to the MI decoder faileddecision-binding-envelope; wrapping the public decision in the schema-1 envelope faileddecision-binding-result-mismatch.Source inspection indicates SR binds
decision.to_dict()before applying the authorization-filtered public route projection. We do not claim this proves an authorization leak or that public and internal bytes should always match. The missing contract is how an authorized client or auditor can verify that a retained internal receipt corresponds to the particular filtered public result, without exposing restricted identities or misrepresenting an internal pre-filter decision as the client-visible result.Requested acceptance
Define the public projection/receipt binding and supported verification interface, then exercise both a viable permitted choice and a grant removing the otherwise preferred resource, including privacy of the response and any accessible receipt. Cover synthetic matching MI evidence, stale/withdrawn/mismatched cases and retained-cut consistency. SR #227 tracks broader installed acceptance. Foundry tracking: Creatidy/foundry#1.
Implementation PR #252 is open at
af828fc620against develop7985cbadd3. Focused MI tests, fullmake check(3269 tests, 18 skipped), basedpyright, package-check and whitespace checks completed. Independent review and Forgejo CI remain required.Completed via PR #252. Reviewed HEAD
af828fc620received independent review #1 APPROVE with no findings; Forgejo run #3501 succeeded on that HEAD. Mergec16cc1db29has approved base7985cbadd3and approved HEAD as parents; its treead950af530equals the approved HEAD tree. The client-scoped versioned verification checks the public decision and route against private retained MI evidence and the exact retained cut without returning private contents. Local validation: make check (3269 tests, 18 skipped), basedpyright, package-check and whitespace checks. Historical correspondence is not current authorization or an independent signature; installed cross-product acceptance remains separately tracked by #227.