Skip to content

consumer skill drift #3

consumer skill drift

consumer skill drift #3

# Scheduled detector: does each active consumer repo's vendored .agents/skills/
# subset still match this canonical skill-lib? Catches "canonical moved ahead" --
# the failure mode that otherwise accumulates silently between manual propagation
# PRs. Read-only: it reports drift, it does not push or open PRs.
#
# The consumer repos are public, so actions/checkout reads them with the default
# GITHUB_TOKEN -- no extra secret required.
name: consumer skill drift
on:
workflow_dispatch:
schedule:
# Mondays 04:00 UTC — one hour after interdependent-lib's lib sync.
- cron: "0 4 * * 1"
permissions:
contents: read
jobs:
drift:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# ORG_DISTRIBUTION.md "Active vendoring consumers" -- the repos that
# carry a top-level `.agents/skills/<skill>/` subset. Keep this list and
# that section in sync; the targets excluded there (a0ucns aggregator,
# ptcna not-yet-vendoring, superseded PTCA/pcna) are deliberately absent
# because `--require-vendored` would fail a repo with no subset.
consumer:
- interdependent-lib
- ucns
- edcmbone
- edcm
- zfae
- eml_ucns
- ai-tiw
- a0-betatest
- metapat
- a0
- aimmh
- pcea
steps:
- name: Check out canonical skill-lib
uses: actions/checkout@v4
with:
path: skill-lib
- name: Check out consumer ${{ matrix.consumer }}
uses: actions/checkout@v4
with:
repository: The-Interdependency/${{ matrix.consumer }}
path: consumer
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Detect vendored-skill drift
shell: bash
run: |
cd skill-lib
SHA="$(git rev-parse HEAD)"
echo "### ${{ matrix.consumer }} vs skill-lib@${SHA:0:7}" >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
set +e
python tools/check_consumer_drift.py ../consumer --sha "$SHA" --require-vendored | tee -a "$GITHUB_STEP_SUMMARY"
status=${PIPESTATUS[0]} # checker's exit code, not tee's
set -e
echo '```' >> "$GITHUB_STEP_SUMMARY"
if [ "$status" -ne 0 ]; then
echo "Drift detected — re-propagate with: python tools/propagate_skills.py <path-to-${{ matrix.consumer }}> --apply" >> "$GITHUB_STEP_SUMMARY"
fi
exit "$status"