Find a file
russell@unturf.com 787c243179
strict attribution rules in query system prompt
Even with rivalry exclusion, sources like 'CPU_monthly' (a roundup
discussing both AMD and Intel CPUs in the same article) sneak through
because their title matches "CPU" without naming a competitor. Hermes
then conflated facts: "the fastest AMD CPU is the 3.2 GHz Pentium 4."

Tightened the DEFAULT_QUERY_POLICY system prompt with four explicit
rules:

1. A single source may discuss multiple competitors. Attribute facts
   only to the entity the source explicitly names.
2. If the question asks about ONE entity (e.g., "fastest AMD CPU"),
   do not include competitor facts as if they were facts about the
   asked entity.
3. AMD PR-rating numbers (3200+, 2500+) are NOT clock speeds in MHz.
   Quote the source's own wording rather than interpreting model
   numbers.
4. Say "I don't know based on the provided sources" when the sources
   don't cover the answer. Don't speculate.

Demo on the same AMD query (post-distill, cores now in retrieval):
  before: "the fastest AMD CPU is the 3.2 GHz Pentium 4 from May 2003"
  after:  "the fastest AMD CPU mentioned is the Athlon XP 3200+ which
           was released in May 2003. The sources do not contain
           information about CPUs released after 2003."

Sources include AMD, AMD_5x86, AMD_Duron + their cores, CPU_design,
CPU_monthly. Hermes correctly attributes Athlon XP 3200+ to AMD and
honestly bounds the corpus's coverage at 2003.

Bumping the system prompt invalidates the governance_policy_hash and
therefore every prior cache_key — by design, per v9.8 admissibility
(prompt change = different governance = fresh inference).

66 tests still passing.
2026-04-27 13:04:31 -04:00
aborist strict attribution rules in query system prompt 2026-04-27 13:04:31 -04:00
bench progress reporter + structured benchmark 2026-04-27 11:37:20 -04:00
tests concept overlay: synonym expansion + rivalry exclusion 2026-04-27 12:34:00 -04:00
.gitignore phase 0 explore: aborist core + sources + distill + evict 2026-04-27 07:53:18 -04:00
CLAUDE.md update CLAUDE.md: real orientation for the working repo 2026-04-27 10:41:20 -04:00
LICENSE phase 0 explore: aborist core + sources + distill + evict 2026-04-27 07:53:18 -04:00
Makefile falsification CLI: mark wrong cached answers stale/failed 2026-04-27 13:03:06 -04:00
pyproject.toml add Q&A layer: v9.8 providence_cache writes with Merkle-bound proofs 2026-04-27 08:01:23 -04:00
README.md phase 0 explore: aborist core + sources + distill + evict 2026-04-27 07:53:18 -04:00

aborist

An arborist for trees and forests of cross-linked information.

Aborist ingests documents into a content-addressed, Merkle-committed store. Every document carries a URI for backtrack and cross-link. Search hooks return hits with declared audit modes (STRICT / HYBRID / VISUAL) so callers never overclaim what a result actually proves.

Design

Aborist implements the runtime spec from Merkle-AGI v9.8 / Merkle Providence Reverse RAG. The 8-dim admissibility key (source_root, question_hash, model_profile_hash, conversation_hash, governance_policy_hash, schema_version, canonicalization_version, chunking_version) plus falsification state ensures cached records are never reused under drift.

Two layered document kinds:

  • surface — diverse ingested content (full chunks, FTS-indexed)
  • core — distilled records (haiku/equation/snippet) Merkle-signed back to source surface roots via derivations

Reversible eviction via chunk tier ∈ {hot, warm, cold}. Cold = leaf hash

  • URI only; rehydratable from URI, identity verifiable via leaf hash.

Quick start

make all            # bootstrap + fetch + ingest + verify + stats
make search Q='…'

License

AGPL-3.0-only.