Scott Holdings LLC
Design preview
GS

Versions & releasing

Changing how the AI behaves works like releasing software: freeze a draft, test it, then go live.

Why can’t I just publish?

Because behavior changes can break things quietly — a reworded glossary can send questions down the wrong path without anyone noticing. So every pack carries a test suite, and the database itself refuses to make a version live until every test has passed for that exact draft. Nobody can skip it — not through this screen, not through any other tool. Think of it as code review plus automated tests, for the AI’s behavior.

Freeze a draft v3 · Jul 29

Takes a snapshot of all 14 pieces exactly as they are right now.

Run the tests Jul 29 14:11

The test suite runs against this exact draft — not against “the latest”, this one.

All tests passed 9 / 9

5 routing tests, 3 content tests, 1 quality score.

Go live Ready

v3 becomes the live version; v2 is retired to history automatically.

Version history

VerStatusTestsDate
v3DraftPassed 9/9Jul 29, 2026
v2LivePassed 9/9Mar 14, 2026Retires when v3 goes live
v1RetiredBefore testing existedJan 30, 2026
Going live also retires the previous version — history is always kept.3 versions
Behind this page/templates/harnesses/:harnessPackKey/versions · catalog publisher

Retrieve

TemplateVersions filtered to TemplateType='HarnessPack', joined to the latest HarnessEvalRuns per version.

Save

sp_SnapshotHarnessPacksp_QueueHarnessEvalRunsp_PublishHarnessPackVersion; the prior published version auto-archives.

Success

  • The gate lives in the proc — the UI can gray the button, SQL enforces it.
  • A Passed run binds to the exact TemplateVersionId; re-snapshot means re-eval.
  • The seed / upgrade worker only ever reads Published (sp_GetPublishedHarnessPack, base-first).

CLI handoff

Implement this scaffold from the structured contract, then remove hard-coded preview rows. The source of truth is CLI Handoff and admin-cli-manifest.json.

Page IDharness-versions
Route/templates/harnesses/:harnessPackKey/versions
Accesscatalog publisher
Statuscatalog-schema-ready-content-not-seeded

Server-inject identity and scope values; never trust browser-supplied account, app, tenant, user, entitlement, price, or permission identifiers. Preserve the loading, empty, forbidden, failed, retrying, and completed states shown by the preview.