feat(kb): CRM association proof via oo, fix ssh-tunnel self-ref + oo creds
- bin/facts/crm: prove person<->company/company<->project against ooCRM x corpus SoT (knowledge-mesh-seed.yaml), write 78 facts (root=facts) - tools/crmfacts.py + test_crm_facts.py: parser under unit tests (26 pass) - docs/crm-associations-proof.md: provable graph, mistakes, fixes - oo merge 759->763 resolves duplicate GoldenRatio.Exchange legal entity - bin/db/ssh-tunnel: "$0" self-check + accept-new/BatchMode ssh flags - AGENTS.md: document bin/facts/crm
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
||||
|
||||
import crmfacts # noqa: E402
|
||||
|
||||
FM = """\
|
||||
schema: 2
|
||||
meta:
|
||||
title: x
|
||||
orgs:
|
||||
- id: produktor
|
||||
label: ProProdukt SL / produktor.io
|
||||
kind: own
|
||||
period: 2006–present
|
||||
website: https://produktor.io
|
||||
- id: dyvenia
|
||||
label: Dyvenia
|
||||
kind: employer
|
||||
period: 2023–2025
|
||||
clients:
|
||||
- name: One
|
||||
- name: Two
|
||||
timeline:
|
||||
- start: 2001
|
||||
"""
|
||||
|
||||
|
||||
class CorpusOrgsTest(unittest.TestCase):
|
||||
def test_parses_label_kind_period(self):
|
||||
orgs = crmfacts.corpus_orgs(FM)
|
||||
self.assertEqual(orgs["produktor"]["label"], "ProProdukt SL / produktor.io")
|
||||
self.assertEqual(orgs["produktor"]["kind"], "own")
|
||||
self.assertEqual(orgs["dyvenia"]["kind"], "employer")
|
||||
|
||||
def test_does_not_leak_clients_into_orgs(self):
|
||||
orgs = crmfacts.corpus_orgs(FM)
|
||||
self.assertNotIn("One", orgs)
|
||||
self.assertNotIn("Two", orgs)
|
||||
self.assertNotIn("timeline", orgs)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user