{
  "_doc": {
    "purpose": "Schema + starter for edition-config.json — the STATIC per-edition delivery metadata that render/build-linkedin.mjs reads (calendar, freshness, cover credit, captions). Complements edition-state.json (machine resumption state) and edition-delingstekst.md (distribution copy).",
    "decision": "G — production lives in the series root, NOT in the plugin. Copy this template to <serie>/linkedin/edition-config.json and fill it in. This file is the schema-defining TEMPLATE only.",
    "location": "<serie>/linkedin/edition-config.json  (read relative to cwd = series root; OUT_ROOT = <cwd>/linkedin)",
    "graceful": "render/build-linkedin.mjs loadEditionConfig() falls back to empty defaults if this file is missing or malformed — every field below is optional. Provide it for a complete delivery page (calendar slot, freshness banner, cover credit, alt-text caption).",
    "keys": "Article keys are zero-padded strings mirroring edition-state.json + the NN-prefix of each NN-utkast.md draft: \"01\", \"02\", ..., plus \"samle\" for the collected post.",
    "fields": {
      "calendar[NN]": "{ dag: human date label e.g. \"Mandag 02.06\", klokke: \"HH:MM\" } — the scheduled slot shown on POST.html. Default if absent: { dag: \"—\", klokke: \"08:00\" }.",
      "freshness[NN]": "string — a freshness/recency note rendered in the amber banner (e.g. \"Tall fra Q1 2026; sjekk før publisering etter 01.07\"). Omit for no banner.",
      "coverCredit": "string — global cover-image credit line (\"Add credit and caption\" field). One value for the whole edition.",
      "captions[NN]": "string — per-article cover-image caption / alt text. Default if absent: \"—\".",
      "carousel": "list of zero-padded NN strings (e.g. [\"03\",\"06\"]) — the editions that ship an optional carousel/document post. POST.html shows a carousel block only for these NN. Empty/absent → no carousel block. (S14/F6: replaces the old hardcoded Seres set.)"
    }
  },
  "calendar": {
    "01": { "dag": "<Ukedag DD.MM>", "klokke": "08:00" },
    "samle": { "dag": "<Ukedag DD.MM>", "klokke": "08:00" }
  },
  "freshness": {
    "01": "<optional freshness note shown in the banner — omit the key for no banner>"
  },
  "coverCredit": "<cover-image credit line, or empty string>",
  "captions": {
    "01": "<cover-image caption / alt text for article 01>"
  },
  "carousel": []
}
