[spip-check] 2 commits

technova69/spip-check | 2 commits

Par Gilles Vincent, le 25 août 2026 à 16h36min :

Merge branch ‹ fix/immutable-missing-and-prescan › into ‹ main ›

feat: vérifier l’archive dans une phase à part entière

See merge request technova69/spip-check!6

Ajouté
tests/unit/ReferenceVerifierTest.php
Modifié
README.md
lang/spip_check_ar.php
lang/spip_check_ast.php
lang/spip_check_ca.php
lang/spip_check_cs.php
lang/spip_check_de.php
lang/spip_check_en.php
lang/spip_check_eo.php
lang/spip_check_es.php
lang/spip_check_eu.php
lang/spip_check_fa.php
lang/spip_check_fr.php
lang/spip_check_fr_tu.php
lang/spip_check_gl.php
lang/spip_check_hr.php
lang/spip_check_id.php
lang/spip_check_it.php
lang/spip_check_km.php
lang/spip_check_lb.php
lang/spip_check_nl.php
lang/spip_check_oc_lnc.php
lang/spip_check_oc_ni.php
lang/spip_check_pt.php
lang/spip_check_pt_br.php
lang/spip_check_ro.php
lang/spip_check_ru.php
lang/spip_check_sk.php
lang/spip_check_sv.php
lang/spip_check_tr.php
lang/spip_check_zh_tw.php
spip-check.php
src/SpipCheck.php
templates/spip-check.php.tpl
tests/unit/IndexedScannerTest.php
tests/unit/ProgressTest.php
tests/unit/RunStoreTest.php

Détails : Merge branch 'fix/immutable-missing-and-prescan' into 'main' (d43bb3d1) · Validations · Gilles Vincent / spip-check · GitLab

==============================
Par gilles, le 25 août 2026 à 14h08min :

feat: vérifier l’archive dans une phase à part entière

La comparaison avec l’archive officielle vivait dans scanBatch(), sous
un if ($afterId === 0) : ~950 sommes SHA-1 calculées hors budget de
temps, dans une seule requête, et intégralement recommencées à chaque
tentative en cas d’expiration. Elle ne couvrait par ailleurs que
ecrire/ et prive/, ignorait les fichiers supprimés — is_file()
écartait silencieusement les absents — et missingImmutableFindings()
n’était appelée que par les tests : la règle immutable_missing
n’existait pas en production.

La vérification devient une phase à part entière, verifier-spip,
entre le contrôle de signature et l’indexation, portée par
ReferenceVerifier. Elle avance par lots bornés — 300 fichiers ou une
seconde — avec un curseur dans l’état du contrôle, et apparaît dans le
tableau d’avancement au-dessus de l’indexation. Le périmètre devient
celui de Scanner::isDistributedPath(), désormais l’unique définition
du « cœur distribué » : config/spip/, ecrire/, prive/,
plugins-dist/, squelettes-dist/ et vendor/. Les fichiers absents
donnent enfin immutable_missing, quelle que soit leur extension —
l’indexeur ne voit que les fichiers PHP, une page .html de prive/
supprimée échappait à tout.

Mesuré sur l’archive 4.4.21 : 4 544 fichiers distribués vérifiés en
16 lots et 1,4 s, là où l’ancien pré-scan concentrait tout dans la
première requête d’analyse.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

Ajouté
tests/unit/ReferenceVerifierTest.php
Modifié
README.md
lang/spip_check_ar.php
lang/spip_check_ast.php
lang/spip_check_ca.php
lang/spip_check_cs.php
lang/spip_check_de.php
lang/spip_check_en.php
lang/spip_check_eo.php
lang/spip_check_es.php
lang/spip_check_eu.php
lang/spip_check_fa.php
lang/spip_check_fr.php
lang/spip_check_fr_tu.php
lang/spip_check_gl.php
lang/spip_check_hr.php
lang/spip_check_id.php
lang/spip_check_it.php
lang/spip_check_km.php
lang/spip_check_lb.php
lang/spip_check_nl.php
lang/spip_check_oc_lnc.php
lang/spip_check_oc_ni.php
lang/spip_check_pt.php
lang/spip_check_pt_br.php
lang/spip_check_ro.php
lang/spip_check_ru.php
lang/spip_check_sk.php
lang/spip_check_sv.php
lang/spip_check_tr.php
lang/spip_check_zh_tw.php
spip-check.php
src/SpipCheck.php
templates/spip-check.php.tpl
tests/unit/IndexedScannerTest.php
tests/unit/ProgressTest.php
tests/unit/RunStoreTest.php

Détails : feat: vérifier l'archive dans une phase à part entière (96b2413c) · Validations · Gilles Vincent / spip-check · GitLab