# 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: ```js // 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 ✅: ```js { 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 ✅ ```js 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: ```yaml - 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):** ```js } else if (q.match(/market|campaign|brand|social|seo|content|marknad|marknadsföring/)) { to = 'leon@hypbit.com'; reason = 'Marketing question'; ``` **Föreslagen ändring:** ```js } 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:** ```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):** 1. `leon-daily-dm-status` (agent: "leon") — **TA BORT** 2. `winston-monday-bank-sync` — bevara 3. `johan-ecs-health-4h` — bevara 4. `dennis-daily-deadlines` — bevara 5. `erik-monday-weekly-decisions` — bevara *(notera: message_template innehåller `• Leon: [senaste action]` som trivial textreferens — rensa vid tillfälle)* **n8n_workflow_ids nuvarande:** ```json { "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):** ```python 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`: ```markdown ## 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).*