Working version of Arguments with sketch - #1
Merged
Conversation
Contributor
Author
|
Sketch file, samples JSON, pictures and a help file to generate cards. |
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>
4 tasks
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>
3 tasks
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>
4 tasks
This was referenced May 16, 2026
4 tasks
3 tasks
This was referenced Jun 4, 2026
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>
Merged
4 tasks
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>
This was referenced Jun 26, 2026
Merged
This was referenced Jul 6, 2026
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>
This was referenced Jul 16, 2026
Closed
docs(investigations): encoding corroboration on #819 mindmap HTML wrappers (read-only, 0 write)
#821
Merged
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.