Skip to content

ops(github-settings): refresh expected snapshot — drift-debt resolution (Aaron 2026-05-01 authorized)#1126

Merged
AceHack merged 2 commits intomainfrom
drift-debt-snapshot-refresh-aaron-authorized-2026-05-01
May 1, 2026
Merged

ops(github-settings): refresh expected snapshot — drift-debt resolution (Aaron 2026-05-01 authorized)#1126
AceHack merged 2 commits intomainfrom
drift-debt-snapshot-refresh-aaron-authorized-2026-05-01

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 1, 2026

Summary

Aaron 2026-05-01 "full permission here except no budget plus i'm sure you'll keep your good disciplines" — drift-debt has been blocking `github-settings-drift.yml` CI on every PR + push to main since 2026-04-29 (task #343).

Refreshes `tools/hygiene/github-settings.expected.json` to match current host state, with explicit per-class receipt of every diff.

Drift classes resolved

  1. Ruleset rule removed: code_quality — intentional per task backlog: Otto-161 macOS CI — declined per Otto-164 pricing verification (NOT free for public repos) #343 (2026-04-29); receipt was filed but snapshot wasn't refreshed at the time
  2. Branch protection `strict: true → false` — intentional, parallel-PR-friendly merging (eases multi-PR convergence clusters from sequential rebase-thrashing)
  3. Workflows added to actions list (CodeQL / Copilot cloud agent / backlog-index-integrity / budget-snapshot-cadence / memory-index-integrity / memory-reference-existence-lint / resume-diff / scorecard) — natural state evolution as workflows fired for the first time
  4. `copilot` environment added — natural; Copilot cloud agent enabled
  5. CodeQL `query_suite: default → extended` — intentional CodeQL coverage widening; composes with task core: PLV mean phase offset — 19th graduation (Amara 18th-ferry #6) #340

Out of scope (separate larger work)

  • Ruleset-splitting refactor — Aaron's standing architectural goal ("all always on but multiple smaller rulesets") not bundled here. Currently only one `Default` ruleset exists; splitting is separate larger work.

Test plan

  • `bash tools/hygiene/check-github-settings-drift.sh --repo Lucent-Financial-Group/Zeta` returns `no drift` post-commit
  • Per-class receipt explicit in commit message (intentional / natural classification)
  • No host changes — only snapshot refresh
  • CI `github-settings-drift` workflow runs green on this PR + on main post-merge

🤖 Generated with Claude Code

…on (Aaron 2026-05-01 authorized)

Aaron 2026-05-01 *"full permission here except no budget plus i'm sure
you'll keep your good disciplines"* — drift-debt has been blocking
github-settings-drift.yml CI on every PR + push to main since
2026-04-29 (task #343). Regenerating expected snapshot to match
current host state, with explicit per-class receipt below.

Five drift classes resolved:

1. **Ruleset rule removed: code_quality** (severity: all)
   - Status: intentional per task #343 (2026-04-29)
   - Drift-debt receipt was filed but snapshot wasn't refreshed at
     the time; this commit closes that gap

2. **Branch protection: required_status_checks.strict true → false**
   - Status: intentional (parallel-PR-friendly merging — eases
     this session's 5-PR convergence cluster from sequential
     rebase-thrashing each other)
   - When `strict: true`, every merged PR forces all sibling PRs
     to rebase before they can merge, which compounds at scale.
     `strict: false` lets sibling PRs merge without forced rebases
     against latest main.

3. **Workflows added to actions list** (CodeQL, Copilot cloud agent,
   backlog-index-integrity, budget-snapshot-cadence,
   memory-index-integrity, memory-reference-existence-lint,
   resume-diff, scorecard)
   - Status: natural — workflows exist in `.github/workflows/`
     already; they just hadn't fired yet at snapshot time
     (GitHub's actions/workflows API lists only those with at
     least one run)

4. **Environment added: copilot**
   - Status: natural — Copilot cloud agent enabled, which creates
     a `copilot` environment automatically
   - No protection rules attached; matches GitHub default

5. **CodeQL query_suite: default → extended**
   - Status: intentional widening of CodeQL coverage (more checks)
   - Composes with task #340 (codeql per-language source-presence
     gate landed) and the broader security-as-substrate framing

Out of scope for this commit (filing-worthy as separate work):

- **Ruleset-splitting refactor** — Aaron's reminder to keep "good
  disciplines like splitting rulesets so you could have all always
  on but multiple smaller rulesets" describes an architectural
  goal not yet executed. Currently only one `Default` ruleset
  exists; splitting into multiple smaller always-on rulesets is
  separate larger work, not bundled here.
Copilot AI review requested due to automatic review settings May 1, 2026 17:01
@AceHack AceHack enabled auto-merge (squash) May 1, 2026 17:01
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refreshes the repository’s checked-in GitHub settings snapshot to match the current live GitHub host configuration, unblocking the github-settings-drift CI check that compares “expected” vs “live”.

Changes:

  • Removed the code_quality ruleset rule from the expected snapshot.
  • Updated default-branch protection to required_status_checks.strict: false.
  • Added newly observed workflows/environments to the expected snapshot and updated CodeQL default setup query_suite to extended.

Comment thread tools/hygiene/github-settings.expected.json
…apshot determinism fix (PR #1126 review thread)

copilot-pull-request-reviewer P1: workflows list contains two entries
with the same `.name` ("CodeQL") but different `.path`s.
`snapshot-github-settings.sh` sorted by `.name` only, so ties could
produce nondeterministic ordering when GitHub's API returned them in
varying order — causing flaky drift diffs.

Fix: sort_by(.name, .path) gives a stable secondary key. Re-snapshotted
expected.json with the new sort; diff verifies no drift.

Resolves thread PRRT_kwDOSF9kNM5_AuTU on PR #1126.
@AceHack AceHack merged commit e2481f1 into main May 1, 2026
24 checks passed
@AceHack AceHack deleted the drift-debt-snapshot-refresh-aaron-authorized-2026-05-01 branch May 1, 2026 17:33
AceHack added a commit that referenced this pull request May 1, 2026
…low + visibility-constraint clarification + B-0154 forward-ref annotation

Three substantive fixes:

1. **Line-leading `+` on continuation** (MD004 lint, recursive
   irony from B-0153's class 1) — reflowed "+ tick-history-order"
   to "and tick-history-order" so the continuation doesn't read
   as a nested bullet.

2. **Visibility-constraint memory reference** — referenced filename
   doesn't exist in repo (rule is referenced PROSEFULLY in MEMORY.md
   + multiple memory files but never landed as its own dedicated
   memory file). Replaced broken pointer with prose acknowledgement
   + verbatim Aaron 2026-04-28 quote, and noted the rule is
   referenced-not-yet-filed.

3. **B-0154 depends_on forward-ref** — annotated as "(forward-ref
   to PR #1125 not yet merged on main)" so the DAG semantics are
   explicit.

Threads PRRT_kwDOSF9kNM5_Awkw + PRRT_kwDOSF9kNM5_AwlS (about
"Current state" inconsistency with snapshot showing code_quality
+ strict:true) are now stale — post-rebase, this branch reflects
post-PR-#1126 state which matches the row content. Resolving
those without code change.
AceHack added a commit that referenced this pull request May 1, 2026
…e preferred (Aaron 2026-05-01) (#1127)

* backlog(B-0155): GitHub settings refactor — ruleset split + git-native preferred (Aaron 2026-05-01)

Aaron 2026-05-01: *"the settings that are there are accidental
complexity not intentional, we want best practices and to prefer
the git native settings over the legacy github ui/cli only
settings, these are nasty thats why they are legacy"* + earlier
*"splitting rulesets so you could have all always on but multiple
smaller rulesets"*.

Three composing directives captured:
1. Treat current settings as accidental complexity (not load-bearing)
2. Split single big ruleset → three concern-aligned smaller always-on
   rulesets (Branch integrity / Review process / CI gate)
3. Prefer git-native (declarative-in-tree + ruleset-as-code) over
   legacy UI/CLI-only branch-protection settings

Phase plan: audit + design, split implementation, branch-protection
cleanup, documentation. Reconciliation script
(tools/hygiene/apply-github-settings.sh) as mechanization candidate
that makes click-ops drift structurally impossible.

depends_on: B-0154 (sibling host-config refactor work).

* docs(github-settings): B-0155 Phase 1 audit + migration matrix + three-ruleset target shape

Phase 1 deliverable for B-0155 — audit-only, no host changes yet.

Captures:

1. Migration matrix — every legacy branch-protection field mapped to its
   ruleset rule equivalent (or "no equivalent, keep in legacy") so
   future maintainers + the reconciliation script (Phase 2) have a
   ground-truth reference for what migrates and what stays.

2. Three-ruleset target shape — Branch integrity / Review process /
   CI gate. Each concern-aligned, all always-on, smaller blast-radius
   per Aaron's "splitting rulesets so you could have all always on
   but multiple smaller rulesets" framing.

3. Minimized branch protection — post-migration, only
   `allow_fork_syncing` (legacy-only) remains in branch protection.
   Everything else moves to rulesets where rule equivalents exist.

4. Git-native rationale — captures Aaron's "these are nasty thats
   why they are legacy" framing + the reconciliation script direction
   that closes the loop on click-ops drift.

5. Reconciliation script vision — `tools/hygiene/apply-github-settings.sh`
   as the third verb (alongside snapshot + check) that makes drift
   structurally impossible.

Audit-only commit; Phase 2 (snapshot edit + reconciliation script
+ apply) is a separate PR after this row's audit lands.

* backlog(B-0155): address PR #1127 review threads — line-leading + reflow + visibility-constraint clarification + B-0154 forward-ref annotation

Three substantive fixes:

1. **Line-leading `+` on continuation** (MD004 lint, recursive
   irony from B-0153's class 1) — reflowed "+ tick-history-order"
   to "and tick-history-order" so the continuation doesn't read
   as a nested bullet.

2. **Visibility-constraint memory reference** — referenced filename
   doesn't exist in repo (rule is referenced PROSEFULLY in MEMORY.md
   + multiple memory files but never landed as its own dedicated
   memory file). Replaced broken pointer with prose acknowledgement
   + verbatim Aaron 2026-04-28 quote, and noted the rule is
   referenced-not-yet-filed.

3. **B-0154 depends_on forward-ref** — annotated as "(forward-ref
   to PR #1125 not yet merged on main)" so the DAG semantics are
   explicit.

Threads PRRT_kwDOSF9kNM5_Awkw + PRRT_kwDOSF9kNM5_AwlS (about
"Current state" inconsistency with snapshot showing code_quality
+ strict:true) are now stale — post-rebase, this branch reflects
post-PR-#1126 state which matches the row content. Resolving
those without code change.

* backlog(B-0155): strict:false confirmed deliberate (Aaron 2026-05-01) — graduates from accidental to canonical

Aaron 2026-05-01: *"no we want false"* + *"yes that is not
accidentally"* — explicit confirmation that `required_status_checks.strict: false`
is the intentional design choice, not accidental complexity.

Sharpens the everything-greenfield rule: the DEFAULT prior at
week-one is "configs are accidental candidates," but specific
configs can graduate to confirmed-deliberate via direct
maintainer signal. `strict: false` is one such confirmed-
deliberate setting (parallel-PR-friendly cadence is the
architecture).

Composes with feedback_everything_greenfield_at_week_one's
cause-attribution refinement (the click-vs-decision
discipline; Aaron just made the click-then-decision
graduation explicit for this specific setting).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants