fix(manager): the guided setup dropped the holder's own visibility decision - #214
Merged
Conversation
…cision Reported from the live console with a screenshot: an attribute set to *show it* still rendered as ●●●● in "N attributes so far", with a Show button beside it. **One missing prop, at three call sites.** Every `AttributeValue` in `persona-setup.tsx` passed `type` and `value` and never `sensitivity`, so `treatmentFor` fell through to the registry — and for an unregistered token like `profile.github` the registry's answer is the conservative floor, `high`/`full`. The holder's answer existed, was stored, was returned by the agent, and was dropped on the way to the component. That is the exact defect `treatmentFor`'s own docstring records having fixed once already, arriving by a different route: there the decision lost to a fail-closed branch, here it never reached the function. `AttributeValue` says a surface holding a whole attribute should pass `sensitivity`; the guide held whole attributes and passed none of them. **`onReveal` is threaded in with it.** Without it a *Show* on a genuinely withheld value has nothing to call, and a button that cannot do what it says is the same defect one step along. The map and the list already had it; the guide never did. Three tests, and the two that are not the report matter as much: - the reported case — a holder's *show it* on an unregistered token is legible, asserted on the value being present rather than the mask being absent, since "no bullets" also passes if the value vanishes; - **absent is not a decision** — an unregistered token the holder did not decide on stays masked, so the fix cannot become "never mask"; - **§3.3 stays intact** — a declared token keeps the registry's mask however the holder marks it, so the narrow unregistered exception does not widen. Verified non-vacuous: removing the one prop again fails the first test with "the holder said show it and the guide hid it anyway". extension 485/485. Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
🛡️ AI Agentic Security Code Review🔎 A manual security review is recommended before merging. Please contact the Security team for specifics and remediation guidance.
|
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.
Reported from the live console: an attribute set to show it still rendered as
●●●●in "N attributes so far", with a Show button beside it.Cause
One missing prop, at three call sites. Every
AttributeValueinpersona-setup.tsxpassedtypeandvalueand neversensitivity, sotreatmentForfell through to the registry — and for an unregistered token likeprofile.githubthe registry's answer is the conservative floor,high/full.The holder's answer existed, was stored, was returned by the agent, and was dropped on the way to the component.
This is the defect
treatmentFor's own docstring records having fixed once already, arriving by a different route: there the decision lost to a fail-closed branch, here it never reached the function at all.AttributeValuedocuments that a surface holding a whole attribute should passsensitivity— the guide held whole attributes and passed none of them.onRevealis threaded in alongside, because without it a Show on a genuinely withheld value has nothing to call. The map and the list already had it; the guide never did.Three tests, and the two that aren't the report matter as much
email.work→emailLocal) keeps the registry's mask however the holder marks it, so the narrow unregistered exception does not widen into declared tokens.Verified non-vacuous: removing the one prop again fails the first test with "the holder said show it and the guide hid it anyway".
extension 485/485.