Version Drift Detection¶
BaseCoat provides a callable workflow that consumer repos can schedule to detect when their synced assets are out of date.
Release-version drift remains the default signal, with optional asset-level drift available via
asset-manifest.json and the adoption scanner.
How it works¶
sequenceDiagram
participant CR as Consumer Repo
participant GH as GitHub Actions
participant BC as BaseCoat Releases
CR->>GH: Scheduled trigger (weekly)
GH->>CR: Read .github/base-coat/version.json
GH->>BC: Fetch latest release tag
GH->>GH: Compute release version drift
alt drift >= threshold
GH->>CR: Open/update upgrade issue
else up to date
GH->>GH: No action
end
Setup¶
Copy this to .github/workflows/check-basecoat-version.yml in your consumer repo:
name: Check BaseCoat Version
on:
schedule:
- cron: '0 9 * * 1'
workflow_dispatch:
jobs:
check:
uses: IBuySpy-Shared/basecoat/.github/workflows/check-basecoat-version-callable.yml@main
with:
stage_path: .github/base-coat
alert_threshold: 1
permissions:
issues: write
contents: read
Inputs¶
| Input | Default | Description |
|---|---|---|
stage_path |
.github/base-coat |
Path to synced BaseCoat assets |
alert_threshold |
1 |
Versions behind before alerting |
What the issue looks like¶
When drift is detected, an issue is opened in the consumer repo titled:
chore: BaseCoat upgrade available (v3.23.0 → v3.25.0)
The issue includes the current version, latest version, and upgrade instructions. If the issue already exists, a comment is added instead (idempotent).
Asset-level drift (optional)¶
To evaluate per-asset version/SHA drift across consumer repos:
When a source asset has frontmatter version, the scanner compares source vs consumer version.
When version metadata is unavailable, it falls back to SHA drift comparison.