Skip to content

docs(taxonomy): #498 P1 addendum — audit the 18 ground-truth anchors - #770

Merged
jsboige merged 1 commit into
masterfrom
docs/498-p1-anchor-audit
Jul 11, 2026
Merged

docs(taxonomy): #498 P1 addendum — audit the 18 ground-truth anchors#770
jsboige merged 1 commit into
masterfrom
docs/498-p1-anchor-audit

Conversation

@jsboige

@jsboige jsboige commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary

#498 P1 addendum — audit the 18 ground-truth anchors that the reconciliation rests on. Read-only, docs+tool only, 0 write prod CSV. Builds on the now-merged #769 (P1 tranche-1, master daa71763).

Every P1 attackType derivation is anchored on the 18 fully-modeled rows (the only rows carrying both a vetted skos signature and an attack type — the ground truth "this skos → this attackType"). The method is only as sound as those 18. This PR audits them by hand (Walton "what does the CQ defeat") and cross-checks against code=truth, before more rows are derived.

Result — anchor foundation validated

check result
layer census (code=truth) vs #768 fully-modeled 18 / attack-only 75 / skos-only 52 — exact match
node-map #707§4a (undercut→RA / undermine→I / rebut→CA) 18/18 clean, 0 violation
skos↔attackType coherence (hand-Walton) 16 CLEAN · 2 SOFT (defendable) · 0 outright error

The 14 tranche-1 derivations (#769) all rest on CLEAN anchors; the only SOFT dependency is pk1281←pk1313 (same family, same rebut nucleus — consistent).

2 SOFT anchors (choices, not errors)

  • pk1313 Évasion [rebut] — evasion attacks neither a premise nor a specific inference; modeled as a global dialogue-level conflict (Dialogue_Scheme). Residual choice, uniform for the "saboter le débat" family. Defendable, not canonical rebut-as-counter-conclusion.
  • pk1361 Procès en incohérence [rebut] — a genuine rebut-vs-undercut/undermine judgment call. It is the anchor 777→rebut leans on (§5) → 777 must be tranched by desc_fr + co-token, not mechanically.

3 findings that harden the method (beyond validation)

  1. Suffix _Conflict/_Inference does NOT determine attackType — in-set proof. pk804 PropertyNotExistant_Conflictundercut (the arbitrary definition corrupts the warrant), while other _Conflict tokens → undermine. This is the counter-example inside the 18 that grounds the "suffix-prior unreliable" claim (§2/§5), previously argued only from 677/705.
  2. Slippery-slope leans undercut — in-set anchor. pk858 VerbalSlipperySlope_Inferenceundercut grounds the 677/705 counter-example (previously CQ-semantic only).
  3. CircumstantialAdHominem_Inference is non-decisive (in both 1361 rebut and 1371 undermine) → 777/633 tie-break must read the co-token + desc_fr, never a shared token alone.

Deliverables (read-only vs prod taxonomy)

  • docs/taxonomy/498-reconciliation-p1.md — new §2bis (audit) + TL;DR point 5.
  • docs/taxonomy/498-audit-18-anchors.csv — 10 cols, 18 rows, BOM+CRLF (factual cols read from master; verdict+note authored).
  • tools/498-audit-anchors.py — reproducible read-only audit (re-derives the 18 from prod, checks node-map, cross-verifies the audit CSV). RESULT: OK.

Discipline

🤖 Worker po-2024 — P1 anchor audit (foundation-hardening for the reconciliation track).

…(foundation of the derivations)

Adds §2bis to the P1 reconciliation proposition (#769): a read-only audit of
the 18 fully-modeled anchors on which every P1 attackType derivation rests. If
an anchor is mis-typed, the error propagates into every derived tranche and,
eventually, prod — so the anchor set is validated before more rows are derived.

Audit (hand-Walton "what does the CQ defeat" + code=truth cross-check):
  - layer census re-confirmed vs #768: fully-modeled 18 / attack-only 75 / skos-only 52.
  - node-map #707§4a (undercut->RA / undermine->I / rebut->CA): 18/18 clean, 0 violation.
  - skos<->attackType coherence: 16 CLEAN, 2 SOFT (defendable), 0 outright error.
    Foundation VALIDATED — the 14 tranche-1 derivations all rest on CLEAN anchors;
    the only SOFT dependency is pk1281<-pk1313 (same family, same rebut nucleus).

Two SOFT anchors flagged (choices, not errors): pk1313 Evasion (rebut as global
dialogue-level conflict) and pk1361 Proces en incoherence (rebut vs undercut/
undermine judgment call — it is the anchor 777->rebut leans on, so 777 must be
tranched by desc_fr + co-token, not mechanically).

Three findings that HARDEN the method (beyond validation):
  1. suffix _Conflict/_Inference does NOT determine attackType — in-set proof:
     pk804 PropertyNotExistant_Conflict -> undercut (vs _Conflict->undermine
     elsewhere). Empirically grounds the "suffix-prior unreliable" claim (§2/§5),
     previously argued only from 677/705.
  2. slippery-slope leans undercut — in-set anchor pk858 VerbalSlipperySlope_
     Inference -> undercut grounds the 677/705 counter-example (previously CQ-
     semantic only).
  3. CircumstantialAdHominem_Inference is non-decisive (in both 1361 rebut and
     1371 undermine) -> 777/633 tie-break must read co-token + desc_fr.

Deliverables (read-only vs prod taxonomy — 0 CSV write in the diff):
  - docs/taxonomy/498-reconciliation-p1.md — §2bis audit + TL;DR point 5.
  - docs/taxonomy/498-audit-18-anchors.csv — 10 cols, 18 rows, BOM+CRLF
    (factual cols read from master e748735; verdict+note authored).
  - tools/498-audit-anchors.py — reproducible read-only audit (re-derives the 18
    from prod, checks node-map, cross-verifies the audit CSV). RESULT: OK.

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@jsboige
jsboige merged commit c69c04c into master Jul 11, 2026
3 checks passed
@jsboige
jsboige deleted the docs/498-p1-anchor-audit branch July 11, 2026 03:01
jsboige added a commit that referenced this pull request Jul 11, 2026
…PREC-TIE + 5 SUFFIX-ONLY, gated dry-run) (#773)

Back-fill proposition for 7 of the 52 skos-only rows in the two-layer AIF
reconciliation (#498 P1), continuing tranche-1 (#769/#771, 14 PRECEDENT rows
now in prod). Docs + gated dry-run apply script only — 0 prod CSV write.

Tranche-1b = the rows with NO exact-token precedent among the 18 fully-modeled
anchors (audited CLEAN #770):
- 2 PREC-TIE (777 Inconsistance, 633 Relation infondée): tokens vote for
  divergent attackTypes; arbitrated by co-token + desc_fr + family (tie-break
  rule hardened by the #770 audit — never a shared/divergent token alone).
- 5 SUFFIX-ONLY (337 Appel à la terreur, 432 Engagement, 356 Manipulation
  mentale, 1280 Obstruction, 1360 Ad hominem): modeled per-row from each
  fallacy's OWN Walton scheme + desc_fr. The suffix prior
  (_Conflict/_Inference→undermine) is PROSCRIBED (in-set disproof pk804
  _Conflict→undercut, #770).

Distribution: 4 undermine / 2 undercut / 1 rebut. NODE is the deterministic
ASPIC+ map (#707§4 Option a): undercut→RA-node, undermine→I-node, rebut→CA-node.
No AIF token fabricated (#677) — we TYPE rows already carrying a vetted skos.

Files:
- docs/taxonomy/498-reconciliation-p1b.md — proposition (arbitrage + per-row)
- docs/taxonomy/498-reconciliation-p1b-annotations.csv — machine-readable source
- tools/498-p1b-apply.py — byte-exact cell-fill, GATED (--write held for ai-01)

Dry-run (master f34ac77, post-#771): 107 → 114 attack-typed, 0 byte-preservation
mismatch, 1409×104, CRLF+BOM preserved, +102 B. Serialization gated on ai-01.

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 11, 2026
…FIX-ONLY, famille Erreur de raisonnement, gated) (#775)

Back-fill proposal for the 2 AIF attack columns (AIF_attackType /
AIF_attackedNode) on the whole "Erreur de raisonnement" family — 7 skos-only
rows, all SUFFIX-ONLY (no exact-token precedent among the 18 fully-modeled
anchors, audited CLEAN #770).

Rows: 696 Erreur de raisonnement (parente), 697 Causalite douteuse, 705 Pente
glissante, 719 Effet cigogne, 726 Composition fautive, 758 Deduction invalide,
759 Conclusion hative.

Distribution 7 undercut / 0 undermine / 0 rebut -> all RA-node. The uniformity
is the expected signature of a reasoning-error family (the defect is in the
INFERENTIAL step), coherence-checked against in-set anchors 707 CauseToEffect /
727 ModusPonens / 858 VerbalSlipperySlope (all undercut) — NOT a suffix default
(suffix prior proscribed, in-set disproof pk804 _Conflict->undercut). Each row
modeled per-row from its OWN Walton scheme + desc_fr; 2 nuances flagged MED with
explicit alternatives (696 vs undermine-if-premises; 759 vs undermine-if-
insufficient-evidence), 5 HIGH (697/705/719/726/758).

Docs + gated dry-run apply script only — 0 prod CSV write in this diff.
--write held for ai-01 relay (pilote GO #498). Dry-run: 107 -> 114 attack-typed,
0 byte-preservation mismatch, 1409x104, CRLF+BOM preserved, +105 B. Baseline read
dynamically (write-driven, not merge-driven; targets disjoint from tranche-1's 14
and tranche-1b's 7).

Files:
- docs/taxonomy/498-reconciliation-p1c.md — proposition (per-row + uniformity rationale)
- docs/taxonomy/498-reconciliation-p1c-annotations.csv — machine-readable source (12 cols, node/type 7/7)
- tools/498-p1c-apply.py — byte-exact cell-fill, re-verifies map vs annotation CSV, gated --write

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 11, 2026
…NLY, famille Erreur de raisonnement) attack 114->121 (#779)

Prod serialization of tranche-1c (proposition #775, merged 3d6dcf3). Fills the
2 AIF attack columns (AIF_attackType / AIF_attackedNode) for the 7 skos-only
rows of the whole "Erreur de raisonnement" family — all typed undercut/RA-node.

Rows: 696 Erreur de raisonnement, 697 Causalite douteuse, 705 Pente glissante,
719, 726, 758, 759 (all SUFFIX-ONLY; family signature verified in-set via
707/727/858, NOT a suffix default — suffix prior proscribed, in-set disproof
pk804 _Conflict->undercut, #770).

attack-typed 114 -> 121, fully-modeled 39 -> 46. Executed via
`python tools/498-p1c-apply.py --write` (flow #753/#760, ai-01 GO
msg-20260711T110157-8c8wnh, GO scoped tranche-1c only).

Byte-exact verified 2x:
- script self-proof (load-bearing re-verify P1C_MAP vs annotation CSV 7/7,
  pre-state targets empty + carry skos, only ATI/ANI of the 7 PK may differ):
  0 mismatch, +105 B, 1409x104, CRLF+BOM preserved.
- independent backup-vs-prod cell-by-cell (tmp/Fallacies-backup-pre-p1c.csv):
  exactly 14 cells changed (7 rows x 2 cols), changed PKs == {696,697,705,719,
  726,758,759}, 0 stray (nothing outside AIF attack cols / target PKs), all
  empty->value, node/type 7/7 consistent, delta +105 B, PASS.

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 11, 2026
…FIX-ONLY, famille Erreur mathematique, gated) (#778)

Back-fill proposal for the 2 AIF attack columns (AIF_attackType /
AIF_attackedNode) on the whole "Erreur mathematique" family — 4 skos-only rows,
all SUFFIX-ONLY (no exact-token precedent among the fully-modeled set, checked
against the enlarged 39-row set: precedent_votes={} for all four).

Rows: 595 Generalisation abusive, 614 Sophisme de l'accident, 632 Interpretation
quantitative erronee, 677 Pente glissante.

Distribution 4 undercut / 0 undermine / 0 rebut -> all RA-node. This is the 2nd
inference-flaw family (after Erreur de raisonnement, tranche-1c): the defect is
structurally the inductive/deductive/quantitative INFERENTIAL step, coherence-
checked against in-set anchor 858 VerbalSlipperySlope (pk677's genus, undercut,
audit #770) and the ASPIC+ exception=undercut principle (pk614, textbook
undercutter) — NOT a suffix default (suffix prior proscribed, in-set disproof
pk804 _Conflict->undercut). Each row modeled per-row from its OWN Walton scheme +
desc_fr; 1 nuance flagged MED with an explicit alternative (632 vs undermine-if-
false-datum), 3 HIGH (595/614/677). Transparency (§3): the 20 remaining SUFFIX-
ONLY are NOT inference-uniform (Faux dilemme 814 -> undermine, misrepresented
facts 888 -> undermine) — the method discriminates, it does not default to
undercut.

Docs + gated dry-run apply script only — 0 prod CSV write in this diff.
--write held for ai-01 relay (pilote GO #498). Dry-run: 107 -> 111 attack-typed,
0 byte-preservation mismatch, 1409x104, CRLF+BOM preserved, +60 B. Baseline read
dynamically (write-driven, not merge-driven; targets disjoint from tranche-1's 14,
tranche-1b's 7 and tranche-1c's 7).

Files:
- docs/taxonomy/498-reconciliation-p1d.md — proposition (per-row + uniformity rationale §3)
- docs/taxonomy/498-reconciliation-p1d-annotations.csv — machine-readable source (12 cols, node/type 4/4)
- tools/498-p1d-apply.py — byte-exact cell-fill, re-verifies map vs annotation CSV, gated --write

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 12, 2026
…45) + P1 closure doc (#787)

Regenerate docs/ontology/argumentum.owl from master 474607c via the
--generate-owl entry-point (single-stage, 0 harvest/PDF/mindmap). The committed
OWL was stale (pre-P1): its AIF attack layer counted 93 annotation assertions
while prod CSV had advanced to 145 via the #498 P1 reconciliation.

3-layer validation (argumentum-owl-validation-2026-07-12.md):
  - Layer 1 skos Walton: 70 mappings (stable, +0)
  - Layer 2 crossLink #763: 1985 relational verbs (stable, +0)
  - Layer 3 AIF attack #498: 93 -> 145 (+52) == CSV prod attack-typed total PASS
Distribution reflected: 87 undercut/RA-node, 53 undermine/I-node, 5 rebut/CA-node.
0 node/type inconsistency in prod (deterministic ASPIC+ Option a, #707 section 4).

Diff scope verified AIF-only: 530 insertions / 10 deletions, every added line an
<AnnotationAssertion> for aifAttackType/aifAttackedNode. skos + crossLink + concept
declarations + multilingual labels byte-stable. argumentum_virtues.owl regenerated
byte-identical (not re-committed).

Also adds docs/taxonomy/498-reconciliation-p1-closure.md — the P1 closure report:
52 skos-only back-filled (14 PRECEDENT + 2 PREC-TIE + 36 SUFFIX-ONLY), tiering
methodology, 7-tranche serialization record (93->145), defect-nature modeling,
same-token divergence principle (pk808/pk33, pk888/pk2), anchor audit #770
foundation (16 CLEAN/2 SOFT). Feeds release notes + #133.

0 write prod CSV (--generate-owl reads CSV, emits OWL; Cards/ untouched). Layer C
(~750 leaves, generative pass) = jsboige decision, out of scope, not started.

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 12, 2026
… + 595 tests) + #133 OWL README (#789)

Refresh the v0.9.0 release docs to reflect the late-cycle AIF argumentation
work (#498/#499, #763, #787) and the current test/mindmap reality. The existing
CHANGELOG.md and RELEASE-NOTES-v0.9.0.md were frozen mid-June and missed the
July AIF reconciliation wave.

CHANGELOG.md (root):
  - New section "Added — AIF Argumentation Layer (#498 Fallacies, #499 Virtues)"
    documenting: 145/1408 fallacies attack-typed (87 undercut/RA, 53 undermine/I,
    5 rebut/CA), P1 skos-only reconciliation (93->145, 7 tranches, 0 fabricated),
    crossLink #763 (8 verbs, 1081 cells, 844 rows 59.9%), Virtues mirror (222/223),
    anchor audit #770 (16 CLEAN/2 SOFT), Layer C deferred.
  - OWL section updated: 3 relational layers now serialized in argumentum.owl
    (#787 regen, AIF 93->145), freshly aligned to prod.
  - Test count corrected 578 -> 595 (600 total, zero-warning build, 2026-07-11).

RELEASE-NOTES-v0.9.0.md:
  - New "AIF Argumentation Layer (#498/#499)" highlight section.
  - Assets table: mindmaps 4-lang/21 -> 8-lang/41 (PR #565 closed); OWL
    FR-only -> bilingual EN/FR ~5.9 MB.
  - Tests 159 -> 595.
  - Known Limitations: mindmap 8-lang CLOSED (regen-on-demand); add AIF Layer C
    note (~1263 leaves deferred).
  - Contributors: add po-2024 (AIF/OWL/release docs).
  - Release date clarifies tag pending jsboige visual GO (week of 2026-07-13).

docs/ontology/README.md (net-new, #133):
  - Publication README for the OWL artefacts: 2 ontologies (Fallacies 5.9 MB /
    Virtues 863 KB), namespace IRIs, LGPL-3.0 license.
  - Documents the 3 relational layers with exact counts (skos 70, crossLink 1985,
    AIF attack 145 Fallacies / 222 Virtues), the deterministic ASPIC+ node map,
    and rebut rarity.
  - Regeneration procedure (--generate-owl), known limitations (bilingual FR+EN,
    Layer C deferred, OWLSharp round-trip #133), publication procedure (staged,
    requires infra/jsboige), provenance.

Doc-only (0 write prod CSV, Cards/ untouched). Lane: release-adjacent docs
(distinct from po-2023 visual-validation dossier). Verdict QA = ai-01.

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 22, 2026
…read-only) — MEASURE not verdict (#850)

Acompte compute du dispatch ai-01 (msg-lool0s, bascule po-2024 → audit #847).
Calcule par nœud parent les couches (a)+(b) du method doc
aif-structural-audit-method.md §4, sur 145 fully-modeled + projection 145+8
clusters Layer-C. (c) DEFER (non-instrumenté).

=== Instrument (opérationnel, code=truth) ===
(a) attack-type heterogeneity : Shannon entropy normalisé [0,1] de la
    distribution undercut/undermine/rebut, par family/sub-family/sub-sub.
    a_high = H_norm >= 0.5.
(b) fail-loud rate : fraction de leaves SANS token _Inference natif dans
    skosDirectRef OU skosExceptionRef (prod) / colonnes schème annotation
    (clusters). b_high = >= 0.5.
(c) DEFER : reference-reachability + label-distortion pas instrumentés.

=== HEADLINE ===
145-only : 87uc/53um/5rb | native-scheme 34.5% | fail-loud 65.5% | entropy 0.720
projected (145+46 cluster leaves=191) : 107/72/12 | native 41.9% | fail-loud
58.1% | entropy 0.788

=== Findings (nombres, pas verdict) ===
1. (b) DOMINE : matériel de base matériellement résistant (65.5% fail-loud) →
   hétérogénéité family-level majoritairement axis-B (matériau), pas axis-A
   (regroupement). Quantifie « changes at the margin ».
2. LE CHANTIER CONVERTIT B→A : plier les 8 clusters native-rich fait passer
   Obstruction (b 0.67→0.49) ET Erreur mathématique (b 0.50→0.48) de
   « material-resistance B+A » à « tree-tension A-candidate ». Valide la
   stratégie native-rich du chantier.
3. TREE-TENSION GENUINE (a-high/b-low) concentre sur : Ad hominem (b=0.00→0.21,
   le cluster #844/#845/#846 — specimen tu quoque/whataboutisme du method doc
   §4 devenu nombre), Mauvaise déduction (b=0.20, cluster #843),
   Erreur de raisonnement family (b=0.36→0.27). TOUS c-DEFER (peuvent être
   bridge nodes axis-C, pas défauts).
4. Influence = seule family fully coherent (a-low).

=== Piège corrigé ===
Scan skosDirectRef seul = 92% fail-loud (FAUX). Tokens _Inference vivent dans
skosExceptionRef (43) pas DirectRef (10). Bon dénominateur = union des 2 →
50/145 native-scheme, 65.5% fail-loud. Documenté pour ne pas re-piéger.

=== Gated ===
MESURE pas verdict. Aucun libellé « à réorganiser ». Tags mécaniques only.
Synthèse+verdict = ai-01. 0 prod CSV. Header explicite « INPUT for ai-01
synthesis, GATED jsboige ratification, 0 prod CSV ».

Artefacts :
- docs/taxonomy/847-acompte.csv (145-only, 42 rows)
- docs/taxonomy/847-acompte-projected.csv (145+clusters, 51 rows)
- docs/taxonomy/847-acompte-homogeneity.md (narratif)

Relates #847 #498 #845 #846 #770 #763 #677. Base master 2becf12.

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.

1 participant