🛰️ Landsat 8/9 integration added (2026-06-08 ~10:00)
- New:
skills/geospatial-arsenal/landsat.py — 3rd independent free satellite source for cross-verification (Dr. Wael approved: "توكل على الله، فكرة رائعة").
- Source: Element84 earth-search STAC (collection landsat-c2-l2), USGS/NASA, FREE, NO KEY.
- Commands:
search (dated scenes + cloud + platform) ✅ live-tested on Avcılar (found LC09 2026-05-07 @1.6% cloud) · preview (LandsatLook viewer + STAC item links) ✅.
- ⚠️ Lesson: USGS thumbnails sit in requester-pays S3 (need AWS auth) → pixel download not free. Strength of Landsat for us = independent dated-scene CATALOG (compare vs Sentinel/ESA) + full bands (red/green/blue/nir/swir COGs) for processing. Visual review via Sentinel/Mapbox/GIBS.
- EOS LandViewer rejected: EOSDA API Connect is commercial (paid, no free programmatic tier); only manual web UI is free. Landsat chosen instead — real free API + independent satellite.
- Trio now: Sentinel-2 (10m ESA) + Landsat 8/9 (30m NASA) + NASA GIBS (daily) — all free, all programmatic, all independent for comparison.
🔧 Econ arsenal + APS verify (2026-06-08 ~10:15)
- ✅ APS/Autodesk VERIFIED LIVE: keys are AUTODESK_CLIENT_ID/SECRET (NOT APS_). My earlier "drift" claim was MY read error — checked wrong var name. Live client_credentials → token len 809, expires 3599s. Account paid + owned by Dr. Wael, pipeline complete, ZERO problem. LESSON: check AUTODESK_ not APS_* for Autodesk.
- ✅ Added fred() + fmp() to econ_router.py — graceful no-key handling (clean error+signup link, no crash). Wired into main (fred/fmp subcommands). macro/fx untested regression = none. Awaiting Dr. Wael to register free keys:
- FRED: https://fredaccount.stlouisfed.org/apikeys (free instant)
- FMP: https://site.financialmodelingprep.com/developer/docs (free 250/day)
- Then save FRED_API_KEY + FMP_API_KEY in env.sh → works immediately.
✅ FRED + FMP keys LIVE (2026-06-08 ~11:30)
- FRED_API_KEY (32 char) + FMP_API_KEY (32 char) saved in env.sh, verified live.
- FRED ✅ full: e.g. DGS10 (10y treasury) = 4.47% (2026-06-04). Series: FEDFUNDS, CPIAUCSL, DGS10, UNRATE.
- FMP ✅ US stocks (AAPL=$307.34 live). ⚠️ Free plan = US only; non-US (THYAO.IS) → 402 Payment Required → use yfinance for Turkish/BIST stocks. Handled gracefully (no crash).
- FMP base URL UPDATED to /stable/ (Dr. Wael provided; old /api/v3/ deprecated). econ_router.fmp() now uses params + /stable/.
- LESSON: chat-display truncates long keys with "…"; the FULL key arrived only via inbound metadata block. Always confirm key LENGTH (FRED/FMP=32) after save before claiming success.
✅ Two-Independent-Sources rule unified (2026-06-08 ~11:45)
- NEW shared module: skills/_shared/cross_verify.py — CROSS_VERIFY_BLOCK + source_pairs(domain) + INDEPENDENT_PAIRS (medical/legal/economic/geospatial/science). Single source of truth, imported by routers (no text duplication).
- Rule (Dr. Wael golden): every MATERIAL fact needs ≥2 INDEPENDENT sources (different originators) before stating. On conflict → state both, never silent-pick. Single-source → flag "unverified, lower confidence". Mirrors Sentinel/Landsat/GIBS comparison philosophy.
- Wired into: legal_router.py (build_prompt + source_pairs legal) ✅, econ_router.py (build_prompt + source_pairs economic) ✅, medical-arsenal/SKILL.md (new section after Tier hierarchy) ✅.
- Verified: all syntax OK, blocks injected (legal/econ prompts contain TWO INDEPENDENT + pairs), medical SKILL has rule, ZERO regression (FRED DGS10=4.47% still live).
- Import is defensive (try/except → empty fallback) so routers never break if _shared missing.
✅ weekly_arsenal_audit.sh expanded (2026-06-08 ~12:05)
- Added 9.5a (missing-keys detector) + 9.5b (SOTA/new-version watch). Built to Dr. Wael's exact spec: pure bash/curl, timeout 5s per probe, parallel (& + wait), ZERO LLM in script.
- Cost analysis (studied before building): script itself = $0 (bash/curl + /v1/models free list, no tokens). Only the weekly cron wrapper (Opus reads report) gets ~2-4K extra tokens = ~$1-2.5/YEAR. Negligible. Stability impact = zero (isolated, weekly, off hot-path).
- Verified live: bash -n OK, full run = 15s exit 0, both sections work. 9.5a: all 15 expected keys present (0 missing). 9.5b: openclaw 2026.6.1=latest, Anthropic opus-4-8 present, OpenAI gpt-5.5-pro newest, node v24.16.0.
- Decision: expanded EXISTING script (no new cron) — leverages existing weekly-arsenal-audit cron f4a87c82 (Sun 05:00). No new load.
✅ Capabilities auto-index built (2026-06-08 ~12:12)
- NEW: scripts/generate_capabilities_index.sh — pure bash/grep, ZERO LLM/network/tokens. Scans all 4 locations, writes ONLY CAPABILITIES_INDEX.md (separate from hand-written CAPABILITIES.md — untouched). Atomic write (temp→validate→mv); on failure leaves existing index intact.
- TRUE skill count (live-verified): 101 workspace SKILL.md + 2 router-arsenals + 4 plugin (symlinks, needed find -L) + 57 system = 164 total callable. (Dr. Wael was right: more than 103. The 103 = custom arsenal only.)
- Integrated as section 9.5c in weekly_arsenal_audit.sh (existing Sun 05:00 cron) — no new cron, no new load. Full audit run = 9s exit 0.
- Strategic study (all axes): cost=$0 (bash, off hot-path, NOT in system-prompt → zero cache break), capabilities=↑ (accurate 164 mirror vs stale 15), accuracy=↑ (prevents doc-drift like APS), diamond-chain/stability=zero impact (reference file, off hot-path). Best value/cost of the session.
- Bug fixed during build: $n_ markdown-italic collided with bash var → printf; plugin symlinks needed find -L.
✅ Identity Charter — مُدمج + محروس + مربوط كـ skill ثابت (2026-06-08 ~13:32)
الميثاق المرجعي الموحّد skills/identity-charter/SKILL.md (158 سطر · 9 أقسام · 17 خط أحمر · 10 خطوات منهجية):
- دمج كامل لـ SOUL + AGREEMENTS + GOLDEN_RULES + MISTAKES (حتى M-051) — تحقّقت لا نقص.
- مربوط كـ skill ثابت: frontmatter (name+description) → يظهر في skills catalog + يُكتشف تلقائياً.
- إلزامي في startup: AGENTS.md §0.7 (Full Arsenal Auto-Load, M-036) — "يُتبع في كل رد بلا استثناء".
- حارس آلي جديد §51 في verify_agreements.sh — يفحص كل heartbeat/جلسة: 9 أقسام + 17 خط أحمر + عبارات جوهرية + الربط في AGENTS. تشغيل حي: 4/4 ✅ exit 0.
- تحقّق صارم ثانٍ (13:37): فحص تغطية مصدري لـ20 مفهوماً → وُجد نقصان حقيقيان أُصلحا: (1) Genius Analysis Protocol 8 خطوات أُضيف قسماً كاملاً تحت المنهجية، (2) 3-Layer Sync (config/runtime/live) أُضيف لخط الإثبات الأحمر #5. الميثاق الآن 171 سطراً (كان 158). درس: أول edit لـ Genius فشل صامتاً رغم "Success" → كُشف بـ read-after-write (الأسطر بقيت 158) → أُعيد فنجح. لا تثق برسالة النجاح، تحقق دائماً.
- تقوية (defense-in-depth): أُضيف ذكره في GOLDEN_RULES_CORE.md كنقطة ربط ثانية (تجنّب SPoF — كان معلّقاً على AGENTS §0.7 وحده).
⚡ verify_agreements تحسين أداء — Parallel Prefetch (2026-06-08 ~14:00)
التشخيص الحي: verify_agreements = 16.4s (3 قياسات ثابتة). أبطأ 3 سكربتات: verify_toolchain 3.4s + installation_drift 2.7s + arsenal_drift 0.3s (متسلسلة). الباقي ~9s موزّع على 50 قسم (forks+grep).
خطر hot-path: ✅ مُنتفٍ 100% — فحصتُ كل 27 cron: لا أحد يستدعي verify_agreements. الاستدعاء الوحيد = HEARTBEAT كل 4h (6×/يوم، خارج hot-path). الخطر النظري غير محقّق.
التنفيذ: PARALLEL PREFETCH block في رأس السكربت — يشغّل الـ3 سكربتات المستقلة بالتوازي (& + wait + .rc cache)، الأقسام (685/704/1462) تقرأ exit code المحفوظ بدل إعادة التشغيل. trap EXIT ينظّف /tmp/va_prefetch.$$.
التحقق (حي): syntax OK · 16.4s→12.9s (~21% أسرع) · exit 0 ثابت · 3 أقسام "prefetched" + نتائجها صحيحة (✅ فعلية لا فقط exit) · §51 charter 4/4 سليم · لا /tmp leak (trap عمل) · edge: wait على PID مفقود لا يعلّق.
الأثر: استقرار = صفر سلبي (السكربتات مستقلة، لا shared state، لا race). تكلفة = صفر (bash محض، لا LLM). يستغل الأنوية الأربعة (load 0.0). آمن 100%.
نقد صادق: التوفير 21% (3.5s) أقل من المتوقع (~6s) لأن max(3.4s) يحكم، والـ9s الموزّعة باقية. مقبول — التحسين الأكبر (fast-mode) متاح لاحقاً إن أردنا.
🌐 Domain Pending List — اكتمل التثبيت (2026-06-08 ~21:00)
- د. وائل أضاف عبر رسائل صوتية أفكاراً للدومين → كلها مثبتة في
DOMAIN_PENDING.md (31 بنداً).
- البنود الجديدة منه: 11 chat UI · 12 web apps deploy · 13 DynDNS · 14 files/FTP · 20 Ollama local (خصوصية).
- توصياتي: 15 SSO · 16 email ذكي · 17 link shortener · 18 status page · 19 أمن · 21-31 أفكار إبداعية بالاتجاهين (api/hooks/twin/رقم هاتف ذكي/بوابة مناقصات/RAG/PWA).
- Bitly مفعّل: token محفوظ في env.sh (BITLY_ACCESS_TOKEN) — مختبر حي (حساب WAEL ALKISHAWI/wayrk76@gmail.com). أداة:
skills/bitly/bitly.sh (shorten/list/stats/user). روابط اختبار: bit.ly/4xlualm، bit.ly/43pgHuZ. عند الدومين → custom domain go.alqishawi.com.
- ⚠️ نصحت د. وائل بتلغية التوكن المعروض وتجديده (ظهر بنص عادي).
- القاعدة المثبتة: عند "نفتح الدومين" → تعريف الدومين+الإيميلات أولاً، ثم سرد كل البنود (1-31) + أي أفكار جديدة دفعة واحدة ونبدأ.
- التذكير الآلي: cron
10f20c7f (إثنين 09:00 الكويت) محدّث ليذكر 31 بنداً.