Files
zima-apps/AGENTS.md
T
Joachim Friberg 4b43e80f06 Updated metadata
Changed author and developer to Joachim Friberg
2026-03-20 13:15:56 +01:00

128 lines
4.7 KiB
Markdown

# 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/...`).
- Vid förslag/byte av `image:` måste imagen verifieras online (manifest/tag finns i registry) innan merge.
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:
```bash
./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>/`.
- För varje fil som en agent tänker ändra ska agenten först skapa en tom låsfil: `<filnamn>.agent_wip`.
- Om `<filnamn>.agent_wip` redan finns ska agenten vänta 60 sekunder och kontrollera igen.
- Upprepa väntan i upp till 10 minuter (10 försök). Om låsfilen fortfarande finns efter 10 minuter: avbryt och be användaren om beslut.
- När agenten är klar med filen ska motsvarande `<filnamn>.agent_wip` tas bort direkt.
- Låsfilen ska tas bort även vid fel/avbrott så långt det går, för att undvika falska lås.
## 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).