Implements both alias mechanisms (citation-aliases #000041, term-aliases #000042) as one cohesive layer. Same audit discipline; same opt-in via --use-aliases on warrant-resolve; same distinct process_id "warrant-resolver-v1+alias" on alias- resolved derivations rows. What landed =========== arborist/store.py — two new tables under SCHEMA_SQL: citation_aliases — substitute textbook for proprietary cite term_aliases — bridge vocabulary mismatches (incidence ↔ connection in geometry, etc.) Both with NOT NULL audit fields (decision_at + decision_by + optional decision_rationale); both with PK constraints ensuring idempotent re-add. arborist/qa/aliases.py — helper module: add_citation_alias / list / lookup / remove add_term_alias / list / lookup (bidirectional) / remove expand_query_with_term_aliases — OR-rewrites FTS5 tokens while preserving phrase syntax domain_for_pillar — Roman numeral → domain string arborist/qa/warrant_resolver.py — two-pass cascade: Pass 1: unaliased queries (matches carry via_alias=False) Pass 2: alias-expanded queries (only when pass 1 missed; matches carry via_alias=True) ResolutionMatch grew a via_alias field; warrant_resolve uses it to pick the right process_id per derivation row. iter_claim_pack_records now yields a 6-tuple including the pillar (parsed from doc URI) so domain lookup works. arborist/cli.py — alias subcommand group: arborist alias citation add ORIGINAL --substitute SUB --by FOX [...] arborist alias citation list / remove arborist alias term add TERM ALT --domain D --by FOX [...] arborist alias term list / remove warrant-resolve --use-aliases flag sweep --target warrants --use-aliases flag All audit fields fail-closed at the API surface (refuses on empty --by; ValueError raised at the helper level). End-to-end smoke test ===================== Registered the Hilbert smoke-test alias: arborist alias term add incidence connection \ --domain geometry \ --by "blackops 2026-05-09 (smoke test)" \ --rationale "Hilbert 1902 Townsend uses 'connection' for what modern texts call 'incidence'" Re-ran warrant-resolve --use-aliases --write: records_total: 92 records_resolved: 15 (was 11 without aliases) derivations_written: 15 Breakdown by process_id: warrant-resolver-v1: 11 (original-citation matches) warrant-resolver-v1+alias: 4 (alias-resolved Hilbert axioms) The 4 alias-resolved records are exactly the Hilbert "Incidence" axioms blocked by terminology mismatch in #000040 §6: Axiom of Line Incidence Axiom of Plane Incidence Axiom of Point-Line Incidence Axiom of Point-Plane Incidence All four bound to chunk 56 in the Hilbert TeX surface — the chapter discussing "axioms of connection" (Hilbert's original 1902 vocabulary). Audit trail correctly distinguishes substituted chains from original ones. Tests: 18 new in test_aliases.py covering add / list / lookup / remove / domain isolation / lowercase normalization / bidirectional lookup / audit-discipline raises / query expansion (basic + phrase-preserving + no-match passthrough + unreachable-DB fallback). Full suite: 1623 passed / 28 skipped. Tickets #000041 + #000042 closed. Operators can now add more aliases via the CLI as fox makes decisions per #000038. The alias mechanism is fail-closed by default — existing warrant-resolve runs without --use-aliases continue to produce the original 11/92 chains; --use-aliases opt-in adds the substituted chains alongside without polluting the unsubsituted audit trail. |
||
|---|---|---|
| .. | ||
| _source | ||
| diagrams | ||
| tickets | ||
| bench-maxing.md | ||
| benchmarks.md | ||
| cti-architecture.md | ||
| dav1dprometheus-update-2026-05-09.md | ||
| mesh.md | ||
| pi-star-composition.md | ||
| qa-modes-bench.md | ||
| seven-point-program.md | ||
| soft-hash-channel-analysis.md | ||
| spec-methodology.md | ||
| TICKETS.md | ||
| tool-action-dag-design.md | ||
| v7w-frontier-catalog.md | ||
| v8-fork-score.md | ||
| zk-frontier-bench.md | ||
| zk-wire-protocol.md | ||