config.mjs get __proto__ returns a silent success instead of unknown-key #220
Labels
No labels
already-shipped
bug
documentation
duplicate
enhancement
external-review
good first issue
help wanted
in progress
invalid
needs-decision
proposal
question
security
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: crenshawdev/cadence-archived#220
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Verified live 2026-08-18:
node cadence-core/bin/config.mjs get __proto__returns{"ok":true,"values":{},"source":"global+repo"}whileconfig.mjs get nosuchkeycorrectly returns unknown-key.The cause is the prototype-getter hazard on the one
config.mjsface CFG-01 did not narrow:wanted.filter((k) => !SCHEMA[k])readsSCHEMA["__proto__"]asObject.prototype, which is truthy, so the key is never reported unknown. Same class as thedeepMergehazard, one face further out.A silent success naming no key is the shape this seam exists to prevent: the caller cannot tell a typo from a key that resolved to nothing.
cadence-core/bin/config.mjs, thegetface.Closed by v3.5.5 (ARG-05, verified against the shipped tree).