docs(taxonomy): #141 AIF Stage-1 full-scale generator — checkpoint/resume, anti-fab closed-set - #623
Conversation
…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
left a comment
There was a problem hiding this comment.
[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_targetsi ∉ bydot (vrais nœuds),bad_verbsi ∉ CROSSLINK,fab_aif_{k}si token ∉ vocab,bad_mapsi 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).
…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>
…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>
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 writeCards/.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)
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}Matchset → 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:
tmp/141-aif-fullscale.jsonl(not committed).load_ckptonsource_dp).--limit Ncaps new nodes per run;--finalizeaggregates → sidecar (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.pyonly — a read-only-ish dry-run generator. 0 writeCards/, 0 AssetConverter code change (pre-tag safe). Based0856aa4./v1/responses+reasoning.effort=low(memorygpt55-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.