Repository navigation
Open
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workMedium: expected under 1 day of workkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudFully doable remotely: design, config, code, cloudpriority/normalOrdinary priority (the default)Ordinary priority (the default)source/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobtask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Description
Finding
The platform-completion acceptance brief lists the "group join CLI path" as an open gap, and it is tracked nowhere except that prose. The CLI already declares the verb but does not implement it.
Evidence
doc/2026-10-14T_platform_completion/acceptance-brief.mdline 22 lists "the group-join CLI path and unsigned local group-log stand-ins" among gaps "tracked as follow-up scope rather than being represented as finished", and line 77 leaves "Finish or explicitly scope thegroup joinCLI path" unchecked.pkgs/id/src/cli.rs(GroupCommand enum, ~line 1337):Join { invite: String }with doc comment "Join a group with an invitation: a pasted ticket, or anid:join?link. Not wired yet."- The invite machinery exists (
src/seitan/,src/invites/), so the join path is the missing surface, not the underlying protocol.
Why it matters
The command is visible to users (id group join) but does nothing, which misleads anyone following the CLI's help. The acceptance brief explicitly names it as unfinished.
Suggested scope
Wire id group join to the existing invite/Seitan accept path (or explicitly descope it and mark the verb hidden/experimental until it works). Reference #194 (Seitan V2) for the accept-bytes/Keybase verification still open on the invite path itself.
Acceptance criteria
-
id group joinaccepts an invitation (a pasted ticket or anid:join?link) and joins the group through the existing invite/Seitan accept path — OR the verb is explicitly descoped: hidden or marked experimental, with help text stating it is not wired yet. - Tests cover a successful join and refusal of an invalid invite (if the verb is wired).
- CLI help no longer presents an unwired verb as functional.
Metadata
Metadata
Assignees
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workMedium: expected under 1 day of workkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudFully doable remotely: design, config, code, cloudpriority/normalOrdinary priority (the default)Ordinary priority (the default)source/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobtask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Activity
[-]id phase-8/platform-completion: is declared but not wired — joining a group by invite/link is unimplemented[/-][+]id phase-8/platform-completion: the 'id group join' CLI verb is declared but not wired[/+]dezren39 commentedon Oct 26, 2026
Intake review
Related: #194 (Seitan V2 — the accept-bytes / Keybase verification still open on the invite path itself, referenced in the body); platform-completion acceptance brief lines 22 and 77. The verb is declared in the
GroupCommandenum inpkgs/id/src/cli.rs(~line 1337) with a "Not wired yet" doc comment; invite machinery lives insrc/seitan/andsrc/invites/. Sibling brief-gap issues: #798, #794.Still live (verified 2026-10-26): no merged PR references or resolves this issue; the verb remains declared-but-unwired. Not solved; do not close.
Notes / risks: A user-visible CLI verb that does nothing is worse than no verb — it misleads anyone following
--help. The fix-vs-descope choice should be made explicitly; note the join path depends on the invite accept path whose own verification work is tracked in #194, so wiring join may surface that dependency.Suggested approach: Wire
Join { invite }to the existing invite accept path with success/invalid-invite tests; if #194 blocks a sound wiring, descope the verb (hidden/experimental help text) in the same PR and say why here.🤖 Agent note · intake enrichment
dezren39 commentedon Nov 1, 2026
🤖 Agent note · picked up
dezren39 commentedon Nov 1, 2026
🤖 Agent note · triage verdict: confirmed
1a7366f54cdc83ef8e4eefcf3cfea2ce90acf3d4,GroupCommand::Joinis declared unwired;group.rsparses the invite then unconditionally errors. The invite helper alone does not supply the missing admission and transport path. Seitan V2 (P6.1): check the Keybase server side, old-style invites, and a real accept before P6.3 #194 tracks unresolved invite verification.9 remaining items
dezren39 commentedon Nov 1, 2026
🤖 Agent note · picked up
id group joinCLI status explicit without implementing join/admission/transport.dezren39 commentedon Nov 1, 2026
🤖 Agent note · done
id group joincommand's help and refusal unmistakably unavailable.id group join --helpnow states admission/network joining is not implemented; a valid invitation receives an explicit refusal and records no membership. The issue remains open for the actual join implementation.Merge pull request #3782 from developing-today/queue/4853-797-group-j…
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: triaged (live — real gap, deliberately deferred; no duplicate, no split)
Verified at main @
115fe4f44, 2026-11-03.Still live and correctly open.
pkgs/id/src/cli.rs:1568still carries the refusal text "Unavailable: group admission and network joining are not implemented yet", and theGroupCommand::Joinvariant is declared without a wired implementation. The gap is real, not stale.Already handled (do not redo): the "make the refusal unmistakable" slice from task 4853 landed as PR #3782, merged 2026-11-02 15:53 UTC —
id group join --helpstates that admission and network joining are unimplemented, so the command no longer pretends to work. That closes the presentation half of the acceptance brief, not this issue.What remains, and why it is not a queue-sized task: finishing the verb means implementing group admission and network joining — the phase-8 platform work that
doc/2026-10-14T_platform_completion/acceptance-brief.mdlists as follow-up scope (line 22; line 77 still unchecked). It needs a design/implementation pass of its own, not a triage-sized change.Blockers / ordering recorded as the packet asks:
joincan do anything (the invite payload has nowhere to land).joinfirst would fix a wire format by accident.Outcome:
triaged. Issue stays open as the tracking item for the remaining implementation; no duplicate follow-up created (the umbrella is this issue plus the acceptance brief).user/reviewwas reviewed previously on this issue and is not in play now.Queue: task 7593,
repo-worker-code, lane02cafe76-eafd-4d0b-aaa6-2b7a737d68dc.Found via: triage packet for #797 (coverage pass 2026-11-03)