Skip to content

AionSystem/VERITAS

Repository files navigation

image-20

VERITAS — Field Report Verification Platform

Status Commercial Use Version Build License: GPL v3 Commercial License ORCID — Sheldon K. Salmon DOI DOI

CERTUS Engine STP STP Templates Seal Audit

OpenRouter Made with TensorFlow.js Made with JavaScript Made with HTML Feedback Welcome

Most tools tell you what they think. This one tells you how much to believe it. Confidence scoring, uncertainty quantification, and tamper-evident sealing for community-sourced field data.


Table of Contents


Architect's Note on AI Use

VERITAS was designed, architected, and directed by Sheldon K. Salmon. AI tools (including large language models) were used as instruments — the same way a carpenter uses a saw. The intellectual core — the CERTUS Engine, the Damage Confidence Index, the four scoring dimensions, the validity thresholds, the STP integration, and the overall architectural vision — is wholly human-originated.

VERITAS is not a generative AI output; it is a human-built system where AI serves as one of several tools (OpenRouter for photo analysis, TensorFlow.js for offline capability) under strict human oversight. Every line of code, every design decision, and every formula in the CERTUS Engine reflects human intent — and every one of them was adversarially reviewed before shipping.

↑ Back to Table of Contents


Who This Is For

VERITAS solves one problem: you are collecting reports from many people you cannot individually vouch for, and you have to decide which ones to act on.

That problem is not unique to disasters. Anywhere untrusted field reports drive real decisions, the same three needs appear — score the confidence, quantify the uncertainty in that score, and make the record tamper-evident afterward.

Deployment context What VERITAS provides
Humanitarian & disaster response Confidence-weighted damage map inside the critical response window; rescue-signal channel with sealed acknowledgment; offline-first for degraded connectivity
Insurance & loss adjustment Claimant-submitted photo evidence scored for corroboration and consistency; tamper-evident seal on every submission and export; a defensible audit trail when a claim is disputed
Municipal & infrastructure inspection Citizen-reported asset damage (roads, bridges, utilities) triaged by confidence rather than report volume; criticality weighting prioritizes life-safety infrastructure automatically
Utility outage & network assessment Distributed field reports on service condition, with correlated-report detection so five accounts of one outage don't read as five outages
Environmental & compliance monitoring Community-sourced condition reports with declared model limitations, so a regulator can see exactly what the scoring does and does not evaluate
Conflict & fragile-context monitoring GPS fuzzing, sensitive-location anonymization, and anonymous submission built in rather than bolted on

The common requirement: decisions get made on data whose reliability varies enormously, and the cost of acting on a wrong report is high. VERITAS makes that reliability explicit, per report, with the uncertainty stated alongside it.

On domain fit — stated honestly. The engine's scoring dimensions were built for physical-damage field assessment: the classification-consistency checks, event-aware decay curves, and cluster detection are shaped for that use. Deployments outside that shape (e.g. non-damage condition reporting) will want to recalibrate the classification logic — which the architecture supports through its declared configuration, but which is genuine work, not a config toggle. We would rather say that here than have you discover it in week three.

↑ Back to Table of Contents


Licensing at a Glance

Short version: if GPL copyleft is a blocker for you, it does not have to be. A commercial license removes it.

You are… License What it means
NGO, humanitarian org, government agency, academic, or open-source project GPL-3.0 Free. Use it, modify it, deploy it. Derivative works stay open-source.
A company integrating VERITAS into a proprietary or closed-source product Commercial Paid dual-license. No copyleft obligation — your codebase stays yours.
Evaluating, testing, or running a pilot Either Evaluate freely under GPL-3.0. Licensing only matters at the point you ship a proprietary product.

The GPL-3.0 default exists to keep humanitarian and public-interest use free forever. It is not intended as a barrier to commercial adoption — the commercial license is available specifically so that copyleft never becomes the reason a useful deployment doesn't happen.

Commercial licensing, integration support, or pilot enquiries: aionsystem@outlook.com

↑ Back to Table of Contents


What VERITAS Is — and What It Is Not

VERITAS is built on an engine whose core virtue is declared uncertainty. This section applies the same discipline to the platform itself. Read it before relying on any feature — especially the rescue feature.

VERITAS is

  • Verification infrastructure — a deployable platform that collects field reports (and, where configured, emergency signals), scores each report's confidence, quantifies the uncertainty in that score, and presents a confidence-weighted picture to whoever operates the deployment.
  • A prototype at pre-deployment stage — engineered to production standards (audited engine, offline capability, sealed data chains), but with no named operating deployment, no attached responder network, and no field-validated ground truth as of this version. The status badge says exactly this.
  • Honest about its own scores — every DCI carries an Uncertainty Mass; every scored report declares its assumptions and model limitations; suspended reports are shown, never silently dropped.

VERITAS is not

  • A rescue service. This is the most important boundary in this document. The "I Need Rescue" feature transmits a signal to the responder dashboard of the deployment it is running on. A rescue signal is seen only if a responder organization has deployed this instance and is actively monitoring it. VERITAS has no connection to 911, 112, or any emergency service. No rescue organization is currently operating a monitored deployment. A person in danger should always contact official emergency services first, by any available means. Until a deployment operator with a monitored dashboard and a stated response commitment stands behind an instance, the rescue feature is signal infrastructure awaiting an operator — not a channel to help.
  • A guarantee that a signal was seen. The current version has no acknowledgment receipt — the system can prove a signal was sent and sealed, not that a responder saw it. A signal-acknowledgment receipt (responder-side "seen at T," sealed via STP) is a declared engineering priority precisely because, for rescue signals, receipt-of-signal is the load-bearing capability. Until it ships, this gap is stated here rather than papered over.
  • A safety certification of the reports it scores. A green pin means the report scored high confidence under the DCI model and its declared limitations — not that the underlying situation is independently verified.

The design consequence: the platform's value is realized by a deployment operator — an NGO, a disaster agency, a coordination team — who commits to monitoring the dashboard. Everything below describes what that operator gets.

↑ Back to Table of Contents


Quick Start

Get the VERITAS frontend running in under a minute.

git clone https://github.com/AionSystem/VERITAS.git
cd VERITAS

Then simply open public/index.html in your browser.

For offline features (Service Worker, IndexedDB) to work, you may need to serve the files through a local web server:

# Using Python
cd public
python3 -m http.server 8000
# Then visit http://localhost:8000

Note: This starts the frontend only. The api/ serverless functions (Supabase sync, STP seal service) are separate Vercel deployments and will not be active in local mode. All core CERTUS scoring and offline report submission work without them.

That's it. You can now submit reports, explore the responder dashboard, and test the entire platform.

Responder Dashboard — Demo Access Code

DEMO2026

This is a published demo code so evaluators can explore the dashboard without setup — it is intentionally public and provides no security. A real deployment replaces it with operator-managed authentication; see Anonymization & Safety.

For full Supabase sync and deployment, see Installation & Deployment.

↑ Back to Table of Contents


Repository Structure

Key files for evaluators: public/certus-engine-v3.2.2.js (scoring logic) · public/index.html (full platform) · CERTUS.md (engine documentation) · docs/dci-formula.md (DCI formula derivation) · CHANGELOG.md (release history)

VERITAS/
├── public/                         ← All static frontend assets
│   ├── index.html                  ← Main VERITAS interface
│   ├── certus-engine-v3.2.2.js     ← CERTUS Engine v3.2.2 (scoring logic)
│   ├── ai-analysis.js              ← OpenRouter AI integration (GPT-4o-mini + Claude 3.5 Sonnet)
│   ├── manifest.json               ← PWA manifest
│   ├── sw.js                       ← Service Worker (offline capability)
│   └── icons/                      ← App icons for PWA
│
├── api/                            ← Vercel serverless functions (separate deployment)
│   ├── sync.js                     ← Supabase sync endpoint
│   ├── reports.js                  ← Reports API
│   ├── stp-seal.js                 ← STP seal service (GitHub ledger)
│   └── templates/                  ← STP template registry (16 templates)
│       ├── index.js                ← Template loader & detector
│       ├── 01-ai-failure.json      ← AI Failure (DocuSign, Identity)
│       ├── 02-research-priority.json ← Research Priority
│       ├── 03-evidence-chain.json  ← Evidence Chain
│       ├── 04-creative-priority.json ← Creative Priority
│       ├── 05-clinical-record.json ← Clinical Record (PHI Gate)
│       ├── 06-scope-anchor.json    ← Scope Anchor
│       ├── 07-general-trace.json   ← General Trace (default)
│       ├── 08-foresight-seal.json  ← Foresight Seal
│       ├── 09-webeater-link.json   ← Webeater Link (prior seal req)
│       ├── 10-audit-request.json   ← Audit Request (Stripe)
│       ├── 11-audit-completion.json ← Audit Completion (badge req)
│       ├── 12-auditor-application.json ← Auditor Application
│       ├── 13-integrity-violation.json ← Integrity Violation
│       ├── 14-near-miss.json       ← Near Miss
│       ├── 15-veritas-report.json  ← VERITAS Report Seal (auto)
│       └── 16-veritas-export.json  ← VERITAS Export Seal
│
├── supabase/                       ← Database schema
│   └── schema.sql
│
├── docs/                           ← Documentation
│   ├── scale.md
│   ├── anonymization.md
│   ├── architecture.md
│   └── dci-formula.md              ← CERTUS Engine formula documentation
│
├── model/                          ← TensorFlow.js model files (offline AI)
│   └── xbd-model/                  ← xBD disaster damage model (bundled, pending wiring)
│
├── CERTUS.md                       ← CERTUS Engine v3.2.2 documentation
├── NOTICE
├── COMMERCIAL-LICENSE.md
├── TEST_SUITE_VERITAS.md           ← Test suite documentation
├── VERITAS_UNDP_COMPLIANCE.md      ← Requirements-conformance record (UNDP crisis-mapping spec)
├── VERITAS-PROPOSAL.md             ← Original design proposal
├── LICENSE                         ← GPL-3.0
└── README.md                       ← This file

↑ Back to Table of Contents


STP Template Registry (16 Templates)

The Sovereign Trace Protocol integrates 16 permanent seal templates for different use cases:

ID Template Requirements Use Case
01 AI Failure DocuSign, Identity Report AI system failures before remediation
02 Research Priority None Seal hypotheses before results are known
03 Evidence Chain None Chain of custody for documents
04 Creative Priority None Proof of authorship and priority
05 Clinical Record PHI Gate De-identified clinical incident records
06 Scope Anchor None Lock agreed scope before work begins
07 General Trace None Default — seal any observation
08 Foresight Seal None Dated professional predictions
09 Webeater Link Prior Seal Cryptographic links between seals
10 Audit Request Stripe Paid AI output audits
11 Audit Completion Auditor Badge File completed audits to ledger
12 Auditor Application None Apply for STP Certified Auditor badge
13 Integrity Violation None Report bribery, coercion, badge misuse
14 Near Miss None AI near-miss before internal review
15 VERITAS Report Auto Every community damage report
16 VERITAS Export Manual Dataset integrity verification

Templates 01–14 are manual submissions via GitHub issues. Templates 15–16 are integrated with VERITAS for automatic or one-click sealing.

↑ Back to Table of Contents


Overview

Most field-reporting tools stop at the data. They collect, they pin, they export — and then they hand an operator a map full of pins with no way to know which ones to trust.

VERITAS collects field reports online and offline, scores each one's epistemic confidence using the CERTUS Engine, and delivers a confidence-weighted picture to the team operating the deployment. The difference isn't more data — it's data that tells you exactly how much it's worth. Where the deployment calls for it, an emergency-signal channel with sealed acknowledgment receipts runs alongside the reporting flow.

How it works — three steps:

  1. A community member or field reporter submits a report (or emergency signal) from any device, online or offline. The CERTUS Engine scores it instantly.
  2. The operating team opens the dashboard and sees a confidence-weighted map — green pins are actionable, red pins need verification first. Emergency signals appear with critical priority, and an operator can acknowledge one — sealing a "seen at T" receipt that returns to the sender's device.
  3. Every report, every signal, and every export is sealed with a tamper-evident cryptographic timestamp. The data chain is verifiable end-to-end.

Boundary reminder: emergency signals reach the dashboard of the instance they were submitted to, and nowhere else — see What VERITAS Is — and What It Is Not.

  • Live Demo
  • 2-Minute Video: YouTube Video

↑ Back to Table of Contents


Engine Certification — Version Lineage

One version story, stated once, so a reviewer checking fixity finds no drift:

Version Event
v2.5.2 Audit target. The complete four-instrument adversarial audit — PDE v0.3 (12-domain diagnostic), EAE v0.3 (elimination mapping), ANTI-FORGE v1.3 (15-role rejection council), and CAL v0.3 (59 FTT checks across four layers) — ran against this version in sequence, each instrument building on prior findings. Result: 25 findings (1 FATAL · 2 CRITICAL · 7 HIGH · 10 MEDIUM · 5 LOW).
v3.0.0 All 25 findings resolved. Hardening additions below shipped in this version, and the scoring-output version field reflects the engine generation ("3.0.0" series).
v3.2.1 Current. Incremental fixes and integration refinements on the v3.0.0 hardened base. This is the version in public/certus-engine-v3.2.2.js and documented in CERTUS.md.
v3.2.2 — repair release: execution-level review, 19 findings resolved, engine execution-verified.

The audit certifies the v3.0.0 hardening baseline; v3.2.2 carries that baseline forward with incremental changes that have not yet been through a full re-audit. This distinction is stated so the audit claim attaches to exactly the version it examined.

Key Hardening Additions (v3.0.0)

Addition What It Does
Abstraction bargain declared The DCI model documents exactly what physical properties it discards and what failure classes those generate. Every scored output includes a model_limitations block — a permanent, auditable record of what CERTUS cannot see.
Framework Calibration Log (FCL) Scoring outcomes are logged against ground truth. When sufficient validated data accumulates, DCI weights can be empirically recalibrated without any code changes to the scoring pipeline.
Integrity seals Every scored output carries a SHA-256 seal over the report UUID, DCI score, tier, timestamp, and engine version. The report input is also hashed before scoring — downstream consumers can verify the report was not modified between submission and scoring.
Cumulative appeal ceiling Sequential appeals can no longer bypass the 0.95 epistemic ceiling. The cumulative boost is tracked per report — driving confidence past 0.95 through repeated appeals is architecturally prevented.
Model limitations surfaced Every scored report declares exactly what the DCI model cannot see: sensor reliability, atmospheric interference, cultural differences in reporting, translation fidelity, evidence independence, and geographic homogeneity assumptions.

↑ Back to Table of Contents


The CERTUS Engine

The CERTUS Engine is the core of VERITAS — an epistemic scoring system that tells responders how much to trust each report, and how much to trust the trust score itself.

Scoring Dimensions

Dimension Weight Description
Photo Evidence Score (PES) 35% AI analysis via OpenRouter with graduated model trust (see below)
Corroboration Score (COR) 30% Agreement with other reports within 50m
Temporal Freshness (TFR) 20% Linear decay over 48 hours
Classification Consistency (CCI) 15% Cross-category logic checks

Weight rationale: PES and COR carry the highest weight because they are the two externally-verifiable dimensions — photo evidence can be independently assessed, corroboration requires independent reporters agreeing. TFR and CCI are internally-derived signals and are weighted accordingly. Full derivation: docs/dci-formula.md

DCI Formula

DCI = (PES × 0.35) + (COR × 0.30) + (TFR × 0.20) + (CCI × 0.15)
UM  = 1 − min(evidence_sources / 3, 1) × (1 − score_variance)

Output Tiers

DCI Range Validity Status Pin Action
≥ 0.70 VALID 🟢 Green Deploy resources
0.40–0.69 DEGRADED 🟡 Amber Verify locally before acting
< 0.40 SUSPENDED 🔴 Red Must field-verify first

Uncertainty Mass (UM)

Every DCI score carries an Uncertainty Mass (UM) — a measure of how much the score itself is uncertain:

UM Meaning
< 0.35 Score is reliable
0.35–0.60 Score useful but uncertain
≥ 0.60 Do not rely on this score

SUSPENDED reports (DCI < 0.40) remain visible on the responder dashboard with a red pin and a field-verify prompt. They are never silently dropped — their presence is itself information.

Graduated Photo Model Trust

The CERTUS Engine does not assume any AI model is trustworthy without a declaration. Instead, it uses a graduated model trust score [0.0–1.0] derived from calibration evidence, which directly reduces the PES uncertainty penalty as ground truth accumulates.

Trust Score Calibration Status PES UM Penalty Measurement Class
0.0 UNCALIBRATED (no ground truth) 0.20 INFERENTIAL
0.01–0.59 PARTIAL (1–249 validated reports) 0.08–0.20 EVALUATIVE_PARTIAL
0.60–0.85 PARTIAL (250–499 validated reports) 0.03–0.08 EVALUATIVE_PARTIAL
1.0 VERIFIED (formally calibrated) 0.00 EVALUATIVE_CERTIFIED

This means the engine is honest about what it doesn't know now, and automatically becomes more confident as evidence accumulates — without requiring any code changes. The trust score is declared at initialization, logged to the audit trail, and surfaced in every scored output.

Current deployment: openrouter/gpt-4o-mini+claude-3.5-sonnet registered as UNCALIBRATED. Full UM penalty applies. Every scored report declares this explicitly.

Declared Assumptions

Every scored report carries structured assumption identifiers so downstream systems can reason about them programmatically.

Assumption ID Plain Language
COR-A01 ⚠️ First report in this area. No other reports to confirm damage level.
DECAY-A01 ⏱ Report fresh for 48h; evidence weight decays over 7 days.
PES-A01 📷 Photo analyzed by placeholder model. Upgrade for higher confidence.
PES-A02 📷 No photo submitted. Report based on text description only.

Scoring Output Fields

Every scored report includes the following fields in addition to the base DCI and UM output:

{
  // --- existing fields ---
  dci:     0.71,
  tier:    "high",
  usable:  true,
  version: "3.0.0",          // engine generation of the hardened baseline

  // --- hardening fields (v3.0.0 baseline) ---
  input_hash: "inp-7d4a2f1c",       // hash of report before scoring
  integrity_seal: {
    algorithm: "SHA-256",
    hash:      "a3f2b8c1..."        // seal over uuid + dci + tier + timestamp + version
  },
  model_limitations: {
    /* Full abstraction bargain — 6 discarded properties declared */
  },
  fcl_entry_id: "FCL-1716076800-a3f2"  // calibration log reference
}

Critical Integration Note — Silent Mock-Scoring Failure Mode

CERTUS.score() is async. The wrapper function that calls it in index.html (safeCERTUSScore) must use await. If await is missing, the real CERTUS Engine never executes and all reports silently use the mock fallback — with no error raised.

// ❌ WRONG — returns a Promise; always falls back to mock scoring
const result = CERTUS.score(report, nearby, useModel);

// ✅ CORRECT — awaits the real scoring pipeline
const result = await CERTUS.score(report, nearby, useModel);

Why this is treated as a first-class hazard, not a footnote: this failure mode is silent and maximally latent — a mis-integrated deployment would render a normal-looking map where every score is a placeholder, and responders could triage on mock data without any visible error. Two mitigations apply:

  1. Immediate (this version): every mock-scored output is labeled as mock in its score object and UI display, and this note documents the single-line check as the first diagnostic step for any integration.
  2. Declared engineering priority (next engine revision): the scoring path (REAL vs MOCK) will be stamped inside the integrity seal itself, so any sealed dataset is cryptographically self-identifying about which pipeline produced it — a mock-scored export becomes detectable by any downstream verifier, not just by reading the UI.

If scored outputs are unexpectedly returning mock results in production, the missing await is the first thing to check.

↑ Back to Table of Contents


AI Photo Analysis — OpenRouter Integration

VERITAS uses OpenRouter to access AI models for damage assessment, with graceful fallback to ensure continuity.

Model Configuration

Priority Model Purpose
Primary GPT-4o-mini (OpenAI via OpenRouter) Fast, cost-efficient damage assessment
Fallback Claude 3.5 Sonnet (Anthropic via OpenRouter) Higher-accuracy fallback if primary fails
Offline AI TensorFlow.js + xBD model (bundled, pending wiring) Future local inference — see note below

How It Works

  1. User captures photo → Canvas strips EXIF metadata
  2. Image sent to OpenRouter API with structured prompt
  3. AI returns: damage level, confidence score, description
  4. CERTUS Engine applies graduated trust scoring to the confidence value for the PES dimension
  5. If API unavailable → falls back to mock analysis with full uncertainty penalty applied and clearly labeled mock scores

Offline AI — current state: The xBD model file is present at model/xbd-model/. It is not yet wired — offline photo scoring currently uses the clearly-labeled mock path with the full UNCALIBRATED uncertainty penalty. When wired, it will provide fully offline, sovereign photo inference with zero external API dependency. The xBD model integration is a post-award implementation task — the architecture is in place, the model file is present, and the engine's graduated trust system will automatically reduce the uncertainty penalty once the model is wired and calibrated.

The engine registers the full OpenRouter endpoint (primary + fallback) as a single declared model. When ground truth validation data becomes available, updateModelCalibration() is called to reduce the PES uncertainty penalty without any code changes.

Language Limitation — NLP Analysis

The NLP keyword dictionaries used for witness statement analysis and infrastructure type inference are currently English-only. This means non-English witness descriptions may receive systematically lower Classification Consistency (CCI) scores.

The limitation is declared in the engine's NLP_CONFIG.language_support block with a documented mitigation path: translate keyword dictionaries into all six UN languages and/or integrate multilingual embeddings for language-agnostic semantic matching.

Important: This limitation affects only the automated text analysis layer. The VERITAS UI and full audio guidance are operational across all six UN languages — the NLP limitation does not affect the submission interface, the responder dashboard, or any audio-guided workflow. Multilingual NLP dictionaries are planned for v3.1.

↑ Back to Table of Contents


Requirements Provenance

VERITAS was originally built against the UNDP crisis-mapping requirements specification — an institutional, third-party requirements document covering offline operation, multilingual support, damage classification schemas, export formats, secure data handling, and modular architecture. Building to an external spec rather than a self-defined one is why the feature set is opinionated and complete rather than exploratory.

The full requirements-conformance record — every requirement mapped to its implementation, with two honestly marked partial — is preserved in VERITAS_UNDP_COMPLIANCE.md. It remains in the repository as evidence of the standard the platform was built to, not as a claim of endorsement by any organization.

What that means for a new deployment: the schemas, export formats, and field taxonomies are humanitarian-sector compatible out of the box (a real advantage if you work with NGOs or agencies), and everything is JSON-configurable if your domain needs different ones.

Capability State
Offline submission, storage, and sync ✅ Fully operational
Six-language UI and audio guidance ✅ Fully operational
Damage classification schema (3-tier, sector-standard) ✅ Fully operational
Export formats (JSON, CSV, GeoJSON, Shapefile) with integrity hash ✅ Fully operational
Secure data handling (UUID-only, EXIF stripped, GPS fuzzing) ✅ Fully operational
Modular field architecture (JSON-driven) ✅ Fully operational
Online AI photo analysis ◐ Operational; model registered UNCALIBRATED with full uncertainty penalty declared until ground-truth calibration accumulates
Offline AI photo analysis ◐ xBD model bundled, wiring pending; offline path uses clearly-labeled fallback with full uncertainty penalty
Automated NLP text analysis ◐ English-only dictionaries; non-English reports flagged with a declared translation penalty rather than silently mis-scored

↑ Back to Table of Contents


The VERITAS Ecosystem

VERITAS is a unified platform with three core capabilities built into a single interface:

Feature Purpose Access
Report Damage Community damage reporting + DCI scoring Public
I Need Rescue Rescue signal to the deployment's responder dashboard — see boundary in What VERITAS Is — and What It Is Not Public
Operator Dashboard Confidence-weighted map + signal coordination for the deployment operator Demo access code (DEMO2026) — operator auth in real deployments

All three share the same design language, offline capability, and STP integration.

↑ Back to Table of Contents


Sovereign Trace Protocol Integration

VERITAS integrates with the Sovereign Trace Protocol — a permanence infrastructure with 16 template types. Every report and every export can be permanently sealed with a triple-time cryptographic stamp (Gregorian, Hebrew lunisolar, 13-Moon Dreamspell).

Permanence note: Sealed records are filed as GitHub Issues on the STP ledger repository. This provides immutable timestamping within the constraints of the GitHub platform. If the STP GitHub API is unavailable at the time of submission, the seal is queued locally and filed on next successful connection — the report itself is never blocked.

What the seal proves: that this exact report or export existed at this moment and has not been altered since. It does not prove the report's content is accurate, and it does not prove a signal was seen by a responder — see the acknowledgment-receipt priority in What VERITAS Is — and What It Is Not.

How It Works

Template Trigger Result
Template 15 (VERITAS Report) Automatic after report submission Every community damage report is permanently sealed
Template 16 (VERITAS Export) Manual via "STP Seal" button Every exported dataset has verifiable integrity

Verification

Anyone can verify a sealed dataset by:

  1. Recomputing the SHA-256 hash of the exported file
  2. Comparing it to the hash sealed in the STP ledger
  3. If they match, the dataset has not been altered since export

↑ Back to Table of Contents


Technical Stack

Layer Technology Why
App Shell PWA (HTML + Service Worker) Offline-first, installable
Local Storage IndexedDB Survives offline, syncs when back online; unsynced reports persist indefinitely until connection restored
Maps Leaflet.js + OpenStreetMap Free, open source, offline tiles
AI Analysis OpenRouter (GPT-4o-mini primary, Claude 3.5 Sonnet fallback) Cost-efficient with high-accuracy fallback
Offline AI TensorFlow.js + xBD model (bundled, pending wiring) Local inference when offline — architecture in place, model present, wiring post-award
Backend Sync Supabase Real-time, row-level security
STP Ledger GitHub Issues + API Immutable, verifiable, permanent within GitHub platform
Deployment Vercel (api/) + GitHub Pages (public/) Two separate deployments — frontend is fully functional standalone
License GPL-3.0 with Commercial option Open source for humanitarian use, commercial licenses available

↑ Back to Table of Contents


Three Core Features

📍 Report Damage — Community Submission (Mobile-First)

For a community member in a flood zone with limited connectivity who needs to document and submit damage — without an account, without waiting for signal.

  • Works offline (IndexedDB + Service Worker)
  • Photo capture (EXIF stripped automatically)
  • 3-tier damage classification (humanitarian-sector standard schema)
  • All 8 infrastructure types + Other
  • GPS (precise or fuzzy ±100m for conflict zones)
  • Anonymous submission (UUID only, no IP logged at application layer)
  • AI-assisted damage detection (OpenRouter)
  • Confirmation screen shows DCI + UM + validity status
  • Automatic STP seal (Template 15) — every report permanently recorded

🆘 I Need Rescue — Emergency Signal to the Deployment Dashboard

For a person trapped or in immediate danger who needs to send a rescue signal to the team operating this deployment — works offline, tracks last known location, and prioritizes visibility on the responder dashboard.

⚠️ Boundary — read first: this signal reaches only the responder dashboard of the VERITAS instance it is sent from. It does not contact 911, 112, or any emergency service, and it is seen only if a responder organization is actively monitoring this deployment. Always contact official emergency services first by any available means. The full boundary statement: What VERITAS Is — and What It Is Not.

  • One-tap emergency button
  • Automatic location capture (GPS with fallback to last known)
  • Photo capture of surroundings
  • Works offline — queues signal for when connectivity returns
  • Last known location tracking (saved every 30 seconds when app open)
  • High-visibility red pin on responder map
  • Critical urgency flag in export data
  • Confirmation screen with location, instructions, and the monitoring boundary restated
  • Signal-acknowledgment receipt (responder "seen at T", STP-sealed) — declared engineering priority; until it ships, the system proves a signal was sent and sealed, not that it was seen

🗺 Operator Dashboard — Deployment Team Access

For a coordination team member at a crisis operations desk who needs to triage incoming reports, rescue signals, and allocate field resources with confidence, not guesswork.

Demo access code: DEMO2026 (published so evaluators can explore — real deployments use operator-managed authentication)

  • Confidence map with color-coded pins (VALID/DEGRADED/SUSPENDED)
  • Rescue signals highlighted with 🆘 icon and priority status
  • Real-time updates via Supabase subscription
  • Versioned reports — only the latest per location
  • Live confidence dashboard with DCI distribution
  • Conflict flags (contradicting reports)
  • Timeline slider — replay the first 48 hours
  • One-click export: JSON, CSV, GeoJSON, Shapefile with integrity hash
  • DCI Report Card with uncertainty breakdown
  • STP seal integration (Template 16) — one-click dataset integrity sealing

↑ Back to Table of Contents


Anonymization & Safety

  • No accounts, no emails, no IP logging at the application layer — UUID generated client-side

    Note: Infrastructure-layer providers (Vercel, Supabase) may log request metadata per their own policies. Review their privacy documentation for deployment-level considerations.

  • EXIF stripped from photos before upload (Canvas API)
  • GPS fuzzing — "Area Report (±100m)" for conflict zones
  • Sensitive location anonymization (shelters, medical, schools)
  • Data retention policy — 365 days, community opt-out
  • Indigenous data sovereignty — UNDRIP Article 31 as design principle; consultation and consent mechanisms are an active development priority
  • Dashboard authentication: the published DEMO2026 code is a demo convenience for evaluators and provides no security. A real deployment gates the dashboard behind operator-managed authentication (the Supabase row-level-security layer supports this); deploying with the demo code in a live crisis would expose rescue-signal locations and is explicitly warned against here.

↑ Back to Table of Contents


Installation & Deployment

1. Clone the repo

git clone https://github.com/AionSystem/VERITAS.git
cd VERITAS

2. Configure OpenRouter (for AI analysis)

  • Sign up at openrouter.ai
  • Get your API key
  • On first use, the app will prompt for the key (stored locally)

3. Register the photo model at initialization

await CERTUS.initialize(supabaseUrl, supabaseKey, {
  photoModel: {
    id:                   'openrouter/gpt-4o-mini+claude-3.5-sonnet',
    type:                 'openrouter',
    calibration_status:   'UNCALIBRATED',
    calibration_samples:  0,
    calibration_dataset:  'Primary: openai/gpt-4o-mini, Fallback: anthropic/claude-3-5-sonnet',
    registered_by:        'certus-deployment'
  }
})

As ground truth validation data accumulates, call CERTUS.updateModelCalibration(n, 'PARTIAL') — no code changes required.

4. Configure Supabase (optional)

  • Create a free Supabase project
  • Run supabase/schema.sql to create the reports table
  • In public/index.html, set USE_SUPABASE: true

5. Deploy to Vercel

npm install -g vercel
vercel --prod

6. Deploy STP service (separate project)

The STP seal service runs independently with 16 templates:

cd ../stp-seal-service
vercel --prod

7. If you operate a live deployment

  • Replace the demo dashboard code with operator-managed authentication before any live use
  • Commit to a monitoring schedule for the responder dashboard — the rescue feature's value is exactly the operator's monitoring commitment
  • State your deployment's monitoring status to your community, so signal senders know what the button does and does not do

↑ Back to Table of Contents


License

Summarized in Licensing at a Glance — the full terms:

VERITAS is dual-licensed:

  • GNU General Public License v3.0 — for humanitarian, non-profit, academic, and open-source use
  • Commercial License — for proprietary use, closed-source integration, and OEM applications
User Type License
Humanitarian orgs / NGOs / UN agencies GPL-3.0 (Free)
Academic / Research GPL-3.0 (Free)
Government Disaster Agencies GPL-3.0 (Free)
Open-source projects GPL-3.0 (Free)
Commercial (proprietary) Commercial License (Fee)

See LICENSE for GPL terms and COMMERCIAL-LICENSE.md for commercial licensing information.

For commercial licensing inquiries: aionsystem@outlook.com

↑ Back to Table of Contents


Acknowledgments

  • xBD Dataset — disaster building damage assessment
  • TensorFlow.js — client-side AI
  • OpenRouter — unified AI API
  • Leaflet.js — maps
  • Supabase — backend sync
  • GPT-4o-mini (OpenAI) — primary damage assessment model
  • Claude 3.5 Sonnet (Anthropic) — fallback damage assessment model

↑ Back to Table of Contents


The code is open source. The judgment behind the architecture — the audit lineage, the calibration discipline, the declared limits — is the part that took the work.

This is an application of the AION Constitutional Stack — applied to community-sourced field data and signal coordination. The method travels: the same scoring architecture works anywhere untrusted reports drive consequential decisions.


CERTUS Engine v3.2.2 — hardened baseline v3.0.0, four-instrument audit complete, 25 findings resolved. STP Template Registry — 16 permanent seal types. VERITAS — Every report scored with its uncertainty stated. Every signal acknowledgment sealed and returned to the sender. Every export verifiable.

About

Sheldon K. Salmon — AI Reliability Architect. Creator of the AION Constitutional Stack and the CERTUS engine — epistemic scoring that says how much to trust crisis data, and how much to trust the score. Code is open source. The judgment is not.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages