The wiki facet: mapping beads onto the federated wiki (Wiki Facet For Beads)

**Note** from Bead: Wiki Facet For Beads · [canonical source](https://redfish.acequia.io/guerin/.agents/3a66d5c4-b77c-48e1-9a02-a6f924b76f2f/2026-07-09/notes/01-wiki-facet-design.md) · session 2026-07-09 · discussion: Talk: Wiki Facet For Beads

A bead duck-types as file, folder, and agent ([canonical frame](https://redfish.acequia.io/guerin/.agents/d9dfa5e4-3c92-4216-bd53-13b520c59a5e/2026-06-11/notes/bead-duck-typing-file-folder-agent.md)). The wiki facet is a fourth face: the same GUID-addressed resource rendered as a federated-wiki page, chosen at interaction time like the others. The wiki is a *view and a conversation surface*; the bead stays the source of truth.

## The mapping (v0.1.0, implemented) | Bead thing | Wiki thing | |---|---| | bead `about.md` | page **`Bead: <Name>`** (slug `bead-<name>`), story = markdown items split per `##` section | | bead identity | provenance paragraph at top: canonical URI, GUID, link to `Talk: <Name>` | | `chats/` + `notes/` | companion page **`Talk: <Name>`** (slug `talk-<name>`): the discussion tab; every chat and note listed by session date as internal `wiki links` with the canonical source beside each | | every `.md` document (root docs, notes, chats, md artifacts) | **its own wiki page** (v0.3.0, Stephen's directive 2026-07-09): title `<Doc Title> (<Bead Name>)`, provenance header linking `Bead: <Name>` + canonical source, sections split on `##`/`---`, per-doc cross-link references; chat pages carry an immutability notice (the bead copy is ground truth). `uploads/` deposits stay external links (others' words, immutable provenance) | | `uploads/` dock | Talk page section pointing at the dock URI (where wiki readers can deposit) | | acequia-links (GUIDs cited in `about.md`, `names.json` bindings) | `Bead: <Other>` wiki links in a References section; the wiki link graph mirrors the bead link graph | | a cited GUID with no generated page | a **dangling wiki link = empty page**, fedwiki's native invitation to create; kept deliberately | | media in `artifacts/` | referenced by **canonical https URL** (beads are public on redfish.acequia.io); images render via markdown, video/other media as links | | the commons itself | index page **`Beads`** (slug `beads`): one line per bead, newest session first | | bead lifecycle dates | page `journal` entries (fedwiki's own provenance lane) with real epoch dates from file mtimes | Generator: [../skills/bead-wiki-facet.mjs](../skills/bead-wiki-facet.mjs). Node, zero dependencies, runs on the hosting machine, walks the local `.agents/` mirror and writes `~/.wiki/pages/<slug>` files. Fedwiki serves page files straight from disk per request, so no service restart is needed.

## Safety rails - **Never clobber hand-made pages.** Every generated page carries a top-level `beadFacet: {guid, generator, version, generated}` marker (fedwiki preserves unknown top-level keys). A pre-existing page without the marker is skipped with a warning. - **Backup before overwrite** of any marked page: copy to `~/.wiki/bead-facet-backups/<slug>-<timestamp>` first. - **Prefixed slugs** (`bead-`, `talk-`): no collision with the 21 existing hand pages (agentscript, acequia, ...) even when a bead shares their name. - The generator only writes local disk on this machine. Nothing is written to `sites/acequia.io/**` or anyone else's namespace; the wiki is Stephen's own origin.

## Edit-back (phase 2, designed, not built) The wiki affords editing. Fedwiki records every edit as a journal action on the page JSON. The bead side must treat those as **offers, not writes**: bead `chats/` and `uploads/` are immutable provenance, and a page is a *derived* view. Design: a small watcher (or a pass in the generator run) diffs each `bead-*`/`talk-*` page's journal against the `beadFacet.generated` timestamp. Journal actions newer than generation are bundled into a hey-you-its-me deposit PUT into the **source bead's `uploads/` dock**: ``` uploads/<iso>-wiki-harvardviz-<slug>-edits.md (human-readable diff of edited items) uploads/<iso>-wiki-harvardviz-<slug>-edits.meta.json (envelope: from = this bead's URI, verb = "message") ``` Draining the dock into `notes/` or `about.md` is then a normal bead-step by the bead's own scribe. This keeps the loop: wiki edit -> dock deposit -> scribe ratifies -> regeneration renders the ratified text back into the page. A wiki editor is a voice at the dock, on equal footing with any other agent.

## Federation, the longer arc Fedwiki's native federation (fork a page from a neighbor, the journal carries the fork provenance) parallels the bead commons (mount a sibling bead, cite by URI). The `allowed` config already reserves wiki hostnames per domain (wiki.redfish.com, wiki.acequia.io, wiki.simtable.com, ...): each parciante or audience domain could run its own wiki face over its own beads, and fedwiki's neighborhood mechanism would let pages travel between them with provenance intact. That is the same choose-domain-by-audience pattern Oscar logged for bead storage. Concepts continue in the person bead [639158e8 ward-cunningham](https://redfish.acequia.io/guerin/.agents/639158e8-0801-4c2a-8277-9bf271f7bc00/) and its affordances note.

## References (bead cross-links) - Bead: Agentify Bead · [canonical](https://redfish.acequia.io/guerin/.agents/d9dfa5e4-3c92-4216-bd53-13b520c59a5e/) - Bead: Ward Cunningham · [canonical](https://redfish.acequia.io/guerin/.agents/639158e8-0801-4c2a-8277-9bf271f7bc00/)