Files
tegwick 3d137c96b6 research: SHARD-WP-0004 synthesis (the computational page model); workplan done
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>
2026-06-15 00:12:03 +02:00

11 KiB
Raw Permalink Blame History

The computational page model — synthesis (SHARD-WP-0004)

Date: 2026-06-15 · Source: SHARD-WP-0004 (post-batch synthesis, T1T8) · 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 gtViews; 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.