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.
This commit is contained in:
parent
44b38c55da
commit
d3c40c95d2
8 changed files with 1255 additions and 26 deletions
|
|
@ -61,8 +61,8 @@ Newest first. Update on every open/close.
|
|||
|
||||
| ID | Title | Status | Opened | Directive |
|
||||
|----------|------------------------------------------------|-----------------------|------------|-----------|
|
||||
| #000042 | Term-aliases table (vocabulary-mismatch bridge) | open · awaiting first term-alias decision; trigger candidate: incidence ↔ connection (geometry) for Hilbert 1902 | 2026-05-09 | — |
|
||||
| #000041 | Citation-aliases table (PD substitutes for proprietary cites) | open · awaiting first PD-substitute decision from #000038 | 2026-05-09 | — |
|
||||
| #000042 | Term-aliases table (vocabulary-mismatch bridge) | closed · landed 2026-05-09 (smoke-test alias incidence↔connection geometry resolves 4 stuck Hilbert records) | 2026-05-09 | — |
|
||||
| #000041 | Citation-aliases table (PD substitutes for proprietary cites) | closed · mechanism landed 2026-05-09; rows added via fox decisions per #000038 | 2026-05-09 | — |
|
||||
| #000040 | Phase 5 resolver fix — phrase + content-token cascade (Hilbert terminology mismatch surfaced) | closed · cascade landed 2026-05-09; lift blocked by 1902-vs-modern vocab; follow-up #000042 | 2026-05-09 | — |
|
||||
| #000039 | Optional `sqlite-vec` retrieval backend (A/B vs FTS5, hybrid not replacement) | open · awaiting go/no-go (doc-only Phase 0) | 2026-05-09 | — |
|
||||
| #000038 | Phase 4 content acquisition — proprietary textbook license decisions for warrant coverage | open · awaiting go/no-go | 2026-05-09 | — |
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Ticket #000041 — Citation-aliases table
|
||||
|
||||
**Status:** open · awaiting go/no-go (depends on #000038 PD-substitute decisions)
|
||||
**Status:** closed · mechanism landed 2026-05-09; populated by fox decisions per #000038
|
||||
**Opened:** 2026-05-09
|
||||
**Scope:** Add an `arborist citation_aliases` table that maps
|
||||
a claim-pack record's original `source_reference` string to a
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Ticket #000042 — Term-aliases table (vocabulary-mismatch bridge)
|
||||
|
||||
**Status:** open · awaiting go/no-go (depends on #000038 + #000040 §6 surfacing concrete need-cases)
|
||||
**Status:** closed · mechanism landed 2026-05-09 with smoke-test alias (incidence ↔ connection geometry) — 4 stuck Hilbert records now resolve via alias-expanded cascade
|
||||
**Opened:** 2026-05-09
|
||||
**Scope:** Add an `arborist term_aliases` table that maps a
|
||||
`(term, domain)` pair to an alternate term used in older /
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue