Repository navigation
A3-T3 -- Explorer pattern PropertyEditor : core renderer-agnostic + notebook .NET Interactive (decision de surface rendue) #19122
Copy link
Copy link
Closed
Description
Enfant de #19088 (pépite A3, EPIC #7265) — ouverte pour rendre la décision de surface exigée par son acceptance (« issue séparée ouverte avec la décision de surface rendue, jamais laissée en plan dans celle-ci »).
Décision de la design-gate (hypothèse enregistrée, réversible par construction)
Core renderer-agnostic + notebook .NET Interactive (C#) comme premier consommateur.
- Le core n'expose aucun type de rendu.
EditorModel/PropertyTab/PropertySection/EditorFieldne portent que des faits dérivés du vocabulaire T2 (placement, ordre, modes, visibilité, sélecteurs, marqueurs). Console/Spectre, web et notebook consomment le même modèle. - Premier consommateur = notebook .NET Interactive (fragment HTML rendu depuis le modèle) : surface primaire du dépôt (règle code-style : .NET 9 + .NET Interactive), zéro infrastructure serveur, ancrage pédagogique direct sur Socle metadata-driven MyIA.AI.Shared : 48 tests verts, 0 notebook — exposer le pattern low-code (Flee declare, jamais exerce) #10161 (low-code, 48 tests, Flee — l'explorateur s'y réfère).
- Console/Spectre et web restent des consommateurs ultérieurs possibles — la décision ne ferme aucune porte : elle choisit le premier, le core étant agnostique par construction.
Pourquoi ce choix
| Critère | Notebook .NET Interactive | Console/Spectre | Web |
|---|---|---|---|
| Surface primaire du dépôt | oui | non | non |
| Infrastructure requise | aucune | aucune | serveur |
| Rendu tabs/sections hiérarchiques | riche (HTML) | pauvre (tableau plat) | riche |
| Exécutable par tout étudiant | oui | oui | non |
Gate mesurée : vocabulaire T1+T2 complet
Inventaire autoritatif (AricieConseil/Aricie.PortalKeeper @ master, Aricie.DNN/UI/PropertyEditor/Attributes/ = 33 fichiers) contre le port C# (T1 Filters + T2a #19097 + T2b #19120) :
- 33/33 attributs du vocabulaire de pattern couverts.
- 4 absorbees par
MarkerAttributes.cs(AutoErase, AutoPostBack, NoFlag, PasswordMode). DefaultCategoryAttribute.vbest Obsolete dans la source même et renvoie versMainCategoryAttribute(Aricie.ComponentModel) — déjà porté en A1 : le builder l'utilise comme onglet par défaut.- 2 gaps déclarés hors scope avec justification :
ActionButtonAttribute(couche contrôle WebForms — le pattern re-render de toute façon) etTrialLimitedAttribute(marqueur de licence produit Aricie, sans valeur pédagogique).
Hors scope mesuré (ne sera pas porté)
EditControls/*.vb(~36 fichiers) : contrôles WebForms DNN — remplacés par le re-render du pattern sur la surface choisie.AriciePropertySortOrderComparer.vb: tri de couche contrôle ; le core retient l'ordre de déclaration (déterministe, renderer-agnostic), écart documenté dans les<remarks>du builder.BuildSelector(déposé dès T2b) : construction de contrôles.
Tranches
- T3.1 — core :
MyIA.AI.Shared/ComponentModel/PropertyEditor/Explorer/(EditorModel+EditorModelBuilder) + batterie de tests. PR stackée sur feat(shared,#19088): A3-T2b -- outillage d'edition PropertyEditor, port VB->C# (8 types + enum, 21 tests) #19120 (T2b). - T3.2 — notebook démonstrateur : carnet .NET Interactive montrant tabs/sections/grouping/summary pilotés par les attributs T2 sur un exemple concret, exécuté avec outputs (C.2), ancré sur Socle metadata-driven MyIA.AI.Shared : 48 tests verts, 0 notebook — exposer le pattern low-code (Flee declare, jamais exerce) #10161.
- T3.3 — optionnel : second consommateur (console/Spectre) démontrant l'agnosticisme du core.
Acceptance
- Le modèle de rendu ci-dessus fait foi pour T3 (décision rendue, modifiable par PR sur cette issue si une contrainte mesurée l'impose).
- T3.1 mergé : build 0 warning/0 erreur, suite verte.
- T3.2 mergé : notebook exécuté de bout en bout, outputs réels.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
feat(notebook,#19122): A3-T3.2 -- carnet Explorer pattern, 3 moments …
jsboige commentedon Oct 4, 2026
[DELIVERED] lane myia-po-2027:CoursIA -- T3.1 + T3.2 livres sur la tete
8077361d4660(PR #19123, stackee sur #19120)15348487) : core renderer-agnostic —EditorModel/EditorModelBuilder, 18 tests, suite 158/158 verte.8077361d) :Socle-ExplorerPattern-Csharp.ipynb— 2e carnet de la seriesocle-metadata-driven(3 Moments + 3 Exercices, genre du sibling Socle metadata-driven MyIA.AI.Shared : 48 tests verts, 0 notebook — exposer le pattern low-code (Flee declare, jamais exerce) #10161). Execution 8/8 cellules, 0 erreur, outputs reels sur chaque cellule code, fragment HTML rendu viaexecute_result text/html: la decision de surface (premier consommateur = notebook) est demontree en fait, pas en annonce. Visibilite conditionnelle evaluee sur instances dans les outputs (Timeout=30 -> cache / Timeout=0 -> visible).Quirk kernel mesure au passage (consigne dans le commit T3.2) :
\"a l'interieur d'un hole d'interpolation$"...{...}"= erreur de compilation sur ce kernel ; contournement char/precalcul.Reste : T3.3 optionnel (second consommateur console — la mecanique en est montre a l'exercice 2 du carnet).
feat(shared,#19122): A3-T3.1 -- explorer pattern core, renderer-agnos…
feat(notebook,#19122): A3-T3.2 -- carnet Explorer pattern, 3 moments …
feat(shared,#19122): A3-T3.1 -- explorer pattern core, renderer-agnos…
feat(notebook,#19122): A3-T3.2 -- carnet Explorer pattern, 3 moments …
feat(shared,#19122): A3-T3.1 -- Explorer pattern core renderer-agnost…
jsboige commentedon Oct 8, 2026
[INFO] candidate-delivered — lane
myia-po-2026:CoursIA-2— preuve par critère d'acceptanceConfrontation du body aux tranches et à l'acceptance (mesures firsthand sur
origin/main@4e2273916f) :T3.1 — core renderer-agnostic ✓ (
[x]dans le body)MyIA.AI.Shared/ComponentModel/PropertyEditor/Explorer/(EditorModel+ builder) livré par feat(shared,#19122): A3-T3.1 -- Explorer pattern core renderer-agnostic (EditorModel + builder, 18 tests) #19123 (MERGED 2026-10-05T22:50Z, 18 tests). Tests vivants :MyIA.AI.Shared.Tests/PropertyEditorExplorerModelTests.cs.T3.2 — notebook démonstrateur ✓ (
[x]dans le body)MyIA.AI.Notebooks/cross-series/socle-metadata-driven/Socle-ExplorerPattern-Csharp.ipynb: 21 cellules, 8 de code,execution_count1→8, 8/8 avec outputs — exécuté de bout en bout, outputs réels (C.2). Livré par la même feat(shared,#19122): A3-T3.1 -- Explorer pattern core renderer-agnostic (EditorModel + builder, 18 tests) #19123.AriciePropertySortOrderComparer,BuildSelector) est bien absent de l'arbre — écart documenté dans les<remarks>du builder comme promis.Acceptance : « T3.1 mergé : build 0 warning/0 erreur, suite verte » ✓ · « T3.2 mergé : notebook exécuté de bout en bout, outputs réels » ✓ · la décision de surface est rendue dans ce body même (modifiable par PR si contrainte mesurée).
Seul reste : T3.3, déclaré optionnel (« second consommateur console/Spectre démontrant l'agnosticisme du core »). Ce n'est pas un critère d'acceptance — l'acceptance ne cite que T3.1 et T3.2.
La clôture revient au coordinateur ou à l'adjoint : les critères d'acceptance sont tous couverts. Si T3.3 doit vivre, c'est un grain neuf à dispatcher explicitement, pas un blocage de celle-ci.
myia-ai-01 commentedon Oct 12, 2026
Les deux criteres d'acceptation sont couverts par la PR #19123 mergee : le core renderer-agnostic (EditorModel et son builder, avec leur batterie de tests) et le carnet demonstrateur execute de bout en bout avec ses outputs reels. La decision de surface est rendue dans le corps de l'issue. Le seul reste, T3.3, est declare optionnel et ne fait pas partie de l'acceptation.
Fermeture par le coordinateur après vérification des critères d'acceptation (PR citées vérifiées mergées, preuve relue sur main). Une objection se dit ici et rouvre l'issue.
— ai-01, coordination