Skip to content

Parse advertised YAML environment files with a YAML-capable loader instead of the dotenv-only parser #522

Description

@MicroMilo

Summary

The public run --env option advertises YAML files, but the action sends every supplied path to a dotenv-only loader. The exact frozen loader accepts the FOO=bar control while rejecting both the minimized YAML mapping FOO: bar and the repository's env-public.yaml fixture with a missing-'=' error, causing the command to exit before executing requests.

Validation source commit: 5f109383e0b03f6db46ab30938d1328943fb19d1.

Code path

  • packages/voiden-runner/src/index.ts:490-490: Role A: public Commander help declares that --env accepts a .env or .yaml file.
  • packages/voiden-runner/src/index.ts:41-55: Role B: loadEnvFile parses only KEY=VALUE lines and throws when a non-comment line lacks '='.
  • packages/voiden-runner/src/index.ts:525-537: Shared product path: the run action passes opts.env directly to loadEnvFile and exits on its error.
  • apps/electron/src/sample-project/env-public.yaml:1-3: Repository-owned YAML environment fixture rejected by the runner loader.
  • apps/electron/src/main/env.ts:198-220: Neighboring Electron product path demonstrates repository-owned YAML environment parsing through YAML.parse.

Steps to reproduce

This report is based on a source-control-flow validation against the commit above.

  1. Check out the source commit listed in this report.
  2. Inspect the code path and contract anchors listed above.
  3. Exercise the described boundary/state path: Parse advertised YAML environment files with a YAML-capable loader instead of the dotenv-only parser.
  4. Compare the observed behavior with the expected contract below.

Validation note: It executes the frozen loadEnvFile body after erasing only its two TypeScript annotations and verifies the declaration and call-site remain present. Replay exits 0 with claimPresent=true, callPathPresent=true, dotenvControl={FOO:'bar'}, minimalYaml.threw='Malformed line 1 in .env file: missing "="', repositorySampleYaml.threw with the same error, and contradictionReproduced=true.

Expected behavior

The implementation should preserve the repository contract described by the documentation, public type, parser, serializer, or sibling implementation anchors above.

Actual behavior

The public run --env option advertises YAML files, but the action sends every supplied path to a dotenv-only loader. The exact frozen loader accepts the FOO=bar control while rejecting both the minimized YAML mapping FOO: bar and the repository's env-public.yaml fixture with a missing-'=' error, causing the command to exit before executing requests.

Existing coverage

I did not find an existing issue or PR title that appears to cover this exact root cause in the pre-submission check.

Suggested fix

Runner YAML environment loading

Suggested tests

  • Add a regression test for: Parse advertised YAML environment files with a YAML-capable loader instead of the dotenv-only parser.
  • Include the boundary value or state transition described above so the old behavior fails before the fix.

Submitted with Codex.

Metadata

Metadata

Labels

bugSomething isn't workingup-for-grabsIdeal for new contributors.

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions