Logo FS-Skia-UI

ADR 0001 — Governance-library placement and distribution (D1)

Context

The foundations programme extracts the governance/validation logic that currently lives inline in the 4,688-line build.fsx into a reusable compiled F# library. Two questions must be settled before any extraction: where the library project lives in the repo, and how it is eventually distributed to generated consumer products. The repo already ships eight runtime packages from src/**, all swept by the runtime surface-baseline tooling (PackageSurfaceCheck, FsiTranscripts); a governance/build-tooling library is not a runtime package and must not be mistaken for one.

Decision

  1. Placement: the governance library project is build/Governance/FS.Skia.UI.Build.fsproj, under a new top-level build/ root — not under src/. The repo build front-end project-references it in-solution.
  2. Distribution: in-solution project reference now. Distribution to generated consumers via a published NuGet package is the D1 end-state but is exercised only in Stage 4/5 — this feature creates the project; it does not pack or publish it.

Alternatives considered

Consequences / rationale

Stages shaped

Verification in feature 039

The project exists at the decided path and builds clean (dotnet build build/Governance/FS.Skia.UI.Build.fsproj -warnaserror0 warnings, 0 errors); it is not packed or published.

Addendum (feature 064, 2026-06-04) — distribution is now implemented

The Stage-4/5 deferral of pack-and-publish recorded above is superseded. Feature 064-publish-nuget-distribution realizes the D1 end-state: a published NuGet.org distribution of all 11 FS.Skia.UI.* libraries and the FS.Skia.UI.Template package, consumable by an external developer who never cloned this repo.

What changed:

FS.Skia.UI.Build is therefore now a published package (still under build/, still curated .fsi), not merely an in-solution project reference. See docs/distribution.md for the consumer install/upgrade flow and the maintainer release sequence.

Type something to start searching.