Skip to content

AionSystem/CERTUS-ENGINE

Repository files navigation

DOI

CERTUS Engine v3.2.1

Certainty Engineering for Crisis Data — Sovereignty-Hardened

Author: Sheldon K. Salmon & ALBEDO · AionSystem · May 2026


Version Audit Findings License


Table of Contents

# Section
1 Release Summary — v3.2.1
2 The Dispatch Desk — What CERTUS Actually Is
3 Scoring Formula
4 Graduated Photo Model Trust
5 Framework Calibration Log (FCL) & Self‑Calibration
6 Integrity Seals & Canonical Serialisation
7 Abstraction Bargain
8 Thresholds and Actions
9 Sub-Component Details
10 Signal Intelligence Layer
11 Adversarial Resistance
12 Reporter Accountability & GDPR
13 Uncertainty Mass (UM)
14 Constitutional Governance Layer
15 Mock Data Warning
16 Declared Assumptions
17 Initialization
18 Output Structure
19 Offline and Field Mode
20 Accessibility
21 Roadmap

1 · Release Summary — v3.2.1

CERTUS v3.2.1 is the culmination of a full four‑instrument adversarial audit across six versions (v2.5.2 → v3.2.1). The stack — PDE v0.3, EAE v0.3, ANTI‑FORGE v1.3, and CAL v0.3 — ran sequentially, each instrument building on the findings of the previous. A total of 57 findings (0 FATAL, 0 CRITICAL) have been resolved, including 12 major enhancements derived from the red‑team process.

Key Enhancements (v3.0.1 → v3.2.1)

Enhancement Severity Resolution
Class instantiation (multi‑tenant, horizontal scaling) CRITICAL CERTUSEngine class; createForTenant() factory
Canonical JSON seal (cross‑engine tamper‑evidence) CRITICAL _canonicalSerialize() replaces JSON.stringify()
Safe batch concurrency (error isolation, configurable limit) CRITICAL _withConcurrencyLimit(); batch results segregated
Nonlinear event‑aware TFR decay (earthquake, flood, cyclone) HIGH Event‑type‑specific decay curves; reconciliation gate
Infrastructure criticality multiplier HIGH dci_priority (Medical 1.5×, Residential 1.0×)
Spatial cluster detection (mass‑casualty events) HIGH detectSpatialCluster() – 2km/20min, 5‑report threshold
Multilingual CCI with translation penalty HIGH language_mismatch flag; +0.10 UM penalty; transparency
HMAC‑signed photo API calls HIGH X-CERTUS-Signature; configurable secret
GDPR data portability (export/delete) MEDIUM exportReporterData(), deleteReporterData()
Damage progression tracker (time‑series per location) MEDIUM recordLocationSnapshot(), getProgressionSignal()
Pre‑aggregated EDS cache (O(1) health check) MEDIUM _getOrComputeEDS(); 60‑second TTL
Certificate expiry enforcement LOW validateCertificate() called before sharing

All 57 findings are documented in the journal and resolved in the final merged code. The engine is production‑ready for enterprise, government, and humanitarian deployment.



2 · The Dispatch Desk — What CERTUS Actually Is

You don't need the formula to understand this. Start here.

Picture a dispatch desk in a crisis operations center. The phones are ringing. Reports are coming in from across a city that just took a direct hit — hundreds of them, then thousands. Each one is a person with a phone, standing somewhere, telling you what they see.

Some of them are right. Some of them are wrong. Some are standing in front of a building that looked fine an hour ago and has since half‑collapsed. Some are describing rubble from two blocks away, not the building in the photo. Some are submitting the same location twice because they weren't sure the first one went through. And some — a small number — are submitting deliberately false reports to redirect response resources.

The operator at the dispatch desk has one job: before a truck moves, before a team deploys, before a resource gets committed — figure out which reports to trust.

That operator is CERTUS.


Every report that arrives on the desk gets a number. Not a guess. A number built from four separate lines of evidence — the photo, the neighbourhood consensus, the timestamp, and an internal logic check. CERTUS weighs all four, combines them, and writes a single score on the report: a number between 0.0 and 1.0.

But that's not all. CERTUS also calculates an Uncertainty Mass (UM) — a measure of how much uncertainty is baked into that score. A high‑confidence score with low uncertainty is actionable. A high‑confidence score with high uncertainty is a warning sign. The UM tells you:

UM Range Status Meaning
< 0.35 VALID Score is reliable — act on it
0.35 – 0.60 DEGRADED Score useful but uncertain — verify locally
> 0.60 SUSPENDED Do not rely — must field‑verify first

Then it stamps the report with a colour and routes it.

🟢 Green — score ≥ 0.70 AND UM < 0.35. CERTUS is confident. This report goes to the front of the stack. Responders can act on it.

🟡 Amber — score between 0.40 and 0.69, OR UM is 0.35–0.60. Something is uncertain — maybe only one person reported it, maybe the photo was blurry, maybe the report is 30 hours old. Watch it. Don't ignore it. Don't act on it alone.

🔴 Red — score below 0.40 OR UM > 0.60. CERTUS is raising its hand. A human needs to look at this before anything moves. Not because the reporter is lying — they probably aren't — but because the evidence isn't strong enough yet to stake a deployment decision on it.


The Conflict Rule: If two reports arrive from the same address and they contradict each other — one says "Completely damaged," one says "Minor damage" — CERTUS flags the location as a conflict. The whole location goes red immediately, regardless of individual scores. Contradicting reports at the same address don't average out. They signal that something is genuinely unknown, and unknown is not a safe basis for action. A human resolves the conflict. Then the location is re‑evaluated.

The Cluster Rule: When a cluster of reports arrives from the same GPS location, at the same time, with similar photos — CERTUS raises a flag before routing any of them. Evidence from people who were in the same place at the same time, comparing notes, is not five independent confirmations. It may be one shared perception submitted five times. CERTUS knows the difference.


The purpose of the engine is not to replace the reporter or the responder. It is to sit between them and do the one thing both of them need: translate raw human signals into a number that honestly represents how much those signals should be trusted — and tell you how sure it is about that number.

The trucks move on green. The humans watch amber. The red pins wait for eyes.



3 · Scoring Formula


DCI = (0.35 × PES_eff) + (0.30 × COR) + (0.20 × TFR) + (0.15 × CCI)

Component Description Range
PES_eff Photo Evidence Score — AI analysis via OpenRouter, gated at model confidence ≥ 0.60, scaled by graduated model trust 0.0 – 1.0
COR Corroboration Score — agreement with independent reports within dynamic radius (density‑adjusted), weighted by reporter reputation 0.0 – 1.0
TFR Temporal Freshness — event‑aware decay (earthquake, flood, cyclone, default); reconciliation gate for fresh evidence 0.0 – 1.0
CCI Classification Consistency — cross‑category logic check, expanded suspicious combinations, multilingual penalty 0.0 – 1.0

Epistemic Ceiling: No DCI score can exceed 0.95. Field conditions always carry residual uncertainty. This constraint is architectural and not configurable. The ceiling is now cumulative across all appeals — sequential appeals cannot bypass it.

Self‑Calibrating Weights (v3.2.1): The engine provides calibrateWeights(minEntries) that analyses FCL entries with ground truth and recommends updated dimension weights (70/30 dampened blend). Human‑in‑the‑loop review is required before applying new weights in production.



4 · Graduated Photo Model Trust

CERTUS 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 and continuously 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

The trust score is declared at initialization and logged immutably to the audit trail. No code changes are required as calibration evidence accumulates — the engine reduces its own penalty continuously via updateModelCalibration().

Photo API Security (v3.2.1): All requests to the photo analysis endpoint are signed with an HMAC‑SHA‑256 timestamp and signature header (X-CERTUS-Timestamp, X-CERTUS-Signature). Production deployments must set PRODUCTION.photoApiHmacSecret. The API call also includes exponential backoff retries (max 3 attempts) and a circuit breaker.

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



5 · Framework Calibration Log (FCL) & Self‑Calibration

CERTUS records scoring outcomes against ground truth through FCL entries. Every scored report where ground truth is available produces an entry recording the predicted DCI, predicted tier, actual outcome, and per‑dimension scores.

// Access calibration data
const entries = CERTUS.getFCLEntries();
const count   = CERTUS.getFCLCount();

console.log(
  `FCL entries: ${count} — calibration ${count >= 20 ? 'active' : 'pending (need 20+ entries)'}`
);

// When enough ground truth exists, get recommended weight updates
const calibration = CERTUS.calibrateWeights(20);
if (calibration.calibrated) {
  console.log('Recommended weights:', calibration.recommended_weights);
  // After human review: CERTUS.W = calibration.updated_weights_dampened;
}

FCL entries are stored in memory (capped at 500) and persisted to storage (IndexedDB, memory, or Supabase). The calibrateWeights() method computes MAE per dimension and returns a 70/30 dampened blend of current and recommended weights. Human review is required before applying – the engine never auto‑updates its weights.


↑ Back to Table of Contents


6 · Integrity Seals & Canonical Serialisation

Every scored output carries a cryptographic integrity seal generated via _sealResult(). The seal uses SHA‑256 (Web Crypto API when available) over the report UUID, DCI score, tier, timestamp, engine version, and tenant ID. The report input is also hashed via _hashReportInput() so downstream consumers can verify the report was not modified between submission and scoring.

// Every score output includes:
{
  integrity_seal: {
    algorithm: "SHA-256",
    hash:      "a3f2b8c1...",
    payload:   "{...}"          // canonical JSON
  },
  input_hash: "sha256:7d4a2f1c..."
}

Canonical serialisation (v3.2.1): The seal uses _canonicalSerialize() to sort object keys alphabetically, ensuring identical seals across different JavaScript engines (Node.js vs browser). This fixes the cross‑environment tamper‑evidence chain that previously broke seals when moving between runtime environments.


↑ Back to Table of Contents


7 · Abstraction Bargain

Every computational model discards physical properties to enable formal reasoning. Each discarded property generates a class of failure modes invisible to the model. CERTUS declares its abstraction bargain explicitly via the MODEL_LIMITATIONS block — a permanent, auditable declaration of what the DCI model cannot see.

Discarded Property Failure Class Sensor reliability Damaged camera lenses, low‑light noise, sensor artifacts producing false evidence scores Atmospheric interference Smoke, dust, fog, rain degrading photo quality below detectable threshold Cultural differences in damage reporting Non‑English descriptions receiving systematically lower CCI scores (now flagged with language_mismatch) Language translation fidelity Semantic drift during automated translation affecting damage‑level signals (+0.10 UM penalty) Independence of nearby reports Correlated community reports inflating corroboration scores beyond actual independent confirmation Geographic homogeneity Uniform COR radius applied across all population densities – now dynamically adjusted via OSM building density (ENH‑02) Event‑specific decay Earthquake, flood, cyclone profiles are hand‑tuned; a tsunami would require its own curve

Specification primacy ordering: When behaviour contradicts expectation, verify whether the specification permits the behaviour before diagnosing an implementation error.


↑ Back to Table of Contents


8 · Thresholds and Actions

DCI Range Tier UM Threshold Pin Color Action ≥ 0.70 High Confidence < 0.35 🟢 Green Trusted — ready for triage 0.40 – 0.69 Watch < 0.60 🟡 Amber Monitor — verify locally < 0.40 Review Required any 🔴 Red Human verification required before action any any ≥ 0.60 🔴 Red Do not act — field verification required


↑ Back to Table of Contents


9 · Sub-Component Details

9.1 · Photo Evidence Score (PES_eff)

VERITAS uses OpenRouter to access AI models for damage assessment.

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

Processing pipeline:

  1. User captures photo — Canvas API strips EXIF metadata
  2. Image sent to OpenRouter with structured prompt
  3. AI returns: damage level, confidence score, description
  4. CERTUS derives a model trust score from registered calibration data
  5. If confidence < 0.60 → PES_eff applies trust‑scaled gate
  6. If confidence ≥ 0.60 → PES_eff used directly; UM penalty scaled by trust
  7. If API unavailable → falls back to TensorFlow.js offline model (xBD dataset)

Resilient API calls (v3.2.1): The photo analysis endpoint is configurable (PRODUCTION.photoApiEndpoint). The engine retries failed requests up to 3 times with exponential backoff (500ms, 1000ms, 2000ms) and a circuit breaker that opens after 3 consecutive failures. Batch scoring runs concurrently with a default limit of 10 simultaneous requests.


9.2 · Corroboration Score (COR) — Density‑Adjusted & Reputation‑Weighted

Scenario Score Uncertainty Contribution No nearby reports Not evaluable (excluded) +0.20 UM One nearby report — agrees 0.55 +0.05 UM One nearby report — disagrees 0.40 +0.05 UM Multiple independent reports — strong agreement 0.70 0 UM Multiple reports — contradiction < 0.40 +0.08 UM

Dynamic COR radius (ENH‑02): Queries OpenStreetMap for building density in a 500m bounding box. Adjusts radius from 20m (extreme density) to 200m (rural). Eliminates geographic bias.

Reputation weighting (ENH‑04): When reputationFn is provided, nearby reports from banned reporters are excluded, and the agreement weight is scaled by each reporter’s reputation score (0.5 + score/2). Good reporters matter more.

Evidence Independence Detection: CERTUS detects when multiple reports are likely correlated — same submitter cluster, same time window, same GPS cluster, similar photos. Correlated evidence is down‑weighted before entering the COR calculation.


9.3 · Temporal Freshness (TFR) — Event‑Aware & Reconciliation Gate

TFR = profile.fn(hours_elapsed)

Event Type Decay Curve 6h 12h 24h 48h Earthquake Rescue window: high first 6h, then gradual 1.00 0.78 0.52 0.27 Flood Stays relevant longer – 120h half‑life 0.95 0.90 0.80 0.60 Cyclone Moderate decay, 96h half‑life 0.94 0.88 0.75 0.50 Default Linear 48h half‑life 0.88 0.75 0.50 0.00

Use report.eventType = 'earthquake' | 'flood' | 'cyclone' | 'default' in the report object.

Reconciliation Gate: If the report is stale (TFR EXPIRED) but fresh evidence (e.g., satellite photo) is submitted within 6h, TFR recovers to AGING_RECOVERED (≥0.45). The recovery is noted in dci_decay_reconciliation.


9.4 · Classification Consistency (CCI) — Expanded & Multilingual

Combination CCI Uncertainty Reason Any + any (consistent) 1.0 0 Consistent "Completely damaged" + "Road" 0.70 +0.08 Roads rarely achieve total collapse "Completely damaged" + "Utility" 0.75 +0.08 Utility infrastructure rarely total collapse "Completely damaged" + "Bridge" 0.80 +0.08 Bridge collapse plausible but verify "Minimal/No damage" + "Bridge" 0.75 +0.08 Bridges rarely sustain only cosmetic damage "Completely damaged" + "Medical" 0.85 +0.08 High consequence — verify urgently "Completely damaged" + "Government Building" 0.80 +0.08 Coordination facility — escalate "Minimal/No damage" + "Residential" 0.95 +0.08 Common and plausible Missing classification 0.80 0 Default applied

Multilingual handling (v3.2.1): When witnessText is present and the report language is not English, a +0.10 UM penalty is added and the note [NLP‑A01] is attached. The language_mismatch flag is set in dci_flags. Full multilingual keyword dictionaries are planned for v3.3.


↑ Back to Table of Contents


10 · Signal Intelligence Layer

NLP Witness Statement Analysis

Text fields are analysed to extract damage‑level signals and infer infrastructure type directly from witness descriptions.

v3.2.1 Note: Non‑English witness statements receive a +0.10 UM penalty and a language_mismatch flag, making the bias transparent. Full multilingual keyword dictionaries are planned for v3.3; the current fallback uses a translation‑uncertainty penalty.


Source Credibility Scoring

Evidence sources are assigned credibility weights before entering the COR calculation.

Source Type Credibility Weight First‑hand witness 0.9 Community‑verified reporter Bonus applied at COR Unverified secondhand Reduced weight


Cross‑Validation

Photo evidence, text description, and GPS location are cross‑checked for internal consistency. A photo showing minor damage submitted with a "complete destruction" classification triggers a CCI penalty.


↑ Back to Table of Contents


11 · Adversarial Resistance

Adversarial Pattern Detection

Multi‑signal detection via _detectAdversarialPattern():

· Duplicate photo detection via perceptual hashing (dHash in browser · FNV‑1a in Node) · Temporal clustering analysis · Submission rate monitoring · Coordinate proximity clustering

v3.0.0: Perceptual hash threshold surfaced to THRESHOLDS.PERCEPTUAL_HASH_THRESHOLD (default 0.95).

Spatial cluster detection (v3.2.1): detectSpatialCluster() scans reports within a 2km radius over a 20‑minute window. When 5+ reports are found, it returns cluster_detected: true with severity MASS_CASUALTY_RISK if ≥60% are “Completely damaged”. The cluster centroid and recommendation are provided for immediate aggregate dispatch.

Certificate expiry enforcement (v3.2.1): Verification certificates expire after 48 hours. validateCertificate() checks the expiry before sharing; expired certificates return shareable: false with action RE_SCORE_REPORT.


Reporter Reputation System

Every reporter carries a reputation score updated after field verification.

Event Reputation Change Field‑verified accurate report +10 Confirmed false report −20 Ban threshold −100


Community Verification Badges

Reporters with consistently verified submissions earn community verification status, which applies a source credibility bonus to all future submissions.


↑ Back to Table of Contents


12 · Reporter Accountability & GDPR

Appeal Workflow

Every reporter may appeal a SUSPENDED or DEGRADED score up to 3 times per report, with new evidence required per appeal.

v3.0.0: The epistemic ceiling (0.95) is now cumulative across all appeals. Sequential appeals cannot drive confidence past 0.95. The cumulative boost is tracked per report via _cumulativeAppealBoost.


Data Correction Workflow

Reporters may submit corrections via /api/correction. All corrections are versioned and audited.


GDPR Article 20 – Data Portability (v3.2.1)

Any reporter can request all their data in machine‑readable format via exportReporterData(reporterId). The export includes:

· Reputation record · FCL entries · Appeals history · Data recipients

Deletion is available via deleteReporterData(reporterId, verificationToken). After deletion, the reporter’s record is redacted (aggregate signal only, no PII).


Whistleblower Channel

Planned endpoint: /api/whistleblower · Status: Planned — v3.3


↑ Back to Table of Contents


13 · Uncertainty Mass (UM)

UM Components

Source Base Contribution Condition No photo +0.25 PES excluded UNCALIBRATED model +0.20 trust_score = 0.0 VERIFIED model +0.00 trust_score = 1.0 No corroboration +0.20 COR excluded Weak corroboration +0.05 Only one nearby report Contradiction +0.08 Multiple reports disagree Aging report +0.05 – +0.15 Based on hours elapsed Classification flagged +0.08 Suspicious combination Language mismatch +0.10 Non‑English, translation penalty Correlated failures +0.20 – +0.60 Multiple missing dimensions


UM Calculation

UM = 1 − ∏(1 − pᵢ)

UM Validity Thresholds

UM Range Validity Status Meaning < 0.35 VALID Score is reliable — act on it 0.35 – 0.60 DEGRADED Score useful but uncertain 0.60 SUSPENDED Do not rely on this score


↑ Back to Table of Contents


14 · Constitutional Governance Layer

Every scored output includes a constitutional_status block.


Prohibited Uses – Enforced at Engine Level (v3.2.1)

The engine now checks context.stated_purpose against a keyword list (PROHIBITED_USES). If a blocked use is detected (e.g., “weaponization”, “surveillance”), the score is refused with a constitutional error. Insurance denial is flagged but not blocked.

Prohibited Use Keywords Action Surveillance track individual, monitor person, identify individual, locate specific person Block (Law 4) Weaponization target strike, fire solution, weapons coordinates, strike package Block (Law 6) Insurance denial deny claim, reject insurance, coverage denial Flag only


Consent Gate

The engine provides getConsentForm() but does not block scoring if consent has not been collected. Consent enforcement is the caller's obligation.


Indigenous Data Sovereignty

CERTUS applies the UNDRIP Article 31 FPIC standard:

· Digital signature of community council required · One‑year validity period · Revocable at any time · Community data ownership preserved


↑ Back to Table of Contents


15 · Mock Data Warning

⚠️ Production deployments must read this section.

Emergency contact numbers, shelter coordinates, and medical facility locations in CERTUS are mock data for testing only. Production deployments must override MOCK_EMERGENCY_CONFIG with live geospatial facility databases.

Every mock‑sourced return object carries:

· stub: true — programmatic detection flag · stub_warning — human‑readable warning string

Callers must check for stub: true and reject mock data before any operational use.


↑ Back to Table of Contents


16 · Declared Assumptions

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. DECAY-A02 ⏱ Event‑specific decay active – earthquake/flood/cyclone profiles applied. PES-A01 📷 Photo analyzed by placeholder model. Upgrade for higher confidence. PES-A02 📷 No photo submitted. Report based on text description only. NLP-A01 🌐 This report is not in English. The damage classifier works best in English — confidence may be lower than actual damage.


↑ Back to Table of Contents


17 · Initialization

const CERTUS = new CERTUSEngine(); // or use the global singleton

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'
  },
  production: {
    photoApiHmacSecret: process.env.CERTUS_HMAC_SECRET,  // v3.2.1 – optional
    eventDecayProfiles: { /* custom curves */ }          // v3.2.1 – optional override
  }
});

// As field validation accumulates — no code changes required:
await CERTUS.updateModelCalibration(validatedSampleCount, 'PARTIAL');

// Access FCL calibration data:
const entries = CERTUS.getFCLEntries();

// Self‑calibration (v3.2.1):
const calibration = CERTUS.calibrateWeights(20);
if (calibration.calibrated && confirm('Apply new weights?')) {
  CERTUS.W = calibration.updated_weights_dampened;
}

↑ Back to Table of Contents


18 · Output Structure

{
  // Core score
  dci:     0.71,
  dci_raw: 0.71,               // unadjusted (for calibration)
  dci_priority: 0.92,          // criticality‑adjusted (Medical=1.5×)
  tier:    "high",
  usable:  true,
  version: "3.2.1",

  // Integrity
  input_hash:     "sha256:7d4a2f1c...",
  integrity_seal: {
    algorithm: "SHA-256",
    hash:      "a3f2b8c1...",
    payload:   "{...}"          // canonical JSON
  },

  // Per-dimension scores
  dci_pes: 0.85,
  dci_cor: 0.60,
  dci_tfr: 0.75,
  dci_cci: 1.0,

  // Uncertainty
  dci_uncertainty_mass:   0.28,
  dci_validity_status:    "VALID",
  dci_um_breakdown: [
    "📷 Photo evidence clear — model UNCALIBRATED, full penalty applied",
    "🔍 No corroboration yet"
  ],

  // Diagnostics
  dci_strengths:   [],
  dci_weaknesses:  [],
  dci_bottleneck:  { dimension: "COR", value: 0.60 },
  dci_assumptions: "⚠️ First report in this area.",
  dci_assumptions_raw: [{ id: "COR-A01", plain_language: "..." }],

  // Field view (responder-facing)
  dci_field_view: {
    action:     "SHARE THIS REPORT",
    confidence: "HIGH",
    what_to_do: "Send this to response coordinators.",
    share_code: "VRT-8A3F-9B2E"
  },

  // Flags (v3.2.1 additions)
  dci_flags: {
    pes_gated:         false,
    cor_no_evidence:   true,
    cor_contradiction: false,
    language_mismatch: true,           // v3.2.1
    language_reported: "ar",           // v3.2.1
    language_nlp_dictionary: "en"      // v3.2.1
  },
  dci_cor_signal:          "NO_EVIDENCE",
  dci_reporter_reputation: { score: 0, banned: false },

  // New in v3.2.1
  dci_criticality_multiplier: 1.5,
  dci_criticality_reason: "Life‑critical — hospital/clinic",
  dci_spatial_cluster: { cluster_detected: false },
  dci_progression: { progression: "INSUFFICIENT_DATA" },
  dci_decay_reconciliation: { reconciled: false },

  // Abstraction bargain
  model_limitations: {
    /* Full declaration — 7+ discarded properties documented */
  },

  // Calibration
  fcl_entry_id: "FCL-1716076800-a3f2",

  // Governance
  constitutional_status: {
    law_4_compliant:             true,
    prohibited_uses_enforcement: "CALLER_RESPONSIBILITY",
    consent_gate:                "CALLER_RESPONSIBILITY"
  },

  // Appeals
  appeal_status: {
    appeals_remaining:        3,
    cumulative_ceiling_active: true
  },

  audit_id: 1847
}

↑ Back to Table of Contents


19 · Offline and Field Mode

Feature Implementation Offline scoring Full engine runs in browser — no server required Offline AI TensorFlow.js + xBD dataset — local inference AI API fallback Mock analysis when OpenRouter unavailable Service worker Caches app shell for offline use IndexedDB Local report storage with sync‑on‑reconnect Low‑literacy mode Icon‑based interface with audio guidance Progress persistence Survives connectivity interruption mid‑submission Batch reporting Family / group multi‑location submissions


↑ Back to Table of Contents


20 · Accessibility

Feature Status Icon‑based damage classification ✅ Active Full audio guidance (6 UN languages) ✅ Active Language fallback flag ✅ Active Large text mode ✅ Active Automatic dark mode ✅ Active Haptic feedback ✅ Active Batch reporting ✅ Active


↑ Back to Table of Contents


21 · Roadmap

Feature Status Whistleblower channel (/api/whistleblower) 🔵 Planned — v3.3 Satellite imagery corroboration 🔵 Planned — v3.3 DCI weight recalibration from FCL entries ✅ Active – calibrateWeights() available Multilingual NLP keyword dictionaries 🔵 Planned — v3.3 Live facility database (replaces mock data) 🔵 Planned — v3.3 VELA constitutional veil integration 🔵 Planned — v3.3 Offline voice recognition (real) 🔵 Planned — v3.3



CERTUS is an application of the AION Constitutional Stack — specifically FSVE certainty scoring, CAL code governance, ECF epistemic tagging, and validity threshold enforcement.

The v3.2.1 engine is the most advanced version in the stack, having undergone a complete four‑instrument adversarial audit (PDE → EAE → ANTI‑FORGE → CAL) with all 57 findings resolved. It is horizontally scalable, multi‑tenant, GDPR‑compliant, humanitarian‑equity‑conscious, and enterprise‑ready.

Production-ready. Sovereignty-hardened.

Sheldon K. Salmon & ALBEDO · AionSystem · May 2026

License

This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.

Retroactive Notice: All previous versions of CERTUS Engine (including v2.5.2, v3.0.1, v3.1.0, and v3.2.0) are also released under the Apache License 2.0 as of May 16, 2026.


↑ Back to Table of Contents

```

About

CERTUS Engine — Certainty Engineering for Crisis Data. Sovereignty-hardened scoring engine that translates raw crisis reports into actionable DCI scores with cryptographic seals, adversarial auditing, and constitutional governance.

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors