Files
boc/intelligence/build-d1d2-remediering.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- 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
2026-06-29 16:24:48 +00:00

251 lines
9.2 KiB
Markdown

# 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).*