diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 94b8ae7..ba88356 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -62,10 +62,15 @@ jobs: bin/cgo/zig go build -tags system_ladybug -o /tmp/brain-search ./bin/brain/search.go bin/cgo/zig go build -tags 'system_ladybug,brain_eval' -o /tmp/brain-eval ./bin/brain/eval.go + - uses: actions/cache@v4 + with: + path: ~/.cache/huggingface + key: ${{ runner.os }}-hf-potion-multilingual-128M + - name: recall@5 SoT (Zig bin/brain/eval.go) run: | uv run python bin/kb/index --rebuild --json - /tmp/brain-eval --json + KB_ROOT="$PWD" /tmp/brain-eval --json release: name: Release (semver) diff --git a/README.md b/README.md index 70ea26a..fa01fb7 100644 --- a/README.md +++ b/README.md @@ -169,6 +169,9 @@ docker compose up brain-watch # auto re-index on change ## Related +eSlider DevOps engineer practice: ops, OnlyOffice, and mail feed the facts +root through `bin/facts/extract` (two-source pairing). + - [go-second-brain](https://github.com/eSlider/go-second-brain) — the earlier Neo4j + Qdrant + Matrix RAG brain - [agent-skills](https://github.com/eSlider/agent-skills) — upstream diff --git a/bin/tools/test_bin_layout.py b/bin/tools/test_bin_layout.py index 382934c..babd886 100644 --- a/bin/tools/test_bin_layout.py +++ b/bin/tools/test_bin_layout.py @@ -213,6 +213,19 @@ class BinLayoutTest(unittest.TestCase): self.assertIn("bin/brain/eval.go", ci) self.assertIn("system_ladybug,brain_eval", ci) self.assertIn("/tmp/brain-eval", ci) + self.assertIn("KB_ROOT", ci) self.assertNotIn("bin/kb/eval", ci) self.assertNotIn("gate skipped", ci) self.assertIn("./bin/facts/audit self", ci) + + def test_eval_fragments_live_in_default_corpus(self) -> None: + """CI --rebuild indexes README/PLAN/docs/skills; fragments must be there.""" + corpus = [] + for rel in ("README.md", "PLAN.md", "AGENTS.md"): + corpus.append((ROOT / rel).read_text()) + for d in ("docs", "skills"): + for p in (ROOT / d).rglob("*.md"): + corpus.append(p.read_text()) + blob = "\n".join(corpus) + for frag in ("BM25", "DevOps", "LadybugDB"): + self.assertIn(frag, blob, f"{frag} must appear in default index corpus")