fix(repo): make the deploy guard fire, and record the deletion of musher-dev/specs - #58
Merged
Merged
Conversation
`requires: vars:` fires only when a variable is undefined. GitHub Actions defines an `env:` key whose secret is unset -- as an empty string -- so the guard passed in the one environment it exists for, and wrangler reached the network unauthenticated and emitted its own error instead. Both failed Pages runs on `main` show exactly that. A precondition testing for emptiness fires in all three failure states: unset, empty, and one of the two missing. This makes true what pages.yml and ADR 0012 section 6 already claim. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Justin Merrell <merrelljustin@gmail.com>
…hived ADR 0012 section 5 decided `musher-dev/specs` would be archived rather than deleted, on the grounds that deletion 404s every inbound reference including ADR 0001's own account of why this repository exists. That reasoning is not withdrawn, but the harm it weighed against has gone live: schemas.musher.dev now resolves to this repository's origin, while the archived repository's README still advertises URLs on that hostname for a retired concept. ADR 0014 supersedes section 5, states the cost rather than arguing it away, and closes ADR 0012 follow-up 2 by dropping `specs` from the organisation's pr-workflow ruleset. ADR 0001 and ADR 0012 are left as written -- an accepted ADR records what was decided, and editing one to hide a dead link would cost more than the dead link does. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Justin Merrell <merrelljustin@gmail.com>
This was referenced Aug 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #51. Unblocks the repository half of #56.
The deploy guard never fired
taskfiles/build.Taskfile.ymlguardedsite:deploywithrequires: vars: [CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID], and bothpages.ymland ADR 0012 §6 state that this "refuses to run without both, so amissing secret fails the job instead of deploying anonymously". It does not.
GitHub Actions defines an
env:key whose secret is missing — as an emptystring — and Task counts empty as set. Reproduced against Task 3.52.0, the
version CI pins:
The guard fired only when the variables were genuinely undefined, which is the
one state CI never produces. Both failed Pages runs on
mainshow theconsequence: wrangler ran and emitted its own error.
A precondition testing for emptiness now fires in all three failure states —
unset, empty, and one of the two missing — and passes only when both are
non-empty.
pages.yml's comment gains the reason, because the failure mode isnot visible from the file that depends on it.
musher-dev/specsis deleted, not archivedADR 0012 §5 decided the superseded repository would be archived, reasoning that
deletion
404s every inbound reference including ADR 0001's own account of whythis repository exists. That reasoning is not withdrawn. What changed is that
the harm it was weighed against went live:
musher-dev/infra#336has merged andapplied,
schemas.musher.devresolves, and the archived repository's READMEstill advertises URLs on that hostname for the
bundle-definitionschema theplatform no longer ships.
ADR 0014 supersedes §5, states the cost rather than mitigating it away, and
closes ADR 0012 follow-up 2 by dropping
specsfrom the organisation'spr-workflowruleset (14207433). Per #51's "Not doing",specis notadded in its place.
ADR 0001 and ADR 0012 are left exactly as written. An accepted ADR records what
was decided and why; editing one to hide a dead link would cost more than the
dead link does. The four references this repository holds to the deleted
repository will
404, and ADR 0014 says so under Consequences.Out of scope, and still yours
Setting
CLOUDFLARE_API_TOKENandCLOUDFLARE_ACCOUNT_ID(#56) and deletingthe repository itself. Neither can be done from here.
Verification
task checkpasses. The guard was exercised in all four states:CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_IDwrangler🤖 Generated with Claude Code