docs: record why the inbox is per agent - #151
Merged
Merged
Conversation
The invariant behind #148–#150, written down where the next person to touch `reconcileInbound` will find it. Without it a map where a string would do reads as over-built, and collapsing it back is a one-line change whose only symptom is one agent's consent requests quietly never arriving. The load-bearing fact is not obvious from any single file: a v4 holder is a `did:key` with no service endpoint and the wallet publishes its relay to nobody, so there is no discovery path — an executor pushes through the relay IT knows, and the wallet hears it only if it is listening there. Everything else (the pair keying, the provenance field, the two orderings) follows from that and looks arbitrary without it. Also corrects the intro: the wallet runs one inbound session per onboarded agent, not "the" session. Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
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 invariant behind #148–#150, written down where the next person to touch
reconcileInboundwill find it. New section in CLAUDE.md, placed after "Advertisement is not availability" — that one is about reaching the agent, this one about being reached by it.Why it earns a section rather than a code comment: a map where a string would do reads as over-built, and collapsing it back is a one-line change whose only symptom is one agent's consent requests quietly never arriving. Nothing fails, no check goes red.
The load-bearing fact isn't visible from any single file — it lives across
store/holder-identity.ts,device/set-wake.tsand the absence of any publishing code: a v4 holder is adid:keywith no service endpoint and the wallet publishes its relay to nobody, so there is no discovery path. An executor pushes through the relay it knows, and the wallet hears it only if it happens to be listening there. Everything else follows from that and is arbitrary without it — the pair keying, thesourceprovenance field, and the two orderings (setInboxowning the read-modify-write; forgetting an entry inside the reconcile rather than where the agent is forgotten).It also records the approver case, which is the sharper one: that session carries
task-consent/request, so a wrong relay is a gated action that never got its human check (R7.2).Also corrects the intro paragraph — the wallet runs one inbound session per onboarded agent, not "the" session.
Docs only; no code, no behaviour change.