Skip to main content

Project-agnostic release readiness engine and adapters

Project description

release-readiness-core

Project-agnostic deterministic release-readiness engine and adapters.

Package layout

Path Role
release_readiness_core.engine Core validation merge types and deterministic summary
release_readiness_core.pr_gate Generic N-input PR gate combiner
release_readiness_core.readiness_engine Full artifact-based PASS/WARN/BLOCK evaluation
release_readiness_core.cli CLI entries release-readiness (validation summary) and release-readiness-evaluate (YAML + artifacts)
release_readiness_core.readiness_io JSON/YAML/git helpers for evaluate
release_readiness_core.adapters Optional helpers (Playwright → schema, GitHub check payloads)

Quickstart

The fastest path (PyPI — no git access to this repo required):

pip install "release-readiness-core==0.3.4"
release-readiness-init my-project

Pin the version you want (see PyPI). To install a specific commit instead, use a git SHA install below.

Or run the engine directly against an inline JSON list:

uv sync
uv run release-readiness --input-json '[{"key":"go-test","status":"PASS"}]'

Evaluate from a YAML config and optional JSON artifacts (writes report.json, report.md, and artifacts/release-readiness.json under the repo root):

uv run release-readiness-evaluate --repo-root . --config path/to/config.yaml \
  --empty-diff --output-dir artifacts/release-readiness

Adapter CLIs:

# Playwright JSON reporter -> readiness e2e shape
uv run playwright-to-readiness --input playwright-results.json --output e2e_results.json \
  --validation-map ops/release-readiness/validation_map.yaml

# JUnit XML (Cypress / Jest / pytest / Mocha / etc.) -> readiness e2e shape
uv run junit-to-readiness --input test-results.xml --output e2e_results.json \
  --validation-map ops/release-readiness/validation_map.yaml

# LCOV info -> readiness coverage shape
uv run lcov-to-readiness --input coverage/lcov.info --output coverage.json \
  --baseline-percent 85

# PR-risk semantic combiner (consumes existing pr-risk.json)
uv run pr-risk-semantic --pr-risk-json artifacts/pr-risk.json --generator-outcome success

--validation-map is optional on Playwright and JUnit; without it the converter emits an empty validations object (counts and failures still reported). For Playwright, override default spec extensions with --spec-extensions ts,js,mjs,e2e.

The N-input PR gate combiner lives in release_readiness_core.pr_gate (combine_gate_inputs).

Install from PyPI (version-pinned)

pip install "release-readiness-core==0.3.4"

Install from Git (SHA-pinned)

pip install "git+https://github.com/psuthar/release-readiness-core.git@<sha>"

Use this when you need an unreleased commit or a fork. Release policy and versioning: RELEASE.md.

Development

uv run pytest
uv build

Configuring PR Risk for your project

release-readiness-pr-risk ships a generic, language-agnostic baseline by default — domains classify everything to other, only generic gates (CI fetch depth, PR review summary, workflow / config validation, add tests / evidence, intent alignment, scattered review plan, test proximity, hotspot regression) fire. To make it project-specific (auth E2E gate when src/auth/ changes, migration validation when SQL files change, etc.), author a pr-risk-config.yaml:

release-readiness-init writes a commented starter at ops/release-readiness/pr-risk-config.yaml; release-readiness-doctor --pr-risk-config <path> validates it (typos, malformed predicates, references to undeclared domains, unknown evidence templates).

How-to guides

  • Quickstart — adopt the package in a new project: docs/how-to/0-quickstart.md
  • Map evidence — wire CI artifacts to validation keys: docs/how-to/1-map-evidence.md
  • Tune scoring — penalties, thresholds, remediation: docs/how-to/2-tune-scoring.md
  • CI integration — GitHub Checks and the generic adapter pattern: docs/how-to/3-ci-integration.md
  • Multi-job CI — split smoke / e2e / coverage across jobs: docs/how-to/4-multi-job-ci.md
  • Branch protection — make the readiness check required: docs/how-to/5-branch-protection.md
  • Migrating from an existing gate: docs/how-to/6-migrate-from-existing-gate.md
  • Configure PR Risk for your project: docs/how-to/7-configure-pr-risk.md
  • Recipe matrix — adapter snippets per stack (Playwright / pytest / Cypress / Jest / Vitest / Go): docs/how-to/8-recipe-matrix.md
  • Adoption tiers — pick reusable workflow vs. composables vs. raw CLIs: docs/how-to/9-adoption-tiers.md

Reference

  • Outputs glossary — every field in report.json / release-readiness.json explained: docs/reference/outputs.md
  • JSON contracts: docs/contracts/
  • Release process and SHA-pin policy: RELEASE.md
  • Changelog: CHANGELOG.md

Pre-flight

Before wiring CI, run the doctor against your scaffolded config:

release-readiness-doctor --config ops/release-readiness/config.yaml \
  --smoke-results evidence/smoke.json \
  --e2e-results evidence/e2e.json \
  --coverage evidence/coverage.json

Doctor catches config typos, evidence-shape mismatches, and common inconsistencies (e.g. failed_count > 0 but failures: []) before they reach a real run. Exits non-zero on any error.

Two CLIs — when to use which

  • release-readiness-evaluate — the full evaluator. Loads config.yaml, reads evidence files, computes PASS/WARN/BLOCK, writes report.json / report.md / release-readiness.json. Use this in CI.
  • release-readiness — a lightweight summary of validation booleans given inline JSON. No scoring, no thresholds, no artifacts on disk. Useful for quick sanity checks (release-readiness --input-json '[{"key":"x","status":"PASS"}]') or as a debugging probe in scripts. Not a substitute for the evaluator in production CI.

Contracts and Spike Notes

  • Package boundary API contract spike notes: docs/spikes/package-boundary-api-contract.md
  • Validation-key handling prep (validation keys → config): docs/prep/validation-key-handling.md
  • PR risk input schema: docs/contracts/pr-risk-input-v1.schema.json
  • Readiness output schema: docs/contracts/release-readiness-output-v1.schema.json
  • Validation config draft schema: docs/contracts/validation-config-v1.schema.json
  • Contract reference guide: docs/contracts/README.md

MCP Setup (Cursor + Claude)

This repo mirrors the same MCP server set used in TalkBack:

  • talkback
  • github
  • atlassian

Create .env.mcp in the repo root (or export these vars in your shell):

TALKBACK_MCP_AUTH_HEADER="Bearer <talkback-api-key>"
TALKBACK_MCP_ACTING_USER_ID="<talkback-user-uuid>"
GITHUB_PERSONAL_ACCESS_TOKEN="<github-pat>"
ATLASSIAN_DOMAIN="<your-domain>.atlassian.net"
ATLASSIAN_EMAIL="<your-email>"
ATLASSIAN_API_TOKEN="<atlassian-api-token>"

Then generate local MCP config for both tools:

./scripts/setup-mcp-config.sh

This writes:

  • .cursor/mcp.json (Cursor)
  • .mcp.json (Claude Code project scope)

Both files are gitignored.

Agent Command Workflows

This repository supports the same Jira automation command patterns as TalkBack.

  • implement <TICKET-KEY> Standard ticket workflow: code + tests + PR + Jira transition to In Review.
  • implement <TICKET-KEY> FULL_AUTO Includes standard workflow plus post-PR gate polling, merge, and Jira Done transition.
  • run epic <TICKET-KEY> / continue epic <TICKET-KEY> Epic automation mode that runs each child ticket as FULL_AUTO and drains remaining work.

Policy ownership:

  • Entry point: CLAUDE.md
  • Jira workflow: docs/agent/workflow-jira.md
  • FULL_AUTO merge rules: docs/agent/workflow-full-auto.md
  • Epic run rules: docs/agent/workflow-epic-run.md
  • Testing policy: docs/agent/testing-validation.md
  • Rule map: docs/agent/rule-ownership.md

Epic mode uses the same merge gate as FULL_AUTO in this repo: PR Gate success plus mergeable_state: clean.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

release_readiness_core-0.3.4.tar.gz (447.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

release_readiness_core-0.3.4-py3-none-any.whl (122.2 kB view details)

Uploaded Python 3

File details

Details for the file release_readiness_core-0.3.4.tar.gz.

File metadata

  • Download URL: release_readiness_core-0.3.4.tar.gz
  • Upload date:
  • Size: 447.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for release_readiness_core-0.3.4.tar.gz
Algorithm Hash digest
SHA256 b001123ac98f28c991b3e77ff5c0d790d27b3422e94bb43f10f6574966b26cfc
MD5 4737136cdd0a33dddb570bc5602c4815
BLAKE2b-256 86099f19be7b246ac472a0f4c1bfefc5563eff228939f5010ee52cc7ebebcc2d

See more details on using hashes here.

Provenance

The following attestation bundles were made for release_readiness_core-0.3.4.tar.gz:

Publisher: publish-pypi.yml on psuthar/release-readiness-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file release_readiness_core-0.3.4-py3-none-any.whl.

File metadata

File hashes

Hashes for release_readiness_core-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5db468b2917c1928590d6f1c7af7e18253c5ebce74286329309f5628fdb6e262
MD5 2ed2f3103943d392b9a4bad5364fb36e
BLAKE2b-256 c1a7ba1b770dc796aea1dbe9616a0bcba4a4fe0cb765c69192998611bbc4ea4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for release_readiness_core-0.3.4-py3-none-any.whl:

Publisher: publish-pypi.yml on psuthar/release-readiness-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page