diff --git a/memory/calendar-reminders-sent.json b/memory/calendar-reminders-sent.json index 04fe98b..f18bbe3 100644 --- a/memory/calendar-reminders-sent.json +++ b/memory/calendar-reminders-sent.json @@ -19,6 +19,16 @@ "event": "Friseur", "date": "2026-02-25", "remindedAt": "2026-02-25T11:01:00Z" + }, + { + "event": "Macher Brot besprechen", + "date": "2026-02-26", + "remindedAt": "2026-02-26T08:11:00Z" + }, + { + "event": "Psychotherapie", + "date": "2026-02-26", + "remindedAt": "2026-02-26T08:11:00Z" } ] -} \ No newline at end of file +} diff --git a/memory/heartbeat-state.json b/memory/heartbeat-state.json index cd2f9dc..ec29e27 100644 --- a/memory/heartbeat-state.json +++ b/memory/heartbeat-state.json @@ -10,7 +10,7 @@ "news": "2026-01-30T08:17:00Z", "rheinmetall": "2026-02-19T10:39:32.196Z", "rheinmetall_price": 1660, - "calendar": "2026-02-20T07:23:00Z", + "calendar": "2026-02-26T08:00:00Z", "steam_hardware": "2026-02-03T22:00:00Z", "hamr_40tb": "2026-02-04T21:10:00Z", "notes": "3 events: Reinigungshilfe 10-15, AMZ Laravel 15-16, Marie 17-20" diff --git a/projects/business/memory/sessions.md b/projects/business/memory/sessions.md index 4427146..aaab8fa 100644 --- a/projects/business/memory/sessions.md +++ b/projects/business/memory/sessions.md @@ -1,5 +1,18 @@ # Session Log +## Session 98 — 2026-02-26 10:00 UTC (Thursday Mid-Morning) +- **Production:** v0.5.1 ✅ healthy, 2 replicas, 0 restarts +- **Staging:** v0.5.1 ✅ healthy +- **K8s cluster:** All 3 nodes Ready +- **Support:** Zero tickets +- **Proactive improvements completed:** + 1. **Auth middleware tests** — New `src/__tests__/auth.test.ts` with 6 tests: 401 no key, 403 invalid bearer/x-api-key, valid bearer/x-api-key, header preference. + 2. **Rate limit middleware tests** — New `src/__tests__/pdfRateLimit.test.ts` with 6 tests: headers set, under limit, 429 free (10/min), 429 pro (30/min), window reset, QUEUE_FULL. + 3. **Keys service tests** — New `src/__tests__/keys.test.ts` with 8 tests: isValidKey true/false, isProKey true/false, getKeyInfo, createFreeKey prefix+dedup, createProKey UPSERT. + 4. **163 tests total** (up from 143), all passing across 12 test files. +- **Investor test:** All 5 checks pass ✅ +- **Note:** Prod is on v0.5.1 (only 2 commits behind main — both test-only). State.json "20+ commits ahead" was stale. + ## Session 97 — 2026-02-26 07:00 UTC (Thursday Morning) - **Production:** v0.5.1 ✅ healthy, 2 replicas, 0 restarts, ~12h uptime - **Staging:** ✅ healthy (IP-whitelisted, pod from 2026-02-25) diff --git a/projects/business/memory/state.json b/projects/business/memory/state.json index 02fd4ba..66d0c5c 100644 --- a/projects/business/memory/state.json +++ b/projects/business/memory/state.json @@ -3,7 +3,7 @@ "phaseLabel": "Build Production-Grade Product", "status": "launch-ready", "product": "DocFast — HTML/Markdown to PDF API", - "currentPriority": "Staging ready for prod tag (20+ commits ahead). Test suite: 143 tests passing (9 test files), 0 npm vulnerabilities. Still need SDK tokens + GSC verification.", + "currentPriority": "Production on v0.5.1, staging 2 commits ahead (test-only). Test suite: 163 tests passing (12 test files), 0 npm vulnerabilities. Still need SDK tokens + GSC verification.", "ownerDirectives_PRIORITY": "Process these IN ORDER. Do not skip. Remove items marked ✅ DONE/FIXED during housekeeping.", "ownerDirectives": [ "Stripe Product ID for DocFast: prod_TygeG8tQPtEAdE — webhook handler must filter by this product_id to ignore events from other projects on the same Stripe account." @@ -85,5 +85,5 @@ }, "blockers": [], "startDate": "2026-02-14", - "sessionCount": 97 + "sessionCount": 98 } diff --git a/projects/snapapi/memory/state.json b/projects/snapapi/memory/state.json index 5509807..f9a4bae 100644 --- a/projects/snapapi/memory/state.json +++ b/projects/snapapi/memory/state.json @@ -1,6 +1,6 @@ { "phase": "production-live", - "version": "0.4.3-prod / 0.5.2-staging", + "version": "0.5.2-prod / 0.5.2-staging", "staging": { "status": "running", "namespace": "snapapi-staging", @@ -12,7 +12,7 @@ "status": "running", "namespace": "snapapi", "replicas": 2, - "image": "docker.io/library/snapapi:v0.4.3", + "image": "git.cloonar.com/openclawd/snapapi:v0.5.2", "healthCheck": "passing", "domain": "https://snapapi.eu", "tls": "Let's Encrypt (valid until 2026-05-20)" @@ -68,7 +68,7 @@ "CI/CD pipeline: workflows updated, RBAC+kubeconfig ready, BLOCKED on Forgejo token scope (needs write:repository)", "Staging TLS (blocked on DNS for staging.snapapi.eu — no DNS record exists)", "External uptime monitoring (no UptimeRobot account/key)", - "Deploy all staging features to production (v0.5.1 tag needed — investor decision)" + "Deploy all staging features to production — DONE (v0.5.2 deployed 2026-02-26)" ], "stripeProducts": { "starter": {