Commit Graph
13 Commits
Author SHA1 Message Date
Nick.RosenloecherandClaude Opus 5.5 ca95647bda chore: Telegram-Bot ApiCoreBotbot in der Cluster-ConfigMap
Backend Image / build-and-push (push) Successful in 5m25s
Frontend Image / build-and-push (push) Successful in 14m37s
Manifests / validate (push) Successful in 17s
Name ohne @, sonst verwirft telegram-config.ts ihn. Token liegt im Secret
apicore-telegram (nur Worker).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 19:07:56 +02:00
Nick.RosenloecherandClaude Opus 5.5 c2189df47a chore(deploy): Backend sha-bb3f79e live (verdrängte Königin automatisch ersetzt) (#28)
Manifests / validate (push) Successful in 18s
Backend Image / build-and-push (push) Successful in 5m8s
Frontend Image / build-and-push (push) Successful in 21m28s
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 17:44:13 +02:00
Nick.RosenloecherandClaude Opus 5.5 3ea285bce5 chore(deploy): Backend sha-1688e77 live (Königinnen-Archiv, Migration 20261021100000) (#28)
Frontend bleibt auf sha-d8efbc3 bis zur Sichtprüfung von T5b.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 17:18:18 +02:00
Nick.RosenloecherandClaude Opus 5.5 90d1c5244f chore(deploy): Anthropic-Key im eigenen Secret, nur der Worker liest ihn (#28)
Backend Image / build-and-push (push) Successful in 6m7s
Frontend Image / build-and-push (push) Successful in 16m41s
Manifests / validate (push) Successful in 16s
apicore-anthropic aus dem bisherigen Wert angelegt, Schlüssel aus
apicore-backend-secret entfernt, Worker mit dem voice-Patch (secretKeyRef),
API-Pod neu gestartet: die Warnung zur API-Rolle ist weg.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 15:30:53 +02:00
Nick.RosenloecherandClaude Opus 5.5 52e502e640 chore(deploy): Produktion auf sha-d8efbc3 (T5a komplett) (#28)
Backend Image / build-and-push (push) Successful in 5m22s
Frontend Image / build-and-push (push) Successful in 17m23s
Manifests / validate (push) Successful in 19s
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 15:25:08 +02:00
Nick.RosenloecherandClaude Opus 5.5 355a353671 chore(deploy): Runbook Schritt 3 live, Images sha-cda3e02 im Overlay (#28)
Backend Image / build-and-push (push) Successful in 8m17s
Frontend Image / build-and-push (push) Successful in 15m59s
Manifests / validate (push) Canceled after 11s
Am 2026-10-16 waren Backend- und Frontend-Image in Rancher auf sha-cda3e02
gesetzt worden, ohne Migrationen: der neue Backend-Pod wurde nie bereit
(P2010, Tabelle "ThrottlerHit" fehlte), das neue Frontend sprach mit dem
alten Backend. Am 2026-10-19 erst zurückgerollt, dann nach Backup
(pre-rollout-202610191316) und Prüfabfrage (colonyStrength > 40: 0)
pod-hardening und backend-roles angewendet: api + worker, 30 Migrationen
über den initContainer migrate, Job-CronJobs. Network-Policies, HPA und
voice bleiben offen.

Refs #28

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 13:23:05 +02:00
Nick.RosenloecherandClaude Opus 5.5 fee84c7a6b chore(deploy): Overlay auf Live-Stand, Rollout-Runbook Schritte 0 und 1 (#28)
- Image-Digests von backend, frontend und postgres sind die live
  laufenden; whisper bekommt seinen ersten CI-Digest. Die neuen CI-Digests
  für Schritt 3 stehen als Kommentar.
- Ingress-Hosts und TLS: apicore.encry.de, apicorebackend.encry.de.
- kubectl diff ohne Components zeigt nur Rollout-Strategie und
  startupProbe am Backend, den Digest-Pin für postgres (ein Neustart) und
  drei neue VOICE_*-Werte in der Backend-ConfigMap.

Refs #28

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-16 17:32:21 +02:00
Nick SzaunigandClaude Opus 5.5 c53810b8a6 feat: Abschreiben im Cluster mit Whisper-Image und Voice-CronJob (T7 L3 Task 13)
Backend Image / build-and-push (push) Successful in 5m49s
Frontend Image / build-and-push (push) Successful in 13m3s
Manifests / validate (push) Successful in 17s
Whisper Image / build-and-push (push) Successful in 1m56s
ApiCore-Whisper: transcribe.py liest das Manifest im RAM-Arbeitsordner,
dekodiert mit festem Demuxer je Endung, misst die Länge vor dem
Abschreiben (TOO_LONG > 240 s, DECODE_FAILED bei Länge 0), sperrt das
Netz vor dem Modell-Laden und schreibt nur Zähler auf stdout. Image:
python:3.12-slim per Digest, Nutzer 1000, alle Pakete mit Hash
(faster-whisper 1.2.1, av 18.1.0 wegen Inkompatibilität mit av 19),
Modell faster-whisper-small auf fester Revision mit SHA-256 je Datei.
CI-Workflow nur bei Änderungen unter ApiCore-Whisper/, Actions per SHA.

deploy/k8s/components/voice: CronJob alle 2 Minuten mit fetch, whisper,
ingest (gleiche UID, getrennte /tmp-Volumes, damit der Decoder dem
Container mit den Secrets nichts unterschieben kann; whisper ohne
Secrets und Umgebungsvariablen außer WHISPER_CPU_THREADS), Overlay mit
Platzhalter-Digest, ConfigMap-Werte für Sprache, Policy-Tests (55).
Die Anbindung des Anthropic-Schlüssels bleibt offen (Ruling 9).

Refs #27

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-16 11:12:59 +02:00
Nick SzaunigandClaude Opus 5.5 ec8c95056d docs: README im Root, Backend/Frontend-READMEs, Statuszeilen (2026-10-16)
Backend Image / build-and-push (push) Successful in 6m43s
Frontend Image / build-and-push (push) Failing after 12m42s
Manifests / validate (push) Successful in 18s
Neues README im Root mit Zweck, Aufbau, Start, Prüfbefehlen, Betrieb und
Projektstand (Issues #44, #43). Backend- und Frontend-README ersetzen die
Framework-Vorlagen. CLAUDE.md: Ordnerstruktur und echte Arbeitsweise
(main, gebündelt pushen, Rollout nur mit Freigabe). ARCHITECTURE §7/§8:
Live-ConfigMap, ensure-secrets.sh, korrektes Admin-Seed-Verhalten.
.env.example um BACKUP_MAX_IMPORT_BYTES und SEED_ADMIN_* ergänzt.
Statuszeilen in Plänen Rückgrat, T3–T6 und Specs Fahrplan, T7.

Refs #42

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-16 08:12:49 +02:00
Nick SzaunigandClaude Opus 5.5 6e3e9aee9b chore(k8s): live config values in overlay, script to fill missing secrets
- overlays/encry configmaps now carry the live cluster values (runbook
  step 1) plus OIDC_CLIENT_ID; kubectl diff against the cluster is empty.
- deploy/k8s/scripts/ensure-secrets.sh adds missing secret keys without
  touching existing ones (random encryption keys, empty Open-Meteo key,
  TELEGRAM_BOT_TOKEN=dummy) and never prints values.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-15 16:38:31 +02:00
Nick SzaunigandClaude Opus 5.5 fab7f7e12f feat: T4 wave 10 – bottling quality, phenology and honey chain UI, Telegram link/receive and ops
- Bottling quality: water content above the legal limit (strict >) answers
  409 CONFIRMATION_REQUIRED bound to the measured value; prefill for jar
  size, best-before (shelfLifeMonths, month-end clamping) and water content;
  impossible dates give 400; water-content checks in src/common/quality.
- Frontend phenology: "Entwicklung melden" sheet, IndexedDB v4 queue,
  season header on the apiary page, confirmed revoke for all apiaries.
- Frontend honey chain: "Vorschlag aus …" hints with explicit take-over,
  prefill status note, movement ledger with withdraw/correct dialogs.
- Telegram: link tokens (hashed, single use), private-chat receiver with
  lease and offset CAS, bounded poison-update skip, Retry-After, pending
  deliveries skipped on disconnect; system API for deliveries and retry;
  worker-only secret wiring and manifest policy tests.
- ARCHITECTURE.md §7, §9, §10, §11.11–11.13, Annahmen 51–55.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-14 22:47:17 +02:00
Nick SzaunigandClaude Opus 5.5 1971b2d9c4 feat: T4b/T4c wave 8 - weather history, phenology, honey chain, Telegram base
- Weather history from Open-Meteo behind an adapter: worker loop
  phenology-weather with backoff, Retry-After, User-Agent, chunked
  writes and forecast-to-archive correction
- Phenology: growing degree sum per DWD, phase from reports, GTS and
  calendar, calibration from previous years, daily job step,
  SeasonService reads the stored state
- Honey chain: prefill for extractions and batches (proposals only),
  plausibility and withdrawal warnings, Extraction lock, chain events
  and batch.created webhook from HoneyBatchRecorded
- Telegram base: schema, NotificationDelivery outbox, hardened bot
  client, startup check without crash, no-network-outside-loops guard
- ARCHITECTURE.md: sections 11.11-11.13, assumptions 42-46, env table

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-14 20:00:46 +02:00
Nick SzaunigandClaude Opus 5.5 c01a38835a feat: platform backbone and field capture, first part (checkpoint)
Platform backbone (plan 2026-10-13-plattform-rueckgrat), reviewed tasks:
- run roles api/worker/job/all with shared startup checks (Task 1)
- schema and migration for DomainEvent, deliveries, JobRun, ThrottlerHit (Task 2)
- audit, notifications and domain events written in the same transaction (Task 3)
- dispatcher with SKIP LOCKED claims, retries and stale release (Task 4)
- worker building blocks: tick, LISTEN/NOTIFY wake-up, health (Task 5)
- worker process and entry points (Task 6)
- throttler counters in Postgres (Task 19)
- separate keys per purpose with key ring (Task 20)
- public origin page without exact location (Task 22)
- shop keys split into read and write (Task 23)
- Kustomize base, components, overlay encry, CI validation (Task 26)

Field capture T3 (plan 2026-10-13-t3-erfassung-am-stand), reviewed tasks:
- brood frames, read endpoints, apiary overview and offline pack
- network basics, offline queue v3, navigation sheets, form building blocks
- new inspection with last-time hints and weather, varroa per day,
  treatment prefill, apiary page with round
- inspection photo (Task 10) is implemented, review pending

Not rolled out. Remaining tasks follow in later commits.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-13 17:57:54 +02:00