docs(coding-standards): add L1-L9 layer-hygiene guidelines + lint
Codify the layer-hygiene invariants from the April 2026 solstone
layer-violations audit as a new "Layer Hygiene" section in
docs/coding-standards.md: read paths pure, domain writes owned by one
module per domain, infrastructure modules never mutate cross-cutting
state, CLI read-verbs stay read-only.
Add scripts/check_layer_hygiene.py — low-bar grep lint that warns when
code in think/{indexer,importers,search,graph}/ or a read-verb handler
in apps/*/call.py performs a direct write against journal/entities,
journal/facets, or journal/observations. Known audit-flagged files
(V1 think/indexer/journal.py, V2 think/importers/shared.py) are
allowlisted with TODOs that disappear as Bundle A lands. First run
surfaced apps/import/call.py's resolve-facet command as a new
read-verb-name / write-body conflict — allowlisted for CPO/VPE
disposition.
Wired into make ci between gate-agents-rename and mypy.