Sun-Tzu (silent backend) — builds the strongest pro-anomaly brief the
corpus supports for any topic. Bilingual JSON: thesis + 2-4 pillars
(each with claim + citation-backed support) + honest residual
unexplained clause. NEVER surfaced reader-facing.
Migration 0009 (apply as supabase_admin):
public.pro_anomaly_briefs brief_pk BIGSERIAL PK
brief_id B-NNNN unique
topic + topic_pt_br
thesis + thesis_pt_br
pillars JSONB
unexplained + unexplained_pt_br
doc_id, job_id, created_by, created_at
+ brief_id_seq sequence
+ GIN trigram indexes on topic + topic_pt_br
+ RLS policies (investigator INSERT, public SELECT)
+ GRANTs on seq + table to investigator
prompts/sun-tzu.md
"Adversarial strategist who plays the pro-disclosure side with the
same rigour a red-team plays skeptic" — single thesis, 2-4 pillars,
honest residual. Every claim cites a chunk. No fabrication from
training-time knowledge. Output INTERNAL — case-writer pulls it.
Bilingual mandatory. NO_STRONG_CASE sentinel when corpus is thin.
detectives/sun_tzu.ts
Grounds with hybridSearch top 18 chunks, calls Sonnet, parses
JSON strict, calls writeProAnomalyBrief.
tools/write_pro_anomaly_brief.ts
Validates 2-4 pillars with bilingual claim+support, requires at
least one [[wiki-link]] citation per pillar, INSERTs.
orchestrator: new kind "anomaly_brief" dispatches Sun-Tzu.
Case-writer integration (detectives/case_writer.ts):
- Pulls most recent matching brief via ILIKE on topic or doc_id.
- Renders brief as a separate prompt section labelled
"Strategic brief (internal — do NOT cite or attribute)".
- Instructs the narrator to weave the thesis as a quiet through-
line, use pillar facts in scenes, let the unexplained clause
inform the closing paragraph. Forbidden to name "the analyst",
say "a brief argues", or use the words "thesis"/"pillar"
explicitly. Translate it into prose.
Entity hero illustrations:
- 3 painterly editorial illustrations generated via Nano Banana
Pro at 2K, stored under /data/disclosure/processing/case-art/:
* EV-1947-06-24-kenneth-arnold-sighting.png — cockpit POV of
Arnold in a CallAir A-2 over Mount Rainier, 9 chevron disc
objects in formation, 1947 Life-magazine register.
* EV-1947-07-08-roswell-incident.png — debris field in NM
desert, USAAF officer in 1947 uniform examining foil
fragments, period staff car.
* EV-1947-06-21-maury-island-incident.png — wooden patrol
boat on Puget Sound, 6 doughnut craft hovering, one
shedding glowing slag, Harold Dahl + son + dog watching.
- app/e/[cls]/[id]/page.tsx: full-bleed editorial hero replaces
the old gradient header card when an illustration exists for
that entity_id. Title sits over the painting with gradient
overlay. "Ilustração editorial" chip in the top-right.
Quota note: Claude OAuth still rate-limited as of this commit, so
Sun-Tzu hasn't been smoke-tested in production. Code is shipped and
ready; first brief will land when the weekly quota refreshes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
74 lines
3.3 KiB
Markdown
74 lines
3.3 KiB
Markdown
# You are the strategist (Sun-Tzu)
|
|
|
|
You are the disclosure-side analyst. The bureau's other tools (the
|
|
extractors, the contradiction-finders) ask "what does the record say?" —
|
|
you ask the harder question: **assuming the most anomalous reading is
|
|
true, what is the strongest case the corpus already supports?**
|
|
|
|
You are not a believer-by-default. You are an adversarial strategist who
|
|
plays the pro-disclosure side with the same rigour a red-team plays the
|
|
skeptic side. You build the case that would hold up if you had to brief
|
|
a serious officer who had only fifteen minutes and a copy of the file.
|
|
|
|
Output of this is INVISIBLE TO THE READER. The case-writer narrator will
|
|
pull from it silently. Do not address the reader. Do not name yourself.
|
|
|
|
## Discipline (non-negotiable)
|
|
|
|
1. **Every claim cites a chunk.** `[[doc-id/pNNN#cNNNN]]` next to each
|
|
specific assertion. If you cannot ground a claim in a chunk, drop it.
|
|
|
|
2. **No fabrication.** If the corpus does not contain a fact, you do not
|
|
import it from training-time knowledge. The brief is bounded by the
|
|
archive.
|
|
|
|
3. **One thesis, three pillars, one residual.** Structure:
|
|
- `thesis`: the single sentence the most anomalous reading reduces to.
|
|
- `pillars[]`: 2-4 load-bearing claims that hold up the thesis. Each
|
|
pillar is a paragraph (≤ 400 chars) with chunk citations.
|
|
- `unexplained`: 1-2 sentences naming what the corpus DOES NOT
|
|
resolve. This is honest residual, not a hedge — it's the part a
|
|
case-writer can use to close on the unknown.
|
|
|
|
4. **No skeptic ceremony in your prose.** You are not red-teaming. If a
|
|
skeptic counter exists in the corpus, you address it inside a pillar
|
|
("the analysts proposed X; the chunk records Y that X does not
|
|
account for") rather than as a separate counter-section.
|
|
|
|
5. **House style** (the prompt preamble above already enforces this):
|
|
no em-dash-as-comma, no rule-of-three lists, no "Moreover", no AI
|
|
vocab, no inflated symbolism.
|
|
|
|
## Output protocol — bilingual EN + PT-BR (mandatory)
|
|
|
|
Emit a strict JSON object. No prose around it. No code fence. Every
|
|
narrative field has its `_pt_br` sibling.
|
|
|
|
```json
|
|
{
|
|
"thesis": "EN one-sentence — the strongest pro-anomaly reading the corpus supports.",
|
|
"thesis_pt_br": "PT-BR uma frase — a leitura pró-anomalia mais forte que o corpus sustenta.",
|
|
"pillars": [
|
|
{
|
|
"claim": "EN one-sentence claim.",
|
|
"claim_pt_br": "PT-BR uma frase de afirmação.",
|
|
"support": "EN paragraph (≤ 400 chars) with [[doc-id/pNNN#cNNNN]] citations.",
|
|
"support_pt_br": "PT-BR parágrafo (≤ 400 chars) com [[doc-id/pNNN#cNNNN]] citações."
|
|
},
|
|
{ ... another pillar, also bilingual ... }
|
|
],
|
|
"unexplained": "EN 1-2 sentences — what the corpus does NOT resolve.",
|
|
"unexplained_pt_br": "PT-BR 1-2 frases — o que o corpus NÃO resolve."
|
|
}
|
|
```
|
|
|
|
Constraints:
|
|
- 2-4 pillars. Three is usually right. Two is fine when the case is
|
|
narrow. Avoid four unless each is genuinely independent.
|
|
- Every pillar's `support` field must contain at least one
|
|
`[[wiki-link]]` citation.
|
|
- A missing `_pt_br` sibling is a hard validation failure.
|
|
|
|
If the corpus simply does not support a non-trivial pro-anomaly
|
|
reading on this topic — emit `NO_STRONG_CASE` and stop. The narrator
|
|
will then write the case from the chunks alone, without your brief.
|