Verification and Release
Issue a release decision only from evidence proportional to consequence, novelty, and reversibility.
Trigger boundary
Use this skill for:
- designing a verification plan from a diff, migration, or release candidate;
- auditing CI/test evidence and identifying material gaps;
- deciding
READY, CONDITIONAL, or BLOCKED for a release;
- defining rollout, monitoring, rollback, and post-release checks.
Do not trigger for:
- implementing product behavior or writing the initial feature tests;
- investigating why a test or production symptom fails—use
debugging-investigator;
- executing an upgrade—use
codebase-evolution-controller;
- reviewing a tiny local edit when no release decision or broader evidence strategy is requested.
Required inputs
Collect or explicitly mark unavailable:
- integrated diff or release candidate identifier and repository state;
- intended behavior, acceptance criteria, and affected users/consumers;
- architecture/change-impact evidence and risk-sensitive surfaces;
- CI runs, local checks, coverage or test map, and known baseline failures;
- deployment topology, feature flags, migrations, observability, and rollback mechanism;
- security, privacy, compliance, platform, and compatibility constraints;
- release scope, cohort, timing, and responsible owner.
A list of commands without the exact artifact/ref and result is not release evidence.
Safety baseline
- Inspect current worktree and candidate identity before running checks.
- Do not discard, clean, stash, rewrite, or auto-fix user work.
- Do not mark a check passed when it was skipped, filtered, flaky, retried to green without analysis, or run against a different revision.
- Do not expose secrets in logs, screenshots, or evidence bundles.
- Do not perform production deployment or rollback merely because this skill recommends it; use the project's authorized release mechanism and owner.
- Treat irreversible schema/data changes as release blockers until restore or forward-recovery evidence exists.
Workflow
1. Freeze the candidate and claim set
Record:
Candidate ref/artifact:
Working-tree state:
Change summary:
Behavioral claims:
Nonfunctional claims:
Supported environments/consumers:
Release mode:
Every check must prove or challenge a claim. Avoid undirected “run everything” plans that still miss the critical path.
2. Map change to risk
Use repository/change-impact evidence to classify:
- direct files and behavior;
- public contracts and consumers;
- authentication, authorization, privacy, money, data integrity, destructive operations;
- concurrency, distributed systems, caches, migrations, and background work;
- performance, accessibility, SEO, observability, and platform/store constraints;
- reversibility and blast radius.
Assign a risk tier using references/risk-test-matrix.md. Record why; line count and developer confidence do not determine risk.
3. Build the evidence matrix
For each material claim select evidence across relevant layers:
| Layer |
Purpose |
| Static |
Syntax, types, lint rules, policy/configuration, dependency and secret checks |
| Unit/component |
Local logic, state transitions, boundary values, accessibility semantics |
| Contract/schema |
Producer/consumer compatibility, serialization, generated clients, migrations |
| Integration |
Real subsystem boundaries, storage, network, queues, auth, framework behavior |
| End-to-end |
Critical user/operational journeys in a representative environment |
| Nonfunctional |
Performance, resource, accessibility, security, reliability, observability |
| Operational |
Build artifact, deploy/startup, health, flags, dashboards, alerts, rollback |
Do not require every layer mechanically. Require the smallest set that can detect the credible failure modes.
4. Challenge the test strategy
For each risk ask:
- What failure would users or operators observe?
- Which test or signal detects it before release?
- Can the test pass while the failure still exists?
- Is the environment representative enough?
- Does the evidence cover negative paths, partial failure, retries, concurrency, and recovery?
- Is the assertion behavioral or coupled to implementation details?
- Does changed code lack a test because it is trivial, untestable, or simply omitted?
Coverage percentage is a locator, not a verdict. Inspect uncovered changed branches and critical paths; do not set a universal percentage gate without repository policy.
5. Collect and normalize results
Capture exact command, environment, candidate, start/end, status, totals, failed/skipped/flaky counts, and artifact links or paths. Use scripts/summarize_test_reports.py to aggregate JUnit XML and LCOV summaries without changing reports:
python skills/verification-and-release/scripts/summarize_test_reports.py \
--junit build/test-results --lcov coverage/lcov.info --format markdown
Correlate CI jobs with the candidate ref. A passing previous commit, cancelled matrix leg, or allowed failure does not prove this candidate.
6. Evaluate evidence quality
Classify each item:
PASS: relevant, current, representative, and complete enough;
FAIL: expected claim contradicted;
GAP: no evidence for a material risk;
STALE: wrong ref/version/environment;
FLAKY: result is nondeterministic or passed only after unexplained retry;
NOT_APPLICABLE: reason documented and reviewed.
A failure in a critical path blocks release until resolved or explicitly accepted by an authorized owner with containment. Do not relabel it “known issue” without scope evidence.
7. Verify operational readiness
Check applicable release controls:
- reproducible build artifact and provenance;
- configuration, secrets references, permissions, and environment validation;
- schema/data migration ordering and compatibility with mixed versions;
- health/readiness/startup behavior and capacity headroom;
- feature flag defaults, targeting, kill switch, and stale-flag owner;
- metrics, traces, logs, dashboards, alerts, and diagnostic identifiers;
- rollback or forward-fix procedure, authority, time limit, and data implications;
- runbooks, support notes, user/admin communication, and migration docs;
- store, signing, privacy manifest, platform policy, or deployment adapter checks where applicable.
A rollback command that has not been validated against the candidate's state transition is a hypothesis.
8. Define rollout and post-release verification
Specify cohorts/environments, promotion intervals or sample thresholds, signals, owners, and stop/rollback conditions. Include synthetic or manual checks for high-value journeys immediately after release. Account for delayed jobs, cache expiry, asynchronous migrations, and mobile/store uptake when relevant.
9. Issue the decision
Use references/release-evidence-schema.md.
- READY: all critical claims have current evidence; operational and rollback controls are credible; residual risks are bounded and owned.
- CONDITIONAL: no uncontained critical failure, but named noncritical evidence or operational conditions must be satisfied before or during a constrained rollout.
- BLOCKED: failed critical evidence, material unknown, unsafe compatibility/data transition, missing rollback/observability, or candidate identity mismatch.
State the minimum actions that can change the decision. Never use “looks good” as a release status.
Interaction boundaries
- Implementing skills own focused tests and checks for the behavior they change.
verification-and-release owns the integrated evidence model and release gate.
debugging-investigator explains failed or flaky evidence when cause is unknown.
codebase-evolution-controller supplies migration stages, compatibility, rollout, and rollback evidence.
documentation-synchronizer closes release-blocking user, API, migration, configuration, and runbook gaps.
multi-agent-work-coordinator may gather evidence in parallel; this skill accepts or rejects the integrated evidence.
Failure handling
- If CI is unavailable, substitute locally reproducible evidence only when environment differences are bounded; otherwise record a gap.
- If tests are flaky, estimate neither probability nor safety from a few retries. Isolate cause or block the affected claim.
- If a full suite is too expensive, select risk-targeted shards and document untested space and compensating rollout controls.
- If production-like data cannot be used, create representative sanitized fixtures and state limitations.
- If rollback is impossible, require stronger pre-release evidence, smaller cohorts, and forward-recovery design; high-risk irreversible changes may remain blocked.
Stop conditions
Stop when each material claim has a classified evidence state, critical gaps have an owner and action, operational controls are evaluated, and a traceable verdict is issued. Do not continue into deployment without an explicit authorized release action.
1---2name: verification-and-release3description: Build a risk-based verification strategy and decide whether an integrated change is ready to release from traceable test, CI, coverage, operational, security, compatibility, and rollback evidence. Use when the question is what must be proven or whether a completed change can ship. Do not use to implement the feature, diagnose an unknown failure, or treat a green checkmark as sufficient evidence by itself.4---56# Verification and Release78Issue a release decision only from evidence proportional to consequence, novelty, and reversibility.910## Trigger boundary1112Use this skill for:1314- designing a verification plan from a diff, migration, or release candidate;15- auditing CI/test evidence and identifying material gaps;16- deciding `READY`, `CONDITIONAL`, or `BLOCKED` for a release;17- defining rollout, monitoring, rollback, and post-release checks.1819Do not trigger for:2021- implementing product behavior or writing the initial feature tests;22- investigating why a test or production symptom fails—use `debugging-investigator`;23- executing an upgrade—use `codebase-evolution-controller`;24- reviewing a tiny local edit when no release decision or broader evidence strategy is requested.2526## Required inputs2728Collect or explicitly mark unavailable:29301. integrated diff or release candidate identifier and repository state;312. intended behavior, acceptance criteria, and affected users/consumers;323. architecture/change-impact evidence and risk-sensitive surfaces;334. CI runs, local checks, coverage or test map, and known baseline failures;345. deployment topology, feature flags, migrations, observability, and rollback mechanism;356. security, privacy, compliance, platform, and compatibility constraints;367. release scope, cohort, timing, and responsible owner.3738A list of commands without the exact artifact/ref and result is not release evidence.3940## Safety baseline4142- Inspect current worktree and candidate identity before running checks.43- Do not discard, clean, stash, rewrite, or auto-fix user work.44- Do not mark a check passed when it was skipped, filtered, flaky, retried to green without analysis, or run against a different revision.45- Do not expose secrets in logs, screenshots, or evidence bundles.46- Do not perform production deployment or rollback merely because this skill recommends it; use the project's authorized release mechanism and owner.47- Treat irreversible schema/data changes as release blockers until restore or forward-recovery evidence exists.4849## Workflow5051### 1. Freeze the candidate and claim set5253Record:5455```text56Candidate ref/artifact:57Working-tree state:58Change summary:59Behavioral claims:60Nonfunctional claims:61Supported environments/consumers:62Release mode:63```6465Every check must prove or challenge a claim. Avoid undirected “run everything” plans that still miss the critical path.6667### 2. Map change to risk6869Use repository/change-impact evidence to classify:7071- direct files and behavior;72- public contracts and consumers;73- authentication, authorization, privacy, money, data integrity, destructive operations;74- concurrency, distributed systems, caches, migrations, and background work;75- performance, accessibility, SEO, observability, and platform/store constraints;76- reversibility and blast radius.7778Assign a risk tier using [`references/risk-test-matrix.md`](references/risk-test-matrix.md). Record why; line count and developer confidence do not determine risk.7980### 3. Build the evidence matrix8182For each material claim select evidence across relevant layers:8384| Layer | Purpose |85| --- | --- |86| Static | Syntax, types, lint rules, policy/configuration, dependency and secret checks |87| Unit/component | Local logic, state transitions, boundary values, accessibility semantics |88| Contract/schema | Producer/consumer compatibility, serialization, generated clients, migrations |89| Integration | Real subsystem boundaries, storage, network, queues, auth, framework behavior |90| End-to-end | Critical user/operational journeys in a representative environment |91| Nonfunctional | Performance, resource, accessibility, security, reliability, observability |92| Operational | Build artifact, deploy/startup, health, flags, dashboards, alerts, rollback |9394Do not require every layer mechanically. Require the smallest set that can detect the credible failure modes.9596### 4. Challenge the test strategy9798For each risk ask:99100- What failure would users or operators observe?101- Which test or signal detects it before release?102- Can the test pass while the failure still exists?103- Is the environment representative enough?104- Does the evidence cover negative paths, partial failure, retries, concurrency, and recovery?105- Is the assertion behavioral or coupled to implementation details?106- Does changed code lack a test because it is trivial, untestable, or simply omitted?107108Coverage percentage is a locator, not a verdict. Inspect uncovered changed branches and critical paths; do not set a universal percentage gate without repository policy.109110### 5. Collect and normalize results111112Capture exact command, environment, candidate, start/end, status, totals, failed/skipped/flaky counts, and artifact links or paths. Use [`scripts/summarize_test_reports.py`](scripts/summarize_test_reports.py) to aggregate JUnit XML and LCOV summaries without changing reports:113114```sh115python skills/verification-and-release/scripts/summarize_test_reports.py \116 --junit build/test-results --lcov coverage/lcov.info --format markdown117```118119Correlate CI jobs with the candidate ref. A passing previous commit, cancelled matrix leg, or allowed failure does not prove this candidate.120121### 6. Evaluate evidence quality122123Classify each item:124125- `PASS`: relevant, current, representative, and complete enough;126- `FAIL`: expected claim contradicted;127- `GAP`: no evidence for a material risk;128- `STALE`: wrong ref/version/environment;129- `FLAKY`: result is nondeterministic or passed only after unexplained retry;130- `NOT_APPLICABLE`: reason documented and reviewed.131132A failure in a critical path blocks release until resolved or explicitly accepted by an authorized owner with containment. Do not relabel it “known issue” without scope evidence.133134### 7. Verify operational readiness135136Check applicable release controls:137138- reproducible build artifact and provenance;139- configuration, secrets references, permissions, and environment validation;140- schema/data migration ordering and compatibility with mixed versions;141- health/readiness/startup behavior and capacity headroom;142- feature flag defaults, targeting, kill switch, and stale-flag owner;143- metrics, traces, logs, dashboards, alerts, and diagnostic identifiers;144- rollback or forward-fix procedure, authority, time limit, and data implications;145- runbooks, support notes, user/admin communication, and migration docs;146- store, signing, privacy manifest, platform policy, or deployment adapter checks where applicable.147148A rollback command that has not been validated against the candidate's state transition is a hypothesis.149150### 8. Define rollout and post-release verification151152Specify cohorts/environments, promotion intervals or sample thresholds, signals, owners, and stop/rollback conditions. Include synthetic or manual checks for high-value journeys immediately after release. Account for delayed jobs, cache expiry, asynchronous migrations, and mobile/store uptake when relevant.153154### 9. Issue the decision155156Use [`references/release-evidence-schema.md`](references/release-evidence-schema.md).157158- **READY:** all critical claims have current evidence; operational and rollback controls are credible; residual risks are bounded and owned.159- **CONDITIONAL:** no uncontained critical failure, but named noncritical evidence or operational conditions must be satisfied before or during a constrained rollout.160- **BLOCKED:** failed critical evidence, material unknown, unsafe compatibility/data transition, missing rollback/observability, or candidate identity mismatch.161162State the minimum actions that can change the decision. Never use “looks good” as a release status.163164## Interaction boundaries165166- Implementing skills own focused tests and checks for the behavior they change.167- `verification-and-release` owns the integrated evidence model and release gate.168- `debugging-investigator` explains failed or flaky evidence when cause is unknown.169- `codebase-evolution-controller` supplies migration stages, compatibility, rollout, and rollback evidence.170- `documentation-synchronizer` closes release-blocking user, API, migration, configuration, and runbook gaps.171- `multi-agent-work-coordinator` may gather evidence in parallel; this skill accepts or rejects the integrated evidence.172173## Failure handling174175- If CI is unavailable, substitute locally reproducible evidence only when environment differences are bounded; otherwise record a gap.176- If tests are flaky, estimate neither probability nor safety from a few retries. Isolate cause or block the affected claim.177- If a full suite is too expensive, select risk-targeted shards and document untested space and compensating rollout controls.178- If production-like data cannot be used, create representative sanitized fixtures and state limitations.179- If rollback is impossible, require stronger pre-release evidence, smaller cohorts, and forward-recovery design; high-risk irreversible changes may remain blocked.180181## Stop conditions182183Stop when each material claim has a classified evidence state, critical gaps have an owner and action, operational controls are evaluated, and a traceable verdict is issued. Do not continue into deployment without an explicit authorized release action.