Skip to content

feat(dnn): #490 res.Rule* deltas — 4 arbitrages jsboige (Δ3 CSV + Δ4 view + Δ1/Δ2 manifest) - #772

Merged
jsboige merged 1 commit into
masterfrom
fix/490-res-rule-deltas
Jul 11, 2026
Merged

feat(dnn): #490 res.Rule* deltas — 4 arbitrages jsboige (Δ3 CSV + Δ4 view + Δ1/Δ2 manifest)#772
jsboige merged 1 commit into
masterfrom
fix/490-res-rule-deltas

Conversation

@jsboige

@jsboige jsboige commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

What

jsboige arbitrated the 4 res.Rule* reconciliation deltas in interactive session (2026-07-11, consigned #458, dispatch 70iit0). This PR ships the 2 repo-side deltas + stages the 2 DB-side deltas as a provisioning manifest for ops.

Repo-side (land via this PR)

Δ3 — res.RuleMemoCardFileNamePrefix (CSV fix)

  • fr: MémoArgumentum - Règle (matches DB canonical, the real brand prefix consumed at view :67).
  • en/ru/pt/es/ar/fa/zh: re-derived under brand-translated policy (Argumentum = brand, kept verbatim in Latin script; the descriptor "Règle" localized per culture):
    • Argumentum - Rule / Argumentum - Правило / Argumentum - Regra / Argumentum - Regla / Argumentum - قاعدة / Argumentum - قانون / Argumentum - 规则
  • The previous 7 CSV values (Memo/Памятка/Memorando/…) translated the bare word "memo" and were stale once FR is corrected to the brand compound.

Δ4 — res.RuleContent (view wire + CSV row)

  • View _RulesExplorer_RuleDetail.cshtml:47: add <h2>@Resources.RuleContent</h2> before @Html.Raw(ruleEntity.Content) — the Content section was the only one of 7 rendering its body without a heading (orphan resource). Now matches the sibling pattern (RuleSummary/RuleMaterial/RuleInstallation/RuleVariants).
  • CSV: new row res.RuleContent = Contenu (FR canonical, matches DB eid=10340) + 7 langs (Content/Содержание/Conteúdo/Contenido/المحتوى/محتوا/内容).

DB-side (manifest only — NO DB write from this repo)

Staged in docs/dnn-localization/490-res-rule-provisioning-manifest.md for gated ops apply (jsboige / ops on the live DNN instance):

  • Δ1 RuleMaterial: DB FR MaterielMatériel (typo fix, eid=10340). CSV already correct — no repo change.
  • Δ2 RuleMemoCard: DB FR Carte MémoCarte mémo (sentence case, eid=10340). CSV keeps Carte mémo canonical.

Both DB writes fix the FR dimensionless default only; the 7 non-FR translations remain valid (translated from correct FR / case-insensitive equivalents). Two apply paths documented (2sxc admin UI / Method B write script with draft SQL to verify against live schema).

Byte-exactness (CSV)

  • Encoding: UTF-8, no BOM, CRLF line endings — preserved.
  • Quoting: QUOTE_MINIMAL (matches original lax style — notes with " stay unquoted).
  • Backup-vs-result diff: confirms only the 4 targeted cells (rows 5/8/10 notes + row 10 full) + 1 new row (RuleContent) changed. Nothing else touched.

What is NOT here

Verification

  • Byte-exact CSV diff (backup vs result) — 4 cells + 1 row only.
  • View change = 1 line (Razor heading, DNN runtime template — not compiled by .NET pipeline).
  • Repo-side deltas independent of DB-side (PR can merge before ops applies Δ1/Δ2).

Relates: #490, #458, #681, #682, #669, dispatch 70iit0.

🤖 Generated with Claude Code

…view + Δ1/Δ2 manifest)

jsboige arbitrated the 4 res.Rule* reconciliation deltas in interactive session
(2026-07-11, consigned #458). This PR ships the 2 repo-side deltas + stages the
2 DB-side deltas as a provisioning manifest for ops.

Repo-side (land via this PR):
- Δ3 RuleMemoCardFileNamePrefix: CSV fr Mémo→"Argumentum - Règle" (DB canonical),
  re-derived 7 langs (brand-translated policy: Argumentum verbatim + suffix localized).
- Δ4 RuleContent: wire <h2>@Resources.RuleContent</h2> at view :47 (orphan heading
  resource now referenced) + add CSV row Contenu + 7 langs.

DB-side (manifest only, gated jsboige/ops — NO DB write from repo):
- Δ1 RuleMaterial: DB Materiel→Matériel (FR typo fix, eid=10340).
- Δ2 RuleMemoCard: DB Carte Mémo→Carte mémo (sentence case, eid=10340).

Byte-exact CSV mutation (CRLF + no-BOM preserved, QUOTE_MINIMAL); diff
backup-vs-result confirms only the 4 targeted cells + 1 new row changed.
View change = 1 line added (Razor template, DNN runtime — not compiled by .NET pipeline).

Gate: 0 prod write (repo data/template only). QA verdict = ai-01.

Relates: #490, #458, #681, #682, #669, dispatch 70iit0.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@jsboige
jsboige merged commit f34ac77 into master Jul 11, 2026
3 checks passed
@jsboige
jsboige deleted the fix/490-res-rule-deltas branch July 11, 2026 03:02
jsboige added a commit that referenced this pull request Jul 11, 2026
…v21 correction (#777)

Dispatch bzkvnh (ai-01) — primaire #682 + secondaire spec staleness fix.
Base master 7406bb8. Theme: "2sxc v21 ground truth" (now that live export
#774 is committed, docs can lean on real data).

1. NEW docs/dnn-localization/682-path-a-provisioning-manifest.md — the concrete
   ops-gated artifact: the 49 lang-suffixed attributes (7 translatable String
   fields x 7 non-FR langs) to provision on AttributeSet 377 (Game Rule, app=60)
   so PR #674 Loc() cascade resolves per request culture. Ground truth sourced
   from live export 11-game-rule-schema.json. 2 apply paths (2sxc admin UI
   preferred / Method B SQL draft skeleton). HARD gate: zero DB write from repo.

2. 2sxc-export-spec.md — correct 15.02 staleness vs live v21 (#774):
   - SUPERSEDED banner (objectives P0/P1 accomplished: res.* FR VERIFIED via
     #772, HOLD #490 lifted, export delivered #774).
   - S2 scope table: + Statut column reflecting export findings (Glossary3/Faq4
     NOT FOUND; Game Rule = 5 entities not 24-30).
   - S3 Method A UI: app=31 -> app=60, Rules -> Game Rule (id 377), res.* on
     App-Resource eid=10340.
   - S4 Method B SQL: ToSIC_SexyContent_* -> ToSIC_EAV_* (v21 family), FR
     dimensionless (DimensionID IS NULL) not v.Language='fr-FR', eid=10340.
   - S7: version 15.02 -> v21.

No DB write. No Cards/ CSV. No runtime change. Doc-only.

Co-authored-by: Claude-Code <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant