Find dead entries
Report map entries whose removal changes nothing, so layered files do not silt up with lines a template already implies.
Rendered from
docs/how-to/find-dead-entries.md
in the engine repository, where a correction belongs, and where the
test suite executes every example on this page.
Layered files silt up: an entry written before the template existed
now repeats what the template already says, and deleting it by eye is
a bet. aontu trim --check settles the bet by evaluation: each map
entry is deleted in turn, the document re-evaluated, and the entries
that made no difference are reported as paths. Write services.aon:
services: {
&: { tier: standard }
auth: { tier: standard, replicas: 3 }
billing: { replicas: 1 }
}
Now check it:
$ aontu trim --check services.aon
verdict: redundant
$.services.auth.tier
$ echo $?
1
auth.tier restates the &: template, so the document means the
same thing without it. The test is evaluate-and-compare, not pattern
matching, which covers everything the fixpoint can see: spread
templates, references, duplicate-key merges. (A removal that makes
the document error is not redundant: the document does not stand
up without that entry.)
Delete the dead line yourself (trim only reports) and re-declare
services.aon:
services: { &: { tier:standard } auth:replicas:3 billing:replicas:1 }
$ aontu trim --check services.aon
verdict: clean
$ echo $?
0
Exit 0 is clean and exit 1 is redundant, so the verb gates a
lint job as it stands; --format json gives the paths as a
redundant array. Two limits to know: list elements are never
candidates (removing one renumbers the rest, a different document
rather than a leaner one), and --check is required: a bare aontu trim that silently did something other than trimming would be worse
than refusing.
The candidate rules and the error verdict’s report shape are under
aontu trim. Run it beside your
schema gate when you validate in CI; when a
reported path surprises you, explain the value
to see which template is doing the implying.