saturation-sweep
"What hasn't the sweep reached yet?" - Horizontal iteration in waves over declared branching axes (who else, where else, when else, who benefits elsewhere), with a novelty ledger per wave and a measur
SKILL.mdresearch-toolkit/skills/saturation-sweep/SKILL.md
GitHubSaturation Sweep
Seed question: What hasn't the sweep reached yet?
Relentless self-reflexive dialectical thinking that questions its own premises.
Core Principle
Vertical investigation digs where the story is; horizontal investigation asks where else the story could be. Both are needed, but only the second can say when searching is DONE: saturation is a measurement (novelty per wave), not a feeling of completeness — the feeling arrives long before the coverage does.
The anti-pattern this counters:
❌ Searching until a coherent narrative forms, then stopping
❌ "I did several searches" with no record of which axes they covered
❌ Coverage claims that cannot name what was NOT reached
The pattern this enforces:
✅ Declare the branching axes BEFORE sweeping
✅ Sweep in waves; ledger the novelty of each wave
✅ Stop on the rule, not the feeling — and report where the sweep stayed thin
When This Applies
TRIGGER:
- The completeness question, asked or implied: "How do we know we're done?", "What are we missing?", "Have we covered everything?", "Is that the whole story?"
- An investigation has produced one coherent narrative and is about to close on it — the vertical story satisfies, but nobody has asked where else it could live.
- Coverage across actors, intermediaries, regions, jurisdictions, language-publics, or time periods matters as much as depth on any single thread.
- Designing or running a multi-agent sweep (waves of blind workers over branching axes).
- A claim of thoroughness needs to be auditable — a ledger someone else can check — not asserted from a feeling of having looked enough.
DO NOT TRIGGER:
- Single-fact lookups or quick answers (a definition, a date, a capital city) — no coverage question is in play.
- A vertical deep-dive on one already-found thread or one named document — that is
deep-investigation-protocol, not breadth. - Verifying a specific found claim rather than mapping breadth — that is
iterative-verification.
The Sweep
- Declare axes. Before wave 1, list the branching axes for THIS investigation. Standard set (extend, don't shrink): who-else (actors, intermediaries, beneficiaries) · where-else (regions, jurisdictions, language-publics) · when-else (earlier precedents, later echoes) · who-benefits-elsewhere (adjacent markets/policy areas). An axis declared and skipped must appear in the thin-slot; an axis never declared is invisible — that is why declaration comes first.
- Wave. One pass across all declared axes (queries or agents — see
assets/agent-prompts.mdfor the multi-agent recipe). New material is logged per axis. - Ledger. After each wave, fill one ledger row (format below). Novelty = new entities + new claims, as a share of the running total.
- Stop rule. Stop when a wave's novelty is under ~10%, OR two consecutive waves move no verdict in the per-claim table. Both conditions are measurements against the ledger — cite the rows when declaring saturation.
- Report the thin spots. Mandatory, honest: where did the sweep stay thin (axes shallowly covered, languages not searched, platforms unreachable), why, and what could hide there.
Novelty Ledger (format)
| Wave | Axes swept (queries/agents per axis) | New entities | New claims | Verdicts moved | Novelty % |
|---|
Mandatory Output Slots
| Slot | Contents | Invalid when |
|---|---|---|
| Axes declared | The branching axes, declared before wave 1 | Declared retroactively; or fewer than the standard set without a stated reason |
| Novelty ledger | One row per wave, all columns filled | Missing waves; novelty asserted without counts |
| Stop-rule verdict | Which stop condition fired, citing ledger rows | "Felt complete"; stopping without a fired condition and without saying so |
| Where the sweep stayed thin | Axes/languages/platforms under-covered, why, what could hide there | Empty; "nowhere"; only unreachable-by-anyone items listed |
Relationship to Verification
The sweep finds; it does not verify. Claims enter the investigation at the
tier the evidence supports, [RELAY]-tagged when they arrive through agent
summaries (Principle P1 (relayed-is-not-read)). Saturation of a false story is
saturation of a false story — run iterative-verification on what the sweep
returns.
Cross-References
- research hub — the profile's saturation threshold defaults to this stop rule; report template's Metadata & limits section consumes the thin-slot
- investigation-orchestrator agent — deploys waves as agent teams using
assets/agent-prompts.md - iterative-verification — verification of what the sweep returns
- ground-level-triangulation — the where-else axis specialized to language-publics with independent stakes
Vasana
A vasana is a pattern that persists across unrelated contexts. If during
this task you notice such a pattern emerging, it may be worth capturing.
This skill works best alongside the vasana skill and vasana hook
from the Vasana System plugin.
Modify freely. Keep this section intact.