Repository navigation
feat(ui): Moss group context for groups and NDOs - #181
Merged
Merged
Conversation
Soushi888
force-pushed
the
feat/moss-group-context
branch
from
November 4, 2026 01:39
adaa947 to
ae9b8bc
Compare
Soushi888
marked this pull request as ready for review
November 4, 2026 02:26
Soushi888
force-pushed
the
feat/moss-group-context
branch
from
November 4, 2026 02:45
ae9b8bc to
89cf3ca
Compare
Soushi888
marked this pull request as draft
November 4, 2026 03:51
Soushi888
force-pushed
the
feat/moss-group-context
branch
from
November 4, 2026 03:52
89cf3ca to
41d60ff
Compare
Inside Moss the Moss group is the group: the tool instance's provisioned group cell is the one Nondominium group, joined automatically with no invite code. The profile comes from profilesClient, the role from myAccountabilitiesPerGroup, and NDO clones are created through the WeaveClient. A layer choice in LobbyServiceResolved keeps the Lobby DNA, Group DNA and invite codes for the standalone build. NDO clones are not registered as public: Moss 0.16.0-rc.5 cannot register a clone that carries DNA properties (PUBLIC_NDO_CLONES, see #162).
Soushi888
force-pushed
the
feat/moss-group-context
branch
from
November 4, 2026 04:15
41d60ff to
16b4ec2
Compare
Soushi888
marked this pull request as ready for review
November 4, 2026 04:44
Collaborator
Author
Review APPROVE at head 16b4ec2, merging under Soushi's explicit
|
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.
Summary
Inside Moss, the Moss group is now the group. The tool instance's own
groupcell is the one Nondominium group, joined automatically with no invite code. The profile comes from Moss (profilesClient), the role frommyAccountabilitiesPerGroup(), and each new NDO is a clone created through theWeaveClient. Standalone keeps the Lobby DNA, the Group DNA and invite links, behind one seam. One open question for Soushi: NDO clones are private to the instance, not group-public, because Moss0.16.0-rc.5cannot register a public clone that carries DNA properties (details below).Closes #164
Stacked on #180 (#163), which sits on #178 and #130 in the native stack #179. Review only this layer's diff; everything below belongs to the parent PRs.
Intent
Inside Moss the Moss group already holds membership and profiles, so the Lobby, the invite codes and
LobbyAgentProfilewould duplicate it. Decided on 2026-11-03: one Nondominium group per Moss group, namely the tool instance's group cell, joined automatically; profiles fromprofilesClient; roles frommyAccountabilitiesPerGroup(); no work context in v0.1.0.Changes
LobbyServiceResolvedinlobby.service.tsisMossLobbyServiceLivewhendetectCurrentHost()says Moss andLobbyServiceLiveotherwise. Stores,NdoServiceand components keep calling the sameLobbyServiceinterface.moss-lobby.ts(the Moss implementation, dependencies injected so it runs in a unit test against a mocked WeaveClient): one group, idmoss. The tool installer (toolInstaller) creates theGroupProfile, named after the Moss group; every other member waits for it to gossip (up to about 30 s), then joins. One resolution runs at a time and a successful one is kept, because the stores and the NDO service all ask at once and concurrentcreate_groupandjoin_groupcommits fail withsource chain head has moved(the recorded run found this). Create group, join group and invite links answerGroups are managed by Moss; the Lobby DHT calls answer with nothing.moss/group-cell.ts: finds the provisionedgroupcell (Moss installs deferred roles as provisioned cells, see research: Moss spike, install the happ in weave dev mode and clone one NDO #162).moss/profile.ts: maps the Moss profile toLobbyUserProfile, reads the roles of the instance's group, picks the strongest (Member, Steward, Progenitor).moss/ndo-clone.tsandholochain.service: in Moss, NDO clones are created and enabled through theWeaveClient, since the applet client refuses clone management.moss.store.svelte.tsand components: the layout loads the Moss profile instead of asking for a Lobby profile; the sidebar shows the Moss nickname and role; create group, join group, invite link, profile edit and the per-group disclosure modal are hidden inside Moss. Each is wrapped in the existing component, none is a new element beside it.moss-integration.md(group context section),ui_architecture.md,IMPLEMENTATION_STATUS.md,CHANGELOG.md.Decisions
createCloneCell(req, true)for NDO clones (decided 2026-11-03)properties, see the open question below.PUBLIC_NDO_CLONESis a one-line constant, set tofalse, to flip when Moss accepts properties.propertiesand encoding Layer 0 innetwork_seedor the first entry, to keeptrueGroupContextabstraction above the storesLobbyServiceinterface already is that boundary; a second one would be a parallel system.How to test
Recorded two-agent dev-mode run (2026-11-03, repo config, nested X server, driven through the tool iframes over CDP):
Nondominium Pilotwith no invite code,Alice · ProgenitorandBob · Progenitorin the sidebar (every dev agent is Progenitor), andSigned in as AliceandSigned in as Bobfrom the Moss profiles. No create, join or invite control is visible.Moss Seed Librarythrough the form. The clone is created through theWeaveClientand anchored in the group cell.Moss Seed Library(Ideation, Commons, Physical) is in his NDO browser.Documentation
Updated in this PR:
moss-integration.md,ui_architecture.md,IMPLEMENTATION_STATUS.md,CHANGELOG.md.lobby-architecture.md§9 was marked partly superseded in #180.Related
Open question for Soushi
NDO clones are not group-public. The decision was
createCloneCell(req, true). In Moss0.16.0-rc.5that fails whenever the request carriesmodifiers.properties, which NDO clones need (ADR-013):join_cloned_celldeclaresproperties: Option<SerializedBytes>, the renderer forwards the properties object untouched, the call fails with a Deserialize error and leaves an orphan cell (verified in the #162 spike, with the source lines). This PR creates the clone withpublicToGroupMembers = false, and peers still find and join it, because theNdoAnchorin the group cell carries the clone coordinates. What is lost: an always-online node (wdocker) will not host NDO cells. Options: (1) keep it as is until Moss accepts properties (my lean, flipPUBLIC_NDO_CLONES), (2) public clone without properties and Layer 0 moved elsewhere, a design call on ADR-013, (3) ask Moss to accept a plain object injoin_cloned_cell.Pre-open review
Closes #164, stack position stated. Pass.feat/moss-tool-scaffold(rebased with it ontodocs/161-dna-hashes), no conflicts. Pass.LobbyServiceLiveis untouched; the seam is a layer choice at module load. No blockers.bun run --filter ui check: 0 errors. The client project still has the one failure that fails onchore/holochain-0.7too.