Skip to content

Multi-perspective — five lenses per file

The most important idea in the office library is the same source gets multiple post-its from different lenses. Same source_url. Different perspective values. Each post-it independently recallable.

Example — one AI incident, five lenses

An AI safety incident drops into the inbox:

~/incidents/raw/2026-05-19_INC-2026-0142.jsonl
INC-2026-0142 · LLM chatbot · misinformation + financial · severity 4/5

A single source. Five analyzer agents read it. Five post-its written. Same source_url. Same casefile_anchor (chatbot-hallucinated-policy). Different lens.

LensWhat it sees
Root Cause”Technical: LLM hallucination on under-trained policy domain. Retrieval layer absent. No grounding citation enforced.”
Threat Modeling”Abuse vector: prompt-injection could engineer the bot to promise costly fabrications. Reputational denial-of-service risk.”
Guardrail Designer”Required controls: retrieval grounding · confidence threshold · output filter · human-on-refunds · disclaimer.”
Dev Process”Where to insert: pre-deploy policy test suite (95%+ accuracy) · CI canary hallucination rate · red-team simulation pre-release.”
Critic”What the prior four missed: legal layer, contractual ToS layer, organizational ownership gap, audit-trail requirement.”

Same incident. Five readings. Each one valid. None of them contradicts.

The fanout

📄 ONE inbound AI safety incident
Stage 1 Incident Collector
📄 readable .md sidecar
Stage 3 — five analyzers in parallel
┌──────────┬──────────┬───────────┬──────────┬──────────┐
▼ ▼ ▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌──────────┐ ┌────────┐ ┌─────────┐
│ ROOT │ │ THREAT │ │ GUARDRAIL│ │ DEV │ │ CRITIC │
│ CAUSE │ │ MODEL │ │ DESIGNER │ │ PROCESS│ │ │
└────┬────┘ └────┬────┘ └────┬─────┘ └───┬────┘ └────┬────┘
▼ ▼ ▼ ▼ ▼
5 post-its with the same source_url and casefile_anchor,
but different perspective values.

Why this beats tags

Tags answer what is this file about. Perspectives answer who is reading it and what do they see.

QuestionTags answerPerspectives answer
”Show me hallucination incidents”All hallucination-tagged filesAll Root-Cause-perspective post-its mentioning hallucination
”Show me chatbot prompt-injection risks”All chatbot-tagged + injection-tagged filesAll Threat-Model-perspective post-its on chatbot incidents
”Show me where SDLC controls were missing”(no clean answer)All Dev-Process-perspective post-its noting missing CI/test gates
”What did the team miss?”(no clean answer)All Critic-perspective post-its across the incident corpus

Tags are flat. Perspectives are typed.

Domain-specific lens sets

Different offices use different lens sets. The five lenses above are tuned for the AI Guardrail Lab. Other offices use different sets:

OfficeTypical lenses
AI Guardrail LabRoot Cause · Threat Modeling · Guardrail Designer · Dev Process · Critic
Maritime operationsEngineer · Class Surveyor · Operations · Charterer · Owner
Editorial workflowsReader · Editor · Fact-checker · Audience · Publisher
Finance / auditAccountant · Auditor · Compliance · Operations · Risk

The pattern is the same. The lens identities change by domain.

How it gets enforced

Stage 3 of the pipeline. When a Converter writes a readable .md and tags it with a casefile, the Story-builder spins up N analyzer agents in parallel (N = number of lenses configured for that casefile type). Each analyzer:

  1. Reads the same .md
  2. Knows its own lens (loaded from agents/03-analyzer-{lens}.md)
  3. Writes a post-it with the lens recorded in the perspective column
  4. Cites the source row(s)

The pipeline guarantees same-source → N post-its in O(N) parallel calls.

Recall

recall.py --perspective root-cause --topic chatbot-hallucination returns every Root-Cause-lens post-it about chatbot hallucination patterns. cluster.py --topic chatbot-hallucination returns the cross-lens narrative.