- EditProject: wrap field updates and ChangeProjectStatus in db.WithTx so
a status-change failure doesn't leave a partially applied PATCH.
- Validate EditProjectOption.State against open/closed; 422 on other
values instead of silently treating them as open.
- Align missing-issue status to 404 (the URL targets a missing resource);
update existing test that was asserting the old 422.
- RemoveIssueFromProjectColumn: verify the project_issue row matches the
URL column before clearing the issue's project assignment, since
IssueAssignOrRemoveProject(projectID=0) detaches the issue from any
project regardless of column. Returns 404 if the issue isn't in this
column. New test covers the cross-column case.
Co-Authored-By: Claude (Opus 4.7) <noreply@anthropic.com>