feat(ci): synchronize pending plugins, sanitize exclude reason, and harden auto-bump workflow

Merged
TO
23m ago
+826-68

Summary

Hardens the backend tooling and workflows for automated upstream plugin bumps based on findings from PR #121:

  1. **Synchronize ## Pending first build\ in \README.md**:

    • \scripts/sync_docs.py\ now synchronizes both ## Currently active\ and ## Pending first build\ sections.
    • Extracts existing annotations (e.g. _(workspace member crate...)\ or _(fork...)) and preserves them across syncs.
    • Automatically detects when a plugin is bumped from active with cleared \ erified_with\ and adds _(bumped from <old_version>)_.
    • Updates tag and version when pending plugins are bumped.
  2. **Validate Pending Plugins in \check_repo_consistency.py**:

    • Enforces that all unverified active plugins in \manifest.json\ are present in ## Pending first build\ with exact matching repo, tag/commit, and version.
    • Prevents review warnings and documentation drift.
  3. **Sanitize Stale CI Citations in \xclude_reason**:

    • \scripts/bump_manifest_from_upstream.py\ now automatically strips stale historical build run assertions (e.g. ; the remaining 3 targets are green on build run 30604641151) when bumping a plugin.
  4. **Harden \daily-upstream-check.yml**:

    • Adds a polling loop to wait for checks to report on the PR before executing \gh pr checks --watch, eliminating the premature
      o checks reported\ abort.
    • Adds detailed error diagnostics if automated merge fails.
  5. Unit Tests:

    • Added unit test coverage for _sanitize_exclude_reason_on_bump, \check_readme_pending, and \sync_readme\ pending synchronization.

Summary by cubic

Hardens the automated upstream plugin bump pipeline so pending plugins stay synchronized, stale CI assertions are stripped from excluded-reason text, and the workflow no longer aborts prematurely or leaves dangling PRs.

README Sync & Validation

  • sync_docs.py now updates both "Currently active" and "Pending first build" README sections, preserving annotations like _(bumped from X)_ and _(fork: ...)_ and auto-adding them when a plugin is re-bumped.
  • check_repo_consistency.py now validates that every unverified manifest entry appears in the pending section with matching repo, tag/commit, and version.

Bump Pipeline Hardening

  • Bumps now strip stale "green on build run N" assertions from exclude_reason and drop the field entirely when nothing remains.
  • daily-upstream-check.yml polls until required checks report before watching, arms auto-merge only after checks pass, retries the merge up to three times, and on any failure prints PR status details and closes the PR instead of exiting silently.

Summary by CodeRabbit

  • Documentation

    • Updated the “Pending first build” list with additional plugins and newer versions. Pending entries now retain relevant notes when the README is refreshed.
  • Bug Fixes

    • Removed stale build-verification text from exclusion reasons when manifest entries are updated.
    • Upstream pull requests now wait for required checks, retry merge attempts, and dispatch builds only after a confirmed merge. Failed or cancelled runs also attempt to close open pull requests and report unresolved failures.