[Decision D2] Choisir l’orchestration Paru sans remplacer son résolveur #3
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
2027a/auroscope#3
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?
MODE: DECISION
Statut
Proposé — décision de Mathieu requise. Réponse ≠ clôture; fermeture seulement après ton go explicite.
Question
AURoscope doit-il orchestrer Paru en étapes distinctes (sélection/plan, revue, exécution), ou s’appuyer uniquement sur un hook pendant une invocation unique ?
Enjeu
Il faut conserver Paru comme sélecteur, résolveur et builder tout en obtenant un point où les recettes exactes sont inspectées et approuvées avant exécution.
Options
A — Une seule invocation Paru, audit dans
PreBuildCommandPour : comportement très proche de Paru, peu d’orchestration.
Contre : revue tardive, mauvais endroit pour préparer tout l’état, timing du hook imparfait, cache binaire ambigu.
B — Orchestration multiétape
Pour : décision humaine avant exécution, état SQLite propre, garde étroite.
Contre : deux résolutions; il faut détecter et refuser toute différence.
C — Réimplémenter/lier libalpm ou les internes de Paru
Pour : plan typé riche.
Contre : AURoscope devient un second Paru, forte complexité et couplage Rust/libalpm.
Recommandation
Option B. Parser seulement les sorties machine dont le contrat est prouvé; jamais le menu humain. Toute différence entre plan et exécution retourne à la revue.
Risques
--ordera déjà divergé entre documentation et code (INSTALLvsREPO).Réponse attendue
Choisis A/B/C ou propose une variante. Après reformulation, j’attends ton go avant ADR/clôture.
Documentation
Protocole automatique de décision
GO DECISIONn’autorise ni code de production ni plan d’implémentation; ce travail doit avoir son propre ticketMODE: EXECUTION.B, go
Ticket classé comme décision humaine. La discussion continue ici, mais aucune implémentation ni ADR accepté ne sera produit tant que Mathieu n’aura pas publié exactement
GO DECISIONdans un commentaire distinct.Compris : ton choix est B, l’orchestration multiétape, tout en gardant Paru comme sélecteur, résolveur et builder.
Ma recommandation concrète reste B, avec ce contrat :
C’est préférable à A, où
PreBuildCommandarrive trop tard pour offrir une vraie frontière d’approbation et laisse des ambiguïtés de cache, et à C, qui ferait d’AURoscope un second Paru fortement couplé à libalpm et aux internes de Paru. Le coût assumé de B est la double résolution; le garde de dérive sert précisément à la rendre sûre.Ton commentaire
B, goexprime bien le choix, mais il ne correspond pas au signal déterministe exact. Je ne considère donc pas encore la décision comme acceptée. Si cette reformulation te convient, publie un commentaire distinct contenant exactement :GO DECISION
Convention de finalisation concurrente : utilise le numéro du ticket comme numéro ADR sur quatre chiffres (
#N→NNNN-*.md). Ne choisis pas « le prochain numéro libre » et ne renumérote aucun ADR; cette règle évite les collisions entre décisions validées en parallèle.Décision D2 consignée et vérifiée.
ADR-0003 — Multi-stage Paru orchestration without resolver replacement9f9e3aa575cc2b554fc420c3d17891b2b475aceamergeable: truegit diff --checkréussi; liens internes de l’ADR présents.La décision acceptée garde Paru comme sélecteur, résolveur, builder et frontend Pacman, avec des résolutions séparées avant/après revue et retour à la revue sur toute dérive du plan. Aucun code de production ni plan d’implémentation n’a été créé.