Entscheidung Inhaber: Zieht eine neue Königin ein, wird die bisherige
„Ersetzt“; Vereinigen und Auflösen eines Volks setzen dessen Königin auf
„Ersetzt“, ein Winterverlust auf „Eingegangen“. Nur aus einem verfügbaren
Status (ACTIVE, RESERVE, MATED, UNMATED), über updateStatusIn in derselben
Transaktion mit Archivdatum und Audit (QueensService.retireIn). Ein von
Hand gesetzter Endstatus eines Volks fragt weiter über den Aufräum-
Vorschlag nach.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- Marker als SVG-Wabe mit sieben Zellen (schlechtestes Volk in der Mitte,
Kreuz bzw. „!“ zusätzlich zur Farbe, Zähler ab 8 Völkern), nur
var(--…)-Farben, 48 × 52 px, per Tastatur erreichbar; Enter öffnet das
Popup mit Zusammenfassung und „Stand öffnen“, Fokus zurück zum Marker.
- Eine Übersicht je Stand über denselben Query-Key wie die Standseiten
(60 s staleTime), Liste und Offline-Hinweis bleiben ohne Leaflet nutzbar.
- leaflet-theme.css: 16-px-Text, 44-px-Bedienelemente mit deutschen
Namen, Kacheln in Dunkel gedämpft, Sonne ungefiltert; alte Marker-PNGs
entfernt.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Die Königinnen-Liste trennt Aktiv und Historie über deactivatedAt, das
Backend setzte das Feld aber nie. Jetzt stempelt ein Statuswechsel auf
LOST, DECEASED, REPLACED oder SOLD das Datum (update und updateStatusIn),
ein korrigierter Status nimmt es wieder weg. Die Migration
20261021100000_queen_deactivated_backfill trägt das Datum für bestehende
Königinnen nach (Ende der letzten Volkszuordnung, sonst updatedAt).
Auch die Lebensdauer in der Statistik rechnet damit wieder.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- Karte „Lebenslinie“ als erstes Kind der zweiten Reihe, über den
Karteikarten: Stärke in besetzten Waben, Milbenbalken mit Wort,
Königinnen mit Code und Markierungsfarbe, Behandlungen schraffiert,
Ereignisse (nahe beieinander zu einem Symbol zusammengefasst) und die
nächsten 21 Tage.
- Beschriftung als HTML in fester Größe, Legende, Tabelle als
gleichwertige Alternative, „Ganzes Leben zeigen“; ohne Leserecht keine
falschen Leerhinweise; keine Animation.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- Typen für die Saison-Zusätze aus /autopilot/today (optional, ältere
Backends laufen weiter) und SEASON_DEFAULTS, per Test an die Backend-
Configs gebunden.
- buildYearWheel: Ring der sechs Abschnitte ab dem aktuellen, spätere nie
vor morgen, Bezugsstand mit gemeldet am und Hinweis, Abweichungen mit
seit und Quelle, Fenster Schwarmzeit/Einwinterung/Winterbehandlung auch
für das Folgejahr, Aufgaben je Woche bis 51 Wochen voraus.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- Völker als Waben-Zellen (src/components/honeycomb, src/lib/honeycomb):
Zelle = Link mit Symbol, Kürzel und vollständigem Namen inkl. Zustand,
Rand für fällige Durchsicht; nie nur Farbe, keine Animation.
- Standseite mit Satz, Legende, „Braucht Blick“ und aufklappbarer Liste;
Offline-Standseite aus dem Paket; /apiaries-Karten mit Wabe (erste 20).
- Nur das Sechseck nimmt Tipps an (Zeilen greifen ineinander), Breite vor
dem ersten Bild gemessen, 403 ohne Fehlerkarte.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- buildLifeline (src/lib/colonies/lifeline.ts): eine Zeitachse je Volk mit
Stärke in besetzten Waben (seit 2026-10-17, ältere Werte nur in der
Tabelle als „Skala (alt)“), Milbenbalken, Königinnen-Spannen, Ereignissen
je Tag, Behandlungen, Lücken über 45 Tage und den nächsten 21 Tagen;
überfällige Schritte stehen bei heute mit „fällig seit“.
- useColonyLifeline: nur vorhandene Query-Keys, höchstens 5 Königinnen,
403 blendet eine Spur aus, offline ohne Daten kein Dauer-Laden.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- seasons[] bekommt segmentSince, reportedOn und note
(NO_COORDINATES | WEATHER_GAPS | WEATHER_STALE).
- Neues seasonCalendar: calendarFallback (8 Phasen, MM-DD), swarmSeason und
winterVarroaWindow aus den Regel-Configs, auch bei inaktiver Regel.
- Nur Zusätze, keine Migration, Recht bleibt colonies:read;
SEASON_AUTOPILOT wird je Anfrage einmal gelesen.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
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]>
- Baukasten-Wächter: jede Regel prüft eigene Beispiele (muss fangen, muss
ignorieren), veraltete Ausnahmen und Ordner-Ausschlüsse schlagen fehl;
neue Regeln für text-primary ohne -ink, dark:, Schrift unter 13 px
(Tailwind, SVG, CSS, style, *_SIZE-Konstanten) und Verlaufs-Hintergründe.
Aufgeteilt in baukasten-guard, touch-target-guard und einen Scan-Helfer.
- Hinweis „Neu: Sonnenmodus für draußen“ auf dem Dashboard, einmal je Gerät,
„Ausprobieren“ schaltet live um; Fokus geht danach zur Überschrift.
- Varroa-Diagramm: Beschriftungen als HTML mit fester Größe statt SVG-Text.
- Medikamente zeigen die Tabs auch leer; Zahlen in Tabs nicht beim Laden
oder Fehler; inaktive Tabs mit Hover für die Maus; TabPicker (Auswahl
unter 640 px) für Automatisierung und Statistik; Rollen-Dialoge breit
genug für die Rechte-Matrix.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
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]>
- src/lib/motion/tokens.ts und --motion-* in globals.css: Dauern,
Kurven und Feder an einer Stelle; Beute-Bühne liest dieselben Werte.
- AppMotion: LazyMotion strict, Bewegungs-Code (domAnimation) als ein
asynchroner Chunk, 28 kB gzip; check:motion-budget im Docker-Build
neben dem 3D-Budget (Spec 17.6).
- PresenceList: abgehakte Zeilen blenden aus, die übrigen rücken nur bei
„Voll“ nach; „Dezent“ blendet nur, „Aus“ sofort. Die Zeile geht nach
der festen Verzögerung, auch wenn der Server schweigt (Spec 17.5);
Fokus wandert zum nächsten Haken, auch ohne Bewegungs-Chunk.
- Overlays (Sheet, Dialog, Menü, Select) über Base-UI-Start/Ende-Stile
mit Token-Zeiten; Verschiebung und Skalierung nur bei motion-full.
- Kein transition-all, kein Hover-Heben, keine Breiten-Animation von
Daten; Skeleton erst nach 150 ms; Wächter-Regeln für alles davon.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- useHoloTheme liest die --holo-*-Token nur bei einem Wechsel von
Dunkel/Sonne neu (Attribut-Beobachter plus apicore:appearance), nie pro
Bild; gleiche Token behalten das Theme, nur Farbmaterialien werden neu
gebaut und alte freigegeben.
- Sonne nach Beute-Spec 9.3 und T5 17.8: schwarze Bühne ohne Boden,
Spiegel, Bloom, Vignette, Dunst und Partikel; weiße Kanten 2 px in
Bildschirmbreite (Hover, aktiver Platz, Vorschau 3 px), Rähmchen
schwarz-weiß schraffiert, Labels 16 px auf fester Platte, neutrales Licht.
- Glas-Knöpfe ohne Blur und Schein in Sonne.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- ui/tabs.tsx nur noch Variante segment: Leiste auf --muted, aktiver Tab
mit Kartenfläche, fetter Schrift und 3-px-Balken in --primary-ink;
44 px bei Touch, kompakt mit Maus; inaktive Schrift ≥ 6,27:1.
- ActiveHistoryTabs als Vorlage auf Tabs für 10 Listen (Pfeiltasten
schalten direkt, Daten sind geladen), mit toolbar und heading.
- Einstellungen (Automatisierung, Benutzer & Rollen) und Statistik mit
manueller Aktivierung: Pfeil bewegt den Fokus, Enter/Leertaste wählt;
?tab= über router.replace. TabSwitcher entfernt.
- Menüeinträge (Dropdown, Select) mit innerem Fokusring ≥ 3:1.
- Aufgaben: der Prioritätsfilter lädt die Liste jetzt neu (queryKey).
- Wächter: keine eigenen tablist/tab/tabpanel außerhalb ui/tabs.tsx.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Browser-Prüfung A7:
- Die Rechte-Matrix im 384-px-Dialog nahm drei Spalten nach der
Fensterbreite und schnitt Labels ab; jetzt Container-Queries.
- Dreifach-Auswahl: drei Spalten nur, wo „Nicht geprüft“ hineinpasst,
sonst rutscht die dritte Option in die nächste Zeile.
- Gedrückter Glas-Knopf („Aufbau als Liste“) mit 2-px-Rahmen in
holo-edge-strong statt nur Füllung.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Prisma liest das Mittel in einer zweiten Abfrage; ein gleichzeitig mit
seinem Mittel gelöschtes Los kam mit medicine null zurück und führte zu
500 (CI-Lauf 836, compliance-readiness).
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- ui/checkbox.tsx und form/checkbox-field.tsx: ganze Zeile, Kachel,
Aufgabe oder Sheet-Zeile ist der Knopf (Base UI), Haken bzw. Strich für
teilweise; role="switch" mit Daumen und Haken. ToggleChip und SwitchRow
entfernt.
- 14 Kacheln, 11 native Checkboxen, 3 Schalter-Zeilen, 6 Base-UI-Stellen
und die Heute-Aufgaben umgestellt; Werte ans Backend unverändert.
- Enter in einer Checkbox schickt kein Formular ab und schaltet nicht
(Leertaste schaltet); Nachbarn mit mindestens 4 px Abstand; gesperrte
Felder mit sichtbarem Grund; gesperrte Kacheln ganz gedimmt.
- Baukasten-Wächter: keine eigenen Checkboxen/Schalter, auch bedingte
role-Werte und setAttribute; Zeilenlisten mit Abstand.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Browser-Prüfung A6: In drei Spalten lief das fette „Nicht geprüft“ in den
gestrichelten Rahmen; die Beschriftung bricht jetzt um. Fett/Kursiv
zeigten den gedrückten Zustand nur über die Füllfarbe; Button pressed
bekommt zusätzlich einen 2-px-Rahmen in Vordergrundfarbe.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- ChoiceGroup nach Spec 10.2: gewählt mit Haken und 2-px-Tintenrahmen,
„Nicht geprüft“ gestrichelt; neue Variante appearance="cards" mit Icon
und Beschreibung (Winter-Ergebnis, Darstellung, Behördenmeldung).
- Eigenbau-Radios in Behördenmeldung, Phänologie-Bericht und
Zeilen-Ausrichtung durch ChoiceGroup ersetzt.
- Button pressed → aria-pressed (Fett/Kursiv, „Aufbau als Liste“);
Druck-Versatz nur mit motion-full.
- NumberStepper (ganze Schritte) für Winter-Waben, Milbenzahl (neu und
bearbeiten), Weiselzellen, Entnahme/Zählbestand, Startposition; Entnahme
nur 1 bis Restmenge, Startposition höchstens 1000.
- Baukasten-Wächter: Radios nur in ChoiceGroup, aria-pressed nur in
Button und Kalender, auch in Objektform und .ts-Dateien.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- Auf /colonies/[id]/hive bekommen Sprunglink, Seitenleiste, Kopf,
Offline-Band, untere Navigation und „+ Neu“ das Attribut inert; der
erste Tab landet auf „Zurück“ im Editor (vorher Stopp 34).
- metadata.icons verlinkt /icon.svg neben favicon.ico und apple-icon.
- Tests: alle THEME_COLORS gleich dem jeweiligen --background,
ausdrücklich gewähltes Dunkel färbt die theme-color.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- globals.css: eine Basisregel :where(:focus-visible) mit --focus-width
und --focus-offset (Sonne 3 px), Firefox-:-moz-focusring gleichgezogen;
--text-xs 0.8125rem.
- Fokus-Codemod (scripts/codemod-t5-focus.mjs): eigene Ringe und
outline-none raus, sm:h-/sm:size- zu pointer-fine:, Label-Zeilen mit
focus-ring-within; Skript-Fokus (Lücken-Liste, „Gespeichert“) bleibt.
- Button/Input 44 px, kompakt nur mit Maus; Icon-Knöpfe mit unsichtbarer
44-px-Trefferfläche bei Touch, Nachbarn mit genug Abstand.
- 16 px in Feldern, Labels, Auswahl, Leerzuständen, Listentiteln.
- .holo-stage auf allen Beute-Bühnen, .stage-card holt den Seitenring.
- Baukasten-Wächter (src/styles/baukasten-guard.spec.ts) mit den Regeln
aus A3–A5, Ausnahmen mit Grund; Kalender-Auswahl als Inset-Ring.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- Der Ablauf-Schritt der Vorschläge ist ein globales UPDATE. Auf Tagen in
2011 lief er über die offenen 2001-Vorschläge von autopilot und
reminders. Vor 2001 nutzt keine andere Suite ein Datum.
- jobs.e2e löschte im afterAll alle JobRuns seit Start und nahm rekey die
eigenen Läufe weg; jetzt nur cleanup, daily-evaluation, task-templates.
Refs #32
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- Honigzelle auf Tinte als Master-SVG; scripts/generate-icons.mjs erzeugt
any/maskable 192/512, Monochrom 512, drei Shortcut-Icons, Apple-Icon und
favicon.ico (16/32/48, ICO-Container von Hand) byte-gleich bei jedem Lauf.
- manifest.ts exakt nach Spec 12.3, Farben gleich dem hellen --background.
- Service Worker: SHELL_CACHE apicore-shell-v5, Icons im Shell-Cache; ein
fehlendes Icon hält das Vorladen der Seiten nicht auf.
- Proxy-Matcher: nur echte Icon-Dateien (icons/*.png) ohne
Sicherheits-Header, Punkte maskiert.
- BrandMark-Deckel mittig (linke Kante 18.8).
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- 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]>
- globals.css: Hell, Dunkel und Druck mit den Spec-Werten aus 4.2,
Fokusring = --primary-ink, Verlaufs-Token entfernt.
- Codemod scripts/codemod-t5-colors.mjs: text-primary/-warning auf -ink,
Vordergrund nur auf voller Fläche, Auswahlrahmen dunkel; --check-Modus
und Spec halten src sauber.
- Kontrast-Wächter misst die echte globals.css (VALUES_SWITCHED), alle 21
Zeilen aus 4.4 in allen vier Sätzen; keine dark:-Klassen mehr in src.
- Dunkel ist ohne Entwickler-Schalter wählbar, Standard bleibt Hell.
- Review-Nacharbeit: Auswahl-Umrisse und aktueller Schritt in Vordergrund,
deaktivierte Felder bg-muted, Avatar ohne Blend, Honig-Check-Rahmen
über --input.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- daily-evaluation nutzt die Jahre 2011/2012 statt 2001, damit der Job nicht
die Daten von autopilot und reminders liest und verändert.
- throttler: app.listen(0) einmal je App statt eines Servers je Anfrage
(ECONNRESET bei 40 parallelen Anfragen).
- outbox-claims: 120 s Zeitlimit für 2000 sequentielle Anweisungen.
- migration-harness: eine `migrate deploy` zur Zeit über eine eigene
Advisory-Sperre (P1002 bei parallelen Migrations-Suites).
- authority-notices und authority-notices-herd laufen über
exclusive-suite nacheinander; Herd-Wiederholung räumt eigene Entwürfe.
Refs #32
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
AREAS (37 Bereiche, je Symbol genau einmal; neu compliance, medicines,
voice, hive-systems, system) als einzige Quelle für Kopfzeilen, Menü
und Schnellanlage; PageHeader, DetailHeader und EntityCard nehmen
area statt icon/gradient (Codemod über 72 Dateien). Doppelte Symbole
aufgelöst. BrandMark (Wabe) ersetzt das Verlaufs-Sechseck;
Honig-Banner auf der Startseite durch Überschrift mit Datum ersetzt;
Verläufe aus 33 Verbrauchern entfernt (Token folgen in A4).
Refs #26
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Blockierendes Skript im <head> setzt Darstellung, Kontrast und
Bewegung vor dem ersten Zeichnen (gleiche Logik wie resolveAppearance,
für alle Eingaben getestet), theme-color je Satz, Wahl je Gerät in
localStorage mit Rückfall bei gesperrtem Speicher; Abgleich über Tabs,
Systemeinstellungen und Seitenwechsel an einer Stelle. Profil-Karte
„Darstellung“, Sonnenmodus im Benutzermenü; Dunkel bleibt bis A4 hinter
NEXT_PUBLIC_APPEARANCE_DARK. next-themes entfernt. ARCHITECTURE §9:
'unsafe-inline' der Frontend-CSP als getragenes Risiko mit Begründung.
Refs #26
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Neue Token neben den bestehenden (Schrift auf Hauptfarbe und Warnung,
Zustands-, Bereichs- und Königinnen-Töne, Fokus- und Rahmenmaße,
Wabenstriche), zwei vollständige Sonnen-Sätze (hell/dunkel) mit
größerer Schrift, 3-px-Fokus und ohne Schatten, Holo-Sonne für die
Beute-Bühne und .holo-stage-Fokusring, Druck immer im hellen Satz,
forced-colors. Wächter misst alle 21 Paare der Spec-Tabelle 4.4 in
vier Sätzen (OKLCH → sRGB → WCAG, Tönungen alpha-gemischt), prüft den
sRGB-Farbraum und erzwingt das Umschalten in A4. Sichtbar ändert sich
nur ein minimal entsättigter Holo-Kantenton (vorher außerhalb sRGB).
Refs #26
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Knopf „Ganze Durchsicht auswerten“ unter den Freitextfeldern, sobald
diktiert wurde: sendet nur unveränderte Diktat-Teile, die noch in den
Feldern stehen, mit Hinweis auf die Auswertung bei Anthropic. Länge
und Text werden genau wie im Backend normalisiert (NFKC, Steuer- und
Formatzeichen, Codepoints) und so gesendet; Idempotency-Key je Inhalt,
nach endgültigem 4xx neu. Ergebnis in der Sprachnotiz-Box der
Durchsicht, Vorschläge nur für leere Felder, nichts ohne Tipp; offline
und bei ausgeschalteter Auswertung mit Hinweis statt Knopf.
Gates: Frontend lint, typecheck, 3203 Tests, build.
Refs #27
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
30 erfundene Durchsicht-Transkripte mit erwarteten Vorschlägen (Fallen:
Korrekturen, Dezimalzahl, Wetter, Füllwörter, Prompt-Injection, sehr
lange Notiz, ungültige Funde). npm run eval:voice prüft offline mit
FakeStructuredModel (Präzision/Trefferquote je Feld, Schwellen 98/85 %);
--live --yes ruft das echte Modell nur ausdrücklich (≈ 0,21 $ mit
Sonnet). Preistabelle Backend und Frontend per Test gleich.
Refs #27
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Space Grotesk und Inter als variable Fonts, IBM Plex Mono 400/500, je
latin (enthält ä ö ü ß „ “ – €), unverändert aus @fontsource 5.3.0
(OFL-1.1, Hinweis in src/app/fonts/OFL.txt). Der Build holt nichts mehr
von Google; behebt den sporadischen Turbopack-Fehler beim Laden von
next/font/google im CI und spart einen Drittanbieter-Abruf.
Gates: Frontend lint, typecheck, 3185 Tests, build, 3D-Budget.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Task 14: Port StructuredModel mit Anthropic-Adapter (@anthropic-ai/sdk
0.131.0 exakt, Lieferkette geprüft), fester Endpunkt
https://api.anthropic.com (Umgebungs-Header werden entfernt), feste
Systemregeln ohne Datum/Volk/Person, Transkript als Daten in Tags,
strukturierte Ausgabe per JSON-Schema mit effort low, serverseitiger
Fallback per VOICE_SERVER_FALLBACK abschaltbar. Jeder Vorschlag wird
geprüft: bekanntes Feld, Wert in den Formulargrenzen, Zitat steht
wörtlich im Gesagten (Dezimalzahl als ein Wort), Korrektur gewinnt.
Netzwächter: nur die Worker-Verdrahtung erreicht den Adapter
(transitiv geprüft).
Task 15: Worker-Schleife voice-extractions (LISTEN + 15-s-Abfrage, ein
Lauf zugleich, höchstens 20 Notizen je Lauf), Modellaufruf außerhalb
jeder Transaktion mit 240-s-Obergrenze, Ergebnis versiegelt mit
Ereignis nur bei gehaltenem Claim; ohne Schlüssel EXTRACT_DISABLED ohne
Versuch, Tageslimit zählt jeden bezahlten Aufruf über das neue Journal
VoiceExtractionCall (nur IDs, Modell, Tokens, Ergebnis; 90 Tage, nicht
im Backup). Nur der Worker-Container erhält ANTHROPIC_API_KEY aus dem
Secret apicore-anthropic (optional); API- und Job-Rollen warnen, wenn
der Schlüssel bei ihnen gesetzt ist.
Gates: Backend lint, typecheck, 4589 Unit-Tests, build; e2e 104 Suites
(nur der Wetter-Test gegen die echte API schwankt); Manifest-Policy 55.
Refs #27
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
- Federn und Kamera schreiben in wiederverwendete Objekte (keine
Garbage je Frame)
- Glas-Materialien hängen nicht mehr an Qualitätsstufe/Umgebung;
Spiegelung und Farbaufspaltung als Uniforms (keine Neuübersetzung von
~70 Shadern beim Stufenwechsel)
- Tiefenunschärfe nur im Fokus, startet ohne Unschärfe bis ein
Fokuspunkt feststeht
- Spiegelboden als eigener reflector.ts (nach drei MeshReflectorMaterial,
MIT) gibt Render-Targets und Blur frei
- Form-Cache mit Referenzzählung und höchstens 16 ungenutzten Formen
A/B-Messung gegen den vorherigen Stand: keine fps-Verschlechterung
außerhalb der Streuung; Ziehen im Editor auf beiden Ständen geprüft.
904 Tests (Beute, Volk, Durchsicht), Build und 3D-Budget grün.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
backend-e2e.yml läuft bei Änderungen unter ApiCore-Backend/ gegen einen
Wegwerf-Postgres 18.6 (per Digest), mit frisch erzeugten JWT-Secrets
und SKIP_EXTERNAL=1 für den Wetter-Test gegen die echte API. Der
Herdentest prüft globalen Zustand, den parallele Suites verändern; er
wiederholt die herdenabhängigen Fälle bis zu dreimal aus einem
zurückgesetzten Zustand. Lokal 3 volle parallele Läufe grün
(103 Suites, 1073 Tests).
Refs #32
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
next und eslint-config-next 16.3.1 → 16.3.8 (veröffentlicht
2026-09-30, behebt die kritischen Advisories für 16.0.0–16.3.7), dazu
im Lockfile proxy-addr, js-yaml, fast-uri, source-map-js,
postcss-selector-parser und brace-expansion auf gepatchte Versionen
(alle mindestens 14 Tage alt). npm audit: 21 → 13 Meldungen, keine
kritische mehr; der Rest betrifft Entwicklungswerkzeuge oder hat nur
jüngere oder Major-Downgrade-Fixes.
Gates: Frontend lint, typecheck, 3157 Tests, build, 3D-Budget 299 kB.
Refs #31
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Felder mit Pflicht-Markierung und Fehler direkt am Feld, Fokus auf das
erste Problemfeld, Serverfehler über dem Speichern-Knopf, Fokus nach
dem Schließen zurück auf „Bearbeiten“; Ernte-Völker als Kacheln;
Bearbeiten offline gesperrt wie bei den Volks-Dialogen (Änderungen
werden nicht vorgemerkt). Gemeinsame Teile DialogSubmitBar und
EditTriggerButton nach components/form.
Refs #9
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Spec: Zweck, Stufen Voll/Dezent/Aus über useEffectiveMotionLevel,
Tokens aus dem, was Beute und CSS heute nutzen (eine Quelle in
lib/motion/tokens.ts), Regeln je Muster, was nie animiert,
Performance-Regeln, Abnahme; neue Inhaber-Frage 4.
Plan: 22 Korrekturen gegen den aktuellen Code (u. a. 31 statt 17
Checkbox-Stellen, fehlende AREAS, Lebenslinie unter der Beute-Karte,
Fokusring auf der Holo-Bühne), neue Tasks A11 (Bewegungs-Sprache
durchsetzen) und A12 (Beute-Bühne und Sonne-Modus).
Refs #26
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Im Frontend-Image fehlt der Backend-Ordner; describe.skipIf führt den
Rumpf beim Sammeln trotzdem aus, das readFileSync dort brach den Build
ab (ENOENT). Das Fixture wird jetzt im Test gelesen.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>