---
key: testing.e2e-local-fresh-config-dir
title: 2026-07-21 — Run `scripts/e2e-local.sh` against a FRESH config dir; a reused one hangs the readiness probe (#542)
status: active
since: '2026-07-21'
supersedes: none
superseded-by: none
rule: 'Always point `scripts/e2e-local.sh` at a fresh config dir — leftover channels/schedules/DB rows bleed state between runs and corrupt assertions. (The *readiness-probe hang* this record was originally written about was fixed in #533; the fresh-dir rule stands on state-bleed grounds alone.)'
signals: 'fresh config dir · state bleed between e2e runs · `READY_REGEX` · `Done migrating search index` · `Search index is already version` · readiness probe · e2e-local hang (historical, fixed #533) · paths: `scripts/e2e-local.sh`, `docs/e2e-local.md` · issues: #542, #533, #502, #524'
mechanics: 'Since #533 the script greps a `READY_REGEX` **alternation** over both ready lines, so a reused dir no longer hangs. `scripts/e2e-ui.sh` additionally *requires* a fresh dir, because its first spec asserts the one-shot Setup gate.'
---

⚠️ **The heading is historical** — as of #533 a reused dir no longer hangs the probe; read the Rule,
not the heading. **Amended rather than superseded**, for two reasons: the operative Rule never reversed
(only its rationale moved from "the probe hangs" to "state bleed"), and this `key:` is cited from
`docs/handoffs/chicorytv-issue-queue.md` and two `docs/superpowers/` files — superseding would aim those
at an archived, stale-labelled record instead of live guidance. (Note the heading being unrenameable is
*not* an argument for amending: a supersession relocates to `archive/` with its heading intact — see
`archive/api.md`. The two are independent.)

Originally: the probe waited for `Done migrating search index`, which only a **fresh** config emits; a
reused one logs `Search index is already version {Version}`, so the line never arrived, the probe timed
out after 120s, and the script killed a healthy server — reading as a broken build. Surfaced in #502 and
recovered from the old tracker by the #524 triage.

**#533 fixed the mechanism, not the guidance.** The probe now matches either line (the handler's
`if`/`else` is exhaustive). The original advice survives for a *different* reason — a reused dir still
bleeds state — and `scripts/e2e-ui.sh` (#445, `ci.ui-e2e-harness`) hard-requires a fresh one, since a
claimed local admin makes its Setup-gate spec unreachable.
