Sprint: Hub UX + LLM Resilience · Time window: 04:30→08:10 IDT · Iterations: 8-11 (autonomous)
Gemini API Project DENIED (התגלה 2026-05-02 ~05:00 IL):
https://generativelanguage.googleapis.com/... מחזיר 403 PERMISSION_DENIED — "Your project has been denied access. Please contact support."oracle.env GEMINI_API_KEY, openclaw/.env GOOGLE_API_KEY) שייכים לאותו project — שניהם חסומים.מה אלעד צריך לעשות במוצ"ש:
Project / Billing / Abuse reports — לרוב זה billing או policy violation/etc/elad-network/oracle.env, /opt/openclaw/.env, /etc/elad-network/keyvault/llm-keys.envMitigations שהוטמעו (להפעיל עד שזה ייפתר):
OPENAI_FALLBACK_v1run_openclaw: אם output כולל "PERMISSION_DENIED" → קריאה ל-gpt-4o-mini ישירות עם persona system prompt + הודעת המשתמש[via OpenAI fallback — Gemini project blocked] כדי שאלעד יזההanalyze_with_gemini: על HTTP 401/403 → קריאה ל-gpt-4o-mini עם אותו prompt (3000→1500 tokens)_[via OpenAI fallback — Gemini project denied]_status=0/SUCCESSה-ANTHROPIC_API_KEY ב-/opt/openclaw/.env (sk-ant-api03-yfPGNRi4...) מחזיר invalid x-api-key. כנראה פג. כדאי לחדש כי זה fallback שני.
GET /manifest.webmanifest — application/x-web-app-manifest+jsonGET /pwa/icon-192.svg + /pwa/icon-512.svg — generated SVG עם 'H'GET /sw.js — cache-first ל-static, network-first ל-/today/kpis<link rel="manifest"> + SW registration ב-/today/today כאפליקציה; offline-fallback ל-cached snapshotkpi-history-collector.service + kpi-history-collector.timer (כל שעה)/opt/ai-factory/data/kpi-history.jsonl2026-05-02T04:48:08Z — health=100, bridge=0, tasks=0, cost=0TODAY_SPARKLINES_v1GET /today/history?hours=24 — מחזיר KPI history JSON<canvas class="spark"> ב-/today, אחד לכל KPIdrawSpark() משתמש ב-min/max scaling + filled area + stroke בצבע ה-KPI| מדד | ערך | הערה |
|-----|------|------|
| Hub health | 100% (9/9) | ✅ |
| Failed services NOW | 0 | (אחרי reset-failed skills-ingest) |
| Bridge pending | 0 | ✅ נקי |
| Bridge 24h | 47 events | רגוע |
| LLM cost today | $0 | (Gemini blocked, OpenAI fallback ידוע) |
| Disk free | 12GB | ✅ |
| KPI history entries | 1 | (התחיל ב-04:48) |
| Active services failing on Gemini | bridge-summarizer ✅ fallback, kaylee ✅ fallback, skills-ingest ❌ TODO |
skills_client.py להשתמש ב-OpenAI embeddings (text-embedding-3-small) במקום Gemini embedding-001.text/html במקום application/x-web-app-manifest+json. אולי דרך Page Rules או response header rule.application/manifest+json הופך ל-text/html. דפדפנים בודקים גם בלי, אבל Lighthouse ידגיש זה.text-embedding-004 הוסר ב-Gemini API — הקוד כבר עבר ל-gemini-embedding-001, אבל בכל מקרה project blocked. עדכון מודלים = פעם בעוד כמה חודשים.(.*?) עם strings ארוכים יותר ממומלץ — תפיסת newlines — תמיד להשתמש ב-re.DOTALL או ב-.find() במקום regex כשהtarget קבוע.systemctl reset-failed <service> — מנקה הסטוריה של failed services שתוקנו. צריך לקרוא לזה אחרי תיקון.| קובץ | שינוי |
|---|---|
/opt/ai-factory/scripts/delegator.py |
+PWA endpoints, +sparklines+history, +canvas elements |
/opt/ai-factory/scripts/kpi-history-collector.py |
NEW |
/etc/systemd/system/kpi-history-collector.{service,timer} |
NEW |
/opt/elad-network/agents/kaylee/kaylee-webhook.py |
+OPENAI_FALLBACK_v1 |
/opt/elad-network/infra/hub/bridge-summarizer.py |
+OPENAI_FALLBACK_v1 |
/opt/ai-factory/data/kpi-history.jsonl |
NEW (1 entry) |