Files
zima-apps/AGENTS.md
T

4.1 KiB

AGENTS.md

Detta dokument styr hur agenter och utvecklare arbetar i detta repo. Fokus: korrekthet, låg risk och underhållbarhet.

1) Syfte och prioritet

  • Gäller hela repot.
  • Kompletterar globala agentinstruktioner.
  • Vid konflikt gäller striktare regel.

2) Repo-invarianter

  • Appfiler ligger under Apps/<app-id>/.
  • Varje app ska minst ha:
    • docker-compose.yaml
    • README.md (syfte, portar, volymer, privilegier, risker)
  • Compose ska ha giltig top-level name (gemener + bindestreck).
  • Om container_name används måste den vara max 32 tecken och bara innehålla 0-9, a-z, A-Z, _, -.
  • Endast .yaml används i repot (aldrig .yml).

3) Säkerhetsbaseline (Compose)

MUST:

  • Pinna images till explicit version eller digest.
  • Inte använda :latest.
  • Hålla volymer snäva (/DATA/AppData/$AppID/...).

SHOULD:

  • security_opt: ["no-new-privileges:true"]
  • cap_drop: ["ALL"] när appen tillåter det.

Högrisk-inställningar är tillåtna men kräver varning och motivering:

  • privileged: true
  • network_mode: host
  • mount av Docker-socket (/var/run/docker.sock)

Om någon högrisk-inställning används måste appens README.md innehålla:

  • varför det behövs,
  • vilka alternativ som utvärderats,
  • vilka risker det innebär.

4) Arbetsflöde för ändringar

  • Små, reviewbara ändringar först.
  • Beskriv säkerhetspåverkan i PR.
  • Lokal validering är rekommenderad under utveckling:
./scripts/validate-appstore.sh
  • Lokal validering är inte blockerande för varje enskild commit.

5) Obligatorisk release-checklista

Inför release/publicering måste följande vara uppfyllt:

  1. ./scripts/validate-appstore.sh körd med Validation OK.
  2. Ingen app använder image: ...:latest.
  3. x-casaos metadata är satt och konsekvent.
  4. Appens README.md är uppdaterad.
  5. Eventuella högrisk-inställningar är tydligt motiverade.

6) Review-krav

PR som ändrar appar ska explicit ange:

  • vilka app-id:n som påverkas,
  • säkerhetsrisk (låg/medel/hög),
  • om högrisk-inställningar introduceras eller ändras.

7) Testkrav för containerappar

För nya appar eller större ändringar i befintliga appar (routing, discovery, auth, nätverk, secrets, cert-hantering) ska integrationstester ingå.

Minimikrav:

  • Testa med mockade externa gränser (t.ex. Docker API, reverse proxy API, DNS/API-provider), så testerna är reproducerbara lokalt.
  • Verifiera minst ett fail-closed-scenario (saknad/ogiltig secret, API-fel, otillåten metadata) där appen inte exponerar tjänster oavsiktligt.
  • Verifiera att endast explicit tillåtna containrar/endpoints exponeras.

Tester ska dokumenteras i appens README.md med exakt körkommando.

8) Branch-namnstandard

När en ny branch skapas ska formatet vara:

<appnamn>/<initial|bugfix|update>/<detalj>

Regler för <detalj>:

  • initial: max 5 ord som beskriver vad som byggs.
  • bugfix: vad som fixas (kort och konkret).
  • update: versionsuppdatering i formen vX.Y.Z-to-vA.B.C.

9) Parallellt agentarbete och git-scope

  • När en ny app skapas ska en ny mapp alltid skapas under Apps/<app-id>/.
  • Flera agenter kan arbeta samtidigt. Fråga alltid innan du skapar ny branch eller byter branch, för att undvika krockar.
  • git add och git commit får endast omfatta filer i den egna appens undermapp under Apps/<app-id>/.

10) Verifieringsdokument när app är redo

När en app bedöms som "redo" ska appmappen innehålla en verifieringsfil:

  • Apps/<app-id>/HOW_TO_VERIFY.md

Filen ska vara praktiskt körbar och innehålla:

  • tydliga förutsättningar (miljö, DNS, secrets, beroenden),
  • positiva testfall med förväntade resultat,
  • minst ett fail-closed/negativt testfall,
  • exakta kommandon för att verifiera DNS, nät och TLS,
  • en sektion "data att samla" för snabb Codex-felsökning.

Sektionen "data att samla" ska minst täcka:

  • versions-/buildinfo (appversion, branch/commit eller zip + checksum),
  • relevant konfiguration (med maskade secrets),
  • loggar från berörda containers,
  • konkreta felobservationer (hostname, tidpunkt, förväntat vs faktiskt beteende).