BUCKYVERSE

TODO-11 — Fuller Relationship Graph (render) — Design

Status: Approved 2026-07-01
Source item: TODO-11 (work/TODO.md) — "Graph of the people and organizations Bucky interacted with."
Branch: pluck/todo-11-relationship-graph

Goal

Render the Fuller relationship graph that the IMP-16..19 work made possible: a
generator that reads the 113 typed entity pages (102 people + 11 organizations)
and produces (1) a static, relationship-colored SVG embedded on a
buckyverse.org page, and (2) a self-contained interactive HTML artifact in
the repo for exploration and future iframing.

Context

Architecture

Two homes, one generator:

  1. Wiki project .wiki/output/projects/relationship-graph/ — the tool and
    its generated outputs (a wiki "project", so it carries a WHY.md).
  2. Publishable live page repo-root relationship_graph/ — index.md + the
    embedded graph.svg, following the repo's page/relative-image convention
    (published later via the publish-to-buckyverse skill).

Nodes (114)

Edges

The generator — build_graph.py

A dependency-light Python script (uses only stdlib + a shell-out to graphviz
sfdp, both confirmed available; networkx available if convenient but not
required). Steps:

  1. Walk .wiki/wiki/topics/*.md; for each page containing entity-person or
    entity-organization, record slug, title, kind, and relationship:.
  2. Build nodes + edges as above (See Also parsed from the ## See Also section,
    keeping only links whose target is another entity node).
  3. Emit graph.json — {nodes:[{id,label,kind,relationship,color}], edges:[{source,target,type,color}]}.
  4. Emit graph.dot and render graph.svg via sfdp -Tsvg
    (force-directed; Fuller node large; per-type node fill colors; a legend
    subgraph listing the 9 relationship types + org + Fuller with their colors).
    Node URLs in the dot point at each entity's live page path so the SVG is
    click-through where the viewer supports it.
  5. Write the self-contained interactive index.html — loads vis-network
    from a CDN, embeds the graph data inline (from graph.json), draws a
    force-directed network with: color legend + per-type show/hide toggles, a
    node search box, and click-a-node → open that entity's buckyverse page.
  6. Copy graph.svg into the repo-root relationship_graph/ page dir (the
    published image).

Re-running the script regenerates all outputs from current wiki state (the sync
story: run it after entity pages change).

The live page — relationship_graph/index.md

WikiJS frontmatter (title, description ≤255 chars, published, date, tags,
editor: markdown) + body: a short explainer of what the graph shows and how it
was built, the embedded ![Fuller relationship graph](graph.svg), a
legend table (each relationship type → color swatch description + count), a
one-line pointer to the interactive artifact, and a note that node positions are
force-directed. No inline JS (stripped by WikiJS).

Colors (relationship → fill)

collaborator, influence-on-fuller, influenced-by-fuller, friend, family,
contemporary, rival-critic, forebear, chronicler — nine visually distinct fills;
organization = grey; r-buckminster-fuller hub = a distinct accent. Exact hex
chosen in implementation for contrast; legend documents them.

Verification

Not doing (YAGNI)

Testing / verification

Tooling task. Success = the generator deterministically produces a valid
relationship-colored graph.svg (114 nodes, correct edges/colors) and a working
interactive index.html, the relationship_graph/ page embeds the SVG with a
correct legend, the wiki project has a WHY.md, lint is clean, and publish is
queued for human sign-off.