Rule: when Q-lock authoring (or any TT-scoped substrate-producing batch) needs to search for previous/existing research, the canonical sequence lives at ~/testatetech/docs-strategy/docs/superpowers/specs/2026-04-29-multi-phase-audit/substrate-search-locations.md. Do NOT re-derive the sequence from refined-directive L7 inline; do NOT consolidate the sequence into a different file; do NOT inline the sequence into a cascade-Q file.

Why:

  1. Compaction resistance — refined-directive L7 was previously a 300-word inline source list. Authoring history shows large inline blocks in dense process docs get silently lost during concurrent-rebase autostash-pop (BATCH ν″ EMBEDDING-MATERIAL-GAP precedent 2026-05-20T22:00 BST commit 2779a74). Separating the list into its own file with its own commit history makes the loss surface a 0-byte file rather than a silent regression.
  2. Independent versioning — the locations list evolves at a different cadence than the directive’s L1-L7 process disciplines. Each new spike artefact / each new T-file batch / each new in-scope repo can add a location. Co-edit pressure on a single dense file is operationally hazardous.
  3. Periodic-review-friendly — the file’s frontmatter carries review_cadence: + review_triggers: + last_reviewed: + review_log: fields. Rich periodically asks “review the substrate search locations list”; the file’s review_log captures every review with date + reviewer + trigger + outcome.
  4. Rejected-list forensic value — the file’s §3 captures rejected locations + reasons (permanently rejected + conditionally rejected with “becomes relevant if X” conditions). This prevents future-Claude re-investigating already-rejected paths (e.g., re-checking code-ll/ for legal citations when empirical 2026-05-21 grep returned zero hits).

How to apply:

  • At session start (any TT-scoped session touching arch-state §15 or cascade-Q files): read substrate-search-locations.md BEFORE the first substrate sweep. The file’s read_before: frontmatter declares this discipline.
  • At Q-lock substrate-sweep step 6: walk the 15 internal steps in order; capture which steps fired + what was found in CASCADE-Q-TEMPLATE.md §B.0 internal_substrate_checked: block.
  • At external-source fetch (step 16): capture both verified_via: chain AND watch_for_updates_at: field per the two-field shape codified in [[feedback_substrate_acceptance_verify_plus_watch]].
  • When Rich asks “review the substrate search locations list”: read the file’s review_log: + check review_triggers: against current state + report drift + propose updates.
  • When tempted to consolidate this file’s content into refined-directive OR a cascade-Q file: STOP — the maturity: load-bearing-for-q-lock-authoring frontmatter flag signals that consolidation would break the discipline.

Anti-patterns to avoid:

  • Embedding the 15-step list inline in any Q-lock authoring output (creates drift between files).
  • Treating the list as static — review_triggers fire often when the project is active (new T-file batches every 1-2 weeks during Phase-3).
  • Skipping the periodic-review when Rich asks (the review is cheap; ~5 min; catches drift).
  • Searching only steps 1-4 (project-internal) and skipping 5-15 (which contain the bulk of pre-Phase-3 research substrate).

Routing: auto-load via MEMORY.md index. Companion to feedback_check_t_files_first_for_any_inherit_v2_work (READ-time T-files-first; predates this file; this file extends T-files-first to FULL 15-step internal-first discipline) + feedback_research_artefact_forward_traceability (forward-traceability discipline; same family) + feedback_substrate_acceptance_verify_plus_watch (verify+watch two-field shape; sibling discipline).