overengineeringstudio / overengineeringstudio/effect-utils
ci-workflow: MEGAREPO_STORE/MEGAREPO_SKIP_MEMBERS printf emits trailing whitespace line into $GITHUB_ENV
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 82
- Forks
- 2
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 121
Description
The ci-workflow helper emits an invalid GITHUB_ENV trailer for MEGAREPO_STORE (and similarly MEGAREPO_SKIP_MEMBERS).
In genie/ci-workflow.ts around line 1149:
printf 'MEGAREPO_STORE=%s\n' "\$MEGAREPO_STORE" >> "\$GITHUB_ENV"
Because the script is embedded in a multi-line TS template literal and ultimately rendered into a YAML run: block, the \n in the JS source becomes an actual newline inside the printf format string. The rendered YAML then looks like:
printf 'MEGAREPO_STORE=%s
' "$MEGAREPO_STORE" >> "$GITHUB_ENV"
printf therefore writes MEGAREPO_STORE=<value>\n to \$GITHUB_ENV — a valid directive followed by an indentation-only line. GitHub Actions parses each non-empty line in \$GITHUB_ENV as an env directive; a whitespace-only trailer can cause Invalid format failures under stricter parsing or when the trailing spaces are preserved by a runner.
Fix
Use either:
- an unambiguous single-line assignment:
echo "MEGAREPO_STORE=\$MEGAREPO_STORE" >> "\$GITHUB_ENV"(matches the pattern used elsewhere in the same file, e.g. `PNPM_STORE_DIR`), or - escape the newline so printf — not JS — expands it:
printf 'MEGAREPO_STORE=%s\\n' ...
The same pattern applies to the MEGAREPO_SKIP_MEMBERS printf a few lines below.
Context
Flagged by a Codex review on schickling/dotfiles PR #621 (Forge Electron work). CI there is currently green, so the issue is latent in that workflow, but worth fixing upstream to keep \$GITHUB_ENV strictly well-formed.
Posted on behalf of @schickling
agent_name: 💨 cl2-mistagent_session_id: 51498441-542a-4ec3-b486-db9bbde795c0agent_tool: Claude Codeagent_tool_version: 2.1.118 (Claude Code)agent_runtime: Claude Code 2.1.118 (Claude Code)agent_model: unknownworktree: dotfiles/schickling/2026-04-10-forge-electronmachine: mbp2025
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.
Research direction
Open genie/ci-workflow.ts around line 1149 and inspect the nearby MEGAREPO_SKIP_MEMBERS printf. Check how the TypeScript template literal renders into the YAML run block, then ensure both GITHUB_ENV assignments remain single-line directives without trailing whitespace. Verify the generated workflow contains well-formed environment entries.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- ci-cd
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100