- 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
9.2 KiB
BUILD-D1+D2 — Leon/Vincento Remediering: Staged Ändringsplan
Skapad: 2026-06-06
Av: Subagent (build-d1d2-staging)
Status: STAGED — GRANSKNING PÅGÅR. Bernt godkänner och kör apply-script.
Separation of duties: Subagent läser + förbereder. Bernt godkänner + kör.
🔄 AKTUELL STATUS (Läst 2026-06-06)
VIKTIG OBSERVATION: Majoriteten av D1+D2-ändringarna har redan applicerats av en tidigare session.
Nedan redovisas fullständig faktisk status per fil + vad som återstår.
✅ REDAN KLART (verifierat i prod)
F1 — api/dynasty-counsel/knowledge/wavult-facts.mjs
Leon-objektet borttaget. CMO-vakant-kommentar finns:
// CMO: VACANT (2026-06-06) — Leon Russo De Cerame lämnade 2026-05-19; temporärt Johan (CTO) via cmo@aamos.systems.
Status: KLAR. Ingen åtgärd.
F2 — api/cognitive/homo-deus-comms.mjs
AGENTS-array: vincento borttagen ✅
NATS-subject: borttagen ✅
Header-kommentarer (rader 3 och 6): FORTFARANDE med Vincento-refs (harmless kommentarer, rensas i apply-script)
F3 — api/agents/list.mjs
Vincento status=offboarded ✅:
{ id:"vincento", name:"Vincento", wave:1, human:null, role:"CMO / Operations", emoji:"🤖", status:"offboarded", offboarded_at:"2026-06-06", note:"Leon lämnade 2026-05-19" }
Status: KLAR. Ingen åtgärd.
F5 — api/homo-deus/domain-experts.mjs
hr-bot parent_agent=bernt ✅
parent_agent: 'bernt',
Status: KLAR. Ingen åtgärd.
F6a — api/aamos/comms/engine.mjs — TEAM-objektet
leon@hypbit.com borttagen från TEAM ✅
#marketing: ['johan@hypbit.com','erik@hypbit.com'] ✅
#board: utan leon ✅
F7 — api/approvals.js
ops-roll inaktiverad ✅
leon@wavult.com ur getUserRole ✅
mock requested_by → bernt@wavult.com ✅
V1 — Mailu cmo→cto mail-routing
Status: ✅ INTAKT — INGENTING ATT GÖRA Mailu config-export bekräftar:
- email: cmo@aamos.systems
destination:
- cto@aamos.systems
Kedjan: sales/marketing/[domain]@aamos.systems → cmo@aamos.systems → cto@aamos.systems (Johan)
❌ ÅTERSTÅENDE ÅTGÄRDER (2 stycken)
KRITISK: api/aamos/comms/engine.mjs — Rad 384 — AKTIV ROUTING
Fil: /opt/amos/api/aamos/comms/engine.mjs
Risk: HÖG. Aktiv routing-funktion routeQuestion() skickar marketing-frågor till leon@hypbit.com (raderad adress).
Nuvarande (rad 383-384):
} else if (q.match(/market|campaign|brand|social|seo|content|marknad|marknadsföring/)) {
to = 'leon@hypbit.com'; reason = 'Marketing question';
Föreslagen ändring:
} else if (q.match(/market|campaign|brand|social|seo|content|marknad|marknadsföring/)) {
to = 'johan@hypbit.com'; reason = 'Marketing question (CTO Johan — CMO vakant)';
Kontext: routeQuestion() är en exporterad funktion som routar AI-frågor till rätt person. Marketing-frågor routas just nu till en raderad adress. Ändringen till johan@hypbit.com är konsistent med övrig routing (Johan tar CMO-rollen temporärt).
Vad som bryts om ändringen är fel: Om marketing-frågor fortfarande routas till leon@hypbit.com → silent fail (deliveryfel).
Diff:
- to = 'leon@hypbit.com'; reason = 'Marketing question';
+ to = 'johan@hypbit.com'; reason = 'Marketing question (CTO Johan — CMO vakant)';
ÅTGÄRD: data/agent-heartbeats.json — leon-daily aktiv
Fil: /opt/amos/data/agent-heartbeats.json
Risk: MEDIUM. Scheduler-fil. leon-daily-dm-status är aktivt heartbeat-jobb som skickar Telegram till Leon (som inte längre är anställd). Övriga jobb (winston, johan, dennis, erik) SKA BEVARAS EXAKT.
Nuvarande heartbeats (5 poster):
leon-daily-dm-status(agent: "leon") — TA BORTwinston-monday-bank-sync— bevarajohan-ecs-health-4h— bevaradennis-daily-deadlines— bevaraerik-monday-weekly-decisions— bevara (notera: message_template innehåller• Leon: [senaste action]som trivial textreferens — rensa vid tillfälle)
n8n_workflow_ids nuvarande:
{
"leon-daily": null,
"winston-monday": null,
"johan-4h": null,
"dennis-daily": null,
"erik-monday": null
}
Ta bort "leon-daily": null ur n8n_workflow_ids.
Ändringen görs med Python (ALDRIG sed på JSON):
import json
FILE = '/opt/amos/data/agent-heartbeats.json'
with open(FILE) as f:
d = json.load(f)
before = len(d['heartbeats'])
leon = [h['id'] for h in d['heartbeats'] if h.get('agent') == 'leon' or h.get('id','').startswith('leon')]
print(f"Tar bort: {leon}")
d['heartbeats'] = [h for h in d['heartbeats'] if h.get('agent') != 'leon' and not h.get('id','').startswith('leon')]
if 'n8n_workflow_ids' in d:
d['n8n_workflow_ids'] = {k:v for k,v in d['n8n_workflow_ids'].items() if not k.startswith('leon')}
after = len(d['heartbeats'])
print(f"Heartbeats: {before} -> {after} (expect 4)")
if after == 0: print("ERROR!"); exit(1)
open(FILE,'w').write(json.dumps(d, indent=2, ensure_ascii=False)+'\n')
print("OK")
Förväntat resultat efter ändring:
heartbeats: ['winston-monday-bank-sync', 'johan-ecs-health-4h', 'dennis-daily-deadlines', 'erik-monday-weekly-decisions']
Vad som bryts om fel:
- Om heartbeats-array töms → inga heartbeats körs (allvarligt!)
- Om övriga poster raderas → kritiska jobb försvinner
- Backup måste göras INNAN
KOSMETISK: api/cognitive/homo-deus-comms.mjs — Header-kommentarer
Rader 3 och 6 i header-kommentaren nämner fortfarande Vincento (ren kommentar-text, ej funktionell):
Rad 3:
* NATS JetStream protocol — Agent mesh for Bernt, Rufus, Sven, Kjell, Vincento
→
* NATS JetStream protocol — Agent mesh for Bernt, Rufus, Sven, Kjell
* [2026-06-06] Vincento avvecklad
Rad 6:
* homo.bernt.inbox / homo.rufus.inbox / homo.sven.inbox / homo.kjell.inbox / homo.vincento.inbox
→
* homo.bernt.inbox / homo.rufus.inbox / homo.sven.inbox / homo.kjell.inbox
Risk: Noll funktionell påverkan. Ren kodkosmetik. Inkluderas i apply-script.
📊 Sammanfattning — Vad som faktiskt ska göras
| # | Fil | Ändring | Risk | Status |
|---|---|---|---|---|
| A | aamos/comms/engine.mjs rad 384 |
leon@hypbit.com → johan@hypbit.com i routeQuestion() |
HÖG | ❌ EJ GJORD |
| B | data/agent-heartbeats.json |
Ta bort leon-daily-dm-status (Python/JSON) |
MEDIUM | ❌ EJ GJORD |
| C | cognitive/homo-deus-comms.mjs rader 3+6 |
Rensa header-kommentar (kosmetik) | NUL | ❌ EJ GJORD |
Allt annat är redan applicerat.
⚠️ FLAGGOR FÖR BERNT
FLAGG 1 — "Leon Magnusson" = Leon Russo De Cerame (KRÄVER BESLUT)
skv-integration-w25.mjs:89 och hela EMP-004-sektionen i ouroboros-filerna använder "Leon Magnusson" — verifierat som SAMMA PERSON (leon@wavult.com, EMP-004, Head of Operations).
Bevis:
people.mjs:91— EMP-004: name="Leon Magnusson", email="leon@wavult.com"payroll.mjs:73— EMP-004: name="Leon Magnusson", email="leon@wavult.com", status="active"payroll-routes-agd.mjs:51— EMP-004: name="Leon Magnusson", pnr="199005103456"
Fråga till Bernt: Bekräfta att Leon Magnusson = Leon Russo De Cerame → payroll/HR-avslut av EMP-004 ska schemaläggas (separat D3-fas).
FLAGG 2 — EMP-004 fortfarande active i payroll-system
people.mjs, payroll.mjs, skv-payroll-sweden.mjs — alla har EMP-004 som status: 'active'. Detta är utanför D1+D2-scope men kritiskt för HR/payroll-korrekthet.
FLAGG 3 — erik-monday heartbeat nämner Leon i text
I agent-heartbeats.json, erik-monday-weekly-decisions-posten innehåller:
• Leon: [senaste action]
Funktionellt ofarlig (bara displaytext). Bernt kan rensa vid tillfälle.
FLAGG 4 — heartbeat-runner.mjs buildVincentoBrief()
scripts/heartbeat-runner.mjs anropar fortfarande buildVincentoBrief() dagligen. Utanför D1+D2-scope men aktivt. Separat åtgärd.
🟢 CANON-TILLÄGG (för Bernt att lägga in manuellt i AAMOS_CANON.md)
Lägg till i /opt/amos/data/AAMOS_CANON.md:
## Agent Vincento — Avvecklad (2026-06-06)
Agent Vincento (AI-agent tilldelad Leon Russo De Cerame) är AVVECKLAD per 2026-06-06.
Leon Russo De Cerame lämnade bolaget 2026-05-19.
Vincento-agenten är inte längre aktiv i HOMO DEUS-meshet.
Historiska data och träningsfiler arkiveras men raderas inte.
## CMO-rollen — VAKANT (2026-06-06)
CMO-rollen är vakant sedan Leon Russo De Cerames avslutade anställning (2026-05-19).
Tills vidare hanteras inkommande CMO-mail (cmo@aamos.systems) av Johan Berglund (CTO).
Ny CMO-rekrytering: EJ beslutad per 2026-06-06.
AI-stöd för marketing-domänen: Ompekas till CTO (Johan/Sven) tills vidare.
🔍 VERIFIERAT: skv-integration-w25.mjs:89 — INTE ANNAN PERSON
D3-inventering flaggade "Leon Magnusson" som potentiellt annan person.
Slutsats efter undersökning: Det är SAMMA person (Leon Russo De Cerame).
Skv-integration-w25.mjs rad 89 är F-skatt-register (simulerad/testdata) med personnummer 199005103456.
Åtgärd: Inkluderas INTE i D1+D2-scope. Kräver separat Bernt-beslut för payroll-avslut.
Rapport uppdaterad 2026-06-06 med faktisk prod-status. Apply-script är minimalt — hanterar bara de 3 återstående åtgärderna (A, B, C).