Development record
Live-session setup on the cloud in the two steps the intent promises
Summary
Draft, filed 2026-10-23 by the remainder close of spc-2610141709430146, on abcd-ae's ruling as coordinator (dcn-2610230609300445). Not READY: its design is unsettled below, and it is planned through the usual walk.
spc-2610141709430146 delivered live brief sessions. Its intent-fidelity audit (Opus, with a Sonnet second; receipt rcp-a260a0a30612) found one acceptance criterion not met, and this spec carries it. The criterion, in the product thinker's words:
(setup) Given Cloud, when the technical facilitator sets it up, then it takes two one-click steps: creating the team's GitHub App from a pre-filled manifest, and deploying the relay with Render's Deploy button, whose own form asks for the secrets. abcd writes the files and records the relay's address itself.
What shipped takes about six steps:
- create the app;
- install it;
- generate a client secret and paste it into Render's form;
- deploy;
- re-run
abcd session setup --relay-origin <address>by hand; - add the relay's callback URL on the app's settings page.
abcd writes relays.json only from an address the person types. This spec closes that gap, so that the setup is the two
one-click steps and abcd learns the relay's address itself.
The same audit found ac-6 (a guest from another tailnet joining a local session through Tailscale) inconclusive: never exercised. Its live proof is iss-2610161444081367, outside this spec.
Open design questions (to settle at planning)
- How abcd learns the relay's address. Options include reading it back from Render after the deploy, the relay announcing itself to the repository, and a page on the relay that writes it back through the person's session. Each has a different trust story, so it is a decision with its own ADR check against adr-2610091016270711.
- Whether installing the app and listing the callback URL can fold into the manifest step. The manifest flow can carry a callback URL only once the relay's address is known, which depends on the first question.
- Whether the client secret can reach Render without being copied by hand, never through abcd's own output (the step 6 review's rule that no secret is printed or stored stands).
Footprint
- packages: internal/surface/session, internal/core/session, internal/surface/cli, commands/session.md, docs/how-to/run-a-brief-session-relay.md, .abcd/development/brief/04-surfaces/37-session.md
- tests: internal/surface/session, internal/core/session, internal/surface/cli
Steps
To be listed at planning, once the open design questions are settled.
Frontmatter
| id | spc-2610230609005313 |
|---|---|
| type | spec |
| lifecycle | open |
.abcd/development/specs/open/spc-2610230609005313-live-session-setup-records-the-relay.md
open on GitHub ↗ · commit history ↗
References1
- itd-2610091016262335A team edits its brief together live during a call, on abcdesign.app or on the host's own computerimplements
mentions4
- adr-2610091016270711Who may change an abcd-managed project's design on abcdesign.app, and how a change lands
- dcn-26102306093004452026-10-23 — Live brief sessions lands its code on Sunday but its intent stays planned, because one acceptance criterion is not met (abcd-ae's ruling as coordinator on 2026-10-23, recorded on the product thinker's delegation; itd-2610091016262335, spc-2610141709430146): the intent-fidelity audit (Opus with a Sonnet second, receipt rcp-a260a0a30612) found ac-21 NOT MET, since cloud setup takes about six steps and abcd never records the relay's address itself where the product thinker's criterion promises two one-click steps with the address recorded, and ac-6 INCONCLUSIVE, since a guest from another tailnet was never exercised; of the rest 5 are met and 16 met with concerns, mostly on tests that read the page's source; so the spec is closed with a remainder, spc-2610230609005313, which carries the setup gap as a draft, the code still lands, and the intent ships only when the remainder closes; changing the criterion instead is the product thinker's own choice and is put to them as an information item, never made here
- iss-2610161444081367A local brief session's relay (abcd session start) refuses any request whose Host header is not the computer's tailnet name or its loopback address, with 421. Which Host header Tailscale Serve passes to the loopback backend was not verified on a live tailnet (the build sandbox could not run the tailscale command), so if Serve sends a form the allowlist does not name, every request through Serve is refused and the session cannot be reached.
- spc-2610141709430146the-product-thinker-and-the-technical