Agent Lifecycle Kit

Standard Operating Procedure: Release

This kit ships as a git checkout (install.sh / KITREF), not npm. Versioned

Use with agent-release.

This kit ships as a **git checkout** (install.sh / KIT_REF), not npm. Versioned artifacts are **GitHub Releases** (vX.Y.Z tags). Changelog generation uses **git-cliff** (same stack as ArchLens).

1. Quality gates

  • [ ] Functional impact map aligned; no silent catalog rewrites
  • [ ] XFN matrix complete; every **apply** row green or BLOCKED with owner
  • [ ] Security + arch-drift findings addressed or explicitly deferred
  • [ ] Pre-commit / CI green on the release revision

2. Human-facing package

  • [ ] Conventional **PR title** (conventional-commits.md); squash-and-merge uses it on the default branch
  • [ ] Changelog / release notes: user-visible behavior, migrations, flags
  • [ ] Rollback: previous version / flag off / migration reverse notes

Kit release automation

Pipelines (keep these separate on purpose):

| Pipeline | Workflow | When | |----------|----------|------| | **Verify → Promote** | `.github/workflows/ci.yml` | PR / main / workflow_dispatch | | **Pages** | `.github/workflows/deploy-pages.yml` | Docs-site path changes on main | | **CodeQL** | `.github/workflows/codeql.yml` | PR / main / weekly | | **Live EDD** | `.github/workflows/edd-live.yml` | Nightly schedule |

After green **Verify** on main, the **Promote** job:

1. **Detect** - bin/release.sh detect looks at conventional commits since the last v* tag. - feat → minor, fix/perf/refactor → patch, ! / BREAKING CHANGE → major - docs / chore / ci / test alone do **not** cut a release 2. **Publish** - creates a GitHub Release with **version-scoped** notes (bin/release.sh publish): commits since the previous tag only, headed ## vX.Y.Z (never [unreleased]) 3. **Sync notes** - bin/release.sh sync-notes rewrites every existing vX.Y.Z GitHub Release body from previous-tag..this-tag (idempotent repair) 4. **Changelog** - regenerates date-grouped CHANGELOG.md via pnpm changelog (bin/changelog-render.mjs) and commits chore(changelog): … when needed. CHANGELOG stays date-grouped; GitHub Release notes stay version-scoped.

Local:

pnpm changelog                         # regenerate date-grouped CHANGELOG.md
pnpm release:detect                    # print whether HEAD would release
bash bin/release.sh notes              # preview notes since last tag → HEAD
bash bin/release.sh notes '' v1.0.0    # first-release range (beginning → tag)
bash bin/release.sh notes v1.0.0 v1.1.0
bash bin/release.sh sync-notes         # repair GitHub Release bodies (needs GH_TOKEN)

Consumers pin installs with KIT_REF=vX.Y.Z (see install.sh).

3. Ops handoff

  • [ ] Load SLOs mapped to telemetry (or N/A) per handover_telemetry.md
  • [ ] Docs/runbooks updated when operators or public API changed (agent-docs)
  • [ ] Report catalog + XFN summary to the user before calling Release COMPLETE