Repository navigation
CSP-8-Temporal-Csharp : la table de composition d'Allen couvre 19/169 paires et son repli invente {Equals, During} sur les 150 autres #14609
Description
Activity
- added a commit that references this issue
on Sep 4, 2026 Extension de scope : le jumeau Python porte le meme defaut, avec une sentinelle plus large.
J'ai ouvert cette issue sur le cote C# (
CSP-8-Temporal-Csharp.ipynb). En re-auditant la paire twin avant d'attester la parite sur #14164, j'ai regarde le cote Python (CSP-8-Temporal.ipynb), que la PR ne touche pas : il a la meme structure de defaut, et son repli est plus permissif.C# CSP-8-Temporal-Csharp.ipynbPython CSP-8-Temporal.ipynbentrees reelles dans COMPOSITION19 / 169 (11,2 %) 5 valeur de repli {Equals, During}(2 relations)set(AllenRelation)-- les 13 relationscommentaire du repli dans le code // Compose avec fallback# Par defaut : toutes relationsce que la prose annonce corrige par #14164 : « table pedagogique partielle » « Table de composition complete d'Allen », « on la genere automatiquement par enumeration » au lieu de « hard-coder les 169 entrees » Le cote Python est donc le plus trompeur des deux : il annonce explicitement qu'il genere la table complete la ou il encode cinq paires derriere un repli qui retourne l'univers. Un repli qui rend les 13 relations est vrai au sens de la correction (c'est le sur-ensemble conservateur) mais vide au sens informatif -- et la prose le presente comme un resultat calcule.
Ce que ca change pour cette issue : l'acceptance doit couvrir les deux notebooks de la paire, pas seulement le C#. Sinon la reparation du seul cote C# creuse une divergence entre jumeaux au lieu de la resorber.
Ce que ca ne change pas : le defaut est pre-existant sur
maindes deux cotes, il demande une re-execution (donc il n'entre pas dans une tranche markdown-only), et il reste hors du scope de #14164 -- la lane po-2026 n'a pas a l'attraper dans cette PR. L'asymetrie de prose que #14164 introduit volontairement (C# honnete, Python pas encore) est consignee en tete deknown_differencesdetwin_pairs.d/csp-8-temporal.yaml, pour qu'elle ne se lise pas plus tard comme une derive non expliquee.Mesure faite a
ad7f75fc8, cote Python byte-identique aorigin/main(content_python_shainchange dans l'attestationafa62caae).- added a commit that references this issue
on Sep 4, 2026 [CLAIMED] #14609 — myia-po-2026:CoursIA 2026-09-04T13:56Z (dispatch ai-01 c.msg-20260904T133806)
Grain MED/notebook-python : table de composition d'Allen generee par enumeration (13x13 = 169 paires) sur les DEUX jumeaux dans la meme PR, repli -> assertion, controle positif (les 19 paires manuelles C# + 5 Python reproduites), controle negatif (les « 154 paires » changent), retrait de l'entree known_differences du registre twin, re-attestation de parite en dernier commit.
paths: MyIA.AI.Notebooks/Search/Part2-CSP/CSP-8-Temporal.ipynb, MyIA.AI.Notebooks/Search/Part2-CSP/CSP-8-Temporal-Csharp.ipynb, scripts/notebook_tools/twin_pairs.d/csp-8-temporal.yaml
[MCLAIM-UPDATE] paths complete (PR #14626) — myia-po-2026:CoursIA
paths: MyIA.AI.Notebooks/Search/Part2-CSP/CSP-8-Temporal.ipynb, MyIA.AI.Notebooks/Search/Part2-CSP/CSP-8-Temporal-Csharp.ipynb, scripts/notebook_tools/twin_pairs.d/csp-8-temporal.yaml, scripts/execute_dotnet_notebook.py (filtre parent msg_id : course qui decalait les sorties d'une cellule -- necessaire a la re-exec honnete du jumeau C#)
- added a commit that references this issue
on Sep 4, 2026 Verification G.9 de fermeture (tranche 8 de #15258, lane myia-po-2024:CoursIA) : fermeture legitime, aucune reouverture.
- Fermee par
myia-ai-01a 2026-09-04T22:58:01Z,commit_id: none(fermeture manuelle). - PR livrante : fix(csp,#14609): CSP-8 Temporal twins -- Allen composition table generated by enumeration (169 paires, repli -> assertion) #14626
fix(csp,#14609): CSP-8 Temporal twins -- Allen composition table generated by enumeration (169 paires, repli -> assertion)— MERGED a 2026-09-04T22:58:00Z (ecart 1 s) —Grain: MED/notebook-python — lane myia-po-2026:CoursIA. - Substance : l'objet exact de l'issue (la table de composition d'Allen de
CSP-8-Temporal-Csharpcouvrait 19/169 paires et inventait un repli{Equals, During}sur les 150 autres — table desormais generee par enumeration sur les 169 paires, repli remplace par une assertion), sur les deux jumeaux.
- Fermee par
CSP-8-Temporal-Csharp.ipynbdemontre l'algebre d'intervalles d'Allen avec une table de composition qui couvre 19 paires sur 169 (11,2 %), et dont le repli renvoie une valeur arbitraire que la sortie committee presente comme un resultat.Decouvert en reviewant #14164 (PR d'enrichissement markdown-only : la cellule code est byte-identique a
main, le defaut est pre-existant, surmaindepuis #5276).Mesure
Table extraite du notebook et rejouee ; le modele reproduit exactement les deux nombres que la cellule committee affiche (
169et154) -- controle que c'est bien le meme objet :COMPOSITIONpaires afficheespar la cellule{Equals, During}Le commentaire dit « approximation conservatrice ». Elle ne l'est pas : en algebre d'Allen, l'approximation conservatrice d'une composition inconnue est la relation universelle (les 13), qui n'affirme rien.
{Equals, During}affirme que deux relations precises sont possibles et que les onze autres ne le sont pas, sans aucune base. Consequence directe et visible dans la sortie committee :R o equals = Rest une identite de l'algebre d'Allen. Elle est fausse pour 12 R sur 13 dans cette implementation : la table encode(Equals, R)mais jamais(R, Equals), sauf(Equals, Equals).Le jumeau Python fait deja la bonne chose -- c'est une divergence de parite
CSP-8-Temporal.ipynb(jumeau Python, meme paire enregistree au registre twin-parity, cf #10561) a une table encore plus petite (5 entrees) mais un repli correct :Le jumeau Python annonce aussi honnetement sa lacune (
# ... table complete serait beaucoup plus grande). Le C# ne l'annonce pas : il titre sa section « Table de composition complete d'Allen ».Acceptance
Composerenvoie la relation universelle (les 13) pour toute paire absente de la table -- alignement sur le jumeau Python. Aucune paire ne doit plus renvoyer silencieusement une reponse a 2 relations qu'elle n'a pas calculee.R,Compose(R, Equals)rend{R}(si la table est completee) ou la relation universelle (si c'est le repli qui est corrige) -- dans les deux cas, plus aucune paire non calculee ne se fait passer pour un resultat a 2 relations.Hors scope
La correction de la prose de
md#19(trois « cas interessants » faux, dont deux citent des symbolesOVERLAPS_OR_*qui n'existent dans aucune cellule code) est demandee dans #14164, qui est la PR qui les a introduits. Cette issue-ci ne porte que le defaut code pre-existant.Voir #14164 -- #14164 (comment)