eSlider
2332613c43
ci: point eval at the checkout and keep DevOps in the corpus.
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
Tests / Test (pull_request) Failing after 39s
Tests / Release (semver) (pull_request) Skipped
/tmp/brain-eval cannot walk up to var/kb.lbug; KB_ROOT is required.
Recall fragments must exist in README/docs so a repo-only rebuild gates.
2026-08-14 11:00:39 +01:00
eSlider and GitHub
c5be3f19be
feat: index facts extract and chats markdown on rebuild. ( #31 )
...
Tests / Test (push) Failing after 5s
Tests / Release (semver) (push) Skipped
--with-facts / --facts-json write root=facts leafs; --with-chats
picks up var/chats/md as info. WhatsApp sync stays out of v1 (Gitea #18 ).
2026-08-14 10:57:40 +01:00
eSlider and GitHub
a88dbb490c
feat: search --hop walks FROM_FILE to Person. ( #30 )
...
Tests / Test (push) Failing after 4s
Tests / Release (semver) (push) Skipped
Parser no longer errors; hop 1 returns File, hop 3 reaches Person.
Rebuild writes Leaf-[:FROM_FILE]->File so the walk is not empty
on a fresh index (Gitea #17 ).
2026-08-14 10:51:35 +01:00
eSlider and GitHub
9d1a3f3c70
feat: write leafs incrementally without rebuilding the graph. ( #29 )
...
Tests / Test (push) Failing after 4s
Tests / Release (semver) (push) Skipped
Ladybug 0.19 stays FTS/HNSW queryable on MERGE of new ids; DROP INDEX
was the fatal path. bin/brain/add.go and POST /ingest land facts+info
in one transaction so watch/mail/git can become leafs now (Gitea #14 ).
2026-08-14 10:46:59 +01:00
eSlider and GitHub
8b5be9b659
docs: record v1 detective epic and remaining gaps. ( #28 )
...
Tests / Test (push) Failing after 4s
Tests / Release (semver) (push) Skipped
Read path and MCP are in; write, hops, corpus, and CI eval are still open. Board is Gitea epic #16 .
2026-08-14 10:32:19 +01:00
eSlider and GitHub
1edb158f35
docs: portable runbook and Diataxis index ( #27 )
...
Tests / Test (push) Failing after 5s
Tests / Release (semver) (push) Skipped
Public face is a product, not a laptop tool. Run steps live in
docs/runbook.md; decisions D3/D6/D14/D15/D17/D18 stay in the docs index.
2026-08-13 23:31:41 +01:00
eSlider and GitHub
85caff90b9
feat: markdown import splits H2 leafs in Go ( #26 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
Drop the Python ExecFile wrapper. Conversion still does not write
Ladybug; add a dry-run fixture check for the index adapter split.
2026-08-13 23:27:42 +01:00
eSlider and GitHub
b317968a4c
feat: CPU reasoner bake-off for Qwen3.5-9B vs Bonsai ( #25 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
Measure OpenAI tool_calls (search/get/audit) on a CPU Ollama sidecar
instead of gating D18 on GPU or PicoClaw. Weights stay out of the image.
2026-08-13 23:19:51 +01:00
eSlider and GitHub
1f9bdb0bf6
feat: compile ladybug CGO with Zig, not gcc ( #24 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
API image is Go-only (compose target api). Python rebuild is profile
index. bin/cgo/zig pins Zig 0.14.1, liblbug, and tokenizers.
2026-08-13 21:54:31 +01:00
eSlider and GitHub
0a05803f4b
feat: PicoClaw compose profile exposes brain MCP on localhost ( #23 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
Agent is not shipped. docker compose --profile picoclaw up brain-mcp
and point the client at 127.0.0.1:8630/mcp.
2026-08-13 21:40:40 +01:00
eSlider and GitHub
d894c6609f
feat: generate brain tools skill from OpenAPI; rename db-yaml to postgres ( #21 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
Cursor skills stay in lockstep with serve handlers. CI checks every bin/
path named in SKILL.md exists.
2026-08-13 21:32:57 +01:00
eSlider and GitHub
ff80359684
feat: OpenAPI and MCP from the same serve handlers ( #20 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
Agents get GET /openapi.json and POST /mcp. Tool names match
search/get/stats/audit paths so PicoClaw does not need shebangs.
2026-08-13 21:26:06 +01:00
eSlider and GitHub
36976d9b53
feat: facts audit/extract/crm shebang wrappers (D14) ( #19 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
Python stays the implementation. Commands are bin/facts/{audit,extract,crm}.go
like postgres/query.go.
2026-08-13 21:20:28 +01:00
eSlider and GitHub
8e6f67cc97
feat: brain get/stats/eval call internal/brain, not Python ( #18 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
Read path is cgo like search. Control questions live in rank so CI can
test them without ladybug. Python bin/kb/{get,stats,eval} stays the
runner fallback.
2026-08-13 21:16:48 +01:00
eSlider and GitHub
aca05626bd
feat: escalate brain search to web when facts cannot confirm ( #17 )
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
2026-08-13 20:24:30 +01:00
eSlider and GitHub
39ae2abe8d
feat: Go SearXNG client; throttled is not absence ( #16 )
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
2026-08-13 19:53:31 +01:00
eSlider and GitHub
ba5cc3a6e2
feat: read git history with go-git, not the git binary ( #15 )
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
2026-08-13 18:07:56 +01:00
eSlider and GitHub
3f30052ea8
feat: in-process HTTP search; /get /stats /audit /ingest. ( #13 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
bin/brain/serve.go (ladybug tags) calls internal/brain instead of exec.
HTTP tests inject a fake API so CI stays cgo-free. ExecSearcher remains
the fallback when the binary is built without system_ladybug.
2026-08-13 17:52:15 +01:00
eSlider and GitHub
c1ee920b0a
feat: brain/index.go shebang; mail import is not a brain write (D14). ( #12 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
Commands live at bin/brain/{index,get,stats,eval,watch}.go and
bin/mail/import.go, bin/markdown/import.go, bin/postgres/query.go.
Python remains the Ladybug write worker. index_mail is a deprecation
shim that rebuilds via --with-mail.
2026-08-13 17:46:25 +01:00
eSlider and GitHub
46310f8773
docs: name bin/brain/search.go; --hop is not a graph walk. ( #10 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
Published docs and skills still taught bin/kb/search --hop 1. Search lives
at bin/brain/search.go; --hop errors until File edges exist. A unittest
gates the SoT so the lie cannot return.
2026-08-13 17:23:40 +01:00
eSlider and GitHub
dd6d7e9395
docs: point issues at Gitea origin (D15). ( #7 )
...
Tests / Test (push) Skipped
Tests / Release (semver) (push) Skipped
GitHub stays the public clone for PRs and Actions. Work board is
https://git.produktor.io/eSlider/2dph/issues .
2026-08-13 14:11:00 +01:00
eSlider and Cursor
a5a1f91d95
fix(kb): stop DROP INDEX killing HNSW via Ladybug ghost catalog
...
Ladybug 0.19 DROP INDEX leaves `_0_Leaf_vec_UPPER` / `0_id_docs` in catalog so
CREATE fails while SHOW_INDEXES omits the index; create_fts_and_vector used to
swallow that. Never drop FTS/VECTOR; ensure_indexes after upserts; rebuild =
delete kb.lbug. Add compose.edelweiss.yml + regression tests.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-12 16:05:14 +01:00
eSlider
80e3b7a1cf
Remove curasoft references, rename to detective method
...
- PLAN.md: replace 'curasoft-detective' with 'detective method'
- README.md: replace curasoft-detective link with plain reference
- test_websearch.py: fix test domain from ticket.curasoft.de to example.com
- Rewrote git history with git-filter-repo to remove all traces
2026-08-12 13:46:54 +01:00
eSlider
60c20ed98d
feat(mail): full Gmail+OnlyOffice sync, import, and brain indexing
...
- bin/mail/sync.go: async Go sync engine (8 workers, paginated Gmail via
API + OnlyOffice IMAP); Gmail attachments key off body.attachmentId, not
MIME partId; ICS sidecars Latin-1->UTF-8 normalized (TestICSToMarkdownNormalizesLatin1)
- bin/mail/import: message.json -> markdown; PDFs via pdftotext -layout
fast path with docling subprocess fallback for the ~5% textless files
- bin/mail/index_mail: fresh-rebuild indexer (repo corpus + mail) avoiding
ladybug WAL corruption on bulk-insert into indexed DBs; split from import
- bin/kb/index: keep FTS/VECTOR indexes across incremental runs (drop+recreate
leaves stale backing tables killing the vector index)
- docs: README/PLAN/AGENTS cover the mail pipeline
Result: 17,835 messages -> 28,918 info leafs, FTS+HNSW healthy.
2026-08-11 21:57:38 +01:00
eSlider
9f22380e82
refactor(tools): bin/{subject}/{method} layout; Go serve+watch modules
...
Move serve/ (module) -> bin/server, tools/ -> bin/tools, replace bin/kb-watch
bash with bin/watch Go package; self-executing Go shebangs bin/serve.go and
bin/kb/watch.go; Docker + CI + git/import + docs repointed. Multi-stage image
builds static serve+watch binaries (no Go runtime in container).
2026-08-11 09:52:20 +01:00
eSlider
4fdc0ef4a8
feat(kb): brain tools, Go async serve, root-level docker
...
- tools/kblib.py: ladybug schema, embeddings, FTS+vector, hybrid RRF
- bin/kb/{index,search,get,stats,eval}: corpus indexing + deduction search
- bin/facts/{extract,audit}: 2-source evidence acquisition + gates
- serve/: async Go HTTP server (goroutines, bounded worker pool), TDD
- docker/ flattened to root: compose.yaml + Dockerfile (multi-stage Go)
- docker scripts -> bin/ shebang pattern (kb-watch, docker-entrypoint)
- bin/ci/semver + tools/semver.py: conventional-commit semver release
- ci.yml: go tests + shell checks; drop release-please (PR toggle blocked)
2026-08-10 21:58:25 +01:00
eSlider
63d3be0e19
build(ci): uv toolchain, release-please semver; feat(skills): vendor tools self-contained (no symlinks, relative refs)
...
- bin/db/psql-yq + bin/web/search + tools/{yamlout,websearch} vendored as real files
- bin/db/ssh-tunnel added (OnlyOffice VM pg on 5433)
- skills reference local bin/ paths; no agent-skills/abs links in git
- pyproject.toml + uv.lock; CI installs via uv sync --frozen
- release-please auto-tags semver from conventional commits when green
- LICENSE MIT, badges/mermaid README
2026-08-10 21:24:42 +01:00