Documentation Guide
How this repository's documentation and planning content is organized β where to look for something, and where to put something new.
Status legend (used throughout the design docs below): β Implemented β exists in code today Β· π§ Planned β designed, not yet built Β· π¬ Research β exploratory / v2.
How planning works
Planning content lives in five places with deliberately non-overlapping jobs:
| Place | Job |
|---|---|
docs/design-philosophy/engineering-hypotheses.md |
Our own falsifiable claims β what we assert the engineering will achieve, the threshold that decides it, and what would falsify it. Not design (that is roadmap/ or architecture/) and not NGED-derived requirement (that is background/): a claim we are on the hook for, and a natural NIA deliverable. One page; append tests, never renumber them. |
| GitHub (issues + the OCF Project board) | The complete, ordered task list β including quick tweaks and non-code tasks β plus all discussion. Fine-grained prioritisation lives only in GitHub. Epics map 1:1 to the roadmap milestones; dependencies are recorded as blocked by issue relationships. |
docs/roadmap/ |
Design depth: What we plan to build and why. The milestone arc and inter-plan dependencies are recorded here; fine-grained task-level ordering is not. |
docs/techniques, background, architecture, ml_experimentation, live_service |
What is already built β design (architecture/) and operational how-to (ml_experimentation/, live_service/) alike. This is where content moves to from docs/roadmap/ after implementation. |
plans/ (repo root, not published) |
At most one file per branch: the implementation plan for the work in flight on that branch, written before any code is touched and deleted when it merges. One worktree per branch is what keeps it to one file. Usually empty on main. |
Relationship between docs/roadmap/ and GitHub: Every substantial π§ plan in the
docs/roadmap/ folder has a GitHub issue, and every dependency stated in docs/roadmap/ exists as
a blocked by link on GitHub β but GitHub freely contains small issues with no counterpart here in
the docs. (π¬ research ideas are exempt from GitHub until they are promoted to a milestone.) The
litmus test for needing a design doc in docs/roadmap/: does it take more than a few sentences to explain?
When a piece of work ships, its design content moves out of roadmap/ to its permanent home
β and the roadmap page shrinks; when a page's last π§ item ships, the page is deleted. That
permanent home splits along a why vs. how line: architecture/ holds system design β the
decisions and rationale, written once and rarely re-read step-by-step β while
ml_experimentation/ and
live_service/ hold operational how-to β step-by-step recipes for
running what's already built, one per area (ML backtesting vs. the live production service).
Each architecture/ design page names its how-to counterpart (and vice versa) in a "See also"
section β e.g. ML Orchestration Design β
ML Experimentation, and
Production Deployment β Design β
Setting up the live service on AWS. A page mixing the two β design
rationale followed by a runbook with literal commands β is a sign it should split along this line.
The docs/roadmap/ folder therefore contains only design for work that is not yet implemented,
and is never a mirror of the code. Because roadmap pages are deletable, code must never link into
roadmap/ β instead, code docstrings link to the durable sections (design-philosophy/,
techniques/, architecture/, background/, ml_experimentation/, live_service/) instead. The methods
behind these plans β differentiable physics, learned encoders, the disaggregation-evaluation
protocol β live in Techniques for exactly this reason: they survive the
roadmap items that apply them.
Which place do I use?
| I want to⦠| Go to |
|---|---|
| Decide what to work on this morning | The GitHub Project board (complete, ordered) |
| Discuss / challenge a plan | GitHub issue comments (fold conclusions back into the roadmap page) |
| Think through a substantial design | A docs/roadmap/ page, reviewed via PR |
| Communicate direction to NGED / leadership | The milestones (published site) |
| Give an AI coding tool context on the broader plan | docs/roadmap/ (plus gh for live task priorities) |
| Understand a method (DP, encoders, β¦) | docs/techniques/ |
| Understand the principles the whole design answers to | docs/design-philosophy/ β the portable argument, readable without knowing the codebase |
| Understand why something already built works the way it does | docs/architecture/ β the local rationale, recorded next to each component |
| State β or check β a measurable claim about the engineering | docs/design-philosophy/engineering-hypotheses.md. Add a test with a threshold and a resolution point; never renumber an existing one |
| Record an assessment of work we decided not to do | docs/architecture/, with a Status: banner saying so β e.g. Why Dagster, not Airflow?, Could this codebase forecast another country?. Not docs/roadmap/, which implies intent to build and is deleted on ship. |
| Learn how to run/operate something already built, step by step | docs/ml_experimentation/, docs/live_service/ |
| File a quick tweak or a non-code task | A GitHub issue only β no markdown needed |
| Plan how to implement an issue, before writing code | plans/<branch-name>.md on that issue's branch (one file per branch, deleted on merge) |