# ChargeForms — Release Checklist

Roadmap issue #39: doc drift has bitten this project before (FEATURE_STATUS.md
sat stale from v0.11.3 all the way to v0.28.1, silently missing the entire
Milestone 5 field-engine rebuild and Milestone 6 conditional-logic engine).
This checklist exists so that keeping the docs current is a release-process
step, not something that depends on remembering to do it.

Run through this before any version bump lands on `main`:

1. **`chargeforms.php`** — bump both the `Version:` docblock line and the
   `CHARGEFORMS_VERSION` constant.
2. **`readme.txt`** — bump `Stable tag`, add a changelog entry under
   `== Changelog ==`.
3. **`CHANGELOG.md`** — add a matching entry (same version, same why-focused
   summary as the commit message).
4. **`FEATURE_STATUS.md`** — update the version in the title banner. If this
   release adds, removes, or fundamentally changes a user-facing feature
   (not a bug fix or internal hardening), re-verify the relevant section
   against the actual code — per the doc's own "How this document is
   verified" section, a claim in here must be checked against real code,
   not carried forward from memory or a prior version of the doc.
5. **`docs/FIELD_COMPATIBILITY_MATRIX.md`** — update if a field type's
   behavior or Fluent-Forms-parity status changed.
6. **`PROJECT_STATUS.md`** — rewrite (not append) once a phase/milestone
   closes, so it stays the accurate "start here" doc for the next session.
7. Run the full regression suite (`tests/*.test.php` via `php`,
   `tests/*.test.mjs` via `node`) and `npm run build` (+ `npm run vue:build`
   if any Vue admin files changed) — all green before committing.

A release with a stale FEATURE_STATUS.md is worse than no FEATURE_STATUS.md:
it actively misleads. When in doubt about whether something changed enough
to need a doc update, re-check the code rather than skip the step.
