fix(metadata): accept GOOGLE_GEMINI_API_KEY in gemini_session — host metadata extraction was fully broken #255

Merged
chaim merged 1 commits from worktree-gemini-api-key-name into main 2026-06-14 20:33:45 +00:00
Owner

הבעיה

gemini_session._api_key() קרא רק GEMINI_API_KEY, אבל המפתח הקנוני (גם ב-~/.env של ההוסט וגם ב-Infisical SoT nautilus:/external-apis/gemini) הוא GOOGLE_GEMINI_API_KEY. המפתח קיים — רק תחת השם הקנוני — ולכן כל קריאה זרקה "GEMINI_API_KEY אינו מוגדר".

התוצאה: כל חילוץ-מטא-דאטה דרך Gemini בהוסט נכשל בשקט (186 שגיאות כאלה בלוג legal-metadata-drain, אחרונה 2026-06-14). התגלה בעקבות תיק מטא-דאטה בודד שתקוע (1049-06-21).

התיקון

_api_key() קורא GEMINI_API_KEY אם מוגדר, אחרת נופל ל-GOOGLE_GEMINI_API_KEY. בלי סוד חדש, בלי כפילות — יישור הקוד לשם-ה-SoT הקיים.

אומת חי

  • _api_key() נפתר (len=53) אחרי טעינת ~/.env.
  • קריאת gemini_session.query_json אמיתית מול ה-API מחזירה {"ok": true}.
  • py_compile נקי.

Invariants

  • G1 (תיקון-במקור) — הקוד קורא את שם-הסוד הקנוני, לא משתנה-env מקביל/כפול.
  • X10 (deploy-env-secrets) — מקור-אמת יחיד לשם-המפתח.

הערה: התיק התקוע נחסם גם מסיבה שנייה (pending עם metadata_extraction_requested_at=NULL — אותו פער-הזמנה כמו ב-#139); מטופל בנפרד.

🤖 Generated with Claude Code

## הבעיה `gemini_session._api_key()` קרא **רק** `GEMINI_API_KEY`, אבל המפתח הקנוני (גם ב-`~/.env` של ההוסט וגם ב-Infisical SoT `nautilus:/external-apis/gemini`) הוא **`GOOGLE_GEMINI_API_KEY`**. המפתח קיים — רק תחת השם הקנוני — ולכן כל קריאה זרקה `"GEMINI_API_KEY אינו מוגדר"`. **התוצאה:** כל חילוץ-מטא-דאטה דרך Gemini בהוסט נכשל בשקט (186 שגיאות כאלה בלוג `legal-metadata-drain`, אחרונה 2026-06-14). התגלה בעקבות תיק מטא-דאטה בודד שתקוע (`1049-06-21`). ## התיקון `_api_key()` קורא `GEMINI_API_KEY` אם מוגדר, אחרת נופל ל-`GOOGLE_GEMINI_API_KEY`. **בלי סוד חדש, בלי כפילות** — יישור הקוד לשם-ה-SoT הקיים. ## אומת חי - `_api_key()` נפתר (len=53) אחרי טעינת `~/.env`. - קריאת `gemini_session.query_json` אמיתית מול ה-API מחזירה `{"ok": true}`. - `py_compile` נקי. ## Invariants - **G1** (תיקון-במקור) — הקוד קורא את שם-הסוד הקנוני, לא משתנה-env מקביל/כפול. - **X10** (deploy-env-secrets) — מקור-אמת יחיד לשם-המפתח. > הערה: התיק התקוע נחסם גם מסיבה שנייה (pending עם `metadata_extraction_requested_at=NULL` — אותו פער-הזמנה כמו ב-#139); מטופל בנפרד. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-14 20:33:37 +00:00
fix(metadata): accept GOOGLE_GEMINI_API_KEY (canonical) in gemini_session — host metadata extraction broke
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 4s
Lint — undefined names / undefined-names (pull_request) Successful in 10s
a40c4ee828
_api_key() read ONLY `GEMINI_API_KEY`, but the canonical secret (host ~/.env and
Infisical SoT nautilus:/external-apis/gemini) is `GOOGLE_GEMINI_API_KEY`. The key
was present but under the canonical name → `_api_key()` raised "GEMINI_API_KEY אינו
מוגדר" on every call → ALL host precedent-metadata extraction via Gemini failed
silently (186 such errors in the legal-metadata-drain err log, latest 2026-06-14).

Fix: read GEMINI_API_KEY if set, else fall back to GOOGLE_GEMINI_API_KEY. No new
secret, no duplication — aligns the code to the existing SoT name (G1: fix at
source). Verified live: _api_key() resolves (len=53) and a real gemini query_json
call returns {"ok": true}.

Invariants: G1 (fix at source — code reads the canonical secret name, not a
parallel/duplicated env var) · X10 (deploy-env-secrets: single SoT name honored).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 1a4b4fcf63 into main 2026-06-14 20:33:45 +00:00
chaim deleted branch worktree-gemini-api-key-name 2026-06-14 20:33:45 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#255