Skip to main content

Release Readiness Loop

warning

This page is a retained loop design. Its named release template and prompt are not currently tracked under .agents/tasks; restore and review them before attempting a release loop.

Overview

The release readiness loop validates that the project is ready to ship. It runs build, type-check, and the full test suite; checks version bump, changelog, and release hygiene; auto-fixes the blockers it can (version, changelog, lock file); and produces an explicit recommendation.

Template: prd-release.template.json Prompt: PROMPT_release.md Stories: 6 (R00-R05) Slash command: /release-loop-bootstrap [version]

Story Breakdown

IDTitleDepends OnOutput
R00Preflight: lock release scope and target--.ralph/release-scope.md
R01Build and type-check validationR00.ralph/release-checks.md (Build section)
R02Test suite validationR01.ralph/release-checks.md (Tests section)
R03Version, changelog, and hygiene checksR00.ralph/release-checks.md (Hygiene section)
R04Fix release blockersR01, R02, R03.ralph/release-blockers.md
R05Final validation and release summaryR04.ralph/release-summary.md

R01, R02, and R03 are all independent of each other after R00. R04 waits for all three.

Flow

Hygiene Checks (R03)

R03 runs six independent checks and records each as PASS / FAIL / SKIP:

CheckWhat It Verifies
VERSION_BUMPCurrent version is higher than the last git tag
CHANGELOG_UPDATEDCHANGELOG.md has an entry for the target version
NO_TODO_IN_DELTANo TODO/FIXME/HACK/XXX in files changed since last tag
UNCOMMITTED_CHANGESNo uncommitted changes to non-.ralph/ files
LOCK_FILE_SYNCLock file committed alongside any package.json changes
ENV_CONSISTENCY.env.example contains all keys in the required env config

What the Loop Auto-Fixes

BlockerAuto-Fix Applied
Version not bumpedBumps package.json to target version
No changelog entryGenerates entry from git log in Keep-a-Changelog format
Lock file out of syncRuns npm install to regenerate

All other failures (build errors, test failures, type errors) are documented in .ralph/release-blockers.md for human action -- the loop never changes application logic or test assertions to force a pass.

Release Recommendation

R05 produces an explicit recommendation in .ralph/release-summary.md:

StatusMeaning
READY_TO_RELEASEAll must-fix blockers resolved
BLOCKEDMust-fix blockers remain (listed with exact description)
RELEASE_WITH_KNOWN_ISSUESOnly nice-to-have items remain

Quality Gates

  • Read .ralph/intake/current-guidelines.json at the start of every story
  • Do not implement new features or change application logic
  • Never fix test failures by modifying test assertions to match wrong behavior
  • Every check must be recorded as PASS, FAIL, or SKIP (never left without a status)
  • Document all findings before attempting any fix

Artifacts

FileWritten ByPurpose
.ralph/release-scope.mdR00Target version, release branch, delta since last tag
.ralph/release-checks.mdR01, R02, R03All check results with PASS/FAIL/SKIP status
.ralph/release-blockers.mdR04Remaining blockers with human action required
.ralph/release-summary.mdR05Final recommendation and metrics

Run Command

# Bootstrap (from within repo with Ralph as submodule):
/release-loop-bootstrap v1.2.3

# Then run Ralph:
PROMPT_BUILD=.agents/ralph/PROMPT_release.md \
PRD_PATH=.agents/tasks/prd-active.json \
bash .agents/ralph/loop.sh