[Bug — medium] Après nettoyage des clones, un ancien edit rend le prochain audit impossible #89
Labels
No labels
Agent/Autonomous OK
Agent/Demeter
Agent/Hermes
Agent/Human
Agent/Needs Review
Area/API
Area/Auth
Area/CLI
Area/Data
Area/Docs
Area/Infra
Area/UI
CI/Failing
CI/Flaky
CI/Green
CI/Needs Runner
CI/Needs Workflow
Compat/Backward Compatible
Compat/Breaking
Compat/Migration
Deploy/Ansible
Deploy/Blocked
Deploy/Homelab
Deploy/Needs Config
Deploy/Needs Secret
Deploy/Ready
Deploy/Rollback
Kind/Bug
Kind/Chore
Kind/Design
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Refactor
Kind/Security
Kind/Spike
Kind/Testing
Ops/Backup
Ops/Incident
Ops/Maintenance
Ops/Monitoring
Ops/Upgrade
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Priority
Someday
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Risk
Critical
Risk
High
Risk
Low
Risk
Medium
Security/Auth
Security/Disclosure
Security/Hardening
Security/Secret
Size
L
Size
M
Size
S
Size
XL
Size
XS
Stack/Ansible
Stack/Docker
Stack/Forgejo
Stack/Hermes
Stack/Node
Stack/Postgres
Stack/Python
Stack/Systemd
Status
Abandoned
Status
Blocked
Status
In Progress
Status
In Review
Status
Need More Info
Status
Ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
2027a/auroscope#89
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ticket de revue indépendante, pour évaluation ultérieure uniquement. Mathieu n’a demandé ni implémentation, ni déclenchement de boucle, ni PR. Aucun correctif apporté.
Référence : branche
main, commit30b53a270c3e28024a74762fc94c5ddb6f541f38; branche distante relue juste avant publication. Le contrôle de fraîcheur du paquet0.1.0.r23.gee99222passe : ses entrées de code sont identiques à celles examinées.Défaut et impact
Gravité : medium. Une recette éditée puis approuvée laisse un commit local comme référence SQLite. Quand le clone est supprimé (nettoyage du répertoire temporaire, notamment après redémarrage), un nouveau clone amont ne contient plus ce commit. Le paquet reste bloqué en préparation d’audit ; réessayer ne recrée pas l’objet Git disparu.
Reproduction exécutée sur deux dépôts Git temporaires inertes : créer un amont ; cloner ; modifier
PKGBUILDcomme texte ; appeler le vraisnapshotEditedWorktree; persister cette identité avecadvanceBaselines; supprimer uniquement le clone local ; recloner l’amont ; appelerbuildAuditBundleavec la référence relue de SQLite. Aucun PKGBUILD exécuté et aucune vraie installation simulée comme preuve de succès.Observé :
build recipe diff: git diff --no-ext-diff <commit-local> --: exit status 128: fatal: bad object <commit-local>.Attendu : rester capable d’auditer la recette actuelle ; expliciter que le différentiel historique est indisponible, sans prétendre qu’elle est inchangée, sans perdre silencieusement l’historique et sans contourner l’approbation.
Cause et emplacements
Piste minimale et acceptation
Traiter explicitement une référence absente : proposer/produire un audit complet avec avertissement sur l’absence de comparaison, plutôt qu’exiger une conservation permanente de tous les clones. C’est une dégradation du contexte différentiel, jamais un contournement d’audit. Ne pas masquer une autre erreur Git ni classer la recette
unchanged.Tests : scénario d’édition puis perte du clone ci-dessus ; référence distante disparue ; référence encore disponible conservant le diff ; erreur Git non liée à un objet absent restant visible ; nouvel audit valide et approbation requis ; ancienne référence non avancée après annulation/échec ; identité finale toujours contrôlée.
Déduplication : #36/#37 ont corrigé le contexte d’une recette inchangée, #74/#75 le menu de reprise et les liens ; aucun ne traite l’objet historique disparu. Blocage limité aux références absentes, pas à toute mise à jour. Mathieu : évaluer cette récupération minimale avant d’en autoriser l’implémentation.
Reproduction automatisée isolée
Le test ci-dessous réutilise les helpers existants de
internal/app. Il a été exécuté avec un overlay Go, sans modifier le checkout :go test -overlay /chemin/overlay.json ./internal/app -run TestReviewProbeEditedBaselineSurvivesCloneCleanup -v -count=1. L’overlay associe le chemin absoluinternal/app/review_probe_test.godu checkout au fichier temporaire contenant ce test. Ce test exprime le comportement attendu et échoue actuellement. Aucun vrai Paru/Pacman, fournisseur LLM ou contenu de paquet n’est exécuté.Test Go reproductible