This commit adds the read path (Cortex) to complement the write path (Spine): ## Crates - stemedb-api: HTTP API with axum + utoipa OpenAPI - /v1/assert, /v1/query, /v1/epoch, /v1/skeptic, /v1/trace, /v1/audit - Metered endpoints with quota enforcement - Ed25519 signature verification - stemedb-lens: Truth resolution lenses - RecencyLens, ConsensusLens, ConfidenceLens - VoteAwareConsensusLens (Ballot Box pattern) - TrustAwareAuthorityLens (The Hive pattern) - SkepticLens (conflict analysis) - EpochAwareLens (paradigm-safe queries) - stemedb-query: Query engine with materialized views ## Storage Extensions - VoteStore: Vote aggregation with cached counts - TrustRankStore: Agent reputation with decay - AuditStore: Query audit trail - IndexStore: SP/P/S index structures - SupersessionStore: Epoch supersession chains ## SDKs - sdk/go/steme: Go HTTP client with Ed25519 signing - sdk/go/adk: ADK-Go tools for AI agents ## Documentation - Updated CLAUDE.md, architecture.md, roadmap.md - New ai-lookup entries for all services - Use case docs for consumer health intelligence - Arena roadmap for simulation advancement Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
396 lines
26 KiB
JSON
396 lines
26 KiB
JSON
{
|
|
"combined": true,
|
|
"meta": {
|
|
"id": "stemedb",
|
|
"title": "stemedb"
|
|
},
|
|
"decks": [
|
|
{
|
|
"meta": {
|
|
"id": "consumer-health-intelligence",
|
|
"title": "Consumer Health Intelligence",
|
|
"subtitle": "The Living Truth Layer",
|
|
"version": "1.0.0"
|
|
},
|
|
"actors": {},
|
|
"slides": [
|
|
{
|
|
"type": "title",
|
|
"id": "title"
|
|
},
|
|
{
|
|
"type": "hook",
|
|
"id": "hook",
|
|
"line": "Your sources contradict each other.",
|
|
"subline": "And you have no way to weigh them."
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-doctor",
|
|
"title": "Source 1: Your doctor",
|
|
"code": "\"Well-tolerated. Nausea is common but transient.\"\n\n// Confidence: high (MD, treating physician)\n// Basis: prescribing guidelines, clinical experience\n// What's missing: doesn't see Reddit, doesn't see FAERS\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-fda",
|
|
"title": "Source 2: The FDA label",
|
|
"code": "WARNING: Thyroid C-cell tumors (boxed warning)\n\nAdverse reactions:\n - Nausea (44%)\n - Diarrhea (30%)\n - Vomiting (24%)\n\n// No mention of gastroparesis (yet).\n// Label last updated: 2021.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-reddit",
|
|
"title": "Source 3: Reddit (1.2M members)",
|
|
"code": "r/Ozempic - sorted by top, past month:\n\n\"Ozempic face is real. I look 10 years older.\" [2.1k upvotes]\n\"Month 3: can't eat, stomach won't empty\" [1.8k upvotes]\n\"Hair is falling out in clumps\" [1.4k upvotes]\n\"Lost 40 lbs, feel amazing, life changed\" [947 upvotes]\n\n// 4 posts. 4 different realities.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-tiktok",
|
|
"title": "Source 4: TikTok (4M views)",
|
|
"code": "@healthinfluencer:\n\"Ozempic gave me stomach paralysis.\n I was in the ER for 3 days.\"\n\n4.2M views | 340K likes | 12K comments\n\n// One person's experience.\n// Presented as universal truth.\n// Engagement = visibility, not validity.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-nejm",
|
|
"title": "Source 5: NEJM meta-analysis",
|
|
"code": "// Pooled analysis, n = 14,847\n// Design: randomized controlled trials\n\nResult: \"No statistically significant increase\n in gastroparesis incidence vs placebo\"\n\n// p = 0.23, CI crosses 1.0\n// The gold standard says: no signal.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-faers",
|
|
"title": "Source 6: FDA Adverse Event Reports",
|
|
"code": "FAERS query: semaglutide + gastroparesis\n\nTotal reports: 8,547\nSerious: 3,201\nHospitalizations: 1,894\nTrend: increasing (2022-2024)\n\n// Self-reported + unverified.\n// But 8,547 reports is a signal.\n"
|
|
},
|
|
{
|
|
"type": "hook",
|
|
"id": "drift-question",
|
|
"line": "Seven sources. Seven answers.",
|
|
"subline": "You make your decision based on whichever one you saw last."
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "spiral",
|
|
"title": "The same problem, everywhere",
|
|
"code": "// Gastroparesis:\nDoctor: \"Rare\"\nFDA: (not on label)\nReddit: \"It happened to me\" (x 4,200)\nTikTok: \"It's an epidemic\" (12M views)\nNEJM: \"No significant signal\"\nFAERS: 8,547 reports\n\n// Hair loss:\nClinical trials: not studied\nReddit: 1,847 posts\nClinical evidence: zero\n\n// Muscle loss:\nPhase III: \"~40% of weight lost is lean mass\"\nReddit: \"My legs are wasting away\"\nTrainers: \"Just lift weights\"\n"
|
|
},
|
|
{
|
|
"type": "hook",
|
|
"id": "spiral-insight",
|
|
"line": "This is the vaccine problem.",
|
|
"subline": "Not misinformation. The absence of a system that can hold all claims and show you the shape of the evidence."
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "catastrophe",
|
|
"title": "The Catastrophe",
|
|
"code": "// June 2023: She starts Semaglutide.\n// Her research: doctor + Google + a few Reddit posts.\n// Gastroparesis wasn't on the FDA label.\n//\n// January 2024: FDA updates the label.\n// Intestinal obstruction warning added.\n//\n// Reddit had flagged this a year earlier.\n// FAERS reports were accumulating for two years.\n//\n// Nobody told her. Google doesn't send updates.\n// Her doctor's office doesn't track label changes.\n// The truth changed. Her information didn't.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "catastrophe-pattern",
|
|
"title": "The pattern repeats",
|
|
"code": "// COVID vaccines, 2021:\n// April: \"No myocarditis signal\"\n// June: VAERS reports accumulating\n// July: CDC acknowledges elevated risk in young males\n//\n// Millions of decisions made between April and July\n// based on information that was about to change.\n//\n// Not because anyone lied.\n// Because no system could show:\n// \"Here is what we know, at each level,\n// and here is what changed since you last looked.\"\n"
|
|
},
|
|
{
|
|
"type": "hook",
|
|
"id": "fix-intro",
|
|
"line": "What if every source had a weight?",
|
|
"subline": "And the disagreement was the answer."
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "fix-tiers",
|
|
"title": "Source-class hierarchy",
|
|
"code": "// Not all sources are equal. Make it structural.\n\nTier 0: Regulatory action weight: 1.0 decay: never\nTier 1: RCTs, meta-analyses weight: 0.9 decay: 2 years\nTier 2: Observational studies weight: 0.7 decay: 1 year\nTier 3: Pharmacovigilance weight: 0.5 decay: 18 months\nTier 4: Clinician case reports weight: 0.4 decay: 6 months\nTier 5: Patient community weight: 0.2 decay: 3 months\nTier 6: Media, influencers weight: 0.1 decay: 30 days\n\n// A million TikTok posts cannot outvote one FDA action.\n// But they can signal that something is happening.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "fix-assert",
|
|
"title": "Store claims with provenance",
|
|
"code": "// Clinical evidence enters with full metadata\nepisteme.assert({\n subject: \"semaglutide/adverse-effects/gastroparesis\",\n predicate: \"risk_level\",\n value: \"No statistically significant increase\",\n source_class: \"tier-1\",\n source: {\n type: \"meta-analysis\",\n journal: \"NEJM\",\n sample_size: 14847\n },\n confidence: 0.92\n});\n\n// Patient report enters the same graph\nepisteme.assert({\n subject: \"semaglutide/adverse-effects/gastroparesis\",\n predicate: \"risk_level\",\n value: \"Experienced severe gastroparesis after 3 months\",\n source_class: \"tier-5\",\n source: { platform: \"reddit\", upvotes: 847 },\n confidence: 0.3\n});\n\n// Both coexist. Neither overwrites. But they are not equal.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "fix-query",
|
|
"title": "Query returns layers, not a single answer",
|
|
"code": "episteme.query({\n subject: \"semaglutide/adverse-effects/gastroparesis\",\n lens: \"layered-consensus\"\n});\n\n// Returns:\n{\n regulatory: \"Added to label Jan 2024\",\n clinical_evidence: \"No signal in Phase III (conflict: 0.34)\",\n pharmacovigilance: \"8,547 FAERS reports, trend: increasing\",\n patient_community: \"Widely reported, cluster size: 4,200\",\n\n overall_conflict: 0.72,\n summary: \"Trials show low incidence. Post-marketing and\n patient reports show higher rates. FDA added\n to label January 2024.\"\n}\n\n// Not \"yes\" or \"no\". The shape of the evidence.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "escalation",
|
|
"title": "Anecdotal signal detection",
|
|
"code": "// The Gardener monitors Tier 5 clusters.\n// When density crosses threshold:\n\nepisteme.assert({\n subject: \"semaglutide/adverse-effects/hair-loss\",\n predicate: \"escalation_signal\",\n value: \"Anecdotal cluster detected\",\n source_class: \"meta\",\n meta: {\n tier_5_count: 1847,\n growth_rate: \"312/month\",\n tier_1_count: 0, // no clinical evidence exists\n clinical_gap: true\n },\n lifecycle: \"under-review\"\n});\n\n// Does NOT claim hair loss is real.\n// Claims: \"people are reporting this, and nobody has studied it.\"\n// The gap is the signal.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "guidance-change",
|
|
"title": "What changed since you last looked",
|
|
"code": "// FDA updates the label. Epoch shifts.\nepisteme.epoch.supersede({\n old_epoch: \"semaglutide-label-pre-2024\",\n new_epoch: \"semaglutide-label-2024-01\",\n reason: \"Intestinal obstruction warning added\"\n});\n\n// Consumer returns 3 months later:\nepisteme.query({\n subject: \"semaglutide/adverse-effects\",\n lens: \"layered-consensus\",\n since: \"2023-10-01\" // their last visit\n});\n\n// Returns:\n{\n changes: [{\n date: \"2024-01-12\",\n type: \"regulatory\",\n change: \"Intestinal obstruction added to warnings\"\n }],\n prior_assertions_affected: 12\n}\n\n// Not just today's answer. What changed.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "time-travel",
|
|
"title": "What was known when you decided?",
|
|
"code": "// \"I started Semaglutide in June 2023.\n// What were the known risks at that time?\"\n\nepisteme.query({\n subject: \"semaglutide/adverse-effects\",\n lens: \"layered-consensus\",\n as_of: \"2023-06-15\"\n});\n\n// Returns the June 2023 snapshot:\n{\n regulatory: \"Boxed warning: thyroid. No GI obstruction.\",\n clinical: \"Nausea common, no gastroparesis signal\",\n patient: \"Growing reports (cluster size: 340)\",\n escalation: \"not yet triggered (threshold: 500)\"\n}\n\n// Your decision was reasonable given available evidence.\n// The record proves it.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "disagreement",
|
|
"title": "The disagreement dashboard",
|
|
"code": "episteme.query({\n subject: \"semaglutide\",\n lens: \"skeptic\",\n scope: \"adverse-effects\"\n});\n\n// Returns:\nresolved: [\n { topic: \"nausea\", conflict: 0.08, \"all tiers agree\" }\n]\n\nactive_disagreement: [\n { topic: \"gastroparesis\", conflict: 0.72,\n clinical: \"Low incidence\",\n faers: \"8,547 reports\",\n patients: \"Widely reported\" }\n]\n\nemerging_signal: [\n { topic: \"hair loss\",\n clinical_evidence: \"none\",\n patient_reports: 1847,\n status: \"under-review\" }\n]\n\n// Settled. Contested. Emerging.\n// Honest answers, not false certainty.\n"
|
|
},
|
|
{
|
|
"type": "vision",
|
|
"id": "vision",
|
|
"title": "Episteme",
|
|
"points": [
|
|
"Source-class hierarchy. Not all claims are equal.",
|
|
"Anecdotal signals surfaced without false authority.",
|
|
"Guidance changes propagated, not buried.",
|
|
"Time travel to the evidence at any moment."
|
|
],
|
|
"tagline": "Git for Truth"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"meta": {
|
|
"id": "agile-agent-team",
|
|
"title": "Agile AI Agent Team",
|
|
"subtitle": "Knowledge Coordination with Episteme",
|
|
"version": "4.0.0"
|
|
},
|
|
"actors": {},
|
|
"slides": [
|
|
{
|
|
"type": "title",
|
|
"id": "title"
|
|
},
|
|
{
|
|
"type": "hook",
|
|
"id": "hook",
|
|
"line": "Your agents have amnesia.",
|
|
"subline": "Every correction you make is forgotten by the next session."
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-logging",
|
|
"title": "Day 1: You correct the agent",
|
|
"code": "// Agent used console.log\n// You: \"We use winston, not console.log\"\n\nimport { logger } from './logger';\n\nlogger.info('User authenticated', { userId });\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-logging-2",
|
|
"title": "Day 30: New session",
|
|
"code": "// Agent writes new code...\n\nconsole.log('User authenticated');\nconsole.log('userId:', userId);\n\n// The correction from Day 1? Gone.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-http",
|
|
"title": "Day 45: You correct again",
|
|
"code": "// Agent used axios\n// You: \"We standardized on fetch\"\n\nconst response = await fetch('/api/users', {\n headers: { 'Authorization': `Bearer ${token}` }\n});\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-http-2",
|
|
"title": "Day 60: Another new session",
|
|
"code": "// Agent writes new code...\n\nimport axios from 'axios';\n\nconst response = await axios.get('/api/users', {\n headers: { 'Authorization': `Bearer ${token}` }\n});\n\n// Forgot again. Different session, different choices.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "spiral",
|
|
"title": "6 months later: 10 ways to do 1 thing",
|
|
"code": "// Logging\nconsole.log() // 47 files\nwinston.info() // 23 files\npino.info() // 12 files\ndebug() // 8 files\n\n// HTTP\nfetch() // 31 files\naxios.get() // 28 files\ngot() // 6 files\n\n// Auth\nRS256 // 4 services\nES256 // 3 services\nHS256 // 2 services (why??)\n"
|
|
},
|
|
{
|
|
"type": "hook",
|
|
"id": "spiral-question",
|
|
"line": "Which one is correct?",
|
|
"subline": "Nobody knows. The decision was never recorded."
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "catastrophe",
|
|
"title": "The Catastrophe",
|
|
"code": "// Auth service A expects RS256\n// Auth service B was deployed with ES256\n// An agent queried \"what's our JWT algorithm?\"\n// Got the most recent answer: ES256 (from an RFC proposal)\n\nHTTP 401 Unauthorized\n{\n error: \"invalid_signature\",\n expected: \"RS256\",\n received: \"ES256\"\n}\n\n// 3:00 AM. Pager fires. 47-minute outage.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "catastrophe-why",
|
|
"title": "The Root Cause",
|
|
"code": "// The RFC was stored without lifecycle state\n// The query returned the most recent entry\n// No way to distinguish \"proposed\" from \"approved\"\n// The agent treated an idea as truth\n\n// And now you have to audit 9 services\n// to figure out which JWT algorithm is actually correct.\n"
|
|
},
|
|
{
|
|
"type": "hook",
|
|
"id": "fix-intro",
|
|
"line": "What if corrections persisted?",
|
|
"subline": "Across sessions. Across agents. Forever."
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "fix-store",
|
|
"title": "Store decisions with context",
|
|
"code": "episteme.assert({\n subject: \"project/logging\",\n predicate: \"library\",\n value: \"winston\",\n\n lifecycle: \"approved\", // not proposed, not deprecated\n confidence: 1.0, // this is a decision, not a guess\n source: \"adr-0012\" // traceable to a decision record\n});\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "fix-query",
|
|
"title": "Query with lifecycle filter",
|
|
"code": "// Before writing code, agent checks constraints\n\nconst constraints = await episteme.query({\n subject: \"project/logging\",\n lifecycle: \"approved\"\n});\n\n// Returns: { library: \"winston\", confidence: 1.0 }\n\n// Agent uses winston. Every time. Every session.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "fix-diff",
|
|
"title": "The difference",
|
|
"code": "// Without Episteme:\nquery({ subject: \"auth/jwt\", predicate: \"algorithm\" })\n// Returns: ES256 (most recent entry - a proposal)\n\n// With Episteme:\nquery({ subject: \"auth/jwt\", predicate: \"algorithm\", lifecycle: \"approved\" })\n// Returns: RS256 (the actual decision)\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "time-travel",
|
|
"title": "Debug what you believed, not what you know now",
|
|
"code": "// Post-incident: what did we believe at 9pm?\n\nepisteme.query({\n subject: \"auth/jwt\",\n predicate: \"algorithm\",\n as_of: \"2024-01-15T21:00:00Z\"\n});\n\n// Returns: ES256 (the belief at incident time)\n\nepisteme.diff({\n subject: \"auth/jwt\",\n from: \"2024-01-15T14:00:00Z\",\n to: \"2024-01-15T21:00:00Z\"\n});\n\n// Shows: RFC proposal added at 2:32pm\n// Root cause identified.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "correction",
|
|
"title": "Fix the record, not just the code",
|
|
"code": "// Mark the bad assertion\nepisteme.supersede({\n target: \"ax7f3k9...\",\n reason: \"RFC was proposal, not approved decision\",\n corrected_by: \"sre-oncall\"\n});\n\n// Add a constraint so it never happens again\nepisteme.assert({\n subject: \"auth/jwt\",\n predicate: \"algorithm\",\n value: \"RS256\",\n lifecycle: \"approved\",\n supersedes: \"ax7f3k9...\"\n});\n\n// Future sessions will see this. Forever.\n"
|
|
},
|
|
{
|
|
"type": "vision",
|
|
"id": "vision",
|
|
"title": "Episteme",
|
|
"points": [
|
|
"Claims, not facts. Uncertainty is first-class.",
|
|
"Lifecycle awareness. Proposals ≠ decisions.",
|
|
"Corrections that persist across sessions.",
|
|
"Time travel for incident investigation."
|
|
],
|
|
"tagline": "Git for Truth"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"meta": {
|
|
"id": "sec-analysis",
|
|
"title": "SEC Document Analysis",
|
|
"subtitle": "Filing Intelligence with Episteme",
|
|
"version": "1.0.0"
|
|
},
|
|
"actors": {},
|
|
"slides": [
|
|
{
|
|
"type": "title",
|
|
"id": "title"
|
|
},
|
|
{
|
|
"type": "hook",
|
|
"id": "hook",
|
|
"line": "Your filings contradict each other.",
|
|
"subline": "And every agent reading them gets a different answer."
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-revenue",
|
|
"title": "10-K: Annual revenue",
|
|
"code": "// Agent extracts from 10-K filing\n// CIK: 0001234567, Filed: 2024-02-28\n\n{\n \"subject\": \"ACME/revenue/annual\",\n \"source\": \"10-K/2023\",\n \"value\": \"$847M\"\n}\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-revenue-2",
|
|
"title": "10-Q: Quarterly revenue tells a different story",
|
|
"code": "// Agent extracts from Q4 10-Q filing\n// Same company, same fiscal year\n\n{\n \"subject\": \"ACME/revenue/Q4\",\n \"source\": \"10-Q/2023-Q4\",\n \"value\": \"$218M\"\n}\n\n// Q1 + Q2 + Q3 + Q4 = $872M annualized\n// 10-K says $847M\n// Delta: $25M. Which is right?\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-amendment",
|
|
"title": "Original 10-K: No impairment",
|
|
"code": "// Filed: 2024-02-28\n// Form: 10-K\n\n{\n \"subject\": \"ACME/goodwill/impairment\",\n \"source\": \"10-K/2023\",\n \"value\": \"$0\"\n}\n\n// Clean bill of health.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "drift-amendment-2",
|
|
"title": "10-K/A: $340M impairment appears",
|
|
"code": "// Filed: 2024-06-15 (amended filing)\n// Form: 10-K/A\n\n{\n \"subject\": \"ACME/goodwill/impairment\",\n \"source\": \"10-K-A/2023\",\n \"value\": \"$340M\"\n}\n\n// The amendment supersedes the original.\n// But which sections? All of them? Just Note 7?\n// The rest of the 10-K -- still valid?\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "spiral",
|
|
"title": "Same data, extracted 3 times, 3 answers",
|
|
"code": "// Q3 Revenue appears in:\n\"10-Q/2023-Q3\" -> $213M // quarterly filing\n\"10-K/2023\" -> $209M // annual summary table\n\"DEF 14A/2024\" -> $211M // proxy exec comp section\n\n// Two analysts read the same proxy statement\n// Analyst A: CEO comp = $14.2M (includes options)\n// Analyst B: CEO comp = $8.7M (base + bonus only)\n\n// Both are \"correct\" -- different definitions\n"
|
|
},
|
|
{
|
|
"type": "hook",
|
|
"id": "spiral-question",
|
|
"line": "Which extraction is correct?",
|
|
"subline": "Depends on the filing, the section, and what you're measuring."
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "catastrophe",
|
|
"title": "The Catastrophe",
|
|
"code": "// Agent builds a DCF model\n// Revenue: pulled from 10-K/A -> $847M (amended)\n// Cost of revenue: pulled from 10-K -> $612M (original)\n//\n// But the amendment changed cost allocations too.\n// Actual cost of revenue post-amendment: $658M\n//\n// Gross margin: 27.7% (agent's model)\n// Actual: 22.3%\n//\n// DCF valuation: off by $180M\n//\n// The model mixed amended and pre-amendment data\n// because there was no way to track the amendment chain.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "catastrophe-why",
|
|
"title": "The Root Cause",
|
|
"code": "// Filings were stored as flat key-value pairs\n// No amendment chain linking 10-K to 10-K/A\n// No section-level tracking\n// No way to know which data points were superseded\n//\n// The agent had no concept of \"this number was restated\"\n// It just grabbed the first match for each field\n//\n// Garbage in, $180M garbage out.\n"
|
|
},
|
|
{
|
|
"type": "hook",
|
|
"id": "fix-intro",
|
|
"line": "What if filings carried their own lineage?",
|
|
"subline": "Every extraction linked to its source, section, and amendment chain."
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "fix-store",
|
|
"title": "Store extractions with filing metadata",
|
|
"code": "episteme.assert({\n subject: \"ACME/revenue/annual/2023\",\n predicate: \"value\",\n value: \"$847M\",\n\n source: {\n cik: \"0001234567\",\n form: \"10-K\",\n filed: \"2024-02-28\",\n section: \"Part II, Item 8\",\n accession: \"0001234567-24-000042\"\n },\n\n lifecycle: \"current\",\n confidence: 0.95\n});\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "fix-amendment",
|
|
"title": "Amendments supersede cleanly",
|
|
"code": "// When the 10-K/A arrives:\nepisteme.assert({\n subject: \"ACME/goodwill/impairment/2023\",\n predicate: \"value\",\n value: \"$340M\",\n\n source: {\n form: \"10-K/A\",\n filed: \"2024-06-15\",\n amends: \"0001234567-24-000042\", // links to original\n sections_amended: [\"Note 7\", \"Part II Item 8\"]\n },\n\n lifecycle: \"current\",\n supersedes: \"ax7f3k9...\" // the $0 assertion\n});\n\n// The original $0 assertion is now lifecycle: \"superseded\"\n// Sections NOT in sections_amended remain valid\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "fix-query",
|
|
"title": "Query with lifecycle: only current data",
|
|
"code": "// Agent building a DCF model queries:\nconst revenue = await episteme.query({\n subject: \"ACME/revenue/annual/2023\",\n lifecycle: \"current\"\n});\n// Returns $847M from 10-K/A (amended value)\n\nconst cost = await episteme.query({\n subject: \"ACME/cost-of-revenue/annual/2023\",\n lifecycle: \"current\"\n});\n// Returns $658M from 10-K/A (amended value)\n\n// Both values from the same amendment.\n// No mixing. No $180M error.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "time-travel",
|
|
"title": "What did we believe before the restatement?",
|
|
"code": "// Audit question: what was our position on March 1?\n// (before the 10-K/A was filed on June 15)\n\nepisteme.query({\n subject: \"ACME/goodwill/impairment/2023\",\n as_of: \"2024-03-01T00:00:00Z\"\n});\n\n// Returns: $0 (the original 10-K assertion)\n// At that point, that WAS the truth.\n\nepisteme.diff({\n subject: \"ACME/goodwill/impairment/2023\",\n from: \"2024-03-01\",\n to: \"2024-07-01\"\n});\n\n// Shows: 10-K/A filed June 15, impairment changed $0 -> $340M\n// Full audit trail. No guessing.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "multi-analyst",
|
|
"title": "Competing extractions coexist",
|
|
"code": "// Analyst A extracts CEO comp from proxy (DEF 14A)\nepisteme.assert({\n subject: \"ACME/exec-comp/CEO/2023\",\n value: \"$14.2M\",\n source: { form: \"DEF 14A\", section: \"Summary Compensation\" },\n confidence: 0.9,\n author: \"analyst-A\"\n});\n\n// Analyst B extracts from the same proxy\nepisteme.assert({\n subject: \"ACME/exec-comp/CEO/2023\",\n value: \"$8.7M\",\n source: { form: \"DEF 14A\", section: \"Summary Compensation\" },\n confidence: 0.85,\n author: \"analyst-B\"\n});\n\n// Both assertions coexist. No overwrite.\n"
|
|
},
|
|
{
|
|
"type": "code",
|
|
"id": "multi-analyst-resolve",
|
|
"title": "Lens resolves at query time",
|
|
"code": "// Default lens: highest confidence wins\nepisteme.query({\n subject: \"ACME/exec-comp/CEO/2023\",\n lens: \"authority\"\n});\n// Returns: $14.2M (analyst-A, confidence 0.9)\n\n// But you can ask: show me all claims\nepisteme.query({\n subject: \"ACME/exec-comp/CEO/2023\",\n lens: \"all\"\n});\n// Returns both: $14.2M and $8.7M\n// With full provenance on each\n\n// The disagreement IS the signal.\n// Someone needs to reconcile definitions.\n"
|
|
},
|
|
{
|
|
"type": "vision",
|
|
"id": "vision",
|
|
"title": "Episteme",
|
|
"points": [
|
|
"Amendment chains, not flat overwrites.",
|
|
"Section-level provenance for every extraction.",
|
|
"Competing analyst reads coexist until resolved.",
|
|
"Time travel for audit and restatement analysis."
|
|
],
|
|
"tagline": "Git for Truth"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
} |