Skip to content

Decide: require Quality Gate checks before merging to main #51

Closed

Description

@amar-python

Context

The integration job has been red on main for at least two months, and merges went through regardless. Nothing currently blocks a merge on a failing check.

Options

Done when

The decision is recorded and, if (a) or (b), the rule is set in GitHub settings.

Activity

  1. added
    ciContinuous integration and the Quality Gate
    decisionNeeds a product-owner decision before work starts
    on Oct 25, 2026
  2. amar-python commented on Oct 25, 2026

    @amar-python
    OwnerAuthor

    Automated verification: FAIL (verify_issues.py, 2026-10-25)

    main has no branch protection (API returns 404), and no decision recorded: no comment from the owner and the issue is open.


    Generated by Claude Code

  3. amar-python commented on Nov 2, 2026

    @amar-python
    OwnerAuthor

    Closed — decided and applied (2026-11-02)

    Decision: Option (a). Branch protection on main, require all three Quality Gate checks and a PR, with enforce_admins: true.

    Why (a) over (b) or (c)

    Applied

    Protection set via gh api --method PUT /repos/amar-python/PostgreDataMigrationAppWithCSVLoader/branches/main/protection on 2026-11-02:

    • required_status_checks.contexts: python-validator-tests, free-tier (unit, lint, health, evals-p), integration (postgres service)
    • required_status_checks.strict: true (branches must be up to date)
    • required_pull_request_reviews.required_approving_review_count: 0 (solo project)
    • enforce_admins.enabled: true (gate applies to admins)
    • allow_force_pushes: false
    • allow_deletions: false

    On enforce_admins: true

    The decision is deliberate. The two-month red integration was exactly the kind of thing admin bypass permissions enable. Solo project means "admin bypass" is just "I can skip my own gate." Seven recent green merges prove the gate isn't blocking real work.

    Emergency escape hatch (recorded for future reference)

    To remove protection in a genuine emergency:

    To restore afterwards: re-run the apply command (see decision record).

    Related

  4. added a commit that references this issue on Nov 2, 2026
    e7833b2
  5. amar-python commented on Nov 2, 2026

    @amar-python
    OwnerAuthor

    Closed — decided and applied (2026-11-02)

    Decision: Option (a). Branch protection on main, require all three Quality Gate checks and a PR, with enforce_admins true.

    Why (a) over (b) or (c)

    Applied

    Protection set via gh api PUT on 2026-11-02:

    • required_status_checks.contexts: python-validator-tests, free-tier (unit, lint, health, evals-p), integration (postgres service)
    • required_status_checks.strict: true (branches must be up to date)
    • required_pull_request_reviews.required_approving_review_count: 0 (solo project)
    • enforce_admins.enabled: true (gate applies to admins)
    • allow_force_pushes: false
    • allow_deletions: false

    On enforce_admins true

    The decision is deliberate. The two-month red integration was exactly the kind of thing admin bypass permissions enable. Solo project means admin bypass is just "I can skip my own gate." Seven recent green merges prove the gate is not blocking real work.

    Related

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ciContinuous integration and the Quality GatedecisionNeeds a product-owner decision before work starts

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions