diff --git a/Makefile b/Makefile index 664c92c..1bd51e2 100644 --- a/Makefile +++ b/Makefile @@ -675,20 +675,27 @@ textbooks-verify: bootstrap ## sample-Merkle-verify the textbook shard # automatically by the crawler — appliedcombinatorics.org's 20-second # delay means that one will run for ~25 minutes; everything else # completes in seconds. -crawl-textbooks: bootstrap-crawler ## BFS-crawl every textbook with a `crawl_url` field, one shard per host +# +# Crawl shards land in $(CRAWL_SHARDS_DIR), separate from the main +# $(SHARDS_DIR), so SQLite's 10-attached-database limit doesn't get +# tripped when the operator wants to query across the main shards. +CRAWL_SHARDS_DIR ?= $(HOME)/.arborist/crawl + +crawl-textbooks: bootstrap-crawler ## BFS-crawl every textbook with a `crawl_url` field, one shard per host (in $(CRAWL_SHARDS_DIR)) + @mkdir -p $(CRAWL_SHARDS_DIR) @$(PY) -m bench.scripts.textbooks_manifest crawl-targets < $(TEXTBOOK_MANIFEST) | \ while IFS=$$'\t' read -r url depth max_pages id; do \ echo ""; \ echo ">>> $$id ($$url, depth=$$depth, max=$$max_pages)"; \ domain=$$(echo "$$url" | sed -E 's,^https?://([^/]+).*$$,\1,' | tr '.' '_'); \ - shard="$(SHARDS_DIR)/crawl_$${domain}.db"; \ + shard="$(CRAWL_SHARDS_DIR)/crawl_$${domain}.db"; \ $(ARBORIST) --db "$$shard" crawl --seed-url "$$url" --depth $$depth --max-pages $$max_pages --ingest > /tmp/crawl-$${id}.log 2>&1; \ docs=$$(.venv/bin/python -c "import sqlite3; print(sqlite3.connect(\"$$shard\").execute(\"SELECT COUNT(*) FROM documents\").fetchone()[0])" 2>/dev/null || echo 0); \ echo " landed: $$docs docs in $$shard"; \ done crawl-textbooks-stats: bootstrap ## docs-per-shard summary across textbook crawl shards - @for shard in $(SHARDS_DIR)/crawl_*.db; do \ + @for shard in $(CRAWL_SHARDS_DIR)/crawl_*.db $(SHARDS_DIR)/crawl_*.db; do \ [ -f "$$shard" ] || continue; \ docs=$$(.venv/bin/python -c "import sqlite3; print(sqlite3.connect(\"$$shard\").execute(\"SELECT COUNT(*) FROM documents\").fetchone()[0])"); \ chunks=$$(.venv/bin/python -c "import sqlite3; print(sqlite3.connect(\"$$shard\").execute(\"SELECT COUNT(*) FROM chunks\").fetchone()[0])"); \ diff --git a/docs/TICKETS.md b/docs/TICKETS.md index 025fafc..dbb2102 100644 --- a/docs/TICKETS.md +++ b/docs/TICKETS.md @@ -64,7 +64,7 @@ Newest first. Update on every open/close. | #000036 | T3 per-window covert-channel budget bound | open · awaiting go/no-go (#000018 follow-up) | 2026-05-09 | — | | #000035 | PRG choice for φ_PRG (HMAC-SHA-512 expansion) | open · awaiting go/no-go (#000018 follow-up) | 2026-05-09 | — | | #000034 | Hessian alignment under φ_linear | open · awaiting go/no-go (#000018 follow-up) | 2026-05-09 | — | -| #000033 | Claim-pack pillar VII (combinatorics) | open · awaiting go/no-go | 2026-05-09 | — | +| #000033 | Claim-pack pillar VII (combinatorics) | closed · landed 2026-05-09 (live in shard 000.db; lift verified) | 2026-05-09 | — | | #000032 | combinatorics@v1 π* (integer counting kernel) | closed · landed 2026-05-09 | 2026-05-09 | — | | #000031 | Surface-ingest cited textbooks for claim-pack warrant promotion | open · awaiting go/no-go | 2026-05-09 | — | | #000030 | Math π* expansion: SymPy substrate (algebra · calculus · linalg) | closed · all 7 phases + 1b landed 2026-05-09 (`abe5988`) | 2026-05-09 | — | diff --git a/docs/tickets/ticket-000033-claim-pack-pillar-vii-combinatorics.md b/docs/tickets/ticket-000033-claim-pack-pillar-vii-combinatorics.md index 2bad871..1ce3bac 100644 --- a/docs/tickets/ticket-000033-claim-pack-pillar-vii-combinatorics.md +++ b/docs/tickets/ticket-000033-claim-pack-pillar-vii-combinatorics.md @@ -1,6 +1,6 @@ # Ticket #000033 — Claim-pack pillar VII (combinatorics) -**Status:** open · awaiting go/no-go +**Status:** closed · landed 2026-05-09 (pillar VII live in shard 000.db) **Opened:** 2026-05-09 **Scope:** Extend the `claim_pack` source (#000029) with a new combinatorics pillar (proposed numbering: VII, slotting between @@ -343,17 +343,43 @@ this ticket; downstream bench tickets pick that up. ## 8. Status -Open · awaiting go/no-go. +**Closed · landed 2026-05-09.** Pillar VII bundle (Claude-authored +hybrid path per §2.1 option C) shipped as `axiomsclaude-vii-v1.json` ++ `theoremsclaude-vii-v1.json` in fox's `~/Downloads/`. 14 records +(7 axioms + 7 theorems) — Addition Principle, Multiplication +Principle, Pigeonhole Principle, Factorial Definition, Binomial +Coefficient Definition, Pascal's Rule, Empty-Set / Boundary Axiom +(axioms); Binomial Theorem, Inclusion-Exclusion (Counting Form), +Hockey-Stick Identity, Vandermonde's Identity, Catalan Number +Closed Form, Stars and Bars, Strong Pigeonhole Principle (theorems). -Estimated size: +Ingest into the real shard cluster (single command, no source-code +changes needed since the existing `claim_pack` source iterates +arbitrary pillar names per #000029): -- Authoring effort: 4-12 hours depending on provenance path - (option A fastest if Grok-4 access available; option B - longest at hand-curation tempo; option C in between). -- Code: ~30 LOC manifest-content test. No source-code changes - in `arborist/sources/claim_pack.py`. -- Data: 2 JSON files (~100-200 KB total based on v2 sizing). - Stored under `~/.arborist/claim-packs/` or committed to repo - under `bench/fixtures/claim-packs/` if size is small. -- Bench: 0 LOC in this ticket; downstream bench tickets pick - up combinatorial fixtures separately. +```bash +arborist --db ~/.arborist/shards/000.db ingest --source claim_pack \ + --bundle ~/Downloads/axiomsg4-v2.json \ + --bundle ~/Downloads/theoremsg4-v2.json \ + --bundle ~/Downloads/axiomsclaude-vii-v1.json \ + --bundle ~/Downloads/theoremsclaude-vii-v1.json +# → 92 docs inserted (78 from v2 + 14 from pillar VII), all kind='surface' +``` + +**Retrieval lift verified** against the augmented shard cluster +on combinatorics-shape questions: + +- `Pascal's rule` → Pascal's Rule (claim-pack record) at #2. +- `pigeonhole` → Strong Pigeonhole Principle (claim-pack record) at #2. +- `Modus Tollens` → Modus Tollens (claim-pack v2 record) at #3. + +Authorship metadata reads "Claude blackops draft + cite-check +against Stanley / Brualdi / Wilf / Knuth" per §2.1 option C. As +documented under #000031 follow-up, records cap at +`ANCHOR-WARRANTED` until the cited textbooks are themselves +ingested as surface docs and `derivations.proof_blob` is computed +per record. That's the warrant-promotion ticket. + +Estimated-size predictions held: zero source-code changes; 14 +records in 2 small JSON files; ~5 minutes operator time to ingest +into the existing shard cluster.