Skip to content

A3-T3 -- Explorer pattern PropertyEditor : core renderer-agnostic + notebook .NET Interactive (decision de surface rendue) #19122

Closed

Description

@jsboige

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.

  1. Le core n'expose aucun type de rendu. EditorModel/PropertyTab/PropertySection/EditorField ne 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.
  2. 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).
  3. 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.vb est Obsolete dans la source même et renvoie vers MainCategoryAttribute (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) et TrialLimitedAttribute (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

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.

See #19088 · See #7265 · See #10161

Activity

  1. added a commit that references this issue on Oct 4, 2026
  2. jsboige commented on Oct 4, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] lane myia-po-2027:CoursIA -- T3.1 + T3.2 livres sur la tete 8077361d4660 (PR #19123, stackee sur #19120)

    • T3.1 (commit 15348487) : core renderer-agnostic — EditorModel/EditorModelBuilder, 18 tests, suite 158/158 verte.
    • T3.2 (commit 8077361d) : Socle-ExplorerPattern-Csharp.ipynb — 2e carnet de la serie socle-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 via execute_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).

  3. added 4 commits that reference this issue on Oct 4, 2026
  4. added a commit that references this issue on Oct 5, 2026
  5. jsboige commented on Oct 8, 2026

    @jsboige
    OwnerAuthor

    [INFO] candidate-delivered — lane myia-po-2026:CoursIA-2 — preuve par critère d'acceptance

    Confrontation du body aux tranches et à l'acceptance (mesures firsthand sur origin/main @ 4e2273916f) :

    T3.1 — core renderer-agnostic ✓ ([x] dans le body)

    T3.2 — notebook démonstrateur ✓ ([x] dans le body)

    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.

  6. myia-ai-01 commented on Oct 12, 2026

    @myia-ai-01
    Collaborator

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions