Skip to content

fix(support): respect dotenv precedence and strip inline comments in read_env_value - #5873

Closed
vaibhavsrv wants to merge 1 commit into
Osmantic:public-betafrom
vaibhavsrv:fix/support-bundle-env-precedence
Closed

vaibhavsrv wants to merge 1 commit into
Osmantic:public-betafrom
vaibhavsrv:fix/support-bundle-env-precedence

Conversation

@vaibhavsrv

Copy link
Copy Markdown
Contributor

Why this matters

The diagnostics support bundle script (scripts/ods-support-bundle.sh) extracts configuration parameters such as GPU_BACKEND, TIER, and ODS_MODE from the local .env using an embedded Python helper read_env_value(). However, the helper's parser halts on the first line matching the target variable name (break), which breaks standard POSIX and Docker Compose precedence where later assignments in .env override earlier defaults. When an operator appends custom overrides or when templated files carry defaults earlier in the file, read_env_value selects the obsolete baseline value. Furthermore, read_env_value() previously stripped quotes indiscriminately via .strip('"').strip("'") without trimming inline comments (# ...), causing annotated lines such as GPU_BACKEND=rocm # AMD ROCm to resolve as "rocm # AMD ROCm", which fails pattern matching in subsequent diagnostic branches.

This change updates read_env_value() to scan all lines so that the final key assignment takes precedence, symmetrically strips matching quotes, and cuts unquoted comments at #. Missing keys continue to fall back cleanly to the declared default.

Validation

  • Tested against baseline reproduction: an environment containing an initial default GPU_BACKEND=cpu followed by an override GPU_BACKEND=rocm # AMD ROCm accelerator and quoted TIER="2" # production tier override. On unpatched code, GPU_BACKEND resolved as cpu and TIER retained trailing comments.
  • Post-fix behavior: read_env_value correctly returns rocm and 2, and the generated validation/compose-flags.txt artifact in the support archive captures the active runtime configuration without leaking comment text.
  • Telemetry statement: "Support bundle test suite: 12 passed. ShellCheck and diff checks pass; new regression test_support_bundle_env_precedence.py wired into Linux CI."

Overlap check

Risk / AI disclosure

AI-assisted investigation, implementation, and CLI regressions. This strengthens diagnostic configuration discovery; no runtime daemon admission, compose generation, or live configuration is modified. Independent human review and platform/runtime qualification remain gates. No running configuration, deployment or upstream merge changed.

Follow-up integration evidence

Composed with #5867 at 330e1a77dafdb5886e79bb92230ea297277b6b00 without conflicts. Production and test diffs passed together; adjacent support bundle timeout and log scoping checks remain intact.
Backlog composition was local-only (production/test diffs, excluding workflow/Makefile wiring); it is not an upstream merge or independent human approval. Declared live-review gates remain open.

@Lightheartdevs

Copy link
Copy Markdown
Collaborator

Thanks for this contribution. public-beta was promoted into main on 2026-09-24 and no longer receives changes, so we're closing pull requests that target it. This isn't a judgment on the change itself. If it's still needed, please rebase onto main and open a focused PR. See #7253 for details and the contribution policy.

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.

2 participants