generated from coulomb/repo-seed
research: Foswiki deep dive (store abstraction, ext API); UC-42/43
Deep dive into Foswiki focused on its deltas from TWiki (not the shared lineage): the pluggable Foswiki::Store backend (RcsWrap/RcsLite/PlainFile) behind a versioned interface via Foswiki::Meta, the OO/MVC core rewrite, Foswiki::Func + registerTagHandler, DataForms + MetaDataPlugin multi-record, and WysiwygPlugin TML<->HTML round-trip. The store abstraction is logged as prior art for shard-wiki's own adapter contract (SHARD-WP-0002). Catalog (now 43 UCs): - UC-42 read/write a non-Markdown shard via lossless syntax translation (Markdown-first for prose; Foswiki WysiwygPlugin is proof) - UC-43 tolerate a shard's storage-backend swap (RCS<->PlainFile) under a stable identity - enrich UC-39 (multi-record metadata) and UC-40 (PlainFile direct-attach) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -4,8 +4,8 @@ Status: **draft** · Date: 2026-06-08 · Updated: 2026-06-13
|
||||
|
||||
Promoted from `research/260608-c2-wiki-origins/`,
|
||||
`research/260608-yawex-prior-art/`, `research/260608-federation-concepts/`,
|
||||
`research/260608-wikiengines-overview/`, `research/260613-xwiki-deep-dive/`, and
|
||||
`research/260613-twiki-deep-dive/`.
|
||||
`research/260608-wikiengines-overview/`, `research/260613-xwiki-deep-dive/`,
|
||||
`research/260613-twiki-deep-dive/`, and `research/260613-foswiki-deep-dive/`.
|
||||
See InfoTechPrimers on coulomb.social for use-case catalog conventions.
|
||||
|
||||
## Conventions
|
||||
@@ -272,7 +272,10 @@ union without inventing a fake Markdown body.
|
||||
**Notes:** The extreme of UC-34 — not *annotations on prose* but **bodiless
|
||||
structured pages**. Forces the question: does the page model require a Markdown body,
|
||||
or can a page be purely typed data (`research/260613-xwiki-deep-dive/findings.md`
|
||||
§8 Q2)? Affects union views, diff, and search. Deferred to `SHARD-WP-0002`.
|
||||
§8 Q2)? Affects union views, diff, and search. Deferred to `SHARD-WP-0002`.
|
||||
Foswiki shows a middle point: MetaDataPlugin stores **multiple** structured records
|
||||
per topic, still as `%META%` in text (`research/260613-foswiki-deep-dive/findings.md`
|
||||
§4) — the page model must allow N typed records, not one form.
|
||||
**Priority:** Later
|
||||
|
||||
### UC-40 — Attach a file-backed engine's on-disk store directly
|
||||
@@ -288,7 +291,10 @@ the on-disk store (offline-capable, git-native for repo-backed engines, but risk
|
||||
reading inconsistent state under a running engine) vs the runtime API (consistent,
|
||||
respects engine logic, but requires the engine up). Capability profile must express
|
||||
the choice (`research/260613-twiki-deep-dive/findings.md` §5–§6, §8 Q1). Distinct
|
||||
from UC-37 (no live origin) and broader than UC-02's generic attach.
|
||||
from UC-37 (no live origin) and broader than UC-02's generic attach. Foswiki's
|
||||
**PlainFile** store (timestamped whole-version copies, no RCS) is a cleaner
|
||||
direct-attach target than RCS diffs (`research/260613-foswiki-deep-dive/findings.md`
|
||||
§2.2).
|
||||
**Priority:** Later
|
||||
|
||||
### UC-41 — Import an engine's native file history into the coordination journal
|
||||
@@ -305,6 +311,37 @@ is the imported history authoritative or a one-time backfill
|
||||
(INTENT *History as the safety net*).
|
||||
**Priority:** Later
|
||||
|
||||
### UC-42 — Read and write a non-Markdown shard via lossless syntax translation
|
||||
|
||||
**Actor:** Author or maintainer
|
||||
**Goal:** Attach a shard whose native markup is not Markdown (TWiki/Foswiki TML,
|
||||
XWiki syntax) and read it into the Markdown-first model — and write Markdown overlays
|
||||
back — through **bidirectional, lossless syntax translation**, instead of treating it
|
||||
as read-only.
|
||||
**Source:** wikiengines, intent
|
||||
**Notes:** Realizes *Markdown-first, backend-neutral* for **prose** (UC-34/39 cover
|
||||
*structure*). Feasibility proven by Foswiki's **WysiwygPlugin** (TML→HTML for editing,
|
||||
HTML→TML losslessly on save) (`research/260613-foswiki-deep-dive/findings.md` §5).
|
||||
Open: is round-trip lossless enough, or must overlays be stored in the shard's native
|
||||
syntax to be safe (findings §9 Q2)? Without this, non-Markdown shards degrade to
|
||||
read-only (UC-03) — a graceful-degradation floor, not the goal.
|
||||
**Priority:** Later
|
||||
|
||||
### UC-43 — Tolerate a shard's storage-backend swap without losing identity
|
||||
|
||||
**Actor:** Maintainer
|
||||
**Goal:** Keep a shard attached, with its provenance and history intact, when its
|
||||
underlying storage backend changes — e.g. a Foswiki wiki migrated RCS→PlainFile, or a
|
||||
folder shard promoted into Git.
|
||||
**Source:** wikiengines, intent
|
||||
**Notes:** Foswiki proves backends are swappable under a stable identity via its
|
||||
versioned `Foswiki::Store` interface (`research/260613-foswiki-deep-dive/findings.md`
|
||||
§2). shard-wiki orchestration robustness: a shard's identity/attachment is **not** its
|
||||
storage format. Open: detect the swap and preserve history across it (findings §9 Q3).
|
||||
Relates to UC-40 (attach path) and UC-41 (history import) but is about *change under a
|
||||
live attachment*, not initial attach.
|
||||
**Priority:** Later
|
||||
|
||||
---
|
||||
|
||||
## B. Knowledge work and collaboration
|
||||
@@ -525,6 +562,8 @@ CamelCase and `[[free links]]`. Markdown-first link semantics TBD.
|
||||
| UC-39 | | | | ✓ | ✓ |
|
||||
| UC-40 | | | | ✓ | ✓ |
|
||||
| UC-41 | | | | ✓ | ✓ |
|
||||
| UC-42 | | | | ✓ | ✓ |
|
||||
| UC-43 | | | | ✓ | ✓ |
|
||||
| UC-08 | ✓ | | |
|
||||
| UC-09 | ✓ | | |
|
||||
| UC-10 | ✓ | | |
|
||||
@@ -598,6 +637,8 @@ CamelCase and `[[free links]]`. Markdown-first link semantics TBD.
|
||||
| Wiki-as-application-platform, bodiless typed pages (XWiki AppWithinMinutes/XObjects) | UC-39 |
|
||||
| Attach a file-backed engine's on-disk store directly (TWiki data dir, DokuWiki) | UC-40 |
|
||||
| Import an engine's native file history (TWiki RCS `.txt,v`) into the journal | UC-41 |
|
||||
| Lossless syntax translation for a non-Markdown shard (Foswiki WysiwygPlugin TML↔HTML) | UC-42 |
|
||||
| Tolerate a shard's storage-backend swap (Foswiki RCS↔PlainFile) under stable identity | UC-43 |
|
||||
|
||||
Note: the landscape scan mostly **reinforced** existing UCs and the L0→L4 ladder
|
||||
rather than adding scenarios — its primary yield is adapter-contract constraints
|
||||
@@ -607,7 +648,11 @@ attachment scenarios it surfaced. UC-38–UC-39 come from the **XWiki deep dive*
|
||||
(`research/260613-xwiki-deep-dive/findings.md` §7); UC-40–UC-41 from the **TWiki
|
||||
deep dive** (`research/260613-twiki-deep-dive/findings.md` §7), which also enriched
|
||||
UC-06 (TWiki per-topic ACL → yawex), UC-34 (file-embedded `%META%`), UC-36 (RCS vs
|
||||
DB history), and UC-38 (TWiki plugin handlers as an adapter host).
|
||||
DB history), and UC-38 (TWiki plugin handlers as an adapter host). UC-42–UC-43 come
|
||||
from the **Foswiki deep dive** (`research/260613-foswiki-deep-dive/findings.md` §8),
|
||||
which also enriched UC-39 (MetaDataPlugin multi-record), UC-40 (PlainFile store), and
|
||||
logged the `Foswiki::Store` versioned interface as **adapter-contract prior art** for
|
||||
`SHARD-WP-0002` (no UC — architecture).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user