DR McCulloch← WORK

A VS Code fork · a graph engine · ideas as a directed graph

Concept Weaver

In Concept Weaver an idea is a node, and a link between two ideas has a direction, a weight and a type. You edit the graph itself. A document comes out of it when you trace a path from node to node.

Into the canvas

Act I · the atoms

The primary object is a node in a directed weighted graph rather than a file.

A node is what you get when you start typing, free-form prose in markdown, the default. Promote it and it becomes a concept: a named idea with a title, tags and a body. Nodes are joined by edges, and an edge carries four things at once.

  • directed, so “A grounds B” isn’t the same as “B grounds A.”
  • weighted, a strength from 0.0 to 1.0.
  • typed, a controlled vocabulary of five relations you can extend.
  • annotated, an optional note about the relationship.

The whole graph is plain YAML + markdown on disk. Git and grep work on it just like any text file, and every change to the graph lands as a clean diff.

groundsweight 0.9Node ANode B
groundsextendstensionsappliesforeshadows

Act II · the canvas, three layouts

One graph, drawn three ways, and you pull a thread from it to read.

It’s the same nodes every time, just laid out differently. Flow stands the chapters up as columns; Sequence runs them top to bottom in reading order. Force turns the layout loose and lets the nodes push apart until the graph finds a resting shape. Hover a node to trace what it connects to. Over on the right, click through the nodes in order to assemble a document: a saved walk through the graph you can read start to finish.

drawing the graph…

EDGESeach curve is stroked and dashed by its relation type · a thicker line carries more weight

Act III · a collaborator you invoke

The AI stays out of your way until you invoke it.

Nothing is written for you while you think. You call the model when you want it, and it works on a subgraph (the nodes you selected plus a neighbourhood), never blind to the structure around them. Press on the canvas above and the tool re-proposes the edges it held back, drawn asdashed lines you accept or reject. Every proposal is a real edge from the graph’s own data, and nothing joins the map until you say so.

The core operations, verbatim from the design document
OperationInputOutput
Suggest connectionsSelected node(s)Proposed edges with type, weight and reasoning
Draft bridge proseTwo or more nodesA new text node connecting them, placed in the graph
Analyse structureWhole graph or subgraphOrphans, weak links, dense clusters, gaps
Propose pathStart + end + constraintsAn ordered traversal forming a coherent document
Weight auditEdge-type filterEdges whose weights don’t match node content
Promote / decomposeText or concept nodeSplit long text into concept nodes, or merge several into one

Five ways one idea can hold another

grounds

A supports, justifies or underlies B, the relation that takes the weight.

“Positionality requirement grounds the scope statement”0.7

extends

B continues, elaborates or carries A further, forming the argument’s spine.

“Constraint transparency reveals binary as instance of its own argument”0.9

tensions

A and B pull against each other, a contradiction held open rather than resolved.

“Fire as discrete vs digital as ongoing process”0.9

applies

A puts B to work as a method, view or operation enacting a concept.

document view path traversal0.85

foreshadows

A gestures toward B across distance, structure implying a later reading.

“Ch9 → Ch11: space between figures → third sibling named Goronwy”1.0

Specimens above are real edge notes, verbatim, from the two graphs on the canvas. Every one is directed: reverse it and the bridge points the other way.

Act IV · five views, one datum

Five perspectives on the same graph, open at once.

01

Files

This is home base, the whole workspace gathered in one place, and not everything here is a node, because images, PDFs and data live alongside the graph, which exists within the workspace.

02

Graph

This is the canvas above, where you drag, zoom and cluster nodes to see how your thinking hangs together, and AI-suggested edges show up as dashed lines you accept or reject.

03

Document

This is a rendered path, read and written linearly, so reordering the graph reorders the document, and the transitions between nodes are editable prose.

04

Tapestry

This is an editable spreadsheet of the whole directed weighted graph, where rows are sources, columns are targets and each cell is the weight. You work inside it rather than just looking at it.

05

Editor

This is the Monaco editor, always present and inherited from VS Code, bringing syntax highlighting, multi-cursor and diff view along with everything else.

Guided

Graph and document are foregrounded and the command palette is simplified, while the AI surfaces as a conversational sidebar: “help me connect these ideas.”

Power

You get the full VS Code alongside the graph and tapestry, together with graph query commands, keyboard shortcuts for every edge operation, scripting and custom AI providers.

Coda · the colophon

This is working code, and it holds a real body of work.

The engine is a typed TypeScript graph: adjacency matrices, neighbour expansion and a breadth-first findPath that is the very routine filling the gaps when you assemble a document above. The validating dataset is the GORONWY manuscript: 209 paragraph-level arguments across fourteen chapters, joined by 242 typed weighted edges.

findPath(from: string, to: string): string[] | null {
  const visited = new Set<string>();
  const queue: string[][] = [[from]];
  while (queue.length > 0) {
    const path = queue.shift()!;
    const current = path[path.length - 1];
    if (current === to) return path;
    if (visited.has(current)) continue;
    visited.add(current);
    for (const edge of this.edgesFrom(current))
      if (!visited.has(edge.to)) queue.push([...path, edge.to]);
  }
  return null;
}

src/core/graph.ts

  • 5edge types
  • 24nodes in the self-model
  • 209arguments in the manuscript
  • 242typed weighted edges
  • (ch×47)
    mod 360
    a chapter’s hue

What this is not

  • Not a replacement for the file system, where files stay first-class.
  • Not an AI writing tool, since the AI assists and the human decides.
  • Not a note-taking app, with typed weighted edges making the difference.
  • Not a database, just plain files on disk, git-compatible and portable.
The full argument map, by edge type: 242 edges across 209 arguments
  • extends183
  • grounds19
  • applies17
  • tensions14
  • foreshadows9

A manuscript is mostly extension, one move carrying the next. The nine foreshadows edges are the rarest and the longest-range: the buried threads, like Goronwy, that only resolve chapters later.

Concept Weaver, a workspace for connecting ideas rather than filing them.← back to the work