diff --git a/.gemini/GEMINI.md b/.gemini/GEMINI.md index a1bcedf..a1faca1 100644 --- a/.gemini/GEMINI.md +++ b/.gemini/GEMINI.md @@ -72,6 +72,69 @@ HUB_URL: https://opax.vauco.no --- +## Diagnostics Rules (CRITICAL) + +> **Regel: Aldri gjett. Alltid hent faktisk data før du konkluderer.** + +### Ved build-feil (Cloud Build) + +NÅR `gcloud builds submit` feiler → kjør ALLTID dette FØR du gjør noe annet: + +```bash +# Hent siste build-ID og vis logg direkte +BUILD_ID=$(gcloud builds list \ + --project=propane-will-491900-m5 \ + --limit=1 \ + --format="value(id)") + +gcloud builds log $BUILD_ID \ + --project=propane-will-491900-m5 2>&1 | tail -80 +``` + +- IKKE søk på nett før du har lest loggene. +- IKKE gjett på årsak basert på exit code alene. +- Exit code 125 = Docker-feil → les logg for å se hvilken linje som feilet. + +### Ved deploy-feil (Cloud Run) + +```bash +# Hent Cloud Run-logger +gcloud logging read \ + 'resource.type=cloud_run_revision AND resource.labels.service_name=osvauco-agent' \ + --project=propane-will-491900-m5 \ + --limit=50 \ + --format="value(textPayload)" +``` + +### Ved HTTP-feil (4xx/5xx fra tjeneste) + +```bash +# Test direkte mot Cloud Run URL (bypasser IAP) +curl -s -o /dev/null -w "%{http_code}" \ + -H "Authorization: Bearer $(gcloud auth print-identity-token)" \ + https://osvauco-agent-357036551735.us-central1.run.app/ENDPOINT +``` + +### Ved sertifikat/DNS-feil + +```bash +# Sjekk SSL-sertifikat status +gcloud compute ssl-certificates list \ + --project=propane-will-491900-m5 \ + --format="table(name,managed.status,managed.domainStatus)" +``` + +### Generell regel + +| Situasjon | Gjør DETTE | IKKE dette | +|-----------|-----------|------------| +| Build feiler | Les build-logg via `gcloud builds log` | Søk på nett | +| Runtime-feil | Les Cloud Run-logger | Gjett på koden | +| HTTP 404 | `curl` tjenesten direkte | Endre kode uten å bekrefte | +| Auth-feil | `gcloud auth list` + `gcloud auth print-identity-token` | Anta token er ugyldig | + +--- + ## Domain Convention | Subdomain | Type | Purpose |