Logo FS-Skia-UI

ADR 0006 — Foundations programme closeout (Stage 7)

Context

The foundations programme (Stages 0–6, features 039–046) set out to dismantle a 4,688-line build.fsx monolith and a tri-language (F# + Bash + Python) governance engine, replacing them with a compiled, tested F# governance library and a two-tier, Route-selected process. Stages 1–6 shipped and merged; the keystone is built. Stage 7 does not add capability — it confirms the programme's promises against the Stage-0 baseline, proves the interim scaffolding is gone, and documents the new normal so it sticks for the next contributor (human or agent). This ADR is the single closing record.

Decision

Declare the foundations programme complete and adopt the two-tier Route-first model as the steady-state development process. The decisions D1–D6 are realized as follows:

The steady-state model: ./fake.sh build -t Route is the entry point. It reads the change's diff and prints the authoritative tier and the minimal gate list to run. Routine framework-internal work routes to the light inner-loop tier (Dev); consumer-contract paths (template/**, .specify/**, public src/**/*.fsi, the build-target/governance paths) escalate automatically. The full serialized six-target order is the escalated maintainer-verify path, reserved for consumer-contract changes and dogfood features — not the unconditional default. The governance library FS.Skia.UI.Build is the single home of all rules; a mistyped gate is a compile error, and generated artifacts (validation.contract.yml, the .claude skill mirror) are generated from a single source, not hand-synced.

Alternatives considered

Consequences / rationale

Programme links

Type something to start searching.