Infrastructure for pragmatic epistemology. Combining
-
i-docs navigation,
-
PROMPT epistemological scoring, and
-
boundary objects theory.
An evidence graph for investigative journalism.
Status: Phase 1 (PoC) - v1.0.0 Release Version: 1.0.0
Confused by the terminology? The Binary-Origami Wiki explains everything in metaphors, diagrams, and plain language.
[quote] _ This isn’t just a database. It’s _infrastructure for folding and unfolding evidence—so everyone can see the shape that fits their needs. __
-
Binary: Evidence is stored as clear, connected data (supports/contradicts, 0-100 scores)
-
Origami: The same evidence can be “folded” into different forms for different audiences
-
Figuration: The rules for folding/unfolding are transparent and reversible
[cols=“1,2,1”] |=== | Concept | Description | Learn More
i-docs Navigation “Choose Your Own Adventure” for evidence Wiki
PROMPT Scoring “Nutrition labels” for trustworthiness Wiki
Boundary Objects “Shared maps” with multiple routes Wiki
Evidence Graphs The “skeleton” beneath the origami Wiki
=== For the Impatient [arabic] . Try the Quick Start to see it in action . Skim the Binary-Origami Metaphor page . Dive into the FAQ if something’s unclear == Vision We didn’t fall from Truth to Post-Truth; we evolved to complex epistemology without building infrastructure. This system IS that infrastructure. === Core Concepts [arabic] . i-docs Navigation: Navigation over narration, reader agency . PROMPT Framework: 6-dimensional epistemological scoring (Provenance, Replicability, Objective, Methodology, Publication, Transparency) . Boundary Objects: Multiple audience perspectives on same evidence . Evidence Graph for Investigative Journalism amd Related Disciplines === Prerequisites * Elixir 1.18+ & Erlang/OTP 27+ * Phoenix 1.8+ * Podman & podman-compose * just (task runner): https://github.com/casey/just === 1. Clone Repository [source,bash] ---- git clone https://github.com/Hyperpolymath/bofig.git cd bofig ---- === 2. Start Databases [source,bash] ---- podman-compose up -d ---- Verify ArangoDB is running: http://localhost:8529 (root/dev) === 3. Full Setup (deps, databases, seeds) [source,bash] ---- just setup ---- Or manually: [source,bash] ---- mix deps.get mix ecto.create mix run -e "EvidenceGraph.ArangoDB.setup_database()" mix run priv/repo/seeds.exs ---- === 4. Start Phoenix Server [source,bash] ---- just dev ---- Visit: - Application: http://localhost:4000 (register/login required) - GraphQL Playground: http://localhost:4000/api/graphiql (dev only) - Health Check: http://localhost:4000/api/health == GraphQL API Examples === Query: Get All Claims [source,graphql] ---- query { claims(investigationId: "uk_inflation_2023") { id text claimType confidenceLevel promptScores { provenance replicability objective methodology publication transparency overall } supportingEvidence { evidence { title evidenceType } weight confidence } } } ---- === Query: Evidence Chain (Graph Traversal) [source,graphql] ---- query { evidenceChain(claimId: "claim_1", maxDepth: 3) { rootClaim { text } nodes { … on Claim { id text } … on Evidence { id title } } edges { relationshipType weight confidence } maxDepth } } ---- === Mutation: Create Claim [source,graphql] ---- mutation { createClaim(input: { investigationId: "uk_inflation_2023" text: "Inflation disproportionately affected renters" claimType: SUPPORTING confidenceLevel: 0.85 promptScores: { provenance: 70 replicability: 65 objective: 75 methodology: 70 publication: 65 transparency: 70 } }) { id text promptScores { overall } } } ---- === Mutation: Import from Zotero [source,graphql] ---- mutation { importFromZotero( investigationId: "uk_inflation_2023" zoteroJson: { key: "ABC123" itemType: "journalArticle" title: "New Economic Study" url: "https://doi.org/10.1111/example" creators: [{name: "Smith, J."}] tags: [{tag: "economics"}] } ) { id title zoteroKey } } ---- === Query: Navigation Paths [source,graphql] ---- query { navigationPaths( investigationId: "uk_inflation_2023" audienceType: RESEARCHER ) { id name description pathNodes { entityId entityType order context } } } ---- === Mutation: Auto-Generate Navigation Path [source,graphql] ---- mutation { autoGeneratePath( investigationId: "uk_inflation_2023" audienceType: SKEPTIC ) { id name pathNodes { entityId order } } } ---- == Project Structure …. bofig/ ├── lib/ │ ├── evidence_graph/ # Core business logic │ │ ├── claims/ # Claims context │ │ │ └── claim.ex │ │ ├── evidence/ # Evidence context │ │ │ └── evidence.ex │ │ ├── relationships/ # Graph edges │ │ │ └── relationship.ex │ │ ├── navigation/ # Audience paths │ │ │ └── path.ex │ │ ├── arango.ex # ArangoDB client │ │ ├── prompt_scores.ex # PROMPT scoring │ │ └── application.ex # OTP supervisor │ └── evidence_graph_web/ # Phoenix web layer │ ├── schema/ # GraphQL schema │ │ ├── types/ # Type definitions │ │ └── schema.ex # Root schema │ ├── endpoint.ex │ └── router.ex ├── priv/repo/ │ └── seeds.exs # UK Inflation 2023 test data ├── config/ # Environment configs ├── docs/ # Architecture docs │ ├── database-evaluation.md │ └── zotero-integration.md ├── ARCHITECTURE.md # Data model, API design ├── ROADMAP.md # 18-month plan ├── CLAUDE.md # AI assistant context ├── Containerfile # OCI container build └── podman-compose.yml # Container orchestration …. == UK Inflation 2023 Test Dataset The seed data includes a complete investigation: * 7 Claims (primary, supporting, counter) * 10 Evidence items (expand to 30) Official statistics: ONS CPI, Ofgem, BoE Academic: Peer-reviewed studies Think tanks: Resolution Foundation, IFS Interviews: Expert opinions * 10 Relationships (supports/contradicts/contextualizes) * 3 Navigation Paths: [arabic] . Researcher: Evidence-first, methodology priority . Policymaker: Authoritative sources, recommendations . Affected Person: Personal impact, clarity === PROMPT Score Examples [cols=",,,,,,,",options="header",] |
|Evidence |Prov |Repl |Obj |Meth |Pub |Trans |Overall |ONS CPI Data |100 |100 |95 |95 |100 |95 |97.5 |Academic Study |85 |80 |75 |85 |90 |75 |81.8 |Think Tank Report |75 |70 |65 |75 |80 |70 |72.3 |Expert Interview |85 |45 |60 |50 |40 |75 |59.0
== Development === Run Tests [source,bash] ---- mix test ---- === Interactive Shell [source,bash] ---- iex -S mix phx.server = Query ArangoDB directly iex> EvidenceGraph.ArangoDB.query("FOR c IN claims RETURN c") = Get a claim iex> EvidenceGraph.Claims.get_claim("claim_1") = Evidence chain traversal iex> EvidenceGraph.Relationships.evidence_chain("claim_1", 3) ---- === Code Quality [source,bash] ---- = Format code mix format = Static analysis mix credo = Type checking mix dialyzer ---- == Deployment (Phase 2) * Hosting: Hetzner Cloud (EU data sovereignty) * ArangoDB: ArangoDB Oasis (€45/month) * Phoenix: Systemd service, Nginx reverse proxy * CI/CD: GitHub Actions == Documentation === Conceptual (Start Here!) * Binary-Origami Wiki - Explains the metaphor and concepts in plain language * The Metaphor - Why “Binary-Origami Figuration”? * Folding 101 - Hands-on tutorial * FAQ - Common questions answered * Glossary - Term definitions === Technical * ARCHITECTURE.md - Data model, database design, API specs * ROADMAP.md - 18-month implementation plan * docs/database-evaluation.md - ArangoDB comparison * docs/zotero-integration.md - Two-way sync design * CLAUDE.md - AI assistant context == Key Features === Implemented (v1.0.0) * Multi-model ArangoDB integration (document + graph) * GraphQL API with Absinthe (15 queries, 11 mutations) * PROMPT epistemological scoring (6 dimensions, audience weighting) * Claims, Evidence, Relationships, Navigation Paths data models * Graph traversal algorithms (evidence chains, shortest path, contradiction detection) * Zotero REST API (import, export, batch-import, sync-status) * Phoenix 1.8 LiveView frontend (5 pages: Dashboard, Investigation, Graph, PROMPT, Navigation) * User authentication (phx.gen.auth with bcrypt, magic links) * D3.js force-directed graph + radar chart visualisations * Audience-weighted navigation paths (6 types) * UK Inflation 2023 test dataset (7 claims, 30 evidence, 38 relationships) * Production deployment (Containerfile, nginx, systemd) * NUJ user testing protocols * A2ML v2.1 Cyberwar-Ready Trustfile * 257 tests, 0 failures, full RSR compliance === Coming Next (Phase 2) * Zotero browser extension (one-click import) * Multi-investigation dashboard * Real-time collaborative editing * Advanced visualisations (timeline, heatmap, Sankey) * IPFS provenance integration * Hetzner Cloud deployment == Philosophy This isn’t just a database. It’s infrastructure for coordinating without consensus. Every design choice asks: 1. Does this support multiple audience perspectives? 2. Does this make epistemology measurable? 3. Does this enable navigation over narration? == Contributing Open source from day 1. See ROADMAP.md for planned features. Month 3 = Decision Point: User testing with 25 NUJ journalists determines go/no-go. == Related Projects * LithoglyphDB - The narrative-first, reversible, audit-grade database * GPNL - Dependently-typed Glyph Projection Language (compile-time proofs) * Lithoglyph Studio - Zero-friction GUI for non-technical users * Zotero-Lithoglyph - Reference manager with PROMPT scores == License MPL-2.0 (Palimpsest License) == Contact * Repository: https://github.com/Hyperpolymath/bofig * Issues: https://github.com/Hyperpolymath/bofig/issues * User Testing: NUJ network (Month 3, 6, 12) ''''' Built with: Elixir, Phoenix, ArangoDB, Absinthe, LiveView, D3.js Inspired by: i-docs (PMPL-1.0 Open Doc Lab), Boundary Objects (Star & Griesemer), Pragmatic Epistemology Last Updated: 2026-02-21 == Architecture See TOPOLOGY.md for a visual architecture map and completion dashboard. |