This document describes what validation means in the SEAD Change Control System and how operators should approach testing database changes.
- Validation is based on staging deployment, not only on SQL review.
- The main question is whether a change deploys cleanly and leaves the database in the expected state.
- Testing should reflect the risk of the change. Schema changes, data migrations, and release tagging each need different checks.
- Known gaps in the repository should be documented rather than ignored.
For most change requests, validation includes some combination of:
- Reviewing the affected deploy, verify, and revert SQL.
- Deploying successfully on staging or a comparable test target.
- Confirming that the expected objects or data changes exist after deployment.
- Running smoke checks for workflows touched by the change.
- Running release-level acceptance checks when the change request is part of a tagged release.
Before treating a change as ready:
- Confirm that the change request is in the correct project.
- Confirm that the plan entry, issue linkage, and SQL intent are aligned.
- Validate the change on staging or another safe target when feasible.
- Review any verify SQL for clear mismatches with the deploy behavior.
- Capture important caveats for reviewers or release operators.
The normal validation path is through bin/deploy-staging.
Typical staging validation means:
- Create a fresh or controlled target database.
- Deploy to the intended tag or to the latest state.
- Confirm that the deployment completed successfully.
- Check the affected schema objects, data state, or downstream behavior.
- Record any manual follow-up needed for release validation.
See OPERATIONS.md for the standard deployment flow.
The different script types provide different kinds of confidence:
deploy/: contains the main implementation of the change.verify/: contains lightweight checks that the intended change is present and usable.revert/: provides limited rollback support where meaningful, without treating production rollback as the normal recovery path.
In practice, deploy scripts contain most of the real change logic, so a successful staging deployment is usually the strongest validation signal.
After deployment, smoke checks should focus on the area affected by the change:
- For DDL changes: check object existence, column types, constraints, indexes, and permissions where relevant.
- For DML changes: check row presence, key relationships, lookup consistency, and expected counts where appropriate.
- For release validation: confirm that the database reaches the expected tagged state and supports the workflows needed for acceptance.
Current repository limitations should be taken into account during validation:
- Automated test coverage is limited.
- Some verify scripts are minimal or act as stubs.
- Release validation still depends on manual acceptance checks.
- Rollback is not the main safety model for this system.
These gaps make disciplined staging validation and clear release notes especially important.
When validating a release tag:
- Confirm the intended tag name.
- Deploy to that tag on staging.
- Run smoke and acceptance checks.
- Note caveats, deferred fixes, or operator concerns in RELEASE-NOTES.md.
When choosing between a theoretical review and a reproducible staging deployment, prefer the reproducible staging deployment.
- OPERATIONS.md: staging deployment and release-validation workflow.
- DEVELOPMENT.md: contributor workflow and change request creation.
- TROUBLESHOOTING.md: deployment diagnosis when validation fails.
- RELEASE-NOTES.md: release checklist and release-specific notes.
- project-review-2026-01-20.md: historical analysis of testing gaps.