Skip to content

refactor(ci): one GitHub API client, one sticky PR-comment action and one schema-split rule set (#15411) - #18467

Open
mrveiss wants to merge 7 commits into
mainfrom
issue-15411-ci-scripts-batch
Open

mrveiss wants to merge 7 commits into
mainfrom
issue-15411-ci-scripts-batch

Conversation

@mrveiss

@mrveiss mrveiss commented Oct 12, 2026

Copy link
Copy Markdown
Owner

Thinking Path

Carried from three stale local branches (issue-15411-github-api-module, issue-12984-pr-comment-upsert, issue-18158-tooling-clones) under the owner rule "any sitting branch must be linked to a finished PR" (branch cleanup 2026-10-12). All are CI/pipeline tooling. Built fresh from current main, with only each branch's unique commits cherry-picked; no stale tree was revived.

What Changed

Verification

Risks

  • The sticky-comment action: a behaviour change for two workflows' PR comments (upsert instead of inline logic). Same marker semantics.

Model Used

Anthropic Claude Opus 5.5 (claude-opus-5-5), coordinating. Anthropic Claude Sonnet 5.5 (claude-sonnet-5-5) subagent for the cherry-picks and verification.

Issue Link

Closes #18170
Refs #15411
Refs #12984
Refs #18158

Still open:

Single-issue rationale: one CI-tooling scope carried from three stale branches. Only #18170 is fully delivered; the other three are partial and stay open, as listed above.

Changelog fragment

  • N/A (CI/pipeline tooling)

@coderabbitai

coderabbitai Bot commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 59 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository: mrveiss/AutoBot-AI/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 5a9d4e52-d741-408a-bf4b-bc263954376f

📥 Commits

Reviewing files that changed from the base of the PR and between df211d3 and e968902.


⛔ Files ignored due to path filters (2)
  • repo_tests/python_file_size_ratchet_baseline.py is excluded by !repo_tests/python_file_size_ratchet_baseline.py
  • scripts/python_file_size_known_large.py is excluded by !scripts/python_file_size_known_large.py

📒 Files selected for processing (30)
  • .github/actions/upsert-pr-comment/action.yml
  • .github/actions/upsert-pr-comment/upsert_pr_comment.py
  • .github/workflows/ai-security-review.yml
  • .github/workflows/ssot-coverage.yml
  • autobot_shared/env_registry_testing.py
  • docs/developer/ENV_VARS.md
  • pipeline-scripts/ci_dispatch_retry.py
  • pipeline-scripts/ci_dispatch_watchdog.py
  • pipeline-scripts/ci_red_cause.py
  • pipeline-scripts/github_api.py
  • pipeline-scripts/release_sync_main.py
  • repo_tests/_reach_policy.py
  • repo_tests/ci_dispatch_retry_test.py
  • repo_tests/egress_default_guard_17576_test.py
  • repo_tests/egress_unguarded_baseline_17576.json
  • repo_tests/github_api_behaviour_15411_test.py
  • repo_tests/github_api_single_module_15411_test.py
  • repo_tests/pr_comment_upsert_12984_test.py
  • repo_tests/reach_scope_claim_17844_test.py
  • scripts/backfill_relationships.py
  • scripts/drift_cli.py
  • scripts/drift_cli_test.py
  • scripts/scope_box_artefact_drift.py
  • scripts/umbrella_label_drift.py
  • tools/schema-split/README.md
  • tools/schema-split/resolve_schema_conflicts.py
  • tools/schema-split/schema_rules.py
  • tools/schema-split/schema_rules_test.py
  • tools/schema-split/split_schemas.py
  • tools/schema-split/update_imports.py

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

Notice: 29 open PRs — past the runaway threshold (25)

This is not a request to defer this PR. The actual limit is the open-PR cap (AUTOBOT_OPEN_PR_CAP, default 40), enforced at pre-push against NEW branches only -- pushing more commits to this PR's own branch is never blocked by it.

This notice only means the count is high enough to be worth a glance for a runaway — something opening PRs in a loop, or a merge pipeline that has stalled so nothing is draining.

Currently open:

If the queue is draining normally, ignore this. Otherwise:

  1. Check whether CI is dispatching at all — see the ci-dispatch-watchdog status on these PRs
  2. Merge the ones whose CI has finished and review has passed: gh pr merge <number> --squash --delete-branch
  3. Look for a loop opening near-identical PRs

Warn-only runaway detector — .github/workflows/pr-queue-gate.yml. It never blocks a merge.

@mrveiss

mrveiss commented Oct 12, 2026

Copy link
Copy Markdown
Owner Author

Security review (Opus) at e968902: approve.

  • Reversal check: clean. The merge-base is current main (0 behind), and for all 32 files the two-dot and three-dot line counts match, so ci(perf): collapse 15 duplicate paths-filter jobs into one reusable workflow #15360s ai-security-review.yml` changes are kept.
  • No script injection in the new composite action: every input reaches the shell only via env: as "$VAR", and the body travels as a file path (action.yml:46-55).
  • Triggers: both workflows run on pull_request, not pull_request_target, so a fork gets a read-only token, the comment 403s, and continue-on-error absorbs it.
  • Upsert script: the body is sent only as a JSON payload; the token is in a header and never logged; the API root comes from github.api_url.
  • github_api.py: the token is in a header, and transport errors carry no headers.

Policy decision (merger): option (a), the per-file EXEMPT for upsert_pr_comment.py, as written. It is stdlib-only on a bare runner, cannot import the guard, and talks only to the runners API root with the job token. Taking all of .github/out of the census would silently exclude any future CI script that fetches a PR- or LLM-supplied URL. The entry carries its reason in a comment (#12984). A reason-enforcingdictforEXEMPT` would be stronger, but is optional.

Pre-existing items, not this PR`s, filed as #18468:

Queued for the next merge train.

@github-actions

Copy link
Copy Markdown
Contributor

✅ SSOT Configuration Compliance: Passing

🎉 No new hardcoded values of either class — ssot and other both block.

Known backlog in pipeline-scripts/hardcoded_values_baseline.txt is suppressed and tracked in #14371.

This branch has not been deployed

No deployments
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.

tech-debt(tooling): tools/schema-split/resolve_schema_conflicts.py still writes output with print()

1 participant