docs(dnn): deprecate repair-bin-net48.ps1 — B1-inversion thesis was backwards for 2sxc-21 - #624
Conversation
…ackwards for 2sxc-21 The script reverted the 5 .NET 9 BCL DLLs (System.Text.Json, System.Collections.Immutable, System.IO.Pipelines, System.Diagnostics.DiagnosticSource, System.Text.Encodings.Web) to 6.0.0.0, on the premise that .NET 9 contract assemblies in bin/ were "contamination". For the 2sxc 21.07 runtime that premise is INVERTED and dangerous: 2sxc 21.07 is compiled against .NET 9 (System.Text.Json 9.0.0.0, Microsoft.Bcl.AsyncInterfaces 8.0.0.0, etc.). Reverting to 6.0.0.0 breaks JsonOptions type-init (MissingMethodException) -> every 2sxc module renders "Something went really wrong in view.ascx". This is the "B1-inversion" regression observed 2026-06-28; deploying the matched .NET 9 BCL stack is what fixed it. No-pendulum: the script is NOT rewritten to do the inverse (that would be another fragile ops script). It is deprecated in place: - Header replaced with a SUPERSEDED banner explaining the inversion + pointing to the correct runtime (canonical bin/ on branch dnn/sandbox-runtime-1032, commit 4b0297e, redirects stay on 9.0.0.0/8.0.0.0) and to reference-dnn-2sxc-net48-bcl-stack (memory). - Runtime guard refuses -Apply with the same pointer, so the script can no longer be re-applied by accident (dry-run plan still prints, annotated SUPERSEDED). - Original recipe text kept as archaeology. Prevents recurrence of the B1-inversion regression by a future agent. Co-Authored-By: Claude-Code <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw]
LGTM sur le design de déprecation (deep-tier), 1 concern réel (pointeur de correction dangling) → COMMENT_WITH_CONCERNS.
Design de déprecation — vérifié firsthand CORRECT
Le fix est réfléchi et techniquement sain :
1. Runtime guard placé correctement (l.52-72) : if ($Apply) { Write-Host ...; return } arrive AVANT tous les ops destructifs (backup l.131-134, Copy-Item l.144/178, Remove-Item l.150/181). Donc -Apply est neutralisé net — le revert 6.0.0.0 destructif ne peut plus s exécuter. Le dry-run reste inoffensif (plan-only). Bonne défense en profondeur.
2. Header SUPERSEDED documente honnêtement l inversion : thèse originale « bin/ .NET 9 = contamination → revert 6.0.0.0 » inversée pour 2sxc 21.07 (compilé contre .NET 9 → revert = JsonOptions MissingMethodException → « Something went really wrong »). Causalité technique cohérente avec l infra DNN/2sxc.
3. Pas de suppression du fichier (anti-pattern record) = bonne pratique archaeology. Le script reste lisible mais neutralisé.
🔴 Concern — pointeur de correction DANGLING (introduit ce PR)
Le script pointe 3× vers la correction :
- branche
dnn/sandbox-runtime-1032 - commit
4b0297ee(bin/ canonique .NET 9 BCL, 330 fichiers)
Vérifié firsthand : les deux sont INEXISTANTS sur le remote GitHub :
gh api .../branches/dnn/sandbox-runtime-1032→ 404 Branch not foundgh api .../commits/4b0297ee→ 422 No commit found for SHA- Aucune branche sandbox/runtime/1032 dans le repo (seules
chore/dnn-razor14-migration+docs/dnn-upgrade-assessment-131matchent le pattern)
Donc un opérateur qui suit le message rouge « Canonical .NET 9 BCL bin/ = branch dnn/sandbox-runtime-1032, commit 4b0297e » tombe sur 404/422. La guidance de recovery est cassée. Soit la branche est local-only (jamais pushée), soit déjà supprimée, soit SHA erroné.
Reco : (a) pousser la branche dnn/sandbox-runtime-1032 (ou créer un tag/archive du commit 4b0297e si le runtime canonique doit survivre) ; ou (b) si le runtime vit ailleurs désormais (autre repo, artifact, G:), pointer vers cette vraie localisation plutôt qu une branche manquante. Le header + guard sont parfaits, mais sans la cible pointée ils renvoient dans le vide.
△ Mineur : le default $BinRoot = D:/Dev/Argumentum/DNNPlatform/bin (l.48) est un path dev local — pré-existant dans le contexte du script (param technique, pas un secret), mais noté car même classe de dev-path que les leaks #4699/#623 cette session.
…wards for 2sxc-21 Folds the stale-doc fix (flagged in this PR's README §0.5) into the #131 execution-status refresh. Three B1-era docs still encoded the inverted "revert bin/ to 6.0.0.0" thesis from the 2026-06-25 characterization, pre-B1-inversion being understood. For the 2sxc 21.07 runtime that recipe is backwards and harmful: 2sxc 21.07 is compiled against .NET 9 and REQUIRES Json 9.0.0.0 / Immutable 9.0.0.0 / Bcl.AsyncInterfaces 8.0.0.0; reverting to 6.0.0.0 breaks JsonOptions type-init -> every 2sxc module "Something went really wrong in view.ascx". - sandbox-bootstrap-runbook.md §2/§3: ⛔ SUPERSEDED callout (correct fix = deploy matched BCL stack from 2sxc 21.07 Install pkg, redirects → 9.0.0.0). Preserves verified-reusable content (LocalDB/IIS facts, redirect line numbers, §4 web.config edits, §6 gotchas); flags §2 framing + §3.2/3.3 as do-not-execute. - go-live-turnkey-checklist.md: SUPERSEDED callout on B1 section + table row (B1 DONE 2026-06-28 via corrected stack). - README §0.5: flag corrected to name the right 2 docs (earlier flag mis-named repair-bin-net48.ps1 — already deprecated by #624 — and 131-step1 — no BCL versions; 132-deployment title already 10.3.2). Verified content still accessible for re-deploy/rollback archaeology; only the inverted recipe is flagged do-not-execute. Read-body-before-action caught that repair-bin was already fixed (#624) — scoped the fix to the 2 runbooks that reference it. Co-Authored-By: Claude-Code <noreply@anthropic.com>
…lanned) — gated ai-01 (#765) * docs(dnn): #131 index — execution status refresh (upgrade is DONE, not planned) Refreshes docs/dnn-localization/README.md (the single navigation index for the 15-doc #131/#132 arc) to reflect that the DNN 10.3.2 + 2sxc 21 upgrade was EXECUTED (2026-06-28 sandbox, 2026-07-01 full-IIS), not just planned. The index predated execution — it read "DNN = sandbox/doc only, NO deploy" which is now false (dnn.argumentum.myia.io is LIVE full-IIS). Anti-doublon (read-body): the deep-queue secondary "plan upgrade 10.3.2+2sxc21" would have re-written 10 already-merged runbooks (step0/target/cve/2sxc/ phase2/smoke) — many authored by me in June. The legitimate gap was NOT another plan; it was the index being stale vs execution. This is a targeted index update, not a new plan. Adds: - §0.5 execution-status table (Phase 1.5/2/4 DONE, full-IIS migration DONE 2026-07-01, B1-inversion fix DONE, canonical bin/, prod go-live PENDING ops). Truth-grounded via MEMORY + dashboard status + tmp/dnn-backups artifact. - 2 stale-doc flags: docs/dnn/repair-bin-net48.ps1 + 131-step1 runbook encode the OLD 6.0.0.0 BCL (inverted B1 thesis) — reading them verbatim would reintroduce the JsonOptions MissingMethodException. Needs 9.0.0.0/8.0.0.0 correction (tracked). - §4: cross-links #525 "Materiel typo" = res.RuleMaterial D1 (PR #761/#490). - §6: corrects "NO deploy" → upgrade executed, prod-content-mutation still gated. Gate: docs-only (1 file), 0 prod write, 0 re-execution of the runbooks. Triggered by ai-01 dispatch 1gmve4 (secondaire, reframed from duplicate-plan to index-truth). Gated review ai-01. Co-Authored-By: Claude-Code <noreply@anthropic.com> * docs(dnn): mark B1-inverted runbooks SUPERSEDED — 6.0.0.0 thesis backwards for 2sxc-21 Folds the stale-doc fix (flagged in this PR's README §0.5) into the #131 execution-status refresh. Three B1-era docs still encoded the inverted "revert bin/ to 6.0.0.0" thesis from the 2026-06-25 characterization, pre-B1-inversion being understood. For the 2sxc 21.07 runtime that recipe is backwards and harmful: 2sxc 21.07 is compiled against .NET 9 and REQUIRES Json 9.0.0.0 / Immutable 9.0.0.0 / Bcl.AsyncInterfaces 8.0.0.0; reverting to 6.0.0.0 breaks JsonOptions type-init -> every 2sxc module "Something went really wrong in view.ascx". - sandbox-bootstrap-runbook.md §2/§3: ⛔ SUPERSEDED callout (correct fix = deploy matched BCL stack from 2sxc 21.07 Install pkg, redirects → 9.0.0.0). Preserves verified-reusable content (LocalDB/IIS facts, redirect line numbers, §4 web.config edits, §6 gotchas); flags §2 framing + §3.2/3.3 as do-not-execute. - go-live-turnkey-checklist.md: SUPERSEDED callout on B1 section + table row (B1 DONE 2026-06-28 via corrected stack). - README §0.5: flag corrected to name the right 2 docs (earlier flag mis-named repair-bin-net48.ps1 — already deprecated by #624 — and 131-step1 — no BCL versions; 132-deployment title already 10.3.2). Verified content still accessible for re-deploy/rollback archaeology; only the inverted recipe is flagged do-not-execute. Read-body-before-action caught that repair-bin was already fixed (#624) — scoped the fix to the 2 runbooks that reference it. Co-Authored-By: Claude-Code <noreply@anthropic.com> --------- Co-authored-by: Claude-Code <noreply@anthropic.com>
What
docs/dnn/repair-bin-net48.ps1encodes the inverted "B1" thesis: it reverts the 5 .NET 9 BCL DLLs (System.Text.Json,System.Collections.Immutable,System.IO.Pipelines,System.Diagnostics.DiagnosticSource,System.Text.Encodings.Web) to 6.0.0.0, treating the .NET 9 contract assemblies inbin/as "contamination".For the 2sxc 21.07 runtime that premise is backwards and dangerous:
System.Text.Json 9.0.0.0,Microsoft.Bcl.AsyncInterfaces 8.0.0.0,System.Collections.Immutable 9.0.0.0, etc.JsonOptionstype-init (MissingMethodException) → every 2sxc module renders "Something went really wrong in view.ascx".Re-applying this script (
-Apply) would re-break the working sandbox.Fix (no-pendulum)
The script is deprecated in place, not rewritten to do the inverse (that would just be another fragile ops script). It is also intentionally not deleted (kept as an anti-pattern record).
⛔ SUPERSEDED — DO NOT RUNbanner that explains the inversion and points to the correct runtime: canonicalbin/(330 files, matched BCL .NET 9 stack) on branchdnn/sandbox-runtime-1032(commit4b0297ee),web.configredirects stay aligned to 9.0.0.0/8.0.0.0, andreference-dnn-2sxc-net48-bcl-stack(per-machine memory) holds the authoritative version matrix.-Applywith the same pointer (tested: aborts cleanly, nobin/changes). Dry-run plan still prints, annotated SUPERSEDED.Validation
-Apply→ bannière SUPERSEDED + abort (no filesystem changes).Scope / notes
+53/-14),docs/only — 0 write Cards/, 0 runtime change.go-live-turnkey-checklist.md,sandbox-bootstrap-runbook.md) may want a follow-up pointer to the canonicalbin/; out of scope here (this PR only neutralises the dangerous script itself) — flagging for a follow-up if wanted.doc-fix B1-inversionidle lane item.🤖 po-2023 · doc-only · base
d0856aa4