feat(ci): enforce tdd_issue tag consistency via commit-history and Forgejo issue-status checks #1017

Closed
brent.edwards wants to merge 3 commits from feature/m3-tdd-issue-consistency-gate into master

3 Commits

Author SHA1 Message Date
brent.edwards 3357c2c838 Merge remote-tracking branch 'origin/master' into feature/m3-tdd-issue-consistency-gate
CI / build (pull_request) Successful in 16s
CI / tdd-consistency (pull_request) Failing after 46s
CI / lint (pull_request) Successful in 3m30s
CI / quality (pull_request) Successful in 3m49s
CI / typecheck (pull_request) Successful in 3m59s
CI / security (pull_request) Successful in 4m7s
CI / unit_tests (pull_request) Successful in 7m22s
CI / docker (pull_request) Successful in 1m12s
CI / e2e_tests (pull_request) Successful in 9m40s
CI / coverage (pull_request) Successful in 11m16s
CI / status-check (pull_request) Successful in 5s
CI / integration_tests (pull_request) Failing after 19m45s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 57m6s
# Conflicts:
#	CHANGELOG.md
2026-03-26 01:18:34 +00:00
brent.edwards 9e0435d2a4 Merge remote-tracking branch 'origin/master' into feature/m3-tdd-issue-consistency-gate
CI / benchmark-publish (pull_request) Has been skipped
CI / tdd-consistency (pull_request) Failing after 41s
CI / build (pull_request) Successful in 16s
CI / lint (pull_request) Successful in 3m30s
CI / quality (pull_request) Successful in 4m56s
CI / typecheck (pull_request) Successful in 5m31s
CI / security (pull_request) Successful in 5m34s
CI / unit_tests (pull_request) Successful in 6m36s
CI / docker (pull_request) Successful in 1m7s
CI / integration_tests (pull_request) Successful in 8m13s
CI / e2e_tests (pull_request) Successful in 9m31s
CI / coverage (pull_request) Successful in 10m56s
CI / status-check (pull_request) Successful in 1s
CI / benchmark-regression (pull_request) Successful in 49m41s
2026-03-21 06:24:14 +00:00
brent.edwards 8a8fd263c8 feat(ci): enforce tdd_issue tag consistency via commit-history and Forgejo issue-status checks
CI / lint (pull_request) Successful in 23s
CI / tdd-consistency (pull_request) Successful in 35s
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 41s
CI / typecheck (pull_request) Successful in 1m0s
CI / security (pull_request) Successful in 1m2s
CI / build (pull_request) Successful in 16s
CI / integration_tests (pull_request) Successful in 3m49s
CI / unit_tests (pull_request) Successful in 4m6s
CI / e2e_tests (pull_request) Successful in 7m3s
CI / docker (pull_request) Successful in 1m11s
CI / coverage (pull_request) Successful in 6m28s
CI / benchmark-regression (pull_request) Successful in 41m3s
Implements two automated consistency checks for the @tdd_bug /
@tdd_bug_<N> / @tdd_expected_fail tag system:

Check 1 (commit-based, no network): Scans commit messages in the
current branch for #N issue references.  For each N, verifies that
tests tagged @tdd_bug_N have had @tdd_expected_fail removed.

Check 2 (Forgejo API): Cross-references tag state with issue status.
@tdd_expected_fail present + issue closed = ERROR.
@tdd_expected_fail absent + issue open = ERROR.
Degrades to warning when API is unreachable.

TAG NAME CORRECTION: Issue #966 describes these as @tdd_issue /
@tdd_issue_<N> but the codebase and CONTRIBUTING.md consistently
use @tdd_bug / @tdd_bug_<N>.  This implementation uses the codebase
convention per PM direction.

New files:
- scripts/check-tdd-tag-consistency.py (488 lines)
- features/tdd_consistency_check.feature (14 scenarios)
- features/steps/tdd_consistency_check_steps.py
- robot/tdd_consistency_check.robot (3 test cases)
- robot/helper_tdd_consistency_check.py

Modified files:
- noxfile.py: added tdd_consistency session
- .forgejo/workflows/ci.yml: added tdd-consistency CI job
- CONTRIBUTING.md: documented nox -s tdd_consistency
- CHANGELOG.md: added entry

ISSUES CLOSED: #966
2026-03-20 00:08:18 +00:00