Architectural snapshot of the lakehouse codebase at the point where the
full matrix-driven agent loop with Mem0 versioning + deletion was
validated end-to-end.
WHAT THIS REPO IS
A clean single-commit snapshot of the lakehouse code. Heavy test data
(.parquet datasets, vector indexes) excluded — see REPLICATION.md for
regen path. Full lakehouse history at git.agentview.dev/profit/lakehouse.
WHAT WAS PROVEN
- Vector retrieval across multi-corpora matrix (chicago_permits + entity
briefs + sec_tickers + distilled procedural + llm_team runs)
- Observer hand-review (cloud + heuristic fallback) gating each candidate
- Local-model agent loop (qwen3.5:latest) with tool use + scratchpad
- Playbook seal on success → next-iter retrieval surfaces it as preamble
- Mem0 versioning + deletion in pathway_memory:
* UPSERT: ADD on new workflow, UPDATE bumps replay_count on identical
* REVISE: chains versions, parent.superseded_at + superseded_by stamped
* RETIRE: marks specific trace retired with reason, excluded from retrieval
* HISTORY: walks chain root→tip, cycle-safe
KEY DIRECTORIES
- crates/vectord/src/pathway_memory.rs — Mem0 ops live here
- crates/vectord/src/playbook_memory.rs — original Mem0 reference
- tests/agent_test/ — local-model agent harness + PRD + session archives
- scripts/dump_raw_corpus.sh — MinIO bucket dump (raw test corpus)
- scripts/vectorize_raw_corpus.ts — corpus → vector indexes
- scripts/analyze_chicago_contracts.ts — real inference pipeline
- scripts/seal_agent_playbook.ts — Mem0 upsert from agent traces
Replication: see REPLICATION.md for Debian 13 clean install + cloud-only
adaptation (no local Ollama).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
// Run the test gate: `cargo test --workspace` + `bun test`.
|
|
// Returns { green, output } — output is last ~4KB of combined stdout/stderr.
|
|
|
|
import { spawn } from "node:child_process";
|
|
|
|
const REPO_ROOT = "/home/profit/lakehouse";
|
|
const TEST_TIMEOUT_MS = 15 * 60 * 1000; // 15 min cargo + 2 min bun, generous
|
|
|
|
export async function runTests(): Promise<{ green: boolean; output: string }> {
|
|
const cargoOut = await runCmd("cargo", ["test", "--workspace", "--quiet", "--", "--test-threads=1"], REPO_ROOT, TEST_TIMEOUT_MS);
|
|
if (cargoOut.code !== 0) {
|
|
return { green: false, output: tail(`cargo test (${cargoOut.code}):\n${cargoOut.combined}`) };
|
|
}
|
|
|
|
const bunOut = await runCmd("bun", ["test", "tests/multi-agent"], REPO_ROOT, 120000);
|
|
const bunGreen = bunOut.code === 0;
|
|
const combined = [
|
|
`cargo test: OK`,
|
|
`bun test (${bunOut.code}):`,
|
|
bunOut.combined,
|
|
].join("\n");
|
|
return { green: bunGreen, output: tail(combined) };
|
|
}
|
|
|
|
function tail(s: string, n = 4096): string {
|
|
return s.length > n ? "…" + s.slice(-n) : s;
|
|
}
|
|
|
|
function runCmd(
|
|
cmd: string,
|
|
args: string[],
|
|
cwd: string,
|
|
timeoutMs: number,
|
|
): Promise<{ code: number; combined: string }> {
|
|
return new Promise(resolveP => {
|
|
const child = spawn(cmd, args, { cwd, env: { ...process.env } });
|
|
let combined = "";
|
|
child.stdout.on("data", d => { combined += d.toString(); });
|
|
child.stderr.on("data", d => { combined += d.toString(); });
|
|
const timer = setTimeout(() => child.kill("SIGKILL"), timeoutMs);
|
|
child.on("close", code => {
|
|
clearTimeout(timer);
|
|
resolveP({ code: code ?? -1, combined });
|
|
});
|
|
});
|
|
}
|