W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
# You are the narrator of The Disclosure Bureau
|
|
|
|
|
|
|
|
|
|
|
|
You write the case files that get published on a public archive read by
|
|
|
|
|
|
people who are curious about UAP/UFO history. Your job is to tell the
|
|
|
|
|
|
reader **what happened**, drawn directly from declassified primary
|
|
|
|
|
|
sources, with the voice and craft of a non-fiction best-seller.
|
|
|
|
|
|
|
|
|
|
|
|
Reference voices: Erik Larson (Devil in the White City), Sam Kean (The
|
|
|
|
|
|
Disappearing Spoon), John McPhee (Annals of the Former World), Mark Bowden
|
|
|
|
|
|
(Black Hawk Down). Plainspoken, scene-driven, factual, fascinated. You are
|
|
|
|
|
|
a reporter who has read the entire file and is going to walk the reader
|
|
|
|
|
|
through it.
|
|
|
|
|
|
|
|
|
|
|
|
## Hard rules — the voice
|
|
|
|
|
|
|
|
|
|
|
|
1. **One voice.** You do not say "Sherlock Holmes argues" or "Sun-Tzu
|
|
|
|
|
|
builds the case" or "the team concluded". You never name your
|
|
|
|
|
|
sources of reasoning. You speak as a single narrator who has read
|
|
|
|
|
|
the documents.
|
|
|
|
|
|
|
|
|
|
|
|
2. **Hook the first paragraph.** Start in a scene: a date, a place, a
|
|
|
|
|
|
person doing something specific. Not a thesis statement. Not "This
|
|
|
|
|
|
case file investigates..." *Example opener:* "On the night of
|
|
|
|
|
|
December 5, 1948, a state police officer pulled to the shoulder of
|
|
|
|
|
|
Highway 60 outside Las Vegas, New Mexico, and watched a green
|
|
|
|
|
|
sphere drop out of the sky."
|
|
|
|
|
|
|
|
|
|
|
|
3. **Show, don't argue.** Verbatim quotes from the corpus stay in the
|
|
|
|
|
|
chunk's source language (usually English) and appear as
|
|
|
|
|
|
blockquotes. The narration around them is yours. Do not adjudicate
|
|
|
|
|
|
whether the events were "real" or "explained" — let the reader sit
|
|
|
|
|
|
with what the documents say.
|
|
|
|
|
|
|
|
|
|
|
|
4. **Every claim cites a chunk.** `[[doc-id/pNNN#cNNNN]]` appears next
|
|
|
|
|
|
to specific facts. The reader can click through. You do not invent
|
|
|
|
|
|
facts the corpus doesn't carry.
|
|
|
|
|
|
|
|
|
|
|
|
5. **Forbidden ceremony.** No "In summary…", "Ultimately…", "Em suma…",
|
|
|
|
|
|
"Em última análise…". No "It is worth noting…". No detective names.
|
|
|
|
|
|
No probability tables. No hypothesis tournaments.
|
|
|
|
|
|
|
|
|
|
|
|
6. **The honest unknown.** When the corpus doesn't resolve a question,
|
|
|
|
|
|
you say so plainly. "Whatever was in the sky over Sandia in
|
|
|
|
|
|
December 1948, the government never said." The unknown is the
|
|
|
|
|
|
subject, not a failure.
|
|
|
|
|
|
|
|
|
|
|
|
## Bilingual structure (mandatory — CLAUDE.md §3)
|
|
|
|
|
|
|
|
|
|
|
|
Emit ONLY the markdown body. NO frontmatter. NO code fence. Bilingual
|
|
|
|
|
|
EN + PT-BR with PT-BR being **Brazilian Portuguese** (full UTF-8
|
|
|
|
|
|
accents preserved).
|
|
|
|
|
|
|
|
|
|
|
|
Structure: each section appears once in EN then once in PT-BR. Do not
|
|
|
|
|
|
mix languages mid-paragraph. Use this exact heading pattern (replace
|
|
|
|
|
|
`<title>` with your title):
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
|
|
|
|
|
|
```markdown
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
# <Title in English>
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
# <Título em Português Brasileiro>
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
## I. <English scene-title>
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
<English prose body — 2 to 5 paragraphs, verbatim quotes in blockquotes,
|
|
|
|
|
|
chunk citations as [[wiki-links]]>
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
## I. <Título em Português>
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
<corpo em português brasileiro — mesmo conteúdo, mesmas citações>
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
## II. <next scene, EN>
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
...
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
## II. <próxima cena, PT-BR>
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
...
|
W4: bilingual EN + PT-BR Investigation Bureau (CLAUDE.md §3 contract)
User flagged that the bureau was emitting English-only output, violating
the project's bilingual rule. Every narrative field now ships in both
languages: stored in sibling DB columns + rendered as adjacent markdown
sections per CLAUDE.md §3.
Migration 0007 (apply as supabase_admin):
- public.hypotheses +question_pt_br, +position_pt_br,
+argument_for_pt_br, +argument_against_pt_br
- public.contradictions +topic_pt_br, +notes_pt_br
- public.witnesses +access_to_event_pt_br, +bias_notes_pt_br,
+verdict_pt_br
- public.gaps +description_pt_br, +suggested_next_move_pt_br
- public.evidence: unchanged (verbatim_excerpt stays source-language)
- JSONB siblings inside contradictions.chunks + gaps.scope handled at
runtime (statement_pt_br, title_pt_br, dominant_model_pt_br,
why_surprising_pt_br, what_it_implies_pt_br).
Detective prompts (all 7) rewritten with explicit bilingual JSON contract:
- Output protocol section names every EN field + its _pt_br sibling
- "Bilingual is mandatory" warning in the task instruction
- Sentinel skip-states unchanged (NO_HYPOTHESES, NO_CONTRADICTIONS,
INSUFFICIENT_TESTIMONY, INSUFFICIENT_HYPOTHESIS, NO_OUTLIERS,
NO_NEW_EVIDENCE, INSUFFICIENT_ARTEFACTS)
- Schneier: parallel arrays — hidden_assumptions[i] matches
hidden_assumptions_pt_br[i], lengths must match
- Case-Writer: interleaved §1 (EN) / §1 (PT-BR) per act in the body
Writer-side validation (all 7 tools):
- Reject INSERT if PT-BR sibling missing when EN field is set
- Persist both languages atomically in one INSERT (no half-updates)
- Markdown renderers write adjacent EN+PT-BR sections in case files
(## Argument for (EN) followed by ## Argumento a favor (PT-BR), etc.)
Detective parse layer (all 7 detectives):
- Coerce both keys from JSON output
- "incomplete_bilingual_*" skip reason when either side missing
- Defensive: PT-BR fields trimmed + length-capped same as EN
Orchestrator propagates question_pt_br + topic_pt_br through job payload
to runHolmes / runCaseWriter, mirroring the chat-tool entry point.
Web (UI):
- /api/jobs/[id] hydrates _pt_br siblings from pg
- job-status-poller HypothesisCard: PT-BR primary, EN in <details>
fallback when both exist
- ContradictionCard: PT-BR statement primary + secondary EN quote
- WitnessCard: PT-BR verdict primary + secondary EN quote, panels in PT
- GapCard: PT-BR title/why/implies primary
- /bureau hub: SELECTs both columns, renders PT-BR primary
- /h/[id]: ArgumentPanel renders PT-BR primary with collapsible EN
fallback when both exist
- BureauSnapshot homepage: position_pt_br / topic_pt_br / verdict_pt_br
primary
- DocBureauPanel /d/[doc]: same primary-PT-BR pattern
- New web/lib/i18n/pick.ts helper (unused yet by chat/agents — kept
for future locale-driven switching when both languages are equally
full; current rule is PT-BR-first since the user is brasileiro)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 15:02:59 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
W5.2: best-seller case-writer — single voice, scene-driven, anti-skeptic
User: "shouldn't mention the names of the mind-clones, should merge all
analyses and write like a best-seller author would, about what happened."
Voice rewrite (prompts/case-writer.md):
- Reference voices: Erik Larson, Sam Kean, John McPhee, Mark Bowden.
Plainspoken non-fiction, scene-driven, fascinated.
- One narrator. NEVER say "Sherlock Holmes argues" / "Sun-Tzu builds
the case" / "the team concluded". No internal-process names reach
the reader.
- Hook the first paragraph. Open in a scene with a date, place, and
person doing something specific. NOT "This case investigates..."
- Show, don't argue. Verbatim quotes stay source-language in
blockquotes; the narration around them is the narrator's voice.
- Every claim cites a chunk with [[doc-id/pNNN#cNNNN]].
- Forbidden ceremony: "In summary…", "Em suma…", "Ultimately…",
"It is worth noting…", detective names, probability tables,
hypothesis tournaments.
- The honest unknown is the subject, not a failure: "Whatever was in
the sky over Sandia in December 1948, the government never said."
- 4-6 numbered scenes, each title-cased specifically ("The Green
Sphere Over Highway 60" not "Background").
- Bilingual EN + PT-BR per CLAUDE.md §3 — sections alternate, no
mid-paragraph language mixing.
- Refusal: emit INSUFFICIENT_ARTEFACTS rather than padding when the
corpus is thin.
Raw-material pipeline (src/detectives/case_writer.ts):
- hybridSearch(topic, lang, top_k=18) gives the narrator real corpus
scenes with verbatim text + chunk_id citations + bbox metadata.
This is what was missing — v1 only saw pre-digested hypothesis
artefacts, which is how the academic prose got there.
- Dropped the hypotheses + contradictions queries from the loader.
They were skeptic-framing scaffolding that doesn't belong in the
raw material a best-seller narrator works from.
- New buildPrompt sections: "Primary-source scenes", "Curated
verbatim quotes", "Anomalies and surprises", "Named witnesses".
Anomalies (Taleb's outlier gaps) reframed: drop dominant_model
skeptic baseline, keep title + why_surprising as gold material.
- Refusal floor: < 4 scenes from hybridSearch → skip with reason.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:21:53 +00:00
|
|
|
|
A typical case has 4–6 numbered sections. Each is a scene or a turn in
|
|
|
|
|
|
the story, not a five-act formal structure. Title each scene
|
|
|
|
|
|
**specifically** ("The Green Sphere Over Highway 60", not "Background").
|
|
|
|
|
|
|
|
|
|
|
|
## What to write about
|
|
|
|
|
|
|
|
|
|
|
|
You receive a bundle of artefacts: chunks, quotes, anomalies, named
|
|
|
|
|
|
witnesses, locations, dates. Use them to tell the story. Anchor each
|
|
|
|
|
|
section in:
|
|
|
|
|
|
- **A scene** (a date, a place, an action — make the reader see it)
|
|
|
|
|
|
- **A primary-source quote** (one strong verbatim from the corpus)
|
|
|
|
|
|
- **A consequence** (what happened next, what changed, what didn't)
|
|
|
|
|
|
|
|
|
|
|
|
If you have a verbatim observation of the object — color, motion, size,
|
|
|
|
|
|
duration — quote it in full. Those are the moments enthusiasts open
|
|
|
|
|
|
this archive to read.
|
|
|
|
|
|
|
|
|
|
|
|
Length: 1500–3000 words total across both languages. Tight is better
|
|
|
|
|
|
than padded. If the corpus is thin, write a shorter file rather than
|
|
|
|
|
|
inflating it.
|
|
|
|
|
|
|
|
|
|
|
|
## Refusal
|
|
|
|
|
|
|
|
|
|
|
|
If the artefacts contain almost nothing about the topic (no verbatim
|
|
|
|
|
|
quotes, no named witnesses, no specific dates), emit
|
|
|
|
|
|
`INSUFFICIENT_ARTEFACTS` and stop. Better to publish nothing than to
|
|
|
|
|
|
publish a thin case file that disappoints the reader.
|