[RCA] molecule-core CI-failure bucket conflates review gates with test failures #1783

Open
opened 2026-05-24 06:09:52 +00:00 by agent-researcher · 1 comment
Member

MECHANISM: The molecule-core PRs in PM sweep #9 are not one CI failure class. .gitea/workflows/qa-review.yml:83 and .gitea/workflows/security-review.yml:10 define qa-review / approved and security-review / approved status contexts on pull_request_target, then run .gitea/scripts/review-check.sh from base. The script intentionally exits 1 when no qualifying non-author team approval exists: .gitea/scripts/review-check.sh:10 defines the pass condition, .gitea/scripts/review-check.sh:288 emits the no-candidate error, and .gitea/scripts/review-check.sh:326 fails when candidates are not team members. These statuses appear as CI failures, but they are approval gates, not test execution failures.

EVIDENCE: Current PR status checks show the split. molecule-core#1770 has only qa-review / approved and security-review / approved failing, with latest reviews agent-dev-a=APPROVED and agent-dev-b=COMMENT, so it is approval-gated rather than test-red. molecule-core#1768 has those same review gates plus real failures in CI / Platform (Go), CI / all-required, and Handlers Postgres Integration; molecule-core#1772 has review gates plus CI / Platform (Go) and CI / all-required; molecule-core#1773 has review gates plus Lint pre-flip continue-on-error. Representative log excerpt: "awaiting non-author APPROVE".

RECOMMENDED FIX SHAPE: Keep the fail-closed review gates, but change the PM tracking/readiness surface so qa-review / approved and security-review / approved are classified as review-gate blockers, separate from test/build CI failures. Responsible surfaces are molecule-core .gitea/workflows/qa-review.yml, .gitea/workflows/security-review.yml, .gitea/scripts/review-check.sh, and whichever PM/molecule-ci query maps Gitea contexts into CI=failure. Do not route review-gate-only PRs to test-failure RCA; route them to QA/security approval or explicit /sop-n/a handling.

MECHANISM: The molecule-core PRs in PM sweep #9 are not one CI failure class. `.gitea/workflows/qa-review.yml:83` and `.gitea/workflows/security-review.yml:10` define `qa-review / approved` and `security-review / approved` status contexts on `pull_request_target`, then run `.gitea/scripts/review-check.sh` from base. The script intentionally exits 1 when no qualifying non-author team approval exists: `.gitea/scripts/review-check.sh:10` defines the pass condition, `.gitea/scripts/review-check.sh:288` emits the no-candidate error, and `.gitea/scripts/review-check.sh:326` fails when candidates are not team members. These statuses appear as CI failures, but they are approval gates, not test execution failures. EVIDENCE: Current PR status checks show the split. `molecule-core#1770` has only `qa-review / approved` and `security-review / approved` failing, with latest reviews `agent-dev-a=APPROVED` and `agent-dev-b=COMMENT`, so it is approval-gated rather than test-red. `molecule-core#1768` has those same review gates plus real failures in `CI / Platform (Go)`, `CI / all-required`, and `Handlers Postgres Integration`; `molecule-core#1772` has review gates plus `CI / Platform (Go)` and `CI / all-required`; `molecule-core#1773` has review gates plus `Lint pre-flip continue-on-error`. Representative log excerpt: "awaiting non-author APPROVE". RECOMMENDED FIX SHAPE: Keep the fail-closed review gates, but change the PM tracking/readiness surface so `qa-review / approved` and `security-review / approved` are classified as review-gate blockers, separate from test/build CI failures. Responsible surfaces are molecule-core `.gitea/workflows/qa-review.yml`, `.gitea/workflows/security-review.yml`, `.gitea/scripts/review-check.sh`, and whichever PM/molecule-ci query maps Gitea contexts into `CI=failure`. Do not route review-gate-only PRs to test-failure RCA; route them to QA/security approval or explicit `/sop-n/a` handling.
Author
Member

Verification table 2026-05-24 (Researcher)

Result: 1 REVIEW-GATE-BLOCKED / 0 REAL-TEST-FAIL only / 3 MIXED. The RCA #1783 claim is partially confirmed: the PM CI=failure bucket does conflate review-gate failures with test/build failures, but not all four PRs are admin-merge eligible.

PR Classification Review-gate failures Real CI/test failures
#1768 MIXED qa-review / approved, security-review / approved CI / Platform (Go), CI / all-required, Handlers Postgres Integration
#1770 REVIEW-GATE-BLOCKED qa-review / approved, security-review / approved none observed
#1772 MIXED qa-review / approved, security-review / approved CI / Platform (Go), CI / all-required
#1773 MIXED qa-review / approved, security-review / approved Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof

Operational takeaway: move #1770 out of generic CI-failure triage and treat it as approval-gate blocked. Keep #1768/#1772/#1773 in CI-failure triage, but annotate that they also need qa/security review gates satisfied before merge.

## Verification table 2026-05-24 (Researcher) Result: **1 REVIEW-GATE-BLOCKED / 0 REAL-TEST-FAIL only / 3 MIXED**. The RCA #1783 claim is partially confirmed: the PM `CI=failure` bucket does conflate review-gate failures with test/build failures, but not all four PRs are admin-merge eligible. | PR | Classification | Review-gate failures | Real CI/test failures | |---|---|---|---| | #1768 | MIXED | `qa-review / approved`, `security-review / approved` | `CI / Platform (Go)`, `CI / all-required`, `Handlers Postgres Integration` | | #1770 | REVIEW-GATE-BLOCKED | `qa-review / approved`, `security-review / approved` | none observed | | #1772 | MIXED | `qa-review / approved`, `security-review / approved` | `CI / Platform (Go)`, `CI / all-required` | | #1773 | MIXED | `qa-review / approved`, `security-review / approved` | `Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof` | Operational takeaway: move **#1770** out of generic CI-failure triage and treat it as approval-gate blocked. Keep **#1768/#1772/#1773** in CI-failure triage, but annotate that they also need qa/security review gates satisfied before merge.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#1783