// ALVA-SPEC-002 · Utgåvor.
//
// ---- Varför versionen är en egen modul ---------------------------------
//
// Den stod som en sträng i gränssnittskoden och räknades aldrig upp.
// Systemet påstod "ALVA 1.0" efter att kvalitetsgrinden flyttats till
// servern, schemat stängts, faktureringen byggts, portalen stängts och
// tre revisioner härdats. Versionen sa alltså ingenting om vad man fick.
//
// Historiken nedan är HÄRLEDD UR VAD SOM FAKTISKT LEVERERATS, inte
// skriven för att se ut som en produkt med lång historia. Varje post
// pekar på den commit där arbetet finns. En utgåva som inte går att peka
// på hör inte hemma i listan — en påhittad ändringslogg är samma sorts
// obefogade säkerhet som produkten finns för att undvika.
//
// ---- Vad som gör en utgåva stor -----------------------------------------
//
// Andra siffran räcker för ny funktion. Första siffran höjs bara när
// GARANTIERNA ändras — vad systemet lovar om ett underlag. Det har hänt
// två gånger: när fakturan blev ett härlett dokument i systemet, och när
// TÜV-härdningen ändrade vad loggen garanterar.

export const UTGAVOR = [
  {
    version: "3.1",
    datum: "2026-08-06",
    commit: "a94c228",
    rubrik: "Regelverk, försäkringsunderlag och support i ärendet",
    andringar: [
      "Garantiregimer för EU och USA med källa och kontrolldatum per post — och skiljelinjen mellan lagstadgat och avtalat, som förväxlas åt bägge håll.",
      "Försäkringsvillkor som underlag för ett samtal. Modulen avgör ingenting och kan inte avgöra något.",
      "Felanmälan i varje ärende, med härlett sammanhang. Ett regnr kan inte smugglas med.",
      "Mätarställningen ska vara fotograferad, inte bara inskriven — kravet fanns bara i gränssnittet och var därmed en vana, inte en spärr.",
    ],
  },
  {
    version: "3.0",
    datum: "2026-08-06",
    commit: "b147694",
    rubrik: "TÜV-revision och härdning av integritetsgarantierna",
    stor: true,
    andringar: [
      "Händelsenyckeln skopad till ärendet: en organisation kan inte längre hindra en annan från att skriva historik.",
      "Mätkedjan slås upp i mätdonsregistret — E4 var tidigare ett påstående klienten gjorde om sig själv.",
      "Personnycklarna kuverteras under en huvudnyckel utanför databasen.",
      "Gallringen verkställs av ett eget jobb i stället för att bara vara ett datum ingen läste.",
      "Åtkomstloggen och raderingsregistret är append-only.",
    ],
  },
  {
    version: "2.1",
    datum: "2026-08-06",
    commit: "3b83fc9",
    rubrik: "Portalen stängd på riktigt",
    andringar: [
      "Inloggningen autentiserar mot plattformen och portalen är oåtkomlig utan giltig session.",
      "Fakturavyn läser organisationens egna fakturor; ett misslyckat anrop visar felet, inte exemplet.",
    ],
  },
  {
    version: "2.0",
    datum: "2026-08-06",
    commit: "b457543",
    rubrik: "Fakturering i systemet",
    stor: true,
    andringar: [
      "Fakturan härleds ur organisationens tillstånd i stället för att skrivas in.",
      "Utfärdad faktura är oföränderlig; betalning är en händelse och statusen en projektion.",
      "Nummerserie utan luckor. Ingen betalleverantör är inblandad.",
    ],
  },
  {
    version: "1.3",
    datum: "2026-08-05",
    commit: "6676262",
    rubrik: "Egen typografi och läsbarhet på telefon",
    andringar: [
      "Inbäddad typografi enligt ALVA-SPEC-001 — inga externa hämtningar.",
      "Ritningsstämpel på rapporten, räta hörn, tätare spärrning.",
    ],
  },
  {
    version: "1.2",
    datum: "2026-08-05",
    commit: "86d553b",
    rubrik: "Sviten körs faktiskt",
    andringar: [
      "ALVA:s tester lades in i CI. De hade passerat bara när någon körde dem för hand — ett test som ingen kör är dokumentation, inte en spärr.",
      "Genomgången blev ett incheckat test.",
    ],
  },
  {
    version: "1.1",
    datum: "2026-08-05",
    commit: "31727a4",
    rubrik: "Leverantörsrevision 2 och härdning",
    andringar: [
      "Händelseschemat stängt: okända fält avvisas i stället för att lagras.",
      "Kvalitetsregeln finns på ett ställe — klienten frågar grinden i stället för att ha en egen åsikt.",
    ],
  },
  {
    version: "1.0",
    datum: "2026-08-04",
    commit: "590fab3",
    rubrik: "ALVA-metoden",
    andringar: [
      "Analys · Lokalisering · Verifiering · Åtgärd som metod, inte som assistent.",
      "Kvalitetsgrinden serverauktoritativ. Avslutssats enligt ALVA-RULE-200.",
    ],
  },
];

/** Nuvarande utgåva. Enda stället siffran finns. */
export const NUVARANDE = UTGAVOR[0];

/** Så versionen skrivs i gränssnittet och i ritningsstämpeln. */
export const PLATTFORMSVERSION = `ALVA ${NUVARANDE.version}`;

/**
 * Versionen som gällde när ett ärende stängdes.
 *
 * Ritningsstämpeln ska visa vad som gällde VID AVSLUTET, inte vad som
 * gäller den dag rapporten läses — det står i stämpelns egen beskrivning,
 * och gällde ändå inte för versionen, som lästes ur den aktuella
 * konstanten. Ett ärende stängt under 1.0 visade 3.1.
 *
 * Avslutshändelsen bär numera versionen. Äldre ärenden saknar den, och då
 * sägs det uttryckligen i stället för att dagens siffra lånas ut.
 */
export function versionVidAvslut(avslutshandelse) {
  const v = avslutshandelse?.plattformsversion;
  return typeof v === "string" && v.trim() ? v : "Ej registrerad (stängt före ALVA 3.1)";
}
