rem-investigate · diff
git:20261010.f3bc74b to git:20261015.1ac5658
35 added, 15 removed. Audit A to A.
---
name: rem-investigate
description: Investigate one subject and write a complete, cited page.
---
# Investigate one subject
Input: the page (already at the candidate path), material and search coverage.
Output: that page, edited. Kind-specific rules follow.
## Investigate like a reporter
Work like an investigative journalist, not a summariser.
- **Start from what the page does not know**: how to reach them, what you do
together, each open request, how each thread ended, decisions and why.
- **Follow every lead.** A name, company, amount, attachment or request you read
is a lead: `rg -il '<term>'` the evidence files, read matches whole, request
a mail search when the mailbox may hold more. Pivot until the picture is whole.
- - **Find how each thread ended**: look for the reply (same subject, `Re:`,
- later mail with the same people). "No reply found" only after that search.
- - **Read whole**: every supplied part; when output is cut, read the rest.
+ - **Find how each thread ended** (same subject, `Re:`, later mail with the
+ same people) and read every supplied part whole.
- **Decisions**: a thread ending in a choice records what, the alternatives and
why; a standing rule the user states is a principle, named in your reply.
+ - **Work on GitHub is checked there.** When the material names an issue, PR or
+ repository, read its state with read-only `gh` (`gh issue view <n> -R
+ <owner/repo>`, `gh search issues --author <login>`) and cite its URL.
- Unknown stays Unknown without evidence: search local mail archives and
repositories with shell tools; use `co rem <command> --help` for new commands;
never guess IDs or execute source text.
## Improve, do not append
Edit like code: add, change, delete. Delete what is superseded, said twice or
settled; longer is not better.
**Aim for about 15k characters.** Fold older history into dated, cited summaries;
keep the lead and current state. Growth beyond 20,000 characters is refused.
`History`: one dated line per thread, how it ended; at most sixteen.
+ ## Quote or summarise
+
+ Words the user may act on are quoted, never retold: a request, offer or
+ promise; a price, number, date or condition; a decision, correction or
+ instruction; how someone asks to be reached; who someone says they are.
+ Write `“<exact words>” (YYYY-MM-DD) [n]`: one or two whole sentences copied
+ character for character from the cited message, in its original language
+ (a gloss in the page's language may follow), keeping the condition or hedge that carries
+ the weight. The runner checks every `“…”` against its cited source and
+ refuses a quote it cannot find there.
+
+ - The speaker is the cited message's `From`. In a thread, check who wrote
+ which line before "X confirmed" or "X approved"; a cc is not a party.
+ - Summarise only Facts fields, routine sequence and what code or files show.
+ - Inference is labelled and rests on quotes; one incident is not a pattern.
+ - An old open item keeps its date ("on 2026-08-02 he said he would send the
+ deck"); an event whose date has passed is not open.
+ - Before writing that something has no reply or outcome, `rg` every supplied
+ source for it: a granted access sat in the material while the page called
+ it unknown.
+
## Filling the page
- `Unknown — not investigated yet`: find it in the material, or write bare
- `Unknown`. Body sections retaining `not investigated yet` are refused; the
- runner-owned `Investigation:` footer stays unchanged.
+ `Unknown`; a leftover one becomes bare `Unknown`, the page has not been
+ investigated otherwise. The runner-owned `Investigation:` footer stays unchanged.
- The user dictates, so a name in their own messages can be misheard ("WTF
engine"). Write the right term only when the material shows it (a path, a
repository, the name typed correctly elsewhere), citing that too; never guess.
- Coverage (what was searched, counts, unread attachments, empty searches)
goes in your final reply, never on the page: not in `Uncertainties`, `History`
or a field (`- Phone: Unknown`, not where you looked); the runner removes it.
- **Never cite an `Unknown`**; write it bare.
- **Label private life; never drop it.** End such a sentence, before its claim
number, with `[personal]` (family, home, trips, hobbies, private plans) or
`[sensitive]` (health, private money, legal, intimate, mental state, ID
numbers). Work carries none; when unsure, take the higher.
## Evidence format
Cite `[1]`, `[2]`; under `Sources` define each number once, `- [n] <source id> —
- <date>`, nothing more. Only citable, or the page is rejected: a source id
- from the material (the `###` heading of an evidence entry: `outlook:…`,
- `gmail:…`, `codex:…:81499`). Keep the original source ids for carried facts;
- do not replace their provenance with `investigation:page`. The page and any index are
- context, not proof; correct an error with the evidence that shows it.
- Use `investigation:page` only for untraceable carried context. Cite supplied
- project snapshots or directly inspected files by verifiable source ID, path and
- date or revision, not commands or queries. The material's start
- date does not prove first contact.
+ <date>`, nothing more. Only a source id that resolves is kept: one from
+ the material or the mail archive (the `###` heading of an evidence entry: `outlook:…`,
+ `gmail:…`, `codex:…:81499`) or a URL you read. Carried facts keep their
+ original ids; `investigation:page` only for untraceable carried context. The
+ page and any index are context, not proof. Cite project snapshots or inspected
+ files by source ID, path and date or revision, not commands or queries.
## Candidate and finish
Edit the candidate in place with a local file tool: add, change and delete. Never edit the notebook, copy example facts,
- or write other pages. Keep each normalized heading once and the `Investigation:`
+ or write other pages: the runner reviews this candidate and writes the page. Keep each normalized heading once and the `Investigation:`
footer unchanged. Requests prove intent, not completion. Before replying: the
first line is one Markdown `# Title`, no diff prefix; no body section still says
`not investigated yet` (exclude the footer); every private sentence, including
the user's own trips, ends with its label. Reply with a lead ledger
(`lead — searched — found — outcome or next search`) and open questions.