Skip to content

[standing] Estate CodeQL cron drift detection + 6-week budget review #323

@hyperpolymath

Description

@hyperpolymath

Background

Spun out of #288 — the one-off CodeQL weekly→monthly fan-out is finite work and will close. But the standing concerns are:

  1. New repos scaffolded with weekly cron drift back to the same state [campaign] Estate CodeQL weekly→monthly sweep (cut 3, standards#233 Option B — ~206 repos) #288 cleaned up.
  2. The Cut-3 savings claim (~46k Actions-min/yr) needs a 6-week budget review to confirm it landed.
  3. Future cron-policy changes (e.g. cut 4+) need a single durable place to land.

This issue is the durable home for that work. It does not close — it carries the recurring sweep on a monthly cadence.

What this tracker owns

A. Monthly drift sweep (recurring)

On the 15th of each month, re-audit estate for CodeQL cron drift back to '0 6 * * 1':

gh api --paginate "search/code?q=org:hyperpolymath+filename:codeql.yml+cron&per_page=100" \
  --jq '.items[] | .repository.full_name + "\t" + .path' \
  | while IFS=$'\t' read -r repo path; do
      gh api "repos/${repo}/contents/${path}" --jq '.content' 2>/dev/null \
        | base64 -d 2>/dev/null \
        | grep -qE "^[[:space:]]*-[[:space:]]*cron:[[:space:]]*['\"]0 6 \* \* 1['\"]" \
        && echo "$repo $path"
    done

For each drift hit: file the standard cut-3-shape PR ('0 6 * * 1''0 6 1 * *') using the body shape from #288.

B. 6-week budget review (one-off — first checkpoint ~2026-07-15)

Counterfact: Cut-3 acceptance criterion calls for "6-week budget review confirms ~46k min/yr savings landed."

C. Future cron-policy changes (cut 4+)

If a future budget decision changes the canonical CodeQL cron again (e.g. to quarterly, or different time), the decision ticket files here as a sub-comment and the fan-out happens via a new dated [campaign] issue child of this tracker.

Triggering shape

Two possible shapes for the drift sweep:

  • Manual cadence: monthly checklist on the 15th, ~5min to run the audit + decide whether any new PRs are needed.
  • Automated: a .github/workflows/codeql-cron-drift.yml in hyperpolymath/standards runs the audit on a monthly cron, files an issue with the drift list. Owner-decision required before automating (cost: a few Actions-min/month vs the value of catching drift).

Prefer the manual cadence first — automate after we have at least one confirmed drift hit, otherwise we're paying for a job that does nothing.

Cross-references

Acceptance

This tracker is intentionally never-closing. Acceptance per cycle:

  • Per month: drift audit run, results commented (0 drift hits is a valid result).
  • Per 6-month rolling window: at least one comment with a budget-review delta.

Metadata

Metadata

Assignees

No one assigned

    Labels

    campaignMulti-PR multi-session estate campaigncicdCI/CD pipeline, GitHub Actions, workflows, rulesets, releases

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions