System Card
NEXUS audite les autres. Cette page audite NEXUS : ce que le système fait vraiment, comment il refuse d'inventer, et où sont ses limites — chaque affirmation renvoie au module qui l'implémente.
Architecture
Moteur déterministe — 23 couches d'audit
Le Deep Audit Engine couvre 23 couches d'analyse. Chaque auditeur possède un repli heuristique déterministe sans LLM : si aucune clé d'API n'est configurée, le diagnostic tourne quand même — avec des règles pures, reproductibles, et l'honnêteté insufficient_data partout où la donnée manque.
Chemin LLM — opt-in, multi-fournisseurs
Le chemin LLM est optionnel et routé par un adaptateur multi-fournisseurs (lib/ai/execution-adapter.ts, registre lib/ai/providers-registry.ts) : l'audit in-app et le copilote s'exécutent sur DeepSeek V3 (vérifié live), les agents à outils sur Claude (Anthropic). Clé absente → repli déterministe, jamais de chiffres improvisés.
Les gates bloquants
Cinq portes déterministes, zéro LLM. Un refus n'est jamais silencieux : il est motivé et loggé.
Gate de sourçage (insufficient_data jamais récité)
Aucun chiffre client ne peut sortir d'une cellule-pays non sourcée ou périmée (> 18 mois) : l'ingrédient monétaire est forcé à insufficient_data — jamais une valeur par défaut, jamais un taux « récité » par le modèle. Le refus est loggé, auditable.
lib/diagnostic/audit/fiscal-framework/sourcing.ts
AFC — Audit-Fidelity Contract (déterminisme sur les octets)
Chaque unité actionnable d'un dossier devient une assertion machine-vérifiable (« VERT lorsque <donnée> <opérateur> <cible> »). Le gate prouve le déterminisme byte-identique des assertions relancées, l'ancrage réel de chaque assertion dans le dossier (groundedness) et le round-trip du DSL. Évaluation 100 % déterministe, zéro LLM.
lib/diagnostic/audit/fidelity/gate.ts
Porte double-clé (deux principaux distincts)
Aucun déploiement promu sans DEUX signatures Ed25519 de principaux DISTINCTS (dirigeant + ratificateur vie privée) qui vérifient contre le registre persistant. Clés server-held : « double autorisation authentifiée + scellée », PAS une non-répudiation personnelle — dit tel quel.
lib/diagnostic/deploy/deploy-gate.ts
Sonde comportementale
Verdict pur sur les observations de l'URL live : avant consentement, la page n'émet AUCUN appel de données (tout autre appel = fuite) ; tout hôte appelé doit appartenir à une allowlist déterministe de domaines africains (jamais de géo-IP → verdict reproductible).
lib/diagnostic/deploy/behavioral-probe.ts
Anti-rejeu (chaîne persistée)
La tête de chaîne attestée doit couvrir le reçu de CE déploiement précis : rejouer une attestation valide d'un déploiement antérieur est détecté et refusé. La chaîne de certificats est persistée et chaque maillon référence le précédent (SHA-256).
lib/diagnostic/deploy/deploy-gate.ts
Tagage épistémique
Aucune affirmation sans tag. Le schéma du jumeau REFUSE une assertion non taguée (validation Zod).
Donnée observée et vérifiable (document, mesure, source citée).
Déduction logique à partir de faits établis.
Chiffre calculé sous hypothèses explicites, avec marge d'erreur.
Supposition assumée, listée dans les incertitudes, à confirmer par le client.
Couverture pays — réelle, pas marketing
8 pays-ancres sur 54 disposent de paramètres sourcés (fiscal, privacy, gouvernance/RH) : chaque cellule porte son source_url et sa date as_of, et le statut « sourcé » est dérivé de ces champs — jamais affirmé à la main.
Pour les 46 autres pays africains : les paramètres-pays ne sont pas encore sourcés, donc tout calcul qui en dépend renvoie insufficient_data. Nous préférons un « je ne sais pas » vérifiable à un chiffre plausible.
Custody des clés — v1
Les clés Ed25519 des principaux (double-clé) et de l'attestor sont générées côté serveur : clé publique stockée en clair (vérifiable par un tiers), clé privée chiffrée AES-256-GCM (clé dérivée par scrypt d'un secret serveur). Fail-closed : secret absent → aucune signature, jamais de repli en clair.
Limite assumée : custody serveur = « double autorisation authentifiée + scellée », pas une non-répudiation personnelle. La cible est une custody KMS/HSM (gap G2). Cérémonie documentée : docs/pipeline/KEY-CEREMONY.md.
Attestations in-toto / DSSE
Chaque Truth Report signé est enveloppé dans un Statement in-toto v1 (ITE-6) + une enveloppe DSSE signée Ed25519 — vérifiable avec l'outillage standard de l'industrie (cosign, openssl, toute lib DSSE), pas seulement avec le nôtre. Zéro PII dans le Statement. Clé indisponible → 503 honnête, jamais d'attestation dégradée.
Spécification publique : docs/pipeline/ATTESTATION-SPEC.md · Route : GET /api/attestation/audit/[id]
Alignement NIST AI RMF
Mapping de nos mécanismes existants vers les quatre fonctions du cadre. Ce n'est pas une certification : aucun audit indépendant n'a été conduit, et nous ne prétendons pas le contraire.
| Fonction | Mécanismes NEXUS |
|---|---|
| GOVERN | Constitution d'entreprise versionnée (constitution_rules), Policy Engine (vérification AVANT chaque exécution d'outil), modes d'autonomie gradués observer → copilot → autopilot appliqués au runtime. |
| MAP | DNA Scan (contexte d'entreprise), jumeau avec tagage épistémique obligatoire (FAIT/INFERENCE/ESTIMATION/HYPOTHESE_A_VALIDER), traçabilité des données-pays (source_url + as_of sur chaque cellule). |
| MEASURE | Trust Score explicable (0-100, décomposé), assertions AFC évaluées green/red de façon déterministe, sonde comportementale sur URL live, harnais de crédibilité des estimations (borne CA, natures jamais sommées). |
| MANAGE | Porte double-clé sur les déploiements, file d'approbations (Neural Bus), anti-rejeu sur chaîne persistée, gate de sourçage bloquant, certificats de travail SHA-256 chaînés vérifiables publiquement (/verify). |
- · Couverture pays : 8 ancres sourcées sur 54 — le reste renvoie insufficient_data.
- · Custody des clés v1 côté serveur — la cible KMS/HSM n'est pas encore en place.
- · Les SLO publiés sur /status sont des objectifs — aucun historique de mesure encore.
- · Aucune certification indépendante (SOC 2, ISO) obtenue à ce jour — voir la feuille de route sur /trust.
- · Le chemin LLM dépend de clés configurées ; sans elles, seul le repli déterministe s'exécute.