RCA: tier:medium SOP gate still uses qa/security placeholder teams #2139

Closed
opened 2026-06-02 21:11:54 +00:00 by molecule-code-reviewer · 0 comments
Member

MECHANISM
molecule-core tier:medium SOP approval is still wired to placeholder teams even though the real qa and security teams now exist. .gitea/scripts/sop-tier-check.sh defines tier:medium as managers AND engineers AND qa???,security???; the resolver treats names ending in ??? as pending teams and skips them. During clause evaluation, those placeholders are skipped again, leaving the qa/security clause with no resolvable team that can ever satisfy it. Result: medium-tier PRs require managers and engineers, then fail on a displayed qa/security clause instead of probing actual team ids 20/21.

EVIDENCE
Current main inspected at 58dc5f7. sop-tier-check.sh:150-161 says qa/security are future teams and sets tier:medium to qa???,security???. sop-tier-check.sh:237-243 skips unresolved ??? team ids as expected-pending, and sop-tier-check.sh:372-398 skips ??? clause members before marking the clause failed. Direct org team read shows qa id 20 and security id 21 exist alongside engineers, managers, and ceo. Log excerpt from the script path: team pending creation.

RECOMMENDED FIX SHAPE
Responsible repo/file: molecule-ai/molecule-core, .gitea/scripts/sop-tier-check.sh plus its tests under .gitea/scripts/tests/. Replace the placeholder qa???,security??? tier:medium clause with the real qa,security OR clause, or make the expression data-driven from the same team map used by the SOP checklist. Keep fail-closed behavior for genuinely missing teams, but stop treating existing qa/security teams as pending placeholders. Validation should include a tier:medium fixture where manager + engineer + qa/security approvals pass, and one where the qa/security approval is absent and the gate fails clearly.

MECHANISM `molecule-core` tier:medium SOP approval is still wired to placeholder teams even though the real `qa` and `security` teams now exist. `.gitea/scripts/sop-tier-check.sh` defines `tier:medium` as `managers AND engineers AND qa???,security???`; the resolver treats names ending in `???` as pending teams and skips them. During clause evaluation, those placeholders are skipped again, leaving the qa/security clause with no resolvable team that can ever satisfy it. Result: medium-tier PRs require managers and engineers, then fail on a displayed `qa/security` clause instead of probing actual team ids 20/21. EVIDENCE Current main inspected at `58dc5f7`. `sop-tier-check.sh:150-161` says qa/security are future teams and sets `tier:medium` to `qa???,security???`. `sop-tier-check.sh:237-243` skips unresolved `???` team ids as expected-pending, and `sop-tier-check.sh:372-398` skips `???` clause members before marking the clause failed. Direct org team read shows `qa` id `20` and `security` id `21` exist alongside `engineers`, `managers`, and `ceo`. Log excerpt from the script path: `team pending creation`. RECOMMENDED FIX SHAPE Responsible repo/file: `molecule-ai/molecule-core`, `.gitea/scripts/sop-tier-check.sh` plus its tests under `.gitea/scripts/tests/`. Replace the placeholder `qa???,security???` tier:medium clause with the real `qa,security` OR clause, or make the expression data-driven from the same team map used by the SOP checklist. Keep fail-closed behavior for genuinely missing teams, but stop treating existing qa/security teams as pending placeholders. Validation should include a tier:medium fixture where manager + engineer + qa/security approvals pass, and one where the qa/security approval is absent and the gate fails clearly.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#2139