5.9 KiB
5.9 KiB
Cibello – Pre-launch readiness report
Genererad 2026-08-11 efter slutförande-audit. Repo:
/home/dator_ubuntujpb/.openclaw/workspace/cibello-work/cibelloHEAD:63d83e0d7cebf12fce8573f54f828cd4dc2167aa
Vad som är grönt ✅
| Kontroll | Resultat |
|---|---|
| Branch / repo-kontroll | HEAD stämmer, trädet rent |
pnpm typecheck |
19/19 paket gröna |
pnpm test --force |
34/34 tasks, 328 tester gröna (kört 2× på färsk DB) |
pnpm build |
@app/admin, @app/api, @app/worker byggda |
brand-guard.sh |
OK – varumärket lever endast i brand.config.json |
| Databas | cibello_test färskt skapad med DROP DATABASE + CREATE DATABASE … OWNER app_user, migrerad + seedad med 254 recept/102 ingredienser/76 tabeller |
| Allergen-invariant | @app/recipe-generation/test/allergen-invariant.test.ts grön – varje seedat recept har allergens som matchar färsk derivering från canonical_ingredients |
| Safety canary | Worker-testet grön; canary-kontraktet är {allergen_invariant_brott, overifierade_visade, food_safety_lint_avvisade_7d} |
| GDPR-radering | DELETE /v1/me tömmer memory_items, taste_signals, feedback, ai_corrections, ai_training_bank, scan_jobs och tillhörande bilder (residual-test grön) |
| i18n-paritet ×12 | Tester för locale-preferenser, minnesrendering och enhetsetiketter gröna |
| Consent-grindar | Ingen personalisering/impact utan personalization=granted (recommendations + memory-impact tester gröna) |
| Integritetsspärrar | Impact för användare A returnerar aldrig användare B:s data |
| Ops-kontraktet | /ops/v1/summary har 14 toppnycklar + wall med 6 tiles; /ops/v1/health svarar {"ok":true,"app":"cibello"}; tester gröna |
Ändringar i denna runda
-
cleanup(memory): impact läser bara egen userPreferences-radcomputeMemoryImpacthämtar nu endast den anropande användarens fullauser_preferences-rad.- Andra hushållsmedlemmars personliga preferenser läcker inte in; endast de begränsande fälten (
allergens,avoidIngredientIds,spiceLevelMax) läses för säkerhetsfiltrering.
-
docs(status): uppdatera till nuläge (S1–S6, 254 recept, ops+wall, EOC)docs/STATUS.mdspeglar nu 19 paket, 328 tester, 254 recept, S1–S6, ops + wall, EOC.
-
docs(security): genomgång av hardening-checklist inför prodinfrastructure/security/hardening-checklist.mdhar kryssats av efter faktiskt läge; återstående gap listade (se nedan).
-
ops(api): lägg till /ops/v1/health för EOC- Fanns inte i koden trots att EOC-panelen förväntas anropa den.
- Endpointen är token-skyddad och svarar med det frysta kontraktet.
Hardening-gaps inför produktion ⚠️
Baserat på genomgång av infrastructure/security/hardening-checklist.md:
-
Server
- Dedikerad Linux-användare
<slug>utan sudo är inte provisionerad (/optär tom). - Secrets i
/opt/<slug>-platform/secrets/*.envär inte på plats. Dockerfile.adminsaknarUSER-direktiv och kör som root – api/worker har redanUSER app.- Reverse proxy + TLS är inte uppsatt i denna miljö.
- Brandvägg och automatiska säkerhetsuppdateringar är ej verifierade.
- Dedikerad Linux-användare
-
AWS
- IAM-roll
<slug>-appär inte provisionerad. - S3-bucket med block public access / SSE-S3 / lifecycle är inte provisionerad.
create-database.sqlfinns för begränsad DB-roll, men faktisk RDS-instans är inte provisionerad här.- Secrets Manager/SSM för produktionshemligheter är inte provisionerad.
- IAM-roll
-
GDPR
- Personuppgiftsbiträdesavtal med AWS + AAMOS-drift saknas.
Jordnötssmör-beslutet 🥜
- Nollcellen för jordnötssmör har fortfarande 0 recept i seed (kandidaterna i förra rundan var för enkla och underkändes).
- Beslut: lämnat medvetet ofyllt i denna runda för att undvika bred skalning/generering nu.
- Rekommendation: vid lansering eller strax innan, kör en riktad omkörning för satay, jordnötsnudlar, afrikansk jordnötsgryta etc. (≥3 ingredienser) genom samma verifieringspipelin + import som 254-setet.
Leverans
- Git bundle:
/mnt/c/Users/Public/cibello-63d83e0d7cebf12fce8573f54f828cd4dc2167aa.bundle - Storlek: 2.6M
git bundle verify: OK, complete history, sha1- HEAD:
63d83e0d7cebf12fce8573f54f828cd4dc2167aa
Sammanfattning
Kodbasen är funktionellt klar och alla automatiska grindar är gröna på färsk DB. Återstående arbete inför produktion är uteslutande infrastruktur/provisionering, avtal och den valfria jordnötssmör-cellen – inga blockeras av kod.