arborist/arborist
russell@unturf.com b38f4b8b59
ticket #000029: claim-pack source for axiom/theorem JSON bundles
ClaimPackSource ingests Grok-4 companion bundles (axiomsg4-v2.json +
theoremsg4-v2.json) at the right grain — one Document per axiom or
theorem record. Each record carries Δ (LaTeX symbolic) + ∇verbose
prose, explicit source citation (Mendelson, Enderton, Hilbert,
Newton, Kolmogorov, Łukasiewicz), foundational-group taxonomy, and a
runicLabel that rides as soft metadata only (runtime mints its own
pointer IDs per CTI architecture). Pillar-level
provenance.references arrays become outbound pillar_reference edges.

Lenient JSON parser strips ```json fences and double-escapes lone
LaTeX backslashes (\Theta, \heart, \vec) without corrupting
already-correct \\to pairs — walks left-to-right and pass-throughs
legal escape sequences. Malformed bundles raise rather than return
empty; silent zero-doc would be a footgun.

CLI surface: --source claim_pack with a repeatable --bundle FILE
flag mirroring html source's --url action=append. Single --path
also accepted for one-bundle ingest.

Drive-by: removed a function-local `from arborist.store import
connect` inside _cmd_ingest's providence branch that was shadowing
the module-level binding via Python's "any local assignment makes
the name local for the entire function" rule, breaking every
non-providence ingest with UnboundLocalError. Comment left in
place explaining why not to re-add it.

Smoke-tested on /home/fox/Downloads/{axiomsg4,theoremsg4}-v2.json
end-to-end: 78 docs (55 axioms + 23 theorems across 7 pillars),
14 deduped pillar-reference edges, 78 audit events, 10/10 sampled
Merkle proofs verify, FTS5 search returns Modus Tollens for
"modus tollens".

Honest ceiling: kind=surface for every record. The pack is
pre-distilled but its provenance is asserted not proven — until
Mendelson/Enderton/Hilbert texts are themselves ingested as
surfaces, the verifier has no derivations.proof_blob to compute
and claim-pack records max out at ANCHOR-WARRANTED on the
four-rung ladder. That's a follow-up ticket, not this one.

Hard constraints honored: no new audit ledger (audit_events
remains the only chained-sha256 ledger; bundle's self-validation
fields ride as metadata only); no kind=core without surface
ancestor; cache_key invariants untouched.

15 unit tests cover lenient parser, slug stability, ref
resolution, doc grain, URI stability, content layout, extra
metadata, edge emission, error paths. All 1280 tests in
make test pass.
2026-05-09 11:44:08 -04:00
..
capital capital: land ticket #000020 (8-capital-form cost ledger) 2026-05-07 16:41:48 -04:00
concepts #000026 Phase 2: real-shard baseline + lazy concept loading 2026-05-08 13:10:58 -04:00
distill capital: land ticket #000020 (8-capital-form cost ledger) 2026-05-07 16:41:48 -04:00
memory memory: land ticket #000017 (memory-root lifelong learning summary) 2026-05-07 16:46:41 -04:00
mesh modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
pi_star qa: math/logic π* reach the user — arborist canon + query preflight 2026-05-08 12:18:28 -04:00
qa #000027 + #000028: canonical projections persist; STRICT-WITNESSED reachable 2026-05-09 11:37:06 -04:00
search modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
selfmodel selfmodel: land ticket #000014 (identity record + falsification) 2026-05-07 16:36:34 -04:00
sources ticket #000029: claim-pack source for axiom/theorem JSON bundles 2026-05-09 11:44:08 -04:00
v8 v8: ticket #000012 Phase 1a — ForkScore consumes the new bench substrate 2026-05-08 07:18:22 -04:00
__init__.py modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
cli.py ticket #000029: claim-pack source for axiom/theorem JSON bundles 2026-05-09 11:44:08 -04:00
compress.py modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
document.py modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
evict.py modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
ingest.py loss_report: land ticket #000022 (adapter LossReport sidecar) 2026-05-07 17:58:50 -04:00
journal.py modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
merkle.py modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
progress.py modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
snapshot.py modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
source.py modified: CLAUDE.md 2026-05-07 09:24:46 -04:00
store.py #000027 + #000028: canonical projections persist; STRICT-WITNESSED reachable 2026-05-09 11:37:06 -04:00
wikitext.py loss_report: land ticket #000022 (adapter LossReport sidecar) 2026-05-07 17:58:50 -04:00