Repository navigation
fix: give every vendored drift check one 0/1/2 exit-code contract - #8207
Conversation
Every vendored skill's drift check now exits 0 for no drift, 1 for upstream drift and 2 for unverifiable, and the weekly maintenance-check-upstream-drift workflow applies that one rule to every row instead of a per-row drift rule. - dometrain sync: drift moves from exit 2 to 1, unverifiable from 1 to 2; an unknown mode exits 2. - context7 lookup: drift exits 1 instead of 0, a missing tool 2 instead of 1; a ctx7 that is not installed is reported, not counted as drift. - firecrawl update: a CLI that is not installed is no longer drift, and the report reads the recorded last-sync date and SHA256 instead of the `recorded)` tail of a `(none recorded)` placeholder. - playwright, boris, skill-authoring already followed the contract; their tests now pin it, and context7 and dometrain get network-free tests. Closes #6493 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AQ9amjLiLKnwj4WGMRcofR
From the pre-ready code review of #8207: - A failed npm-registry read no longer returns 2 before the upstream SKILL.md comparison runs; drift found there still exits 1, matching context7's drift-over-unverifiable rule. - recorded_field trims trailing whitespace, as the old awk read did, so a trailing space is not read as a changed SHA. - The header now says an installed CLI behind npm latest is drift. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AQ9amjLiLKnwj4WGMRcofR
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-review reviewed No blocking findings. I read the full diff, the PR context and What I checked
Minor, not worth blocking
|
|
claude-security-review reviewed Security review: no findingsI reviewed PR #8207 at head 8f5e9fa. It gives the vendored drift-check scripts one 0/1/2 exit-code contract. The PR touches the scheduled drift workflow, the context7, dometrain and firecrawl What I checked
One behaviour note (not a finding)
|
Closes #6493
Summary
Every vendored skill's drift-check script now exits 0 for no drift, 1 for upstream drift and 2 for unverifiable. The weekly
maintenance-check-upstream-driftworkflow uses that one rule for all eight rows. Before this change it needed a separate drift rule for each row, because dometrain swapped 1 and 2, context7 exited 0 on drift, and firecrawl exited 1 when its CLI was not installed.Fix
update.sh): drift now exits 1 (it was 2) and unverifiable exits 2 (it was 1). A missing baseline counts as drift, and an unknown mode exits 2.update.sh): drift now exits 1 (it was 0) and a missing tool exits 2 (it was 1). Actx7that is not installed is reported but no longer counted as drift. When both happen in one run, drift wins over unverifiable, as in the user-interface drift scripts. A failedgit ls-remotenow marks the skill checks unverifiable instead of exiting early.update.sh --check): a CLI that is not installed is reported and no longer counts as drift.recorded_fieldnow reads the whole value afterLabel:and treats placeholders such asneverand(none recorded)as empty, so the report prints the recorded last-sync date and SHA256 instead ofrecorded).recorded_fieldalso trims trailing whitespace.run_check's 0/1/2 results.drift/unverifiablematrix keys and theexit:/line:/text:matcher. Exit 1 fails the run, exit 2 warns, and any other code fails the run as outside the contract.docs/upstream/good-css.mdno longer names the removed matrix keys.patch, dometrain and context7minor(a consumer-visible exit-code change), playwright and playbooksnone(test-only).Verification
plugins/context7/skills/lookup/scripts/update.test.sh(20 checks) andplugins/dometrain/skills/sync/scripts/update.test.sh(14 checks). Each runs the script from a copied skill tree with a PATH limited to the tools it needs, plus stubs for curl, npm, git and ctx7.check-good-css-drift.test.shandcheck-emilkowalski-drift.test.sh.recorded)misread and the missing-CLI exit 1).scripts/check-affected.sh --tests: 8 passed, 1 skipped (ruff, no.pyfiles).shellcheck --rcfile .shellcheckrcpasses on every changed script,actionlintpasses on the workflow, andscripts/check-changelog-fragments.sh --checkpasses.Related
🤖 Generated with Claude Code
https://claude.ai/code/session_01AQ9amjLiLKnwj4WGMRcofR