The monolithic open-questions.md (1310 lines, 47 OQs) was large enough to be unmanageable, with high size variance (OQ-42 at 220 lines next to OQ-06 at 8). Decomposed into one file per OQ under docs/architecture/questions/ (NNN-slug.md, mirroring the ADR convention), with open-questions.md retained as the index: theme-grouped tables plus a cross-theme Deferred/Blocked section that surfaces the 6 deferred OQs with their Blocked-on conditions inline (the safe-exit visibility surface). Per-OQ content moved verbatim; all 62 inbound links stay valid (none used anchors). README's curated OQ summary dropped (now redundant with the index tables). Also seeds tasks/architecture/ with this task plus two follow-ups found during the decompose: OQ-09/10 missing structured Blocked-on fields, and the tasks/architecture/ blocker-task half of the Safe Exit protocol being unenforced.
18 lines
1.0 KiB
Markdown
18 lines
1.0 KiB
Markdown
# OQ-31: services/list-peers Re-Export Semantics
|
|
|
|
- **Origin**: [ADR-029](decisions/029-peer-graph-routing-model.md) §6, `docs/research/alknet-call-peer-routing/findings.md` §3.5
|
|
- **Status**: **resolved** (2026-06-27)
|
|
- **Door type**: Two-way
|
|
- **Priority**: low
|
|
- **Resolution**: `services/list` defaults to **"own ops only"** — it shows
|
|
the head's own Layer 0 `External` ops, filtered by
|
|
`AccessControl::check(calling_peer)`, unchanged from today (minus the
|
|
retired `remote_safe` filter). A `services/list-peers` opt-in (new
|
|
built-in operation) lists the peer overlays with attribution: each
|
|
peer's sub-overlay listed as `{ peer: Option<PeerId>, operations: [...] }`,
|
|
filtered by the calling peer's authorization. The re-export policy is an
|
|
`AccessControl` decision on the listing op. Whether `services/list-peers`
|
|
is built now or as a feature addition is a scheduling question — the
|
|
decision (opt-in, `AccessControl`-filtered) is made.
|
|
- **Cross-references**: ADR-029, [client-and-adapters.md](crates/call/client-and-adapters.md)
|