---
title: "0.0.0. The scaffold"
description: "The first release. It is a documentation site, a token layer and twenty-four component specifications, with no components."
url: "https://opsinjs.pensievelabs.org/project/changelog/2026-09-scaffold"
source: "https://opsinjs.pensievelabs.org/project/changelog/2026-09-scaffold.md"
section: "Project"
kind: "project"
reviewed: "2026-09-02"
reviewer: "engineering"
aliases: ["first release", "0.0.0", "initial commit"]
---

> Elements written as `<PascalCase … />` below are opsinjs documentation
> components. Their attributes are the content: the values they render are
> generated from `tokens/*.json` and `registry/catalogue.ts` and are
> published separately at https://opsinjs.pensievelabs.org/r/index.json and under the Reference
> section.
> Nothing is missing from this page. The data simply does not live in
> the prose.

<PageTemplate kind="project" />

**2 September 2026.** Nothing is published to npm, and nothing here can be
installed. This entry describes a documentation site.

## What this release is [#what-this-release-is]

opsinjs starts as documentation on purpose. The expensive, irreversible decisions
in a health design system are not in the code. They are in the colour
architecture, the status vocabulary, the plain-language rules and the
accessibility floor. Those are cheap to argue about in prose and expensive to
change once twenty components depend on them, so they are written first and the
components are built against them.

## What is in it [#what-is-in-it]

**A token layer that is real.** Two colour axes, a six-rung material ladder,
spring easings expressed as `linear()` curves, and the type, space and shape
scales. These are authored values, generated into CSS and measured for contrast
by a script rather than asserted.

**Doctrine that does not depend on any component existing.** The health,
accessibility, content-and-language and foundations pillars are written and
reviewable today. This is the majority of the site, and it is the part with the
longest useful life.

**Twenty-four component specifications**, every one at `status: planned`. Each
carries intent, when *not* to use it naming the alternative, the clinical
contract, the proposed anatomy and API, and the accessibility bar the
implementation must clear. Each also carries a machine-readable marker saying it
is not implemented, so that a program can tell a specification from a component.

**Machine surfaces from the start.** A `.md` twin of every page, `/llms.txt` and
its shards, the registry catalogue under `/r`, and an offline documentation
bundle. These are not an afterthought here: an assistant is expected to be a
first-class reader of this site.

**Eight generated reference lists** and the pipeline that fills them. Most are
empty, and say so, because their sources are empty.

**Eight decision records**, including the ones that constrain everything after
them: [two colour axes](../decisions/0003-two-colour-axes.mdx),
[registry distribution](../decisions/0002-shadcn-registry-distribution.mdx) and
[generated, never authored](../decisions/0006-generated-not-authored.mdx).

## What is not in it [#what-is-not-in-it]

**Components.** Zero. Not one.

**Published packages.** The `@opsinjs` npm scope is reserved and empty; see
[Official resources](../official-resources.mdx) if you find something claiming
otherwise.

**Measured numbers about components.** Bundle sizes, per-component accessibility
audits and the aggregated keyboard reference are not here, and their sources do
not exist yet.

**An accessibility audit.** No independent review has taken place, and
[the accessibility statement](../../accessibility/accessibility-statement.mdx)
lists what is unknown rather than implying it is fine.

**Internationalisation.** No `[lang]` segment, deliberately, with the retrofit
recipe recorded in [ADR 0005](../decisions/0005-no-lang-segment-yet.mdx). Unit
systems ship now, because getting mmol/L and mg/dL confused harms a reader in any
language.

## Breaking changes [#breaking-changes]

None. There was nothing to break.

## What to read first [#what-to-read-first]

[State of the system](../state-of-the-system.mdx), which is blunt about what
exists and what is safe to build on, and then whichever pillar matches your job.
If you are here to evaluate rather than to build,
[Is opsinjs right for this project?](../../start/is-opsinjs-right.mdx) says no on
this project's behalf more often than yes.

<LastUpdated />

<Reviewed />
