docs(adr): shared spaces, their screens in step 4

ADR 0044, D29 to D32: Share opens one sheet, people first, then the
community; a Viewer's studyset screen is read-only; a shared studyset
is marked with people; safety codes are compared from a member's row,
members matched to their keys by handle.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-11 14:39:12 +01:00
commit 4b900aa930
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
2 changed files with 20 additions and 28 deletions

View file

@ -1,27 +0,0 @@
import 'package:halkyon_base_client/halkyon_base_client.dart' as base;
/// The shared spaces the instance keeps (halkyon_base's `sharedSpace`
/// endpoint, Halkyon's ADR 0044, D1).
abstract interface class SharedSpaceGateway() {
/// Makes a shared space holding a studyset, with the person its Owner;
/// returns its id, the sync engine's space.
Future<String> create();
/// Deletes [space] with everything in it; its Owner's.
Future<void> delete(String space);
}
/// [SharedSpaceGateway] on halkyon_base's `sharedSpace` endpoint.
class ServerpodSharedSpaceGateway(final base.Caller _base)
implements SharedSpaceGateway {
/// What a Learn space holds, in the module's words for it.
static const kind = 'studyset';
@override
Future<String> create() async =>
(await _base.sharedSpace.create(kind)).id.uuid;
@override
Future<void> delete(String space) =>
_base.sharedSpace.delete(base.UuidValue.withValidation(space));
}

View file

@ -4,7 +4,8 @@
their choices over the agent's recommendations (all ticked at first; agents editing their choices over the agent's recommendations (all ticked at first; agents editing
directly), D1 to D7 the agent's recommendations, which they chose; D11 to D13 the directly), D1 to D7 the agent's recommendations, which they chose; D11 to D13 the
agent's recommendations, which they chose on 11 Nov 2026, D14 too, and D15 to D26; agent's recommendations, which they chose on 11 Nov 2026, D14 too, and D15 to D26;
D27 their choice; D28 the agent's, to be confirmed. D27 their choice; D28 the agent's, to be confirmed; D29 to D32 the agent's
recommendations, which they chose.
Steps 1 to 3 built; the rest below. Steps 1 to 3 built; the rest below.
- **Builds on:** ADR 0005 (publishing, reports and suggestions), ADR 0014 (the module), - **Builds on:** ADR 0005 (publishing, reports and suggestions), ADR 0014 (the module),
ADR 0016 (one account across an instance), ADR 0017 (key pairs), ADR 0019 (private ADR 0016 (one account across an instance), ADR 0017 (key pairs), ADR 0019 (private
@ -161,6 +162,24 @@ member reads everything in the space.
studyset is the same one moved. The old tree is deleted for good once the copy is studyset is the same one moved. The old tree is deleted for good once the copy is
whole; a copy failing or aborted deletes what it wrote and the space it made. whole; a copy failing or aborted deletes what it wrote and the space it made.
- **D29.** **Share opens one sheet** (decided 11 Nov 2026, the agent's recommendation):
People first (the members with their roles, *Invite by @handle*, or *Share with
people…* for a studyset not shared yet), then the community part as before (privacy,
publishing), as Vaia's Share does.
- **D30.** **A Viewer's studyset screen is read-only in step 4** (decided 11 Nov 2026,
the agent's recommendation): it says *You can view and study this* and hides adding,
editing, moving and deleting; a write that slips through elsewhere, which the engine
refuses, says so rather than failing silently. Each editor is checked one by one
later.
- **D31.** **A shared studyset is marked with people** (decided 11 Nov 2026, the agent's
recommendation): Lucide's *users* in place of the lock, as it is always sealed (D21),
labelled *Shared · private*.
- **D32.** **Safety codes are compared from a member's row** (decided 11 Nov 2026, the
agent's recommendation): their screen shows the code in twelve groups of five and
*Mark as compared*; a member whose keys changed is flagged on their row, and their
new keys are trusted on that screen, after comparing. Members are matched to their
keys by handle, as the member list names nobody by account ID.
## Steps ## Steps
1. **Share with the community's confirmation** (D8, D9), needing nothing else here. 1. **Share with the community's confirmation** (D8, D9), needing nothing else here.