# Release history · llms.sgit.ai

*Source: <https://llms.sgit.ai/admin/versions.html> · site v0.2.0 · the markdown twin of this page, generated from it.*

---

[llms.sgit.ai](../index.md) / admin / versions

# Release history

Every push to `dev` is a release: CI validates the site, verifies the version bump, tags the commit `v{release}.{major}.{minor}`, and deploys to GitHub Pages. The version is owned by `admin/build/version.txt` and must agree with the release commit's subject.

| Version | Date | What shipped |
|---|---|---|
| v0.2.0 | 25 Aug 2026 | **The site, built from the brief pack.** The pack arrived (twelve documents, a 24-row source manifest, v0.33.62) and the site was built in the build order it sets: [the chat pane](../chat-pane/index.md) with its three surfaces and the honesty mechanisms published as decisions-with-reasons, [eight runnable samples](../chat-pane/samples.md), [the `sg.llm.*` reference](../api/index.md) and [the traps](../api/traps.md), [the security model with its gap stated unsoftened](../security/index.md), [the website half labelled as thin](../websites/index.md), [provenance](../provenance/index.md), [the provider layer](../openrouter/index.md), [local models](../local/index.md), [the agent surface](../agents/index.md) and [what is shipped and what is not](../shipped/index.md). The pack itself is [published verbatim](../documents/index.md) with a generated reader page per document. **Q1 answered by mechanism rather than convention.** The complete `sg.llm.*` contract existed only inside a 9,487-word agent authoring file, and the corpus had refused to copy it on the grounds that a competing document would drift. So the section is vendored under `sources/` with its SHA-256 recorded and [the reference is generated from it](../api/index.md); gate 6 fails the build if the page stops matching. Readable to a human, and still one author. **The agent surface treated as an acceptance criterion.** A markdown twin at every path with links rewritten to point at twins, a self-sufficient `llms.txt`, an [llms-full.txt](../llms-full.txt) that the site this pattern came from does not have, and a sitemap generated from the tree listing both. Gates 7 to 9 enforce all of it, because "it can read the map and cannot walk it" is this site's inherited finding rather than an outside one. **Seven claims re-verified against the shipped source** at v0.33.62 rather than against the brief, per the pack's own closing instruction: five confirmed, one superseded and one no longer true. [The injection question has moved](../security/index.md#injection) (a `BEGIN/END UNTRUSTED DATA` fence ships, with deny-by-default tool grants the model cannot reach), published as a narrowing rather than an answer, with the `/injection/` page still held. And [the contract and the code now disagree about tool calling](../shipped/index.md#drift), reported as N5. The gate grew from five checks to eleven, most of them the brief's own conditions made executable: key shapes banned before the first sample page shipped, the CSP qualification required on the front page, twins required and required to be current, house spelling enforced. |
| v0.1.1 | 25 Aug 2026 | **The pipeline, verified on a live deploy — and the request it answers, corrected.** The first release ran green end to end: the gate passed, CI tagged the release commit `v0.1.0`, and the deploy published. [llms.sgit.ai](https://llms.sgit.ai) already resolves and serves, and the `github.io` address redirects to it, so [N2](comms.md#needs) — which this site opened asking for DNS — was answered before it was asked and is closed as done. This release is also the second half of the proof: it exercises the tag job's next-minor check, which the first release could not, because there was no previous tag to be next after. |
| v0.1.0 | 25 Aug 2026 | **The CI pipeline, auto-tagging, and the front page it gates.** Ports the house pattern from [pki.sgit.ai](https://pki.sgit.ai) — validate → tag → deploy, where a validation failure stops the release entirely — with two improvements carried from the newer sibling sites: the tag job anchors on the newest release commit reachable from `HEAD` rather than `HEAD` itself, so a pull request landing as a merge commit does not stop the release, and the backfill checks the remote before pushing rather than re-pushing every existing tag on every run. The gate (`admin/build/validate.js`) carries five checks: version agreement across every page badge, the history table, `llms.txt` and `index.md`; internal links resolve, with query strings stripped as well as fragments; every page declares a canonical URL on the host in `CNAME`; every `<loc>` in the sitemap is on that host and has a file behind it; and a key-leak tripwire that bans both a vault-key-shaped string and key material following the write-key prefix. Nav and footer come from a single definition in `admin/build/chrome.py`, applied across the tree, so the version badge CI enforces cannot drift as the site grows. **The front page carries no argument, and says so.** The brief that sets this site's thesis has not arrived — [N1 on the comms page](comms.md#needs) — so rather than filling the space with material that would be deleted on its arrival, this release publishes the mechanism and the request. One fix reported upstream: the sibling `standards.sgit.ai` repository ignores `admin/build/` through the inherited Python `.gitignore`, so its own gate script is not committed; this repository carries the negation that fixes it. |

 [← How this site is built](index.md) [Comms →](comms.md)
