Skip to content

Fix the manifest, and release 0.1.2 - #34

Merged
zmaril merged 3 commits into
mainfrom
action-manifest-loads
Aug 25, 2026
Merged

Fix the manifest, and release 0.1.2#34
zmaril merged 3 commits into
mainfrom
action-manifest-loads

Conversation

@zmaril

@zmaril zmaril commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

The action does not load at all right now. Every repository on @main — cratebank, immersion, langbank — fails before its first step:

##[error]PowderworksCode/straitjacket/main/action.yml (Line: 77, Col: 18): Unrecognized named-value: 'github'
##[error]Failed to load PowderworksCode/straitjacket/main/action.yml

The cause

The token input's description explained itself with a live expression:

  token:
    description: >-
      … `${{ github.token }}` is enough; …

GitHub evaluates every ${{ }} in a manifest — including inside a description — and github is not a context it provides where inputs are processed. The sentence explaining the token is what stops the action loading.

It now names github.token without the braces, with a comment saying why it cannot have them. No other expression in the file sits outside runs: and outputs:.

Why nothing caught it

action.yml is loaded by GitHub and read by no cargo command, so gate cannot see it. install-smoke is the only workflow that does uses: ./, and it runs on workflow_call and workflow_dispatch — so nothing on a pull request loads the manifest, and it was first exercised by a consumer.

That is the failure shape the CI file already argues against one job up:

The publish path runs on every change, uploading nothing. Otherwise it is first exercised by the tag that publishes, which is the one moment a mistake cannot be taken back.

CI now checks out and uses the action on every change, with fail-on-findings: false and fail-on-unused-markers: false. Findings are not the point; what is proved is that the manifest loads, the install works, and the scan runs. The action job here is the verification — only GitHub can validate a manifest. It passed:

Run ./
straitjacket: installed v0.1.1 to …/straitjacket-bin/straitjacket
straitjacket: using config …/straitjacket.toml
straitjacket: 3 error(s), 0 warning(s) across 91 file(s); 105 suppressed

Against current main that job dies at "Set up job".

And a release

A fix to the manifest only helps once consumers can stop tracking main, which means a tag. Unreleased becomes 0.1.2 as it stands — the install failures that motivated all of this, plus the site, the rule manifest, and the documentation that had drifted. The README's examples move to @v0.1.2; they already recommended pinning, to a version that predates every fix in the entry.

cargo fmt, clippy -D warnings, 53 tests, and scripts/publish.sh --dry-run all pass locally on 0.1.2.

After this merges: tag v0.1.2, then pin cratebank (and immersion and langbank, which are broken the same way) to it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01361quprG7tUgaVFKAmKtJZ

zmaril and others added 2 commits August 25, 2026 13:46
The `token` input's description explained itself with a live expression:

    `${{ github.token }}` is enough

GitHub evaluates every expression it finds in a manifest, descriptions
included, and `github` is not a context it provides where inputs are
processed. So the action stopped loading:

    action.yml (Line: 77, Col: 18): Unrecognized named-value: 'github'
    Failed to load PowderworksCode/straitjacket/main/action.yml

For a consumer on `@main` that is worse than a finding -- the job fails
before its first step, with an error naming a line in this repository.
The example now names `github.token` without the braces, and says why it
cannot have them.

Nothing here caught it because nothing here loads the manifest.
`install-smoke` is the only workflow that does `uses: ./`, and it runs on
`workflow_call` and `workflow_dispatch`, so the manifest was first
exercised by whoever depended on it. CI now checks out and uses the
action on every change, with findings and unused markers not failing the
job: what is being proved is that the manifest loads, the install works,
and the scan runs.

Same argument the publish dry run already makes, applied to the other
file no cargo command reads.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01361quprG7tUgaVFKAmKtJZ
The manifest fix above is only useful once it is released, since the
point of the release is that consumers can stop tracking `main`. The
`Unreleased` section becomes 0.1.2 as it stands: the install failures
that motivated all of this, plus the site, the rule manifest, and the
documentation that had drifted.

The README's examples move to `@v0.1.2`. They already recommended
pinning; they were recommending a version that predates every fix in
this entry.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01361quprG7tUgaVFKAmKtJZ
@zmaril zmaril changed the title Stop the token documentation from breaking the manifest Fix the manifest, and release 0.1.2 Aug 25, 2026
It carries the crate version, so a version bump makes it stale.
@zmaril
zmaril merged commit 6ba24d4 into main Aug 25, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant