arborist/docs/tickets
russell@unturf.com 5257f9a8f3
ticket #000030 Phases 1b+3 + open #000031
Phase 1b — algebra-symbolic-simplified@v1
==========================================
arborist/pi_star/algebra_symbolic_simplified.py — full-simplify
variant of the Phase-1 expand-only sibling. Closes the trig
identity gap left open at end of Phase 1: sin(x)**2 + cos(x)**2
now collapses to 1, tan(x)*cos(x) to sin(x), exp(log(x)) to x.

Recipe is sp.expand(sp.simplify(expr)) — the follow-up expand
after simplify is load-bearing. simplify alone is non-canonical
for polynomials: it leaves (x+1)**2 in factored form while
collapsing x**2 + 2*x + 1 to expanded form, so two algebraically
equivalent inputs would emit different bytes. Composing with
expand picks one canonical polynomial shape and preserves the
equivalence-class invariant.

Cost: 1-360 ms typical on common trig/exp inputs; pathological
inputs unbounded. No in-π* timeout (the calling pipeline owns
that budget). Operators opt in by registry key — the fast Phase-1
sibling stays the default for callers that only need polynomial
canonicalization.

22 unit tests; all gate on pytest.importorskip("sympy").

Phase 3 — calculus-integral@v1
==============================
arborist/pi_star/calculus_integral.py — symbolic integration with
thread-timeout fallback. JSON-shaped {f, x, limits?,
timeout_seconds?} input. Two output paths:

1. Closed form: sp.srepr(sp.expand(integrate_result)) — same
   recipe as algebra-symbolic@v1 so the output is itself a valid
   algebra-symbolic input and composes naturally.
2. Unevaluated: b"unevaluated:" + sp.srepr(<Integral>). Prefix
   lets callers tell "no closed form" from "input invalid"
   without re-parsing the canonical form.

Timeout discipline: ThreadPoolExecutor(max_workers=1) +
future.result(timeout=...). On TimeoutError, synthesize the same
unevaluated sentinel SymPy itself would emit, so timeout +
no-closed-form converge to the same bytes for the same input.
Default 30 s; per-call override via timeout_seconds. Python
threads can't be killed cleanly — a timed-out worker leaks until
SymPy returns. Documented as the cost of the discipline.

Coverage: ∫x dx = x²/2, ∫sin(x) dx = -cos(x), ∫_{0}^{π} sin(x)
dx = 2, ∫_{-∞}^{∞} exp(-x²) dx = √π, exp(x)/log(x) →
unevaluated sentinel. 31 unit tests including a monkeypatch
deterministic timeout test (sleep-mocked SymPy so the timeout
path doesn't depend on any specific input being slow on every
CI runner).

Open #000031 — surface-ingest cited textbooks
=============================================
Design-only ticket. Closes the warrant gap left open at the end
of #000029: today every claim-pack record caps at
ANCHOR-WARRANTED because source_reference is a string field, not
a Merkle-bound proof. Ingesting the cited textbooks as surfaces
+ computing per-claim derivations.proof_blob lets the four-rung
ladder promote them to EVIDENCE-WARRANTED.

License gating: PD sources (Hilbert, Newton, Kolmogorov,
Łukasiewicz, Aristotle) form the green-light scope. Mendelson +
Enderton are proprietary and stay yellow-light pending fox's
explicit decision (purchased single copy / library license / PD
substitute via Hilbert-Ackermann 1928).

Two follow-up tickets reserved: textbook-fetch pipeline +
chunk-resolution layer (mapping source_reference strings to
specific spans within ingested textbooks; the bridge that lets
proof_blob be computed).

Test counts: 153 tests for the work in this commit (algebra
+ algebra-simplified + calculus-derivative + calculus-integral
+ preflight). All pi_star + canonical_projection tests pass
under .venv pytest.
2026-05-09 12:50:46 -04:00
..
ticket-000001-retrieval-keywords-audit-gap.md aborist/arborist 2026-05-07 09:31:49 -04:00
ticket-000002-reference-frame-polarity-contract.md aborist/arborist 2026-05-07 09:31:49 -04:00
ticket-000003-anchor-class-warrant.md aborist/arborist 2026-05-07 09:31:49 -04:00
ticket-000004-directive-coverage-in-bench.md docs: tickets/ subdir + delete naming-deferral, ref-frame, coverage-audit 2026-05-02 12:51:09 -04:00
ticket-000005-label-ladder-migration.md aborist/arborist 2026-05-07 09:31:49 -04:00
ticket-000006-bench-emergent-findings.md aborist/arborist 2026-05-07 09:31:49 -04:00
ticket-000007-query-layer-hyphen-fold.md aborist/arborist 2026-05-07 09:31:49 -04:00
ticket-000008-broad-quantifier-preflight-guard.md aborist/arborist 2026-05-07 09:31:49 -04:00
ticket-000009-quantifier-preflight-dag-binding.md aborist/arborist 2026-05-07 09:31:49 -04:00
ticket-000010-metacognition-preflight-guard.md aborist/arborist 2026-05-07 09:31:49 -04:00
ticket-000011-soft-preflight-hint-sidecar.md aborist/arborist 2026-05-07 09:31:49 -04:00
ticket-000012-selection-consensus-protocol.md v8: ticket #000012 Phase 1a — ForkScore consumes the new bench substrate 2026-05-08 07:18:22 -04:00
ticket-000013-spatial-temporal-substrate.md docs/tickets: open #000012-#000021 design batch (v7/v9.8 gap coverage) 2026-05-07 16:25:00 -04:00
ticket-000014-self-model.md selfmodel: land ticket #000014 (identity record + falsification) 2026-05-07 16:36:34 -04:00
ticket-000015-pi-star-domain-library.md pi_star: land ticket #000015 (π* domain library + composition algebra) 2026-05-07 16:51:33 -04:00
ticket-000016-zk-frontier-proof.md selfmodel: land ticket #000014 (identity record + falsification) 2026-05-07 16:36:34 -04:00
ticket-000017-memory-root-lifelong-learning.md memory: land ticket #000017 (memory-root lifelong learning summary) 2026-05-07 16:46:41 -04:00
ticket-000018-soft-hash-covert-channel.md docs/tickets: open #000012-#000021 design batch (v7/v9.8 gap coverage) 2026-05-07 16:25:00 -04:00
ticket-000019-specification-methodology.md docs: land ticket #000019 (spec methodology for π*, V, policy fields) 2026-05-07 16:53:28 -04:00
ticket-000020-capital-cost-ledger.md capital: land ticket #000020 (8-capital-form cost ledger) 2026-05-07 16:41:48 -04:00
ticket-000021-bench-fixtures-5s-5t-5r.md bench: 5R battery — closes ticket #000021 (15-sub-battery suite complete) 2026-05-08 08:06:24 -04:00
ticket-000022-adapter-loss-report.md loss_report: land ticket #000022 (adapter LossReport sidecar) 2026-05-07 17:58:50 -04:00
ticket-000023-5s-phase-1b-syllogism-synthesis-semiotics.md bench: land #000023 + #000024 + #000025 (Phase 1a/1b — Dav1DPrometheus suite) 2026-05-07 20:14:44 -04:00
ticket-000024-5t-phase-1b-and-rename.md bench: land #000023 + #000024 + #000025 (Phase 1a/1b — Dav1DPrometheus suite) 2026-05-07 20:14:44 -04:00
ticket-000025-5f-battery.md 5f: Phase 1b.2 fan-out — Function, Finetuning, Falsification all wired live 2026-05-08 08:38:44 -04:00
ticket-000026-real-shard-workload-baseline.md ticket #000026: backfill commit sha for Phase 3 2026-05-09 12:14:49 -04:00
ticket-000027-canonical-projections-in-providence-cache.md #000027 + #000028: canonical projections persist; STRICT-WITNESSED reachable 2026-05-09 11:37:06 -04:00
ticket-000028-multi-modality-witness.md #000027 + #000028: canonical projections persist; STRICT-WITNESSED reachable 2026-05-09 11:37:06 -04:00
ticket-000029-claim-pack-source.md ticket #000029: claim-pack source for axiom/theorem JSON bundles 2026-05-09 11:44:08 -04:00
ticket-000030-math-pi-star-expansion-sympy-substrate.md ticket #000030 Phases 1b+3 + open #000031 2026-05-09 12:50:46 -04:00
ticket-000031-surface-ingest-cited-textbooks.md ticket #000030 Phases 1b+3 + open #000031 2026-05-09 12:50:46 -04:00