docs(investigations): Magick.NET deferred-bug root cause — OBSOLETE, path replaced (dispatch h2utyb SECONDARY) - #722
Merged
Conversation
…path replaced, dispatch h2utyb) Root-cause investigation of the #719-flagged test skip (SvgConversionIntegrationTests... TryAutomateSvgConversion, "Temporairement désactivé pour isoler le crash Magick.NET", skipped 2025-08-01). Dispatch h2utyb SECONDARY (ai-01 2026-07-06 07:09). Base master 7ebeda1. Docs only, 0 write Cards/, 0 code change. Verdict: the Magick.NET crash is OBSOLETE — no longer reproducible. The code path that crashed (Freeplane + Magick SVG rasterization) was REPLACED: TryAutomateSvgConversion now delegates to TryFreeMindSvgExport (FreeMind GUI process + SendKeys, commit 46d6cd9), and production SVG rendering moved to Batik (PR #565, April 2026). Evidence (code=truth): grep Magick FallacyMindMapDocumentConfig.cs = 1 token = the dead 'using ImageMagick;' at line 19, ZERO usages; the method body uses Process.Start + SendKeys, not MagickImage. This resolves #719 flag question (a): the Magick dependency in the SVG path is dead. Magick.NET itself is healthy and load-bearing ELSEWHERE (unrelated to SVG): ImageHelper.cs (image loading, new MagickImage) + PdfManager.cs (PDF image collections, MagickImageCollection). Only its former presence in the SVG path was the problem, and that presence is gone. Fix options (post-tag, bundled with #710/#719 test-hygiene lane): (1) reclassify skip as infra-gated "requires FreeMind GUI" (recommended, accurate reason, preserves local smoke-test value); (2) delete (Magick premise obsolete, path covered by Batik tests + #715); (3) retarget to headless Batik (most work, overlaps #715). In all 3, the stale Magick skip reason must be replaced. Minor cleanup: remove the dead 'using ImageMagick;' (line 19). No dedicated issue — folds into #719. No live repro run: the test sets FreeMindPath="" so TryAutomateSvgConversion hits the FreeMind-not- found early return (returns false), never reaching Magick (there is none). Current failure mode if un-skipped = "FreeMind not found" assertion fail, NOT a Magick crash. Code analysis is conclusive. Read-only: 0 write Cards/, 0 code change, 0 test execution. Reproducible via grep on FallacyMindMapDocumentConfig.cs + git log on the skip line. Dispatch h2utyb (SECONDARY). Base 7ebeda1. Co-authored-by: Claude-Code <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>
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.
Root-cause investigation of the #719-flagged Magick.NET test skip. Dispatch h2utyb SECONDARY. Base master 7ebeda1. Docs only, 0 write Cards/.
Verdict: the Magick.NET crash is OBSOLETE — no longer reproducible. The code path that crashed (Freeplane + Magick SVG rasterization, skipped 2025-08-01) was REPLACED:
TryAutomateSvgConversionnow delegates toTryFreeMindSvgExport(FreeMind GUI + SendKeys, commit 46d6cd9), and production SVG rendering moved to Batik (PR #565). Evidence:grep Magick FallacyMindMapDocumentConfig.cs= 1 token = the deadusing ImageMagick;(line 19), ZERO usages; the method body usesProcess.Start+SendKeys, not Magick. Resolves #719 flag (a): Magick dependency in the SVG path is dead.Magick.NET itself is healthy/load-bearing ELSEWHERE (ImageHelper.cs image loading + PdfManager.cs PDF collections) — only its SVG-path presence was the problem, now gone.
Fix options (post-tag, bundled #710/#719 lane): (1) reclassify skip as infra-gated "requires FreeMind GUI" [recommended]; (2) delete (Magick premise obsolete, path covered by Batik tests + #715); (3) retarget headless Batik. Minor cleanup: remove dead
using ImageMagick;. No dedicated issue — folds into #719.No live repro run: test sets FreeMindPath="" → early-return, never reaches Magick. Code analysis conclusive.
Relates: dispatch h2utyb (SECONDARY), #719, #710, #565, 46d6cd9, #133. Base 7ebeda1.