fix: qualityGate.algorithms nested params no longer flagged as unknown keys - #389
Conversation
📦 Built Plugin ArtifactBranch: Option A — Install from npm PR tag (recommended)opencode plugin opencode-acp@pr-389 --globalEach push to this PR publishes a new version under the Option B — Install from GitHubopencode plugin "github:ranxianglei/opencode-acp#2026-09-11_qualitygate-algo-config-keys" --globalOption C — Download artifact
tar xzf opencode-acp-pr389.tgz
cp -r package/dist ~/.cache/opencode/packages/opencode-acp@latest/node_modules/opencode-acp/dist
This comment is automatically updated on each push. |
[bot] 🏷 Review of PR #389 (fixes #329) — ✅ approved, ready for human merge. Diff cleanliness (gate 1): clean. Single commit
(The QQ-group README/devlog files that show up in a naive three-dot diff against an older base were already merged via #386 — a stale merge-base artifact, not part of this PR.) Bug is real — reproduced. I ran the exact #329 repro config through both the pre-fix and post-fix key-walker:
Fix hits the root cause, not the symptom. It's a load-bearing config path (not dead config). Tests: 2 new, both meaningful (import from source, non-tautological):
Verification (ran locally on the PR tip): typecheck clean · config-validation 47/47 · full suite 1209/1209, 0 fail — matches the PR description exactly. Backward compat: purely additive to validation logic; no persisted-state format, exported-API, or internal-tag changes. Safe. Non-blocking notes:
No small fixes to apply directly — the diff is clean and correct as-is. Per policy I will not merge; please merge when ready. 中文摘要: 已验证该 bug 真实存在(用 #329 原始配置复现出被误报的 5 个键),修复把 |
…ests Review follow-up on #389: the REQ.md config sample and both new tests used non-existent keys (minSummaryLength / rougeF1Threshold). rouge-recall-v1 actually consumes layer1MinChars / layer1MinRetentionPct / layer2MaxRougeF1 / layer2MaxTop20Recall (see dcp.schema.json); unknown inner keys are silently ignored at runtime, so the old sample would configure params that never take effect. No logic change — validation fix untouched. config-validation 47/47, full suite 1209/1209, typecheck clean.
Fixes #329.
qualityGate.algorithms.<algoName>.<param>is legal config (consumed bylib/compress/quality-gate/evaluate.ts) butgetConfigKeyPathsrecursed into the dynamic map and every nested key failed the static allow-list → falseACP: config warning — Unknown keyson every startup.Fix: add
qualityGate.algorithmsto the recursion skip list, same convention ascompress.providers/messageFilters.filters(dynamic-key maps validated by their owning subsystem).Tests: 2 new (nested params clean; unknown siblings still flagged). Suite 1209/1209; typecheck clean.