Skip to content

docs(taxonomy): #141 AIF Stage-1 full-scale generator — checkpoint/resume, anti-fab closed-set - #623

Merged
jsboige merged 1 commit into
masterfrom
docs/141-aif-fullscale-generator
Jul 1, 2026
Merged

docs(taxonomy): #141 AIF Stage-1 full-scale generator — checkpoint/resume, anti-fab closed-set#623
jsboige merged 1 commit into
masterfrom
docs/141-aif-fullscale-generator

Conversation

@jsboige

@jsboige jsboige commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Summary

PRIMAIRE of ai-01 deep-queue supersede #3 (msg-…v95b6l), unblocked once a gpt-5.5 key was supplied. Scales the #620 pilot (28 nodes, 0 fabrication) to ALL Fallacies non-card nodes (1232), same closed-set anti-fab design. Dry-run sidecar generator — 0 write Cards/.

This PR ships the generator tool. The full run is launched in the background this tick (checkpoint/resume spans ticks at ~12 s/node → ~4 h); the sidecar CSV/JSON + coverage/WARN report land in a follow-up PR via --finalize (no API).

Anti-Fab design (the core contribution — validated, holding at scale)

  • cross-link targets picked from an enumerated list of real nodes (siblings + parent + children + the 7 family roots) — cannot invent a decimal_path.
  • AIF scheme tokens picked from the 60-token observed Walton vocabulary — cannot invent a scheme name.
  • post-generation validation re-checks every target ∈ index, token ∈ vocab, verb ∈ 8, mappingType ∈ observed set.

Result so far: 0 fabricated tokens, 0 invalid targets, 0 invalid verbs. The only WARN at scale is skos:relatedMatch/exactMatch — legitimate SKOS predicates outside the observed {broad,close,narrow}Match set → a schema-extension decision for the expert gate, not fabrications.

CHECKPOINT/RESUME (why it spans ticks)

~12 s/node × 1232 ≈ 4 h — cannot fit one tick. The generator is crash/tick-safe:

  • one JSON line per node in tmp/141-aif-fullscale.jsonl (not committed).
  • re-run skips already-processed nodes (load_ckpt on source_dp).
  • flush after each node.
  • --limit N caps new nodes per run; --finalize aggregates → sidecar (no API).
python docs/taxonomy/141-aif-fullscale.py              # resume, all
python docs/taxonomy/141-aif-fullscale.py --limit 50   # cap new nodes
python docs/taxonomy/141-aif-fullscale.py --finalize   # tmp → sidecar CSV/JSON (no API)

Smoke-tested (--limit 3): 3/3, 0 errors, ~12 s/node, non-card = 1232 (matches #609 census), vocab = 60.

Safety / scope

  • docs/taxonomy/141-aif-fullscale.py only — a read-only-ish dry-run generator. 0 write Cards/, 0 AssetConverter code change (pre-tag safe). Base d0856aa4.
  • No secret committed — gpt-5.5 key stays in session scratchpad; the script reads it by path, never inlines it. gpt-5.5 /v1/responses + reasoning.effort=low (memory gpt55-responses-api-effort-low).

Next

Sidecar CSV/JSON + coverage/WARN report → follow-up PR via --finalize. Then Stage 2 dry-run diff · Stage 3 expert/jsboige ratification gate (the prompt+config adaptation #141 asks for) · Stage 4#130 OWL / #136 2sxc.

Relates to #141, #609, #620, #130, #192.

…sume, anti-fab closed-set

PRIMAIRE of ai-01 deep-queue supersede #3 (msg-...v95b6l): scales the #620
pilot (28 nodes, 0 fabrication) to ALL Fallacies non-card nodes (1232),
same closed-set anti-fab design. Dry-run sidecar generator. 0 write Cards/.

Anti-Fab design (validated 0 fabrication on the pilot, holding at scale):
  - cross-link targets picked from enumerated REAL nodes (siblings +
    parent + children + 7 family roots) — cannot invent a decimal_path.
  - AIF scheme tokens picked from the 60-token observed Walton vocab —
    cannot invent a scheme name.
  - post-generation validation re-checks target in index, token in vocab,
    verb in 8, mappingType in observed set.

CHECKPOINT/RESUME (spans multiple ticks at ~12s/node -> ~4h for 1232):
  - one JSON line per node in tmp/141-aif-fullscale.jsonl (not committed).
  - re-run skips already-processed nodes (load_ckpt on source_dp).
  - flush after each node — survives crash/tick boundaries.
  - --limit N caps new nodes per run; --finalize aggregates -> sidecar.

Modes:
  python docs/taxonomy/141-aif-fullscale.py              # resume, all
  python docs/taxonomy/141-aif-fullscale.py --limit 50   # cap new nodes
  python docs/taxonomy/141-aif-fullscale.py --finalize   # tmp -> sidecar (no API)

Smoke-tested (--limit 3): 3/3, 0 errors, 12s/node, non-card=1232 (matches
#609 census), vocab=60. Full run launched in background this tick;
sidecar CSV/JSON + coverage/WARN report land in a follow-up PR via
--finalize. Only WARN at scale = skos:relatedMatch/exactMatch (legit SKOS
predicates outside the observed {broad,close,narrow}Match set -> a schema
decision for the expert gate, NOT fabrications).

gpt-5.5 /v1/responses + reasoning.effort=low + json_object (memory
gpt55-responses-api-effort-low). Key read by path from session scratchpad,
never inlined. DRY-RUN: checkpoint+interim to tmp/ (not committed); final
sidecar to docs/taxonomy/ only when aggregated.

Scope: docs/taxonomy/141-aif-fullscale.py only. 0 write Cards/, 0
AssetConverter code change. Base d0856aa.

Relates to #141, #609, #620, #130, #192.

Co-Authored-By: Claude-Code <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]

LGTM deep-tier sur le core (anti-fab + write-safety + checkpoint), 1 concern réel (KEY_FILE path) → COMMENT_WITH_CONCERNS.

Core — vérifié firsthand (code lu ligne-par-ligne au head)

1. Closed-set anti-fab ✓ (même design #620 pilot que j'ai vérifié firsthand) :

  • validate(obj, bydot, vocab) (l.137) : bad_target si ∉ bydot (vrais nœuds), bad_verb si ∉ CROSSLINK, fab_aif_{k} si token ∉ vocab, bad_map si mappingType ∉ MAP_TYPES
  • Prompt l.183 « pick targets ONLY from this list, use the dotted path verbatim » + l.186 « choose DirectRef/ExceptionRef ONLY from this closed list »
  • warns=validate(...) appliqué post-hoc (l.199)

2. Checkpoint/resume ✓ : tmp/141-aif-fullscale.jsonl (1 ligne/nœud, non committé), re-run skip les nœuds déjà traités (l.153 read), --finalize (l.246) agrège sans appel API.

3. 0 write Cards/ ✓ : CSV_PATH (l.18) = read-only (l.62 open(CSV_PATH, encoding=...), pas de "w"). Writes = CKPT→tmp/ + OUT_JSON/OUT_CSV→docs/taxonomy/ (seulement au finalize). Artifact committé = le script seul (+249/-0), 0 output. Docstring « 0 write under Cards/ » vérifié.

4. Sélection nœuds sound : filtre dp and c not in ("1","2") (exclut nœuds carte, garde taxonomy non-card), sort par decimal_path (ordre stable family-grouped). build_pool (l.93) = siblings+parent+children+depth-1, capé à 30. Scaling 28→1232 = plein Fallacies non-card set, plausible.

5. 0 secret hardcoded ✓ : pas de sk-/Bearer/40-hex. Clé lue runtime (key=open(KEY_FILE).read().strip() l.162). MODEL=gpt-5.5.

🔴 Concern — KEY_FILE path hard-codé (l.19)

KEY_FILE = r"C:/Users/jsboi/AppData/Local/Temp/claude/c--dev-Argumentum/1607d26f-99dc-4fab-b48a-6f18db62c89b/scratchpad/openai_key.txt"

Pas une fuite de secret (la clé n'est pas committée), mais 2 issues réels :

(a) Reproductibilité : ce path n'existe que sur ta machine. Tout autre clone/run → FileNotFoundError l.162. Pour un generator « full-scale re-runnable », c'est un gap — le script n'est pas reproductible tel que committé (CI, autre contributeur, re-run post-crash sur une autre session).

(b) Leak dev-path : révèle C:/Users/jsboi/ (username) + un UUID de session scratchpad claude-code (1607d26f-99dc-4fab-b48a-6f18db62c89b). Sensibilité basse (path temp local, pas une res réseau), mais même classe que les leaks #4699 papermill (D:\\dev\\) et l'incident 23/06 audio — un path dev local dans le code committé.

Reco (au choix) : KEY_FILE = os.environ.get("OPENAI_API_KEY_FILE") ou lire direct os.environ["OPENAI_API_KEY"] (standard), garder le path scratchpad local hors-repo. Mineur pour le résultat (le generator produit ses outputs localement), mais vaut le durcir vu que c'est un pattern récurrent (3e leak path dev cette session).

@jsboige
jsboige merged commit 46be578 into master Jul 1, 2026
3 checks passed
@jsboige
jsboige deleted the docs/141-aif-fullscale-generator branch July 1, 2026 06:45
jsboige added a commit that referenced this pull request Jul 1, 2026
…abrication (#626)

* docs(taxonomy): #141 AIF Stage-1 full-scale results — 1232 nodes, 0 fabrication

PRIMAIRE of ai-01 deep-queue supersede #3 (msg-...v95b6l): the full-scale
AIF Stage-1 candidate sidecar + coverage/WARN report. The generator was
shipped in #623; this is the run output (1232/1232 non-card nodes,
gpt-5.5 assist, dry-run, 0 write Cards/).

Headline — anti-fab closed-set HOLDS at full scale:
  - 1232 nodes covered (100% of Fallacies non-cards, the #609 gap).
  - 3850 crossLinks (3.12/node, 100% nodes) + 2310 AIF refs (1.88/node,
    96% nodes).
  - confidence mean 0.73, median 0.72 (1301 high >=0.8 / 2460 mid / 89 low).
  - FABRICATION = 0. invalid targets = 0. invalid verbs = 0.
    The closed-set design (targets from enumerated real nodes, AIF tokens
    from the 60-token observed Walton vocab) contains LLM fabrication
    completely across 1232 nodes.

crossLink verb mix: IsRelatedTo 42% / Leverages 33% / Mirrors 15% /
Allows 7% / Inverts 2% / Opposes 1% / PredatesOn 1% / Denounces <1%.
Honest improvement vs pilot: Opposes/PredatesOn/Denounces were 0 in the
28-node pilot (flagged limitation) -> non-zero at scale (sample was too
small to surface them); still sparse, conservative-but-incomplete.

Top Walton DirectRef schemes well-represented: Bias_Inference 262,
Sign_Inference 119, Ethotic_Inference 117, EvidenceToHypothesis 94.

WARN = 87 nodes (7%), ALL bad_map:* (mappingType outside the observed
{broad,close,narrow}Match set: relatedMatch 78, none 5, exactMatch 2,
noMatch 2). These are LEGIT SKOS predicates -> a schema-extension
decision for the expert gate, NOT fabrications. none/noMatch = hedge
candidates to DROP during ratification.

Sidecars: 141-aif-candidates-fullscale.csv (1.1 MB, flat, reviewable,
committed) + report. The structured JSON (1.4 MB) is regenerable via
--finalize from the checkpoint and is NOT committed (repo already
2.05 GiB per #415/#621 — limit additive weight).

1 node (6.3.1.2.3.1.4 Hypocrisie morale) failed once on an API read-
timeout, recovered on a 1-node resume (0 content/parse errors).

Scope: docs/taxonomy/141-aif-candidates-fullscale.csv + report only.
0 write Cards/, 0 AssetConverter code change. Base 0e39425.

Next (gated post-release): Stage 2 dry-run diff, Stage 3 expert/jsboige
ratification gate (decide relatedMatch/exactMatch schema extension,
drop none/noMatch hedges, prioritize >0.8 candidates), Stage 4 ->
#130 OWL / #136 2sxc.

Relates to #141, #609, #620, #130, #136, #192.

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

* docs(taxonomy): #141 AIF Stage-2 dry-run diff — 9 conflict / 2 confirm / 5 silent

Read-only diff of the Stage-1 sidecar (#626) against the 12 non-card nodes
that already carry an AIF value on the taxonomy (0.97% — the other 1220 are
entirely net-new, no conflict possible). High-signal prep for the expert gate:
- 2 CONFIRM: gpt-5.5 independently re-derived the exact expert token
  (Ignorance_Inference, VagueVerbalClassification_Inference) — closed-set
  produces real Walton mappings.
- 9 CONFLICT: 1 field-swap/churn node (Pente glissante) + 5 frank token
  disagreements → gate must adjudicate, not auto-apply.
- 5 SILENT: generator stayed silent on a filled field → gate must preserve
  existing values.

Adds 141-aif-stage2-diff.py (read-only, 0 Cards/ write), 16-row diff.csv, and
a Stage-2 section to the report. Same scope/honors pre-tag freeze.

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

---------

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 23, 2026
…415 align) (#858)

Housekeeping micro-PR, ai-01-directed (Re: ASK tick 90, msg-7d6ioe).

1. docs/taxonomy/141-aif-candidates-fullscale.json (1.3 MB) = regenerable derived
   data. VERIFIED code=truth: 141-aif-fullscale.py (committed, #623) writes it;
   `python docs/taxonomy/141-aif-fullscale.py --finalize` regenerates from
   checkpoint (no API calls). 141-aif-fullscale-report.md ALREADY documents it as
   "tmp/ - regenerable via --finalize" (lines 11/118) + the regen command, so no
   report edit needed (note present, no pendulum). Aligns #415 (reduce .git weight):
   regenerable artifact does not belong in git. Keep local, never commit.

2. __pycache__/ + *.py[cod] + *$py.class = standard Python hygiene. The repo ships
   Python tooling (tools/, docs/taxonomy/, docs/investigations/scripts/) but had NO
   bytecode ignore pattern — 2 untracked __pycache__ dirs present today (real
   accidental-commit risk). Machine-specific, churns. Included in the same hygiene
   commit (not scope creep: same single-purpose).

Verification: git check-ignore confirms the 141 JSON + __pycache__ + *.pyc now
matched; 847-*.csv/md + 141-aif-fullscale-report.md + acompte NOT ignored
(false-positive guard). git status: 141 JSON + __pycache__ gone from untracked.

0 prod CSV. 0 code. docs/config-only, reversible.

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