aborist/arborist

modified:   .gitlab-ci.yml
	modified:   bench/qa_questions.txt
	modified:   bench/qa_sweep.py
	modified:   bench/run.sh
	modified:   docs/TICKETS.md
	modified:   docs/_source/README.md
	modified:   docs/_source/_ext/makefile_targets.py
	modified:   docs/_source/api/cli.rst
	modified:   docs/_source/api/distill.rst
	modified:   docs/_source/api/mesh.rst
	modified:   docs/_source/api/qa.rst
	modified:   docs/_source/api/retrieval.rst
	modified:   docs/_source/api/storage.rst
	modified:   docs/_source/api/substrate.rst
	modified:   docs/_source/concepts.rst
	modified:   docs/_source/conf.py
	modified:   docs/_source/cookbook.rst
	modified:   docs/_source/index.rst
	modified:   docs/_source/license.rst
	modified:   docs/_source/quickstart.rst
	modified:   docs/bench-maxing.md
	modified:   docs/benchmarks.md
	modified:   docs/cti-architecture.md
	modified:   docs/diagrams/aborist-modules.dot
	modified:   docs/diagrams/aborist-modules.svg
	modified:   docs/diagrams/mesh-data-flow.dot
	modified:   docs/diagrams/mesh-epoch-lifecycle.dot
	modified:   docs/diagrams/mesh-epoch-lifecycle.svg
	modified:   docs/diagrams/mesh-group-decisions.dot
	modified:   docs/diagrams/mesh-group-decisions.svg
	modified:   docs/diagrams/mesh-identity-stack.dot
	modified:   docs/diagrams/mesh-secret-envelope.dot
	modified:   docs/mesh.md
	modified:   docs/qa-modes-bench.md
	modified:   docs/seven-point-program.md
	modified:   docs/tickets/ticket-000001-retrieval-keywords-audit-gap.md
	modified:   docs/tickets/ticket-000002-reference-frame-polarity-contract.md
	modified:   docs/tickets/ticket-000003-anchor-class-warrant.md
	modified:   docs/tickets/ticket-000005-label-ladder-migration.md
	modified:   docs/tickets/ticket-000006-bench-emergent-findings.md
	modified:   docs/tickets/ticket-000007-query-layer-hyphen-fold.md
	modified:   docs/tickets/ticket-000008-broad-quantifier-preflight-guard.md
	modified:   docs/tickets/ticket-000009-quantifier-preflight-dag-binding.md
	modified:   docs/tickets/ticket-000010-metacognition-preflight-guard.md
	modified:   docs/tickets/ticket-000011-soft-preflight-hint-sidecar.md
	modified:   scripts/backfill_concepts.py
	modified:   scripts/bench_emergent.py
	modified:   tests/crawler/test_async_web_fetcher.py
	modified:   tests/crawler/test_bridge.py
	modified:   tests/crawler/test_web_fetch.py
	modified:   tests/test_bench_qa_sweep.py
	modified:   tests/test_burn.py
	modified:   tests/test_burn_doc.py
	modified:   tests/test_claim_lattice.py
	modified:   tests/test_cli_render.py
	modified:   tests/test_compress.py
	modified:   tests/test_concepts.py
	modified:   tests/test_dag.py
	modified:   tests/test_directives.py
	modified:   tests/test_distill.py
	modified:   tests/test_distill_recursive.py
	modified:   tests/test_evict.py
	modified:   tests/test_frame.py
	modified:   tests/test_grok_source.py
	modified:   tests/test_html_source.py
	modified:   tests/test_ingest.py
	modified:   tests/test_inspect.py
	modified:   tests/test_journal.py
	modified:   tests/test_keys.py
	modified:   tests/test_llm_context_base.py
	modified:   tests/test_merkle.py
	modified:   tests/test_mesh.py
	modified:   tests/test_mesh_aead.py
	modified:   tests/test_mesh_chain.py
	modified:   tests/test_mesh_cli.py
	modified:   tests/test_mesh_cli_pull.py
	modified:   tests/test_mesh_wire.py
	modified:   tests/test_mesh_wire_e2e.py
	modified:   tests/test_metacognition.py
	modified:   tests/test_migration_audit_mode.py
	modified:   tests/test_providence_source.py
	modified:   tests/test_qa.py
	modified:   tests/test_qa_quality_live.py
	modified:   tests/test_quantifier_caps.py
	modified:   tests/test_quantifier_classifier.py
	modified:   tests/test_quantifier_phase4.py
	modified:   tests/test_quantifier_reminder.py
	modified:   tests/test_query.py
	modified:   tests/test_reclassify.py
	modified:   tests/test_repair.py
	modified:   tests/test_resume.py
	modified:   tests/test_snapshot.py
	modified:   tests/test_soft_preflight.py
	modified:   tests/test_tfidf.py
	modified:   tests/test_vcs_source.py
	modified:   tests/test_verify.py
	modified:   tests/test_verify_json.py
	modified:   tests/test_versioned_ingest.py
	modified:   tests/test_warrant.py
	modified:   tests/test_wikipedia_old.py
	modified:   tests/test_wikipedia_xml.py
	modified:   tests/test_wikitext.py
This commit is contained in:
russell@unturf.com 2026-05-07 09:31:49 -04:00
parent 2c9d00ac95
commit 8d6961fcc1
No known key found for this signature in database
102 changed files with 716 additions and 716 deletions

View file

@ -8,10 +8,10 @@ contend.
Wired into `make backfill-concepts`. Usage:
python scripts/backfill_concepts.py --shards-dir ~/.aborist/shards
python scripts/backfill_concepts.py --shards-dir ~/.aborist/shards \
python scripts/backfill_concepts.py --shards-dir ~/.arborist/shards
python scripts/backfill_concepts.py --shards-dir ~/.arborist/shards \
--extractors link_reciprocity,token_idf,documents_fts
python scripts/backfill_concepts.py --shards-dir ~/.aborist/shards \
python scripts/backfill_concepts.py --shards-dir ~/.arborist/shards \
--workers 8
Skips shards that aren't numeric-stem (`000.db`, `001.db`, …) by
@ -28,8 +28,8 @@ import sys
import time
from pathlib import Path
from aborist.concepts.extract import EXTRACTORS
from aborist.store import connect, discover_shards
from arborist.concepts.extract import EXTRACTORS
from arborist.store import connect, discover_shards
# Default extractor order. link_reciprocity must run BEFORE token_idf
@ -66,7 +66,7 @@ def main(argv: list[str] | None = None) -> int:
parser.add_argument(
"--shards-dir",
type=Path,
default=Path.home() / ".aborist" / "shards",
default=Path.home() / ".arborist" / "shards",
help="Directory containing *.db shards.",
)
parser.add_argument(
@ -74,7 +74,7 @@ def main(argv: list[str] | None = None) -> int:
default=",".join(DEFAULT_EXTRACTORS),
help=(
"Comma-separated extractor names (registered in "
"aborist.concepts.extract.EXTRACTORS). Default: "
"arborist.concepts.extract.EXTRACTORS). Default: "
f"{','.join(DEFAULT_EXTRACTORS)}"
),
)

View file

@ -2,7 +2,7 @@
Pick three random words from /usr/share/dict/words, ask Hermes at
temp 0.8 to weave them into a creative question paragraph, send that
paragraph to aborist, log the whole journey (words → question →
paragraph to arborist, log the whole journey (words → question →
answer → audit_mode → sources → timings) as a single JSONL line.
Designed for **blue moon cadence**, NOT every-commit benching. The
@ -128,7 +128,7 @@ def run_one_cycle(
top_k: int,
) -> dict:
"""One emergent cycle: words → question → answer → log entry dict."""
from aborist.qa.query import DEFAULT_QUERY_POLICY, query
from arborist.qa.query import DEFAULT_QUERY_POLICY, query
t_pick = time.time()
question = generate_question(client, model_id, words)
@ -159,7 +159,7 @@ def run_one_cycle(
# ignored. Surfaced 2026-05-02 by the swallowtail/upbraided/rockiest
# emergent log entry. Off-the-binary-chain — gives the teacher
# reviewer a flag for poetic-question-vs-literal-answer mismatches.
from aborist.qa.inspect import diagnose_metaphor_deflection
from arborist.qa.inspect import diagnose_metaphor_deflection
metaphor = diagnose_metaphor_deflection(
question or "", result.get("answer_text") or ""
)
@ -206,14 +206,14 @@ def append_log(entry: dict, log_path: Path) -> None:
def emit_unfirehose_session(entry: dict, model_id: str) -> None:
"""Write one unfirehose/1.0 session for this bench cycle.
Same auto-discovery path as `aborist.cli._emit_query_journal`:
~/.aborist/unfirehose/{slug}/{session_uuid}.jsonl. Each cycle gets
Same auto-discovery path as `arborist.cli._emit_query_journal`:
~/.arborist/unfirehose/{slug}/{session_uuid}.jsonl. Each cycle gets
its own session file (one prompt → one answer = one session).
Failures must NEVER break the bench loop — wrapped at the call
site.
"""
from aborist.journal import SessionWriter
aborist_meta = {
from arborist.journal import SessionWriter
arborist_meta = {
"audit_mode": entry.get("audit_mode"),
"verifier_method": entry.get("verifier_method"),
"n_quotes": entry.get("n_quotes"),
@ -236,7 +236,7 @@ def emit_unfirehose_session(entry: dict, model_id: str) -> None:
s.system_message(
"bench-emergent cycle: 3-word triangulation",
subtype="init",
aborist_meta={"words": entry.get("words"), "harness_role": "generator"},
arborist_meta={"words": entry.get("words"), "harness_role": "generator"},
)
s.user_message(entry.get("question") or "")
s.assistant_message(
@ -244,7 +244,7 @@ def emit_unfirehose_session(entry: dict, model_id: str) -> None:
model=model_id,
provider="hermes",
duration_ms=int((entry.get("answer_seconds") or 0) * 1000) or None,
aborist_meta=aborist_meta,
arborist_meta=arborist_meta,
)
@ -284,23 +284,23 @@ def main(argv: list[str] | None = None) -> int:
parser.add_argument(
"--shards-dir",
type=Path,
default=Path.home() / ".aborist" / "shards",
default=Path.home() / ".arborist" / "shards",
)
parser.add_argument(
"--qa-db",
type=Path,
default=Path.home() / ".aborist" / "shards" / "qa.db",
default=Path.home() / ".arborist" / "shards" / "qa.db",
)
parser.add_argument("--answer-mode", default="claim_lattice")
parser.add_argument("--top-k", type=int, default=8)
parser.add_argument(
"--endpoint",
default=os.environ.get("ABORIST_LLM_ENDPOINT", "https://hermes.ai.unturf.com/v1"),
default=os.environ.get("ARBORIST_LLM_ENDPOINT", "https://hermes.ai.unturf.com/v1"),
)
parser.add_argument(
"--model",
default=os.environ.get(
"ABORIST_LLM_MODEL",
"ARBORIST_LLM_MODEL",
"adamo1139/Hermes-3-Llama-3.1-8B-FP8-Dynamic",
),
)
@ -320,9 +320,9 @@ def main(argv: list[str] | None = None) -> int:
parser.error(f"shards dir not found: {ns.shards_dir}")
rng = random.Random(ns.seed)
from aborist.qa.client import OpenAICompatibleClient
from arborist.qa.client import OpenAICompatibleClient
api_key = os.environ.get("ABORIST_LLM_API_KEY")
api_key = os.environ.get("ARBORIST_LLM_API_KEY")
client = OpenAICompatibleClient(base_url=ns.endpoint, api_key=api_key)
print(f">> emergent bench: {ns.n} cycles · seed={ns.seed} · log={ns.log_path}", flush=True)