# Bumpus Narratives

> Sheaves on time categories for compositional temporal reasoning. Bumpus et al. narrative framework with adhesion filter FPT algorithms and Gay.jl color integration.

- Skill: `plurigrid/bumpus-narratives` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add plurigrid/bumpus-narratives`
- Raw SKILL.md: https://api.skillmd.com/api/skills/plurigrid/bumpus-narratives/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: plurigrid (https://skillmd.com/u/plurigrid)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/plurigrid/bumpus-narratives

---


# Bumpus Narratives Skill

> **Trit**: 0 (ERGODIC) - Mediates between verification (-1) and generation (+1)

Sheaves on time categories for compositional reasoning about temporal data.

## Source Papers

- Bumpus, B.M. et al. "Unified Framework for Time-Varying Data" (arXiv:2402.00206)
- Bumpus, B.M. "Compositional Algorithms on Compositional Data" (arXiv:2302.05575)
- Bumpus, B.M. "Structured Decompositions" (arXiv:2207.06091)
- Bumpus, B.M. "Spined Categories" (arXiv:2104.01841)
- Bumpus, B.M. "Cohomological Obstructions" (arXiv:2408.15184)

## Core Concepts

### 1. Narratives as Sheaves

Temporal data = sheaf F: I_N → D where:
- I_N = time category (intervals [a,b] with inclusions)
- D = data category with pullbacks
- Sheaf condition: F([a,b]) = F([a,p]) ×_{F([p,p])} F([p,b])

```
F₁³ := {(x,y) ∈ F₁² × F₂³ | f₁,₂²(x) = f₂,₃²(y)}
```

### 2. Adhesion Filter (FPT Algorithm)

For tree decompositions of width w:
- Complexity: O(f(w) · n) instead of O(2^n)
- Runs on bag boundaries via pullback checking

```julia
function adhesion_filter(sheaf::Sheaf, decomp::TreeDecomp)
    for (bag1, bag2) in edges(decomp)
        adhesion = bag1 ∩ bag2
        if !is_pullback(sheaf, bag1, bag2, adhesion)
            return false
        end
    end
    true
end
```

### 3. Cohomological Obstructions

H⁰ detects local-to-global failure:
- H⁰(F) ≠ 0 → obstruction to gluing
- Čech complex on cover of intervals

## Integration with Gay.jl

### Color-Coded Narratives

Each interval [i,j] gets deterministic color:
```julia
color([i,j]) = gay_color(BUMPUS_SEED ⊻ hash(i,j))
```

### GF(3) Conservation

Narrative operations preserve triadic balance:
- **Restriction** (-1): F([a,b]) → F([a,a])
- **Extension** (+1): F([a,a]) → F([a,b])
- **Pullback** (0): F₁³ := fibered product

## Diagram Catalog

20 extracted diagrams from Bumpus papers:
- 17 commutative diagrams
- 2 functor diagrams
- 1 graph diagram

Location: `papers/diagrams/images/bumpus-*.jpg`

## Triadic Composition

```
structured-decomp (-1) ⊗ bumpus-narratives (0) ⊗ world-hopping (+1) = 0 ✓
sheaf-cohomology (-1) ⊗ bumpus-narratives (0) ⊗ triad-interleave (+1) = 0 ✓
persistent-homology (-1) ⊗ bumpus-narratives (0) ⊗ gay-mcp (+1) = 0 ✓
```

## Example: Ice Cream Companies

From the Venice ice cream example (Diagram 1):
```
Time 1: {a₁, a₂, b, c}  →  Time 2: {a*, b, c}  →  Time 3: {a*, b}
```

The sheaf tracks:
- Company mergers (a₁, a₂ → a*)
- Company disappearance (c)
- Supplier relationships (graph morphisms)

## API

```julia
using BumpusNarratives

# Create narrative
n = Narrative(TimeCategory(1:10), FinSet)

# Add snapshots
add_snapshot!(n, 1, Set([:a, :b, :c]))
add_snapshot!(n, 2, Set([:a, :b]))

# Check sheaf condition
is_sheaf(n)  # true if pullbacks exist

# Compute H⁰ obstruction
obstruction = cech_H0(n)
```

## References

1. **Bumpus et al.** - Time-varying data via sheaves on time categories
2. **Ghrist** - Elementary Applied Topology (Čech cohomology)
3. **Fairbanks** - AlgebraicJulia ecosystem for ACSets
4. **Gay.jl** - Deterministic color chains for diagram coloring

