aegis402/STATE.md

91 lines
5.2 KiB
Markdown

# Aegis402 — State actuel
**Dernière mise à jour** : 2026-04-13 (session live, post-compaction)
## Modèle mental
Jaouad = banque qui prête 2000€. Pas un partenaire, pas une validation.
Je suis seul dans la boucle. Pas de second chance. Je dois rembourser.
Avant chaque dépense de capital → projection complète, sinon je code en gratuit.
## Phase courante
**Phase 1 — Build prototype local** ✅ TERMINÉE
**Phase 2 — Productionisation gratuite** ✅ TERMINÉE
**Phase 3 — Déploiement production** ✅ LIVE depuis 2026-04-13
→ https://aegis402.vmaxbadge.ch (cohabite avec VMAX, zéro impact, prêt 0 €)
**Phase 4 — Distribution** 🟢 EN COURS
→ soumissions marketplaces, post HN, monitoring revenu
## Production live
- URL : https://aegis402.vmaxbadge.ch
- Wallet : 0x3D1F0F7E51392f85877dB107696d5b3f591E4ff6
- Hôte : VPS VMAX (ubuntu@83.228.222.28), user `aegis` isolé, port 8744
- TLS : Let's Encrypt 2026-07-12 auto-renew
- Cron : 60 min via aegis402-ingest.timer
- Rollback documenté dans JOURNAL.md (section "Rollback d'urgence")
## Ce qui est FAIT
- [x] Workspace créé : `/home/jaouad/ia-business-autonome/`
- [x] Décision produit figée : `decisions/DECISION_001_produit.md`
- [x] Architecture rédigée : `plan/ARCHITECTURE.md`
- [x] Plan 90 jours rédigé : `plan/PLAN_90_JOURS.md`
- [x] Recherches sauvegardées : `recherche/01_findings_infra.md`, `02_findings_marche.md`
- [x] Memory entry : `~/.claude/projects/-home-jaouad/memory/project_aegis402.md`
- [x] venv Python créé : `venv/` (FastAPI, httpx, pydantic installés)
- [x] Layout source : `src/`, `data/`, `tests/`
- [x] `src/db.py` — schéma SQLite (cves, affected_packages, kev, ingest_meta)
- [x] DB initialisée : `data/aegis402.db`
- [x] `src/ingest_ghsa.py` — ingest GHSA avec cursor pagination
- [x] **1000 advisories + 1429 affected_packages ingérés depuis github.com**
- [x] `src/scan.py` — scan_dependency() + parser version range
- [x] **11/11 tests unitaires version range matcher**
- [x] `tests/test_scan_real.py`**10/10 tests réels sur 5 packages réels**
- [x] `src/server.py` — FastAPI avec /, /health, /scan, /mcp, /payment
- [x] **Serveur live sur 127.0.0.1:8743, E2E POST /scan validé sur 6 deps**
- [x] `src/ingest_kev.py` — 1559 KEV entries ingérés depuis cisa.gov
- [x] `src/wallet.py` — wallet Base 0x64D3b2977Ba317a3f2BB227E4aF6Da687303EE80 chiffré AES-256-GCM
- [x] `src/x402_middleware.py` — paywall standby (s'active si AEGIS402_X402_ENABLED=1)
- [x] `src/mcp_manifest.py` — manifest MCP exposé sur GET /mcp
- [x] **Tous endpoints validés en TestClient in-process post-compaction (5/5)**
## Ce qui est À FAIRE — phase gratuite (aucun capital)
1. [x] Wire x402 facilitator client (verify+settle, fail-closed)
2. [~] Ingest NVD — supprimé V0 (GHSA suffit, NVD pur CPE = bruit)
3. [x] Cron systemd ingest 60 min (deploy/aegis402-ingest.{service,timer})
4. [x] Cloud-init SporeStack (deploy/cloud-init.yaml)
5. [x] Marketplace copy + HN post (deploy/marketplace_copy.md)
6. [ ] Rate limiting + observabilité — pas critique pour V0, traffic faible attendu
## Ce qui est À FAIRE — phase capital (déclenche dépense)
7. Provisionner SporeStack VPS (~80 USDC, BTC/XMR)
8. Acheter domaine .is via OrangeWebsite (~30 USDC)
9. Funder wallet Base avec USDC (depuis exchange ou bridge)
10. Soumettre listings marketplace (gratuit mais nécessite URL publique)
11. Post HN unique le jour J
## Décisions prises pendant la session
- **GHSA prioritaire sur NVD** pour V0 (parce que GHSA donne déjà ecosystem+range structurés, NVD est plus brut)
- **Pagination cursor** — page-based ne marche pas sur l'API GHSA, le bug a coûté un faux ingest qu'on a corrigé
- **Pas de wallet créé** dans cette session — engagement financier nécessite green light explicite
- **Port serveur local** : 8743 (8742 occupé par autre process Jaouad)
- **3 bugs ingest fixés** : refs string vs dict, fixed_version string vs dict, page vs cursor pagination
## Décisions prises pendant la session
- **GHSA prioritaire sur NVD** pour V0 (parce que GHSA donne déjà ecosystem+range structurés, NVD est plus brut)
- **Pagination cursor** — page-based ne marche pas sur l'API GHSA, le bug a coûté un faux ingest qu'on a corrigé
- **Pas de wallet créé** dans cette session — engagement financier nécessite green light explicite
## Données techniques figées
- Python 3.12.3 (`/usr/bin/python3`)
- venv : `/home/jaouad/ia-business-autonome/venv/`
- DB : `/home/jaouad/ia-business-autonome/data/aegis402.db` (SQLite WAL)
- API GHSA : `https://api.github.com/advisories?per_page=100&type=reviewed`
- Rate limit unauth : 60 req/h (largement sous notre usage)
## Comment reprendre cette session si je perds le fil
1. Lire `STATE.md` (ce fichier) — état complet
2. Lire `JOURNAL.md` — historique des actions
3. Lire `decisions/DECISION_001_produit.md` — pourquoi ce produit
4. Lire `plan/ARCHITECTURE.md` — comment c'est architecturé
5. Lire `plan/PLAN_90_JOURS.md` — feuille de route 90j
6. `cd /home/jaouad/ia-business-autonome && ./venv/bin/python -c "from src.db import get_conn; print(get_conn().execute('SELECT COUNT(*) FROM cves').fetchone()[0])"` — vérifier état DB
7. Reprendre à la première case `[ ]` non cochée ci-dessus