Skip to content

Fleet conformance drift: non-standard workflow names, unmanaged inline pin, missing workflows, ref/secret gaps across 27 repos #126

Description

@twistedmelonman

Full-fleet audit of all 27 non-fork smartwatermelon repos, run while shipping part 1 of #123. The advisory fix there is scoped to this repo's two reusable workflows; this issue covers everything the fleet needs beyond that.

Why this wasn't caught earlier: the existing conformance checks search for repos containing claude-blocking-review.yml. Any repo with a differently-named or absent workflow is invisible to that query — it only measures conformance among repos that already conform. That's the same blind spot that let the 2026-04-02 standardization report complete while leaving two repos on the old filename.

Full audit

Repo blocking-review assistant token
.github NONE NONE missing
archive-resolver v3.1.1 NONE missing
claude-code-workflows-agents OLD-NAME NONE missing
claude-config v3.1.0 NONE ok
claude-wrapper v3.1.0 9615f93 (raw SHA) ok
crazy-larry v3.1.0 @v3 missing
dev-env v3.1.0 NONE ok
dotfiles v3.1.0 c30bec1 (raw SHA) ok
dumbify v3.1.0 v3.1.0 ok
github-workflows v3.1.0 @v1 ok
homebrew-tap v3.1.0 @v3 missing
lock-sync v3.1.0 NONE ok
mac-dev-server-setup v3.1.0 @v3 ok
mac-server-setup v3.1.0 @v3 ok
personify v3.1.0 @v3.0.0 ok
pr-review v3.1.0 @v3.0.0 ok
projectinsomnia v3.1.0 @v3 ok
qwen-sidebar v3.1.0 @v3 ok
repo-template OLD-NAME @v3 missing
scripts v3.1.0 NONE ok
slack-mcp v3.1.0 @v3 ok
smartwatermelon-marketplace v3.1.0 @v3 missing
spokane-snow v3.1.0 NONE missing
superpowers NONE NONE missing
superpowers-marketplace NONE NONE missing
swift-progress-indicator v3.1.0 @v3 missing
x-thread-reader NONE NONE ok

1. claude-code-workflows-agents bypasses the reusable workflow entirely

Highest priority. Its claude-code-review.yml does not call this repo's reusable workflow at all — it inlines its own job with its own pin:

uses: anthropics/claude-code-action@4481e6d3c7bbb88db2a928ca3444c536f589c7c1  # v1

4481e6d3 = v1.0.131. That is past the GHSA-8q5r-mmjf-575q patch line (1.0.74), so it is not exposed to that specific advisory — but it is 62 releases stale and, critically, completely outside the fleet's update path. Repointing floating tags does nothing for it. Any future advisory in claude-code-action requires a separate manual fix here.

This also invalidates an assumption in #123: the blast-radius analysis there treats every consumer as inheriting the pin through the reusable workflow. This repo doesn't.

It also SHA-pins actions/checkout@34e1148 with a # v4 comment — the same ref-version-mismatch as item 3 of #123.

2. Old claude-code-review.yml filename survives in 2 repos

repo-template and claude-code-workflows-agents still use the pre-2026-04-02 filename. The migration was recorded as complete across all repos; it wasn't.

repo-template matters disproportionately — it is the template new repos are created from, so every future repo inherits the non-standard name and the floating @v3 ref.

3. Three repos have no workflows at all

superpowers, superpowers-marketplace, x-thread-reader have no .github/workflows directory. No blocking review, no assistant.

4. .github org repo has only claude.yml, fully unpinned

uses: anthropics/claude-code-action@v1
uses: actions/checkout@v7

Both floating major tags, no SHA pin — contrary to this repo's documented pinning policy. Since smartwatermelon/.github supplies org-level defaults and workflow templates, non-conforming content here propagates.

5. claude-assistant ref drift is much worse than blocking-review

blocking-review is uniform (@v3.1.0 everywhere except the v3.1.1 pilot). The assistant is not:

  • Raw commit SHAs of this repoclaude-wrapper9615f93 (2026-08-07), dotfilesc30bec1 (2026-04-28, ~4 months stale). Pinning a reusable workflow to a bare SHA defeats the semver-tag convention in README.md:207 and is invisible to any tag-based rollout.
  • Split across major lines — most repos use @v3, but github-workflows itself uses @v1. Per claude-code-action pinned to v1.0.70 (GHSA-8q5r-mmjf-575q, patched in 1.0.74) — live in ~30 consumer repos #123 these are separate release lines carrying separate fixes.
  • Assorted@v3.0.0, @v3.1.0, @v3, and 8 repos with no assistant caller at all.

6. Five repos run blocking-review without CLAUDE_CODE_OAUTH_TOKEN

homebrew-tap, crazy-larry, spokane-snow, swift-progress-indicator, smartwatermelon-marketplace (plus archive-resolver, being handled separately).

The workflow fails its token precondition and exits 1, so the check goes red — visible, not silent. But worth noting the fallback at claude-blocking-review.yml:674 can exit 0 with "Defaulting to PASS (infrastructure issue)" when no verdict is found and the Claude step didn't fail. Any path reaching that branch yields a green required check with no review behind it. Worth confirming all five fail closed.

The secret can only be set by a human via /install-github-app.


Suggested sequencing

  1. claude-code-workflows-agents — migrate to the reusable workflow so it rejoins the fleet update path.
  2. repo-template — rename to the standard filename and pin @v3.1.0+, so new repos stop inheriting drift.
  3. Assistant ref normalization — replace both raw-SHA pins, settle the @v1 vs @v3 split.
  4. Missing workflows — add the standard set to the 3 empty repos and fix .github.
  5. Tokens — human step, 5 repos.

Preventing recurrence

The audit needs inverting: enumerate all non-fork repos and assert each has a conforming workflow, rather than searching for repos that already have one. A repo missing the workflow entirely is precisely the case the current check cannot see.

Refs #123

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions