You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
From the review of the #198 sweep (TraitMech#196, MediaIngredientMech#166, CommunityMech#302).
All three spokes now carry .github/workflows/vendored-sync.yaml, and the executable part is byte-identical: I diffed the retry blocks across TraitMech, MediaIngredientMech and CommunityMech and they match exactly. Only the comments differ, naming each repo's local gate.
Nothing enforces that. The file is not on check_vendored_sync.sh's FILES list — and it could not usefully be, because the canonical hub (CultureMech) has no copy: as the hub it has no check_vendored_sync.sh and no vendored-sync job at all.
So the guard against vendored drift is itself now triplicated with no guard. That is the same shape as CommunityMech#278, which observes that check_vendored_sync.sh has no canonical copy in the hub either. Two files in the same mechanism now share the same hole.
The fleet is consistent right now. The point is that it will stay consistent only by hand.
Why it is not urgent
Divergence here degrades gracefully. If one repo's copy drifts, that repo's guard behaves differently — it does not corrupt data or produce a false pass in the others. And CultureMech's nightly vendored-fleet-audit still compares the files that are on the list.
Options
Accept it and document that the workflow is intentionally per-repo, so a future reader does not assume it is synchronised.
Give the mechanism a canonical home in the hub. CultureMech would carry reference copies of check_vendored_sync.sh and vendored-sync.yaml that it does not itself execute, purely as the diff target — resolving ci: bump actions/upload-artifact from 4.6.2 to 7.0.1 #278 and this together. The oddity is a hub holding a file it never runs.
Move the shared logic out of the workflow into the checker script, so there is one place to keep in sync rather than two. Blocked by the same problem: the checker has no canonical copy either, which is exactly why the retry was put in the workflow in the first place.
(2) is the only option that actually closes both. Worth deciding alongside #278 rather than separately, since neither is fixable without the other.
From the review of the #198 sweep (TraitMech#196, MediaIngredientMech#166, CommunityMech#302).
All three spokes now carry
.github/workflows/vendored-sync.yaml, and the executable part is byte-identical: I diffed the retry blocks across TraitMech, MediaIngredientMech and CommunityMech and they match exactly. Only the comments differ, naming each repo's local gate.Nothing enforces that. The file is not on
check_vendored_sync.sh'sFILESlist — and it could not usefully be, because the canonical hub (CultureMech) has no copy: as the hub it has nocheck_vendored_sync.shand novendored-syncjob at all.So the guard against vendored drift is itself now triplicated with no guard. That is the same shape as CommunityMech#278, which observes that
check_vendored_sync.shhas no canonical copy in the hub either. Two files in the same mechanism now share the same hole.Measured on 2026-08-02
scripts/check_vendored_sync.sh04674a58…04674a58…04674a58….github/workflows/vendored-sync.yamlretry blockscripts/.vendored_canon_ref6be694f3…6be694f3…6be694f3…The fleet is consistent right now. The point is that it will stay consistent only by hand.
Why it is not urgent
Divergence here degrades gracefully. If one repo's copy drifts, that repo's guard behaves differently — it does not corrupt data or produce a false pass in the others. And CultureMech's nightly
vendored-fleet-auditstill compares the files that are on the list.Options
check_vendored_sync.shandvendored-sync.yamlthat it does not itself execute, purely as the diff target — resolving ci: bump actions/upload-artifact from 4.6.2 to 7.0.1 #278 and this together. The oddity is a hub holding a file it never runs.(2) is the only option that actually closes both. Worth deciding alongside #278 rather than separately, since neither is fixable without the other.