3 Commits
Author SHA1 Message Date
Cyber MawonajandClaude Opus 5 bdeaa9fa7f Déploiement : plus aucune valeur d'exemple à corriger à la main
L'unité web portait ORIGIN=https://veille.example.org : un fichier versionné
qu'il fallait éditer à chaque déploiement, et dont l'oubli casse silencieusement
les soumissions de formulaire. Remplacé par PROTOCOL_HEADER / HOST_HEADER :
l'application déduit son origine des en-têtes du reverse proxy et fonctionne
donc sur n'importe quel domaine, sans édition.

Vérifié en exécutant réellement le binaire construit : deux domaines
différents servis par le même processus, HTTP 200 dans les deux cas, et un
ORIGIN figé l'emporte bien sur les en-têtes.

Au passage, une affirmation fausse que j'avais écrite en commentaire : « le
.env l'emporte sur les variables systemd ». C'est l'inverse — le --env-file de
Node ne remplace pas une variable déjà présente dans l'environnement (constaté
sur Node 24). Le commentaire dit désormais pourquoi ORIGIN dans .env fonctionne
quand même : parce que l'unité ne le déclare pas. Et un contrôle mécanique
interdit désormais de le redéclarer.

ExecStart passe par /usr/bin/env : NodeSource installe node dans /usr/bin, une
compilation manuelle dans /usr/local/bin, un chemin figé échouait sur l'un des
deux.

Deux contrôles ajoutés à make verifier : aucune valeur d'exemple active dans
les unités systemd, et ORIGIN laissé au .env.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-25 22:51:05 -04:00
Cyber MawonajandClaude Opus 5 feb5544599 Phase 5 : collecteurs officiels et run de veille — dry-run contre sources réelles
Collecteurs, chacun isolé et tolérant à l'échec :
- legifrance : OAuth PISTE validé en production. Deux pièges vérifiés sur le
  compte réel — seul le couple « Client ID / Client secret » ouvre un jeton
  (la clé d'API donne invalid_client), et les identifiants de production ne
  passent pas en bac à sable.
- senat : liste chronologique des lois promulguées. L'URL du §5.1
  (senat.fr/lois/index.html) est morte ; l'équivalent fonctionnel est
  /dossiers-legislatifs/lois-promulguees.html — 31 lois 2026 relevées.
- conseil_constitutionnel : sans le paramètre ?id=32246 la page des affaires en
  instance ne rend que des QPC et aucune affaire DC. Les colonnes DC et QPC
  diffèrent : lecture par en-tête, jamais par position.

Rapprochement à trois issues — numéro officiel, similarité de titre, et une
zone de signalement où le pipeline s'abstient plutôt que de fusionner.

make update-dry contre les sources réelles : aucun faux positif sur les 52
textes du corpus, et trois apports que le rapport n'avait pas — le numéro
d'affaire 2026-907 DC de la programmation militaire, la date de saisine du
16 juillet pour l'aide à mourir, les décisions du 23 juillet sur 908 et 909.

Une asymétrie de sources est documentée par un test plutôt que corrigée en
douce : le Sénat ne qualifie pas la loi 2026-650 d'organique, Légifrance si.
Le collecteur rapporte ce que sa source dit ; le champ  n'est pas comparé.

Fixtures HTML figées : aucun test ne touche au réseau.
156 tests, 91 % de couverture (chaque module au-dessus du seuil de 70 %).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-25 21:48:56 -04:00
Cyber MawonajandClaude Opus 5 3ce7d17db9 Socle : corpus de recherche en entrée, plan d'implémentation, gitignore
Commit initial de l'existant avant toute modification (règle transverse du
playbook OKI). data/input/ est en lecture seule pour toute la suite du projet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-25 17:37:12 -04:00