Field Kit
Found nothing does not prove nothing exists
An empty search result is a statement about the scope that was searched, never a statement about what the project contains.
What happened
On 2026-09-02, an AI assistant searched the wrong file format, found no record, and reported that the record did not exist.
3 prompts, in order
- Audit an empty search result An assistant tells you a record, rule, or scope item does not exist.
- Search every format, not one A first search came back empty and you need real coverage before concluding.
- Gate scope claims behind a lookup You want the assistant to look facts up instead of reasoning about them.
1Audit an empty search result
- Run it when
- An assistant tells you a record, rule, or scope item does not exist.
- It asks you for
- The exact absence claim. The searches that produced it. The directories and extensions that hold records.
- You get back
- The claim split into a search fact and a project fact, plus a rewritten sentence that names its scope.
- It refuses if
- No search log exists, or the searched paths and extensions cannot be recovered.
<stance> The role here is retrieval auditor. A claim sits in front of you: some record, rule, or definition does not exist. That sentence hides more than it says. Part of it reports that a particular search returned nothing. Part of it asserts that the project holds no such record. Only the search report is checkable from a log. An empty result from the wrong file type looks identical to a confirmed absence, and that resemblance is where the error enters. You keep the statements apart before anything else happens. </stance> <inputs> 1. Paste the exact sentence that claims the thing does not exist. Wait for it. 2. Name every search or tool call that produced the empty result. Wait for it. 3. List the directories and file extensions that hold project records. Wait if the user does not know. Do not proceed on a missing answer. Ask again and stop. </inputs> <method> 1. Restate the claim word for word. Label it as the output of a search. 2. List each search that ran. Record its path, its pattern, and the file types it touched. 3. Compare that list against the directories and extensions the user named. Mark every gap. 4. If a gap exists, the claim covers only the searched set. Say that in one line. 5. Rewrite the sentence so it names its own scope. Use the form: this search over these paths returned no match. 6. If the searched scope cannot be recovered, stop. Report that the absence stands unverified. 7. Name the single retrieval that would settle the question. Keep it to one step. </method> <deliver> - Claim as written - Scope the search actually covered - What the search does not rule out - Rewritten, scoped claim - The one retrieval that settles it </deliver> <refuse> Do not turn an empty result into a statement about the project. Do not guess which file holds the record. Ask for the layout instead. Do not treat your own recollection of the codebase as a search. Do not soften the gap with words like probably or likely. Stop and say the absence is unverified when no search log exists. Stop when the file extensions searched are unknown. </refuse>
2Search every format, not one
- Run it when
- A first search came back empty and you need real coverage before concluding.
- It asks you for
- The record store layout from configuration or a manifest. The list of directories to cover.
- You get back
- A coverage table of directory and extension pairs with hit counts, plus any unreadable locations.
- It refuses if
- The authoritative record locations are unconfirmed, or a location cannot be read.
<stance> The role is exhaustive retrieval operator. Project facts live in files. Files decide, memory does not. A wrong extension turns a complete answer into an empty one, and the empty one carries no warning label. The operator enumerates storage first and searches second. Coverage travels with every result, including the zero results. </stance> <inputs> 1. Name the directories that hold registry files and decision records. Wait for the answer. 2. Point to the configuration or manifest that defines those locations. Wait if it exists. 3. State the exact record, rule, or definition being looked for. Wait for it. Do not substitute an assumption for any of these. Ask again. </inputs> <method> 1. Read the record locations from the configuration or manifest. Do not list them from recall. 2. Enumerate every file extension present under those directories. Print the extension list. 3. Search the content of each directory once per extension. Keep one result set for each pair. 4. Record a hit count for every directory and extension pair. Keep zero counts in the table. 5. Flag any directory or file the search tool could not read. An unreadable location is not an empty one. 6. If the record appears, quote it with its file path and line number. 7. If every readable pair returns zero, state the coverage first. Then state the conclusion as scoped to that coverage. 8. If the extension list cannot be enumerated, stop. Report that coverage is unknown. </method> <deliver> - Record locations and their source of truth - Extension list found under those locations - Coverage table with hit counts per pair - Unreadable or skipped locations - Scoped conclusion, with quoted hits if any </deliver> <refuse> Do not stop after one file format. Do not report absence while any location stays unreadable. Do not fill a gap in the extension list with a guess. Do not answer from your model of how such projects are usually laid out. Stop and say so when the record locations are unconfirmed. Stop when the search tool errors on a directory you were asked to cover. Report the error instead of a zero. </refuse>
3Gate scope claims behind a lookup
- Run it when
- You want the assistant to look facts up instead of reasoning about them.
- It asks you for
- The confirmed paths of registry and decision-record files. The claim types that need gating.
- You get back
- A rule the assistant must follow, a refusal clause in its voice, and two test outputs.
- It refuses if
- The authoritative file set is listed from guesswork rather than confirmed paths.
<stance> The role is policy author for an assistant that answers questions about project scope, product definitions, and business rules. Those facts are stored data. They are not something to work out from context. A rule that merely encourages checking gets skipped under time pressure, so this rule has to refuse. Short version: no lookup, no answer. The policy you write also governs how empty results get phrased. </stance> <inputs> 1. List the confirmed paths of the registry and decision-record files. Wait for them. 2. Name the kinds of statements that must be gated. Wait for the list. 3. Say where the assistant's rule file lives. Wait for the path. Do not invent a path. Ask again if any answer is missing. </inputs> <method> 1. Collect the authoritative file set. Write each confirmed path on its own line. 2. Write the trigger list. Include statements about scope, product definitions, and business rules. 3. Write the required action. A search across the whole authoritative set runs before any triggered statement. 4. Write the refusal clause in the assistant's own voice. It declines to answer when that search did not run. 5. Add the phrasing rule. Every empty result names the paths and extensions it covered. 6. Ban absolute wording. The assistant may not write that something does not exist without naming its search scope. 7. Test the rule with two questions. One has a record behind it. One does not. 8. Read both outputs. Confirm each names its search scope. If either does not, tighten the wording and test again. </method> <deliver> - Authoritative file set, by path - Trigger list for gated statements - Required lookup, written as a rule - Refusal clause in the assistant's voice - Two test outputs with their scope lines </deliver> <refuse> Do not write a rule that only recommends a search. Write one that blocks the answer. Do not populate the authoritative file set from inference about naming conventions. Do not approve a rule whose test output asserts absence without a scope line. Stop and say so when the record paths are unconfirmed. Stop when the rule file location is unknown. Report what is missing rather than drafting against a placeholder path. </refuse>
How you know it worked
Ask the assistant to list every directory and file extension its search covered. Open one real record file. Confirm its extension appears on that list.