Colophon · v0.3 Third printing
a documentation methodology

Colophon

Just-enough documentation for solo developers and small teams. Five files, not fifty pages.

Phase documents belong to waterfall. Research docs, plans of approach, requirements specs, design docs, test plans — written once, read never. Colophon replaces them with five living files that stay near the code, and grow with it.

Five principles. Read them once.

Docs live next to code.

In git, in markdown, reviewed in pull requests. Documentation that lives elsewhere rots elsewhere.

Just-in-time, never upfront.

Write when a decision is made, a bug threatens to repeat, or someone will soon ask. Before that, you are guessing.

One document, one job.

No mega-documents that try to be everything. Small files with a single focus stay accurate; sprawling ones don't.

If nothing breaks when it's gone, don't write it.

The reverse test. Documents that cost time to maintain and solve no real problem are waste, no matter how professional they look.

Five files beat fifty pages.

A Brief, a folder of Decisions, a Log, a Runbook, a Changelog. Together they cover what waterfall tried to, with a fraction of the drag.

The five document types.

Brief
README.md
The project's orientation document. Why it exists, scope, capabilities, roles, risks, status.
Decision
docs/adr/NNNN-*.md
One short file per significant design choice. Immutable once accepted.
Log
docs/research-log.md
Dated, append-only notes from exploration. Rough by design.
Runbook
docs/runbook.md
How to run, deploy, and unbreak this thing. The 3am-friendly file.
Changelog
CHANGELOG.md
What changed and when. Written for humans, not diffs.
Optional
Spec docs/spec.md

Detailed functional and non-functional requirements. Opt-in, for projects that prototype many capabilities before implementing them, or whose stakeholders formally require a spec. Most projects do fine without one — capabilities sit in the Brief, detail goes in the issue tracker.

What a Decision looks like.

# Decision 0003: SvelteKit for the PWA

**Status:** Accepted
**Date:**   2026-11-05

## Context
Frontend must be an installable PWA. Solo developer,
fast iteration required. Options: React + Vite,
Next.js, SvelteKit, SolidStart.

## Decision
SvelteKit with adapter-static.

## Considerations
Pro: smaller bundle, less boilerplate, built-in PWA support.
Con: smaller ecosystem than React; may need to
     switch adapter if SSR becomes necessary later.

## Consequences
- All frontend code in SvelteKit.
- svelte-check added to CI.
- No React components to reuse from other projects.

Requirements, roles, planning — they all have a home.

The Brief summarises and orients; Decisions capture trade-offs; the issue tracker manages live work; the Runbook handles operations. The optional Spec, when present, holds rich requirements detail. The map below shows the same content from two angles: traditional section for readers used to project plans, in Colophon for everyone.

Traditional section In Colophon
Purpose, scope, success criteriaBrief
Functional requirements (top-level)Brief — Capabilities
Functional requirements (detail)Issue tracker — or optional Spec
Non-functional baselineBrief — Non-functional baseline
Non-functional trade-offsDecisions
Stakeholders, roles, responsibilitiesBrief — Stakeholders & roles
Planning, milestonesBrief (high) → Issue tracker (detail)
Risks (short)Brief — Risks
Risks (large, with mitigation)Decisions
Architecture, design rationaleDecisions
Test planTests in code + a paragraph in the Brief
Deployment planRunbook

The principle: Colophon documents what the project is. The issue tracker manages what the project does next. Mixing them produces documents that drift and trackers that go stale.

Existing projects, and changing minds.

Adopt it in a project that already exists

Do not document the past. Colophon is adopted forward: set up the skeleton, make the Brief current, and add new Decisions as you make them. Within thirty days you will have organically captured what matters.

The 30-minute bootstrap →

When a structural choice changes

Decisions are immutable once accepted. If you change your mind, write a new Decision that supersedes the old one — keeping the full reasoning trail. Future-you will know not just what was chosen, but why, and why it changed.

Worked supersession example →

Fork the template. Start in minutes.

The Colophon template repository is a working example of the methodology — documenting itself in its own format. Fork it, rename it, keep what fits.

$ gh repo create my-project --template ccsys/colophon