feat(cmyk): add --pdf-cmyk CLI entry point for standalone CMYK post-pass (#632) - #652
Merged
Conversation
…ass (#632) The #632 Ghostscript CMYK+OutputIntent stage only ran as part of a full Release pipeline run (Mode default omits ConverterMode.PdfCmykPostProcess, and the stage is Release-gated). There was no way to apply it standalone to an ALREADY-generated bundle — needed because the printer-mandated CMYK step runs on the one machine that has Ghostscript, on a bundle regenerated by a worker machine that has none. Adds a `--pdf-cmyk` subcommand (mirrors the existing --validate-* entry points): sets Mode = PdfCmykPostProcess only (no harvest, no PDF regen — discovers PDFs already under Target/ and converts them in place) and forces Release params so the Release-gated stage is enabled from any build config. GS resolves via PATH; the SWOP ICC is auto-extracted from Magick.NET at runtime (no manual profile needed). Verified end-to-end on ai-01 (GS 10.07.1): converts a full-size A0 PDF to DeviceCMYK + embeds the SWOP OutputIntent (GTS_PDFX / CGATS TR 001) in ~10s; pdfimages confirms rgb->cmyk, raw PDF confirms OutputIntent present. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Jul 3, 2026
jsboige
added a commit
that referenced
this pull request
Jul 3, 2026
…EN+FR) (#659) Consolidated release-notes draft for the v0.9.0 GitHub Release, building on the po-2023 draft (docs/RELEASE-NOTES-v0.9.0.md) and reflecting the post-bundle-v3 work not yet captured there: Highlights: - 8 languages x 10 documents, print-ready (bundle v3, 80 PDFs, PNG-300-lossless) - Print & Play free + complete: Standard (full game) + Light (sample + Virtues families overview, depth<=2, #645/#648-650) - Print-ready CMYK + SWOP OutputIntent via --pdf-cmyk Ghostscript post-pass (#632/#652) - Rules i18n cleanup (#633->#640), 0 HIGH residual + committed anti-FP scanner Notable fixes since dossier #591: harvest deadlock (#651), Logger hardening (#630/#655), Scenarii 6.1.3 title (#653), GSheet Rules sync (#642). Known limitations: SVG mind maps potentially stale (#636), OWL round-trip #133, DNN CVEs (separate ops milestone). EN + FR (impersonal). NOT published - draft docs only, jsboige validates and pastes into the GitHub Release. Test count flagged as dashboard-baseline (reported, not empirically re-verified) per [[test-counter-empirical-dotnet-test]]. Base ca5db81. Co-authored-by: Your <your.email@example.com> Co-authored-by: Claude-Code <noreply@anthropic.com>
This was referenced Jul 3, 2026
jsboige
added a commit
that referenced
this pull request
Jul 4, 2026
RENDUS + path CMYK (#675) Refresh the release-validation dossier (PR #631) to reflect the 2026-07-03/04 state. ai-01 dispatch tbxfhu (tertiary). Key updates: - 64→80 PDFs: bundle v3 (10 types × 8 langues, expansion P&P #648-650 = P&P Standard + P&P Light). Bundle GDrive v3 = 6.5 GB (80 CMYK + 7 samples + CMYK_COLOR_PROOF.txt). - Verdict #140 (content, 8 langs) = PASS ai-01 RENDU: carte dense p51 EN/ES/RU/AR/FA/ZH (RTL AR+FA, CJK), covers, PT #306 fixé, FR Rules 5 jeux. #119, recto-verso, #216, micro-RU résolu. - Verdict #632 (colorimetric) = PASS ai-01 RENDU: DeviceCMYK 4-comp + GTS_PDFX/OutputIntent on fr+ar+zh. - Finding 1 (CMYK absent) → RÉSOLU: post-process Ghostscript (#632/#652) = 80/80 DeviceCMYK + OutputIntent SWOP. Le path DocumentCardSet.cs (oxymore PNG) est remplacé par le post-process GS sur le PDF final. - Tag v0.9.0: techniquement débloqué (2 verdicts PASS). Reste arbitrages jsboige (#636 §1 SVG Virtues, #654 mnémoniques, couplage go-live DNN) + finding titre PT (§3.6; note: #640 a résolu le bulk 'English Channel' 23 occ HIGH, titre Tarot PT spécifique possiblement inclus). Master ref 3e2fa0c → a41cbda. Bundles Debug/Release-v1 préservés. Relates: #631 #632 #652 #648 #649 #650 #140 #134. ai-01 dispatch tbxfhu. Co-authored-by: Claude-Code <noreply@anthropic.com>
This was referenced Jul 4, 2026
Merged
jsboige
added a commit
that referenced
this pull request
Jul 4, 2026
…tability fixes) (#134) (#689) The v0.9.0 entry predating bundle v3 missed the print-production and late-cycle stability work. This refresh brings it in line with master `21e2c666`, cross-checked against the release-validation dossier v4 (docs/RELEASE-VALIDATION-v0.9.0.md §3.3) and dashboard decisions #26-69. Added: - "Print Production (CMYK & Print&Play)" section: Ghostscript post-process (#632), `--pdf-cmyk` entry-point (#652), bundle v3 = 80 PDFs DeviceCMYK + SWOP OutputIntent (6.18 GB RGB -> 5.30 GB CMYK), P&P Standard/Light (#645/#648-650, 64 -> 80 PDFs), GS timeout 180->900s (#670) - "OWL Ontology (Bilingual EN/FR)" section: Fallacies OWL 5.07 MB (#634 regen), Virtues OWL (#592/#499 Phase 2), honest scope note (EN+FR only, not 8-lang) - "Fixed - Pipeline Stability (Jun-Jul 2026)" section: harvest deadlock #651, serial retry #613/#676, logger Spectre #630/#655, CMYK oxymore, Johnny 6.1.3 #653, Rules i18n refonte #640, CSV hygiene #579/#581/#584, OWL staleness #634 Corrected (code=truth): - Magick.NET 14.13.1 -> 14.14.0 (verified in .csproj) - Test count 548 -> 578 pass / 1 known-fail #133 / 5 skip / 584 total (empirical `dotnet test` on Argumentum.AssetConverter.Tests, 2026-07-04, .NET 9). Previous counts in docs (548/549/570) were all stale No existing content regressed; all prior sections preserved. 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 4, 2026
…&P) (#134) (#690) Aligns the public/canonical release docs with bundle v3 (80 PDFs, DeviceCMYK + SWOP, P&P Standard/Light #648-650) and flags the June framework snapshots as superseded. Dispatch ai-01 `ryxzma` SECONDAIRE (64→80 coherence) + TERTIAIRE (release-notes scope honesty). Canonical / public-facing (count + scope fixed): - RELEASE-NOTES-v0.9.0.md: 64/64 → 80 PDFs (10 types × 8 langs), CMYK via Ghostscript #632/#652; OWL honest scope (bilingual EN/FR, NOT 8-lang); P&P digital edition free (Light + Standard) - news-article-v0.9.0.{en,fr}.md: "64 PDFs = 8 × 8" → "80 PDFs = 8 × 10" with CMYK + P&P Standard/Light note Legacy framework snapshots (superseded banner → dossier v4, bodies intact): - release-dossier/README.md (2026-06-17/19) - release-v0.9.0-validation-brief.md (2026-06-13) - v0.9.0-readiness-and-disk-recovery.md (2026-06-13, Part 1 only — Part 2 disk-recovery stays authoritative) Bodies of legacy docs intentionally not rewritten (dated evidence preserved); banner points readers to docs/RELEASE-VALIDATION-v0.9.0.md (v4) for current truth. DNN UPGRADE-ASSESSMENT "12-Jun regen 64/64" left as-is (explicitly dated, historically accurate). Docs-only, no code/CSV/assets. 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 4, 2026
…cution) (#691) Cold-executable prep checklist for the full 8-language fresh regen required before tag v0.9.0 (decision #26). Triggered by ai-01 dispatch sde6s0 (primary). Documents the regen harness code=truth (base master 21e2c66): - 8 languages (fr canonical + en/ru/pt/es/ar/fa/zh), field suffixes, iteration - ConverterMode flags (16, all merged) + default Mode + Apply stage ordering - Regen sequence: clobber -> harvest -> PDF -> mindmaps -> OWL -> CMYK (last) - Mandatory harvest cache-clobber (no --clean CLI; dotnet clean != clean regen) - FreeMind GUI RDP-live-foreground prerequisite (XSLT proscribed #184) - OWL mono-language EN+FR caveat (honest release-notes scoping) - Per-language verification points (visual verdict = ai-01 lane) - Pre-regen readiness gate (10-item checklist) PREP ONLY — no regen launched (desktop non-interactive + content HOLD). Corrects a sub-agent misread: CMYK (PdfCmykPostProcess #632/#652/#641) IS merged on master, not worktree-only. Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige
added a commit
that referenced
this pull request
Jul 5, 2026
…to look at, per lang) (#700) Bundle-v3-specific verification guide so jsboige can validate the 80-PDF CMYK bundle (10 types x 8 langs, post P&P #648-650 + CMYK #632/#652) in ~15 min, including the languages he doesn't read (ar/fa/zh, +ru). Triggered by ai-01 dispatch yj7u3j (secondary). Mandate "present the dossier cleanly at tag". Complementary to the existing guides (no duplication): - validation-guide.fr.md (general procedure, 2026-05-31, pre-P&P expansion) - non-latin-verification-guide.md (DNN site UI strings, not bundle) Bundle-v3 guide adds: - 10 doc types (incl. new P&P Standard/Light #648-650). - Per-lang sampling: 16 PDFs (2/lang) = Thumbnails p1 + TarotCards p1. - 3 sense-independent checks (direction RTL, glyph/font tofu, FR-leak #216). - Per-lang expected strings: ru Cyrillic "Sofizm", pt cover "A Escola dos Mentirosos" (#306 fix), ar RTL "Al-Safsata", zh CJK "miuowu". - CMYK transverse check (pdfimages -list = cmyk 4-comp + SWOP OutputIntent). - 15-min validation order + defect triage table. Master dc02e84. Docs-only, no test/build impact. Co-authored-by: Claude-Code <noreply@anthropic.com>
jsboige
added a commit
that referenced
this pull request
Jul 16, 2026
…6 tests / AIF layer (po-2024 tick 24) (#816) Sync release-notes canonical figures with the actual post-#807 master state: - 80 PDFs (10 types × 8 langues), not 64. Print&Play Standard + Light were added post-#648-650; the bundle now spans {Tarot, Poker, A0 poster, Thumbnails, Mémo, Rules, FallaciesWeb, Print&Play Standard, Print&Play Light, +1 expert tier} × 8 langues. Bundle v3 (2026-07-03) is 80/80 DeviceCMYK + SWOP OutputIntent (verified via pdfimages -list, Ghostscript post-process #632/#652). - 596 tests pass (post-#807 alignement; #133 OWLSharp known-fail cleared in #793), not 578. - AIF attack layer detailed: 145/1408 fallacies + 222/223 vertus with deterministic ASPIC+ node map; tiering methodology explained; anchor audit results (16 CLEAN / 2 SOFT / 0 erreur). - CrossLink layer: 1985 cells across 844 fallacies (59.9 percent), 8 relational predicates (#763). - Print production hardening: GS timeout 180s -> 900s (#670); per-image CMYK oxymore explained (PNG cannot carry CMYK, the authoritative CMYK path is the GS post-process). Out of scope (this PR): - Tag creation. The release is gated on jsboige visual GO + tag. - DNN security upgrade (separate post-release op, lane po-2023:jsboige). - Layer C (~1263 leaves without skos signature, generative pass), requires its own gated pilot. Diff: docs-only, 1 file. 0 code change. Refs: #134, #632, #648-650, #652, #670, #793, #807.
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.
Problème
Le stage CMYK+OutputIntent Ghostscript de #632 ne tournait que dans le cadre d'un run pipeline Release complet :
Modepar défaut ometConverterMode.PdfCmykPostProcess(flag1<<15) ;GetEnabled → EnabledRelease).Il n'existait aucun moyen d'appliquer le CMYK en standalone sur un bundle déjà généré. C'est pourtant exactement le besoin du tag : la régénération lourde du bundle se fait sur une machine worker sans Ghostscript, et le post-traitement CMYK imprimeur doit tourner sur la seule machine qui a GS (ai-01) — sans re-harvester.
Changement
Ajoute une sous-commande
--pdf-cmyk(mirroir des entry-points--validate-*existants) :Mode = ConverterMode.PdfCmykPostProcessseul → aucun harvest, aucune régénération PDF ; le processor découvre les PDFs déjà présents sousTarget/et les convertit en place (atomicFile.Movesur succès, skip gracieux si GS absent) ;ForceReleaseParams = true→ active le stage Release-gated depuis n'importe quel build config.GS résout via
PATH(préfixer le bin GS avant le lancement, le process .NET hérite du PATH). L'ICC SWOP est auto-extrait de Magick.NET au runtime (USWebCoatedSWOP, même profil que la conversion per-image) → aucun profil manuel requis.Config-only côté surface publique : +24 lignes dans
Program.cs, aucune autre modification.SkipConfigFile=truerespecté (pas d'édition JSON). Build 0 erreur.Vérification end-to-end sur ai-01 (GS 10.07.1)
Contrôle du PDF converti (
pdfimages -list+ grep PDF brut) :rgb3-compcmyk4-comp (178 DeviceCMYK)GTS_PDFX/CGATS TR 001/SWOP)Scope / honnêteté
bin/Debug/.../Target/a été partiellement converti pendant le smoke test (output de build jetable, non commité,.gitignore) — sans effet sur le repo.Lié à #632. Chemin critique tag v0.9.0 (CMYK imprimeur obligatoire).
🤖 Coordinator ai-01