Core Concepts

Structured Knowledge

Every piece of context in your project — stack choices, architecture decisions, features, constraints, APIs — is stored as a typed, versioned fact in Spiral's knowledge graph.

Fact types

Facts are typed by kind. The type determines how Spiral displays, searches, and validates them.

stackLanguages, frameworks, databases, and infrastructure
decisionArchitecture rationale — why you chose X over Y
featureProduct capabilities and their current status
constraintLimits — team size, budget, timeline, scope
api_endpointAPI routes, parameters, and contracts
schemaDatabase schemas and data models
requirementUser stories and product requirements
tech_debtKnown issues and areas needing refactoring
bugTracked bugs and their status
testTest coverage and test plans

Version history

Facts are never overwritten. When a fact changes, the old version is preserved with a timestamp and a new version is created. This means you can always:

  • See who changed what and when — every mutation is linked to the actor and event that caused it
  • View the full history of any fact — spiral history stack.frontend
  • Query point-in-time snapshots — what did the project look like on any specific date
$ spiral history stack.frontend
v3 (current) Next.js 15 with App Router
v2 (2026-02-01) Next.js 14 with Pages Router
v1 (2025-11-15) Create React App

Knowledge graph

Facts don't exist in isolation. They connect to each other via typed relationships:

depends_on
implements
extends
replaces
contradicts
tested_by
deployed_with
communicates_with
parent_of
derived_from
related_to

Relationships are also versioned and can be invalidated. View them with spiral edges list or in the Knowledge Map tab on the dashboard.

Provenance

Every fact is linked to the event that created it — a chat message, a CLI push, an SKF import, or a deep extraction. This means you can always trace any piece of knowledge back to its origin: who created it, when, and why.