This document explains the practical logging and cache boundary used by the runtime-governance checks.
.runtime-cache/logs.services/**/.runtime-cache/logs are drift;
repo-owned writers must resolve back to the root .runtime-cache/logs/**
contract instead of keeping nested runtime log trees alive..runtime-cache.node_modules directory..runtime-cache/container-runs
and are treated as scratch, not as long-lived evidence..runtime-cache/pnpm-install-safe.* are
unmanaged drift, not legitimate steady-state cache roots.${XDG_CACHE_HOME:-$HOME/.cache}/uiq/node-modules${XDG_CACHE_HOME:-$HOME/.cache}/uiq/python-env${HOME}/Library/Caches/ms-playwright${XDG_CACHE_HOME:-$HOME/.cache}/uv${XDG_CACHE_HOME:-$HOME/.cache}/node/corepack${HOME}/.npm/_cacache${HOME}/.dockerevidence_keep surfaces are not routine-GC targets.runtime_state surfaces need active-use validation before cleanup.disposable_generated and scratch are the default runtime-GC candidates../scripts/runtime-gc.sh --scope automation only targets pytest-*
leftovers under .runtime-cache/automation; it does not touch ledgers,
databases, or universal-platform runtime state../scripts/cleanup-runtime.sh refuses direct cleanup of runtime_state and
evidence_keep directories.__pycache__, .pyc, .coverage*, .mutmut-cache, and mutants
should not remain in governed workspace source trees as steady-state
artifacts..runtime-cache/reports/mutation/...,
temporary mutation workspaces belong under .runtime-cache/temp/mutation-workspaces/...,
and coverage belongs under .runtime-cache/coverage/...; none of these
should remain inside services/api source paths.