# PLAN — floor-guard-xit-boundary (hotfix, logic fix → challenged) — r2 - r2 after 3 challengers (simplicity SOLID, correctness SOLID, robustness CONCERNS(2)): SKIP_IDENT_RE sits right under SKIP_SUBSTRINGS; the waiver instruction on the guard's own lines is gone (SKIP never scans lib/floor-guard.sh: no `test`/`spec` in its path); the new fixture echo lines in the TEST file carry `# floor-guard: allow flip-test fixture` OUTSIDE the echoed string (the test path contains `test`, so a later scan of that diff would flag the fixture itself); `def fit(` / `function xit(` / `xit.each(` stay unmatched or matched as before and are recorded as a `shortcut:` comment; fixtures extended to prove the whole alternation. - date: 2026-09-28 | contract: contracts/2026-09-28-floor-guard-xit-boundary-1648.md - branch: bugfix/floor-guard-xit-boundary | executor: hotfixer (sonnet) ## Root cause lib/floor-guard.sh:99-102 SKIP_SUBSTRINGS = ('.skip(', '.only(', 'xit(', 'xdescribe(', 'fit(', 'fdescribe(', 'it.todo(', '@pytest.mark.skip', '@unittest.skip', 't.Skip('); :188-189 `skip_kind(text)` = `any(p in text …)`. Plain substring: `xit(` ⊂ `exit(`, `SystemExit(`, `process.exit(`; `fit(` ⊂ `profit(`, `model.fit(`. Only test files are scanned for SKIP (line_findings, `if test_file:`), so the false positive hits inline python/JS helpers inside test files — the 2026-09-28 case: `sys.exit(1 if violations else 0)` in lib/tests/profile-census.test.sh (BLK-023). ## The exact edit (lib/floor-guard.sh) 1. SKIP_SUBSTRINGS keeps only the dotted/decorator forms: ('.skip(', '.only(', 'it.todo(', '@pytest.mark.skip', '@unittest.skip', 't.Skip('). 2. New `SKIP_IDENT_RE = re.compile(r'(? {});` (leading spaces on purpose); run; `check_kind SKIP_XIT_FLAGS "$rc" 2 "$out" 'FLOOR SKIP'`. Then two more repos in the same block proving the rest of the alternation: `fit('focused', () => {});` → `check_kind SKIP_FIT_FLAGS … 2 … 'FLOOR SKIP'`; `fdescribe('focused', () => {});` → `check_kind SKIP_FDESCRIBE_FLAGS … 2 … 'FLOOR SKIP'`. Header comment (:2-3) gains "plus boundary cases for SKIP" after "one CLEAN fixture". ## Not changed Messages, exit codes, waiver syntax, other kinds, test harness helpers.