# v0.4.0 Release Readiness Checklist

Status: `BLOCKED`  
Issue: `prompt-language-2e5l`  
Snapshot date: `2026-04-12`  
Workspace host: native Windows (`PowerShell`)  
Repo path: `D:\Visual Studio Projects\prompt-language`

This checklist is the repo-local release gate for tagging `v0.4.0`. It maps each required item from `prompt-language-2e5l` to current evidence, names the exact command or file used, and records the next action needed for closure.

## Evidence Boundary

- Commands in this note were executed from this workspace on `2026-04-12` unless a checked-in evaluation note is cited directly.
- This artifact does not assume access to external GitHub issue comments, hosted CI dashboards, or unpublished local notes outside the repo.
- Absence of checked-in evidence is treated as a blocker, not as implied completion.

## Acceptance Checklist

| #   | Required item                                                                   | State     | Current evidence                                                                                                                                                                                                                                                                                                                                                                                        | Exact commands / files                                                                                                                                                                                                                                                                                                                                             | Next action                                                                                                                                              |
| --- | ------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1   | All `P0` and `P1` issues closed, or consciously deferred with documented reason | `BLOCKED` | Active `P1` work remains open or in progress. Repo-local scan returned `11` active `P1` issues: `prompt-language-0ovo.3.2`, `prompt-language-0ovo.5`, `prompt-language-0ovo.5.1`, `prompt-language-0ovo.5.2`, `prompt-language-0ovo.5.3`, `prompt-language-50m6.7`, `prompt-language-5pej`, `prompt-language-5pej.1`, `prompt-language-5pej.2`, `prompt-language-5pej.3`, and `prompt-language-9uqe.4`. | `C1`; [.beads/issues.jsonl](../../.beads/issues.jsonl)                                                                                                                                                                                                                                                                                                             | Close each remaining `P0`/`P1`, or add an explicit defer decision with release-signoff rationale before tagging.                                         |
| 2   | `npm run ci` passes with `0` warnings                                           | `BLOCKED` | Release gate is not green. Fresh `2026-04-12` repo-local execution reached `typecheck` and `lint`, then stopped at `format:check` because `prettier --check` reported `.tmp/vitest-parity.json` as out of style.                                                                                                                                                                                        | `C2`; [package.json](../../package.json)                                                                                                                                                                                                                                                                                                                           | Remove or normalize the `.tmp/vitest-parity.json` formatting blocker, then rerun `npm run ci` until the full chain passes cleanly.                       |
| 3   | `npm run eval:smoke` passes `3` consecutive runs with no flaky failures         | `BLOCKED` | Fresh `2026-04-12` repo-local execution built and installed the plugin successfully, then the live smoke harness stopped before scenarios because Claude CLI login/access was unavailable. There is still no checked-in evidence for three consecutive green live-smoke runs.                                                                                                                           | `C3`; [2026-04-12-codex-parity-full-run-evidence.md](2026-04-12-codex-parity-full-run-evidence.md), [2026-04-12-cross-platform-smoke-verification.md](2026-04-12-cross-platform-smoke-verification.md)                                                                                                                                                             | Restore supported-host Claude CLI access, then capture three consecutive passing `npm run eval:smoke` runs with archived outputs and timestamps.         |
| 4   | `npm audit` shows `0` high/critical vulnerabilities                             | `PASS`    | `npm run audit:high` passed and reported no high or critical vulnerabilities in production dependencies.                                                                                                                                                                                                                                                                                                | `C4`; [package.json](../../package.json)                                                                                                                                                                                                                                                                                                                           | Keep this check in the release cut and rerun after any dependency change before tagging.                                                                 |
| 5   | `CHANGELOG.md` updated with all changes since `v0.3.0`                          | `BLOCKED` | `CHANGELOG.md` has an `Unreleased` section, but there is no `## [0.4.0]` release entry yet. It also omits shipped `const` declaration support already reflected in code and tests.                                                                                                                                                                                                                      | `F1`, `F2`, `F5`; [CHANGELOG.md](../../CHANGELOG.md), [src/domain/session-state.ts](../../src/domain/session-state.ts), [src/application/render-node-to-dsl.test.ts](../../src/application/render-node-to-dsl.test.ts), [src/domain/lint-flow.test.ts](../../src/domain/lint-flow.test.ts), [src/domain/render-flow.test.ts](../../src/domain/render-flow.test.ts) | Cut a `0.4.0` changelog section and add any missing shipped items, including `const` declarations and their lint/runtime semantics.                      |
| 6   | DSL cheatsheet updated for any new syntax                                       | `BLOCKED` | The shipped docs do not advertise `const`. The cheatsheet only documents `let/var`, so the public quick reference is behind the implementation surface.                                                                                                                                                                                                                                                 | `F2`; [docs/reference/dsl-cheatsheet.md](../reference/dsl-cheatsheet.md), [docs/reference/let-var.md](../reference/let-var.md)                                                                                                                                                                                                                                     | Add `const` syntax, immutable-declaration behavior, and reassignment caveats to the cheatsheet and `let/var` reference before release.                   |
| 7   | `CLAUDE.md` DSL primitives section accurate                                     | `BLOCKED` | `CLAUDE.md` still describes `let` and `var` as the only variable declarations and does not document `const`. That is inconsistent with the current parser/runtime/test surface.                                                                                                                                                                                                                         | `F2`; [CLAUDE.md](../../CLAUDE.md), [src/domain/session-state.ts](../../src/domain/session-state.ts)                                                                                                                                                                                                                                                               | Update the DSL primitives list and variable-declaration section so `CLAUDE.md` matches the shipped behavior exactly.                                     |
| 8   | Version bumped in `package.json`                                                | `BLOCKED` | Package version is still `0.3.0`.                                                                                                                                                                                                                                                                                                                                                                       | `F1`; [package.json](../../package.json)                                                                                                                                                                                                                                                                                                                           | Bump the package version to `0.4.0` as part of the actual release cut after the remaining blockers are cleared.                                          |
| 9   | `npm publish --dry-run` succeeds                                                | `BLOCKED` | Fresh `2026-04-12` repo-local execution failed because `prepublishOnly` runs `npm run ci`, and that `ci` chain stopped at `format:check` on `.tmp/vitest-parity.json`.                                                                                                                                                                                                                                  | `C5`; [package.json](../../package.json)                                                                                                                                                                                                                                                                                                                           | Get `npm run ci` green first, then rerun `npm publish --dry-run` and archive the successful package summary in the release note or issue comment.        |
| 10  | At least one human end-to-end test on a real project                            | `BLOCKED` | No checked-in repo evidence was found for a completed human end-to-end run on a real project. The nearest repo-local signal is still the open hands-on validation epic for real projects and external hosts.                                                                                                                                                                                            | `F3`; [.beads/issues.jsonl](../../.beads/issues.jsonl)                                                                                                                                                                                                                                                                                                             | Capture one dated real-project validation note with operator, project, flow, observed outcome, and sign-off, then link it from the issue before tagging. |

## Command References

### `C1` Active `P0`/`P1` issue scan

```powershell
@'
const fs = require('fs');
const issues = fs
  .readFileSync('.beads/issues.jsonl', 'utf8')
  .trim()
  .split(/\r?\n/)
  .map((line) => JSON.parse(line));
for (const issue of issues
  .filter((issue) => ['open', 'in_progress', 'blocked'].includes(issue.status) && issue.priority <= 1)
  .sort((left, right) => left.priority - right.priority || left.id.localeCompare(right.id))) {
  console.log(`${issue.priority}\t${issue.status}\t${issue.id}\t${issue.title}`);
}
'@ | node -
```

### `C2` Full release CI chain

```powershell
npm run ci
```

Observed `2026-04-12` result:

```text
> @45ck/prompt-language@0.3.0 format:check
> prettier . --check

Checking formatting...
[warn] .tmp/vitest-parity.json
[warn] Code style issues found in the above file. Run Prettier with --write to fix.
```

### `C3` Live smoke validation

```powershell
npm run eval:smoke
```

Observed `2026-04-12` result:

```text
prompt-language runtime v0.3.0 installed successfully.
[smoke-test] Starting live flow smoke tests via claude -p...
[smoke-test] Version: 2.1.45 (Claude Code)
[smoke-test] Harness: Claude CLI 2.1.45 (Claude Code)
[smoke-test] BLOCKED — Claude CLI login/access is unavailable in this environment.
[smoke-test] `claude -p` returned an authorization error; smoke scenarios were not run.
```

### `C4` Vulnerability gate

```powershell
npm run audit:high
```

### `C5` Publish dry run

```powershell
npm publish --dry-run
```

Observed `2026-04-12` result:

```text
> @45ck/prompt-language@0.3.0 prepublishOnly
> npm run ci

> @45ck/prompt-language@0.3.0 format:check
> prettier . --check

Checking formatting...
[warn] .tmp/vitest-parity.json
[warn] Code style issues found in the above file. Run Prettier with --write to fix.
```

## File Evidence References

### `F1` Version and release-cut evidence

```powershell
Select-String -Path package.json -Pattern '"version": "0.3.0"'
Select-String -Path CHANGELOG.md -Pattern '## [0.4.0]' -SimpleMatch
```

### `F2` Documentation gap check for `const`

```powershell
Select-String -Path docs\reference\dsl-cheatsheet.md,docs\reference\let-var.md,CLAUDE.md -Pattern '\bconst\b'
```

This currently returns no whole-word `const` hits in the release-facing docs.

### `F3` Real-project evidence search

```powershell
rg -n "human end-to-end|real project|manual smoke|sign-off documented in issue comments|npm publish --dry-run" docs reports artifacts .beads\issues.jsonl
```

### `F4` Direct smoke blocker output

The direct `npm run eval:smoke` execution on `2026-04-12` ended with:

```text
[smoke-test] BLOCKED — Claude CLI login/access is unavailable in this environment.
[smoke-test] `claude -p` returned an authorization error; smoke scenarios were not run.
```

### `F5` `const` already exists in implementation and tests

Representative checked-in evidence:

- [src/domain/session-state.ts](../../src/domain/session-state.ts)
- [src/application/render-node-to-dsl.test.ts](../../src/application/render-node-to-dsl.test.ts)
- [src/domain/lint-flow.test.ts](../../src/domain/lint-flow.test.ts)
- [src/domain/render-flow.test.ts](../../src/domain/render-flow.test.ts)

## Release Verdict

`v0.4.0` is not release-ready from current repo-local evidence.

Current pass count: `1 / 10`  
Current blocker count: `9 / 10`

The blockers are not all the same type:

- product/release blockers: open `P1` backlog (`11` active `P1` issues), missing `0.4.0` version bump, missing changelog cut
- quality-gate blockers: `npm run ci` and `npm publish --dry-run`, both currently stopped by `.tmp/vitest-parity.json` at `format:check`
- environment/evidence blockers: live smoke authorization and missing real-project human validation
- documentation blockers: release-facing docs do not yet reflect shipped `const` syntax
