generated from coulomb/repo-seed
Consolidates the 8 computational/interactive-knowledge dives into one source/derivation/projection model on two axes (replication<->derivation, live<->snapshot); four computational page shapes; recommendation that executable content is in scope as a page-model+projection concern, out of scope as an execution platform (capability-gated, degrade to snapshot; no INTENT amendment). Flips SHARD-WP-0004 status: done. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
179 lines
11 KiB
Markdown
179 lines
11 KiB
Markdown
# The computational page model — synthesis (SHARD-WP-0004)
|
||
|
||
**Date:** 2026-06-15 · **Source:** SHARD-WP-0004 (post-batch synthesis, T1–T8) · **Kind:**
|
||
synthesis (no new external research) reading the eight computational/interactive-knowledge
|
||
dives *across* each other.
|
||
|
||
## What this is
|
||
|
||
The acceptance-criteria synthesis for SHARD-WP-0004. The batch asked one carried question:
|
||
*can a shard-wiki page be a live computational artifact — a source woven/evaluated into
|
||
rendered forms — and if so, how do projection, transclusion, provenance, and the adapter
|
||
contract treat the source, the environment, and the computed output?* This memo answers it
|
||
by distilling the eight dives into **one model**: the **source / derivation / projection**
|
||
view of computational content, anchored on two axes, plus a recommendation on whether
|
||
shard-wiki needs an executable-content capability.
|
||
|
||
Dives consolidated: **T1** literate programming (WEB/weave/tangle), **T2** Mathematica,
|
||
**T3** Jupyter, **T4** Processing/p5.js, **T5** Strudel, **T6** Squeak, **T7** Glamorous
|
||
Toolkit, **T8** Pharo. Catalog yield: **UC-83** (literate one-source-many-projections),
|
||
**UC-84** (notebook with computed-output provenance); the other six are **enrichment/boundary**
|
||
dives (UC-54/55/47/48 + the projection model).
|
||
|
||
## 1. The one finding: source is canonical, everything rendered is a projection
|
||
|
||
Every system in the batch, however "live," **externalizes to a canonical artifact** and
|
||
treats the rendered/computed form as **derived**:
|
||
|
||
| System | Canonical (attach this) | Derived (a projection) |
|
||
|--------|-------------------------|------------------------|
|
||
| Literate (WEB) | the WEB/`.nw`/`.org` **source** | woven docs **and** tangled code |
|
||
| Mathematica | the `.nb` (a Wolfram expression) | cached `Output` cells; CDF; `Dynamic` widgets |
|
||
| Jupyter | `.ipynb` source (ideally paired text) | embedded outputs; nbconvert/nbviewer renders |
|
||
| Processing | the **sketch source** | the view-time canvas render |
|
||
| Strudel | the **pattern source** | the live audio performance / a recording |
|
||
| GT / Lepiter | git-versionable **page/Tonel files** | moldable `gtView`s; live snippet results |
|
||
| Squeak/Pharo | exported **files** (Tonel/git) | the live image / running objects |
|
||
|
||
**This is the same principle shard-wiki already holds** (files-canonical, index/render
|
||
derived — ikiwiki UC-79, Logseq UC-62, nbstripout). The computational batch did not break it;
|
||
it **stress-tested it to the live extreme and it held**. *The image (Squeak/Pharo) is the
|
||
only would-be exception, and it is a boundary, not a counterexample: an image is not a store.*
|
||
|
||
## 2. Two axes the contract must add
|
||
|
||
The batch refines the **projection model** (SHARD-WP-0002 T16) with two orthogonal axes:
|
||
|
||
### 2.1 Projection kind: replication vs derivation
|
||
- **Replication-projection** (the existing default): a lazy **cache/copy** of remote content
|
||
(Obsidian/Notion mirrors, UC-53/57).
|
||
- **Derivation-projection** (new, from T1): a **transform/compile/weave/evaluate** of a
|
||
source into rendered forms — regenerable, may delegate to the source's tool, **degrades to
|
||
a captured snapshot** when the tool is absent. Covers weave/tangle, nbconvert, CDF, sketch
|
||
render, audio recording, `gtView`.
|
||
|
||
Sub-facets of derivation (from T4): **materialization timing** = *ahead-of-time* (CDF,
|
||
nbconvert, static HTML) vs *view-time* (Processing/Strudel); **multiplicity** = one output
|
||
(UC-79) vs **N co-equal projections** (UC-83 weave+tangle; UC-47/48/54 moldable views).
|
||
|
||
### 2.2 Liveness: the live↔snapshot axis (from T6, bounded by T5)
|
||
Every derived view sits on a spectrum, and the more live the source, the more its static form
|
||
is a clearly-marked degrading snapshot:
|
||
|
||
```
|
||
static source ── captured output ── live-over-files ── view-time one-shot ── continuous/
|
||
(literate) (notebook UC-84) (GT/Lepiter) (Processing) interactive
|
||
── irreducibly
|
||
live/temporal
|
||
(Strudel: source
|
||
+ recording only)
|
||
```
|
||
|
||
**Honesty rule (union-without-erasure):** a computed/live view must always declare *what it
|
||
is* — "captured at run N, environment unguaranteed" (UC-84), "one performance, time T, source
|
||
rev R" (UC-83/Strudel), "live render needs the runtime." Never present a snapshot as live or a
|
||
static page as capturing a live artifact.
|
||
|
||
## 3. The computational page-model shapes (T12)
|
||
|
||
The batch adds these page shapes (beyond prose / typed records / query-defined / inline-
|
||
embedded objects / typed-graph already catalogued):
|
||
|
||
1. **One-source-many-projections** (UC-83) — a source whose presented forms are co-equal
|
||
derivations (docs + code), each with output→source provenance; **named-chunk transclusion**
|
||
assembles fragments by name at derivation time (UC-32/44).
|
||
2. **Notebook** (UC-84) — **ordered/nestable cells** (Mathematica adds the outline tree)
|
||
where code cells own **embedded computed outputs** (the derived output is stored *inside*
|
||
the source) with **weak execution provenance**; outputs may be MIME blobs or **structured
|
||
re-evaluable values** (Mathematica) — a new point on the content-opacity spectrum.
|
||
3. **Program-as-page** (Processing) — canonical content = **source text**, presentation = an
|
||
**executable render** with **no cached output**; non-Markdown executable content.
|
||
4. **Live/temporal/generative content** (Strudel) — source canonical, render irreducibly
|
||
live; static = source + a marked recording.
|
||
|
||
All four reduce to **(source, derivation rule, projection with provenance + liveness)** — one
|
||
model, four positions.
|
||
|
||
## 4. Provenance & reproducibility (the honest weakness)
|
||
|
||
Computed output provenance is **real but fragile** everywhere: Jupyter/Mathematica
|
||
`execution_count`/`In`-`Out` can be **out-of-order**; **environment/versions/data are not
|
||
captured**; Strudel/Processing may be **non-deterministic**. Implication for the contract:
|
||
treat a computed output as a **snapshot with declared, incomplete provenance** (run id, source
|
||
rev, timestamp; environment "unguaranteed"), reusing **one snapshot-provenance machinery**
|
||
across notebooks, recordings, and renders (UC-84 is the template). This is consistent with
|
||
shard-wiki's existing "surface freshness/completeness, never imply more than you have"
|
||
(Oddmuse partial-history UC-82).
|
||
|
||
## 5. The recommendation
|
||
|
||
**Does shard-wiki need an executable/computational content capability? — Yes, but only as
|
||
recognition + projection + capability-gating, never as an execution engine.**
|
||
|
||
1. **Adopt the source/derivation/projection model** (no execution required). shard-wiki
|
||
**recognizes** computational content types (literate source, notebook, sketch, pattern),
|
||
**attaches the canonical source**, and **presents derived forms as projections with
|
||
provenance + liveness markers**. This alone delivers UC-83/UC-84 and the enrichment of
|
||
UC-54/55 — and needs **no kernel, no sandbox, no runtime**.
|
||
2. **Make execution a capability, off by default.** "Drive a derivation" (run tangle/weave,
|
||
re-execute a notebook, render a sketch, evaluate a pattern in the viewer) is a **gated
|
||
capability** with a **trust/sandbox** sub-concern (T11). Absent it, **degrade to the
|
||
captured snapshot / static render / recording** — the graceful-degradation rule, which the
|
||
batch shows always has an honest fallback (source is tiny and diffable everywhere).
|
||
3. **One projection model, two axes** (T16): projection-kind (replication vs derivation; with
|
||
timing + multiplicity facets) × liveness (live↔snapshot). The **moldable view registry**
|
||
(T7) is the unifying structure — an open, type-keyed set of co-equal projections, none
|
||
canonical-by-fact (display-canonical is policy).
|
||
4. **One snapshot-provenance record** reused for notebook outputs, renders, and recordings
|
||
(run id, source rev, timestamp, environment "unguaranteed").
|
||
5. **Hard boundaries** (design-bugs if violated): never host a kernel/runtime as the store;
|
||
**image-is-not-a-store** (attach exported files); never present a derivation without
|
||
output→source provenance; never imply a static view captures a live artifact.
|
||
|
||
**Net:** computational content is **in scope as a page-model + projection concern**, **out of
|
||
scope as an execution platform** — exactly the mechanism-over-policy, capability-aware,
|
||
degradable posture INTENT already mandates. No INTENT amendment is required; this extends the
|
||
page model and projection model within existing constraints.
|
||
|
||
## 6. Fold into SHARD-WP-0002
|
||
|
||
- **T12 (page model):** add the four computational shapes (§3); allow nestable cells and
|
||
structured re-evaluable outputs; "derived output may live inside the source" (notebook).
|
||
- **T16 (projection):** the **two-axis model** (§2) + the **moldable view registry** (§3/T7);
|
||
materialization-timing, multiplicity, continuity, and the live↔snapshot far end as explicit
|
||
projection metadata.
|
||
- **T11 (capabilities):** "derive/execute/render/evaluate" as gated capabilities with trust/
|
||
sandbox; default off → snapshot.
|
||
- **T15 (fidelity):** non-Markdown executable/computed content; lossy renders; the
|
||
structured-re-evaluable-value point on the content-opacity spectrum.
|
||
- **T13 (history):** paired-text (Jupytext) / cell-aware (nbdime) strategies for embedded-
|
||
output documents; outputs-as-derived (nbstripout ethos).
|
||
- **T14 (binding):** **image-is-not-a-store** boundary (export→files only).
|
||
|
||
## 7. Open questions (escalated)
|
||
|
||
1. Is **liveness** (and "irreducibly live / no faithful static form") an explicit first-class
|
||
metadata flag on every projection, so the union renders the honest fallback automatically?
|
||
(T5/T6 far-end question.)
|
||
2. Does shard-wiki **ever drive a derivation** (sandboxed), or strictly attach + present
|
||
snapshots? (Recurs UC-56/UC-83/UC-84/T4/T5 — a single capability/trust policy decision.)
|
||
3. Is a computed output's **structured re-evaluable value** (Mathematica/Wolfram) modeled as a
|
||
typed value or stored opaquely with provenance? (UC-55 open-Q #10; UC-84 Q3.)
|
||
4. Should **UC-83** and **UC-84** eventually merge as two positions of one "source +
|
||
derivations" shape, or stay distinct? (Kept distinct: UC-84's defining trait is *output
|
||
embedded in source with weak provenance*; UC-83's is *N co-equal external derivations*.)
|
||
|
||
## 8. Sources
|
||
|
||
The eight SHARD-WP-0004 dives: `research/260614-{literate-programming,mathematica,jupyter,
|
||
processing,strudel,squeak-pharo,glamorous-toolkit}-deep-dive/`. Prior projection/structure
|
||
anchors: `research/260614-{ikiwiki,logseq,zigzag}-deep-dive/`,
|
||
`research/260614-shard-spectrum-synthesis/`.
|
||
|
||
## 9. Traceability
|
||
|
||
No new UC (consolidation). Consolidates **UC-83, UC-84** and enrichments to **UC-32, UC-44,
|
||
UC-47, UC-48, UC-54, UC-55, UC-79, UC-37, UC-35**. Feeds **SHARD-WP-0002 T11/T12/T13/T14/T15/
|
||
T16** (see §6). Recommendation: computational content is **in scope as page-model + projection
|
||
mechanism, out of scope as an execution platform**; no INTENT amendment required.
|