'.enabled // true' is commonly read as 'use the value if the key exists, otherwise default to true'. The operator actually produces the left side's outputs that are neither false nor null, and falls back to the right side only if there are none. An explicit false in the data is therefore replaced by the default, which silently inverts a feature flag.
Reproduce with 'echo {"enabled":false} | jq ".enabled // true"', which prints true.
When the distinction matters, test for presence instead: 'if has("enabled") then .enabled else true end', which is exact, or 'has("enabled") // ...' patterns built on has and the object. For nested paths, 'getpath(["a","b"])' returns null for a missing path without erroring and lets you handle it explicitly.
The same operator is also the idiomatic way to suppress errors, since it catches an error on the left side and yields the right side, which means '// "default"' quietly swallows a genuine type error such as indexing a string. Prefer 'try ... catch' when you want to see failures rather than mask them.