Skip to content

Serve an agent profile stored under another spelling of its key - #1945

Closed
joepio wants to merge 1 commit into
developfrom
claude/project-thread-emna3i
Closed

joepio wants to merge 1 commit into
developfrom
claude/project-thread-emna3i

Conversation

@joepio

@joepio joepio commented Sep 30, 2026

Copy link
Copy Markdown
Member

Requested by Joep · project thread

Before: a person's agent showed up twice in one session. One copy was titled joep.io with name, drive, icon and created-at. The other was titled atomic:agent:<key> (the same key without the trailing =) and showed "Empty" with only a public-key.

After: both spellings resolve to the stored profile.

The key has been written padded, unpadded, standard and URL-safe over time, and the stored profile lives under the old padded spelling. The canonical subject is unpadded, finds nothing stored, and the server synthesizes an empty agent from the key (the "just-in-time" path in get_resource).

How: before synthesizing, get_resource tries every spelling of the key (identifiers::agent_pubkey_spellings) under both atomic:agent: and did:ad:agent:, and serves the stored profile under the requested subject. Nothing is rewritten or migrated, so legacy data stays valid. Test: agent_profile_under_padded_key_answers_for_unpadded_subject.

Not covered: rights checks still compare agent subjects as strings, so a grant naming the padded spelling would not match the unpadded signer. Separate change if we want it.


Generated by Claude Code

The same public key has been written padded, unpadded, standard and
URL-safe. A profile stored under one spelling was invisible to the
canonical unpadded subject, which got an empty synthesized agent instead,
so one person showed up as two resources.
@joepio

joepio commented Sep 30, 2026

Copy link
Copy Markdown
Member Author

Trekmeester: included in batch #1915 (run 36779344325). It lands with it when green; if this PR's own tests fail there, I take it out and say why here.

@joepio

joepio commented Sep 30, 2026

Copy link
Copy Markdown
Member Author

Trekmeester: included in batch #1947 (run 36781515104; #1915 had been merged without it). It lands when that run is green; if this PR breaks something there, I take it out and say why here.

joepio added a commit that referenced this pull request Oct 1, 2026
…nt, Google sign-in (#1946)

Lands #1935 (server clock skew), #1936 (vault restore over 64 objects), #1944 (connect dialog), #1945 (twin agent resource) and #1856 (sign in to open the identity, pairs with atomic-saas #164), tested together on Mancave.

joepio commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

Landed on develop through the batch #1946 (squash f2a07aa), tested together on Mancave. Closing this PR since its commits are in that batch.


Generated by Claude Code

@joepio joepio closed this Oct 1, 2026
joepio added a commit that referenced this pull request Oct 1, 2026
… e2e traces, Android menus, demo tooling, docs (#1947)

Includes #1884, #1930, #1940, #1888, #1933, #1882, #1834, #1631, #1932, #1945 and the ForkBar part of #1530.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant