# Current boundaries

- Core input is JSON values. TOML is parsed by the optional Python 3.11+ host adapter (`scripts/files.py`); TOML date/time values cannot be represented by the JSON adapter and are rejected.
- Secret fields and secret environment variable names must be designated explicitly: by path (`sensitive`), by exact key name anywhere in the tree (`sensitive_keys`, case-sensitive) or by environment variable name (`secret_env`). Anything not designated is treated as ordinary data. A reference to a container is masked as a whole only when the container actually holds a designated or tainted path.
- Default output is redacted; `reveal=true` explicitly returns plaintext in `config` and in `export` text. The redacted report is always included alongside.
- Diff compares redacted values. A change between two hidden secrets is invisible as a value change; it is reported as a `masked_override` only when the origin chains differ.
- Origins record applied layer history, including replaced historical paths, and `shadowed` records which layer each override replaced. Both name layers (and optional source labels); neither retains the historical values themselves.
- Array merge strategies (`replace`, `append`, `unique`) apply per request by default and can be assigned per exact JSON Pointer path; there is no prefix or wildcard matching, and elements inside arrays are compared as whole values.
- Constraints are fixed to `required`, `type`, `enum`, `pattern`, `min_length`, `max_length`, `min` and `max`; there is no expression language and no schema standard implementation. Constraint checking reports the first violated clause per constraint. Patterns use the toolchain's regex dialect: explicit or POSIX character classes (ASCII) rather than `\d`/`\w` shorthands, unanchored search semantics. Lengths count UTF-16 code units of strings or elements of arrays.
- Interpolation supports `${env:NAME}` and `${config:/json/pointer}`, each optionally with a `:-literal` fallback that applies only when the target is absent. There is no escape sequence for a literal `${`, no expression evaluation, no formatting of embedded structured values (a whole-string reference is the way to copy a container), and no remote configuration source.
- Nesting is limited to 128 levels and interpolation depth to 128. A single CLI request is limited to 16 MiB of UTF-8 input.
- Canonical key order is UTF-16 code unit order, which differs from code point order for supplementary-plane characters.
- Numeric values are finite doubles; the JSON adapter rejects NaN and infinity.
- dotenv export derives keys from pointers (ASCII letters and digits kept, everything else becomes `_`), so distinct pointers can collide and are then rejected; values are bare only when they contain no whitespace, quotes, `#` or `=`. Non-string leaves are written in JSON form.
- `infer` observes the resolved configuration after each layer prefix; paths masked in any observation are skipped entirely, so no secret value appears in an inferred enum or bound, and mixed-type observations drop the type clause instead of guessing.
