- Add NFC ePassport roadmap (ICAO 9303, eIDAS) - Add TensorFlow.js edge face detection (BlazeFace) - Add structured audit logger (GDPR-compliant) - Risk scoring support Part of KYC Apple Native UX v1.1.0
6.0 KiB
Rotorsak: Varför systemet inte visste vad LandveX är + fix (2026-06-06)
Trigger: Erik upptäckte att master-prompt-utkastet gissade LandveX = "bostad/mäklare". Frågade varför systemet inte styr produktdefinitionerna exakt när "det visste igår".
Rotorsaker (4 st)
-
RAG-indexet existerade inte.
rag_index.json+rag_embeddings.jsonsaknades helt på disk. Systemet hade ingen semantisk kunskap att hämta från — oavsett källinnehåll. (OpenAI-nyckeln i rag.mjs FUNGERAR — var inte blockeraren.) -
rag.mjs indexerade bara 3 filer, ingen av dem bar LandveX-affärsdefinitionen tydligt: WAVULT_TRUTH.md (bara org.nr), AMOS_KNOWLEDGE.md (stale: "ej live, försäljningsplattform"), AMOS_CONSTITUTION.md. Ditt styrningspaket (
landvex-styrningspaket-v1.txt) lästes ALDRIG in. -
Stubs maskerade felet.
api/stubs/batch-stubs.mjssvarade/rag/reindex|retrieve|statusmed{ok:true, results:[], status:'ready'}→ systemet rapporterade "healthy" medan det returnerade tomt. -
39 konkurrerande truth/canonical/master-filer i /opt/amos/data → ingen enskild sanningskälla. Fanns t.o.m. en "SYSTEM_TRUTH_TENSION_ANALYZER.md".
Plus felaktig artefakt: public/landvex-landing.html ("Sälj din bostad smartare", skapad 2026-05-26 av byggagent som hallucinerade utan att läsa styrningspaketet). Var dock en ORPHAN — live landvex.com servade redan korrekt /landvex/index.html ("Infrastrukturinspektioner").
Varför "det fungerade igår"
Inget regelverk höll definitionen. Den levde i Eriks kontext live i sessionen — aldrig i systemets indexerade minne. Kontextbyte = kunskapen borta.
Fix (genomförd, verifierad)
- Skapade
/opt/amos/data/AAMOS_CANON.md— ENDA kanoniska sanningskällan (E4, Erik-låst). LandveX/quiXzoom/Ouroboros/AAMOS korrekt definierade med källor (BMD-filer + styrningspaket). - Patchade
rag.mjs— AAMOS_CANON som första tier-1-källa. Backup:api/rag.mjs.bak-canon-20260606-155322. (via SSM root) - Byggde om RAG-index — 94 chunks/4 källor, embeddings 94/94. CANON = 11 chunks.
- Rättade WAVULT_TRUTH.md + AMOS_CONSTITUTION.md — pekar nu på CANON, korrekt LandveX. Alla 3 tier-1-källor överens.
- Arkiverade 8 dubblett-canonical-filer (0 kod-ref) →
data/_ARCHIVE-truth-cleanup-20260606-155322/. Behöll WAVULT_TRUTH (18 kod-ref). - Neutraliserade bostad-orphan → redirect till /landvex/index.html. Backup:
public-archive/landvex-landing.html.WRONG-bostad-*. - Restart amos-core (active).
Verifiering
- Adversariell query "Säljer LandveX bostäder?" → TOP-träff = AAMOS_CANON "VÅR EGEN AFFÄR. Vi SÄLJER infrastrukturkontroll. INGET med bostad."
- landvex.com (https) → "LandveX — Infrastrukturinspektioner" ✅
- Orphan-fil → redirectar nu ✅
VIKTIGAST: Produktionschatten använder INTE RAG/CANON (upptäckt 2026-06-06 16:13)
Körande servern = services/amos-core/server.mjs (INTE scripts/server.mjs där RAG-routerna finns).
/api/aamos/chat (vägen Bernt kodar mot) bygger systemprompt via getEnrichedPrompt() →
api/dynasty-counsel/system-prompt.mjs → getFactsContext() → api/dynasty-counsel/knowledge/wavult-facts.mjs (HÅRDKODAD fil).
Ingen RAG-retrieval i chat-handlern alls. Produktblocket var dessutom gömt bakom verbose:false → AI:n såg ALDRIG produktdefinitionerna i normal chat.
Fix (deployad + LIVE-verifierad)
- Rättade
wavult-facts.mjs: LandveX = "säljer infrastrukturkontroll till infrastrukturägare, uppdrag skapas i quiXzoom, INTE bostad, INTE modul i AAMOS". v1.0.0→1.1.0. Backup:wavult-facts.mjs.bak-canon-20260606-161310. - Gjorde produktsanningen ALLTID-injicerad (ej bara verbose) + lade LandveX i locked-rules.
- LIVE-TEST: POST /api/aamos/chat "Säljer LandveX bostäder?" → Qwen3-32B svarade: "Nej... LandveX är en kontrollintelligensplattform som säljer infrastrukturkontroll till infrastrukturägare... inte bostadsförsäljning." ✅ HTTP 200, model qwen.qwen3-32b-v1:0.
Lärdom (kritisk för framtiden)
Det finns TVÅ serverfiler. scripts/server.mjs (där RAG bor) körs INTE. services/amos-core/server.mjs körs.
Produktkunskap till AI:n = dynasty-counsel/knowledge/wavult-facts.mjs, inte RAG-indexet.
CANON+RAG-fixen (steg 1-7 ovan) är fortf. korrekt men når bara konsumenter som importerar rag.mjs (drilldown, bi, sie m.fl.) — INTE huvudchatten.
Kvarstår (rekommendation)
Stubs döljer haverier✅ INSTRUMENTERAT 2026-06-06 16:50 (Erik: "KÖR"). Valde INTE 503 (hade trippat circuit breakers + gett falska health-larm på 31 status-endpoints). Istället: router-middleware som taggar VARJE stub-träff medX-AAMOS-Stub:true+Warning-header +_stub:truei body + console.warn-logg. Status-koder ORÖRDA. Ny endpoint/api/_stub-reportrankar mest-anropade stubs (för att prioritera riktiga implementationer). Backup:batch-stubs.mjs.bak-instrument-20260606-164952.- Bug fångad i test före deploy: em-dash i Warning-header gav ERR_INVALID_CHAR → hade krashat alla 432 stubs med 500 (= breaker-trip). Fixad till ASCII.
- Live-fynd:
/orborus/fraud/flagsanropas i produktion men är en STUB (fejk fraud-data). Bernt-agentens egen heartbeat träffar den. Bör byggas på riktigt. - Nästa steg (ej gjort): kör
/api/_stub-reportregelbundet → prioritera vilka av 432 som ska bli riktiga. Känsligast: /sanctions/screen ("clear"), /aml/status ("compliant"), /pay/charge, /stripe/webhook, /kyc/status — dessa fejkar compliance/betalning.
wavult-facts.mjs stale-fält✅ STÄDAT 2026-06-06 16:35: emails → @aamos.systems, domäner → aamos.systems, Optical Insight + UAPIX borttagna (döda), VYRA → PAUSED (Erik: "ligga pausad tills vidare"), mission omskriven. Backup:wavult-facts.mjs.bak-cleanup-20260606-163506. ⚠️ @aamos.systems-mailboxar ÄR EJ provisionerade än (bara @wavult.com finns live) — måste skapas.- Konsolidera: wavult-facts.mjs OCH AAMOS_CANON.md är nu två sanningskällor. Idealt: facts.mjs läser från CANON, annars driftar de isär igen.
- AMOS_KNOWLEDGE.md har stale "Optical Insight"/"ej live"-info — synka mot CANON.