fix(config): parse structured config values - #64389
Conversation
8c9ea95 to
0ec6fff
Compare
|
Follow-up after independent review: The first review correctly identified three blockers: structured values could corrupt known scalar settings, YAML-native/recursive values could make env mirroring fail after the config write, and malformed unknown structures leaked parser exceptions. The pushed follow-up now:
Post-rebase verification: 219 targeted config/env tests passed, Ruff passed, and |
0ec6fff to
98583a1
Compare
|
Second independent-review follow-up is now pushed (head
Final post-update gate: 223 targeted config/env tests passed, Ruff passed, and |
|
Thanks for the focused config-boundary fix. Current main still stores flow-style list input as a string: Problems
Suggested changes
This is an automated hermes-sweeper review. |
SummaryThree PRs address the configuration-write side of #64323 by parsing structured values in Related pull requests
Duplicates#64399 and #64389 target the same Suggested consolidationKeep #64389 open with a salvage path: retain its validated config-boundary implementation and tests, and update Complex graphflowchart LR
classDef open fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a
classDef merged fill:#dcfce7,stroke:#15803d,color:#14532d
classDef closed fill:#e5e7eb,stroke:#6b7280,color:#1f2937
classDef unverified fill:#f3f4f6,stroke:#9ca3af,color:#374151
classDef best stroke-width:3px,stroke:#b45309
classDef target stroke-width:3px,stroke:#4338ca
I64323(["issue #64323 (open)"])
subgraph Dup64389 ["PRs duplicating each other"]
P64389["PR #64389 (open)"]
P64399["PR #64399 (open)"]
end
P64389 -->|best fix| I64323
class I64323 open
class P64389 open
class P64399 open
class P64389 best
class P64389 target
click I64323 "https://github.com/NousResearch/hermes-agent/issues/64323"
click P64389 "https://github.com/NousResearch/hermes-agent/pull/64389"
click P64399 "https://github.com/NousResearch/hermes-agent/pull/64399"
Graph: solid arrow = fixes / best fix, dashed arrow = partial or unverified (see edge label); boxed group = PRs duplicating each other; amber border = best fix; indigo border = target; gray node = closed (state tag in the node label). Cross-PR triage: Reviewed 3 pull requests and 1 issue in this complex. Each diff was read against this issue; Assessment working set: 28 kB of PR diffs, 6 kB of issue/PR text, 4 kB of discussion (7 comments), 5 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch. |
|
Resolved via PR #88163 (merged) — |
Summary
hermes config setvalues into real YAML lists instead of quoted stringsconfig.yamlor.envRoot cause
set_config_value()only coerced booleans and numbers. A command such as:therefore persisted a quoted YAML scalar rather than the documented list shape.
For
terminal.docker_volumes, the canonical terminal config-to-env bridge can recover a valid JSON array at runtime; this PR fixes the persisted type at the write boundary rather than relying on that downstream recovery path. It also validates the declared default type so structured input cannot corrupt scalar settings such asterminal.timeout.Verification
scripts/run_tests.sh tests/hermes_cli/test_config.py tests/hermes_cli/test_set_config_value.py tests/tools/test_terminal_config_env_sync.py -q— 223 passeduv run ruff check hermes_cli/config.py tests/hermes_cli/test_set_config_value.pygit diff --check upstream/main...HEADHERMES_HOMEvalues confirmed:listconfig.yamlis createdFixes #64323