Skip to content

Working version of Arguments with sketch - #1

Merged
jsboige merged 1 commit into
ArgumentumGames:masterfrom
nrichand:master
Mar 22, 2020
Merged

Working version of Arguments with sketch#1
jsboige merged 1 commit into
ArgumentumGames:masterfrom
nrichand:master

Conversation

@nrichand

Copy link
Copy Markdown
Contributor

No description provided.

@nrichand

Copy link
Copy Markdown
Contributor Author

Sketch file, samples JSON, pictures and a help file to generate cards.

@jsboige
jsboige merged commit 29341df into ArgumentumGames:master Mar 22, 2020
jsboige added a commit that referenced this pull request Jun 30, 2025
Working version of Arguments with sketch

Former-commit-id: 29341df
Former-commit-id: 34425d57b4333e84e5591357aad60ce93d0ff0da
jsboige added a commit that referenced this pull request Feb 20, 2026
Issue #1 - Poker card dimensions:
- Change WidthMM from 58mm to 63.5mm (standard poker: 2.5")
- Change HeigthMM from 89mm to 88.9mm (standard poker: 3.5")
- Fixes 5.5mm width gap in poker cards (Scenarii)

Issue #3 - Rules DPI:
- Change DPI from 500 to 300 in Argumentum_Rules_fr.json
- Change DPI from 500 to 300 in Argumentum_Rules_Back_fr.json
- Standardizes all templates to 300 DPI

Also adds issue documentation in docs/issues/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Feb 20, 2026
- Issue #1: Poker dimensions now 63.5×88.9mm (verified in PDF)
- Issue #3: Rules DPI standardized to 300 (verified in templates)
- All acceptance criteria checked and validated

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Apr 8, 2026
…ypeProvider

DynamicExpressionParser uses CardFunc expressions like
{mindMap.GetThumbnailsPath(item)} where mindMap is a concrete
FallacyMindMapDocumentConfig or VirtueMindMapDocumentConfig instance.
GetThumbnailsPath is defined separately on each subclass (no
polymorphic override on base class), so System.Linq.Dynamic.Core
cannot resolve the method when only the base type is registered,
throwing ParseException at runtime.

Fix: register both subclasses alongside the base MindMapDocumentConfig
in CustomTypeProvider.GetCustomTypes().

Bug identified by po-2023 during pipeline run #1 on 2026-04-08.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Apr 8, 2026
…ypeProvider (#187)

DynamicExpressionParser uses CardFunc expressions like
{mindMap.GetThumbnailsPath(item)} where mindMap is a concrete
FallacyMindMapDocumentConfig or VirtueMindMapDocumentConfig instance.
GetThumbnailsPath is defined separately on each subclass (no
polymorphic override on base class), so System.Linq.Dynamic.Core
cannot resolve the method when only the base type is registered,
throwing ParseException at runtime.

Fix: register both subclasses alongside the base MindMapDocumentConfig
in CustomTypeProvider.GetCustomTypes().

Bug identified by po-2023 during pipeline run #1 on 2026-04-08.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Jun 19, 2026
…al points)

Realign the batch 6b proposal MD to the CSV ground truth, addressing the 3
structural inconsistencies flagged by ai-01's NanoClaw review (hard-rules
#518 unaffected — these are narrative doc-vs-data coherence points):

(a) pk 207 gap: the range 200-222 = 23 numbers for 22 leaves; pk 207 is
    `Respect de la personne` (path 7.3), a depth-2 backbone sub-family
    annotated in Phase 1 — correctly skipped as a non-leaf. Added an
    explanatory note in §1.

(b) Depth split: prose said "7 d3 + 13 d4 + 2 d5" but the §5 table and the
    REAL Virtues corpus give "6 d3 + 14 d4 + 2 d5". Corrected the prose to
    6/14/2 (table was already right).

(c) Most-opposed tally: recomputed exactly from the 44 crossLink_Opposes PKs.
    Évasion 1313 = x9 (the true #1, was shown x6 and mis-ranked below
    Attaque personnelle), 1398 x7, 1352 x6, 1345 x4, 322 x4, 1371 x3, 420 x3.
    Rewrote the §5 tally as a ranked table and reordered the narrative
    (Évasion dominates, not Attaque personnelle); added 1345 and 1371.

Also rebuilt the §5 leaf table from the CSV ground truth so the CQ column
matches character-for-character (the original table held abbreviated CQ
paraphrases; the CSV carries gpt-5.5's full CQs). opposes + scheme columns
were already exact.

CSV unchanged (only the proposal MD). Validator #518 still CLEAN (22 rows,
0 HARD, 0 WARN) — CSV untouched.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jun 19, 2026
…pks 200-222 (gated) (#539)

* docs(taxonomy): #499 Virtues scale-up phase 2 batch 6b — Échange enrichissant pks 200-222 (gated)

Gated proposal, no production CSV change. Batch 6b = second/last sub-batch of
the Échange enrichissant family (segment 7). Covers pks 200-222 (22 nodes:
7 d3 + 13 d4 + 2 d5), mirror Obstruction (Fallacy family 1280). With 6a merged,
this completes the Échange enrichissant family (40/40 leaves).

- 22/22 annotated via gpt-5.5 (/v1/responses, effort=low, max_output_tokens 7000).
- 3-layer anti-fab verify: catalog membership + ground-truth vs real 1408-row
  Fallacies CSV (text_fr) + mirror consistency (all 1280) — 0 violations.
- Anti-fab validator #518 (kind=virtues): CLEAN — 22 rows, 0 HARD, 0 WARN.
- Scheme distribution Commitment-dominant (15/22) = respect/civility signature.
  Most-opposed fallacies = disqualification cluster: Attaque personnelle 1398 x7,
  Évasion 1313 x6, Empoisonnement du puits 1352 x6, Repoussoir 322 x4, Jeu de
  pouvoir 420 x3 = family semantic anchor (enriching exchange = criticize
  arguments not person, engage not evade/impose, interpret charitably). Combined
  with 6a, full Échange enrichissant anchored on engagement-vs-obstruction =
  exact mirror of Obstruction 1280. Depth reaches d5 (pk 218, pk 220).

Files: docs/taxonomy/499-virtues-scaleup-phase2-echange-b.md + CSV only.
Generation scripts/raw output kept ephemeral in tmp/ (not committed).
Batch 7 = Raisonnement valide (51, sub-batched) remains.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(taxonomy): #539 realign Échange-b MD to CSV (3 NanoClaw structural points)

Realign the batch 6b proposal MD to the CSV ground truth, addressing the 3
structural inconsistencies flagged by ai-01's NanoClaw review (hard-rules
#518 unaffected — these are narrative doc-vs-data coherence points):

(a) pk 207 gap: the range 200-222 = 23 numbers for 22 leaves; pk 207 is
    `Respect de la personne` (path 7.3), a depth-2 backbone sub-family
    annotated in Phase 1 — correctly skipped as a non-leaf. Added an
    explanatory note in §1.

(b) Depth split: prose said "7 d3 + 13 d4 + 2 d5" but the §5 table and the
    REAL Virtues corpus give "6 d3 + 14 d4 + 2 d5". Corrected the prose to
    6/14/2 (table was already right).

(c) Most-opposed tally: recomputed exactly from the 44 crossLink_Opposes PKs.
    Évasion 1313 = x9 (the true #1, was shown x6 and mis-ranked below
    Attaque personnelle), 1398 x7, 1352 x6, 1345 x4, 322 x4, 1371 x3, 420 x3.
    Rewrote the §5 tally as a ranked table and reordered the narrative
    (Évasion dominates, not Attaque personnelle); added 1345 and 1371.

Also rebuilt the §5 leaf table from the CSV ground truth so the CQ column
matches character-for-character (the original table held abbreviated CQ
paraphrases; the CSV carries gpt-5.5's full CQs). opposes + scheme columns
were already exact.

CSV unchanged (only the proposal MD). Validator #518 still CLEAN (22 rows,
0 HARD, 0 WARN) — CSV untouched.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jun 19, 2026
…rget, recommend closure (#547)

Closure assessment for #498 (dispatched by ai-01, PRIMARY). Evaluates cluster-level
coverage against the #498 target and recommends CLOSURE of #498 (content-proposal
layer), with phase-4 mopup documented as optional finish.

Key findings (all verified against the real 1408-row prod Fallacies CSV, master 4dd3c6b):
- 70 direct cluster AIF mappings (depth 2-4), broadMatch-dominant (57/10/3) — intact,
  no regression from phases 1-3.
- Effective coverage by inheritance: 1292/1408 = 91.8% (direct+inherited).
- The "~31% (442/1408)" figure in the issue body is jsboige's measure with unspecified
  derivation — recorded transparently rather than reproduced (DoD #5 fail-loud on the metric).
- Generative work (phases 1-3): 50 depth-3 leaves with full triple-AIF exception structures,
  17 distinct Walton schemes, 49 distinct CA-nodes. rebut-type progression (absent phases
  1-2, appears phase 3) is independent semantic-fidelity evidence.
- Phase-4 mopup (13 remaining depth-3 leaves) is OPTIONAL, not a gap: all 13 already carry
  native cluster AIF skos mappings in prod. Phase 4 would add generative density (50->63/63),
  not coverage.
- Fail-loud: the 4 unmapped depth-2 categorical parents (Technique rhetorique, Appel a
  l'emotion, Conclusion mathematique invalide, Sabotage du debat) are category umbrellas
  whose children carry the mapping — no scheme fabricated.

DoD assessment: #1 (numbering) met, #2 (generative structures) met for 50 leaves, #3
(mapping-type coherence) met, #4 (fail-loud) met. No coverage gap. Recommends closure;
gated prod write + OWL regen + jsboige content validation remain as separate downstream gates.

Doc-only gated. No production data changed.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jun 20, 2026
…nt bug (#560)

Pin the behavior of FallacyMindMapDocumentConfig.CollectPossibleSvgNodes and
DisambiguateSvgNodes — CLAUDE.md "Known Fragile Area #1": SVG disambiguation in mind
map generation, fragile heuristics dependent on Freeplane's output structure.

These private instance methods (bound to TitleFunc/Logger) were audited + rejected
for the #204 extraction lane (not cleanly separable). The coordinator dispatched
pinning their BEHAVIOR via XElement fixtures instead of extraction, because the
silent-wrong-output risk is the #1 documented fragility: a regression in the
min-length grouping, the 3-char prefix fallback, or the parent-distance tie-break
silently wires each fallacy to the WRONG mind-map node — caught only by visually
inspecting every generated SVG.

7 contract tests via reflection against real Fallacy instances (which implement
IMindMapItem and expose TextFr, so TitleFunc's {item.TextFr} resolves):
- Collect: single exact match returns that node.
- Collect: multiple matches with different lengths KEEPS SHORTEST (the title node,
  not a re-quoting descendant) — the fragile bit.
- Collect: no exact match leaves the item ABSENT from the result (silent-drop
  contract — never a null-value entry).
- Collect: substring match across split <text> elements resolves (string.Join).
- Collect: title shorter than 3 chars with no match THROWS on the guard-less
  Substring(0,3) prefix fallback — documents a latent bug.
- Disambiguate: single candidate per item = passthrough.
- Disambiguate: empty input returns empty, does not throw on Descendants().

Additive only, no production code change. Full suite green (429/0/5, baseline 422 + 7).

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 6, 2026
…er (4 warnings) (#731)

Third sub-lot of Slice C (CS86xx nullable-flow) of the #710 nullable-cleanup plan
(dispatch x0ykyn PRIMARY; follows Slice A #727, B #728, C-1 #729, C-2 #730).

Cohesive sub-lot by area: all 4 remaining CS86xx in the MindmapGeneration SVG cluster
(3 files). This cluster sits in CLAUDE.md "Known Fragile Area #1 — SVG disambiguation" territory,
so each fix is the most conservative honest annotation, not a logic change.

Fixes (4 warnings):

- SvgConversionIntegrationTests.cs L59-60 (CS8602 method-null deref + CS8605 nullable unbox):
  `GetMethod` returns `MethodInfo?` and `Invoke` returns `object?`. The test is `[Fact(Skip=...)]`
  (the #719 Magick.NET skip — root-caused OBSOLETE by #722: the path was replaced by FreeMind GUI
  + Batik). Added `Assert.NotNull(method)` + `method!.Invoke(...)!` so the cast is honest. The
  skipped test never runs; the annotation just satisfies the compiler. NO behavioral change.
- SvgDisambiguationContractTests.cs L37 (CS8625): `G(string text, string id = null)` →
  `G(string text, string? id = null)`. The body already null-checks (`if (id != null)`) before
  `SetAttributeValue`, so `string?` is the honest param type. Caller fixture sites pass null to
  build <g> elements without an id — intentional.
- SvgPostProcessingTests.cs L33 (CS8604): `Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!`
  — GetDirectoryName returns `string?` (Location can in theory be empty); in a running test the
  assembly location is non-null, so the `!` documents that invariant.

DoD (measured on this branch, base master 240511c):
- dotnet build Tests.csproj --no-incremental: the 3 target files emit 0 CS86xx (4→0). 0 errors.
- dotnet test --filter MindmapGeneration: 85 pass / 1 skip (the Magick test, expected). 0 regression.
- dotnet test (full): 587 pass / 1 fail (OWL #133 permanent) / 5 skip (#719). 0 regression.

CsvHelper safety (#710 §3): NOT IN SCOPE — none of these files is a CsvHelper-mapped entity or
exercises the CSV load path. The mapping-risk suites are untouched.

Slice C remaining: 11 distinct CS86xx across 8 files (CsvGridConversion, ImageFileGenerator×2,
SimpleImageGenerator, OwlE2E, FallacyLinkFallback×3, LoggerMarkup, UtilityExtensions,
PKHierarchical). Follow in subsequent sub-lots.

Base 240511c. 0 Cards/ write, 0 rendering code change.

Dispatch x0ykyn (PRIMARY, Slice C-3). Base 240511c.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 6, 2026
…urrent (#664), no régén needed (#735)

Executes dispatch `x0ykyn` TERTIAIRE [3] (#636 §1) as a read-only verification.

The dispatch asked for a manifest of Fallacies EN/RU régénération scope (PKs/nodes changed in the
taxonomy CSV since the committed SVGs). Code=truth shows the premise is moot: the SVGs were
regenerated 2026-07-03 by #664 (commit d448467, merged by ai-01), and ZERO commits touch the
Fallacies taxonomy CSV after that date. The "~34 commits stale / dated 06-04" wording restated in
ai-01's 2026-07-06 #636 comment predates #664 (it quotes #636's original opening title verbatim).

Proof (all in the doc):
- `git log -1 -- <en/ru content.svg|links.svg>` = d448467 2026-07-03 (#664 "refresh Fallacies EN/RU").
- `git log d448467..HEAD -- <Fallacies Taxonomy.csv>` = empty (0 commits since the régén).
- Last CSV commit before régén = 2079f0c 2026-07-02 (#640); régén is one day later (strictly newer).
- #664 body (ai-01-authored): stale labels purged (All-or-Nothing Thinking etc.), fresh labels present
  (Abusive relativism etc.), RU 1447 Cyrillic nodes.
- Spot-check: `grep -c "All-or-Nothing Thinking" en/Fallacies_en.content.svg` = 0 (stale label gone).

Conclusion: gap #1 (#636 §1) is already CLOSED. No manifest of pending changes exists because there
are none. Recommendation: close #636 entirely (§1 closed by #664 2026-07-03, §2 closed by #724
2026-07-06 — both gaps in the title resolved).

Read-only: 0 write Cards/, 0 régén, 0 CSV/DB/OWL mutation, 0 rendering code. git log / git show /
gh pr view / one grep on a committed SVG only.

Dispatch x0ykyn TERTIAIRE [3] / #636 §1. Base 240511c.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 16, 2026
…ty, 8 langs (#820) (#822)

Root cause (#820): FallacyMindMapDocumentConfig.ProcessSvgFilesAsync was split
into two overloads and the public one called the internal one WITHOUT the
mind-map items; the internal overload then substituted an empty
List<IMindMapItem> ("simplification for the test"), so UpdateSvgWithItems always
received 0 items and injected 0 class="node". Compounded by the normal pipeline
sourcing the text-as-path canonical Fallacies_<lang>.svg (0 matchable text).
Result: every Fallacies_<lang>.content.svg shipped with 0 nodes and the
integrated HTML had no click-to-define overlay (Virtues worked because it passes
real items directly).

Fix:
- Pass the real items through the public->internal overload; keep a test-compat
  item-less overload delegating with an empty list so SvgPostProcessingTests'
  approved snapshot stays unchanged.
- Add a standalone --regen-fallacy-mindmap-nodes entry-point + public
  RegenerateInteractiveContentSvgAsync that injects LOCALIZED node attributes
  directly into the EXISTING text-bearing content.svg (per-language via
  DoReflectionTranslate) and regenerates the integrated + external HTML.
  Standalone on purpose: never runs the normal Mindmapper pipeline (which would
  re-derive content.svg from the text-as-path canonical and lose every node
  title), and no FreeMind.

Regenerated artifacts (8 langs): content.svg + integrated .html now carry
1397-1408 class="node" (was 0). Localization intact (ru Cyrillic, ar/fa Arabic,
zh CJK). The 5-11 unmatched/lang are the known-fragile duplicate-title
disambiguation cases (CLAUDE.md Known Fragile Area #1), not a regression.

Verified (ai-01 Playwright): fr 1403 nodes + overlay populates FR; ru 1405 nodes
+ overlay populates Cyrillic (family "Софизмы (ложные аргументы)", localized
description) - parity with working Virtues.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 16, 2026
…ppers (read-only, 0 write) (#821)

Read-only check on the 29 integrated HTML mindmap wrappers regenerated by
#819 (the T&A review vehicle for gate (b)), extending the #818 encoding
thread. Answers a concrete de-risking question: did the #804 residual #3
(.content.svg declare encoding="utf-16" but are UTF-8+BOM, ai-01 Cycle H)
propagate into the file Thomas & Adeline actually open?

Result: NO. 0/29 wrappers carry the latent.
- 29/29 are really UTF-8, declare charset=UTF-8 (meta).
- 0 utf-16-declared-but-utf8 mismatches.
- Cause: MindMapHtmlWrapper.FormatWrapper strips the <?xml?> prologue and
  injects the SVG into an HTML shell with its own charset=UTF-8, so the
  erroneous utf-16 declaration is eliminated, not inherited.

Independently corroborates ai-01's Cycle H localization certification
(SHA256 #636 + script composition) on the freshest artifact (#819).

Tracked-not-fixed observation: 4/29 wrappers carry a BOM
(Fallacies_{ar,es,fa,zh}.html) — harmless (meta charset + BOM precedence)
but inconsistent. Fix = po-2023 regen lane (mindmaps), not po-2024
(Cards). Folded into po-2023's post-tag mindmap regen pass (#804 #1/#2/#3).

Out of scope: wrapper/.content.svg regen, MindMapHtmlWrapper edit, BOM
strip — all lane po-2023. No write prod this PR.

Refs: #819, #804 residu #3, #818, #458.

Co-authored-by: Your <your.email@example.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 28, 2026
…follow-up) (#962)

The release-gate dossier carried six facts measured stale against master
3094d42. All are mechanical/premise drift from July merges — no verdict,
no release scope changed. This pass corrects the dossier body that #959
(header/§0) deliberately left untouched.

1. §3.2 Virtues .content.svg were marked FR-figé ("gap structural"). FALSE:
   Argumentum_Virtues_MindMap_{lang}.content.svg are native-script 8/8,
   committed via #665/#715/#724/#686 (9f52446). Distinct-size proof
   (git cat-file -s): fr 431931 / en 418954 / ru 485254 / pt 446948 /
   es 432142 / ar 461859 / fa 461654 / zh 1148677 — a FR clone would be
   ~431931 everywhere. Twin premise of #636 (CLOSED 2026-07-06), false for
   the same reason. Marked RÉSOLU.

2. §3.2 es/ar/fa/zh mindmap SVG count 3 → 5 each (git ls-files | wc -l).
   fr 6 / en 5 / ru 5 / pt 5 / es 5 / ar 5 / fa 5 / zh 5.

3. §4 tests 596/601 → 643/638/0/5 (CI run 30280070312, both matrix legs),
   aligning with §0/#959. The 596/601 was pre-#911 (Test step was a no-op).

4. §4 Magick.NET 14.14.0 → 14.15.0 (#871 6f1a6e1a, 5 advisories patched).
   Also adds AutoMapper 14.0.0 (#588) and PdfPig 0.1.14 official (#908).

5. §3.6 + §5.8 + §7 + §8.2(c) "PT titre English Channel — open finding,
   appel à décision" → RÉSOLU. git grep "English Channel" -- Cards/ = 0.
   Per ai-01 precision: the string lived in an EMBEDDED csv key that is
   IGNORED at runtime (HarvestManager.cs overwrites it with the real CSV),
   so the defect never reached a card — NOT "resolved by #803". The
   observed mistranslation was stale-harvest, not a live prod defect.
   Separated from PT row-1 cover contamination (#306, distinct, also closed).

6. §5.4(a) + §8.2(a) #636 "arbitrage ouvert" → CLOSED 2026-07-06 (twin
   premise of #1).

Every value above is re-read at source (git ls-files / cat-file -s / grep /
gh issue view), not taken from an intermediate report. 3 audit-probe
imperfections (Fallacies/Scenarii counts grabbed Archive/2022; skos:prefLabel
grep namespace-split) are documented honestly in the audit report, not masked.

Scope: 1 docs file, docs-only, 0 prod write, 0 OWL, 0 CSV. Correction PR,
decision to merge = ai-01 (pre-tag sensitive zone, #134 gate).

Audit report: docs/investigations/2026-07-28-release-validation-v0.9.0-audit.md
(landed in #961). This PR is the body-correction follow-up ai-01 gave GO on
(arbitrage qgsvq4, 2 precisions applied: "n'a jamais atteint une carte"
phrasing + PT vs EN distinct #306).

Co-authored-by: Your <your.email@example.com>
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.

2 participants