Skip to content

feat(facts): port extract + crm to Go — de-python the repo - #55

Merged
eSlider merged 1 commit into
mainfrom
feat/de-python-facts
Aug 19, 2026
Merged

eSlider merged 1 commit into
mainfrom
feat/de-python-facts

Conversation

@eSlider

@eSlider eSlider commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Full Go ports of the last two python pipeline tools; removes all in-tree python.

extract (bin/facts/extract.go)

Two-source confirmed facts (docker ps x compose, ssh-config x docs markers), written into var/kb.lbug via brain.OpenWritable/UpsertLeaf with Go potion embeddings (bin/brain/model.go). Flags: --json, --dry-run, --ssh, --compose.

crm (bin/facts/crm.go)

Association proofing ooCRM graph.json x knowledge-mesh corpus. Corpus-org parser moved to internal/facts (CorpusOrgs) + unit tests (mirrors the removed python tests). Flags: --dry-run, --mismatches, --mesh, --graph.

housekeeping

  • bin/brain/index.go --with-facts execs the Go extractor via bin/cgo/zig (kernel shebang can't run //usr/bin/env files)
  • delete in-tree python: kblib, crmfacts, facts/extract, facts/crm, unit tests, orphaned python gates, qa/load_test_bulk.py, pyproject.toml, requirements.lock.txt, uv.lock
  • docs: README/PLAN/AGENTS/runbook/roadmap updated
  • go.mod: add gopkg.in/yaml.v3 (direct)

Verified: zig builds for both tagged files; go test ./... green; extract + crm dry-run pass.

bin/facts/extract.go and bin/facts/crm.go are now full Go implementations
(zig + system_ladybug, facts_extract/facts_crm tags):
- extract: docker ps x compose, ssh-config x docs two-source facts; writes
  var/kb.lbug via brain.OpenWritable/UpsertLeaf (Go model embeddings)
- crm: ooCRM graph.json x knowledge-mesh corpus association proofing;
  corpus-org parser moved to internal/facts (CorpusOrgs) with tests
- bin/brain/index.go --with-facts now execs the Go extractor via bin/cgo/zig
- drop all in-tree python: kblib, crmfacts, facts/extract + facts/crm
  scripts, their unit tests, orphaned python gates, qa/load_test_bulk.py,
  pyproject.toml, requirements.lock.txt, uv.lock
- docs updated (README/PLAN/AGENTS/runbook/roadmap); add gopkg.in/yaml.v3
@eSlider
eSlider merged commit 55b39c8 into main Aug 19, 2026
4 checks passed
@eSlider
eSlider deleted the feat/de-python-facts branch August 19, 2026 13:23
eSlider added a commit that referenced this pull request Aug 21, 2026
feat(fulfill): oo CRM association plan/apply tool (#52, #55)
eSlider added a commit that referenced this pull request Aug 21, 2026
…, docs truth-only

bin/chats → bin/chat, internal/chats → internal/chat (singular, D14).
refresh-linkedin-session python helper deleted — ported to
internal/chat/linkedin_session.go (CDP cookies via x/net/websocket,
profile copy, cookies.json + source-state.json); sync_linkedin calls it
in-process (no subprocess). New bin/chat/refresh-session.go entry.

docs/ = truth only:
- plans/proofs archived to Gitea (#64 chat-import, #55 crm-proof,
  #58 load-baseline, #38 mail-plan) and deleted here;
  refactor-v1.0.md → epic #65 body
- brain-rebuild → brain/rebuild.md, audit-recipes → facts/audit-recipes.md
- design.md honesty fixes: import-git writes directly (was print-flow),
  no bin/kb/python claims, MCP surface = 3 tools, audit-db not 'audit stale'
- roadmap marked historical; README index rewritten (current epics)

AGENTS.md standing rules: Go-only/no Python, libs by domain, docs=truth,
non-goals (graph semantics, reasoner/CGO untouched).
eSlider added a commit that referenced this pull request Aug 24, 2026
feat(facts): port extract + crm to Go — de-python the repo
eSlider added a commit that referenced this pull request Aug 24, 2026
…55)

Reads the corpus mesh, confirms each org against the 2dph brain, diffs
against the oo CRM, and emits (or applies via --apply) the oo CLI commands
to fulfill person/company/opportunity associations. Idempotent: anything
already present is skipped. Adds go.work.sum (go.work checksums).
eSlider added a commit that referenced this pull request Aug 24, 2026
feat(fulfill): oo CRM association plan/apply tool (#52, #55)
eSlider added a commit that referenced this pull request Aug 24, 2026
…, docs truth-only

bin/chats → bin/chat, internal/chats → internal/chat (singular, D14).
refresh-linkedin-session python helper deleted — ported to
internal/chat/linkedin_session.go (CDP cookies via x/net/websocket,
profile copy, cookies.json + source-state.json); sync_linkedin calls it
in-process (no subprocess). New bin/chat/refresh-session.go entry.

docs/ = truth only:
- plans/proofs archived to Gitea (#64 chat-import, #55 crm-proof,
  #58 load-baseline, #38 mail-plan) and deleted here;
  refactor-v1.0.md → epic #65 body
- brain-rebuild → brain/rebuild.md, audit-recipes → facts/audit-recipes.md
- design.md honesty fixes: import-git writes directly (was print-flow),
  no bin/kb/python claims, MCP surface = 3 tools, audit-db not 'audit stale'
- roadmap marked historical; README index rewritten (current epics)

AGENTS.md standing rules: Go-only/no Python, libs by domain, docs=truth,
non-goals (graph semantics, reasoner/CGO untouched).
eSlider added a commit that referenced this pull request Sep 15, 2026
feat(facts): port extract + crm to Go — de-python the repo
eSlider added a commit that referenced this pull request Sep 15, 2026
…55)

Reads the corpus mesh, confirms each org against the 2dph brain, diffs
against the oo CRM, and emits (or applies via --apply) the oo CLI commands
to fulfill person/company/opportunity associations. Idempotent: anything
already present is skipped. Adds go.work.sum (go.work checksums).
eSlider added a commit that referenced this pull request Sep 15, 2026
feat(fulfill): oo CRM association plan/apply tool (#52, #55)
eSlider added a commit that referenced this pull request Sep 15, 2026
…, docs truth-only

bin/chats → bin/chat, internal/chats → internal/chat (singular, D14).
refresh-linkedin-session python helper deleted — ported to
internal/chat/linkedin_session.go (CDP cookies via x/net/websocket,
profile copy, cookies.json + source-state.json); sync_linkedin calls it
in-process (no subprocess). New bin/chat/refresh-session.go entry.

docs/ = truth only:
- plans/proofs archived to Gitea (#64 chat-import, #55 crm-proof,
  #58 load-baseline, #38 mail-plan) and deleted here;
  refactor-v1.0.md → epic #65 body
- brain-rebuild → brain/rebuild.md, audit-recipes → facts/audit-recipes.md
- design.md honesty fixes: import-git writes directly (was print-flow),
  no bin/kb/python claims, MCP surface = 3 tools, audit-db not 'audit stale'
- roadmap marked historical; README index rewritten (current epics)

AGENTS.md standing rules: Go-only/no Python, libs by domain, docs=truth,
non-goals (graph semantics, reasoner/CGO untouched).
eSlider pushed a commit that referenced this pull request Sep 15, 2026
eSlider pushed a commit that referenced this pull request Sep 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant