Skip to content

docs(ontology): AIF attack-graph export — typed bipartite edges + relations (read-only, 0 write) - #828

Merged
jsboige merged 1 commit into
masterfrom
docs/aif-attack-graph-export
Jul 19, 2026
Merged

docs(ontology): AIF attack-graph export — typed bipartite edges + relations (read-only, 0 write)#828
jsboige merged 1 commit into
masterfrom
docs/aif-attack-graph-export

Conversation

@jsboige

@jsboige jsboige commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

What

Read-only export of the existing AIF modelling into consumable artefacts for CoursIA (ICT #7289, uplift #5721/#6409) and Argumentum Layer C v1.0 (#790). Dispatched by ai-01 (msg-eltaoz) as a non-blocking, post-tag-safe capacity fill while the release v0.9.0 is gated.

0 new modelling. 0 write to sources (CSV / argumentum.owl). Python stdlib script, reproducible.

Honest verdict (no fabrication)

The AIF attack graph is BIPARTITE — each of the 145 fully-modeled fallacies is an attacker targeting an abstract AIF node-TYPE (RA-node / I-node / CA-node), NOT another fallacy. There is no inter-fallacy attack adjacency ("X attacks Y") in the data:

  • AIF_attackedNode encodes the node-type attacked, not a target PK.
  • 145/145 respect the attackType→node-type axiom (0 violations): undercut→RA-node (87), undermine→I-node (53), rebut→CA-node (5).
  • The OWL confirms independently (aifAttackType Literal + aifAttackedNode IRI on each fallacy individual).

A separate inter-fallacy graph does exist in the OWL (isRelatedTo, mirrors, …, 1734 edges) but those are generic semantic relations, not typed AIF attack-edges. Exported and labelled separately.

Artefacts (docs/ontology/aif-export/)

File Rows Content
aif-attack-edges.csv 145 Typed AIF attack graph, PK-keyed (primary)
aif-canonical-concepts.csv 60 AIF canonical concepts referenced via skos
taxonomy-tree-edges.csv 1408 Full taxonomy tree (backbone)
aif-owl-attack-edges.csv 142 Attack graph from OWL (cross-view)
aif-relations-graph.csv 1734 Inter-fallacy relations (NON-AIF)
README.md Column→adjacency mapping + verdict + schemas

tools/aif-attack-graph-export.py — reproducible (python tools/aif-attack-graph-export.py, stdlib only, ~3s, idempotent, 0 write to sources).

CSV ↔ OWL granularity note

The CSV (145, row-level PK-keyed) and OWL (142, fallacy-individual camelCase IRI) attack-edges are not a bijective cross-check — different granularities, no PK→IRI join key in the CSV. Both internally consistent (0 axiom violations each); attackType distribution closely aligned. Documented in the README + investigation doc.

Post-tag-safe

Docs + generated CSVs only. No source change. No release impact. Gate (b)/(d) untouched.

Refs

🤖 Generated with Claude Code

…ations (read-only, 0 write)

Export the EXISTING AIF modelling (dispatch ai-01 msg-eltaoz) into consumable
artefacts for CoursIA ICT #7289 + Layer C #790. Read-only on CSV/OWL, post-tag-safe.

Honest verdict (no fabrication): the AIF attack graph is BIPARTITE — each of the
145 fully-modeled fallacies is an attacker targeting an abstract AIF node-TYPE
(RA/I/CA-node), NOT another fallacy. There is no inter-fallacy attack adjacency
in the data; AIF_attackedNode encodes node-type, not a target PK (145/145 axiom,
0 violations). A separate inter-fallacy graph exists in the OWL (isRelatedTo,
mirrors, etc., 1734 edges) but those are generic semantic relations, not typed
AIF attack-edges — exported and labelled separately.

Artefacts (docs/ontology/aif-export/):
- aif-attack-edges.csv       145 bipartite attack-edges (CSV, PK-keyed, primary)
- aif-canonical-concepts.csv 60 AIF canonical concepts (skos refs)
- taxonomy-tree-edges.csv    1408 hierarchical tree edges
- aif-owl-attack-edges.csv   142 attack-edges from OWL (cross-view, individual-keyed)
- aif-relations-graph.csv    1734 inter-fallacy relations (NON-AIF)
- README.md                  column-to-adjacency mapping + verdict

tools/aif-attack-graph-export.py: reproducible (Python stdlib, ~3s, 0 write to sources).

Refs: dispatch ai-01 msg-eltaoz, AIF tranches 1-1d (#498/#753/#769/#776/#779),
CoursIA ICT #7289, Layer C #790.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw] — docs(ontology): AIF attack-graph export — LGTM deep (byte-verified firsthand)

Typed bipartite edges PROVEN (quoted-field-aware parse of docs/ontology/aif-export/aif-attack-edges.csv, 13 cols, 145 attack-edge rows):

  • Distribution EXACT: undercut→RA-node 87, undermine→I-node 53, rebut→CA-node 5 (sums to 145, matches body claim 87/53/5)
  • 145/145 node_type_axiom_ok ✓ — every edge's attacked-node type conforms to its attack-type axiom
  • Reed-Norman AIF semantics sound: undercut attacks a rule (RA-node), undermine attacks a premise/conclusion content (I-node), rebut attacks a counter-conclusion (CA-node) — textbook Reed-Norman/Walton instantiation, no schema violations

Read-source → write-export pattern (not source mutation) verified firsthand against tools/aif-attack-graph-export.py:

  • Reads canonical source CSVs (utf-8-sig, read-only) — Fallacies/Rules/Virtues taxonomy CSVs untouched (8 PR files ALL added, 0 modifications to source data)
  • Writes derived export artifacts to docs/ontology/aif-export/ (OUT_DIR, os.makedirs(..., exist_ok=True) — by-design output)
  • 5 export files all row-count verified: aif-attack-edges 145 ✓, aif-relations-graph 1734 ✓, taxonomy-tree-edges 1408 ✓, aif-canonical-concepts 142 ✓, aif-owl-attack-edges 60 ✓
  • Investigation doc docs/investigations/2026-07-19-aif-attack-graph-export.md + export README both additive

0 secret / 0 PII / 0 machine-path leak across the 6 export+script+doc files.

Nit (non-blocking, wording) — body/PR title says "read-only, 0 write"; firsthand the script does write — to the export OUT_DIR (by design). The intent ("0 write to source taxonomy data") is accurate and verified (source CSVs untouched); suggest rewording "0 source-mutation, export-write by design" to avoid the literal contradiction for future readers.

Verdict: mergeable — delivers a sound typed-bipartite AIF attack-edge export, derived read-only from canonical sources, axiom-conformant 145/145, Reed-Norman distribution exact. The "0 write" prose is a wording nit, not a defect.

@jsboige
jsboige merged commit 900cee2 into master Jul 19, 2026
3 checks passed
@jsboige
jsboige deleted the docs/aif-attack-graph-export branch July 19, 2026 11:13
jsboige pushed a commit that referenced this pull request Jul 19, 2026
…es↔Virtues vocabularies disjoint)

Empirical finding (read-only, no fabrication): Fallacies (#828) and Virtues
(#829) reference DISJOINT AIF vocabularies (intersection = 0).
- Fallacies: 60 concepts, "<Topic>_<Type>" suffix (_Inference/_Conflict/_Scheme)
- Virtues: 14 concepts, "Argument from <Topic>" readable form

Both conventions co-exist as declared classes in the source AIF ontology
(Ontology/Resources/AIF.owl: 125 _Type forms + 15 "Argument from X" forms).
A lexical alignment is inferrable in several cases but NO materialised mapping
table exists in the source data. The export therefore does NOT unify the two
vocabularies — documented to prevent the false assumption that the two concept
spaces are pre-aligned. A consumer needing a unified AIF space must build that
mapping explicitly (modelling decision, not export).

Same lane (Cards/AIF), post-tag-safe, 0 write to sources. Amend to PR #829.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jsboige pushed a commit that referenced this pull request Jul 19, 2026
…bility)

The ontology README (§2 Layer 3) documents the AIF attack-typed counts
(Fallacies 145, Virtues 222) but did not reference the consumable CSV exports
in aif-export/ added by #828 + #829. Add a short pointer in §3 so downstream
consumers (CoursIA ICT #7289, Layer C #790) can discover the bipartite
attack-edges, good-tenor edges, canonical concepts, taxonomy tree, and
inter-fallacy relations CSVs + the reproducible export scripts.

Same lane (Cards/AIF docs), post-tag-safe, 0 write to sources. Amend to PR #829.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 21, 2026
…B modelling, read-only) (#829)

* docs(ontology): AIF Virtues export — companion to #828 (double V-A/V-B modelling, read-only)

Extends the AIF export (#828, Fallacies) to the Virtues Taxonomy. Companion to
aif-attack-graph-export.py. Read-only on sources, post-tag-safe.

Honest verdict: the 222 virtues carry a DOUBLE AIF modelling of the same
population — two complementary views, never merged:
- V-A (CSV): 222 bipartite attack-edges (virtue -> node-TYPE RA/I/CA), 0 axiom
  violations (undercut->RA 206, undermine->I 13, rebut->CA 3).
- V-B (OWL aif#goodTenorOf): 222 virtue -> canonical argument-scheme edges
  (14 schemes: Rule 50, Commitment 40, Bias 27, Sign 26, ...).
Same 14-scheme vocabulary, different predicates. Not redundant, not contradictory.

Contrast with Fallacies (#828): Fallacies carry ONLY the attack-graph (V-A), no
goodTenorOf. Virtues are the dual (BOTH views). Do NOT fuse Fallacies-attacks +
Virtues-attacks — Virtues-attacks encode counter-arguments to fallacies.

Artefacts (docs/ontology/aif-export/):
- aif-virtues-attack-edges.csv       222 V-A bipartite attack-edges (PK-keyed)
- aif-virtues-good-tenor.csv         222 V-B virtue->scheme edges
- aif-virtues-canonical-concepts.csv 14 AIF schemes (skos refs)
- aif-virtues-schemes.csv            14 schemes distribution
- README.md                          + Virtues companion section

tools/aif-virtues-export.py: reproducible (Python stdlib, ~1s, 0 write to sources).

Refs: #828 (Fallacies AIF export), CoursIA ICT #7289, Layer C #790.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(ontology): AIF export — add cross-family coherence note (Fallacies↔Virtues vocabularies disjoint)

Empirical finding (read-only, no fabrication): Fallacies (#828) and Virtues
(#829) reference DISJOINT AIF vocabularies (intersection = 0).
- Fallacies: 60 concepts, "<Topic>_<Type>" suffix (_Inference/_Conflict/_Scheme)
- Virtues: 14 concepts, "Argument from <Topic>" readable form

Both conventions co-exist as declared classes in the source AIF ontology
(Ontology/Resources/AIF.owl: 125 _Type forms + 15 "Argument from X" forms).
A lexical alignment is inferrable in several cases but NO materialised mapping
table exists in the source data. The export therefore does NOT unify the two
vocabularies — documented to prevent the false assumption that the two concept
spaces are pre-aligned. A consumer needing a unified AIF space must build that
mapping explicitly (modelling decision, not export).

Same lane (Cards/AIF), post-tag-safe, 0 write to sources. Amend to PR #829.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(ontology): link aif-export/ CSVs from ontology README (discoverability)

The ontology README (§2 Layer 3) documents the AIF attack-typed counts
(Fallacies 145, Virtues 222) but did not reference the consumable CSV exports
in aif-export/ added by #828 + #829. Add a short pointer in §3 so downstream
consumers (CoursIA ICT #7289, Layer C #790) can discover the bipartite
attack-edges, good-tenor edges, canonical concepts, taxonomy tree, and
inter-fallacy relations CSVs + the reproducible export scripts.

Same lane (Cards/AIF docs), post-tag-safe, 0 write to sources. Amend to PR #829.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(ontology): reconcile aif-relations-graph count (1734 distinct vs README 1985 raw)

Resolves the crossLink delta tracked at tick 49 (README §2 Layer 2 = 1985 vs
aif-relations-graph.csv = 1734). Read-only investigation finding — NOT a bug,
a counting-methodology difference:

- README 1985 = RAW emitted assertions (pre-dedup).
- Raw OWL parse = 1977 (= README 1985 minus 8 schema self-definitions, one
  per verb across the 8 relation verbs).
- 1977 raw - 1734 distinct = 243 EXACT-duplicate triples (OWLSharp serializer
  idempotency quirk, not a data issue). The dedup is correct for a consumer.
- Symmetric verbs (mirrors/isRelatedTo/inverts/opposes) are emitted
  bidirectionally as two distinct triples (A,p,B)+(B,p,A) — both kept (not
  duplicates).

Added a count-reconciliation note to the aif-relations-graph.csv section of
the export README so consumers understand the 1734 vs 1985 difference.

Same lane (Cards/AIF docs), post-tag-safe, 0 write to sources. Amend to PR #829.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

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 21, 2026
…al AIF target (#833 review)

Addresses NanoClaw's structural-review nit on the #7289 Phase-B consumption
contract: the new "Typed edges" bullet said `rebut` "attacks the conclusion,
CA-node", conflating the canonical semantic target (an I-node) with the
export's node-type marker (`CA-node`).

Verified against aif-attack-edges.csv: the export genuinely emits
`rebut → CA-node` (5 rows, node_type_axiom_ok=1), consistent with the
already-merged verdict table (#828). Reworded the bullet to state that `CA`
here is the export's *conflicting-application* mode-marker (keeping the three
attack types on distinct node-types = separable spectral channels), NOT the
canonical AIF target — in canonical AIF/ASPIC+ a rebuttal targets the
conclusion I-node. Consumer should read it as a type channel, not a node
instance.

Additive docs-only clarification; CSVs unchanged, 0 data change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jsboige added a commit that referenced this pull request Jul 21, 2026
…ract (#7289 Phase-B) (#833)

* docs(ontology): AIF export — directed/typed spectral consumption contract (#7289 Phase-B)

Bridge note (tertiary deliverable of ai-01 dispatch #497/#498/bridge
deep-queue) for CoursIA ICT #7289 strate-6 Phase-B consumers, and the
nit raised in notebook #7341 review: the AIF attack graph is DIRECTED
(attacker -> abstract node-TYPE, bipartite) and TYPED
(undercut/undermine/rebut). A spectral/Laplacian consumer must preserve
both, or collapse the mode-of-attack signal the analysis wants to surface.

- Directed, not symmetric: standard L_sym on an undirected projection
  treats attacker and attacked node-type as interchangeable (they are not;
  direction is the semantics).
- Typed edges carry distinct modes: do not binarise undercut/undermine/rebut
  (RA-node / I-node / CA-node = three argumentative operations).
- Complementary graphs have different symmetries: aif-relations-graph.csv
  (bidirectional mirrors/isRelatedTo) vs aif-attack-edges.csv (typed
  directed) -- pick the graph matching the question, do not merge.
- Recommended (consumer choice, not exported): directed / magnetic hermitian
  Laplacian, or type-weighted / multi-channel edges.

Consumption contract only -- CSVs unchanged, 0 data change, 0 fabrication.
Read-only docs lane (same as #828/#829), post-tag-safe. Verdict QA = ai-01.

Refs: dispatch ai-01 -> po-2024 (msg-20260721T174854-ucdwi7).

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

* docs(ontology): clarify rebut→CA is export's mode-marker, not canonical AIF target (#833 review)

Addresses NanoClaw's structural-review nit on the #7289 Phase-B consumption
contract: the new "Typed edges" bullet said `rebut` "attacks the conclusion,
CA-node", conflating the canonical semantic target (an I-node) with the
export's node-type marker (`CA-node`).

Verified against aif-attack-edges.csv: the export genuinely emits
`rebut → CA-node` (5 rows, node_type_axiom_ok=1), consistent with the
already-merged verdict table (#828). Reworded the bullet to state that `CA`
here is the export's *conflicting-application* mode-marker (keeping the three
attack types on distinct node-types = separable spectral channels), NOT the
canonical AIF target — in canonical AIF/ASPIC+ a rebuttal targets the
conclusion I-node. Consumer should read it as a type channel, not a node
instance.

Additive docs-only clarification; CSVs unchanged, 0 data change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

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