diff --git a/.claude/ralph-loop.local.md b/.claude/ralph-loop.local.md
deleted file mode 100644
index e7a68d8..0000000
--- a/.claude/ralph-loop.local.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-active: true
-iteration: 1
-session_id: b24b53ca-a25b-4a18-8331-925c4100d39f
-max_iterations: 20
-completion_promise: "HEUREKA"
-workplan_id: SHARD-WP-0004
-workplan_file: workplans/SHARD-WP-0004-computational-knowledge-systems.md
-started_at: "2026-06-14T20:35:07Z"
----
-
-Read the workplan at `workplans/SHARD-WP-0004-computational-knowledge-systems.md`.
-
-If every task has `status: done` AND frontmatter `status: done`:
-run `rm -f .claude/ralph-loop.local.md` first (deactivates the loop so the stop hook exits cleanly),
-then output HEUREKA.
-
-Otherwise implement the next `todo` task as described in the workplan.
-Set task `in_progress` when starting, `done` when complete.
-When all tasks are done set frontmatter `status: done`.
-
diff --git a/SCOPE.md b/SCOPE.md
index 9b46f89..96530a6 100644
--- a/SCOPE.md
+++ b/SCOPE.md
@@ -22,7 +22,7 @@ Learnings update both SCOPE and INTENT where necessary.
| Research | yawex prior art; c2 origins; federation concepts; wikiengines overview (`research/260608-*/`); XWiki/TWiki/Foswiki deep dives (`research/260613-*/`); Xanadu + ZigZag + Roam + Obsidian + Notion + Joplin + Logseq + local-first workspaces (Anytype/AFFiNE/AppFlowy) + Trilium + Wiki.js + Federated Wiki + Wikibase + git-forge wikis + TiddlyWiki + ikiwiki + Quip + MojoMojo + Oddmuse + UseModWiki deep dives & shard-spectrum synthesis (`research/260614-*/`) |
| Demand | NetKingdom integration asks captured, not yet negotiated |
| Spec | Architecture blueprint drafted; UseCaseCatalog 84 UCs from research; PRD/TSD scaffolds |
-| Work | `SHARD-WP-0001` active (6 tasks); `SHARD-WP-0002` active (16 tasks: T1–T10 federation + T11–T16 adapter contract); `SHARD-WP-0003` **done** (9 engine dives complete); `SHARD-WP-0004` **done** (all 8 computational-knowledge dives T1–T8 complete + "computational page model" synthesis) |
+| Work | `SHARD-WP-0001` active (6 tasks); `SHARD-WP-0002` active (18 tasks: T1–T10 federation + T11–T16 adapter contract + T17 federation-model taxonomy + T18 computational content, re-folded from synthesis v3 + the computational page model); `SHARD-WP-0003` **done** (9 engine dives complete); `SHARD-WP-0004` **done** (all 8 computational-knowledge dives T1–T8 complete + "computational page model" synthesis) |
## In Scope (today)
diff --git a/workplans/SHARD-WP-0002-federation-architecture.md b/workplans/SHARD-WP-0002-federation-architecture.md
index 3ac6b4e..3132f0b 100644
--- a/workplans/SHARD-WP-0002-federation-architecture.md
+++ b/workplans/SHARD-WP-0002-federation-architecture.md
@@ -8,7 +8,7 @@ status: active
owner: tegwick
topic_slug: whynot
created: "2026-06-08"
-updated: "2026-06-14"
+updated: "2026-06-15"
depends_on:
- SHARD-WP-0001
state_hub_workstream_id: "2af4c46d-cbfd-40ea-a94b-d9e60b0f9945"
@@ -35,14 +35,25 @@ 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`, **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.
+Tertiary deliverable (T17–T18, added 2026-06-15): two **selectable-axis** deliverables
+re-folded from the later syntheses — **T17 the federation-model taxonomy** (federation is
+plural and composable, from synthesis **v3**) and **T18 the computational / executable
+content capability** (from the SHARD-WP-0004 "computational page model" synthesis).
+
+The cross-dive synthesis (`research/260614-shard-spectrum-synthesis/findings.md`, **v3
+2026-06-14** — extended across ~23 systems incl. the SHARD-WP-0003 engine batch: Federated
+Wiki, Wikibase, the git-forge wikis, TiddlyWiki, ikiwiki, Quip, MojoMojo, Oddmuse,
+UseModWiki, on top of v2's Joplin/Logseq/CRDT-cohort/Trilium) reframes the contract around
+**fifteen capability spectra** — the thirteen of v2 (addressing, content identity,
+**identity-vs-placement**, structure, history, **merge model**, native query, translation,
+attachment mode, operational envelope, access grant, **content opacity**, write
+granularity) plus **#14 provenance granularity** (v3: per-shard → per-page → per-edit →
+per-statement/value) and **#15 computational / liveness** (SHARD-WP-0004: static → captured-
+output → live-over-files → view-time → irreducibly-live) — positions on a spectrum anchored
+at both ends by a real system, with federation ops degrading by position, rather than a flat
+verb checklist. v3 also adds a **coordination-layer axis** (the federation-model taxonomy,
+T17) and the **computational page model** adds a **two-axis projection model** (replication↔
+derivation-projection × live↔snapshot, T16/T18).
## Context
@@ -73,10 +84,30 @@ checklist.
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-26–UC-67; UC-34–UC-43 are the
- engine-attachment cases, UC-44–UC-67 the conceptual + modern-tool cases)
+- Engine batch + federation-model inputs (T17 + spectra extensions, 2026-06-14, SHARD-WP-0003):
+ - `research/260614-federated-wiki-deep-dive/findings.md` (fork+journal federation; story =
+ semantic-action replay — the coordination-journal anchor)
+ - `research/260614-wikibase-deep-dive/findings.md` (typed entity-statement graph; SPARQL +
+ federated `SERVICE` = query-time graph-join federation; per-statement provenance/rank)
+ - `research/260614-forge-wikis-deep-dive/findings.md` (Gitea/GitLab/GitHub: git IS the
+ store — resolves the engine-mirror write-race; the home case)
+ - `research/260614-{tiddlywiki,ikiwiki,quip,mojomojo,oddmuse,usemodwiki}-deep-dive/findings.md`
+ (whole-file write-granularity; VCS-replication+ping federation; direct-DB binding; the
+ flat-file floor)
+- Computational / interactive-knowledge inputs (T18 + page-model/projection extensions,
+ 2026-06-14/15, SHARD-WP-0004):
+ - `research/260614-{literate-programming,jupyter,mathematica,processing,strudel,
+ squeak-pharo,glamorous-toolkit}-deep-dive/findings.md` (one-source-many-projections;
+ notebook computed-output provenance; program-as-page; live↔snapshot; moldable views;
+ image-is-not-a-store)
+ - `research/260614-computational-page-model-synthesis/findings.md` (**the computational
+ page model**: source/derivation/projection, two axes, four page shapes, execution-as-
+ gated-capability)
+- Cross-dive synthesis: `research/260614-shard-spectrum-synthesis/findings.md` (**synthesis
+ v3**: the fifteen capability spectra, shard family matrix across ~23 systems, the
+ federation-model taxonomy §2.5, UC-34–UC-82 → task fold-in)
+- Use cases: `spec/UseCaseCatalog.md` (UC-26–UC-84; UC-34–UC-43 engine-attachment, UC-44–UC-67
+ conceptual + modern-tool, UC-68–UC-82 engine-batch, UC-83–UC-84 computational)
- 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,
@@ -100,6 +131,7 @@ decision records only.
| Transclusion depth | Whole-page projection vs inline span | UC-03, UC-32 |
| Consensus presets | Spread, merge, designated canonical — policy not core | UC-07, UC-27 |
| Capability matrix | Which federation ops require which adapter capabilities | UC-02–UC-07 |
+| **Federation-model taxonomy** (T17) | Federation is **plural & composable**: fork+journal / VCS-replication+ping / query-time graph-join / feed-aggregation / activity-streams / engine-mirror — selectable, not one model | UC-26, UC-31, UC-33, UC-71, UC-72, UC-74 |
### Adapter-contract topics (T11–T16, from engine + modern-tool dives)
@@ -110,7 +142,8 @@ decision records only.
| 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 |
+| Addressing, identity & navigation (T16) | Span addressing; content identity; **identity≠placement**; transclusion-as-reference; **derived query index**; dimensional/query views; **two-axis projection** (replication↔derivation × live↔snapshot); **moldable view registry** | UC-44, UC-45, UC-46, UC-47, UC-48, UC-51, UC-52, UC-54, UC-63, UC-66, UC-83 |
+| **Computational / executable content** (T18) | Source canonical, render = projection; **in scope as page-model+projection, out as execution platform**; execute = gated capability, degrade to snapshot | UC-54, UC-55, UC-83, UC-84 |
---
@@ -371,9 +404,10 @@ taking `Foswiki::Store` + `Foswiki::Meta` as direct prior art (a real engine tha
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 thirteen spectra** (synthesis v2 §2), each a *position* not a
- boolean, so federation ops degrade by position:
+ transclude-source, translate-syntax, structured-payload, derive-projection,
+ execute/evaluate` (reconcile with T10; `derive-projection`/`execute` are gated, T18).
+- **Capability profile = the fifteen spectra** (synthesis v3 §2 + SHARD-WP-0004), each a
+ *position* not a boolean, so federation ops degrade by position:
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)
@@ -390,14 +424,24 @@ already separates store backend from core behind a stable interface).
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)
+ 12. **content opacity** (plaintext → **structured re-evaluable value** [Wolfram expr] →
+ encrypted-at-rest whole-shard → **per-item** → proprietary-lossy-exportable)
+ 13. write granularity (whole-file [TiddlyWiki] → per-page/note → section/anchor →
+ per-block → story-item)
+ 14. **provenance granularity** (v3: per-shard → per-page → per-edit →
+ per-statement/value, e.g. Wikibase claim references + rank)
+ 15. **computational / liveness** (SHARD-WP-0004: static source → captured-output snapshot
+ → live-over-files → view-time render → irreducibly-live/temporal) — pairs with the
+ T16/T18 projection axes
- 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 (v2). **Provides** the vocabulary T10's matrix
-consumes. **UCs:** UC-02, UC-35, UC-38, UC-57, UC-61, UC-64.
+`260614-shard-spectrum-synthesis` §2, §5 (**v3** — fifteen spectra incl. provenance
+granularity + computational/liveness); `260614-wikibase-deep-dive` (per-statement
+provenance/rank). **Provides** the vocabulary T10's matrix consumes; the computational/
+execute capabilities are detailed in **T18**. **UCs:** UC-02, UC-35, UC-38, UC-57, UC-61,
+UC-64, UC-75, UC-83, UC-84.
**Tradeoffs:** Rich capability set (precise degradation) vs contract complexity;
static profile vs runtime capability negotiation.
@@ -445,10 +489,21 @@ The model must stretch **many ways at once** (synthesis v2 §3): prose Markdown,
(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).
+- **Typed-graph statements** (UC-73): Wikibase claim + qualifiers + references + rank — the
+ structure far-end (a true knowledge graph), beyond Notion DB / XWiki XObjects.
+- **Computational page shapes** (UC-83, UC-84 — detailed in **T18**): the model must also
+ carry (a) **one-source-many-projections** (literate source → co-equal derived views, UC-83);
+ (b) **notebook** — **ordered/nestable cells** where code cells own **embedded computed
+ outputs** (derived output stored *inside* the source) with weak provenance, outputs being
+ MIME blobs *or* **structured re-evaluable values** (UC-84); (c) **program-as-page** (source
+ text, no cached output); (d) **live/temporal content** (source + marked recording). All
+ reduce to *(source, derivation rule, projection with provenance + liveness)*.
**Inputs:** `xwiki` §2.3; `twiki` §2.3; `foswiki` §4; `notion` §2–§3; `obsidian` §3;
-`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.
+`trilium` §2–§3; `localfirst-workspaces` §1–§3; `wikibase` §1; `literate-programming`;
+`jupyter`; `mathematica`; `shard-spectrum-synthesis` §3 (v3);
+`computational-page-model-synthesis` §3. **UCs:** UC-34, UC-39, UC-55, UC-58, UC-54, UC-44,
+UC-66, UC-67, UC-73, UC-83, UC-84.
**Tradeoffs:** Lossless fidelity vs a uniform queryable model; diff/search over
structured fields vs prose; one coherent model vs many content shapes; effective-vs-own
@@ -480,10 +535,17 @@ git-native`.
- **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).
+- **DB-version-rows** (MojoMojo) — relational version rows as a third import source beside
+ git commits and RCS files; **partial/truncated** flat-file history (Oddmuse `keep/`) must
+ be reported honestly ("history begins at", UC-24), never implied complete.
+- **Embedded-output documents** (notebooks, T18) — `.ipynb` JSON diffs are noisy; record
+ **text-pairing (Jupytext)** / **cell-aware merge (nbdime)** and the **outputs-as-derived**
+ (nbstripout) stance as the history-portability strategy for source-with-embedded-output.
- Authoritative journal vs mirror-reconciled-back; one-time vs continuous.
**Inputs:** `xwiki` §2.4; `twiki` §2.1; `foswiki` §2.2; `notion` §4; `joplin` §1;
-`trilium` §1; `localfirst-workspaces` §4. **UCs:** UC-36, UC-41.
+`trilium` §1; `localfirst-workspaces` §4; `mojomojo` §1, §4; `oddmuse` §2; `jupyter` §3.
+**UCs:** UC-36, UC-41, UC-24.
**Tradeoffs:** Import fidelity vs effort; duplicated history vs single source of truth.
@@ -529,14 +591,26 @@ not a fixed property:
- **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).
+- **Git-IS-the-store** (forge wikis Gitea/GitLab/GitHub, ikiwiki) — the wiki is a
+ `.wiki.git` / source repo of Markdown; git-clone is universal and git **is** the canonical
+ store and journal at once (the home case; resolves the engine-mirror write-race — bind to
+ git, not to a DB-mirror) (UC-76, UC-79).
+- **Direct-DB read** (MojoMojo) — no file store and no API; the adapter maps a relational
+ **schema → page model + journal** (a versioned coupling that can drift, UC-43); default
+ read/projection/overlay (UC-81).
- **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).
+- **Boundary — image-is-not-a-store** (Squeak/Pharo, T18): a monolithic live-memory blob
+ (image, kernel) is **never an attach target**; it participates only via **export→files**
+ (a degrading derivation-projection). Generalizes "attach the files, not the kernel/image"
+ (notebooks UC-84, GT/Lepiter).
**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.
+§5; `forge-wikis`; `ikiwiki` §1; `mojomojo` §2; `squeak-pharo` §2–§3;
+`shard-spectrum-synthesis` §3 (v3). **UCs:** UC-38, UC-40, UC-43, UC-50, UC-53,
+UC-57, UC-60, UC-62, UC-64, UC-65, UC-76, UC-79, UC-81.
**Tradeoffs:** Fidelity vs deploy access; consistency vs offline capability; external
write-through vs rate-limit/eventual-consistency ceiling; CRDT-replica liveness vs
@@ -569,6 +643,11 @@ Translation is a spectrum (synthesis §2): `native → lossless → lossy-with-f
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.
+- **Typed-graph & non-Markdown computed content** (T18): Wikibase statements (UC-73),
+ notebook MIME-bundle outputs, and `.ipynb`/`.nb` JSON are **not Markdown** — keep the
+ native form canonical, treat any Markdown as a lossy projection; add a **structured
+ re-evaluable value** point to the opacity spectrum (Wolfram expression) between
+ transparent-text and opaque-blob.
- **Graceful degradation:** when neither lossless nor acceptable lossy translation is
available, the shard is a read-only/projection participant (UC-03), never silently
corrupted.
@@ -611,9 +690,22 @@ and T5 (union composition); consumes T11 capabilities.
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/Logseq embed, Notion synced block, **Trilium note cloning**
- over the addressable union (synthesis v2 §3). Compose-by-reference pages (UC-44) and
+ ZigZag clone, Roam/Obsidian/Logseq embed, Notion synced block, **Trilium note cloning**,
+ and **literate named-chunk** assembly (`<>` resolved by name at derivation time,
+ UC-83) over the addressable union (synthesis v3 §3). Compose-by-reference pages (UC-44) and
reverse lookup (UC-45) are views over it.
+- **Two-axis projection model** (T18, the computational page model): split projection into
+ **replication-projection** (lazy cache of remote content — the current default) vs
+ **derivation-projection** (transform/compile/weave/evaluate a source), with facets
+ *materialization timing* (ahead-of-time vs view-time), *multiplicity* (one output vs N
+ co-equal projections), and *continuity* (one-shot vs continuous); crossed with the
+ **live↔snapshot** axis (static → captured → live-over-files → view-time → irreducibly-live).
+ Every computed/live view declares its liveness + provenance; the far end has no faithful
+ static form (source + marked recording).
+- **Moldable view registry** (Glamorous Toolkit) — generalize "a projection" to an **open,
+ type-keyed set of co-equal, possibly-computed views, none canonical** (display-canonical is
+ policy). Unifies replication-/derivation-/dimensional-(ZigZag)/query-(Dataview) projection
+ and answers UC-55's pluggable-content-type/view-registry question. (UC-47, UC-48, UC-54.)
- **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**
@@ -625,8 +717,10 @@ and T5 (union composition); consumes T11 capabilities.
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; `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.
+§2–§3; `logseq` §1–§3; `trilium` §2–§3; `wikibase` (federated `SERVICE` / graph query);
+`literate-programming`; `glamorous-toolkit`; `shard-spectrum-synthesis` §3–§5 (v3);
+`computational-page-model-synthesis` §2. **UCs:** UC-44, UC-45, UC-46, UC-47, UC-48, UC-51,
+UC-52, UC-54, UC-63, UC-66, UC-74, UC-83.
**Tradeoffs:** Native-ID adoption (cheap, backend-coupled) vs a portable address scheme
(harder, uniform); core navigation API vs internal organizing concept; query delegation
@@ -634,19 +728,115 @@ and T5 (union composition); consumes T11 capabilities.
---
+# Re-folded syntheses (2026-06-15)
+
+These two tasks re-fold the later syntheses — **synthesis v3** (the federation-model
+taxonomy) and the **SHARD-WP-0004 "computational page model"** — into this workplan as
+**selectable-axis** deliverables. T17 is a federation-architecture concern (cross-links
+T1–T6); T18 is an adapter-contract concern (cross-links T11–T16).
+
+## Federation-model taxonomy: selectable / composable federation
+
+```task
+id: SHARD-WP-0002-T17
+status: todo
+priority: high
+```
+
+Specify federation as a **plural, composable coordination-layer axis** rather than a single
+model (synthesis v3 §2.5). Document each model, its capability prerequisites, and how
+shard-wiki selects/composes them per information space:
+
+| Model | Anchor system | Coordination shape | Primary UCs |
+|-------|---------------|--------------------|-------------|
+| **Fork + journal** | Federated Wiki | copy-with-provenance + per-page semantic-action journal (story = replay) | UC-26, UC-71, UC-72 |
+| **VCS-replication + ping** | ikiwiki | git clone/pull/push + XML-RPC change-ping | UC-31, UC-33, UC-79 |
+| **Query-time graph-join** | Wikibase SPARQL `SERVICE` | join remote graphs at query time, no copy | UC-74 |
+| **Feed aggregation** | RSS/Atom (ikiwiki `aggregate`) | inbound feed → pages | UC-03 |
+| **Activity streams** | ActivityPub | Create/Update events as notification or content-bearing share | UC-31 |
+| **Engine-mirror** | Wiki.js (DB↔Git) | engine syncs its own store to a git mirror | UC-68, UC-69 |
+
+- The **coordination journal** (T4) is the **fork+journal** model's natural home; **git IS
+ the journal** in VCS-replication and engine-mirror (forge wikis make git the store *and*
+ journal at once, resolving the engine-mirror write-race — git-IS-store, T14).
+- Models are **selectable per space and composable** (e.g. fork+journal locally, query-join
+ for a typed-graph shard, feed-aggregation for an external source) — mechanism over policy.
+- Cross-link: T1 (positioning names the taxonomy), T2 (fork is one remix primitive among
+ many), T4 (journal shapes), T5 (composition), T6 (notification transports).
+
+**Inputs:** `federated-wiki` (fork/journal); `ikiwiki` §2 (VCS-replication+ping, aggregate);
+`wikibase` (federated `SERVICE`); `wikijs` (engine-mirror); `260608-federation-concepts`;
+`shard-spectrum-synthesis` §2.5 (v3). **UCs:** UC-26, UC-31, UC-33, UC-68, UC-69, UC-71,
+UC-72, UC-74, UC-79.
+
+**Tradeoffs:** One uniform model (simpler) vs plural/composable (faithful to heterogeneity);
+query-time join freshness vs cost; activity-streams reach vs fediverse dependency.
+
+---
+
+## Computational / executable content capability
+
+```task
+id: SHARD-WP-0002-T18
+status: todo
+priority: medium
+```
+
+Specify how shard-wiki treats **computational / executable / live page content**, re-folded
+from the SHARD-WP-0004 *computational page model* synthesis. **Headline decision to record:
+computational content is IN scope as a page-model + projection concern, OUT of scope as an
+execution platform.**
+
+- **The model:** source is canonical; everything rendered/computed is a **projection** placed
+ on two axes (replication↔derivation × live↔snapshot, defined in T16). Four computational
+ page shapes (detailed in T12): one-source-many-projections (UC-83), notebook with embedded
+ computed-output provenance (UC-84), program-as-page, live/temporal content.
+- **Recognition + projection, not execution:** shard-wiki recognizes computational types,
+ attaches the **canonical source**, and presents derived forms as **provenance- and
+ liveness-marked projections** — needing no kernel/sandbox/runtime for the base case.
+- **Execution as a gated capability** (T11 `derive-projection`/`execute` verbs): driving a
+ derivation (tangle/weave, re-execute a notebook, render a sketch, evaluate a pattern in the
+ viewer) is **off by default**, carries a **trust/sandbox** sub-concern, and **degrades to a
+ captured snapshot / static render / recording** when absent (graceful degradation).
+- **One snapshot-provenance record** reused for notebook outputs, renders, and recordings
+ (run id, source rev, timestamp, environment "unguaranteed") — reuses UC-84 machinery and is
+ consistent with partial-history honesty (UC-82).
+- **Hard boundaries** (design-bugs if violated): never host a kernel/runtime as the store
+ (**image-is-not-a-store**, T14); never present a derivation without output→source
+ provenance; never imply a static view captures a live artifact (union without erasure).
+- **No INTENT amendment required** — this extends the page model (T12) and projection model
+ (T16) within existing constraints (mechanism over policy, capability-aware, degradable).
+
+**Inputs:** the seven SHARD-WP-0004 dives (`literate-programming`, `jupyter`, `mathematica`,
+`processing`, `strudel`, `squeak-pharo`, `glamorous-toolkit`);
+`computational-page-model-synthesis` §1–§6. **Feeds** T11 (verbs + spectra #12/#15), T12
+(page shapes), T13 (paired-text history), T14 (image-is-not-a-store), T15 (non-Markdown
+computed content), T16 (two-axis projection + moldable views). **UCs:** UC-54, UC-55, UC-83,
+UC-84.
+
+**Tradeoffs:** Recognize-only (safe, limited) vs sandboxed execution (rich, complex/risky);
+live render fidelity vs snapshot simplicity; per-shard execute policy vs global off-by-default.
+
+---
+
## Acceptance criteria
- `spec/FederationArchitecture.md` exists with all ten federation topic sections
(T1–T10) and an explicit **decisions / deferred / open** table per topic.
- The **adapter contract** section of `spec/TechnicalSpecificationDocument.md` exists,
- populated by T11–T16, with the capability vocabulary (T11, the **thirteen spectra**)
+ populated by T11–T16 + T18, with the capability vocabulary (T11, the **fifteen spectra**)
reconciled against the T10 federation-ops matrix.
+- The **federation-model taxonomy** (T17) is documented in `spec/FederationArchitecture.md`
+ as a selectable/composable coordination-layer axis cross-linked from T1–T6.
+- The **computational page model** (T18) is recorded with its headline decision
+ (in scope as page-model+projection, out as execution platform; execute = gated capability).
- 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-26–UC-67 are traceable to architecture / adapter-contract sections
- (UC-34–UC-43 to T11–T15; UC-44–UC-67 to T11–T16 per
- `research/260614-shard-spectrum-synthesis/findings.md` §4, v2).
+- UC-26–UC-84 are traceable to architecture / adapter-contract sections
+ (UC-34–UC-43 to T11–T15; UC-44–UC-82 to T11–T17; UC-83–UC-84 to T18; per
+ `research/260614-shard-spectrum-synthesis/findings.md` §4 (v3) and
+ `research/260614-computational-page-model-synthesis/findings.md` §6).
- Conflicts or dependencies on `SHARD-WP-0001` outputs are listed (e.g.
namespace model affects equivalent-page identity; page model T12 affects
resolution/overlays).
@@ -666,7 +856,11 @@ and T5 (union composition); consumes T11 capabilities.
**Adapter contract (T11–T16)** — 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 thirteen capability spectra (frames T12–T16; sync with T10)
+7. T11 contract & the fifteen capability spectra (frames T12–T16; 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)
\ No newline at end of file
+10. T16 addressing, identity & navigation + the two-axis projection model (refines T8/T5)
+
+**Re-folded syntheses (T17–T18):**
+11. T17 federation-model taxonomy (with T1; cross-links T2/T4/T5/T6)
+12. T18 computational / executable content (after T11/T12/T16; finalize adapter-contract spec)
\ No newline at end of file