Release-readiness automation whose evidence is signed, not asserted — and the
minimal SDK reference for Ashlar: one
JSON agent set, one AddAshlar() call, consuming the runtime entirely from
nuget.org. This repo exists to be read, run, and copied.
Four background agents run on the deterministic provider (no model, no network, no container engine required):
| Agent | Role | What it does |
|---|---|---|
repo-monitor |
optimizer | watches the repository for changes that affect release gates |
test-runner |
tester | runs framework smoke tests on a schedule |
slo-collector |
optimizer | gathers SLO and gate artifact paths under .ashlar/ |
report-generator |
optimizer | writes readiness reports to .ashlar/release-manager/reports |
Every agent carries an explicit exfiltration policy (RequireLocalOnly,
external LLMs and network exports blocked) — governance is in the config, not
in prose.
git clone https://github.com/IanFrelinger/ashlar-release-manager.git
cd ashlar-release-manager
dotnet run --project src/ReleaseManager.Host -- --duration 30That restores Ashlar.Hosting.Bundle from nuget.org (this repo's
nuget.config allows no other feed), builds the thin host, and runs the
agent set for 30 seconds — you'll see all four agents register, schedule, run,
and drain cleanly. Drop --duration to run as a daemon; point --config at a
tuned copy of config/agent_set.release_manager.json
for your own repository.
Prefer the CLI? The same config drives the published tool (requires the .NET 10 runtime):
dotnet tool install -g Ashlar.CLI
ashlar background-agent daemon --config config/agent_set.release_manager.jsonsrc/ReleaseManager.Host/Program.cs is
~80 lines: parse two flags, AddJsonFile the agent set, AddAshlar(o => o.RegisterBackgroundAgentHostedService = true), run. That is the entire
embedding story — copy it, swap the agent set, and you have your own governed
background-agent product. Package pins live in
Directory.Packages.props (one AshlarVersion
property, currently 0.1.1).
- First out-of-tree consumer. This repo's CI restores from nuget.org and
nothing else — it is the standing proof that the published Ashlar graph is
consumable exactly as documented in the runtime repo's
consumer-template/CONSUMING.md. - The one-way ratchet, exercised. This app was commercial (Tier 3) in the
runtime monorepo, was graduated to Apache-2.0 on 2026-08-31
(
LICENSING.md, covenant 2), and extracted here on 2026-09-01. Open-core boundaries move in one direction. - Fleet-scale readiness aggregation (many repos, one pane of glass) is part of
Ashlar's commercial fleet tier — see the runtime repo's
LICENSING.md. This repo is complete for one repository, forever.