Politique de compatibilité Codex : minimum sans plafond de version #46

Closed
opened 2026-09-06 04:03:02 +00:00 by hephaistos · 7 comments
Owner

MODE: DECISION

Suite au commentaire de Mathieu #45 (comment) . Le blocage Paru initial est déclaré franchi; le nouveau refus concerne Codex 0.153.4.

Diagnostic vérifié

internal/app/codex.go:56-59,139-154 accepte seulement les chaînes exactes 0.150.1 et 0.151.0. Ajouter temporairement 0.153.4 au test TestCodexAcceptsSupportedVersions reproduit exactement le refus (exit 1), alors que les deux anciennes versions passent. Test expérimental ensuite retiré : aucune modification de production. La note docs/dependency-notes/codex-cli-contract.md contractualise ce contrôle exact.

Proposition recommandée

Remplacer la liste fermée par une version minimale 0.150.1, sans plafond : accepter les versions stables au format strict codex-cli MAJOR.MINOR.PATCH dont la comparaison numérique est supérieure ou égale au minimum, y compris les futures versions majeures. Refuser versions trop anciennes, préversions et bannières mal formées. Distinguer explicitement versions testées et versions admises par cette politique; ne pas prétendre que les versions futures sont déjà vérifiées.

Conserver sans exception l'invocation Codex actuelle (sandbox read-only, répertoire privé hors recette, stdin vide, timeout/signaux) et la validation locale stricte du rapport, des tailles et des références. Une erreur CLI ou un rapport invalide reste retry/skip/cancel, jamais un audit contourné. Garder une matrice de versions épinglées pour les tests de contrat. Aucun changement de politique Paru.

Compromis à accepter

Avantage : une mise à jour npm ne bloque plus uniquement parce que son numéro est inconnu. Coût : on tente une version non encore qualifiée; JSON valide ne prouve pas à lui seul que toutes les sémantiques de sandbox et d'exécution sont inchangées. Une future rupture demandera donc maintenance et tests. C'est un changement durable de politique, pas seulement l'ajout vérifié de 0.153.4 à la liste actuelle.

Alternative conservatrice : garder la liste exacte et qualifier/ajouter 0.153.4 seulement; chaque nouvelle version nécessitera encore une livraison AURoscope.

Vérification nécessaire pour l'exécution ultérieure

TDD du minimum, 0.153.4, versions futures et entrées invalides; tests de refus CLI/JSON et absence de bypass; qualification réelle de Codex 0.153.4; mise à jour des docs puis du paquet épinglé avec nouvelle identité et gate installé. Le test de version factice ci-dessus n'est pas une preuve de compatibilité réelle de 0.153.4.

Autorisation

Pour accepter la proposition recommandée, Mathieu doit commenter exactement GO DECISION. Cela autorise la formalisation de la décision, pas du code de production; l'exécution devra avoir son ticket MODE: EXECUTION conformément au protocole du dépôt. Une réponse ordinaire peut amender la proposition.

MODE: DECISION Suite au commentaire de Mathieu https://git.2027a.net/2027a/auroscope/issues/45#issuecomment-1818 . Le blocage Paru initial est déclaré franchi; le nouveau refus concerne Codex 0.153.4. ## Diagnostic vérifié `internal/app/codex.go:56-59,139-154` accepte seulement les chaînes exactes 0.150.1 et 0.151.0. Ajouter temporairement 0.153.4 au test `TestCodexAcceptsSupportedVersions` reproduit exactement le refus (exit 1), alors que les deux anciennes versions passent. Test expérimental ensuite retiré : aucune modification de production. La note `docs/dependency-notes/codex-cli-contract.md` contractualise ce contrôle exact. ## Proposition recommandée Remplacer la liste fermée par une version minimale 0.150.1, sans plafond : accepter les versions stables au format strict `codex-cli MAJOR.MINOR.PATCH` dont la comparaison numérique est supérieure ou égale au minimum, y compris les futures versions majeures. Refuser versions trop anciennes, préversions et bannières mal formées. Distinguer explicitement versions testées et versions admises par cette politique; ne pas prétendre que les versions futures sont déjà vérifiées. Conserver sans exception l'invocation Codex actuelle (sandbox read-only, répertoire privé hors recette, stdin vide, timeout/signaux) et la validation locale stricte du rapport, des tailles et des références. Une erreur CLI ou un rapport invalide reste retry/skip/cancel, jamais un audit contourné. Garder une matrice de versions épinglées pour les tests de contrat. Aucun changement de politique Paru. ## Compromis à accepter Avantage : une mise à jour npm ne bloque plus uniquement parce que son numéro est inconnu. Coût : on tente une version non encore qualifiée; JSON valide ne prouve pas à lui seul que toutes les sémantiques de sandbox et d'exécution sont inchangées. Une future rupture demandera donc maintenance et tests. C'est un changement durable de politique, pas seulement l'ajout vérifié de 0.153.4 à la liste actuelle. Alternative conservatrice : garder la liste exacte et qualifier/ajouter 0.153.4 seulement; chaque nouvelle version nécessitera encore une livraison AURoscope. ## Vérification nécessaire pour l'exécution ultérieure TDD du minimum, 0.153.4, versions futures et entrées invalides; tests de refus CLI/JSON et absence de bypass; qualification réelle de Codex 0.153.4; mise à jour des docs puis du paquet épinglé avec nouvelle identité et gate installé. Le test de version factice ci-dessus n'est pas une preuve de compatibilité réelle de 0.153.4. ## Autorisation Pour accepter la proposition recommandée, Mathieu doit commenter exactement `GO DECISION`. Cela autorise la formalisation de la décision, pas du code de production; l'exécution devra avoir son ticket MODE: EXECUTION conformément au protocole du dépôt. Une réponse ordinaire peut amender la proposition.
Author
Owner

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 DECISION dans un commentaire distinct.

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 DECISION` dans un commentaire distinct. <!-- auroscope-loop:decision;cursor:1845 -->
Author
Owner

Mathieu, oui : pour le refus que tu rapportes dans #45, je recommande un minimum de version sans plafond, plutôt qu’une nouvelle entrée dans la liste fermée. Ton commentaire 1818 propose cette orientation ; il ne constitue pas une décision acceptée.

Options

  • Liste exacte + ajout de 0.153.4 après qualification : prudente, mais chaque mise à jour de Codex peut à nouveau bloquer AURoscope uniquement sur le numéro.
  • Minimum 0.150.1, sans plafond — recommandé : admet les versions stables plus récentes, y compris les futures majeures, sans promettre leur compatibilité réelle. Une rupture de CLI reste possible ; cette politique assume ce risque de maintenance.
  • Plafond de majeure : compromis peu utile aujourd’hui pour une CLI encore en 0.x ; il ne protège pas des ruptures entre versions mineures et recrée un blocage administratif au passage à 1.x.

Contrat recommandé

  1. Accepter uniquement une bannière codex-cli MAJOR.MINOR.PATCH stable, avec comparaison numérique du triplet et minimum inclusif 0.150.1. Refuser les versions anciennes, les préversions et les formats inattendus.
  2. Séparer explicitement « admise par la politique » et « qualifiée par les tests ». 0.153.4 n’est pas démontrée compatible par le seul test factice relaté dans le ticket, et une version future ne devient pas testée parce qu’elle dépasse le minimum.
  3. Ne rien assouplir dans les protections d’exécution ni dans la validation du rapport. Échec de CLI ou rapport invalide : retry/skip/cancel, jamais validation automatique ni poursuite de l’opération en présentant l’audit comme réussi. Un JSON valide ne suffit pas à garantir que les sémantiques de sandbox d’une nouvelle CLI sont identiques.
  4. Avant toute livraison ultérieure : tests aux limites du minimum, 0.153.4, versions futures et bannières rejetées ; qualification réelle de 0.153.4 avec les arguments et protections utilisés ; tests d’échec sans contournement ; documentation des versions qualifiées et gate du paquet installé. La politique Paru reste inchangée.

Ma recommandation actuelle est donc celle du corps du ticket, avec ce compromis explicite : ne plus refuser une version stable uniquement parce qu’elle est inconnue, mais ne jamais confondre admission et garantie de compatibilité.

Aucune décision n’est acceptée à ce stade, aucun code ni ADR n’a été modifié. Si tu retiens cette proposition telle quelle, le signal prévu est un commentaire distinct contenant exactement GO DECISION ; seul le watcher déterministe le traitera. Sinon, on amende la proposition ici.

Mathieu, oui : pour le refus que tu rapportes dans #45, je recommande un **minimum de version sans plafond**, plutôt qu’une nouvelle entrée dans la liste fermée. Ton commentaire 1818 propose cette orientation ; il ne constitue pas une décision acceptée. ### Options - **Liste exacte + ajout de 0.153.4 après qualification** : prudente, mais chaque mise à jour de Codex peut à nouveau bloquer AURoscope uniquement sur le numéro. - **Minimum 0.150.1, sans plafond — recommandé** : admet les versions stables plus récentes, y compris les futures majeures, sans promettre leur compatibilité réelle. Une rupture de CLI reste possible ; cette politique assume ce risque de maintenance. - **Plafond de majeure** : compromis peu utile aujourd’hui pour une CLI encore en 0.x ; il ne protège pas des ruptures entre versions mineures et recrée un blocage administratif au passage à 1.x. ### Contrat recommandé 1. Accepter uniquement une bannière `codex-cli MAJOR.MINOR.PATCH` stable, avec comparaison numérique du triplet et minimum inclusif `0.150.1`. Refuser les versions anciennes, les préversions et les formats inattendus. 2. Séparer explicitement « admise par la politique » et « qualifiée par les tests ». **0.153.4 n’est pas démontrée compatible par le seul test factice relaté dans le ticket**, et une version future ne devient pas testée parce qu’elle dépasse le minimum. 3. Ne rien assouplir dans les protections d’exécution ni dans la validation du rapport. Échec de CLI ou rapport invalide : retry/skip/cancel, jamais validation automatique ni poursuite de l’opération en présentant l’audit comme réussi. Un JSON valide ne suffit pas à garantir que les sémantiques de sandbox d’une nouvelle CLI sont identiques. 4. Avant toute livraison ultérieure : tests aux limites du minimum, 0.153.4, versions futures et bannières rejetées ; qualification réelle de 0.153.4 avec les arguments et protections utilisés ; tests d’échec sans contournement ; documentation des versions qualifiées et gate du paquet installé. La politique Paru reste inchangée. Ma recommandation actuelle est donc celle du corps du ticket, avec ce compromis explicite : **ne plus refuser une version stable uniquement parce qu’elle est inconnue, mais ne jamais confondre admission et garantie de compatibilité**. Aucune décision n’est acceptée à ce stade, aucun code ni ADR n’a été modifié. Si tu retiens cette proposition telle quelle, le signal prévu est un commentaire distinct contenant exactement `GO DECISION` ; seul le watcher déterministe le traitera. Sinon, on amende la proposition ici.
Owner

GO DECISION

GO DECISION
Owner

Minimum 0.150.1, sans plafond, validé

Minimum 0.150.1, sans plafond, validé
Author
Owner

Mathieu, ta préférence est claire : minimum inclusif 0.150.1, sans plafond, y compris pour les futures versions majeures stables. Je maintiens cette recommandation plutôt que l’ajout ponctuel de 0.153.4 à une liste fermée : elle évite de bloquer à chaque nouveau numéro, en assumant qu’une version admise n’est pas nécessairement qualifiée. Les protections d’exécution et la validation stricte du rapport restent inchangées ; la compatibilité réelle de 0.153.4 reste à vérifier lors de l’exécution ultérieure.

Petit point de protocole : ton commentaire GO DECISION (1842) est suivi de « Minimum 0.150.1, sans plafond, validé » (1843). Le watcher exige que le dernier commentaire externe de Mathieu contienne exactement GO DECISION ; je ne peux donc pas traiter la formulation ordinaire du dernier commentaire comme une acceptation formelle ni annoncer que la décision est acceptée. Pour déclencher cette étape, republie simplement GO DECISION dans un commentaire distinct.

Cela autorisera la formalisation par le circuit prévu, pas l’implémentation : aucun code, ADR, label ni état du ticket n’a été modifié dans cette intervention.

Mathieu, ta préférence est claire : **minimum inclusif 0.150.1, sans plafond**, y compris pour les futures versions majeures stables. Je maintiens cette recommandation plutôt que l’ajout ponctuel de 0.153.4 à une liste fermée : elle évite de bloquer à chaque nouveau numéro, en assumant qu’une version admise n’est pas nécessairement qualifiée. Les protections d’exécution et la validation stricte du rapport restent inchangées ; la compatibilité réelle de 0.153.4 reste à vérifier lors de l’exécution ultérieure. Petit point de protocole : ton commentaire `GO DECISION` (1842) est suivi de « Minimum 0.150.1, sans plafond, validé » (1843). Le watcher exige que **le dernier commentaire externe de Mathieu contienne exactement `GO DECISION`** ; je ne peux donc pas traiter la formulation ordinaire du dernier commentaire comme une acceptation formelle ni annoncer que la décision est acceptée. Pour déclencher cette étape, republie simplement `GO DECISION` dans un commentaire distinct. Cela autorisera la formalisation par le circuit prévu, pas l’implémentation : aucun code, ADR, label ni état du ticket n’a été modifié dans cette intervention.
Owner

GO DECISION

GO DECISION
Author
Owner

Décision formalisée après vérification du GO DECISION 1845 (Mathieu, id 1, dernier commentaire externe).

  • ADR : ADR-0046.
  • Commit signé Hephaistos : cc2c4ebabfb2874b0e498e583689aec11fa9cca3.
  • PR documentaire : #47, ouverte et non fusionnée ; commit distant et mergeability relus, branche à jour avec main.
  • Vérifications réussies : git diff --cached --check, liens locaux ajoutés, CGO_ENABLED=1 go test ./..., go vet ./....

Minimum inclusif 0.150.1 sans plafond, versions stables strictes et comparaison numérique ; admission distincte de qualification. Protections d’exécution/validation et politique Paru inchangées. Aucun code, paquet ou plan d’implémentation modifié. Le code conserve encore sa liste exacte 0.150.1/0.151.0 ; qualification réelle de 0.153.4, changement de code et nouvelle livraison avec gate installé exigent une issue MODE: EXECUTION distincte.

Clôture de cette décision après relecture des preuves publiées ; la fusion de la PR reste humaine et #45 n’est pas résolue par cette seule documentation.

Décision formalisée après vérification du GO DECISION 1845 (Mathieu, id 1, dernier commentaire externe). - ADR : [ADR-0046](https://git.2027a.net/2027a/auroscope/src/commit/cc2c4ebabfb2874b0e498e583689aec11fa9cca3/docs/decisions/0046-codex-minimum-version-without-ceiling.md). - Commit signé Hephaistos : [cc2c4ebabfb2874b0e498e583689aec11fa9cca3](https://git.2027a.net/2027a/auroscope/commit/cc2c4ebabfb2874b0e498e583689aec11fa9cca3). - PR documentaire : #47, ouverte et non fusionnée ; commit distant et mergeability relus, branche à jour avec main. - Vérifications réussies : git diff --cached --check, liens locaux ajoutés, CGO_ENABLED=1 go test ./..., go vet ./.... Minimum inclusif 0.150.1 sans plafond, versions stables strictes et comparaison numérique ; admission distincte de qualification. Protections d’exécution/validation et politique Paru inchangées. Aucun code, paquet ou plan d’implémentation modifié. Le code conserve encore sa liste exacte 0.150.1/0.151.0 ; qualification réelle de 0.153.4, changement de code et nouvelle livraison avec gate installé exigent une issue MODE: EXECUTION distincte. Clôture de cette décision après relecture des preuves publiées ; la fusion de la PR reste humaine et #45 n’est pas résolue par cette seule documentation.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
2027a/auroscope#46
No description provided.