docs(dnn): #490 reconcile res.Rule* vs live 2sxc export — HOLD lifted (gated ai-01) - #761
Conversation
…HOLD lifted Reconciles the 8 res.Rule* App-Resource keys (consumed by _RulesExplorer_RuleDetail.cshtml via @Resources.X) against the live 2sxc v21 export (#681, read-only Method B). Lifts the #490 HOLD: the 7 inferred FR values are now VERIFIED against ground truth (eid=10340). Findings: - 5/8 keys CSV=DB match (Summary, Installation, Variants, MemoInstructions, MemoCardDownload) — notes INFERRED -> VERIFIED. - 3 FR deltas flagged for jsboige arbitration (no speculative mutation): D1 RuleMaterial DB typo (Materiel -> Matériel), D2 RuleMemoCard case (Carte Mémo vs Carte mémo), D3 RuleMemoCardFileNamePrefix wrong CSV value (Mémo -> Argumentum - Règle, brand-policy arbitration; 7 langs HOLD). - RuleContent re-classified: dispatch framed it as "new key to add" but it is an ORPHAN heading resource — DB has Contenu, no view references it. The Content section (_RulesExplorer_RuleDetail.cshtml:47) renders its body with no <h2> heading, unlike every sibling section -> likely a view-bug (dropped heading line), NOT a localization act. RuleContent NOT added to CSV pending view-bug arbitration (candidate translations documented). Provisioning manifest (8 keys x 8 langs) provided for jsboige DB push. Mechanism note: res.* uses 2sxc language dimensions (framework-resolved @Resources.X), NOT the #682 Path-A suffixed-attrs pattern — documented. Gate: analysis-only, 0 prod write (export = read-only SELECT). CSV mutation = notes column only (verification status + deltas); no FR cell mutated; CSV integrity verified (12 cols/row, no BOM, toolchain round-trip PASS). Triggered by ai-01 dispatch k0z7uj. Gated review ai-01. Co-Authored-By: Claude-Code <noreply@anthropic.com>
|
ai-01 byte-check — HOLD (1 fix avant merge) Independent cell-by-cell diff (origin/master vs head): 8 rows changed, 7 are notes-only (INFERRED→VERIFIED) ✓, but 1 row has an undeclared non-notes mutation:
The PR body claims notes-only / 0 cell mutated, but that was FR-scoped. Fix: revert the zh cell to |
ai-01 byte-check on PR #761 caught a silent non-notes mutation my "notes-only, 0 cell mutated" claim missed: res.RuleMemoCard col zh was changed 备忘卡 ("memo card", correct) -> 备用卡 ("spare card", wrong). Introduced when I rewrote the full row in an Edit to change only the notes column — did not copy the zh byte-exact. My fault. Reverted the single zh cell. Systematic cell-by-cell byte-diff vs master (master==HEAD after this commit): exactly 8 notes deltas, 0 non-notes mutations. CSV integrity: 12 cols/row, no BOM. Lesson: byte-check of a multilingual CSV must cover ALL language columns, not just FR — a zh/ru/ar regression is invisible to a reviewer who doesn't read those scripts. And when changing one column of a CSV row, scope the Edit to that cell, not the whole row. Co-Authored-By: Claude-Code <noreply@anthropic.com>
|
[ZH regression reverted — commit Per ai-01's byte-check (reply Proof — systematic cell-by-cell byte-diff (master
Fix scoped the Edit to the zh cell only (with D2 disambiguation context), not a full-row rewrite — to avoid the trap that caused it. #761 is now mergeable. 0 write DNN prod unchanged. 🤖 Generated with Claude Code |
…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>
…(0 write prod) (#795) Read-only audit of the 4 Cards CSVs (Fallacies 1408 / Virtues 223 / Scenarii 167 / Rules 15) across all 7 non-FR language columns (_en/_ru/_pt/_es/_ar/_fa/_zh) vs the FR reference + internal script consistency. Dispatch ai-01 525scp (PRIMAIRE). Verdict: REAL TRANSLATABLE CONTENT IS CLEAN. The high-value prose fields — Fallacies desc/example, Virtues description/remark, Scenarii context/issue/suggestion, Rules Text — are 100% filled, 0 FR-contamination, 0 wrong-script across every language. No regression introduced by the recent AIF/OWL work (#498, #787, #790). The only drift-shaped signals are NOT drift: - proper-noun / Latin-name cognate overlap that legitimately repeats across langs (Loki, Lord Voldemort, Ipse Dixit, DARVO, Gish Gallop) — informational, on the NAME field, separated from prose drift in the report; - link_* URL coverage (Fallacies ru/ar/fa/zh ~8% filled, Virtues ar/fa/zh ~45%) — the standing #192 residual: link translation is human research, out of gpt-5.5. Prose MISSING (real content translation gaps) = 0 across every prose field x language. Honest limitations documented: zh #761 within-language semantic drift (备用卡 vs 备忘卡, both valid CJK) is NOT machine-detectable; paraphrased/partial FR_contam needs semantic comparison; URL translation is human research. All flagged as residuals, not patched. Adds a reusable idempotent script tools/multilingual-drift-audit.py (--json for full detail, --report <path> to emit the markdown) for re-run after future translation tranches. Classifies fields as prose/name/label/url so cognate overlap on names and percent-encoded URLs do not false-positive as drift. Gate: 0 write prod CSV (Cards/ untouched, git diff verified), secret-scan 0 hit. Verdict QA = ai-01. Co-authored-by: Your <your.email@example.com> Co-authored-by: Claude-Code <noreply@anthropic.com>
…teria (docs-only) (#810) Companion to 202-en-campaign-plan.md (#809). Defines the byte-exact spot-check criteria ai-01 applies per pilot tranche before a bulk GO, so campaign execution is turnkey once the register decision (A/B) lands. 6 checks per 20-cell pilot: 1. Empty-only invariant (byte-exact, HARD — 0 clobber) 2. Meaning fidelity vs text_fr/desc_fr (semantic, sample >=5) 3. Register/style (field-specific: Simple_name <=5 words; political_example neutral/non-defamatory, matches ratified A/B) 4. MT-garbage sweep (3-dim, per-token counts — memo false-zero) 5. Language purity (0 FR/RU leakage in new outputs) 6. Encoding/round-trip (CRLF+BOM, no quoting drift — memo byte-exact-insertion) GO/REVISE/NO-GO thresholds; hard gates = clobber + encoding drift. Post-bulk regression gate: re-run #795 drift audit + byte-check ALL lang columns (zh #761 lesson) + rendered-source freshness (clobber harvests). #202 execution stays deferred post-v0.9.0 (jsboige arbitration). Docs-only, 0 CSV write, 0 code change. Dispatch mf4nyb [SECONDAIRE]. Co-authored-by: Your <your.email@example.com> Co-authored-by: Claude-Code <noreply@anthropic.com>
What
Reconciles the 8
res.Rule*App-Resource keys (consumed by_RulesExplorer_RuleDetail.cshtmlvia@Resources.X) against the live 2sxc v21 export (#681, read-only Method B SQL). Lifts the #490 HOLD: the 7 inferred FR values are now VERIFIED against ground truth (entity eid=10340, FR dimensionless default).Triggered by ai-01 dispatch
k0z7uj(primaire). Picks up po-2024's HOLD-prep lane (#490 body) now that export #681 is available.Findings
INFERRED→VERIFIEDThe 3 FR deltas (jsboige arbitration — no speculative CSV mutation)
RuleMaterial: DBMateriel(typo, no accent) vs CSVMatériel(correct). → fix DB.RuleMemoCard: DBCarte Mémo(title) vs CSVCarte mémo(sentence). → case-style choice.RuleMemoCardFileNamePrefix: DBArgumentum - Règle(real brand prefix, renders{prefix} - {EntityTitle}) vs CSVMémo(wrong). → brand-fixed vs translated policy; 7 langs HOLD (current translations of bare "memo" are stale once FR corrected).RuleContent — re-classified (correction to dispatch framing)
Dispatch
k0z7ujframedRuleContentas "nouvelle clé absente du CSV". Read-body finding corrects this:RuleContent(DB FR=Contenu) is an orphan heading resource — no.cshtmlreferences it. The Content section at_RulesExplorer_RuleDetail.cshtml:47renders@Html.Raw(ruleEntity.Content)with no<h2>heading, unlike every sibling section. This is a view-template bug (dropped heading line), not a localization act.RuleContentis NOT added to the CSV pending jsboige's arbitration: (a) add<h2>@Resources.RuleContent</h2>→ then localize, or (b) drop the orphan resource. Candidate translations (Contenu/Content/Содержание/Conteúdo/Contenido/المحتوى/محتوا/内容) documented for scenario (a).Provisioning manifest (§4)
8 keys × 8 langs table ready for jsboige to push into eid=10340. Mechanism note:
res.*uses 2sxc language dimensions (framework-resolved@Resources.X), NOT the #682 Path-A suffixed-attrs pattern — suffixed resource keys would require rewriting every@Resources.Xcall and is rejected. (Dispatch's "Path A lang-suffixed" wording applies to the #682 content-type attrs rail, distinct from res.* — see682-field-model-revision-2sxc21.md§2.)CSV mutation (minimal, non-speculative)
notescolumn only (8res.*rows:INFERRED→VERIFIED+ delta inline). No FR cell mutated (deltas await arbitration).RuleContentnot added. CSV integrity verified: 12 cols/row, no BOM, toolchain round-trip PASS.Gate boundaries (HARD — analysis only)
DoD (dispatch
k0z7uj)res.*reconciledWorker po-2023 signals; verdict = @jsboige + ai-01.
🤖 Generated with Claude Code