Skip to content

Re-vendor the ruleset payloads and configure.sh after the promotion - #13

Merged
ptr727 merged 1 commit into
developfrom
revendor-post-promotion
Aug 3, 2026
Merged

Re-vendor the ruleset payloads and configure.sh after the promotion#13
ptr727 merged 1 commit into
developfrom
revendor-post-promotion

Conversation

@ptr727

@ptr727 ptr727 commented Aug 3, 2026

Copy link
Copy Markdown
Owner

The hub promoted develop to main as 7194f91 while #11 and #12 were open, so the ground truth this repo is measured against moved under them. ProjectTemplate#545 takes bypass_actors out of the hub's ruleset payloads and rewrites configure.sh around that decision.

The diff is exactly three files: repo-config/develop.json, repo-config/main.json, and repo-config/configure.sh. The hub carries a third payload, repo-config/operational/develop.json, which this repo does not carry and is not owed, because it is a release repo rather than an operational one.

The rewrite is the substantive half

Who may bypass a ruleset decides who the rules do not apply to, which the hub has now declared a maintainer's decision rather than a value the fleet config hands out. configure.sh was rewritten to hold that line against a replacing API:

  • Apply reads the live bypass list and writes it back unchanged, because a PUT replaces the whole document, so omitting the field would delete the list rather than leave it alone. A failed read aborts rather than proceeding, since applying without it would silently clear the list.
  • Check reports the live list and asserts nothing about it.

What this deliberately does not do

Remove the live bypass. Both rulesets here carry the RepositoryRole admin entry the old payload granted every repo, and nothing in this change touches it. Removing it is a protected-branch settings write and a decision the hub just declared human, so it is yours.

The two tools now disagree about that exact state, which is worth knowing before you read a fleet audit:

Tool Verdict on Blog's live bypass
configure.sh check exits 0, reports "bypass list: RepositoryRole 5 always (not managed by this script)"
spec/audit.py DEFECT ruleset: develop diverges and the same for main

audit.py still carries bypass_actors in RULESET_SUBSET, so it diffs an absent payload field against the live list and can never agree. Raised as ProjectTemplate#554, because it makes every fleet repo carrying a bypass permanently not operational on a field the fleet just decided not to manage.

Also raised, not fixed here

ProjectTemplate#552: the promotion added an audit check flagging any carried AGENTS.md that names the template repo, and the byte-locked Fleet Bootstrap section this repo carried in #11 names it. A repo carrying the canonical correctly cannot pass, and the only way to pass is to break the byte-lock. Blog is the first repo to carry that section, which is why it surfaced here.

Verification

  • The three files in this diff byte-match hub main 7194f91 after LF normalization.
  • .markdownlint-cli2.jsonc was checked and needed no change, so it is not in the diff. It is this repo's fourth verbatim unit and the promotion did not move it, which is worth stating so a reader can tell it was verified rather than overlooked.
  • repo-config/configure.sh check ptr727/Blog release exits 0 under the rewritten check mode, against the live rulesets and settings.
  • The JSON and editorconfig gates are clean.

🤖 Generated with Claude Code

The hub promoted `develop` to `main` as `7194f91` while the previous two
convergence pull requests were open, so the ground truth this repo is
measured against moved under them. ProjectTemplate#545 takes
`bypass_actors` out of all three payloads, and rewrites `configure.sh`
around that decision.

The rewrite is the substantive half. Apply now reads the live bypass
list and writes it back unchanged, because a PUT replaces the whole
document and omitting the field would delete the list rather than leave
it alone, and it aborts rather than proceeding if that read fails. Check
reports the live list and asserts nothing about it. Who may bypass a
ruleset decides who the rules do not apply to, which is a decision for
the maintainer rather than a value the fleet config hands out.

## What this deliberately does not do

Remove the live bypass. Both rulesets here carry the `RepositoryRole`
admin entry the old payload granted every repo, and nothing in this
change touches it. Removing it is a protected-branch settings write and
a decision the hub just declared human, so it is the maintainer's.

Worth knowing that the two tools now disagree about that state.
`configure.sh check ptr727/Blog release` exits 0 and reports the bypass
as unmanaged, while `spec/audit.py` still compares `bypass_actors` and
calls the same state a DEFECT on both branches. Raised as
ProjectTemplate#554, since it makes every fleet repo carrying a bypass
permanently not operational on a field the fleet decided not to manage.

## Verification

- All four verbatim units byte-match hub `main` `7194f91` after LF
normalization: the three re-vendored here plus `.markdownlint-cli2.jsonc`.
- `repo-config/configure.sh check ptr727/Blog release` exits 0 under the
rewritten check mode, and reports "bypass list: RepositoryRole 5 always
(not managed by this script)" on both rulesets rather than asserting it.
- The JSON and editorconfig gates are clean.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the repository’s carried GitHub ruleset payloads and the repo-config/configure.sh apply/check logic to align with the hub’s post-promotion canonical state, specifically removing bypass_actors from the vendored payloads and ensuring configure.sh apply preserves any existing live bypass list rather than managing it.

Changes:

  • Remove bypass_actors from the main and develop ruleset payload JSON.
  • Rewrite configure.sh apply to read and re-write the live bypass_actors list on ruleset updates (avoiding accidental deletion via PUT replacement semantics).
  • Update configure.sh check to report (but not assert) the live bypass list.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
repo-config/main.json Removes bypass_actors from the vendored main-branch ruleset payload.
repo-config/develop.json Removes bypass_actors from the vendored develop-branch ruleset payload.
repo-config/configure.sh Preserves live bypass list during ruleset updates; reports bypass list during checks without asserting it.

Comment thread repo-config/configure.sh

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit 6cfc462 into develop Aug 3, 2026
6 checks passed
@ptr727
ptr727 deleted the revendor-post-promotion branch August 4, 2026 22:22
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