PR snapshot factory dispatches an npm_tag input it does not declare
Nobody has claimed this yet.
Assessment
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Newbie friendliness
- 88/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Quiet
- Tech stack
- github-actions, typescript
Research direction
Read genie/ci-workflow/pr-snapshot.ts around the scheduled-recovery dispatch near line 301 and dispatchInputs near line 806. Confirm how dispatchModeOption and the validator's npm-tag output are used, then verify the recovery command no longer sends an undeclared npm_tag input and that the existing consumer workaround is no longer needed.
Written by the indexing model from the issue text.
Description
Problem
genie/ci-workflow/pr-snapshot.ts has an internal inconsistency between what its scheduled-recovery step sends and what its dispatchInputs declares.
The recovery dispatch (line ~301) passes five inputs:
gh workflow run release.yml --repo "$GITHUB_REPOSITORY" --ref main \
-f mode=promote-pr-snapshot \
-f npm_tag=latest \
-f pr_number="$pr_number" \
-f head_sha="$head_sha" \
-f ci_run_id="$selected_run_id"
dispatchInputs (line ~806) declares only three: pr_number, head_sha, ci_run_id. (mode is contributed separately by each consumer, via dispatchModeOption.) npm_tag is declared nowhere in the factory.
GitHub rejects a workflow run that carries an undeclared input, so in a consumer that does not independently declare npm_tag, the scheduled retry — the path that re-dispatches an authorized but incomplete cohort — fails instead of recovering. That is precisely the path that exists to repair a partial or failed publication.
Why it has not been seen
livestorejs/livestore already declares npm_tag for its own release jobs (read as inputs.npm_tag by its publish steps), so the factory's dispatch happens to be accepted there. livestorejs/livestore-contrib has no such input, which is where this surfaced — via automated review on livestorejs/livestore-contrib#40.
Note the factory never reads npm_tag either: the publish tag comes from the validator's npm-tag output.
Suggested fix
Drop -f npm_tag=latest from the dispatch. It is unused by the factory's own jobs, and the tag is already carried by the validator output.
If some consumer genuinely needs it forwarded, the alternative is to add npm_tag to dispatchInputs so the declaration travels with the code that sends it — but the unused-argument reading seems more likely.
Workaround in place
livestore-contrib currently declares a npm_tag input purely to satisfy the dispatch contract, with a comment pointing at this issue so it can be removed once the factory is fixed.
- Dominant language
- TypeScript
- Stars
- 82
- Forks
- 2
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 121
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from overengineeringstudio/effect-utils
-
origin:agent system:genie type:chore
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
area:effect origin:agent type:chore
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
overengineeringstudio/effect-utils#748 · 1 comment ·
-
origin:agent type:agent-tooling
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
area:nix origin:agent type:agent-tooling type:bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
All issues in overengineeringstudio/effect-utils
Similar issues
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 76/100
-
code-quality refactoring
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
vercel/react-tweet#225 ·