Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ All notable changes to the Argumentum project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.9.0] — 2026-07-XX
## [0.9.0] — 2026-07-XX (tag pending jsboige visual GO, week of 2026-07-13)

### Added — Multilingual Support (8 Languages)

Expand Down Expand Up @@ -49,8 +49,20 @@ The v0.9.0 release bundle is **print-ready**: 80 PDFs (10 document types × 8 la
- **Fallacies OWL** (`docs/ontology/argumentum.owl`, 5.07 MB): SKOS + AIF, 1408 fallacies, bilingual literals (EN 5558 + FR 4861), 2816 `prefLabel`, 1408 `broader` (full hierarchy). Freshly regenerated 2026-07-02 (#634 — previous commit `d206e59c` was ~3 months stale)
- **Virtues OWL** (#592/#499 Phase 2, `docs/ontology/argumentum_virtues.owl`, 842 KB): 223 Virtues, 223 `aif:goodTenorOf` assertions, 7 families, bilingual literals (FR 884 + EN 641). Relational prod-write Phase 1 (#499, 66 → 78 columns, 12 additive)
- **Scope note (honest)**: the OWL generator is bilingual (FR canonical + EN secondary) — it does **not** carry the 6 other release languages (RU/PT/ES/AR/FA/ZH). The 8-language claim applies to CSV/PDF/SVG, **not** to OWL
- **Three relational layers now serialized in `argumentum.owl`** (#787, freshly regenerated from master `95b4210b`): (1) **skos Walton** — 70 native scheme mappings (`AIF_skos*Ref`, #753); (2) **crossLink** — 1985 inter-fallacy relational verbs across 8 predicates (#763); (3) **AIF attack** — 145 attack-typed fallacies with deterministic ASPIC+ node mapping (#498, see below). The committed OWL had drifted to 93 AIF assertions before the P1 reconciliation regen; #787 realigns it to the 145 prod value
- #133 (OWL publication) remains open; the OWLSharp `rdf:type`/`skos:inScheme` round-trip bug is worked around by scoping readers on surviving annotations

### Added — AIF Argumentation Layer (#498 Fallacies, #499 Virtues)

A two-layer reconciliation of the taxonomy against the **ASPIC+ / AIF (Argument Interchange Format)** framework, giving each fallacy and virtue a formal attack semantics. Contract columns added in #753 (`AIF_attackType`, `AIF_attackedNode`, plus the `AIF_skos*Ref` mapping columns).

- **Fallacies attack layer (#498)** — **145 / 1408 fallacies** now carry a typed AIF attack (10.3%), with a **deterministic node map** (ASPIC+ Option (a), #707 §4): `undercut → RA-node` (attacks the inference/rule, 87), `undermine → I-node` (attacks the premise, 53), `rebut → CA-node` (attacks the conclusion, 5). Rebut is a structural tail case (~3%), localized to appeal-to-consequences — relational fallacies (personal attack, genetic fallacy) are modelled as undermine/undercut, not rebut, because they reject without an independent counter-conclusion
- **P1 skos-only reconciliation complete** (#498 P1, 93 → 145): the 52 fallacies that carried a skos signature but no attackType were back-filled across 7 tranches (tranche-1 #769/#771, 1b #773/#776, 1c #775/#779, 1d #778, 1e #780, 1f #781, 1g #784/#785; batched write 1d+1e+1f #783). Tiering by confidence: 14 PRECEDENT (exact-token precedent in-set) + 2 PREC-TIE (competing precedents, tie broken by majority + desc) + 36 SUFFIX-ONLY (skos token present, no typed precedent). **0 residual** skos-only rows; **0 token fabricated** — every attackType derived from the row's own skos signature + `desc_fr`, never inherited from the anchor (anchor audit #770: 16 CLEAN / 2 SOFT / 0 error; 0/19 anchors align with their sub-sub-leaves, proving inheritance would be fabrication)
- **crossLink relational layer (#763)** — **8 inter-fallacy relational verbs** (`predatesOn`, `denounces`, `leverages`, `allows`, `opposes`, `inverts`, `mirrors`, `isRelatedTo`) filling **1081 cells across 844 fallacies (59.9%)**, emitted as OWL object properties with symmetric-flag handling. Mirrors (#721) and isRelatedTo are the densest predicates
- **Virtues mirror (#499)** — **222 / 223 Virtues** carry an AIF attack type (Option A "resisted attack" ratified by ai-01 under jsboige delegation): 206 `undercut/RA-node`, 13 `undermine/I-node`, 3 `rebut/CA-node`. Prod-write Phase 1 (#755, script #754) extended the Virtues schema 66 → 78 columns (12 additive attack-shaped columns)
- **Anchor audit (#770)** and **tiering methodology** documented in `docs/taxonomy/498-reconciliation-p1-closure.md`; the same-token divergence principle (desc-driven, token non-decisif) is validated by two documented cases (pk808/pk33, pk888/pk2)
- **Layer C** (~1263 leaves without any skos signature) is **out of scope for v0.9.0** — a generative Walton-mapping pass is a change of nature (generation vs back-fill) requiring its own gated pilot; escalated to jsboige for a post-tag decision

### Fixed — Pipeline Recovery (Oct 2025 — Jun 2026)

Complete restoration of the generation pipeline from the April 2024 Golden Master state:
Expand Down Expand Up @@ -96,8 +108,8 @@ Late-cycle hardening of the harvest and rendering pipeline, post-recovery:

### Test Coverage

- **578 tests pass** (`dotnet test` on `Argumentum.AssetConverter.Tests`, 2026-07-04, .NET 9 — 584 total), 5 skips (GUI/infrastructure), 1 known-fail (OWLSharp `rdf:type`/`inScheme` round-trip, pre-existing, tracked #133 — does not affect generated assets)
- Coverage includes: CsvDiffEngine, SyncSafetyChecker, DiffReport, CsvToGrid, MindMapHtmlWrapper, FallaciesLocalizationTests, TaxonomyValidationTests, Memo_Back localization, HarvestManager `RetryAsync` contract (#678), Playwright visual tests
- **595 tests pass** (`dotnet test` on `Argumentum.AssetConverter.Tests`, 2026-07-11, .NET 9 — 600 total: 595 pass / 1 fail / 5 skip), 5 skips (GUI/infrastructure), 1 known-fail (OWLSharp `rdf:type`/`inScheme` round-trip, pre-existing, tracked #133 — does not affect generated assets). Zero-warning build (CS compiler + NuGet audit, #587)
- Coverage includes: CsvDiffEngine, SyncSafetyChecker, DiffReport, CsvToGrid, MindMapHtmlWrapper, FallaciesLocalizationTests, TaxonomyValidationTests, Memo_Back localization, HarvestManager `RetryAsync` contract (#678), Virtues mindmap wrapper localization (#738), Playwright visual tests

### Migration Notes

Expand Down
26 changes: 19 additions & 7 deletions RELEASE-NOTES-v0.9.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Argumentum now generates its entire educational card game in **8 languages**:
| فارسی | `fa` | Persian (RTL) | ✅ Complete |
| 中文 | `zh` | CJK | ✅ Complete |

All CSV data (Fallacies, Virtues, Scenarii, Rules) is 100% translated across all 8 languages. The generation pipeline produces localized PDFs and card images for all 8 languages. MindMap SVGs are currently committed for FR/EN/RU/PT; the pipeline is configured for ES/AR/FA/ZH with SVG regeneration pending (see Known Limitations).
All CSV data (Fallacies, Virtues, Scenarii, Rules) is 100% translated across all 8 languages. The generation pipeline produces localized PDFs and card images for all 8 languages. MindMap SVGs (FreeMind/Batik) are committed for **all 8 languages** (PR #565), including RTL (ar/fa) and CJK (zh) rendering.

### 🃏 Generated Assets

Expand All @@ -32,9 +32,9 @@ All CSV data (Fallacies, Virtues, Scenarii, Rules) is 100% translated across all
| Poker PDFs (cards + Print&Play A4) | 8 | 16 |
| Fallacies Web PDFs (A0 poster + A4 + Thumbnails) | 8 | 24 |
| **Total PDFs** | 8 | **64** |
| MindMap SVGs | 4 (FR/EN/RU/PT) | 21 |
| MindMap SVGs | 8 (FR/EN/RU/PT/ES/AR/FA/ZH) | 41 |
| Card Images (PNG) | 8 | ~9,834 |
| OWL Ontology | 1 (FR) | 1 (~5.3 MB) |
| OWL Ontology | 1 (bilingual EN/FR) | 1 (~5.9 MB) |

### 🛠 Pipeline Recovery

Expand All @@ -43,7 +43,7 @@ After a series of regressions (May–September 2025), the entire .NET generation
- **HarvestManager**: Playwright-based card image generation restored with correct timeouts and CSV injection
- **PdfManager**: QuestPDF assembly working with thread-safe serialization
- **MindMapper**: FreeMind + Batik SVG generation automated (including FreePlane GUI)
- **Tests**: 159 automated tests (up from 0; +4 from #465/#28 front/back dissociation)
- **Tests**: 595 automated tests (600 total: 595 pass / 1 known-fail / 5 skip), up from 0 at the start of recovery; zero-warning build

### 📊 Data Quality

Expand All @@ -52,6 +52,16 @@ After a series of regressions (May–September 2025), the entire .NET generation
- **Virtues**: 100% translated (title/description/remark × 4 languages, extended to 8)
- **Scenarii**: 167/167 records fully translated (was 54%)

### 🧠 AIF Argumentation Layer (#498/#499)

The taxonomy is now reconciled against the **ASPIC+ / AIF** framework — each typed fallacy and virtue carries a formal attack semantics:

- **145 fallacies** typed (undercut/RA-node ×87, undermine/I-node ×53, rebut/CA-node ×5), deterministic node map (ASPIC+ Option (a)). P1 reconciliation back-filled the 52 skos-only rows across 7 tranches (93 → 145), 0 token fabricated
- **222 / 223 Virtues** mirrored (#499 Option A "resisted attack"): 206 undercut, 13 undermine, 3 rebut
- **crossLink relational layer** (#763): 8 inter-fallacy verbs (predatesOn, denounces, leverages, allows, opposes, inverts, mirrors, isRelatedTo) — 1081 cells across 844 fallacies (59.9%)
- **OWL 3-layer artefact** (#787): the canonical `argumentum.owl` now serializes skos Walton (70) + crossLink (1985) + AIF attack (145) — freshly regenerated to match prod
- Full methodology in `docs/taxonomy/498-reconciliation-p1-closure.md`; Layer C (~1263 remaining leaves) deferred to a post-tag decision

---

## New Modules
Expand Down Expand Up @@ -89,7 +99,8 @@ Automated visual regression testing for generated assets:
2. **CJK fonts (ZH)**: Requires system-installed CJK fonts for correct rendering in PDFs and card images
3. **DNN site**: Deployment pending (#131/#132) — release coupled with site update (Decision 2)
4. **OWLOntology**: Published in French only — multilingual ontology planned for future release
5. **MindMap SVGs for ES/AR/FA/ZH**: Only FR/EN/RU/PT SVGs are committed (21 files). The pipeline is configured for ES/AR/FA/ZH (`StaticConversions` + `MindMapLocalization` in `AssetConverterConfig.cs`), but SVG regeneration is pending — it requires an attended FreePlane GUI run (`SendKeys.SendWait` desktop automation, skipped by the test suite as "requires interactive session"). Tracked as #458 Track 1a.
5. **MindMap SVGs**: All 8 languages are committed (41 SVGs, PR #565). The generation requires an attended FreePlane GUI run (`SendKeys.SendWait` desktop automation), so SVGs are regenerated on demand rather than in CI.
6. **AIF Layer C**: 145 / 1408 fallacies carry an AIF attack type (the fully-reconciled skos-only subset). The remaining ~1263 leaves have no skos signature and require a generative Walton-mapping pass — out of scope for v0.9.0, tracked for a post-tag decision.

---

Expand Down Expand Up @@ -117,8 +128,9 @@ Automated visual regression testing for generated assets:
## Contributors

- **jsboige** — Project lead, data curation, French source validation
- **Claude (ai-01)** — Pipeline recovery, code review, visual validation, documentation
- **Claude (po-2023)** — Heavy pipeline builds, data quality audits, translation pipeline operations
- **Claude (ai-01)** — Pipeline recovery, code review, visual validation, documentation, ontology integration
- **Claude (po-2023)** — Heavy pipeline builds, data quality audits, DNN readiness, translation pipeline operations
- **Claude (po-2024)** — AIF reconciliation (#498/#499), OWL regeneration (#787), release-adjacent docs

---

Expand Down
132 changes: 132 additions & 0 deletions docs/ontology/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# Argumentum Ontology

**OWL ontologies for the Argumentum fallacy & virtue taxonomy**, reconciled against the [ASPIC+ / AIF (Argument Interchange Format)](http://www.argumentationresearch.org/aif.html) framework. This directory holds the canonical artefacts for publication (#133).

| Artefact | Namespace IRI | Size | Subjects |
|---|---|---:|---:|
| [`argumentum.owl`](argumentum.owl) | `https://www.argumentum.games/argumentum_fallacies.owl#` | ~5.9 MB | 1408 fallacies |
| [`argumentum_virtues.owl`](argumentum_virtues.owl) | `https://www.argumentum.games/argumentum_virtues.owl#` | ~863 KB | 223 virtues |

**Version:** 1.0.0 · **License:** LGPL-3.0 (see root [`LICENSE`](../../LICENSE)) · **Format:** OWL/XML.

---

## 1. What the ontology models

Each fallacy and virtue is published as an OWL **named individual** (`#fallacy` / `#virtue` class hierarchy) with:

- a stable IRI (`https://www.argumentum.games/argumentum_fallacies.owl#<camelCaseName>`);
- **bilingual preferred labels and descriptions** (FR canonical + EN secondary) via `skos:prefLabel` / `rdfs:comment`;
- a **full hierarchy** via `skos:broader` (1407 `broader` assertions in the Fallacies ontology);
- links to the **Walton AIF scheme ontology** and the **relational / attack layers** (below).

### Scope note (honest)
The OWL generator is **bilingual (FR + EN)**. It does **not** carry the 6 other release languages (RU/PT/ES/AR/FA/ZH). The 8-language claim of v0.9.0 applies to the CSV / PDF / SVG assets, **not** to the OWL artefact.

---

## 2. The three relational layers

The ontology serializes three distinct relational layers, each grounded in a different CSV column family:

### Layer 1 — skos Walton mappings (native scheme classification)
Each typed fallacy is mapped to one or more **Walton AIF conflict / inference schemes** via `skos:{broadMatch, closeMatch, narrowMatch, exactMatch, relatedMatch}`. Source columns: `AIF_skosDirectRef`, `AIF_skosExceptionRef`, `AIF_skosOther` (#753).

| Predicate | Count |
|---|---:|
| `skos:broadMatch` | 57 |
| `skos:closeMatch` | 10 |
| `skos:narrowMatch` | 3 |
| **Total** | **70** |

The ontology references **56 distinct AIF scheme classes** from `http://www.arg.dundee.ac.uk/aif#` (Conflict, Inference, Deductive, Analogy, Bias, CauseToEffect, ConflictingGoals, Waste, PositionToKnow, …).

### Layer 2 — crossLink inter-fallacy relations (#763)
Eight **inter-fallacy relational verbs** capture how fallacies relate to each other, emitted as OWL annotation/object properties with symmetric-flag handling. Source columns: `crossLink_*`. Emitted by `OwlGeneratorConfig.cs:242`.

| Verb | Count | Symmetric |
|---|---:|---|
| `predatesOn` | 14 | no |
| `denounces` | 3 | no |
| `leverages` | 403 | no |
| `allows` | 67 | no |
| `opposes` | 51 | yes |
| `inverts` | 83 | yes |
| `mirrors` | 721 | yes |
| `isRelatedTo` | 643 | yes |
| **Total** | **1985** | |

Coverage: 844 fallacies (59.9 %) carry at least one crossLink relation.

### Layer 3 — AIF attack (#498 Fallacies, #499 Virtues)
Each attack-typed fallacy/virtue carries a formal **ASPIC+ attack semantics**: an `attackType` (`undercut` / `undermine` / `rebut`) and the `attackedNode` it defeats (`RA-node` = inference/rule, `I-node` = premise, `CA-node` = conclusion). The node map is **deterministic** (ASPIC+ Option (a), [#707](../../docs/taxonomy/498-reconciliation-p1-closure.md) §4). Emitted by `OwlGeneratorConfig.cs:262-300`.

| attackType | attackedNode | Fallacies | Virtues | Attacks… |
|---|---|---:|---:|---|
| `undercut` | `RA-node` | 87 | 206 | the inference / rule |
| `undermine` | `I-node` | 53 | 13 | the premise |
| `rebut` | `CA-node` | 5 | 3 | the conclusion |
| **Total** | | **145** | **222** | |

Coverage: 145 / 1408 fallacies (10.3 %) — the fully-reconciled skos-only subset (P1 complete, 93 → 145, 0 residual, 0 token fabricated). The remaining ~1263 leaves have no skos signature (Layer C, deferred to a post-v0.9.0 decision).

**Rebut rarity:** relational fallacies (personal attack, genetic fallacy, moving the goalposts) are modelled as `undermine` / `undercut`, not `rebut`, because they reject without presenting an independent counter-conclusion. Rebut is structurally localized to appeal-to-consequences (~3 %).

---

## 3. Coverage summary (regenerated 2026-07-12, master `95b4210b`)

| Metric | Fallacies | Virtues |
|---|---:|---:|
| Named individuals | 1408 | 223 |
| `skos:prefLabel` | 2816 (FR + EN) | — |
| `skos:broader` (hierarchy) | 1407 | — |
| EN literals | 5558 | — |
| FR literals | 4861 | — |
| AIF attack-typed | 145 | 222 |
| crossLink relations | 1985 | — |
| skos Walton mappings | 70 | — |

See [`argumentum-owl-validation-2026-07-12.md`](argumentum-owl-validation-2026-07-12.md) for the layer-by-layer validation report.

---

## 4. Regeneration

The OWL is **regenerable** from the CSV taxonomy via a single-stage entry-point (no harvest / PDF / mindmap):

```bash
dotnet run --project Generation/Converters/Argumentum.AssetConverter/Argumentum.AssetConverter.csproj -- --generate-owl
```

`Program.cs:397` routes `--generate-owl` to `Mode = ConverterMode.OwlGenerator`, which reads the Fallacies + Virtues CSV datasets and emits both OWL files to `Target/<lang>/Ontology/`. The committed artefacts in this directory are the canonical copies staged from that run.

---

## 5. Known limitations

- **Bilingual only** (FR + EN) — see §1 scope note.
- **Layer C not covered** — ~1263 fallacy leaves without a skos signature are not AIF-typed (generative pass deferred). See the P1 closure report.
- **OWLSharp round-trip bug** (#133): the `rdf:type` / `skos:inScheme` assertions are dropped by the OWL/XML round-trip. Readers are scoped on the surviving annotations (`prefLabel`, `broader`, the 3 relational layers). This does not affect the generated artefact.
- **`versionInfo` = 1.0.0** — bump to the v0.9.0 release tag at publication time.

---

## 6. Publication procedure (staged — #133)

The artefact is **publication-ready**. The actual publish requires infra / `jsboige` and is tracked in #133:

1. Final regen from the tagged master (`--generate-owl`), bump `versionInfo` to the release tag.
2. Decide the canonical hosting IRIs (`https://www.argumentum.games/argumentum_*.owl#` is the current `ontologyIRI`); set up the PURL / content-negotiation redirect if a persistent PURL is desired.
3. Upload the two `.owl` files to the chosen host; verify the IRIs resolve.
4. Add the download link to the root `README.md` (the v0.9.0 release notes already reference the ontology package).
5. Cross-link from the Walton AIF portal / LOV if desired.

---

## 7. Provenance

- **Generated by:** `Argumentum.AssetConverter` — `Ontology/OwlGeneratorConfig.cs` (Fallacies) and `Ontology/VirtueOwlGeneratorConfig.cs` (Virtues), using the [OWLSharp](https://github.com/mdesalvo/owlsharp) serializer.
- **Source data:** `Cards/Fallacies/Argumentum Fallacies - Taxonomy.csv` (1408 rows × 104 cols) and `Cards/Fallacies/Argumentum Virtues - Taxonomy.csv` (223 rows × 81 cols).
- **Methodology:** AIF reconciliation tier-par-confiance documented in [`docs/taxonomy/498-reconciliation-p1-closure.md`](../taxonomy/498-reconciliation-p1-closure.md) (P1 skos-only back-fill, 7 tranches, 0 token fabricated, deterministic ASPIC+ node map #707 §4).
- **Last regeneration:** 2026-07-12 from master `95b4210b` (#787).
Loading