Remove SOP tier system — single uniform gate (CTO 2026-06-07) #2403

Closed
opened 2026-06-07 19:36:26 +00:00 by devops-engineer · 0 comments
Member

CTO directive (2026-06-07)

"remove sop-tier-check / tier-check, there should not be such thing as tier, everything go through normal process"

Remove the SOP tier system entirely. Every PR goes through ONE uniform gate — no tier:low/tier:medium/tier:high branching, no sop-tier-check, no sop-tier-refire.

Target uniform gate ("normal process") — applies to EVERY PR

  • 2 genuine official code-review APPROVALs on current head (CR2 + Researcher), no REQUEST_CHANGES
  • CI / all-required green (+ E2E API Smoke, Handlers PG — branch-protection required set, UNCHANGED)
  • qa-review / approved green (now uniform — was only AND-gated for tier:medium)
  • security-review / approved green (now uniform)
  • sop-checklist / all-items-acked green
  • mergeable

Removal map (must be COMPLETE — fail-closed, no dangling gate ref)

DELETE:

  • .gitea/workflows/sop-tier-check.yml, .gitea/workflows/sop-tier-refire.yml
  • .gitea/scripts/sop-tier-check.sh, .gitea/scripts/sop-tier-refire.sh
  • tier tests: .gitea/scripts/tests/test_sop_tier_check_*.sh, test_sop_tier_refire.sh, _mock_tier_check.sh

EDIT:

  • tools/gate-check-v3/gate_check.py — remove TIER_AGENTS, _get_pr_tier, tier OR/AND verdict branching. Replace with a single uniform required-agent set (qa AND security AND engineers AND managers — strict). Update test_gate_check.py.
  • .gitea/scripts/gitea-merge-queue.py — remove _is_tier_low_pending_ok + its call; a pending required sop-checklist ALWAYS holds (no tier:low soft-fail). Update test_gitea_merge_queue.py.
  • required-context drift tests: tests/test_ci_required_drift.py, tests/test_lint_bp_context_emit_match.py, tests/test_lint_required_no_paths.py — drop any sop-tier-check expected context.
  • .gitea/sop-checklist-config.yaml — remove tier refs if any.
  • internal/runbooks/dev-sop.md — remove the tier section; document the single uniform gate.
  • Retire the tier:high|medium|low Gitea labels (cosmetic; after merge).

SOP requirements (merge-blocking)

  • Comprehensive tests + a GATING check that FAILS if a sop-tier-check context or tier-branching reappears (mutation-verified). Ref: file_issues_and_test_every_fix.
  • Fail-closed: removing a gate must not weaken the uniform bar — qa+security now run for ALL PRs (stronger, not weaker).

Supersedes

  • #2397, #2400 (these ADD auto-tier — wrong direction; closing/guarding).

Bootstrap note

The removal PR may be held by sop-tier-check emitted from BASE main until merged (catch-22). Branch-protection does NOT require tier-check, so once gitea-merge-queue.py no longer treats it as governance-red, the cron merges on 2-genuine + BP-green. If still wedged, owner bootstrap-merge (documented, diff-reviewed) per CTO directive.

## CTO directive (2026-06-07) > "remove sop-tier-check / tier-check, there should not be such thing as tier, everything go through normal process" Remove the SOP **tier** system entirely. Every PR goes through ONE uniform gate — no `tier:low`/`tier:medium`/`tier:high` branching, no `sop-tier-check`, no `sop-tier-refire`. ### Target uniform gate ("normal process") — applies to EVERY PR - 2 genuine official code-review APPROVALs on current head (CR2 + Researcher), no REQUEST_CHANGES - `CI / all-required` green (+ E2E API Smoke, Handlers PG — branch-protection required set, UNCHANGED) - `qa-review / approved` green (now uniform — was only AND-gated for tier:medium) - `security-review / approved` green (now uniform) - `sop-checklist / all-items-acked` green - mergeable ### Removal map (must be COMPLETE — fail-closed, no dangling gate ref) DELETE: - `.gitea/workflows/sop-tier-check.yml`, `.gitea/workflows/sop-tier-refire.yml` - `.gitea/scripts/sop-tier-check.sh`, `.gitea/scripts/sop-tier-refire.sh` - tier tests: `.gitea/scripts/tests/test_sop_tier_check_*.sh`, `test_sop_tier_refire.sh`, `_mock_tier_check.sh` EDIT: - `tools/gate-check-v3/gate_check.py` — remove `TIER_AGENTS`, `_get_pr_tier`, tier OR/AND verdict branching. Replace with a single uniform required-agent set (qa AND security AND engineers AND managers — strict). Update `test_gate_check.py`. - `.gitea/scripts/gitea-merge-queue.py` — remove `_is_tier_low_pending_ok` + its call; a pending required `sop-checklist` ALWAYS holds (no tier:low soft-fail). Update `test_gitea_merge_queue.py`. - required-context drift tests: `tests/test_ci_required_drift.py`, `tests/test_lint_bp_context_emit_match.py`, `tests/test_lint_required_no_paths.py` — drop any `sop-tier-check` expected context. - `.gitea/sop-checklist-config.yaml` — remove tier refs if any. - `internal/runbooks/dev-sop.md` — remove the tier section; document the single uniform gate. - Retire the `tier:high|medium|low` Gitea labels (cosmetic; after merge). ### SOP requirements (merge-blocking) - Comprehensive tests + a GATING check that FAILS if a `sop-tier-check` context or tier-branching reappears (mutation-verified). Ref: file_issues_and_test_every_fix. - Fail-closed: removing a gate must not weaken the uniform bar — qa+security now run for ALL PRs (stronger, not weaker). ### Supersedes - #2397, #2400 (these ADD auto-tier — wrong direction; closing/guarding). ### Bootstrap note The removal PR may be held by `sop-tier-check` emitted from BASE main until merged (catch-22). Branch-protection does NOT require tier-check, so once `gitea-merge-queue.py` no longer treats it as governance-red, the cron merges on 2-genuine + BP-green. If still wedged, owner bootstrap-merge (documented, diff-reviewed) per CTO directive.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#2403