# Requirements Checklist: Review Pack PDF/HTML Renderer v1 **Purpose**: Validate that Spec 356 is bounded, repo-based, constitution-aligned, and ready for a later implementation loop. **Created**: 2026-06-05 **Feature**: `specs/356-review-pack-pdf-html-renderer-v1/spec.md` ## Candidate Selection Gate - [x] CHK001 The package names the direct user-provided Spec 356 draft as the starting input and ties it to the renderer follow-up explicitly deferred by Spec 355. - [x] CHK002 The active auto-prep queue in `docs/product/spec-candidates.md` was reviewed and found intentionally empty, so this package proceeds only as a direct manual promotion rather than an auto-selected backlog item. - [x] CHK003 Completed-spec guardrails were applied to Specs 263, 347, 349, 351, and 355; they are treated as historical/runtime context only and are not rewritten. - [x] CHK004 The selected slice is narrowed to current review-pack rendered delivery only; customer portal, broader workspace completion, localization-wide cleanup, governance inbox follow-up, and PDF dependency work stay deferred. ## Repo Truth And Architecture - [x] CHK005 The spec and plan anchor the work to current review-pack generation, current customer-safe detail surfaces, and the current signed download seam. - [x] CHK006 The artifacts state that rendered HTML/PDF remains derived-only and must not introduce a new persisted artifact family or a new database shape. - [x] CHK007 The plan forbids live provider calls, a second report engine, a second `OperationRun`, or a new package-backed PDF stack. - [x] CHK008 The prep explicitly records the repo-truth deviation from the user draft: `executive-summary.md` already exists today, so the gap is rendered delivery, not executive-entrypoint creation. - [x] CHK009 The prep explicitly records that PDF is conditional on current repo support and must not be forced with a new dependency. ## UI/Productization Coverage - [x] CHK010 UI Surface Impact is explicit and consistent with changing current owner surfaces plus adding one new rendered report route if needed. - [x] CHK011 UI/Productization Coverage keeps `CustomerReviewWorkspace`, released-review detail, and review-pack detail as the current owner surfaces instead of inventing a portal taxonomy. - [x] CHK012 The spec requires one dominant rendered-output action and keeps diagnostics/appendix detail secondary. - [x] CHK013 Customer-safe default disclosure remains an explicit invariant across the rendered report and current owner surfaces. ## Testing And Validation - [x] CHK014 Planned tests cover rendered-contract truth, disclosure, authorization, audit continuity, and one bounded browser smoke. - [x] CHK015 Validation commands explicitly stay on current `EnvironmentReview`, `ReviewPack`, `Reviews`, and customer-review browser coverage rather than widening into unrelated suites. - [x] CHK016 The artifacts name `pint --dirty` and `git diff --check` as final validation steps. ## Readiness Gate - [x] CHK017 Candidate Selection Gate passes. - [x] CHK018 Spec Readiness Gate passes. - [x] CHK019 No blocking product question remains; the only implementation-time branch is whether the current repo can support PDF without a new package. - [x] CHK020 No application implementation has been performed in this preparation step. - [x] CHK021 Preparation analyze result: pass via repo-based artifact review checklist; no standalone local `speckit.analyze` command is available in this repo surface. ## Review Outcome - [x] CHK022 Review outcome class: `acceptable-special-case` - [x] CHK023 Workflow outcome: `keep` - [x] CHK024 Final note location is the active feature PR close-out entry `Smoke Coverage`. ## Notes - This checklist validates preparation readiness only. No application implementation, runtime test execution, or browser smoke has been performed in this prep step. - The repository provides Bash helpers for feature creation but no local executable `speckit.tasks` or `speckit.analyze` command. Tasks and analysis were therefore produced repo-conformantly from the templates and checked manually here. - The HTML-first / PDF-conditional boundary is intentional repo truth, not an unfinished spec hole.