docs(persona): the on-screen word for an attribute is "attribute", not "fact" - #191
Merged
Merged
Conversation
…t "fact" The vocabulary table translated `attribute` to **fact** on screen. That was wrong in two independent ways, and the console is where it showed. It asserts what the model cannot promise. What a holder keeps here is self-asserted until a credential backs it, and the whole point of a face is that a person chooses what to show: an old value, a value pinned to a version, a value overridden for one context, or a value that is simply not true. The card said *fact* directly above the provenance line that said *you said so*. And the word was already spent. `fact` is the VTC ceremony engine's term for a *verified* policy input (`vtc-service/src/ceremony/facts.rs`, `Facts` assembly, every `.rego`) — very nearly the opposite meaning, in the same product, which the table's own rule forbids. The friendlier candidates fail that rule too: `detail` is the persona audit envelope's field, `trait` is a Rust keyword, `entry` names an entry in a face, `value` is the field inside an attribute. So the spec word comes to the screen and the table stops translating this one row. Truth is carried by the provenance beneath the value, never by the noun. - identity map, editors, guided setup and the holder-gate caution now say attribute; `FactNode`/`factIds`/`factReach`/`kind: "fact"` renamed with them - the vocabulary guard in manager-holder-gate now bans `fact` and permits `attribute`, with the reasoning in place so it is not "fixed" back - step-up fixture follows the agent's card text (VTI change lands alongside) 309 extension tests and 548 core tests pass; `tsc -b` clean across workspaces. Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
stormer78
force-pushed
the
docs/persona-attribute-vocabulary
branch
from
September 8, 2026 10:24
e675e94 to
297fb43
Compare
🛡️ 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.
The persona vocabulary table translated
attributeto fact on screen. That was wrong in two independent ways, and the console is where it showed.It asserts what the model cannot promise. What a holder keeps here is self-asserted until a credential backs it, and the whole point of a face is that a person chooses what to show — an old value, a value pinned to a version, a value overridden for one context, or a value that is simply not true. The card said fact directly above the provenance line that said you said so.
And the word was already spent.
factis the VTC ceremony engine's term for a verified policy input (vtc-service/src/ceremony/facts.rs,Factsassembly, every.rego) — very nearly the opposite meaning, in the same product, which the table's own rule forbids.The friendlier candidates fail that rule too:
detailis the persona audit envelope's field (detail.reason),traitis a Rust keyword,entrynames an entry in a face,valueis the field inside an attribute. So the spec word comes to the screen and the table stops translating this one row. Truth is carried by the provenance beneath the value, never by the noun.What changed
FactNode→AttributeNode,factIds→attributeIds,factReach→attributeReach,kind: "fact"→kind: "attribute".manager-holder-gate.test.mtsnow bansfactand permitsattribute, with the reasoning inline so it is not "fixed" back.1 fact→1 attribute) lands alongside in verifiable-trust-infrastructure.Untouched on purpose:
trust-graph.tsx/network-pane.tsxfacts(a node's detail rows — a different feature), and ordinary English (after the fact,hides the fact that).Companion changes:
design-docs/persona-vocabulary.md(the table, plus a new Why not "fact" section) and the VTI branch of the same name.Verification
tsc -bclean across workspaces; 309 extension tests and 548 core tests pass.