Agent identity

Most applications ask for an account before showing anything. Nondominium inverts that: the whole lobby reads with no identity, and each rung is climbed only when an action needs it.

Level 0

Anonymous

nothing stored

None. Browse the lobby, open any NDO.

The lobby renders in full with no profile at all.

Level 1

LobbyUserProfile

localStorage

A nickname. Reversible, local to this browser, never gossiped.

ProfileSetupModal on first launch; it cannot be dismissed until a nickname exists.

Level 2

GroupMemberProfile

localStorage, per group

A disclosure choice per group. Membership itself is a DHT entry on the group cell.

GroupProfileModal on first entry to each group.

Level 3

Person entry

zome_person, public DHT

Permanent. Person entries cannot be deleted.

No screen. It is committed as a side effect of acting.

Where the ladder shows in the UI

  • The sidebar's bottom row reads Set up profile at level 0 and nickname · Edit profile from level 1.
  • The lobby's top strip reads No Lobby profile yet or Signed in as …, duplicating that state two hundred pixels away.
  • The lobby header adds Agent: name only once a Person entry exists — the only level-3 indicator anywhere.
  • An NDO's initiator renders as a linked name if a Person exists, and as a truncated key if not.

Open questions

  • Three different places tell you who you are, and none of them tells you which level you are on.
  • Nothing warns before the level-3 write. A Person entry is permanent and is created as a side effect.
  • The initiator link points at /agent/<key>, a route the app does not have.

Live: level 1, level 2, the missing agent route.