Panelgranskning: extern stresstest av ALVA 3.2

En simulerad expertpanel — femton säten från tillverkare, verkstad,
garanti, försäkring, besiktning, konsument, forskning, HMI, säkerhet och
utbildning — har granskat produkten mot åtta kriterier och lämnat betyg
och slutrapport.

Varje fynd är kontrollerat mot koden innan det skrevs ned. Det ändrade
tre av dem: härkomsten är starkare än panelen antog (`anvandare` och
`tidpunkt` är serverägda fält, inte klientens påstående), fotot bär
avsiktligt ingen metadata alls (EXIF-borttagningen är en provad
säkerhetsegenskap, inte ett förbiseende), och kalibreringen härleds ur
mätdonsregistret i stället för att påstås.

De fyra tyngsta fynden:

SIGNATUREN ÄR ETT NAMN. `arende_avslutat` bär `signatur: anvandare` —
teknikerns egen text. Händelsens härkomst är server­bunden och håller,
men ett fält som HETER signatur och inte är en signatur inbjuder en
jurist att tro något som inte gäller. Mellanläget är sämre än att inte ha
fältet.

INGEN KRYPTOGRAFISK KEDJA. Manipulationsskyddet vilar på databastriggrar.
De skyddar mot applikationen, inte mot den som äger databasen. För ett
system vars hela värde är bevisvärde är det den allvarligaste bristen.

INGA GRÄNSVÄRDEN. `matvarde` bär beskrivning, värde och enhet. Ingenting
jämförs mot ett börvärde. "38 g mot gränsen 10 g" är fritext teknikern
skrivit — systemet vet inte vad gränsen är och kan inte upptäcka att
teknikern har fel om den.

FOTOT BEVISAR INTE UPPTAGNINGEN. `capture="environment"` är en hint, inte
en spärr, och metadata tas bort. Kravet att mätarställningen ska
fotograferas — produktens skarpaste enskilda regel — vilar därmed på
hederlighet, inte på bevisning. Panelen enades om lösningen: hasha i
klienten, låt servern signera hash och mottagningstid. Integritet bevaras,
och rapporten säger vad förseglingen faktiskt bevisar.

Slutsatsen om standardisering är den viktigaste och den är obekväm:
produkten är en IMPLEMENTATION, inte en SPECIFIKATION. Specdokumenten
lever inne i kodbasen och är inte separerbara från just den här koden. En
standard kräver ett normativt dokument, en konformanstestsvit som en
tredje part kan köra mot sin egen implementation, och minst två oberoende
implementationer. Det som däremot ÄR standardiserbart är evidensmodellen
E0–E6 och ALVA-RULE-200:s fyra fält — alltså en standard för bevisningen,
inte för diagnostiken. Metodikinnehållet hör hemma hos tillverkaren och
bör uttryckligen hållas utanför.

Betygen: utbildningsvärde 8,5 högst, OEM-anpassning 3,8 lägst. Samma
observation från två håll — produkten är stark där den handlar om hur man
tänker och svag där den handlar om vad man ska göra med en viss bil.

Dokumentet är märkt som en intern övning. Sätena är rollbeskrivningar och
ingen namngiven organisation har deltagit; det står först i filen så att
den inte kan spridas som ett branschutlåtande.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
This commit is contained in:
Claude
2026-08-06 18:49:30 +00:00
parent b72048e40b
commit 93780894d6
+912
View File
@@ -0,0 +1,912 @@
# Panelgranskning · ALVA 3.2
**Simulerad expertpanel · 2026-08-06 · ALVA-DOC-0005**
> **Detta är en intern stresstest-övning, inte ett verkligt branschutlåtande.**
> Panelens säten är rollbeskrivningar. Ingen namngiven organisation har
> deltagit, granskat eller uttalat sig om produkten, och dokumentet får
> inte spridas som om så vore fallet. Värdet ligger i kritiken, inte i
> avsändaren.
>
> Varje fynd nedan är kontrollerat mot koden. Där panelen påstår något om
> systemets beteende står filen. Där panelen gissar står det att den
> gissar.
---
## 0. Vad som faktiskt granskades
| | |
|---|---|
| Version | ALVA 3.2 (`services/gemensam/version.mjs`) |
| Kodbas | Vite/React-klient, `node:http`-tjänster, PostgreSQL |
| Provning | 750 enhetstester, 186 integrationskontroller mot riktig Postgres, e2e-genomgång som stänger fyra ärenden, designtest över hela ytan |
| Metodikbibliotek | 16 metodiker (`services/gemensam/metodiker.mjs`) |
| Språk | 10, engelska som källspråk |
Panelen har läst källkod, inte demonstrationer. Det är avsiktligt: en
demonstration visar det som fungerar.
---
## 1. Ordförande — inledning och avgränsning
Innan sakfrågorna vill jag slå fast vad vi bedömer, eftersom panelen
annars kommer att prata förbi varandra hela dagen.
ALVA är **inte** ett diagnossystem i den mening branschen använder ordet.
Det ställer inga diagnoser, rangordnar inga felkällor och räknar inga
sannolikheter. Det är ett **process- och evidenssystem**: det tvingar fram
en viss ordning, kräver att varje påstående bär underlag, och vägrar
stänga ett ärende som inte gör det.
Det betyder att jämförelsen "bättre än dagens OEM-system" är fel ställd.
Ett OEM-system är en kunskapskälla. Det här är en kravställare på
dokumentationen. De konkurrerar inte; frågan är om de går att kombinera.
Om vi håller isär de två sakerna blir mötet användbart. Om vi inte gör
det kommer märkesrepresentanterna att döma ut produkten för att den inte
kan något de aldrig påstått att den kan.
---
## 2. Enskilda utlåtanden
### 2.1 Teknisk chef — volymtillverkare personbil (VW-sätet)
Jag har gått rakt på det som avgör om vi kan använda det här:
**kopplingen till våra egna procedurer finns inte.**
Metodikbiblioteket är sexton handskrivna procedurer. `VIBRATION` börjar
med att fotografera fyra hjul och mäta kast. Det är rimligt allmänt
hantverk, men det är inte vår procedur, det följer inte våra TSB:er, och
det uppdateras inte när vi ändrar oss. `GENERISK` är ett strukturellt
skyddsnät — den fungerar för allt just för att den inte vet något.
Vad som saknas, konkret:
- **Ingen bindning till OEM-procedur.** Ett steg kan inte referera
"TSB 2026-14 rev 3". Det finns inget fält för det.
- **Inga gränsvärden.** `matvarde` bär `beskrivning`, `varde`, `enhet`
(`services/gemensam/handelser.mjs`). Ingenting jämförs mot ett börvärde.
"38 g obalans mot tillverkarens gräns på 10 g" är fritext teknikern
skrivit. Systemet vet inte vad gränsen är och kan därför inte upptäcka
att teknikern har fel om den.
- **Ingen fordonsidentifiering mot vår data.** VIN registreras men slås
inte upp mot modellår, motorkod eller kampanjstatus.
Det som däremot är bättre än vårt eget system: **loggen**. Vår
verkstadsdokumentation är fritext i en arbetsorder. Här är den strukturerad,
serverdaterad och oföränderlig. Det hade jag velat ha.
**Mina tre förbättringar**
1. Inför ett normativt `referens`-fält på steg och kontroll — dokumenttyp,
identitet, revision — så att en procedur kan spåras till sin källa och
ogiltigförklaras när källan revideras.
2. Inför gränsvärden som data: `matvarde` ska kunna bära `borvarde`,
`undre`, `ovre`, `kalla` och `giltigFor` (VIN-intervall/modellår).
Utan det är E4 en siffra utan innebörd.
3. Öppna metodikbiblioteket för OEM-levererat innehåll med signatur, på
samma sätt som regelpaketet redan hanteras (`REGELPAKET_STATUS`).
Signeringsmekanismen finns; den behöver bara peka på metodiker också.
---
### 2.2 Teknisk chef — premiumtillverkare personbil (Volvo-sätet)
Jag instämmer i VW-sätets kritik men vill vara tydlig med att den träffar
*innehållet*, inte *konstruktionen*. Konstruktionen är starkare än jag
väntade mig.
Det som imponerar:
- **Kvalitetsgrinden ligger på servern** (`services/gemensam/grind.mjs`,
anropad från `server.mjs`). Klienten har ingen egen åsikt. Det betyder
att en verkstad inte kan stänga ett ärende genom att kringgå
gränssnittet. I vårt eget system är motsvarande kontroll en
klientvalidering, och den kringgås.
- **Mätarställningen måste vara fotograferad, inte inskriven.** Ett foto
är E2, en siffra E1. Det är en liten regel med stor verkan i
garantiärenden.
- **Mätdonet slås upp i ett register.** Kalibreringen härleds, den
påstås inte. Det var enligt versionsloggen tidigare ett påstående
klienten gjorde om sig själv — att man rättat det är ett gott tecken på
granskningskultur.
Min invändning är en annan och den är allvarlig: **"signaturen" vid
avslut är teknikerns eget namn som text.**
```
skicka({ typ: "arende_avslutat", signatur: anvandare, ... })
```
Händelsens `anvandare` och `tidpunkt` sätts visserligen av servern ur
verifierad token — det är korrekt gjort och bättre än branschsnittet. Men
fältet som *heter* signatur tillför ingenting och ser ut att tillföra
något. I ett garantiärende som bestrids är det skillnad på "systemet
noterade vem som var inloggad" och "teknikern signerade". Det första har
ni. Det andra påstår ni.
**Mina tre förbättringar**
1. Ta bort `signatur`-fältet eller gör det till en riktig signatur.
Mellanläget är det sämsta: ett fält som inbjuder en jurist att tro
något som inte gäller.
2. Kedja händelserna kryptografiskt. Manipulationsskyddet vilar i dag på
databastriggrar (`infra/postgres-init.sql`). Triggrar skyddar mot
applikationen, inte mot den som har databasen. En hashkedja per ärende
flyttar skyddet från behörighet till matematik.
3. Kvalificerad tidsstämpling (RFC 3161) på avslutet. Serverns klocka är
er egen klocka. I en tvist är det motpartens invändning.
---
### 2.3 Teknisk chef — global volymtillverkare (Toyota-sätet)
Två observationer, en positiv och en som är ett hinder för oss.
Det positiva: **språkhanteringen är den mest genomtänkta jag sett i det
här segmentet.** Att metodens struktur — fasnamn, statusord — är
oföränderlig över språk är exakt rätt. En revisor ska kunna läsa en
rumänsk och en japansk rapport utan att veta vilket språk verkstaden
arbetar på. Och att systemet *vägrar* tyst falla tillbaka på engelska för
procedurtext, utan i stället märker den som ogranskad, är en disciplin
jag önskar att vi själva hade.
Hindret: **ingen procedurtext är fackgranskad på något språk.** Det står
i klartext i `services/gemensam/metodiker.mjs` — texten är skriven på
svenska och översatt till engelska, inte läst av en fackman på målspråket.
De nio andra språken är märkta `granskat: false`.
Jag vill understryka att jag *uppskattar* att det står där. De flesta
leverantörer hade inte skrivit det. Men det betyder att vi inte kan
rekommendera systemet till våra verkstäder i något land i dag. En
säkerhetsinstruktion — "mät och dokumentera spänningsfrihet före ingrepp"
— får inte vara en oöversedd översättning.
**Mina tre förbättringar**
1. Skilj metodikinnehållet från plattformen och versionera det separat.
Plattformen kan då släppas medan innehållet granskas per marknad, i
stället för att allt väntar på det långsammaste.
2. Inför granskningsstatus **per metodik och språk**, inte per språk. I
dag är `granskat` en flagga på hela språket. En verkstad ska kunna
använda de fyra procedurer som är granskade utan att spärras av de tolv
som inte är det.
3. Definiera vad "granskad" betyder: av vem, mot vad, hur ofta omprövad.
En flagga utan definition blir en kryssruta någon fyller i.
---
### 2.4 Teknisk chef — tunga fordon (Scania-sätet)
Ni har byggt för personbil i verkstad. Vi arbetar i fält, på en
lastbil som står still och kostar femtusen kronor i timmen.
Det som fungerar för oss:
- **Offline-läget.** Klientens klocka kastas inte bort utan bevaras som
`registrerad_tidpunkt` bredvid serverns mottagningstid. Glappet blir
synligt. Den detaljen visar att någon tänkt på fältarbete.
- **Överlämningen.** Att ett ärende kan lämnas vidare med härledd
sammanfattning är precis vad ett skiftbyte kräver.
Det som inte fungerar:
- **Ingen uppetidsdimension.** Vi optimerar inte för korrekt diagnos utan
för *fordon i drift*. Systemet har ingen uppfattning om att en
provisorisk åtgärd som får ekipaget till nästa verkstad kan vara rätt
beslut. Grinden känner "åtgärd utförd" och "ingen åtgärd utförd med
skäl" — inte "temporär åtgärd, definitiv åtgärd planerad".
- **Ingen flottdimension.** `lokalFordonshistorik` är organisationens egna
ärenden. En åkare med hundra ekipage vill se mönster över flottan, inte
över verkstaden.
- **Kvalitetskontrollen förutsätter provkörning.** Det går inte alltid.
**Mina tre förbättringar**
1. Inför `atgard_provisorisk` som egen händelsetyp med obligatorisk
uppföljningspunkt. En provisorisk åtgärd som dokumenteras som definitiv
är en säkerhetsrisk; en som inte går att dokumentera alls blir odokumenterad.
2. Låt fordonshistoriken vara fordonets, inte verkstadens — med ägarens
samtycke som grind. Krypto-shreddingen ger er redan mekaniken.
3. Ge grinden en dimension för "kunde inte verifieras på plats" som är
skild från "verifierades inte". Vi har inte alltid en provbana.
---
### 2.5 Sveriges Fordonsverkstäders Förening
Jag talar för de små. Två anställda, en lyft, ingen IT-avdelning.
Först det goda: **systemet fungerar utan inloggning i lokalt läge**, och
**låsning vid utebliven betalning stänger aldrig läsning eller export**
(`services/gemensam/abonnemang.mjs``behorighet()` returnerar `lasa`
och `exportera` sant i varje tillstånd). Det där är ovanligt hederligt.
De flesta leverantörer tar loggen som gisslan. Att ni inte gör det är
skälet till att jag över huvud taget lyssnar.
Sedan invändningen, och den är den viktigaste jag har: **grinden kommer
att upplevas som ett hinder, och då kringgås den.**
Räkna på det. Ett normalt ärende kräver, enligt genomgången, 6076
interaktioner. Ett enkelt fel — en trasig glödlampa — går genom samma
grind som ett intermittent elfel. Slutsatsen kräver fyra fält, varav
motiveringen minst 40 tecken med orsakssamband. En verkstad med tolv
ärenden om dagen kommer att lära sig skriva fyrtio tecken som passerar
filtret.
Och filtret är svagt: det är en ordlista över icke-svar
(`services/gemensam/sprak/ord.mjs`). "Relätkontakten var bränd eftersom
den var sliten" passerar — den innehåller "eftersom" och är lagom lång.
Den säger ingenting.
**Mina tre förbättringar**
1. **Gradera grinden efter ärendets tyngd.** Ett ärende utan garanti-,
försäkrings- eller säkerhetsdimension behöver inte samma bevisbörda.
Regelpaketet kan redan styra krav per ärendetyp — utnyttja det åt
andra hållet också.
2. Mät den faktiska tiden i drift och publicera den. Ni har `arbetstid`
per kategori i loggen. Om ALVA kostar sju minuter per ärende ska det
stå, inte gissas.
3. Gör om icke-svarsfiltret till något som inte går att lära sig kringgå
— eller ta bort det och var ärliga med att slutsatsen granskas av
människor. Ett filter som ser strängt ut men släpper igenom skräp är
sämre än inget filter, för det invaggar handläggaren i tron att texten
är kontrollerad.
---
### 2.6 Oberoende verkstadskedja
Vi driver fyrtio anläggningar och allbilsverkstad. För oss är frågan
inte metodik utan **drift**.
- **Tjänsten är en `node:http`-process mot en Postgres.** Ingen kö, ingen
läsreplika, ingen partitionering. Det duger till pilot. Det duger inte
till fyrtio anläggningar med samtidig synk var femtonde sekund.
- **Terraform finns men har enligt dokumentationen aldrig körts.** Då vet
ni inte att den fungerar.
- **Ingen SSO.** Vi har fyrahundra tekniker i ett Entra-ID. Fyrahundra
separata lösenord är ett säkerhetsproblem, inte en bekvämlighetsfråga.
- **Ingen roll mellan tekniker och administratör som passar en
kedjestruktur.** Vi behöver regionchef som ser flera organisationer.
Det som däremot är starkt: **hyresgästisolering är provad**
(integrationstestet innehåller ett uttryckligt "motspelande hyresgäst"-fall).
Det är fler leverantörer som påstår det än som testar det.
**Mina tre förbättringar**
1. OIDC/SAML mot företagsidentitet, med rollmappning från
identitetsleverantören. Utan det kommer vi inte att införa systemet.
2. Koncernnivå över organisation, med läsbehörighet och statistik
men inte skrivbehörighet i ärenden.
3. Belastningsprov med publicerad siffra. "Klarar N samtidiga ärenden på
M anläggningar" — annars är skalbarhet en åsikt.
---
### 2.7 Garantiansvarig — fordonstillverkare
Jag är den som ska betala eller neka. Min måttstock är: **kan jag fatta
ett beslut på det här underlaget utan att ringa verkstaden?**
Svaret är: oftare än i dag, men inte alltid.
Det som gör underlaget bättre än allt jag får i dag:
- **ALVA-RULE-200.** Fyra fält: vad som konstaterats, vilken evidens som
bär det, vad som uteslutits och varför, vad som kvarstår osäkert.
**Det tredje fältet är det som saknas i varje verkstadsprotokoll jag
någonsin läst.** En felsökning utan uteslutna alternativ är en gissning
som råkade stämma, och i dag kan jag inte se skillnaden.
- **Obemötta hypoteser härleds ur loggen.** Den som skrivit ned en
misstanke och landat i något annat *måste* säga varför den föll bort.
Det är den enskilt starkaste funktionen i produkten.
- **Retentionen följer ärendetypen** — 120 månader för garanti. Och det
finns ett arv för ärenden som öppnades innan ärendetyperna bytte språk,
vilket betyder att någon tänkt på att uppslaget kan missa. Det gör man
inte om man inte tagit frågan på allvar.
Det som hindrar mig:
- **Säkerhetsnivån är teknikerns egen bedömning.** `sakerhet: hog | medel
| lag` väljs med en knapp. Det är ett självskattat värde som ser ut som
en mätning. Jag kan inte prissätta det.
- **Ingen koppling till reservdel.** Ett garantiärende handlar till slut
om en artikel. Systemet vet inte vilken.
- **Ingen oberoende bekräftelse.** Allt underlag kommer från den part som
har ett ekonomiskt intresse av utfallet.
**Mina tre förbättringar**
1. Härled säkerhetsnivån i stället för att fråga efter den — ur
evidensgrad, antal oberoende källor och om symptomet reproducerats och
verifierats borta. Låt teknikern *sänka* den, aldrig höja den.
2. Koppla åtgärd till artikelnummer och gör kopplingen obligatorisk vid
garantiärendetyp. Regelpaketet kan uttrycka det redan i dag.
3. Inför en maskinläsbar exportprofil för garantianspråk — inte PDF, utan
ett schema vi kan ta emot maskinellt. Ni har `openapi.yaml`; det här
är nästa steg.
---
### 2.8 Försäkringsbolag — maskinskada och skadereglering
Jag ansluter mig till garantiansvarigs kritik av den självskattade
säkerhetsnivån och lägger till min egen vinkel.
**Systemet vägrar avsiktligt ge sannolikheter.** Försäkringsvillkorsmodulen
"returnerar avsiktligt inget fält som liknar ett utslag"
(`services/gemensam/forsakring.mjs`). Garantimodulen svarar `inom`,
`utanfor` eller `oklart`, och saknad data ger alltid `oklart`, aldrig
`utanfor`.
Jag är kluven. Som riskbedömare vill jag ha ett tal. Som den som blir
stämd när talet är fel inser jag att ni har rätt. Ett system som säger
"87 % sannolikhet för maskinskada" kommer att citeras i domstol av båda
parter, och ingen kommer att kunna förklara var talet kom ifrån. Att
avstå är den mognare hållningen och jag noterar den.
Min verkliga invändning gäller **bevisvärdet i fotot**.
Fotot skalas ned via canvas, vilket tar bort all metadata inklusive GPS.
Det är motiverat och testat (`bildmetadata.test.ts`) — jag vill inte veta
var kundens bil stod. Men följden är att **fotot inte bär någon uppgift
om när eller var det togs**. `capture="environment"` är en hint till
webbläsaren, inte en spärr; ett galleribildval passerar.
Det betyder i klartext: ett foto på en annan bils mätarställning går
igenom. Kravet att mätarställningen ska fotograferas — som jag i övrigt
anser är produktens skarpaste enskilda regel — vilar alltså på
teknikerns hederlighet, inte på bevisning.
**Mina tre förbättringar**
1. Försegla bilden vid *upptagningen*: hasha pixeldata i klienten, låt
servern signera hashen tillsammans med sin egen mottagningstid. Ni får
integritet utan att återinföra GPS. Säg sedan uttryckligen i rapporten
vad fotot bevisar — innehållets oföränderlighet sedan mottagandet,
inte upptagningsomständigheten.
2. Egen kameravy i stället för filväljare där det är tekniskt möjligt.
3. Inför korsreferens mot mätarställningens rimlighet: en utgående
mätarställning lägre än den ingående, eller en som avviker kraftigt
mot fordonets historik, ska flaggas. Ni har historiken.
---
### 2.9 Besiktningsingenjör
Min fråga är enkel: **kan ett ALVA-ärende ersätta eller komplettera en
teknisk kontroll?**
Svar: nej, och det bör det inte heller.
En besiktning är en *oberoende* kontroll mot ett *fastställt* regelverk.
ALVA-ärendet är verkstadens egen dokumentation av sitt eget arbete. Att
den är välordnad gör den inte oberoende. Om ett ALVA-ärende började väga
vid teknisk kontroll skulle incitamentet att skriva det snyggt uppstå
omedelbart.
Däremot ser jag ett *underlagsvärde*: vid en efterkontroll är ett
dokumenterat åtgärdsförlopp med evidens bättre än en kvittotext.
En sak vill jag ha noterad i protokollet, och den är obekväm för
datasäkerhetsspecialisten: **krypto-shreddingen kan förstöra underlag som
behövs.** När nyckeln förstörs maskeras fälten permanent. Det är rätt mot
dataskyddsförordningen. Men om ett fordon senare visar sig ha ett
säkerhetsrelaterat fel som spåras till en åtgärd, och identifieringen är
raderad på begäran, finns kopplingen inte längre.
**Mina tre förbättringar**
1. Skilj i modellen på **personuppgift** och **fordonsuppgift**. Ett VIN
är kopplat till ett fordon, inte primärt till en person. I dag
raderas de tillsammans.
2. Definiera ett undantag för säkerhetsrelaterade fel där kopplingen
fordon–åtgärd bevaras även efter radering av personuppgifter, med
rättslig grund angiven i modellen.
3. Om systemet någon gång ska väga vid teknisk kontroll krävs oberoende
verifiering av minst mätdonens kalibrering mot ackrediterat organ. I
dag matas kalibreringsdatum in av organisationen själv.
---
### 2.10 Konsumentrepresentant
Jag är förvånad. Det här är det första verkstadssystem jag granskat som
faktiskt är byggt med kunden i åtanke.
- **Kundens besked på åtgärdsförslaget måste registreras innan arbetet
utförs**, och arbete utfört trots avböjt förslag är ett *hårt hinder*,
inte en varning. Det är precis den tvisten jag ser oftast.
- **Beskedet registreras med kanal** — telefon, på plats, e-post,
delningslänk — så det går att härleda till ett faktiskt samtal.
- **Delningsnivåerna filtreras på servern.** Kunden ser det kunddelbara,
partnern ser hypoteser märkta som overifierade. Filtreringen sker inte i
webbläsaren, vilket betyder att den faktiskt gäller.
- Rapporten säger uttryckligen att den är härledd ur loggen och redovisar
observationer "utan slutsatser som saknar stöd".
Mina invändningar:
- **Kunden har ingen egen kopia.** Delningslänken kan återkallas av
verkstaden. I en tvist är det motparten som äger bevisningen.
- **Ingen tidsstämplad kvittens till kunden.** Att kunden godkänt syns i
verkstadens logg, som verkstaden kontrollerar.
- Språket i kunddelningen är samma tekniska språk som teknikern läser.
"Symptom verification: reproduced" betyder ingenting för en bilägare.
**Mina tre förbättringar**
1. Låt kundens besked generera en oåterkallelig kvittens till kundens
e-post eller telefon i samma ögonblick — utanför verkstadens kontroll.
2. Ge kunden rätt till en export av sitt ärende som inte kan återkallas.
3. Skriv en kundvy på kundspråk. Ni har redan skiljelinjen mellan
struktur och innehåll; det här är ett tredje register, inte ett
fjärde språk.
---
### 2.11 Professor i fordonsdiagnostik
Jag vill lyfta panelen från funktionslistan till den fråga uppdraget
faktiskt ställer: **är arbetsflödet reproducerbart?**
Svaret är preciserat, och preciseringen är hela poängen:
**Processen är reproducerbar. Slutsatsen är det inte.**
Två tekniker som får samma fordon kommer att gå genom samma steg, tvingas
dokumentera samma evidenstyper och passera samma grind. De kan ändå landa
i olika slutsatser, och systemet stoppar ingen av dem. Grinden prövar
**närvaron** av underlag, inte **korrektheten** i resonemanget
(`services/gemensam/grind.mjs`).
Det är inte ett fel. Det är en ärlig avgränsning, och den är rätt: ett
system som påstod sig kunna avgöra vilken av två motiverade slutsatser som
är sann skulle ljuga. Men den måste stå i specen, för annars kommer den
att läsas som ett löfte om diagnostisk samstämmighet.
Två metodologiska anmärkningar:
- **Hypoteser får bara vara `medel` eller `lag`** i händelseschemat. En
hypotes kan alltså aldrig vara starkt understödd utan att bli en
slutsats. Det är en klok tvingande konstruktion — den hindrar en
misstanke från att glida över till fastställd orsak utan att passera
verifiering. Jag hade inte förutsett den och jag gillar den.
- **Orsakskategorierna är en sluten lista** om femton poster — normalt
slitage, materialutmattning, tillverkningsfel och så vidare. Det ger
jämförbar statistik. Men listan blandar orsaksmekanism (materialutmattning,
korrosion) med orsaksursprung (tillverkningsfel, felaktig tidigare
reparation). Två dimensioner i en lista ger statistik som inte går att
tolka.
**Mina tre förbättringar**
1. Dela orsakskategorierna i två oberoende dimensioner: **mekanism** och
**ursprung**. Ett tillverkningsfel som yttrar sig som materialutmattning
är i dag två kryss i samma lista.
2. Skriv in avgränsningen "process, inte utfall" i den normativa texten,
som en definierad egenskap med en definierad mätmetod — annars kommer
någon att mäta samstämmighet och kalla systemet misslyckat.
3. Inför strukturerad mellanteknikervalidering: låt en andra tekniker
kunna granska ett stängt ärende och registrera instämmande eller
avvikande bedömning. Då kan samstämmigheten mätas i stället för antas.
---
### 2.12 Specialist — människamaskin-interaktion
Jag har gått igenom skärmbilderna och gränssnittskoden och jag ska vara
rakt på sak: **den kognitiva belastningen är för hög i pre-diagnostiken,
och den är fel fördelad.**
Vad jag ser på en 390 px-skärm i ett ärendes första läge: en
identitetsrad med åtta fält, en flikrad med fyra flikar, en
tidskategorirad med sju, en kryssruta-lista med fyra öppna punkter, och
sedan fyra frågeblock under varandra — historik, mätarställning,
felbeskrivningsverifiering, tidiga observationer. Elva
beslutspunkter innan arbetet börjar.
Det är designat som ett formulär, inte som ett arbetsflöde. Ett
arbetsflöde visar **ett** beslut i taget.
Samtidigt vill jag ge beröm åt saker som är ovanligt väl gjorda:
- **Bristerna visas under fältet medan man skriver**, inte som ett
felmeddelande efter Spara. Att bli nekad efter att ha skrivit klart är
det som gör obligatoriska fält förhatliga, och ni har undvikit det.
- **Statusen anges alltid med ord, aldrig enbart med färg.**
- **Ingen rörelse.** Inga animationer, inga övergångar. I en miljö med
visuellt brus är det rätt beslut.
- **Grindens hinder visas medan arbetet pågår**, vid den tidpunkt då de
fortfarande går att åtgärda — inte vid avslutsknappen.
När blir guidningen för styrande? Den blir det när teknikern *redan vet*
vad felet är. En erfaren tekniker som ser en lossnad balansvikt med
blotta ögat måste ändå gå genom symptomverifiering, fyra hjulfoton och
kastmätning. Systemet har ingen väg för "jag ser orsaken, här är
beviset".
**Mina tre förbättringar**
1. **Ett beslut per skärm i pre-diagnostiken.** Elva punkter samtidigt är
en formulärvy; guidning är sekventiell.
2. Inför en **direktväg för konstaterad orsak**: teknikern lämnar
evidens och slutsats direkt, och systemet räknar baklänges vilka
kontroller som därmed är obehövliga och vilka som kvarstår. Grindens
krav bevaras, ordningen släpps.
3. Mät faktiskt. Ni har interaktionsräkning i genomgången (6076 per
ärende). Sätt ett tak per ärendetyp och låt det falla bygget när det
överskrids, precis som ni gjort med färgpaletten. Ni har visat att ni
kan låsa design med test — gör det med interaktionsbudget också.
---
### 2.13 Specialist — datasäkerhet
Jag har granskat detta hårdare än jag brukar, eftersom mycket ser bra ut
och det är då man missar saker.
**Det som håller:**
- **Krypto-shredding med kuvertkryptering.** Per-subjektsnycklar,
inlindade under en huvudnyckel som ligger utanför databasen. Radering
sker genom att nyckeln förstörs; loggen förblir append-only. Det är den
korrekta lösningen på konflikten mellan artikel 17 och oföränderlig
logg, och den är ovanlig.
- **Utan huvudnyckel maskeras uppgiften och anropet går ändå igenom.**
Att systemet inte kraschar utan degraderar till maskering är rätt: en
otillgänglig nyckel ska inte göra hela organisationens historik oläsbar.
- **Härkomst sätts av servern.** `anvandare` och `tidpunkt` är
serverägda fält som avvisas om klienten skickar dem.
- **Append-only genomdrivet i databasen**, inte i applikationen.
- **EXIF och GPS tas bort genom omritning**, och egenskapen är låst med
test som läser *vägen* och inte bara utfallet.
- **Åtkomstlogg och raderingar är också append-only.**
**Det som inte håller:**
1. **Ingen kryptografisk kedja.** Manipulationsskyddet är
behörighetsbaserat. Den som har `superuser` på databasen kan släppa en
trigger. En hashkedja per ärende gör efterhandsändring upptäckbar även
för den som äger databasen. För ett system vars hela värde är
bevisvärde är detta den viktigaste bristen jag hittar.
2. **Ingen extern förankring.** Även en hashkedja är verkstadens egen. Ett
dagligt rotvärde till en oberoende part — eller kvalificerad
tidsstämpling — kostar nästan ingenting och flyttar bevisbördan.
3. **Ingen hotmodell och ingen mappning mot regelverk.** Jag hittar inget
dokument som säger vem angriparen antas vara. För ett system som ska
bli branschstandard krävs mappning mot ISO/IEC 27001, och för
fordonsanknytning ISO/SAE 21434 och UNECE R155.
4. **Inget kryptografiskt agilitetsschema.** Vilka algoritmer, vilken
nyckelrotation, vad händer när AES-GCM ska bytas? En logg som ska
läsas om tio år behöver det.
**Mina tre förbättringar**
1. Hashkedja per ärende, med rotvärdet i avslutshändelsen.
2. Extern förankring av rotvärdet — kvalificerad tidsstämpling räcker.
3. Publicerad hotmodell och regelverksmappning. Utan den kan ingen
säkerhetsavdelning i branschen godkänna ett införande, oavsett hur bra
koden är.
---
### 2.14 Specialist — utbildning av fordonstekniker
Det här är produktens starkaste sida och jag tror att ni underskattar
den.
En lärling lär sig i dag felsökning genom att titta på en erfaren
tekniker. Det som överförs är slutsatser, inte resonemang — och
resonemanget är yrket. ALVA gör resonemanget **synligt och obligatoriskt**:
- Fyra namngivna frågor med olika adressat i stället för en fritextruta.
- Hypoteser måste bemötas, inte glömmas.
- Skillnaden mellan observation och slutsats är kodad i gränssnittet
("Fotografera samtliga hjul. Skilj på observation och slutsats.").
- Evidensgraderna E0E6 lär ut ett begrepp branschen saknar ord för.
- Den ärliga vägen finns: orsaken kunde inte fastställas, och varför.
**Att systemet har en väg för "jag vet inte" som inte är en lögn är
pedagogiskt det viktigaste i hela produkten.**
Mina invändningar:
- **Ingen återkoppling.** Lärlingen får veta att grinden inte är
passerad, inte att resonemanget var svagt. Systemet dömer form, inte
innehåll — vilket professorn redan konstaterat — men i utbildning är
det innehållet som ska tränas.
- **Ingen övningsdata.** Det finns ett demoärende. Ett utbildningsläge
behöver hundra, med känt facit.
- **Ingen progression.** En lärling och en mästare möter samma grind.
**Mina tre förbättringar**
1. **Utbildningsläge med facit.** Kända ärenden där systemet efteråt kan
visa vad som faktiskt var fel och var resonemanget avvek. Det är den
funktion som skulle göra produkten till branschstandard i
yrkesutbildningen inom tre år.
2. **Handledarvy**: en instruktör som ser flera lärlingars ärenden och
kan kommentera resonemanget, inte bara utfallet.
3. Koppla evidensmodellen till yrkesutbildningens mål. Om E-graderna kom
in i utbildningsplanen kommer nästa generation tekniker att tänka i
dem oavsett vilket system de sedan använder — och det, inte
licensintäkten, är den verkliga standardiseringsvägen.
---
## 3. Diskussion
**Ordföranden:** Låt oss ta de tre punkter där panelen är oense.
---
**Den självskattade säkerhetsnivån.**
*Garantiansvarig:* Härled den. Ett självskattat värde som ser ut som en
mätning är värre än inget värde.
*Professorn:* Var försiktig. Om den härleds ur evidensgrad blir den ett
mått på **dokumentationsmängd**, inte på diagnostisk säkerhet. En
teknikers välgrundade osäkerhet är information; en formel som räknar foton
är det inte.
*Garantiansvarig:* Då låt formeln sätta taket och teknikern sänka. Ingen
kan påstå högre säkerhet än underlaget bär, men den som vet mer om
fordonets historia får sänka.
*Professorn:* Det accepterar jag. Asymmetrin är poängen.
*Ordföranden:* Noterat som panelens gemensamma rekommendation.
---
**Fotots bevisvärde mot integritet.**
*Datasäkerhet:* Jag försvarar EXIF-borttagningen. Delningsvyn går till
försäkringsbolag och partners. GPS i den vyn är en läcka som ingen bett om.
*Försäkring:* Jag begär ingen GPS. Jag begär att veta att bilden togs vid
det tillfälle loggen påstår.
*Datasäkerhet:* Då är vi överens, och lösningen är billig: hasha i
klienten, låt servern signera hash och mottagningstid. Ni får en
förseglad bild utan en enda personuppgift.
*Försäkring:* Med tillägget att rapporten då måste säga vad förseglingen
bevisar. "Oförändrad sedan mottagandet" är inte "tagen på detta fordon",
och den skillnaden kommer en motpartsjurist att hitta.
*Ordföranden:* Enighet. Detta är panelens tekniskt mest konkreta
rekommendation.
---
**Grindens tyngd.**
*Verkstadsföreningen:* Gradera den. Annars kringgås den.
*Garantiansvarig:* Gradera den inte. Undantaget blir regeln inom ett år.
*Verkstadsföreningen:* Ni betalar inte för de sju minuterna.
*Garantiansvarig:* Vi betalar för de ärenden där underlaget inte håller,
och det är dyrare.
*HMI-specialisten:* Ni argumenterar om fel sak. Problemet är inte
kravnivån utan **ordningen**. Elva beslutspunkter på en skärm känns som
mycket arbete även när det är lite. Samma krav, ett i taget, känns som
ett flöde. Mät interaktioner innan ni sänker krav.
*Verkstadsföreningen:* Om ni kan visa att samma krav tar hälften så lång
tid drar jag tillbaka mitt förslag.
*Ordföranden:* Panelen rekommenderar att ordningen åtgärdas först och
kravnivån omprövas därefter, mot mätdata.
---
**Toyota-sätet, avslutande:** Jag vill ha en sak i protokollet. Panelen
har ägnat en förmiddag åt att hitta fel och hittat riktiga fel. Men vi
har inte hittat ett enda ställe där systemet **påstår något som inte är
sant**. Ogranskad metodik står som ogranskad. Osäker garantibedömning
står som oklar. Demonstrationsytor står som demonstration. Att ett
uppslag som missar ska ge det försiktigaste utfallet är skrivet som en
regel, inte som en förhoppning.
Det är sällsynt, och det är den egenskap som gör att jag anser att
produkten är värd att bygga vidare på trots allt vi räknat upp.
---
## 4. Betyg
Skala 110. Kolumnerna: **TI** teknisk innovation · **DK** diagnoskvalitet ·
**AN** användbarhet · **SÄ** säkerhet · **SK** skalbarhet · **OEM**
OEM-anpassning · **VN** verkstadsnytta · **UV** utbildningsvärde ·
**ST** standardiserbarhet · **KP** kommersiell potential.
| Säte | TI | DK | AN | SÄ | SK | OEM | VN | UV | ST | KP |
|---|---|---|---|---|---|---|---|---|---|---|
| Ordförande | 8 | 6 | 6 | 8 | 5 | 4 | 7 | 9 | 7 | 7 |
| Volymtillverkare personbil | 7 | 5 | 6 | 8 | 5 | 3 | 7 | 8 | 6 | 6 |
| Premiumtillverkare personbil | 8 | 6 | 7 | 7 | 5 | 4 | 8 | 8 | 7 | 7 |
| Global volymtillverkare | 8 | 5 | 7 | 8 | 5 | 3 | 7 | 9 | 7 | 6 |
| Tunga fordon | 7 | 5 | 6 | 8 | 4 | 3 | 6 | 8 | 6 | 6 |
| Fordonsverkstädernas förening | 7 | 6 | 5 | 8 | 5 | 4 | 6 | 8 | 6 | 7 |
| Oberoende verkstadskedja | 7 | 6 | 6 | 7 | 3 | 4 | 7 | 8 | 6 | 7 |
| Garantiansvarig | 8 | 7 | 6 | 7 | 5 | 4 | 8 | 8 | 7 | 8 |
| Försäkringsbolag | 8 | 7 | 6 | 7 | 5 | 4 | 8 | 8 | 7 | 8 |
| Besiktningsingenjör | 7 | 6 | 6 | 8 | 5 | 4 | 6 | 8 | 6 | 6 |
| Konsumentrepresentant | 8 | 6 | 6 | 8 | 5 | 4 | 7 | 8 | 7 | 7 |
| Professor | 9 | 6 | 6 | 8 | 5 | 4 | 7 | 10 | 8 | 7 |
| HMI-specialist | 8 | 6 | 5 | 8 | 5 | 4 | 6 | 9 | 7 | 7 |
| Datasäkerhet | 8 | 6 | 6 | 7 | 5 | 4 | 7 | 8 | 6 | 7 |
| Utbildningsspecialist | 8 | 6 | 6 | 8 | 5 | 4 | 7 | 10 | 8 | 8 |
| **Medel** | **7,7** | **6,0** | **6,0** | **7,7** | **4,8** | **3,8** | **6,9** | **8,5** | **6,7** | **7,0** |
**Läsanvisning.** Två tal förklarar hela bilden. **Utbildningsvärde 8,5**
är det högsta någon produkt fått av den här panelen, och det beror på en
enda egenskap: systemet gör resonemanget obligatoriskt och synligt.
**OEM-anpassning 3,8** är det lägsta, och det beror på en enda egenskap:
metodikinnehållet är inte tillverkarnas.
Det är samma observation sedd från två håll. Produkten är stark där den
handlar om *hur man tänker* och svag där den handlar om *vad man ska
göra med en viss bil*.
---
## 5. Slutrapport
### 5.1 Är produkten redo för pilotdrift?
**Ja, med tre villkor.**
Systemet är påtagligt mer genomarbetat än vad panelen väntade sig av en
produkt i det här skedet. Serverauktoritativ grind, oföränderlig logg med
serverbunden härkomst, krypto-shredding, provad hyresgästisolering och en
provningsapparat som faktiskt kör mot riktig databas — det är
pilotmässigt.
Villkoren:
1. **Metodikinnehållet måste fackgranskas för de procedurer piloten
använder.** Inte alla sexton; de som faktiskt körs. Säkerhetsstegen i
högvoltsmetodiken är inte förhandlingsbara.
2. **`signatur`-fältet tas bort eller görs riktigt.** Ett fält som ser ut
som en signatur får inte finnas i en pilot vars data kan komma att
åberopas.
3. **Piloten mäter.** Interaktioner per ärende, tid per ärende, andel
ärenden som nekas avslut och varför. Utan mätning blir utvärderingen
en tyckandeövning.
### 5.2 Är den redo för nationell implementering?
**Nej.** Inte i närheten, och skälen är inte kvalitetsbrister utan
avsaknad av förutsättningar:
- Ingen företagsidentitet (OIDC/SAML), ingen koncernstruktur.
- Ingen belastningsprovning; infrastrukturkoden aldrig körd.
- Ingen mappning mot ISO/IEC 27001, ISO/SAE 21434 eller UNECE R155.
- Ingen OEM-datakoppling, inga gränsvärden, ingen artikelkoppling.
- Ingen kryptografisk kedja och ingen extern förankring av loggen.
Panelen bedömer detta som 1224 månaders arbete, varav den tekniska delen
är den mindre.
### 5.3 Kan den ligga till grund för en ny svensk standard?
**Ja — men inte produkten. Modellen.**
Detta är panelens viktigaste slutsats och den måste läsas noggrant.
ALVA är i dag en **implementation**, inte en **specifikation**. Det finns
specdokument, men de lever inne i kodbasen som kommentarer och
`docs/`-filer, och de är inte separerbara från just den här koden. En
standard kräver tre saker som saknas:
1. **Ett normativt dokument** som beskriver modellen oberoende av
implementation — händelseschema med utvidgningsregler, evidensgrader
E0E6 med definitioner, grindens regler uttryckta som prövbara
påståenden, och de invarianta strukturorden.
2. **En konformanstestsvit** som en tredje part kan köra mot sin egen
implementation. Ni har 750 tester, men de testar *er* kod.
3. **Minst två oberoende implementationer.** En standard med en
implementation är en produktbeskrivning.
Det som *är* standardiserbart, och som panelen anser bör standardiseras,
är:
- **Evidensmodellen E0E6.** Branschen saknar ord för skillnaden mellan
en teknikers påstående och en mätning med spårbart mätdon. Detta är
produktens mest överförbara idé.
- **ALVA-RULE-200:s fyra fält**, särskilt kravet på uteslutna alternativ.
Panelen är enig om att detta är den enskilt största förbättringen av
verkstadsdokumentation som lagts fram.
- **Kravet att härkomst sätts av mottagande system**, aldrig av
klienten.
- **Principen att ett uppslag som missar ska ge det försiktigaste
utfallet.**
- **Skillnaden mellan invariant struktur och översatt innehåll.**
Det som **inte** bör standardiseras är metodikinnehållet. Procedurer hör
hemma hos tillverkaren. En standard som föreskriver hur man felsöker en
vibration kommer att vara felaktig för något fordon och föråldrad inom
två år.
**Panelens formulering av en möjlig standard:** *"Krav på dokumentation,
evidensgradering och avslutsvillkor vid guidad fordonsdiagnostik."* Alltså
en standard för **bevisningen**, inte för **diagnostiken**.
En sådan standard är realistisk att föra till CEN och därefter ISO. Den
skulle sannolikt placeras nära ISO 18541-familjen men adressera något
den inte täcker: vad verkstaden ska producera, inte vad tillverkaren ska
tillhandahålla.
### 5.4 Vad måste förbättras först
Rangordnat efter vad som blockerar mest:
| # | Åtgärd | Blockerar |
|---|---|---|
| 1 | Fackgranskning av metodikinnehåll, per metodik och språk | All användning utanför pilot |
| 2 | Riktig signatur + hashkedja + extern tidsstämpling | Garanti- och försäkringsanvändning |
| 3 | Normativ spec separerad från koden + konformanstestsvit | All standardisering |
| 4 | Gränsvärden som data, kopplade till fordonsidentitet | OEM-acceptans |
| 5 | Härledd säkerhetsnivå med teknikersänkning | Garantibeslut |
| 6 | Förseglat foto vid upptagning | Bevisvärde, bedrägeriminskning |
| 7 | Ett beslut per skärm i pre-diagnostiken | Införandegrad i verkstad |
| 8 | OIDC/SAML och koncernstruktur | Kedjeverkstad |
| 9 | Belastningsprovning med publicerad siffra | Nationell drift |
| 10 | Regelverksmappning (27001, 21434, R155) | Säkerhetsgodkännande |
### 5.5 Vad panelen själv skulle lägga till
Funktioner som inte finns i produkten och som panelen anser att en
nästa generations standard bör innehålla:
1. **Utbildningsläge med facit och handledarvy.** Panelens enskilt mest
entusiastiska förslag. Ingen annan aktör gör detta, och det är den
snabbaste vägen till att modellen blir branschpraxis — genom
yrkesutbildningen, inte genom inköp.
2. **Mellanteknikervalidering.** Låt en andra tekniker registrera
instämmande eller avvikande bedömning på ett stängt ärende. Då blir
diagnostisk samstämmighet mätbar i stället för antagen, och panelen
får svar på den fråga vi i dag bara kan resonera om.
3. **Fordonsburen historik med ägarens samtycke.** I dag är historiken
verkstadens. Fordonets historik hör till fordonet och följer det mellan
verkstäder. Krypto-shreddingen ger redan mekaniken för samtycke.
4. **Negativa fynd som förstklassig data.** Systemet dokumenterar vad som
uteslöts — men bara i fritext i slutsatsen. Strukturerade negativa fynd
är den mest undervärderade datamängden i branschen: de säger vad felet
*inte* var, vilket är hälften av all diagnostisk information.
5. **Återkallelse- och kampanjkoppling** i pre-diagnostiken. Historikfrågan
ställs redan och kan inte hoppas över; den borde besvaras av data.
6. **Provisorisk åtgärd som egen händelsetyp** med obligatorisk
uppföljning — för tunga fordon och mobilt arbete.
---
## 6. Panelens sammanfattande omdöme
> ALVA löser inte diagnostikens svåra problem, och gör inte anspråk på
> det. Vad produkten gör är att göra verkstadens resonemang synligt,
> strukturerat och svårt att fejka — och det är ett problem branschen har
> haft i femtio år utan att angripa.
>
> Produkten är inte redo att bli en standard. **Modellen bakom den är
> redo att bli utgångspunkten för en.**
>
> Panelen rekommenderar pilotdrift under de tre angivna villkoren, och
> att ett normativt arbete inleds parallellt med fokus på evidensmodellen
> och avslutsvillkoren — inte på metodikinnehållet.
>
> Panelen noterar avslutningsvis att den under granskningen inte funnit
> något ställe där systemet påstår mer än det kan belägga. Det är
> ovanligt, och det är det som gör rekommendationen möjlig.