Files
alva/felsokning/services/gemensam/sprak/it.mjs
T
Claude 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
2026-08-06 19:26:16 +00:00

142 lines
8.2 KiB
JavaScript

// ALVA-SPEC-060 · Italiano.
//
// I pulsanti usano l'imperativo breve («Salva», «Annulla»), come vuole
// la convenzione delle interfacce italiane; le istruzioni all'interno
// delle frasi restano all'infinito («Fotografare il contachilometri»),
// senza rivolgersi all'operatore — ALVA-SPEC-001 §7.
//
// `granskat: false`: l'interfaccia è tradotta, il testo delle procedure
// non è revisionato da uno specialista. Vedi index.mjs.
export const IT = {
// ---- Gradi di evidenza --------------------------------------------------
"evidens.E1": "Osservazione",
"evidens.E2": "Fotografia",
"evidens.E3": "Video con audio",
"evidens.E4": "Misurazione, strumento tarato",
"evidens.E5": "Documento",
"evidens.ej_kalibrerad": "taratura mancante o scaduta",
"evidens.ej_angivet": "strumento non indicato",
"evidens.ej_fotograferad": "inserito, non fotografato",
// ---- Il controllo di chiusura -------------------------------------------
"grind.objekt": "Identificazione del veicolo o dell'oggetto verificata",
"grind.historik": "Storico del veicolo verificato o motivato",
"grind.historik.nekad": "Un controllo dello storico rifiutato richiede un motivo indicato.",
"grind.historik.saknas": "Nessun controllo dello storico documentato.",
"grind.matarstallning.ingaende": "Chilometraggio in accettazione fotografato",
"grind.matarstallning.utgaende": "Chilometraggio alla riconsegna fotografato",
"grind.matarstallning.saknas": "Nessun chilometraggio documentato.",
"grind.matarstallning.ej_foto":
"Il chilometraggio è inserito ma non fotografato. Fotografare il contachilometri, oppure indicare perché non è possibile.",
"grind.reproducering": "Verifica del sintomo: riprodotto, oppure documentato come non riproducibile",
"grind.felorsak": "Analisi della causa radice documentata",
"grind.atgard": "Intervento documentato o motivato",
"grind.atgard.saknas": "Non è documentato né un intervento eseguito né un motivo della sua assenza.",
"grind.kundbeslut": "Decisione del cliente sulla proposta registrata",
"grind.kundbeslut.avbojt": "Lavoro eseguito nonostante una proposta rifiutata",
"grind.kundbeslut.avbojt.detalj":
"Il cliente ha rifiutato la proposta, ma risulta documentato del lavoro come eseguito.",
"grind.kvalitetskontroll": "Controllo qualità eseguito — sintomo verificato",
"grind.kontroller": "Punti di controllo della metodologia: evidenza, oppure deroga documentata",
"grind.foton": "Fotografie presenti per i controlli che le richiedono",
"grind.slutsats": "Conclusione (ALVA-RULE-200)",
"grind.hogvolt.behorighet": "Abilitazione alta tensione confermata",
"grind.hogvolt.spanningslos": "Veicolo messo fuori tensione secondo la procedura del costruttore",
"grind.regelpaket": "La firma del pacchetto di regole non corrisponde — chiusura bloccata.",
"grind.regelpaket.osignerat": "È in uso un pacchetto di regole esterno privo di firma — chiusura bloccata.",
"grind.evidens": "Livello di evidenza superiore a E0",
"grind.evidens.saknas": "Nel registro non è presente alcuna evidenza.",
"grind.foton.detalj": "{kontroller} controlli richiedono una fotografia, {foton} fotografie nel registro.",
"grind.sparr.ej_uppfyllt": "Il requisito di sicurezza non è soddisfatto.",
"grind.arendetyp.okant": "Requisito sconosciuto nel pacchetto di regole: {krav}",
"grind.arendetyp.krav": "Requisito per questo tipo di pratica: {krav}",
"grind.sakerhet": "Livello di confidenza entro quanto sostiene l'evidenza",
"grind.sakerhet.detalj": "La confidenza indicata ({niva}) supera quanto sostiene l'evidenza ({tak}). Integrare l'evidenza, oppure abbassare il livello — l'incertezza onesta è informazione.",
// ---- La conclusione (ALVA-RULE-200) -------------------------------------
"slutsats.rubrik": "Conclusione",
"slutsats.konstaterat": "Che cosa è stato accertato",
"slutsats.evidens": "Quale evidenza lo sostiene",
"slutsats.avfardat": "Quali ipotesi sono state escluse, e perché",
"slutsats.osakert": "Che cosa resta incerto",
"slutsats.ickesvar":
"Questa non è una conclusione. Indicare che cosa è stato accertato e quale evidenza lo sostiene.",
"slutsats.falt.motivering": "Motivazione",
"slutsats.falt.motivering_ej": "Motivo per cui la causa non è stata accertata",
"slutsats.falt.uteslutet": "Alternative escluse",
"slutsats.falt.kvarstaende": "Incertezza residua",
"slutsats.falt.atgardsval": "Scelta dell'intervento",
"slutsats.saknas": "{falt} manca.",
"slutsats.ickesvar.falt": "{falt}: «{text}» non è una motivazione. Indicare che cosa vale realmente, e perché.",
"slutsats.for_kort": "{falt} è troppo breve ({langd} su almeno {minsta} caratteri) per poter essere verificato in seguito.",
"slutsats.utan_varfor": "{falt} indica il che cosa, non il perché. Collegare la conclusione all'evidenza — che cosa in essa la sostiene?",
"slutsats.utan_slutsats": "La pratica non può essere chiusa senza una conclusione. Indicare perché la conclusione discende dall'evidenza.",
"slutsats.hypotes_obemott": "L'ipotesi «{text}» è presente nel registro ma non viene trattata. Indicare perché è stata esclusa, o perché resta aperta.",
// ---- Flusso della pratica -----------------------------------------------
"arende.nytt": "Nuova pratica",
"arende.oppna": "Pratiche aperte",
"arende.avslutade": "Pratiche chiuse",
"arende.avsluta": "Chiudi la pratica",
"arende.avslutat": "Pratica chiusa",
"arende.kan_ej_avslutas": "La pratica non può ancora essere chiusa",
"arende.hinder": "Da completare prima della chiusura",
"arende.overlamna": "Trasferisci",
"arende.ansvarig": "Responsabile",
// ---- Controllo preliminare ----------------------------------------------
"pre.rubrik": "Controllo preliminare — prima dell'inizio del lavoro",
"pre.historik.fraga":
"Lo storico del veicolo è stato verificato? (lavori precedenti, guasti ricorrenti, TSB, campagne)",
"pre.historik.ja": "Sì — verificato",
"pre.historik.nej": "No",
"pre.historik.skal": "Motivo per cui lo storico non è stato verificato (obbligatorio)",
"pre.historik.relevant": "Lavori precedenti rilevanti (facoltativo — catena causale)",
"pre.matarstallning": "Chilometraggio",
"pre.fotografera": "Fotografa il quadro strumenti",
"pre.felbeskrivning": "Descrizione del guasto del cliente verificata",
"pre.observationer": "Altro in fase di accettazione?",
// ---- Azioni -------------------------------------------------------------
"handling.spara": "Salva",
"handling.avbryt": "Annulla",
"handling.fortsatt": "Continua",
"handling.tillbaka": "Indietro",
"handling.dokumentera": "Documenta",
"handling.fotografera": "Fotografa",
"handling.spela_in": "Registra video",
"handling.undantag": "Documenta una deroga",
"handling.undantag.skal": "Motivo della deroga (obbligatorio)",
"handling.exportera": "Esporta",
"handling.skriv_ut": "Stampa",
// ---- Misurazione --------------------------------------------------------
"matning.varde": "Valore",
"matning.enhet": "Unità",
"matning.matdon": "Strumento",
"matning.matdon.valj": "Seleziona strumento",
"matning.matdon.okant": "Strumento sconosciuto. Registrarlo prima di salvare la misurazione.",
"matning.kalibrerad_till": "Tarato fino al",
// ---- Rapporto -----------------------------------------------------------
"rapport.rubrik": "Rapporto della pratica",
"rapport.sammanfattning": "Sintesi",
"rapport.evidens": "Evidenze",
"rapport.atgarder": "Interventi",
"rapport.harledd":
"Derivato dal registro della pratica. Le osservazioni e le misurazioni sono riportate senza conclusioni prive di fondamento.",
// ---- Lingua -------------------------------------------------------------
"sprak.valj": "Lingua",
"sprak.granskat": "Revisionato",
"sprak.ogranskat": "Non revisionato",
"sprak.tackning": "{procent} % dell'interfaccia",
"metodik.ogranskad":
"Il testo delle procedure non è stato revisionato da uno specialista tecnico in {sprak}. I passaggi e i punti di controllo sono mostrati in inglese dove non esiste una traduzione revisionata — una traduzione non revisionata di un'istruzione di sicurezza è peggiore di una in lingua straniera, perché non sembra straniera.",
"metodik.pa_engelska": "Mostrato in inglese — nessuna traduzione revisionata in {sprak}",
};