synthesis v2: extend shard spectrum to full dive set (13 spectra); re-fold into SHARD-WP-0002

Extend the cross-dive synthesis from nine systems to the full fourteen
(added Joplin, Logseq, the CRDT cohort Anytype/AFFiNE/AppFlowy, Trilium).
Spectra grown 11 -> 13: new merge-model (none/git/conflict-notes/
native-CRDT) and content-opacity (plaintext/whole-shard-E2EE/per-item),
plus identity-vs-placement emphasis (Trilium note/branch DAG), Logseq's
in-file id:: addressing sweet spot, build-your-own derived query index,
and a six-mode attachment taxonomy (file-store native/interchange-mirror,
in-engine-host, local-REST, external-API, CRDT-replica, P2P). New
through-lines: CRDT changes the merge math; identity != placement;
metadata can be computed; attach surface != native store (+ substrate
migration). UC fold-in extended UC-44-59 -> UC-44-67.

Folded into SHARD-WP-0002: T11 thirteen spectra; T12 computed metadata +
multi-placement/DAG identity; T13 CRDT-log supplement; T14 full six-mode
attachment taxonomy; T15 HTML source model; T16 identity!=placement +
derived index. Context inputs += four dives; acceptance UC-26-67. No new
tasks, no new UCs (synthesis only).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-14 17:25:32 +02:00
parent 5697669063
commit 714eaf6b5a
3 changed files with 378 additions and 265 deletions

View File

@@ -8,7 +8,7 @@ status: active
owner: tegwick
topic_slug: whynot
created: "2026-06-08"
updated: "2026-06-13"
updated: "2026-06-14"
depends_on:
- SHARD-WP-0001
state_hub_workstream_id: "2af4c46d-cbfd-40ea-a94b-d9e60b0f9945"
@@ -35,12 +35,14 @@ union does*; the adapter contract decides *what a backend must expose to partici
The two are co-dependent (the capability matrix T10 consumes the contract vocabulary
T11 defines), so they live in one workplan.
The cross-dive synthesis (`research/260614-shard-spectrum-synthesis/findings.md`)
reframes the contract around **eleven capability spectra** (addressing, content
identity, structure, history, native query, translation, attachment mode, operational
envelope, access grant, write granularity, content types) — positions on a spectrum
anchored at both ends by a real system, with federation ops degrading by position —
rather than a flat verb checklist.
The cross-dive synthesis (`research/260614-shard-spectrum-synthesis/findings.md`, **v2
2026-06-14** — extended to the full dive set incl. Joplin, Logseq, the CRDT cohort
Anytype/AFFiNE/AppFlowy, and Trilium) reframes the contract around **thirteen capability
spectra** (addressing, content identity, **identity-vs-placement**, structure, history,
**merge model**, native query, translation, attachment mode, operational envelope, access
grant, **content opacity**, write granularity) — positions on a spectrum anchored at both
ends by a real system, with federation ops degrading by position — rather than a flat verb
checklist.
## Context
@@ -63,10 +65,18 @@ rather than a flat verb checklist.
MetadataCache derived index, dual attach, ecosystem popularity)
- `research/260614-notion-deep-dive/findings.md` (closed SaaS, external-API-only,
DB schema+relations, operational envelope, scoped grant)
- `research/260614-shard-spectrum-synthesis/findings.md` (**synthesis**: the eleven
- `research/260614-joplin-deep-dive/findings.md` (SQLite-local, interchange/sync-mirror
attach, E2EE content opacity, local-REST)
- `research/260614-logseq-deep-dive/findings.md` (block-graph on plain files, in-file
`id::`, derived Datalog index, file→SQLite substrate migration)
- `research/260614-localfirst-workspaces-deep-dive/findings.md` (Anytype/AFFiNE/AppFlowy:
CRDT substrate, native merge, P2P/E2EE, CRDT-replica attach)
- `research/260614-trilium-deep-dive/findings.md` (note cloning → DAG / identity≠placement,
inherited+templated computed metadata, HTML-native, scripting+ETAPI, per-item opacity)
- `research/260614-shard-spectrum-synthesis/findings.md` (**synthesis v2**: the thirteen
capability spectra, shard family matrix, UC→task fold-in)
- Use cases: `spec/UseCaseCatalog.md` § A (UC-26UC-59; UC-34UC-43 are the
engine-attachment cases, UC-44UC-59 the conceptual + modern-tool cases)
- Use cases: `spec/UseCaseCatalog.md` § A (UC-26UC-67; UC-34UC-43 are the
engine-attachment cases, UC-44UC-67 the conceptual + modern-tool cases)
- Aspiration: `INTENT.md` (orchestrator, not engine; mechanism over policy;
capability-aware adapters; Markdown-first, backend-neutral)
- Related workplan: `SHARD-WP-0001` (page resolution, namespaces, overlays,
@@ -91,16 +101,16 @@ decision records only.
| Consensus presets | Spread, merge, designated canonical — policy not core | UC-07, UC-27 |
| Capability matrix | Which federation ops require which adapter capabilities | UC-02UC-07 |
### Adapter-contract topics (T11T15, from engine deep dives)
### Adapter-contract topics (T11T16, from engine + modern-tool dives)
| Topic | Key tradeoff | Primary UCs |
|-------|--------------|-------------|
| Adapter contract & capabilities | Eleven spectra (not flat verbs); write granularity; operational envelope; access grant | UC-02, UC-35, UC-38, UC-57 |
| Structured page model | Typed frontmatter vs sidecar vs blob; bodiless / multi-record; DB schema+relations; non-Markdown assets; query-defined pages | UC-34, UC-39, UC-55, UC-58, UC-54 |
| History portability | Supplement (DB-internal, incl. Notion) vs import (open file history) | UC-36, UC-41 |
| Adapter binding | Three modes (file-store / in-engine-host / external-API); per-binding choice; backend-swap; scoped grant | UC-38, UC-40, UC-43, UC-50, UC-57 |
| Syntax translation | Lossless round-trip vs **lossy-with-fidelity-report** vs read-only degradation | UC-42, UC-59, UC-03 |
| Addressing, identity & navigation (T16) | Span addressing; content identity; transclusion-as-reference; dimensional/query views | UC-44, UC-45, UC-46, UC-47, UC-48, UC-51, UC-52, UC-54 |
| Adapter contract & capabilities | **Thirteen spectra** (not flat verbs); write granularity; operational envelope; access grant; **merge model**; **content opacity** | UC-02, UC-35, UC-38, UC-57, UC-61, UC-64 |
| Structured page model | Typed frontmatter vs sidecar vs blob; bodiless / multi-record; DB schema+relations; **computed (inherited/templated) metadata**; non-Markdown assets; query-defined pages; **multi-placement (DAG) identity** | UC-34, UC-39, UC-55, UC-58, UC-54, UC-66, UC-67 |
| History portability | Supplement (DB-internal incl. Notion/Joplin/Trilium; **CRDT-log**) vs import (open file history) | UC-36, UC-41 |
| Adapter binding | **Full mode taxonomy**: file-store (native *or* interchange/sync-mirror) / in-engine-host / local-REST / external-API / **CRDT-replica** / **P2P-no-central-endpoint**; per-binding choice; backend-swap / substrate-migration | UC-38, UC-40, UC-43, UC-50, UC-57, UC-60, UC-62, UC-64, UC-65 |
| Syntax translation | Lossless round-trip vs **lossy-with-fidelity-report** (HTML/blocks/CRDT) vs read-only degradation | UC-42, UC-59, UC-03 |
| Addressing, identity & navigation (T16) | Span addressing; content identity; **identity≠placement**; transclusion-as-reference; **derived query index**; dimensional/query views | UC-44, UC-45, UC-46, UC-47, UC-48, UC-51, UC-52, UC-54, UC-63, UC-66 |
---
@@ -362,25 +372,32 @@ already separates store backend from core behind a stable interface).
- **Operation verbs:** `read, write, diff, merge, lock, version, publish, notify,
transclude-source, translate-syntax, structured-payload` (reconcile with T10).
- **Capability profile = the eleven spectra** (synthesis §2), each a *position* not a
- **Capability profile = the thirteen spectra** (synthesis v2 §2), each a *position* not a
boolean, so federation ops degrade by position:
1. addressing granularity (none → path → in-file span → store-UUID → portable tumbler)
1. addressing granularity (none → path → page-level store id → in-file span → in-file
block `id::` → store-UUID → portable tumbler)
2. content identity (none → path/title → fingerprint → span-set)
3. structure (flat MD → frontmatter → %META% → DB objects → DB schema+relations)
4. history (none → internal-only → open-file → git-native)
5. native query (none → text → datalog → DB query)
6. translation (native → lossless → lossy-with-fidelity-report)
7. attachment mode (file-store → in-engine-host → external-API)
8. operational envelope (local/unbounded → rate-limited/eventually-consistent/paginated)
9. access grant (open → token → OAuth scoped+revocable)
10. write granularity (whole-file → per-page → per-block)
11. content types (Markdown-only → typed records → non-Markdown assets)
3. identity vs placement (path=identity → **identity separated from placement**:
Trilium note/branch; a page in many locations = a DAG)
4. structure (flat MD → frontmatter/`key::` → %META% → typed objects → DB
schema+relations → object-graph/ontology → **computed: inherited+templated**)
5. history (none → internal-only / **CRDT-log** → open-file → git-native)
6. **merge model** (none → git/text → conflict-notes/keep-both → **native-CRDT**)
7. native query (none → text → **build-your-own derived index** → datalog/graph → DB query)
8. translation (native → lossless → lossy-with-fidelity-report; incl. HTML)
9. attachment mode (file-store [native *or* interchange/sync-mirror] → in-engine-host →
local-REST → external-API → CRDT-replica → P2P/no-central-endpoint)
10. operational envelope (local/unbounded → realtime CRDT/WebSocket → rate-limited/
eventually-consistent/paginated)
11. access grant (open → token → OAuth scoped+revocable → P2P key/invite)
12. **content opacity** (plaintext → encrypted-at-rest whole-shard → **per-item**)
13. write granularity (whole-file → per-page/note → per-block)
- Versioning/compatibility rules for the contract itself; capability discovery
(static profile vs runtime negotiation).
**Inputs:** `260608-wikiengines-overview` §3, §5; `260613-foswiki-deep-dive` §2, §6;
`260614-shard-spectrum-synthesis` §2, §5. **Provides** the vocabulary T10's matrix
consumes. **UCs:** UC-02, UC-35, UC-38, UC-57.
`260614-shard-spectrum-synthesis` §2, §5 (v2). **Provides** the vocabulary T10's matrix
consumes. **UCs:** UC-02, UC-35, UC-38, UC-57, UC-61, UC-64.
**Tradeoffs:** Rich capability set (precise degradation) vs contract complexity;
static profile vs runtime capability negotiation.
@@ -399,8 +416,9 @@ state_hub_task_id: "7334a4a4-ba75-4fac-a8b4-8350d342b299"
Decide how the **backend-neutral, Markdown-first page model carries structured data
without flattening**:
The model must stretch **four ways at once** (synthesis §3): prose Markdown, typed
records, non-Markdown assets, and reference/query-defined pages.
The model must stretch **many ways at once** (synthesis v2 §3): prose Markdown, typed
*and computed* records, non-Markdown assets, reference/query-defined pages, and
**multi-placement (DAG) identity**.
- Source shapes: XWiki XObjects against an XClass; TWiki/Foswiki DataForms stored as
`%META:FIELD%` in text; Foswiki MetaDataPlugin **multiple records per topic**;
@@ -419,12 +437,22 @@ records, non-Markdown assets, and reference/query-defined pages.
- **Query-defined / reference pages** (UC-44, UC-54): a page whose canonical form is a
span manifest (Xanadu EDL) or a saved query (Dataview/Notion linked DB) — coordinate
with T16.
- **Computed metadata** (UC-67): Trilium attributes are **inherited (down the tree) +
templated**, so effective metadata = own + inherited + templated. Represent
**effective-vs-own with per-attribute provenance** (own / inherited-from / template);
decide materialize (snapshot) vs compute-live.
- **Multi-placement / DAG identity** (UC-66): Trilium **note (identity) vs branch
(placement)** — a page may occupy several locations at once. Separate **page identity
from placement** (one entity, N placements/paths/shards); no single canonical path —
coordinate with T16 (the namespace-level clone/reference primitive).
**Inputs:** `xwiki` §2.3; `twiki` §2.3; `foswiki` §4; `notion` §2§3; `obsidian` §3;
`shard-spectrum-synthesis` §3. **UCs:** UC-34, UC-39, UC-55, UC-58, UC-54, UC-44.
`trilium` §2§3; `localfirst-workspaces` §1§3; `shard-spectrum-synthesis` §3 (v2).
**UCs:** UC-34, UC-39, UC-55, UC-58, UC-54, UC-44, UC-66, UC-67.
**Tradeoffs:** Lossless fidelity vs a uniform queryable model; diff/search over
structured fields vs prose; one coherent model vs four content shapes.
structured fields vs prose; one coherent model vs many content shapes; effective-vs-own
metadata snapshot vs live computation.
---
@@ -440,18 +468,22 @@ state_hub_task_id: "6837862a-8f57-410d-9200-a6a5dcf1a7b9"
Define how the **coordination journal** relates to an engine's native history (aligns
with and refines T4):
History is a spectrum (synthesis §2): `none → internal-only → open-file → git-native`.
History is a spectrum (synthesis v2 §2): `none → internal-only / CRDT-log → open-file →
git-native`.
- **Adopt** — already git-native (Git folder/repo, Obsidian-with-Git): use as-is.
- **Supplement** — engine history is DB-internal and non-portable
(Confluence, MediaWiki, XWiki `xwikircs`, **Notion** internal page history): the
journal begins now / mirrors forward (UC-36).
- **Adopt** — already git-native (Git folder/repo, Obsidian-with-Git, Logseq files): use
as-is.
- **Supplement** — engine history is non-portable: DB-internal (Confluence, MediaWiki,
XWiki `xwikircs`, **Notion**, **Joplin/Trilium** revisions) or a **CRDT update log**
(Anytype/AFFiNE/AppFlowy): the journal begins now / mirrors forward / snapshots the
replica (UC-36).
- **Import** — engine history is an open file format (TWiki/yawex RCS `.txt,v`,
Foswiki PlainFile timestamped copies): backfill into Git preserving author/timestamp
(UC-41).
- Authoritative journal vs mirror-reconciled-back; one-time vs continuous.
**Inputs:** `xwiki` §2.4; `twiki` §2.1; `foswiki` §2.2; `notion` §4. **UCs:** UC-36, UC-41.
**Inputs:** `xwiki` §2.4; `twiki` §2.1; `foswiki` §2.2; `notion` §4; `joplin` §1;
`trilium` §1; `localfirst-workspaces` §4. **UCs:** UC-36, UC-41.
**Tradeoffs:** Import fidelity vs effort; duplicated history vs single source of truth.
@@ -468,31 +500,47 @@ state_hub_task_id: "f8835969-d118-4738-952a-5e67e5209f3d"
Decide **how and where an adapter binds to a backend**:
**Three attachment modes** (synthesis §2, §3), with a backend possibly offering more
than one — so attach mode is a **per-binding, capability-gated choice**, not a fixed
property:
**Full attachment-mode taxonomy** (synthesis v2 §2, §3), with a backend possibly
offering more than one — so attach mode is a **per-binding, capability-gated choice**,
not a fixed property:
- **File-store direct** — read the on-disk store as a folder shard (Obsidian vault,
TWiki `data/`, DokuWiki, Git repo): offline, git-native, but risks inconsistent reads
under a running engine (UC-40, UC-53).
- **In-engine hosted adapter** — adapter runs *inside* the engine via its extension API
(XWiki components/REST/UIX; TWiki/Foswiki plugin handlers; **Roam Depot**
`onload/onunload` over `roamAlphaAPI`; **Obsidian plugin** over `App.vault`): high
fidelity, needs deploy access (UC-38, UC-50).
- **External-API only** — attach from outside via the backend's REST API, no in-engine
- **File-store direct** — read the on-disk store as a folder shard, in two sub-kinds:
- *native store* — Obsidian vault, **Logseq** `pages/`+`journals/` (with a format
profile parsing `id::`/`key::`), TWiki `data/`, Git repo: offline, git-native, but
risks inconsistent reads under a running engine (UC-40, UC-53, UC-62).
- *interchange / sync mirror* — a tool's documented sync representation on a third-party
target (**Joplin** items on WebDAV/Nextcloud/S3): app-independent, read/projection/
overlay-mostly (the tool owns the format; never re-sync) (UC-60).
- **In-engine hosted adapter** — adapter runs *inside* the app via its extension API
(XWiki components; TWiki/Foswiki handlers; **Roam Depot** over `roamAlphaAPI`;
**Obsidian plugin** over `App.vault`; **Logseq** plugin; **Trilium** scripting code
notes): high fidelity, needs deploy access (UC-38, UC-50).
- **Local-REST** — a localhost API served by the running app (**Joplin** Data API;
**Trilium** ETAPI): app-must-run, token auth (UC-38, links UC-57).
- **External-API only** — attach from outside via a remote REST API, no in-engine
hosting (**Notion**): full write-through without deploy access, but bounded by the
**operational envelope** (rate limit, eventual consistency, payload caps) and a
**scoped, revocable access grant** that enforces no-silent-mutation (UC-57).
- **Dual attach** — a backend offering several modes (Obsidian: file-store *or* plugin;
TWiki: file *or* API): pick per binding; declare which is authoritative (UC-53).
- **Backend-swap tolerance** — shard identity/provenance survives a storage-format
change (Foswiki RCS↔PlainFile; folder→Git) (UC-43).
- **CRDT replica** — hold a local CRDT replica (**Anytype/AFFiNE/AppFlowy**: any-sync/
Yjs/Yrs): the backend merges natively — respect CRDT semantics, don't git-merge; or a
self-host sync endpoint (AFFiNE/AppFlowy Cloud) (UC-64).
- **P2P / no-central-endpoint** — bind a replica or a named peer/node, not a URL
(**Anytype** any-sync), content possibly E2EE (UC-65).
- **Dual / multi attach** — a backend offering several modes (Obsidian/Logseq: file *or*
plugin; TWiki: file *or* API; Joplin: mirror *or* Data API): pick per binding; declare
which is authoritative (UC-53).
- **Backend-swap / substrate-migration tolerance** — shard identity/provenance survives a
storage change (Foswiki RCS↔PlainFile; folder→Git; **Logseq file→SQLite DB-graph**) —
bind to capabilities, not to "it's files" (UC-43).
**Inputs:** `twiki` §5, §6; `xwiki` §3; `foswiki` §2; `roam` §5; `obsidian` §4;
`notion` §4, §6; `shard-spectrum-synthesis` §3. **UCs:** UC-38, UC-40, UC-43, UC-50, UC-53, UC-57.
**Inputs:** `twiki` §5§6; `xwiki` §3; `foswiki` §2; `roam` §5; `obsidian` §4;
`notion` §4, §6; `joplin` §2, §4; `logseq` §4§5; `localfirst-workspaces` §4; `trilium`
§5; `shard-spectrum-synthesis` §3 (v2). **UCs:** UC-38, UC-40, UC-43, UC-50, UC-53,
UC-57, UC-60, UC-62, UC-64, UC-65.
**Tradeoffs:** Fidelity vs deploy access; consistency vs offline capability; external
write-through vs rate-limit/eventual-consistency ceiling.
write-through vs rate-limit/eventual-consistency ceiling; CRDT-replica liveness vs
snapshot simplicity.
---
@@ -513,18 +561,21 @@ Translation is a spectrum (synthesis §2): `native → lossless → lossy-with-f
Markdown overlays back via **bidirectional, lossless translation** (UC-42).
- Feasibility proof: Foswiki **WysiwygPlugin** (TML→HTML for editing, HTML→TML
losslessly on save).
- **Lossy-with-fidelity-report** (UC-59) — for proprietary models that do *not*
round-trip (**Notion** blocks/rich-text/databases; its own Markdown export is lossy):
translate lossily but **make fidelity loss visible** — a per-shard/per-page report of
what projects cleanly vs. degrades, with non-mappable elements preserved as
provenance/sidecar. Fidelity becomes data (union without erasure). Distinct from the
lossless case (UC-42).
- **Lossy-with-fidelity-report** (UC-59) — for models that do *not* round-trip: **Notion**
blocks/rich-text/databases (export is lossy); **Trilium** **HTML** (CKEditor — more
tractable than blocks but still lossy); CRDT/object models. Translate lossily but **make
fidelity loss visible** — a per-shard/per-page report of what projects cleanly vs.
degrades, with non-mappable elements preserved as provenance/sidecar. Fidelity becomes
data (union without erasure). Distinct from the lossless case (UC-42).
- **HTML as a source model** (Trilium) joins TML/Notion-blocks/CRDT in the translation
capability — HTML↔Markdown, lossy-aware.
- **Graceful degradation:** when neither lossless nor acceptable lossy translation is
available, the shard is a read-only/projection participant (UC-03), never silently
corrupted.
- Open: may overlays be stored in Markdown, or must they round-trip in native syntax?
**Inputs:** `foswiki` §5; `twiki` §2.4; `xwiki` §2.5; `notion` §3. **UCs:** UC-42, UC-59, UC-03.
**Inputs:** `foswiki` §5; `twiki` §2.4; `xwiki` §2.5; `notion` §3; `trilium` §4.
**UCs:** UC-42, UC-59, UC-03.
**Tradeoffs:** Translation coverage vs read-only floor; Markdown overlays (portable)
vs native-syntax overlays (safe round-trip); lossy-but-usable vs read-only-but-faithful.
@@ -537,6 +588,7 @@ vs native-syntax overlays (safe round-trip); lossy-but-usable vs read-only-but-f
id: SHARD-WP-0002-T16
status: todo
priority: medium
state_hub_task_id: "b00ca669-59d6-454a-8d6e-f34694e35192"
```
New thread from the conceptual (Xanadu, ZigZag) + modern-tool (Roam, Notion, Obsidian/
@@ -546,28 +598,35 @@ equivalence, and dimensional views depend on. Refines T8 (transclusion/projectio
and T5 (union composition); consumes T11 capabilities.
- **Span addressing** — a portable sub-page address. Adopt **native span IDs** where the
backend mints them (Roam `:block/uid`, Notion UUID) or carries them in-file (Obsidian
`^id`); fall back to **content fingerprint** or path+range otherwise. Open: wrap native
IDs in a shard-scoped address so they survive projection and don't collide across
shards (Xanadu tumbler is the unreached ideal). (UC-51, UC-44.)
backend mints them (Roam `:block/uid`, Notion/CRDT UUID, Joplin/Trilium page-level id)
or carries them in-file (Obsidian `^id`, **Logseq `id::` — block-level AND git-diffable,
the sweet spot**); fall back to **content fingerprint** or path+range otherwise. Open:
wrap native IDs in a shard-scoped address so they survive projection and don't collide
across shards (Xanadu tumbler is the unreached ideal). (UC-51, UC-44.)
- **Content identity** — detect that two pages are the same / derived content by
fingerprint or span-set overlap, **path-independently** — the equivalence mechanism
UC-27 left open. Enables reverse transclusion (UC-45). (UC-46.)
- **Identity vs placement** — separate **page identity from placement** (Trilium **note vs
branch**: a page cloned into many locations = a DAG). One entity, N placements (paths/
shards); no single canonical path — the namespace-level form of the clone/reference
primitive. (UC-66, UC-22.)
- **Transclusion as one reference-not-copy primitive** — unify Xanadu transclusion,
ZigZag clone, Roam/Obsidian embed, Notion synced block over the addressable union
(synthesis §3). Compose-by-reference pages (UC-44) and reverse lookup (UC-45) are
views over it.
ZigZag clone, Roam/Obsidian/Logseq embed, Notion synced block, **Trilium note cloning**
over the addressable union (synthesis v2 §3). Compose-by-reference pages (UC-44) and
reverse lookup (UC-45) are views over it.
- **Dimensional / query navigation** — model the union so each relationship (namespace,
genealogy, version, shard, equivalence, links) is a navigable **dimension** (ZigZag),
and a page can be **query-defined** (Dataview/Notion linked DB, UC-54). **Delegate**
view computation to a shard's native query engine where present (Roam Datalog, Notion
DB query, XWiki XWQL); else compute over the projection. (UC-47, UC-48, UC-52, UC-54.)
view computation to a shard's native query engine where present (Roam/Logseq Datalog,
Notion/AppFlowy DB query, XWiki XWQL); **else build a derived index over the
projection** (Logseq DataScript-over-files pattern, UC-63). (UC-47, UC-48, UC-52,
UC-54, UC-63.)
- **Boundary:** this is a **derived lens over canonical files+journal**, never a new
store (ZigZag dive §6); the many-to-many link graph stays a graph index, not a rank.
**Inputs:** `xanadu` §2§5; `zigzag` §2§6; `roam` §2§4, §7; `notion` §2; `obsidian`
§2§3; `shard-spectrum-synthesis` §3§5. **UCs:** UC-44, UC-45, UC-46, UC-47, UC-48,
UC-51, UC-52, UC-54.
§2§3; `logseq` §1§3; `trilium` §2§3; `shard-spectrum-synthesis` §3§5 (v2).
**UCs:** UC-44, UC-45, UC-46, UC-47, UC-48, UC-51, UC-52, UC-54, UC-63, UC-66.
**Tradeoffs:** Native-ID adoption (cheap, backend-coupled) vs a portable address scheme
(harder, uniform); core navigation API vs internal organizing concept; query delegation
@@ -580,14 +639,14 @@ UC-51, UC-52, UC-54.
- `spec/FederationArchitecture.md` exists with all ten federation topic sections
(T1T10) and an explicit **decisions / deferred / open** table per topic.
- The **adapter contract** section of `spec/TechnicalSpecificationDocument.md` exists,
populated by T11T16, with the capability vocabulary (T11, the **eleven spectra**)
populated by T11T16, with the capability vocabulary (T11, the **thirteen spectra**)
reconciled against the T10 federation-ops matrix.
- Each decision honors INTENT: mechanism over policy, union without erasure,
overlay before mutation, no silent remote mutation, shard sovereignty,
capability-aware adapters, Markdown-first / backend-neutral.
- UC-26UC-59 are traceable to architecture / adapter-contract sections
(UC-34UC-43 to T11T15; UC-44UC-59 to T11T16 per
`research/260614-shard-spectrum-synthesis/findings.md` §4).
- UC-26UC-67 are traceable to architecture / adapter-contract sections
(UC-34UC-43 to T11T15; UC-44UC-67 to T11T16 per
`research/260614-shard-spectrum-synthesis/findings.md` §4, v2).
- Conflicts or dependencies on `SHARD-WP-0001` outputs are listed (e.g.
namespace model affects equivalent-page identity; page model T12 affects
resolution/overlays).
@@ -607,7 +666,7 @@ UC-51, UC-52, UC-54.
**Adapter contract (T11T16)** — can start in parallel with T1; T11 first as it
frames the rest, and pair it with T10 (shared capability vocabulary):
7. T11 contract & the eleven capability spectra (frames T12T16; sync with T10)
7. T11 contract & the thirteen capability spectra (frames T12T16; sync with T10)
8. T12 page model + T13 history portability (parallel; T13 aligns with T4)
9. T14 binding + T15 syntax translation (parallel)
10. T16 addressing, identity & navigation (refines T8/T5; finalize adapter-contract spec)