Telling the Story with Narratives

The graph captures structure. Narratives capture the human-readable story.

A decision graph with 56 nodes and 66 edges is a powerful data structure, but it's not something you hand to a new team member and say "read this." Narratives are the layer on top—prose documents that explain the evolution of a system in plain language, grounded in the graph's structure.

Generating Narratives

After the archaeology session has built the graph, you ask Claude to tell the story. Claude scaffolds a narrative document, fills it in from the graph, and saves it for future reference.

Claude Code — Building the narrative
❚❚
Animation paused
You
Tell me the story of how snowflex evolved.
Claude
Let me scaffold a narrative document from the graph's goal nodes, then fill it in.
Claude
deciduous narratives init
Created .deciduous/narratives.md with 3 active goal titles:
- Create an Elixir library for querying Snowflake
- Transport layer evolution
- Authentication and key management
Claude
Now let me trace the decision chains and write the full story.
[Claude queries nodes #1–56, traces edges, reads observations and revisits,
writes prose connecting the evolution story to specific graph nodes]
Claude
Here's the snowflex evolution story:

Snowflex started in June 2019 as a thin wrapper around Erlang's ODBC driver (nodes #1–5). It worked for single connections but couldn't handle concurrency, leading to the ConnectionPool era (nodes #6–9). The pool solved concurrency but the API was cumbersome (node #10), so the team adopted a module-based API modeled after Ecto.Repo (nodes #11–14).

The big pivot came in early 2021 (revisit #34). ODBC had accumulated four problems: session expiry, UTF-16 corruption, Apple Silicon incompatibility, and memory issues. The team chose HTTP REST with a transport behavior pattern (#37) over a rigid direct client (#38), producing v1.0 — a modern adapter with no native dependencies.

I've written the full narrative to .deciduous/narratives.md with node references throughout.

The narrative references specific node IDs so readers can cross-reference with the graph. This is intentional—the narrative is the story, the graph is the evidence.

Finding Pivot Points

The most architecturally significant moments in any project are the pivots — where the team changed direction. Claude can surface these instantly:

Claude Code — Finding pivots
❚❚
Animation paused
You
Where were the major pivot points?
Claude
deciduous narratives pivots
Pivot chains:

#34: Reconsider ODBC as transport - switch to HTTP REST API
32 (outcome) → 33 (observation) → 34 (revisit) → 36 (decision)
Reason: ODBC too fragile for production

#46: Reconsider single-key auth - support multiple key formats
44 (outcome) → 45 (observation) → 46 (revisit) → 48 (decision)
Reason: Enterprise customers need key rotation
Claude
Two major pivots. The ODBC-to-HTTP pivot in March 2021 was the larger one — it drove the v1.0 rewrite. The auth pivot in August 2021 was more contained, switching from single-key to multi-key support after enterprise customers needed key rotation.

Each pivot chain traces the path from an old outcome, through the observation that revealed the problem, through the revisit that reconsidered the approach, to the new decision that replaced it.

Archaeology Timeline

For a chronological view, Claude can pull a timeline of the graph:

deciduous archaeology timeline
deciduous archaeology timeline --limit 10 Timeline (10 of 56 nodes): 2019-06-15 #1 goal Create an Elixir library for querying Snowflake 2019-06-15 #2 option Use Erlang ODBC driver to connect to Snowflake 2019-06-20 #3 decision How to connect Elixir to Snowflake? 2019-06-25 #4 action Implement initial ODBC wrapper with single connection 2019-07-01 #5 outcome Working single-connection ODBC wrapper 2019-08-15 #6 decision How to support multiple Snowflake connections? 2019-08-15 #7 option Explicit ConnectionPool in supervision tree 2019-09-01 #8 action Implement ConnectionPool-based multi-connection support 2019-09-15 #9 outcome Multi-connection support via ConnectionPool (v0.1) 2019-10-01 #10 observation ConnectionPool API is cumbersome vs Ecto.Repo pattern

The timeline gives you the "when" that complements the graph's "what" and "why." Combined with narratives and pivot chains, you have a complete picture of a project's evolution.

Two audiences, two formats

Narratives bridge the gap between the structured graph and human understanding. The graph is for machines to query; narratives are for humans to read. Use the graph when you need precision and traceability. Use narratives when you need to onboard a teammate or write a design document.