Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
eb50077
docs(release): add living release process index
EffortlessSteven Aug 4, 2026
b079a99
docs(release): add canonical preparation procedure
EffortlessSteven Aug 4, 2026
83cb293
docs(release): add release decision template
EffortlessSteven Aug 4, 2026
05b00a0
docs(release): add release readiness template
EffortlessSteven Aug 4, 2026
4a1079d
docs(release): add release handoff template
EffortlessSteven Aug 4, 2026
d5b667a
docs(promote): make xtask the canonical runbook
EffortlessSteven Aug 4, 2026
3b93bb5
docs: index living release procedure
EffortlessSteven Aug 4, 2026
40a9fed
docs(agents): point release work at canonical procedures
EffortlessSteven Aug 4, 2026
b1c2dba
docs(release): correct handoff copy paths
EffortlessSteven Aug 4, 2026
ddf2806
docs(release): bind publish to exact tag checkout
EffortlessSteven Aug 4, 2026
7bd33f3
docs(release): record exact-tag publication boundary
EffortlessSteven Aug 4, 2026
196e0e3
docs(release): require staged-candidate aggregate evidence
EffortlessSteven Aug 4, 2026
9f55022
docs(release): require one staged candidate authority
EffortlessSteven Aug 4, 2026
851df4d
docs(release): carry candidate-ready evidence into handoff
EffortlessSteven Aug 4, 2026
7a05752
docs(release): keep shared candidate prep on swarm
EffortlessSteven Aug 4, 2026
5e5a1aa
docs(agents): keep shared release prep on swarm
EffortlessSteven Aug 4, 2026
88d1535
docs(release): prepare shared candidate before promotion
EffortlessSteven Aug 4, 2026
d03564d
docs(release): bind tagging to approved candidate
EffortlessSteven Aug 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 22 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,29 @@ Push normal development branches to `swarm` and open PRs against
`EffortlessMetrics/shiplog` clone in place for new normal work; clone
`shiplog-swarm` side-by-side when setting up a fresh agent or machine.

Promotion from swarm back to source uses a regular merge-commit PR into
`EffortlessMetrics/shiplog/main`, not a squash merge. A promotion PR should
include the swarm head SHA, included swarm PRs, and proof that
`Shiplog Rust Small Result` passed. Use
Promotion from swarm back to source uses `cargo xtask promote` and a regular
merge-commit PR into `EffortlessMetrics/shiplog/main`, never a squash merge.
Do not push raw `swarm/main` as a source promotion branch or rebuild the
per-path overlay manually. Run the current exact-head dry-run twice, inspect the
machine path decisions and included receipts, execute the idempotent command,
and verify the landed checkpoint with `--verify-only`. A fail-closed result is
a repair queue; do not bypass it with an older source ref or historical mode.
Use
[`plans/shiplog-swarm/promotion-runbook.md`](plans/shiplog-swarm/promotion-runbook.md)
for the exact promotion sequence.
for the complete promotion and closeout sequence.

Shared release-candidate preparation also belongs in swarm. Finish the release
scope, version and lockfile, changelog freeze, README/guides, release decision,
readiness ledger, and handoff skeleton on `shiplog-swarm/main`, then promote the
exact proven candidate. Source work begins only after that checkpoint and is
limited to release execution, tagging, publication, and explicitly authorized
source-owned writer configuration. Use
[`docs/release/release-preparation.md`](docs/release/release-preparation.md) for
the current preparation, preflight, tag, staged-artifact, publication,
rollback, and closeout procedure. Versioned readiness/decision files and root
`RELEASE_HANDOFF_*` files are historical receipts, not standing command
references. A product or shared-documentation defect found on source returns to
swarm and is promoted again.

## Code Review Standards

Expand Down
19 changes: 16 additions & 3 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,28 @@ history.
- `docs/proposals/` owns problem framing, user value, alternatives, and success criteria.
- `docs/specs/` owns required behavior, non-goals, acceptance, and proof obligations.
- `docs/adr/` owns durable architecture decisions and consequences.
- `plans/` owns PR-sized sequencing, proof commands, and rollback notes.
- `plans/` owns PR-sized sequencing, proof commands, rollback notes, and the
source/swarm promotion transaction.
- `.codex/goals/active.toml` owns current Codex execution state.
- `docs/status/SUPPORT_TIERS.md` owns product-claim-to-proof mapping.
- `policy/*.toml` owns enforceable ledgers and exceptions.
- `docs/governance/` owns human guides to enforced repository-governance boundaries (e.g. [automation authority](governance/automation-authority.md)).
- `docs/handoffs/` owns closeout outcomes and residual work.
- `docs/governance/` owns human guides to enforced repository-governance
boundaries, including [automation authority](governance/automation-authority.md).
- `docs/release/release-preparation.md` owns the living release-preparation,
staging, publication, and closeout procedure.
- versioned files under `docs/release/` and root `RELEASE_HANDOFF_*` files own
historical release decisions and execution evidence, not current commands.
- `docs/handoffs/` owns initiative closeout outcomes and residual work.

## Linking rule

Every material initiative should be linked across the stack:

`roadmap -> proposal -> spec -> ADR (if needed) -> plan -> active goal -> issue/PR -> proof and policy receipts`.

A release adds a separate bounded evidence chain:

`merged swarm candidate -> exact source promotion -> release decision -> readiness ledger -> immutable tag proof -> public-state handoff`.

Start a new release from [`docs/release/README.md`](release/README.md). Do not
copy standing instructions from a historical versioned release receipt.
66 changes: 66 additions & 0 deletions docs/release/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Shiplog Release Documentation

This directory separates the **current release procedure** from historical
release evidence.

## Current procedure

Use [`release-preparation.md`](release-preparation.md) for every new release.
It owns the current order of operations, stop conditions, proof commands,
publication boundary, rollback rules, and copyable checklists.

Promotion from the development trunk into the public source repository is a
separate prerequisite for source release execution. Use
[`plans/shiplog-swarm/promotion-runbook.md`](../../plans/shiplog-swarm/promotion-runbook.md)
for that exact-source/exact-swarm transaction.

## Artifact roles

| Surface | Role |
| --- | --- |
| `release-preparation.md` | Living preparation, staging, publication, and closeout procedure. |
| `templates/` | Starting points for a new versioned readiness ledger and execution handoff. |
| `<version>-release-decision.md` | Version-specific scope and release/no-release decision. |
| `<version>-readiness.md` | Version-specific preflight and observed release evidence. |
| `../../RELEASE_HANDOFF_<version>.md` | Version-specific execution and public-state handoff. |
| `../../CHANGELOG.md` | User-visible release contents and version history. |

Versioned files and root `RELEASE_HANDOFF_*` files are historical receipts.
They may contain commands, workflow names, tools, versions, or repository state
that were correct for that release but are no longer current. **Do not copy a
historical command block into a new release.** Start from the living procedure
and current templates, then record the commands and evidence actually used.

## Authority boundary

- `EffortlessMetrics/shiplog-swarm` owns normal product, documentation, test,
CI, policy, and shared release-candidate preparation: scope, version,
changelog freeze, README/guides, release decision, readiness ledger, and
handoff skeleton.
- `EffortlessMetrics/shiplog` owns the public source lineage, release tags,
crates.io publication, GitHub Releases, signing, package-channel publication,
and security-sensitive release credentials.
- A complete shared release candidate must be promoted from a proven exact
swarm head into source through a regular merge-commit checkpoint before
source release execution begins.
- Source release preparation is narrow and source-owned: validate the promoted
candidate and adjust only explicitly authorized release-writer configuration
when necessary. A product or shared-documentation defect goes back to swarm.

## Quick route

1. On `shiplog-swarm`, finish the release scope, shared docs, version/lockfile,
changelog freeze, release decision, readiness ledger, and handoff skeleton.
2. Prove the exact release candidate on `shiplog-swarm/main`.
3. Promote that exact green swarm head with `cargo xtask promote`.
4. Verify and close out the regular-merge source checkpoint.
5. On current `shiplog/main`, run source preflight and merge only narrowly
required source-owned release-writer changes.
6. Push one immutable annotated tag from the exact proven source commit.
7. Require the source Release workflow to stage and validate one exact
four-platform candidate set while it remains non-current.
8. Publish crates.io and make the GitHub release public only after the exact tag
workflow and terminal candidate-ready aggregate are green.
9. Verify public assets and package channels, finalize the observed release
evidence, and back-port any source-only release documentation/workflow
changes to swarm before normal promotion resumes.
Loading
Loading