Causari packs contain a canonical causal graph and may optionally contain presentation metadata.
The separation is deliberate:
canonical graph data
+ audience/view projection
= timeline, canvas, lesson, recap, or decision workflow
Every pack continues to use:
events.json
links.json
insights.json
These files must remain portable across the MCP server, Canvas, static imports, runtime fetches, and future consumers.
A pack may add:
manifest.json
views.json
The manifest describes the pack rather than changing graph semantics.
Recommended fields:
{
"id": "pack-id",
"version": "0.1.0",
"title": "Pack title",
"description": "Purpose and scope",
"language": "en",
"defaultLocale": "vi",
"jurisdiction": "VN",
"temporalMode": "effective-date-timeline",
"graphMode": "instrument-to-control-to-evidence",
"updateCadence": "event-driven",
"asOf": "2026-07-30",
"files": {
"events": "events.json",
"links": "links.json",
"insights": "insights.json",
"views": "views.json"
},
"canvas": {
"defaultView": "executive-impact",
"recommendedLayout": "timeline-lanes",
"laneField": "lane",
"nodeTypeField": "nodeType"
}
}Consumers must treat unknown manifest fields as optional.
A view is a projection over the graph. It may define:
- audience
- guiding question
- included or focused event ids
- lane definitions
- highlighted causal paths
- story steps
- teaching notes
A view must not duplicate canonical events or links.
Example:
[
{
"id": "teaching-causal-chain",
"title": "Teach the causal chain",
"audiences": ["teacher", "student"],
"projection": {
"trigger": ["instrument", "effective-date"],
"response": ["action"],
"adaptation": ["control"],
"observableOutcome": ["evidence"]
}
}
]A compliance pack may use:
law → implementation → control → evidence
A World War I lesson pack may use:
structural cause → trigger → escalation → outcome → source evidence
A World Cup pack may use:
match result → table implication → affected team → next watchpoint
The domains differ, but all are narrative projections over event-and-link data.
Do not encode a lecturer's slide order, an executive dashboard filter, or one UI layout into the causal graph itself.
Instead:
- Curate events and links once.
- Add provenance and honest confidence.
- Create multiple views for different jobs.
- Allow consumers to ignore view metadata entirely.
This avoids three common failures:
- duplicating nodes for each audience
- coupling data packs to one frontend
- weakening causal semantics to satisfy a presentation layout
A Canvas consumer may:
- Load
manifest.jsonwhen present. - Load the canonical graph.
- Offer the view list from
views.json. - Filter or emphasize nodes according to the selected view.
- Render lanes from event metadata such as
lane. - Enter story mode using
highlightPathsorstorySteps. - Always preserve access to sources and confidence.
Views should degrade gracefully. A consumer that only understands events.json, links.json, and insights.json must still load the pack successfully.