{"id":"ops/launch-review","relativePath":"ops/launch-review.md","title":"Launch Review Packet","markdown":"# Launch Review Packet\n\n`pnpm launch:review` builds a machine-readable launch packet from the latest artifacts. It does not rerun heavy gates; it verifies that the evidence already collected is fresh, internally consistent, and safe to use for a launch decision.\n\n## Commands\n\nStaging / controlled beta review:\n\n```bash\npnpm launch:review\n```\n\nControlled beta go/no-go summary:\n\n```bash\npnpm launch:beta:readiness\n```\n\nFail-fast staging check:\n\n```bash\npnpm launch:review:check\n```\n\nProduction launch review:\n\n```bash\npnpm launch:review:production\n```\n\nRefresh evidence and review in one ordered run:\n\n```bash\npnpm launch:evidence -- --base-url=https://<deploy-host> --iiif-tile-url=https://<iiif-tile>\npnpm launch:evidence:production -- --base-url=https://<shareable-url> --public-read-base-url=https://<shareable-url> --iiif-tile-url=https://<iiif-tile>\n```\n\nThe evidence runner starts with `pnpm hardening:pen-dr` so security-audit and\nPostgres DR artifacts are fresh before deployment preflight and launch review\nread them. It continues after individual failures, writes\n`artifacts/launch/launch-evidence-latest.json`, and then runs the launch review\nso operators can see every red step in one packet.\nUse `--step-timeout-ms=<milliseconds>` for bounded evidence runs that should\nrecord a failed step and still write the launch evidence packet when a nested\ncommand runs too long.\nEvery failed or skipped step in `launch-evidence-latest.json` includes\n`nextEvidenceNeeded` plus a `remediation` object naming the command to rerun and\nthe artifact that must turn green. Skipped k6 samples are therefore preserved as\noperator-visible launch evidence debt instead of being silently treated as a\nproduction-ready SLO proof.\nWhen `--fail-fast` stops after the first failed step, the remaining planned\nsteps are still written as `skipped` records with their remediation fields so the\npacket preserves the full launch-readiness checklist instead of leaving later\nchecks missing.\n\n## Artifacts\n\n- latest packet: `artifacts/launch/launch-review-latest.json`\n- latest evidence runner packet: `artifacts/launch/launch-evidence-latest.json`\n- latest controlled beta packet: `artifacts/launch/beta-readiness-latest.json`\n- per-run packet: `artifacts/launch/runs/launch-review-<timestamp>.json`\n- per-run evidence runner packet: `artifacts/launch/runs/launch-evidence-<timestamp>.json`\n- per-run controlled beta packet: `artifacts/launch/runs/beta-readiness-<timestamp>.json`\n\nFor launch evidence runner packets, inspect the per-step remediation fields when\n`status` is `fail` or `skipped`:\n\n- `nextEvidenceNeeded`: the exact proof still required for that launch lane.\n- `remediation.command`: the command an operator should rerun after fixing the\n  blocker.\n- `remediation.artifact`: the artifact path that should show the new evidence.\n\n## Inputs\n\nThe launch packet reads:\n\n- `artifacts/launch/deployment-preflight-latest.json`\n- `artifacts/exit-gate/era-c-exit-gate-latest.json`\n- `artifacts/security/pnpm-audit-summary.json`\n- `config/security-audit-baseline.json`\n- `artifacts/dr-drill/latest.json`\n- `artifacts/smoke/public-trust/summary.json`\n- crawler preview smoke evidence: `artifacts/launch/crawler-preview-latest.json` from `pnpm smoke:crawler-preview`\n- a11y evidence: `artifacts/launch/a11y-latest.json` from `pnpm a11y:check`\n- explore smoke evidence: `artifacts/launch/explore-smoke-latest.json` from `pnpm smoke:explore:matrix`\n\nThe evidence paths can be overridden with:\n\n- `METAMUSEUM_A11Y_EVIDENCE_PATH`\n- `METAMUSEUM_EXPLORE_SMOKE_EVIDENCE_PATH`\n\nIf an operator needs to supply a manual evidence file, use this minimal shape:\n\n```json\n{\n  \"generatedAt\": \"2026-06-10T00:00:00.000Z\",\n  \"status\": \"pass\",\n  \"summary\": \"Operator pasted the passing command output here.\"\n}\n```\n\nCommand evidence may use `status: \"warn\"` for staging-only blockers, such as a missing researcher smoke token. Use `pnpm launch:smoke-token` to generate/update the staging token without printing it, then copy `METAMUSEUM_TEST_ROLE_OVERRIDE_TOKEN` into both the staging server and smoke runner. Production launch review treats warning evidence as not passing.\n\n## Production Rules\n\nProduction launch review fails when:\n\n- deployment preflight is missing, stale, wrong-target, warning, or failing\n- Era C exit gate is missing, stale, or failed\n- security audit exceeds the committed baseline\n- DR drill is missing, stale, failing, or lacks verified Postgres restore proof\n- public-trust smoke screenshots are missing or have pixel-diff failures\n- crawler-preview smoke is missing or fails Open Graph, Twitter, canonical URL, or preview image fetchability checks\n- a11y or explore smoke evidence is missing or not passing\n\nStaging review can warn on production-only blockers so controlled beta can proceed only to collect the missing evidence.\n\n## Controlled Beta Readiness\n\n`pnpm launch:beta:readiness` reads the latest launch review and deployment preflight artifacts, then classifies the staging decision as:\n\n- `blocked`: launch-review blockers or deployment-preflight failures remain.\n- `rehearsal-ready`: deployment and hardening are not blocked, but live beta still needs required smoke/deployment evidence.\n- `live-beta-ready`: deployment, hardening, public-trust, crawler-preview, a11y, and explore smoke evidence are green; remaining warnings are accepted controlled-beta evidence collection limits.\n\nEra C 30-day SLO, uptime, activity-adoption, and KPI gaps are accepted warnings only for controlled beta. They remain production blockers.\n","sections":[{"level":2,"heading":"Commands","anchor":"commands"},{"level":2,"heading":"Artifacts","anchor":"artifacts"},{"level":2,"heading":"Inputs","anchor":"inputs"},{"level":2,"heading":"Production Rules","anchor":"production-rules"},{"level":2,"heading":"Controlled Beta Readiness","anchor":"controlled-beta-readiness"}],"html":"<h1 id=\"launch-review-packet\">Launch Review Packet</h1>\n<p>`pnpm launch:review` builds a machine-readable launch packet from the latest artifacts. It does not rerun heavy gates; it verifies that the evidence already collected is fresh, internally consistent, and safe to use for a launch decision.</p>\n<h2 id=\"commands\">Commands</h2>\n<p>Staging / controlled beta review:</p>\n<pre><code>\npnpm launch:review\n</code></pre>\n<p>Controlled beta go/no-go summary:</p>\n<pre><code>\npnpm launch:beta:readiness\n</code></pre>\n<p>Fail-fast staging check:</p>\n<pre><code>\npnpm launch:review:check\n</code></pre>\n<p>Production launch review:</p>\n<pre><code>\npnpm launch:review:production\n</code></pre>\n<p>Refresh evidence and review in one ordered run:</p>\n<pre><code>\npnpm launch:evidence -- --base-url=https://&lt;deploy-host&gt; --iiif-tile-url=https://&lt;iiif-tile&gt;\npnpm launch:evidence:production -- --base-url=https://&lt;shareable-url&gt; --public-read-base-url=https://&lt;shareable-url&gt; --iiif-tile-url=https://&lt;iiif-tile&gt;\n</code></pre>\n<p>The evidence runner starts with `pnpm hardening:pen-dr` so security-audit and</p>\n<p>Postgres DR artifacts are fresh before deployment preflight and launch review</p>\n<p>read them. It continues after individual failures, writes</p>\n<p>`artifacts/launch/launch-evidence-latest.json`, and then runs the launch review</p>\n<p>so operators can see every red step in one packet.</p>\n<p>Use `--step-timeout-ms=&lt;milliseconds&gt;` for bounded evidence runs that should</p>\n<p>record a failed step and still write the launch evidence packet when a nested</p>\n<p>command runs too long.</p>\n<p>Every failed or skipped step in `launch-evidence-latest.json` includes</p>\n<p>`nextEvidenceNeeded` plus a `remediation` object naming the command to rerun and</p>\n<p>the artifact that must turn green. Skipped k6 samples are therefore preserved as</p>\n<p>operator-visible launch evidence debt instead of being silently treated as a</p>\n<p>production-ready SLO proof.</p>\n<p>When `--fail-fast` stops after the first failed step, the remaining planned</p>\n<p>steps are still written as `skipped` records with their remediation fields so the</p>\n<p>packet preserves the full launch-readiness checklist instead of leaving later</p>\n<p>checks missing.</p>\n<h2 id=\"artifacts\">Artifacts</h2>\n<ul><li>latest packet: `artifacts/launch/launch-review-latest.json`</li><li>latest evidence runner packet: `artifacts/launch/launch-evidence-latest.json`</li><li>latest controlled beta packet: `artifacts/launch/beta-readiness-latest.json`</li><li>per-run packet: `artifacts/launch/runs/launch-review-&lt;timestamp&gt;.json`</li><li>per-run evidence runner packet: `artifacts/launch/runs/launch-evidence-&lt;timestamp&gt;.json`</li><li>per-run controlled beta packet: `artifacts/launch/runs/beta-readiness-&lt;timestamp&gt;.json`</li></ul>\n<p>For launch evidence runner packets, inspect the per-step remediation fields when</p>\n<p>`status` is `fail` or `skipped`:</p>\n<p>  blocker.</p>\n<ul><li>`nextEvidenceNeeded`: the exact proof still required for that launch lane.</li><li>`remediation.command`: the command an operator should rerun after fixing the</li><li>`remediation.artifact`: the artifact path that should show the new evidence.</li></ul>\n<h2 id=\"inputs\">Inputs</h2>\n<p>The launch packet reads:</p>\n<ul><li>`artifacts/launch/deployment-preflight-latest.json`</li><li>`artifacts/exit-gate/era-c-exit-gate-latest.json`</li><li>`artifacts/security/pnpm-audit-summary.json`</li><li>`config/security-audit-baseline.json`</li><li>`artifacts/dr-drill/latest.json`</li><li>`artifacts/smoke/public-trust/summary.json`</li><li>crawler preview smoke evidence: `artifacts/launch/crawler-preview-latest.json` from `pnpm smoke:crawler-preview`</li><li>a11y evidence: `artifacts/launch/a11y-latest.json` from `pnpm a11y:check`</li><li>explore smoke evidence: `artifacts/launch/explore-smoke-latest.json` from `pnpm smoke:explore:matrix`</li></ul>\n<p>The evidence paths can be overridden with:</p>\n<ul><li>`METAMUSEUM_A11Y_EVIDENCE_PATH`</li><li>`METAMUSEUM_EXPLORE_SMOKE_EVIDENCE_PATH`</li></ul>\n<p>If an operator needs to supply a manual evidence file, use this minimal shape:</p>\n<pre><code>\n{\n  &quot;generatedAt&quot;: &quot;2026-06-10T00:00:00.000Z&quot;,\n  &quot;status&quot;: &quot;pass&quot;,\n  &quot;summary&quot;: &quot;Operator pasted the passing command output here.&quot;\n}\n</code></pre>\n<p>Command evidence may use `status: &quot;warn&quot;` for staging-only blockers, such as a missing researcher smoke token. Use `pnpm launch:smoke-token` to generate/update the staging token without printing it, then copy `METAMUSEUM_TEST_ROLE_OVERRIDE_TOKEN` into both the staging server and smoke runner. Production launch review treats warning evidence as not passing.</p>\n<h2 id=\"production-rules\">Production Rules</h2>\n<p>Production launch review fails when:</p>\n<ul><li>deployment preflight is missing, stale, wrong-target, warning, or failing</li><li>Era C exit gate is missing, stale, or failed</li><li>security audit exceeds the committed baseline</li><li>DR drill is missing, stale, failing, or lacks verified Postgres restore proof</li><li>public-trust smoke screenshots are missing or have pixel-diff failures</li><li>crawler-preview smoke is missing or fails Open Graph, Twitter, canonical URL, or preview image fetchability checks</li><li>a11y or explore smoke evidence is missing or not passing</li></ul>\n<p>Staging review can warn on production-only blockers so controlled beta can proceed only to collect the missing evidence.</p>\n<h2 id=\"controlled-beta-readiness\">Controlled Beta Readiness</h2>\n<p>`pnpm launch:beta:readiness` reads the latest launch review and deployment preflight artifacts, then classifies the staging decision as:</p>\n<ul><li>`blocked`: launch-review blockers or deployment-preflight failures remain.</li><li>`rehearsal-ready`: deployment and hardening are not blocked, but live beta still needs required smoke/deployment evidence.</li><li>`live-beta-ready`: deployment, hardening, public-trust, crawler-preview, a11y, and explore smoke evidence are green; remaining warnings are accepted controlled-beta evidence collection limits.</li></ul>\n<p>Era C 30-day SLO, uptime, activity-adoption, and KPI gaps are accepted warnings only for controlled beta. They remain production blockers.</p>","updatedAt":"2018-10-20T01:46:40.000Z","checksum":"1d414c314ee3957084a8768d57ca0098d0c504bd4335ded9d73d9a8072820611","checksumPrefix":"1d414c314ee3","anchorCount":5,"lineCount":127,"rawUrl":"/api/docs/content?path=ops%2Flaunch-review.md","htmlUrl":"/docs?doc=ops%2Flaunch-review.md","apiUrl":"/api/docs/content?path=ops%2Flaunch-review.md"}