Bundles PR #9's work for the audit pipeline: - N=3 consensus on cloud inference (gpt-oss:120b parallel) with qwen3-coder:480b tie-breaker - audit_discrepancies.jsonl logs N-run disagreements - scrum_master reviews route through llm_team fact extraction; source="scrum_review" - Verifier-gated persistence: drops INCORRECT, keeps UNVERIFIABLE/UNCHECKED; schema_version:2 - scrum_master_reviewed flag on accepted reviews - auditor/kb_stats.ts: on-demand observability script - claim_parser history/proof pattern class (verified-on-PR, was-flipping, the-proven-X) - claim_parser quoted-string guard (mirrors static.ts fix) - fact_extractor project context injection via docs/AUDITOR_CONTEXT.md - Fixed verifier-verdict parser to handle multiple gemma2 output formats Empirical: 3-run determinism test on unchanged PR #9 SHA showed 7/7 warn findings stable; block count oscillation eliminated; llm_team quality scores 8-9 on context-injected extract runs. See PR #9 for full run-by-run commit history.
70 lines
3.3 KiB
Markdown
70 lines
3.3 KiB
Markdown
# Auditor Context — project preamble for fact extraction
|
|
|
|
This file is read by `auditor/fact_extractor.ts` and prepended to the
|
|
extract-facts prompt sent to llm_team. The goal: give the extractor +
|
|
verifier enough grounding to ground domain-specific facts instead of
|
|
marking them UNVERIFIABLE by default.
|
|
|
|
Keep this short (< 400 words). Verifier only reads the first ~4KB of
|
|
the prompt alongside the facts. Longer = noise, not signal.
|
|
|
|
Update when: a new Phase lands, a crate is added/removed, the project's
|
|
primary domain shifts (e.g. staffing → DevOps).
|
|
|
|
---
|
|
|
|
## What Lakehouse is
|
|
|
|
Lakehouse is a Rust-first data platform over S3-compatible object
|
|
storage. Primary use: a staffing company ingesting legacy CRM data for
|
|
AI-powered worker matching, contract fulfillment, and playbook-driven
|
|
coordination.
|
|
|
|
Architecture: 13 Rust crates + a Python sidecar (Ollama) + TypeScript
|
|
sub-agents (auditor, scrum_master, bot). Runs on a single server
|
|
(Nvidia A4000, 128GB RAM). All services on localhost: gateway :3100,
|
|
sidecar :3200, UI :3300, MCP :3700, observer :3800, MinIO :9000.
|
|
|
|
## Key crates (each maps to a responsibility)
|
|
|
|
- **shared** — types, Arrow helpers, PII utilities, SecretsProvider
|
|
- **proto** — gRPC definitions
|
|
- **storaged** — S3/MinIO I/O, AppendLog, ErrorJournal
|
|
- **catalogd** — metadata authority (manifests, views, tombstones)
|
|
- **queryd** — DataFusion SQL, MemTable cache, compaction
|
|
- **ingestd** — CSV/JSON/PDF/Postgres/MySQL ingest
|
|
- **vectord** — embeddings, HNSW index, **playbook_memory meta-index** (Phase 19+)
|
|
- **vectord-lance** — Lance 4.0 firewall crate (separate Arrow version)
|
|
- **journald** — append-only mutation event log
|
|
- **aibridge** — Rust↔Python sidecar bridge, context budget + continuation
|
|
- **gateway** — Axum HTTP :3100 + gRPC :3101 (Phase 38+ adds /v1/chat)
|
|
- **ui** — Dioxus WASM (stale, pre-Phase-9)
|
|
- **lance-bench** — standalone benchmark
|
|
|
|
## Current architectural direction (Phase 38-44)
|
|
|
|
Universal AI Control Plane: a `/v1/chat` OpenAI-compatible API that
|
|
routes all LLM traffic through one layer for token accounting + provider
|
|
fallback. Truth Layer + Validation Pipeline enforce staffing-domain
|
|
invariants (worker eligibility, PII, contract rules). The Auditor
|
|
(Phase A of cohesion plan) hard-blocks PR merges on placeholder code.
|
|
|
|
## Auditor sub-agent role
|
|
|
|
`auditor/` (TypeScript, Bun runtime) polls Gitea every 90s for open PRs.
|
|
For each fresh head SHA it runs 4 checks in parallel: static (grep-style
|
|
placeholder detection), dynamic (runs the hybrid fixture), inference
|
|
(gpt-oss:120b cloud review with N=3 consensus + qwen3-coder:480b
|
|
tie-breaker), and kb_query (reads `data/_kb/*.jsonl` for prior evidence).
|
|
Verdicts post to Gitea as commit status + review comment. Findings
|
|
append to `data/_kb/audit_lessons.jsonl` (path-agnostic signatures for
|
|
dedup). Curated scratchpads from tree-split get routed through this
|
|
extract-facts pipeline to populate `audit_facts.jsonl` — which is what
|
|
you (the extractor) are currently producing.
|
|
|
|
## Things that are NOT the auditor
|
|
|
|
- The LLM Team UI at `/root/llm_team_ui.py` (devop.live:5000) — a separate product for human-facing multi-model experimentation
|
|
- The scrum_master pipeline at `tests/real-world/scrum_master_pipeline.ts` — reviews files, not claims
|
|
- The bot at `bot/` — will apply fixes, doesn't audit
|