One is swept by a cron. The other is protected by name. Putting a standing analysis in the first is how it disappears.
scripts/prune-playgrounds.sh for d in docs/*--*/ <- the `--` IS the selector KEEP_SET="audits site playgrounds templates stubs …" prunable if NO origin branch matches the slug
A dir named <type>--<slug> with no matching branch on origin reads as "its PR merged and the branch was deleted." That is the whole prune predicate. Naming a standing document that way tells the sweeper it is garbage.
| Path | Fate | |
|---|---|---|
| from | docs/plan--v10-remaining/plan-viz.html | matches *--*, not in KEEP_SET, no origin branch → prunable |
| to | docs/playgrounds/v10-remaining-work-2026-08-14.html | no --, parent in KEEP_SET, never walked by the pruner |
Three independent reasons it is now safe, not one.
This file exists only because the PR Playground gate is fail-closed and docs/playgrounds/*.html is not on its INERT list. So committing a durable playground requires authoring an ephemeral one, which the pruner will later delete. That is the gate working as written, not a bug being smuggled past — but it is worth knowing that "add a doc" and "add a doc plus a disposable doc about adding the doc" are currently the same operation.