A page about a page, for the third time

The playground gate now exempts docs/audits/ · closes #3848 · 2026-08-31

The same shape, three times

hit onthe diffwhat the gate demanded
#3193a one-line README change from an outside contributora hand-authored interactive page
#3811three session explainer pages under docs/playgrounds/a fourth page, about the three
#3845one dated record under docs/audits/ plus a one-line upper bound in pyproject.tomlan interactive page for an evidence record

The toml was already exempt. The only file failing #3845 was the audit record, which is the written output of a decision, not feature work with something to demonstrate. That is the identical argument already written in the workflow next to the two entries above it.

Fail-closed stays

The list is deliberately fail-closed: a changed file matching nothing still
REQUIRES a playground, so a new user-facing directory is never silently exempted
just because the list predates it. This adds one path to the two that are
already there for the same reason. It does not loosen the default.

The exemption is for the record, never for what the record is about

An audit file riding along with a source change must STILL require a playground.
Otherwise "add a docs/audits/ file" becomes a way to launder any diff past a
REQUIRED gate.

Pinned in tests/ci/test-playground-gate-inertness.sh, which lifts the regex out
of the shipped workflow rather than copying it, so the test cannot drift away
from what CI actually runs:

  docs/audits/x.md                        -> required: no
  docs/audits/a.md + pyproject.toml       -> required: no   (the #3845 diff)
  docs/audits/a.md + src/hooks/.../foo.ts -> required: YES  (the laundering case)

23 passed, 0 failed.