4dea6d2818dab56bca63935622d14e6f4adac9ea
5 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
4dea6d2818 |
Fackgranskning av metodikinnehållet — ALVA 3.5
Sex oberoende domängranskningar av metodikbiblioteket, den enda text i systemet som säger åt en tekniker vad den ska göra med ett fordon: chassi, elsystem, högvolt, motor/drivlina, övriga system, plus en maskinell granskning av bibliotekets egna tre regler. Varje fynd verifierat före åtgärd, varje ersättning applicerad med träffkrav. Bokfört i docs/FACKGRANSKNING-2026-08.md (ALVA-DOC-0009); protokollet som gör den mänskliga granskningen per marknad utförbar i docs/FACKGRANSKNINGSPROTOKOLL.md (ALVA-DOC-0010). Granskat-flaggorna är oförändrade — detta höjer golvet, marknadens fackman sätter flaggan. Tio kritiska fynd åtgärdade. Tyngst: högvoltens skyddsutrustning och avspärrning låg SIST i säkerhetssekvensen — efter spänningsfrihets- mätningen — och står nu först med EN 60903/60900-krav; mätningen kräver CAT III och prova–mät–prova; frånskiljaren låses mot återinkoppling; metodiken säger nu vad som är förbjudet utan behörighet. Därtill: klimatets saknade f-gasgrind (nytt säkerhetssteg, högvoltens mönster), ADAS-provkörningen som instruerade att provocera nödbromsingrepp i trafik, öppna-aldrig-varmt för kylsystemet, trycksänkning och högtrycksförbud för bränsle, deaktiverad tändning/ insprutning före kompressionsprov, avgasutsug, provkörningsförbud vid bränsle-/bromsvätskeläckage, SRS-mätförbud — och klistringsfelet som lät engelska styrningsklagomål matcha högvoltsmetodiken (styrningens nyckelord låg i högvoltens lista; bekräftat av fyra granskare oberoende av varandra). Därutöver: referensvärden och villkor på mätningarna (startspänning, spänningsfall, laddspänning med smart laddning-reservation, vilostrom, CAN-terminering med gateway-reservation, AC-tryck vid föreskrivet varvtal), rätt metod där fel stod (säkringar mäts under last, krypström via mV-fall, spolskifte i stället för resistans, glappkontroll med avlastning efter fjädringstyp), och 23 nya kontroller där granskningen fann diagnostiska hål. 153 → 176 kontroller, samtliga med evidenskrav. Fasmodellen fick sista ordet där den och en granskare drog åt olika håll: vibrationens provkörning står kvar sist (Action går inte före Localization) och kör-först-substansen bor i symptomsteget; bromsarnas nya vägprov heter reproduktion och klassas som lokalisering — temperaturjämförelsen per hjul är avgränsning, inte åtgärd. Grindtexten för spänningslöshet kräver nu uttryckligen verifiering genom mätning, på alla tio språken. Grindfixturen fick sitt tredje foto när skyddsnätets felkodskontroll kom till — fixturen följer regeln, inte tvärtom (jfr T-13). 775 enhetstester, genomgång 4/4 inom interaktionsbudgeten (vibration 81/90 med de nya kontrollerna), portalspärr, integrationstest, typkontroll, lint på baslinjen, artefaktmätning och språkrunda gröna. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt |
||
|
|
6665004ec7 |
Härdning: kedjesvep i drift — och svepets första egna fynd
KEDJESVEPET. Verifieringen fanns men anropades bara vid tvist: ett brott kunde stå oupptäckt i åratal och upptäckas i sämsta tänkbara ögonblick. Nu går driften igenom varje kedja och varje försegling i varje organisation — POST /api/kedjesvep för arbetsledaren, `node server.mjs --kedjesvep` för nattlig cron utan server, med felkod vid brott så att larmet är gratis. Endpoint och svep delar EN implementation (kedjestatus): två implementationer av "är kedjan hel?" kommer att svara olika den dag det betyder något — det var T-13/T-14:s rot, tillämpad i förebyggande syfte. SVEPETS FÖRSTA FYND VAR PÅ RIKTIGT. Första körningen mot integrationsmiljön rapporterade TRE brott där testerna saboterat två. Det tredje var en bugg: leverantörshändelser bär `enhet: undefined`, och den kanoniska formen serialiserade nyckeln som null medan databasens rundresa släpper den. Skriv-digest och läs-digest skilde sig — varje leverantörshändelse bröt sin egen kedjelänk. Klienthändelser gick fria av en slump: JSON.parse kan inte producera undefined. Fixat vid roten: kanonisk form är nu exakt den form som överlever rundresan, inte en nästan likadan. Mekanismen fungerade precis som avsett — dag ett, mot sina egna upphovsmän. TRANSPORTEN. Säkerhetshuvuden på varje API-svar: nosniff, no-store (ett API vars svar är personuppgifter får inte bli en cacheträff), frame-ancestors 'none', no-referrer, HSTS. För stor kropp svarar 413 i stället för ett intetsägande 500. Kroppstak 4 MiB och batchtak 500 verifierade som redan på plats — bokfört, inte antaget. En skriptläxa på vägen: cron-svepets felkod är själva poängen, men under `set -e` dödade den testskriptet vid tilldelningen — felkoden måste fångas i samma andetag. Utgåva 3.4. API-specen dokumenterar svepet. TÜV-2-rapporten har bilaga A med samma-dags-härdningen, inklusive svepets eget fynd. 768 enhetstester, 224 integrationskontroller mot riktig Postgres, återställningsprov, genomgång 4/4, portalspärr, typkontroll och lint. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt |
||
|
|
1ba5aaaefa |
Härdning efter panelgranskningen: kedjad logg, förseglat avslut, härledd säkerhetsnivå
Fyra av granskningens fynd åtgärdade, i bevisvärdesordning. HASHKEDJAN (ALVA-SPEC-070). Triggrar skyddar loggen mot applikationen, inte mot den som äger databasen — det var granskningens allvarligaste invändning mot ett system vars hela värde är bevisvärde. Varje händelse bär nu en hash av sitt innehåll och föregående händelses hash, beräknad av servern vid insättningen. All skrivning går genom en enda kedjande funktion; en händelse vid sidan av kedjan är ett hål i beviset, så den bekväma vägen förbi finns inte. Digest tas över den LAGRADE händelsen, efter kryptering: verifieringen ska kunna räkna om den ur databasen för all framtid, och krypto-shredding förstör nycklar, inte rader, så kedjan överlever en radering. Radlås per ärende hindrar att två samtidiga batchar forkar kedjan — en falsk larmande verifiering avfärdas snart som trasig, och då är den värdelös. Integrationstestet provar hotmodellen ordagrant: triggern släpps, en rad ändras med full databasbehörighet, triggern återskapas. Verifieringen pekar ut raden — inte bara att något är fel, utan vilken. FÖRSEGLINGEN. Avslut skriver kedjans rot och en HMAC med en nyckel som aldrig finns i databasen, i samma transaktion som avslutshändelsen. Den som räknar om hela kedjan efter sin ändring stoppas av att förseglingen inte går att räkna om utan nyckeln. Engångs: triggern vägrar ändra en satt försegling. Svaret säger vad det bevisar och inte — innehållet är oförändrat sedan mottagandet, ingenting om tiden före, ingenting om sanningshalten. Den texten följer med in i varje rapport som citerar svaret, för det är precis den skillnad en motpartsjurist annars hittar. SIGNATUREN. Fältet hette signatur men var teknikerns egen text — det inbjöd en jurist att tro något som inte gällde. Det skrivs nu ur verifierad token som övriga härkomstfält och intygar exakt vad det kan intyga: vem som var inloggad när avslutet togs emot. SÄKERHETSNIVÅN (ALVA-SPEC-071). Var teknikerns fria val — ett självskattat värde som ser ut som en mätning. Nu ett tak härlett ur underlaget: hög kräver reproducerat symptom OCH spårbart mätvärde ur mätdonsregistret; enbart observationer bär inte ens medel. Teknikern kan sänka men aldrig höja — asymmetrin är poängen, ärlig osäkerhet är information. Grinden spärrar påståenden över taket på alla tio språken, och gränssnittet visar taket medan arbetet pågår i stället för att spara beskedet till avslutsknappen. "Delvis reproducerat" bär inte hög: delvis är ett annat ord för att felet inte är förstått. Taket bet direkt i två av våra egna testfixturer som påstod hög utan spårbart mätdon — vilket är regeln som fungerar, inte testet som är fel. Genomgången avslöjade följdkravet: vid medel/låg kräver panelen att teknikern anger vilka ytterligare kontroller som skulle stärka bedömningen, och det fältet fylls nu i som en tekniker skulle. Kvar ur granskningens lista, medvetet: extern förankring (RFC 3161), klienthashat foto vid upptagning, gränsvärden som data, OIDC/SAML. 766 tester, 200 integrationskontroller mot riktig Postgres — inklusive sabotage som databasägare — genomgång 4/4, portalspärr, typkontroll, lint och artefaktmätning gröna. Utgåva 3.3, API-specen uppdaterad, åtgärderna bokförda i panelrapportens bilaga A. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt |
||
|
|
b2c2ce72a3 |
Språksidan: vad som är översatt, vad som är granskat, och skillnaden
En vanlig språkmeny påstår att produkten finns på tio språk och slutar där. Sidan i foten redovisar i stället skillnaden mellan att en text ÄR översatt och att den är GRANSKAD av någon som kan yrket — och visar det på de strängar där skillnaden betyder något: grindens hinder, alltså de meningar som nekar en tekniker att avsluta ett ärende. Att välja just dem är avsiktligt. En spärr ingen förstår är en spärr utan väg förbi, så det är rätt strängar att döma en översättning efter. Väljaren byter språk direkt i provet; åtta av tio språk möts därefter av beskedet att metodiken inte är fackgranskad på språket. Det är ett obekvämt sätt att presentera sin egen produkt och hela poängen med sidan: en verkstadschef i Rumänien som får veta det i förväg kan planera för det, samma chef som får veta det av en tekniker som missförstått en säkerhetsinstruktion kan inte. Varningen står UNDER provet, inte över. Den som just läst fem meningar på sitt eget språk ska mötas av vad de inte garanterar — inte varnas i förväg och sedan lugnas av att texten ser bra ut. Sidan ligger i foten och inte i portalens navigation. Den är dokumentation snarare än ett arbetsverktyg, och portalraden har redan tio poster. Språkknapparna ligger i rutnät, inte flexradbrytning. Tio språk bröts av flex till nio plus ett ensamt, och den ensamma knappen läste sig som en eftertanke i stället för som ett språk bland tio. Två kolumner på telefon och fem på skärm gör tio jämnt i båda riktningarna. Utgåva 3.2 dokumenterad. 602 tester, typkontroll och lint rena. Artefakten byggd och mätt på 390 och 1280 px över femton vyer: inget spill, inga externa begäranden. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt |
||
|
|
ae5acbed92 |
Fotograferad mätarställning, versionshistorik och tysk kravbild i foten
---- Mätarställningen ska fotograferas ---------------------------------- Klienten krävde redan fotot: värdefältet visas först efter bilden. Men GRINDEN gjorde det inte, och en regel som bara finns i gränssnittet är en vana — inte en spärr. Det är samma förhållande som QUALITET C-2 gällde, fast åt andra hållet: här var servern svagare, vilket är värre, eftersom servern är den auktoritativa. Skillnaden är hela uppgiftens bevisvärde. En inskriven siffra är teknikerns påstående om vad som stod på mätaren; ett foto visar vad som stod där. Mätarställningen avgör garanti- och försäkringsfrågor i efterhand och är den enda uppgift i ärendet någon kan ha ett intresse av att skriva fel. Evidensgraderingen följer nu med: fotograferad ger E2, inskriven ger E1 och märks som inskriven i rapporten. Undantag finns och måste finnas — slocknad display, oåtkomlig timräknare — men kräver motivering, som det nekade historiksvaret. ---- Versionen räknades aldrig upp -------------------------------------- Systemet påstod "ALVA 1.0" efter tre revisioner, en fakturamodul och en stängd portal. Versionen sa alltså ingenting om vad man fick. Historiken är HÄRLEDD UR VAD SOM FAKTISKT LEVERERATS och varje post pekar på sin commit. En utgåva som inte går att peka på hör inte hemma i listan — en påhittad ändringslogg är samma obefogade säkerhet som produkten finns för att undvika. Första siffran höjs bara när GARANTIERNA ändras, vilket hänt två gånger: 2.0 när fakturan blev ett härlett dokument, 3.0 när TÜV-härdningen ändrade vad loggen garanterar. Nuvarande: 3.1. Och ett fynd på vägen: ritningsstämpeln läste versionen ur den AKTUELLA konstanten, så ett ärende stängt under 1.0 visade 3.1 — precis det stämpelns egen beskrivning säger att den inte ska göra. Avslutshändelsen bär numera versionen, och stämpeln läser den därifrån. Äldre ärenden säger uttryckligen "ej registrerad" i stället för att låna dagens siffra. ---- Tysk kravbild i foten ---------------------------------------------- Listan är tysk därför att § 5 DDG är den strängaste och mest utkrävbara i EU: klarar man den klarar man de andra marknaderna på köpet. Två fällor som är aktuella just nu, och bägge ser fortfarande ut som upplysningar: ODR-LÄNKEN SKA BORT. Förordning 524/2013 upphävdes genom förordning (EU) 2024/3228 och plattformen stängdes 20 juli 2025. Länken har legat i tiotusentals fotnoter sedan 2016 och pekar numera ingenstans. Foten saknar den medvetet. § 5 TMG HETER § 5 DDG sedan 14 maj 2024. Modulen hittar inte på uppgifter. Ett Impressum med påhittad adress är inte ett halvfärdigt Impressum utan ett vilseledande, och skadan större än den tomma rutans. Osatta fält redovisas som en åtgärdslista med rättslig grund, så driften kan spärra en driftsättning på listan i stället för att upptäcka bristen när brevet kommer. 460 enhetstester · genomgången 4/4 · typkontroll ren. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt |