arborist/docs/TICKETS.md
russell@unturf.com 04f3f5d2a8
ticket #000030 Phases 1+2: algebra-symbolic@v1 + calculus-derivative@v1
Two new π* canonicalizers extend the math substrate above
arithmetic@v1 (closed-form rationals) and logic-kernel@v1
(propositional Boolean → CNF):

algebra-symbolic@v1 (Phase 1) — symbolic-algebra domain.
sp.expand → sp.srepr canonical bytes. Polynomial identity collapses
((x+1)**2 ≡ x**2 + 2*x + 1); exponential identity collapses
(exp(a+b) ≡ exp(a)*exp(b), inherited from sp.expand's default
behavior); trigonometric identity does NOT collapse
(sin²+cos² ≢ 1). The trig surface is reserved for a future
algebra-symbolic-simplified@v1 variant that wraps sp.simplify at
unbounded CPU cost. Rejects relationals (`x > 0`) and
BooleanFunction shapes (`x & y`) via `isinstance(expr, sp.Expr)` —
sp.Symbol confusingly inherits from Boolean so the right rejection
filter is "not Expr" rather than "Boolean".

calculus-derivative@v1 (Phase 2) — calculus domain. JSON-shaped
{f, x, n} input → sp.diff → sp.expand → srepr bytes. Output is
itself a valid algebra-symbolic@v1 input so the two compose
naturally under arborist.pi_star.compose. n defaults to 1; bools
explicitly rejected (Python isinstance(True, int) is True so we
filter that explicitly).

Optional dependency: sympy ships in the new [math] extra
(pyproject.toml). Folded into [dev] so make bootstrap pulls it
transitively. An explicit `bootstrap-math` Makefile target documents
the opt-in for minimal-install users. Both modules self-guard
via `try: import sympy as sp / except ImportError: sp = None` and
only register(...) when sympy is present, so a fresh checkout
without [math] still loads arborist.pi_star without raising.

Preflight algebra route lands in
arborist.qa.query._canonical_projection_preflight between the
arithmetic and logic routes. Charset regex (_CANONICAL_ALGEBRA_RE)
allows lowercase letters + math chars; requires at least one
letter (else arithmetic wins); rejects natural-language leading
verbs via _CANONICAL_ALGEBRA_NL_LEAD_RE (4-letter minimum so
single-/two-/three-char identifiers like x, xy, sin, cos, pi
survive while "simplify (...)", "factor x...", "expand (a+b)..."
fall through). PiStarError + KeyError both fall through cleanly
so a sympy-less install just routes everything past algebra.

Bench substrate:
- bench/batteries/base.py PHASE_1_CARRIERS gains "symbolic_algebra"
- bench/fixtures/5s/syntax-algebra-symbolic-v1.jsonl (10 fixtures)
- bench/fixtures/5s/semantics-algebra-symbolic-v1.jsonl (13 fixtures
  including the documented trig non-collapse + exp collapse)
- Makefile bench-5s-algebra target → 100% pass

Tests: 18 algebra-symbolic + 38 calculus-derivative unit tests +
~10 new preflight-route tests in test_canonical_projection.py. All
gate on pytest.importorskip("sympy") so a sympy-less suite stays
green. Full suite: 1369 passed / 27 skipped.

Phases 3-7 (integral, limit, series, linear-algebra,
function-sampled) remain open as future work; each lands as its
own ticket when an actual consumer surfaces.
2026-05-09 12:35:18 -04:00

6.6 KiB
Raw Blame History

Arborist tickets — index

Arborist uses a flat ticket-NNNNNN-<slug>.md convention for actionable proposals: defects with a known root cause, design proposals awaiting go/no-go, or scoped enhancements queued for future implementation.

Convention

  • Filename: docs/tickets/ticket-NNNNNN-<slug>.md. The ID is a six-digit zero-padded integer; the slug is hyphen-lowercase and short enough to stay readable on a 100-column terminal.
  • Numbering: monotonic, never reused. Pick the next free integer greater than every existing ticket. The current next ID is on the Next ID line below; bump it when you open a ticket and commit the bump in the same commit as the new ticket file.
  • Header: every ticket starts with
    # Ticket #NNNNNN — <short title>
    
    **Status:** open · awaiting go/no-go      (or "in progress", "closed")
    **Opened:** YYYY-MM-DD
    **Scope:** <one-liner — what this ticket is for>
    **Audience:** <who reads this>
    **Hard constraint:** <invariants this ticket commits to NOT break>
    
  • Body: problem statement, design choices with trade-offs, recommendation, implementation sketch, scope boundaries, status. See ticket-000001-retrieval-keywords-audit-gap.md for a worked template.
  • Closure: when a ticket lands, flip Status to closed · landed in commit <sha> and leave the file in place. Do not delete tickets; they are the design log.

Distinction from other docs

docs/ also contains architecture references and bench journey notes that are NOT tickets — they describe state of the world rather than proposing change. Examples that stay un-numbered:

  • cti-architecture.md (architecture reference)
  • mesh.md, mesh-deploy.md (architecture + ops reference)
  • qa-modes-bench-2026-04-30.md (point-in-time bench journal)
  • verifier-semantic-gap-design.md, self-reference-design.md (older design docs that pre-date the ticket convention; leave as-is unless retroactively promoting one to a ticket adds value)
  • concept-relations-design.md (architecture reference for the per-shard concept_relations synonym/rivalry layer + the 1.6% storage-tax rationale; landed 2026-05-01)
  • tool-action-dag-design.md (research path for an action- provenance layer downstream of final_label. Captured pre-ticket per the 2026-05-07 arborist-vs-donto comparison; promotes to a ticket when an actual agent use case surfaces)

If a doc proposes change AND awaits a decision AND has scoped implementation cost, it's a ticket. Otherwise it's reference.

Index

Newest first. Update on every open/close.

ID Title Status Opened Directive
#000030 Math π* expansion: SymPy substrate (algebra · calculus · linalg) closed · Phases 1+2 landed 2026-05-09 (3-7 future work) 2026-05-09
#000029 Claim-pack source (axiom/theorem JSON bundles) closed · landed 2026-05-09 2026-05-09
#000028 Multi-modality witness for canonical shapes closed · landed 2026-05-09 (STRICT-WITNESSED reachable post-#000027) 2026-05-08
#000027 Canonical projections persist to providence_cache closed · landed 2026-05-09 2026-05-08
#000026 Real-shard workload baseline + search latency in progress · Phase 1 + 2 + 3 landed 2026-05-09 2026-05-08
#000025 5F battery (Function · Finetuning · Falsification · Formulate · Feedback Loop) in progress · Phase 1a + 1b.2 + 1c landed 2026-05-09 2026-05-07
#000024 5T Phase 1b + Dav1DPrometheus vocabulary alignment closed · landed 2026-05-08 2026-05-07
#000023 5S Phase 1b: Syllogism · Synthesis · Semiotics closed · landed 2026-05-08 2026-05-07
#000022 Adapter LossReport (PRD I9 analogue) closed · landed 2026-05-07 2026-05-07
#000021 5S/5T/5R benchmark fixtures + harness closed · Phase 1a + 2 landed 2026-05-08 2026-05-07
#000020 Capital-cost ledger (8-capital queues) closed · landed 2026-05-07 2026-05-07
#000019 Specification methodology for π* and V closed · landed 2026-05-07 2026-05-07
#000018 Adversarial soft-hash covert-channel analysis open · awaiting go/no-go 2026-05-07
#000017 Memory-root: lifelong learning audit chain closed · landed 2026-05-07 2026-05-07
#000016 ZK Phase-2 frontier proof (concretize) open · awaiting go/no-go 2026-05-07
#000015 π* domain library + cross-domain composition closed · landed 2026-05-07 2026-05-07
#000014 SelfModel: schema, falsification, integration closed · landed 2026-05-07 2026-05-07
#000013 Spatial-temporal substrate (Merkle-AGI v7-W) open · awaiting go/no-go 2026-05-07
#000012 Selection & consensus protocol (Merkle-AGI v8) in progress · Phase 1a + 1b (ForkScore CLI) landed 2026-05-09 2026-05-07
#000011 SOFT_PREFLIGHT_HINT model-assisted sidecar closed · landed 2026-05-04 (zero-shot full impl) 2026-05-04 D1 (preserves)
#000010 Meta-Cognition Preflight Guard (M0 / MCTL) closed · landed 2026-05-03 (Phases 14); DAG binding shipped via #000009 2026-05-03 D1, D3
#000009 Preflight run-DAG node binding (#000008+#000010) closed · re-landed 2026-05-04 (§8 corrections: reject-path DAG, nested CTI clauses) 2026-05-03 D3, D4
#000008 Broad-quantifier preflight guard closed · landed in 4f2b5a6; Phase 5 DAG binding split into #000009 2026-05-02
#000007 Query-layer hyphen folding closed · 2026-05-02 2026-05-02
#000006 Bench-emergent findings (rolling research log) open · rolling 2026-05-02
#000005 Label ladder migration (POINTER-LINKED → …) closed · 2026-05-02 2026-05-01 D7
#000004 Directive coverage in bench summary closed · acd1f9c 2026-05-01 D8
#000003 Anchor-class warrant generalization (Module H+) closed · 2026-05-02 2026-05-01 D6
#000002 Reference-Frame Polarity Contract (Module L) closed · 2026-05-02 2026-05-01 D3
#000001 Retrieval-keywords audit gap closed · 2026-05-02 2026-05-01 D4

Next ID

000031