docs(production): standardiserad produktionsberedskap och gap-analys #531

Merged
admin merged 1 commits from docs/prod-readiness-siax-20261109 into main 2026-11-09 22:57:09 +00:00
2 changed files with 185 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
# 0pt — produktionsberedskap
> Standardiserad gap-analys enligt SIAX Master Definition of Done.
> Dokumentet är evidens, inte ett leveransgodkännande. Endast `PRODUCTION_READY` får kallas klart.
## Identitet
- Repo: `https://git.siax.io/admin/0pt.git`
- Manifest: `siax.repo.v3.json` — `0PT`, operationalState `running`
- Default branch: `main`
- Bedömd nivå: **LIVE_VERIFIED** (manifestets DoD-anspråk: ja)
- UI: ja — app, public
- CI-arbetsflöden: 9
## Git- och arbetsyteläge
- Aktuell branch: `chore/surface-posts-20261110` — ahead 1 / behind 0
- Ocommittade filer: 0 · otrackade: 0
- Worktrees: 1
- Lokala grenar: 2 · remote: 19
- Omergeade lokala grenar:
- `chore/surface-posts-20261110` (+1 commits)
## Livebevis (observerat 2026-11-09T23:48:50)
| Värd | HTTP | Klass | Titel | SIAX-tokens |
|---|---|---|---|---|
| `0pt.app` | 200 | public-ok | 0pt — your data | nej |
| `api.0pt.app` | 200 | public-ok | 0pt — your data | nej |
401/403 är förväntat för autentiserade ytor; det är inte ett produktionsfel.
0 betyder DNS/TLS/anslutning misslyckades och är alltid ett gap. SIAX-tokens avser markörer i serverad HTML; ett SPA-bygge kan bära dem i CSS/JS och då är kolumnen indikativ, inte bevis.
## Kod- och UI-signaler
- Trackade filer: 954
- Testfiler: 178 · E2E: 0 · Playwright: False · Cypress: False
- API-kontrakt: contracts/openapi.yaml
- Migrationer: 0 · Health-referenser: 69
- `@siax/ui`/tokens: True · a11y-verktyg: False · design-conformance: True
- UI-tillståndsfiler: app/error.tsx, app/not-found.tsx
- TODO/FIXME: 10
- Exempel:
- `.gitea/CODEOWNERS:10:# TODO: lägg till migrationskatalogen när den finns, t.ex.`
- `.gitea/workflows/cd.yml:15:# The placeholder guard below remains as a fail-closed guard, not as a TODO.`
- `.gitea/workflows/cd.yml:34: COOLIFY_APP_ID: ${{ vars.COOLIFY_APP_ID || 'TODO-no-coolify-app-provisioned-yet' }}`
- `.gitea/workflows/cd.yml:91: if [ "$COOLIFY_APP_ID" = "TODO-no-coolify-app-provisioned-yet" ]; then`
- `README.md:85: `TODO-no-coolify-app-provisioned-yet` literal. Both guard conditions in`
## Gap mot PRODUCTION_READY
- `NO_BACKUP_POLICY`
- `UNMERGED_LOCAL_BRANCHES`
- `UNPUSHED_COMMITS`
## Prioriterad backlogg
| Prio | Åtgärd | Konkret nästa steg |
|---|---|---|
| P0 | Landa grenar | Kör PR-flöde per gren, verifiera CI och merga; radera grenen lokalt och på origin efter merge. |
| P1 | Backup | Definiera frekvens, retention, mål och kryptering i `siax.backup`. |
| P1 | E2E i webbläsare | Lägg Playwright-flöde för inloggning och kärnflöde mot riktig miljö. |
| P1 | Tillgänglighetsgrind | Aktivera eslint-plugin-jsx-a11y/axe och en blockerande WCAG 2.2-kontroll. |
| P2 | Statusdokument | Lägg `docs/STATUS.md` med nivå, bevis, kända gap och nästa steg. |
| P2 | Teknisk skuld | Prioritera bland 10 TODO/FIXME-markeringar; stäng eller gör dem spårbara som issues. |
## Checklista före PRODUCTION_READY
- [ ] Canonical owner och produktgräns dokumenterad
- [ ] Versionerat API-/eventkontrakt med drift-check
- [ ] Tenant-isolering verifierad med negativt test
- [ ] Observability: metrics, loggar, spårning och larm
- [ ] Backup och verkligt återställningstest
- [ ] Live-E2E med verklig konsument, inte mock
- [ ] Deployad commit-SHA och build-ID utlästa ur runtime
- [ ] UI/UX granskad mot DES1GN och WCAG 2.2 där UI finns
## Verifieringskommandon
```bash
mise run check && mise run verify && mise run build
siax-doctor design --repo . --fail-on=block
curl -fsS https://<prod-host>/health && curl -fsS https://<prod-host>/ready
```
## Standardreferenser
- `siax-standard/standard/MASTER-DEFINITION-OF-DONE.md`
- `siax-standard/standard/SIAX-REPO-OPERATIONS-CONTRACT.md`
- `siax-standard/standard/registry/REUSE_FIRST_POLICY.md`
_Genererad 2026-11-09T23:41:39 från git, manifest, kodsignaler och live-prober. Omgenereras av `scripts/estate-production-audit.py`._
+93
View File
@@ -0,0 +1,93 @@
{
"name": "0pt",
"slug": "0pt",
"origin_url": "https://git.siax.io/admin/0pt.git",
"manifest_file": "siax.repo.v3.json",
"manifest_operational_state": "running",
"assessed_level": "LIVE_VERIFIED",
"observed_live": "LIVE_VERIFIED",
"gaps": [
"NO_BACKUP_POLICY",
"UNMERGED_LOCAL_BRANCHES",
"UNPUSHED_COMMITS"
],
"ui": true,
"ui_dirs": [
"app",
"public"
],
"prod_domains": [
"0pt.app",
"api.0pt.app"
],
"live": [
{
"host": "0pt.app",
"status": 200,
"class": "public-ok",
"title": "0pt — your data"
},
{
"host": "api.0pt.app",
"status": 200,
"class": "public-ok",
"title": "0pt — your data"
}
],
"deep": {
"tracked_files": 954,
"test_files": 178,
"e2e_files": 0,
"has_playwright": false,
"has_cypress": false,
"api_contracts": [
"contracts/openapi.yaml"
],
"migrations": 0,
"health_refs": 69,
"uses_siax_ui": true,
"has_a11y_tooling": false,
"has_design_conformance": true,
"ui_state_files": [
"app/error.tsx",
"app/not-found.tsx"
],
"todo_count": 10,
"has_runbook_docs": true,
"has_architecture_docs": true,
"has_status_docs": false
},
"backlog": [
{
"priority": "P0",
"task": "Landa grenar",
"next_step": "Kör PR-flöde per gren, verifiera CI och merga; radera grenen lokalt och på origin efter merge."
},
{
"priority": "P1",
"task": "Backup",
"next_step": "Definiera frekvens, retention, mål och kryptering i `siax.backup`."
},
{
"priority": "P1",
"task": "E2E i webbläsare",
"next_step": "Lägg Playwright-flöde för inloggning och kärnflöde mot riktig miljö."
},
{
"priority": "P1",
"task": "Tillgänglighetsgrind",
"next_step": "Aktivera eslint-plugin-jsx-a11y/axe och en blockerande WCAG 2.2-kontroll."
},
{
"priority": "P2",
"task": "Statusdokument",
"next_step": "Lägg `docs/STATUS.md` med nivå, bevis, kända gap och nästa steg."
},
{
"priority": "P2",
"task": "Teknisk skuld",
"next_step": "Prioritera bland 10 TODO/FIXME-markeringar; stäng eller gör dem spårbara som issues."
}
],
"standard": "SIAX Master Definition of Done"
}