diff --git a/knowledge/global/cross_repo.yaml b/knowledge/global/cross_repo.yaml new file mode 100644 index 0000000..7dc08f7 --- /dev/null +++ b/knowledge/global/cross_repo.yaml @@ -0,0 +1,540 @@ + +--- +domain: global +category: pattern +version: 1 +last_updated: '2026-04-26T11:22:05.449323+00:00' +facts: +- id: cross-repo:connection:001 + fact: "hermes-agent references compounding-intelligence via issue #229: [ATLAS]\ + \ Steal the highest-leverage ecosystem patterns into the sovereign stack \u2192\ + \ [compounding-intelligence#229] [ATLAS][Telemetry] Build local token and cost\ + \ ingestion using Tokscale core patterns" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:56.905616+00:00' + last_confirmed: '2026-04-26T11:21:56.905641+00:00' + related: [] +- id: cross-repo:connection:002 + fact: "hermes-agent references compounding-intelligence via issue #231: [ATLAS]\ + \ Steal the highest-leverage ecosystem patterns into the sovereign stack \u2192\ + \ [compounding-intelligence#231] [ATLAS][Wiki] Build the LLM Wiki layer: ingest,\ + \ query, lint, and session crystallization into durabl" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:57.230615+00:00' + last_confirmed: '2026-04-26T11:21:57.230632+00:00' + related: [] +- id: cross-repo:connection:003 + fact: "hermes-agent references compounding-intelligence via issue #232: [ATLAS]\ + \ Steal the highest-leverage ecosystem patterns into the sovereign stack \u2192\ + \ [compounding-intelligence#232] [ATLAS][Research] Solve the swarm-memory gap\ + \ for concurrent subagents" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:57.415552+00:00' + last_confirmed: '2026-04-26T11:21:57.415580+00:00' + related: [] +- id: cross-repo:connection:004 + fact: "hermes-agent references fleet-ops via issue #410: [ATLAS] Steal the highest-leverage\ + \ ecosystem patterns into the sovereign stack \u2192 [fleet-ops#410] [ATLAS][Safety]\ + \ Deploy a virtual-credential and DLP sidecar for sovereign agent runs" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:57.716479+00:00' + last_confirmed: '2026-04-26T11:21:57.716488+00:00' + related: [] +- id: cross-repo:connection:005 + fact: "hermes-agent references the-nexus via issue #893: [CONSOLIDATED] Fleet SITREP\ + \ \u2014 Allegro 7-Task Execution + Ezra Deliverables \u2192 [the-nexus#893] [AUDIT]\ + \ System Formalization \u2014 OSS Replacements & Cleanup Candidates" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:57.961498+00:00' + last_confirmed: '2026-04-26T11:21:57.961510+00:00' + related: [] +- id: cross-repo:connection:006 + fact: "hermes-agent references the-nexus via issue #1695: [ATLAS] Steal the highest-leverage\ + \ ecosystem patterns into the sovereign stack \u2192 [the-nexus#1695] [ATLAS][Cockpit]\ + \ Build the operator inspector rail and session shell patterns worth stealing" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:58.130733+00:00' + last_confirmed: '2026-04-26T11:21:58.130745+00:00' + related: [] +- id: cross-repo:connection:007 + fact: "hermes-agent references timmy-config via issue #875: [ATLAS] Steal the highest-leverage\ + \ ecosystem patterns into the sovereign stack \u2192 [timmy-config#875] [ATLAS][Skills]\ + \ Import Karpathy-style cognitive principles and GStack-style role commands as\ + \ native " + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:58.327960+00:00' + last_confirmed: '2026-04-26T11:21:58.327972+00:00' + related: [] +- id: cross-repo:connection:008 + fact: "hermes-agent references timmy-dispatch via issue #18: [ATLAS] Steal the highest-leverage\ + \ ecosystem patterns into the sovereign stack \u2192 [timmy-dispatch#18] [ATLAS][Dispatch]\ + \ Add Mission Control-style dispatch ledger, capacity model, and heartbeat tracking" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:58.502966+00:00' + last_confirmed: '2026-04-26T11:21:58.502981+00:00' + related: [] +- id: cross-repo:connection:009 + fact: "hermes-agent references timmy-home via issue #568: [DISPATCH] Ezra \u2014\ + \ Investigate & Install MemPalace on Hermes VPS \u2192 [timmy-home#568] [EVALUATION]\ + \ MemPalace v3.0.0 Integration \u2014 Before/After Metrics + Recommendation" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:58.967894+00:00' + last_confirmed: '2026-04-26T11:21:58.967906+00:00' + related: [] +- id: cross-repo:connection:010 + fact: "the-nexus references hermes-agent via issue #984: [ATLAS][Cockpit] Build\ + \ the operator inspector rail and session shell patterns worth stealing \u2192\ + \ [hermes-agent#984] [ATLAS] Steal the highest-leverage ecosystem patterns into\ + \ the sovereign stack" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:59.445454+00:00' + last_confirmed: '2026-04-26T11:21:59.445470+00:00' + related: [] +- id: cross-repo:connection:011 + fact: "timmy-config references the-nexus via issue #501: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-26 (Thursday) \u2192 [the-nexus#501] [claude] Re-implement\ + \ gravity anomaly zones (#478)" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:21:59.975253+00:00' + last_confirmed: '2026-04-26T11:21:59.975291+00:00' + related: [] +- id: cross-repo:connection:012 + fact: "timmy-config references the-nexus via issue #502: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-26 (Thursday) \u2192 [the-nexus#502] [claude] Time-lapse\ + \ replay mode (#484)" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:00.193542+00:00' + last_confirmed: '2026-04-26T11:22:00.193552+00:00' + related: [] +- id: cross-repo:connection:013 + fact: "timmy-config references the-nexus via issue #503: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-26 (Thursday) \u2192 [the-nexus#503] [claude] InstancedMesh\ + \ optimizations for repeated geometry (#482)" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:00.515208+00:00' + last_confirmed: '2026-04-26T11:22:00.515229+00:00' + related: [] +- id: cross-repo:connection:014 + fact: "timmy-config references the-nexus via issue #552: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-26 (Thursday) \u2192 [the-nexus#552] [HEARTBEAT] Apprentice\ + \ protocol \u2014 episodic memory logging of desktop activity" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:00.658814+00:00' + last_confirmed: '2026-04-26T11:22:00.658829+00:00' + related: [] +- id: cross-repo:connection:015 + fact: "timmy-config references the-nexus via issue #554: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-26 (Thursday) \u2192 [the-nexus#554] [ECONOMY] Stand up\ + \ Cashu Mint on Lightning" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:01.089278+00:00' + last_confirmed: '2026-04-26T11:22:01.089287+00:00' + related: [] +- id: cross-repo:connection:016 + fact: "timmy-config references the-nexus via issue #555: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-26 (Thursday) \u2192 [the-nexus#555] [ECONOMY] Prototype\ + \ Bannerlord Denar \u2192 Cashu token Harmony patch" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:01.297062+00:00' + last_confirmed: '2026-04-26T11:22:01.297069+00:00' + related: [] +- id: cross-repo:connection:017 + fact: "timmy-config references the-nexus via issue #613: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-28 (Saturday) \u2192 [the-nexus#613] [gemini] [HARNESS]\ + \ Shadow Context Manager \u2014 auto-generated brain dump for session continuity\ + \ (#608)" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:01.814895+00:00' + last_confirmed: '2026-04-26T11:22:01.814905+00:00' + related: [] +- id: cross-repo:connection:018 + fact: "timmy-config references the-nexus via issue #673: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-28 (Saturday) \u2192 [the-nexus#673] [PORTAL] Deterministic\ + \ Morrowind pilot loop with world-state proof" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:02.118691+00:00' + last_confirmed: '2026-04-26T11:22:02.118711+00:00' + related: [] +- id: cross-repo:connection:019 + fact: "timmy-config references the-nexus via issue #674: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-28 (Saturday) \u2192 [the-nexus#674] [PORTAL] Reflex tactical\ + \ layer and semantic trajectory logging" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:02.261655+00:00' + last_confirmed: '2026-04-26T11:22:02.261669+00:00' + related: [] +- id: cross-repo:connection:020 + fact: "timmy-config references the-nexus via issue #675: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-28 (Saturday) \u2192 [the-nexus#675] [HARNESS] Deterministic\ + \ context compaction for long local sessions" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:02.403879+00:00' + last_confirmed: '2026-04-26T11:22:02.403922+00:00' + related: [] +- id: cross-repo:connection:021 + fact: "timmy-config references the-nexus via issue #676: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-28 (Saturday) \u2192 [the-nexus#676] [gemini] [PORTAL]\ + \ Reflex tactical layer and semantic trajectory logging (#674)" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:02.545921+00:00' + last_confirmed: '2026-04-26T11:22:02.545931+00:00' + related: [] +- id: cross-repo:connection:022 + fact: "timmy-config references the-nexus via issue #677: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-28 (Saturday) \u2192 [the-nexus#677] [gemini] [HARNESS]\ + \ Deterministic context compaction for long local sessions (#675)" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:02.691982+00:00' + last_confirmed: '2026-04-26T11:22:02.691988+00:00' + related: [] +- id: cross-repo:connection:023 + fact: "timmy-config references the-nexus via issue #730: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-29 (Sunday) \u2192 [the-nexus#730] [VISUAL] Give Workshop,\ + \ Archive, Chapel, Courtyard, and Gate distinct Nexus visual identities" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:03.030374+00:00' + last_confirmed: '2026-04-26T11:22:03.030404+00:00' + related: [] +- id: cross-repo:connection:024 + fact: "timmy-config references the-nexus via issue #731: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-29 (Sunday) \u2192 [the-nexus#731] [VALIDATION] Browser\ + \ smoke + visual proof for the Evennia-fed Nexus shell" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:03.245877+00:00' + last_confirmed: '2026-04-26T11:22:03.245885+00:00' + related: [] +- id: cross-repo:connection:025 + fact: "timmy-config references the-nexus via issue #736: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-29 (Sunday) \u2192 [the-nexus#736] Perplexity review" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:03.471514+00:00' + last_confirmed: '2026-04-26T11:22:03.471536+00:00' + related: [] +- id: cross-repo:connection:026 + fact: "timmy-config references the-nexus via issue #785: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-30 (Monday) \u2192 [the-nexus#785] Implement SharedArrayBuffer\ + \ for Zero-Copy Data Sharing" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:03.598910+00:00' + last_confirmed: '2026-04-26T11:22:03.598925+00:00' + related: [] +- id: cross-repo:connection:027 + fact: "timmy-config references the-nexus via issue #786: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-30 (Monday) \u2192 [the-nexus#786] Implement GPU-Accelerated\ + \ Knowledge Graph Queries" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:03.762768+00:00' + last_confirmed: '2026-04-26T11:22:03.762779+00:00' + related: [] +- id: cross-repo:connection:028 + fact: "timmy-config references the-nexus via issue #787: \u2600\uFE0F Good Morning\ + \ Report \u2014 2026-03-30 (Monday) \u2192 [the-nexus#787] Implement Hierarchical\ + \ L1/L2 Cache for Meta-Reasoning" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:03.917083+00:00' + last_confirmed: '2026-04-26T11:22:03.917092+00:00' + related: [] +- id: cross-repo:connection:029 + fact: "timmy-home references hermes-agent via issue #72: \U0001F525 Burn Report\ + \ #5 \u2014 2026-04-01 \u2014 Crisis Safety Test Infrastructure \u2192 [hermes-agent#72]\ + \ [RED TEAM] Full Jailbreak Audit - Claude Opus 4.6 - 2026-03-30" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:04.071933+00:00' + last_confirmed: '2026-04-26T11:22:04.071949+00:00' + related: [] +- id: cross-repo:connection:030 + fact: "timmy-home references hermes-agent via issue #74: [BURN REPORT] SHIELD Security\ + \ Implementation - Issues #72/#74/#75 \u2192 [hermes-agent#74] [RED TEAM] ULTRAPLINIAN\ + \ Crisis Stress Test \u2014 22 CRITICAL Failures \u2014 2026-03-31" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:04.214487+00:00' + last_confirmed: '2026-04-26T11:22:04.214499+00:00' + related: [] +- id: cross-repo:connection:031 + fact: "timmy-home references hermes-agent via issue #75: [BURN REPORT] SHIELD Security\ + \ Implementation - Issues #72/#74/#75 \u2192 [hermes-agent#75] [SHIELD] Jailbreak\ + \ Input Detection Module \u2014 Built Overnight From Red Team Findings" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:04.369176+00:00' + last_confirmed: '2026-04-26T11:22:04.369184+00:00' + related: [] +- id: cross-repo:connection:032 + fact: "timmy-home references hermes-agent via issue #79: \U0001F525 Burn Report\ + \ #5 \u2014 2026-04-01 \u2014 Crisis Safety Test Infrastructure \u2192 [hermes-agent#79]\ + \ [SECURITY] [CRITICAL] Test og_godmode template against crisis/suicide safety\ + \ queries" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:04.884029+00:00' + last_confirmed: '2026-04-26T11:22:04.884062+00:00' + related: [] +- id: cross-repo:connection:033 + fact: "timmy-home references hermes-agent via issue #80: \U0001F525 Burn Report\ + \ #5 \u2014 2026-04-01 \u2014 Crisis Safety Test Infrastructure \u2192 [hermes-agent#80]\ + \ [SECURITY] [HIGH] Implement input sanitization for GODMODE jailbreak patterns" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:05.116347+00:00' + last_confirmed: '2026-04-26T11:22:05.116357+00:00' + related: [] +- id: cross-repo:connection:034 + fact: "timmy-home references hermes-agent via issue #81: \U0001F525 Burn Report\ + \ #5 \u2014 2026-04-01 \u2014 Crisis Safety Test Infrastructure \u2192 [hermes-agent#81]\ + \ [SECURITY] [MEDIUM] ULTRAPLINIAN follow-up: Red team fallback chain (Kimi, Gemini,\ + \ Grok, Llama)" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:05.279272+00:00' + last_confirmed: '2026-04-26T11:22:05.279284+00:00' + related: [] +- id: cross-repo:connection:035 + fact: "timmy-home references the-nexus via issue #859: [AGENDA] Next burn night\ + \ \u2014 amplify bounded quick wins, proof-first comments, and overnight leverage\ + \ \u2192 [the-nexus#859] [AUTOGENESIS][Phase I] Hermes v2.0 architecture spec\ + \ + successor fork spec" + category: pattern + domain: global + confidence: 0.9 + tags: + - cross-repo + - issue-reference + - connection + source_count: 1 + first_seen: '2026-04-26T11:22:05.448200+00:00' + last_confirmed: '2026-04-26T11:22:05.448207+00:00' + related: [] diff --git a/knowledge/index.json b/knowledge/index.json index 7134070..aeb6731 100644 --- a/knowledge/index.json +++ b/knowledge/index.json @@ -1,472 +1,1032 @@ { - "version": 1, - "last_updated": "2026-04-13T20:00:00Z", - "total_facts": 29, "facts": [ { - "id": "hermes-agent:pitfall:001", - "fact": "deploy-crons.py leaves jobs in mixed model format", "category": "pitfall", - "domain": "hermes-agent", "confidence": 0.95, - "tags": [ - "cron", - "deploy", - "model", - "config" - ], - "source_count": 5, + "domain": "hermes-agent", + "fact": "deploy-crons.py leaves jobs in mixed model format", "first_seen": "2026-04-08", + "id": "hermes-agent:pitfall:001", "last_confirmed": "2026-04-13", "related": [ "hermes-agent:pitfall:002", "hermes-agent:pitfall:003" + ], + "source_count": 5, + "tags": [ + "cron", + "deploy", + "model", + "config" ] }, { - "id": "hermes-agent:pitfall:002", - "fact": "deploy-crons.py --deploy doesn't set legacy skill field from skills list", "category": "pitfall", - "domain": "hermes-agent", "confidence": 0.9, + "domain": "hermes-agent", + "fact": "deploy-crons.py --deploy doesn't set legacy skill field from skills list", + "first_seen": "2026-04-09", + "id": "hermes-agent:pitfall:002", + "last_confirmed": "2026-04-13", + "related": [ + "hermes-agent:pitfall:001" + ], + "source_count": 3, "tags": [ "cron", "deploy", "skills" - ], - "source_count": 3, - "first_seen": "2026-04-09", - "last_confirmed": "2026-04-13", - "related": [ - "hermes-agent:pitfall:001" ] }, { - "id": "hermes-agent:pitfall:003", - "fact": "Cron jobs with blank fallback_model fields trigger spurious gateway warnings", "category": "pitfall", - "domain": "hermes-agent", "confidence": 0.9, + "domain": "hermes-agent", + "fact": "Cron jobs with blank fallback_model fields trigger spurious gateway warnings", + "first_seen": "2026-04-07", + "id": "hermes-agent:pitfall:003", + "last_confirmed": "2026-04-12", + "related": [ + "hermes-agent:pitfall:001" + ], + "source_count": 4, "tags": [ "cron", "model", "fallback" - ], - "source_count": 4, - "first_seen": "2026-04-07", - "last_confirmed": "2026-04-12", - "related": [ - "hermes-agent:pitfall:001" ] }, { - "id": "hermes-agent:pitfall:004", - "fact": "model-watchdog.py checks first provider line, not model.provider - causes false drift alarms", "category": "pitfall", - "domain": "hermes-agent", "confidence": 0.9, + "domain": "hermes-agent", + "fact": "model-watchdog.py checks first provider line, not model.provider - causes false drift alarms", + "first_seen": "2026-04-08", + "id": "hermes-agent:pitfall:004", + "last_confirmed": "2026-04-13", + "source_count": 3, "tags": [ "watchdog", "model", "config" - ], - "source_count": 3, - "first_seen": "2026-04-08", - "last_confirmed": "2026-04-13" + ] }, { - "id": "hermes-agent:pitfall:005", - "fact": "10+ files read HERMES_HOME directly instead of get_hermes_home()", "category": "pitfall", - "domain": "hermes-agent", "confidence": 0.85, + "domain": "hermes-agent", + "fact": "10+ files read HERMES_HOME directly instead of get_hermes_home()", + "first_seen": "2026-04-06", + "id": "hermes-agent:pitfall:005", + "last_confirmed": "2026-04-12", + "related": [ + "global:pitfall:002" + ], + "source_count": 6, "tags": [ "paths", "env", "hermes-home" - ], - "source_count": 6, - "first_seen": "2026-04-06", - "last_confirmed": "2026-04-12", - "related": [ - "global:pitfall:002" ] }, { - "id": "hermes-agent:pitfall:006", - "fact": "get_hermes_home() doesn't expand tilde when HERMES_HOME=~/... is set", "category": "pitfall", - "domain": "hermes-agent", "confidence": 0.8, + "domain": "hermes-agent", + "fact": "get_hermes_home() doesn't expand tilde when HERMES_HOME=~/... is set", + "first_seen": "2026-04-05", + "id": "hermes-agent:pitfall:006", + "source_count": 2, "tags": [ "paths", "env", "bug" - ], - "source_count": 2, - "first_seen": "2026-04-05" + ] }, { - "id": "hermes-agent:pitfall:007", - "fact": "vps-agent-dispatch reports OK while remote hermes binary path is broken", "category": "pitfall", - "domain": "hermes-agent", "confidence": 0.9, + "domain": "hermes-agent", + "fact": "vps-agent-dispatch reports OK while remote hermes binary path is broken", + "first_seen": "2026-04-07", + "id": "hermes-agent:pitfall:007", + "last_confirmed": "2026-04-11", + "source_count": 4, "tags": [ "ssh", "dispatch", "vps" - ], - "source_count": 4, - "first_seen": "2026-04-07", - "last_confirmed": "2026-04-11" + ] }, { - "id": "hermes-agent:pitfall:008", - "fact": "nightwatch-health-monitor SSH check fails on cloud-model-only deployments", "category": "pitfall", - "domain": "hermes-agent", "confidence": 0.85, + "domain": "hermes-agent", + "fact": "nightwatch-health-monitor SSH check fails on cloud-model-only deployments", + "first_seen": "2026-04-10", + "id": "hermes-agent:pitfall:008", + "source_count": 2, "tags": [ "ssh", "health", "cloud" - ], - "source_count": 2, - "first_seen": "2026-04-10" + ] }, { - "id": "the-nexus:pitfall:001", - "fact": "Merges fail with HTTP 405 due to branch protection", "category": "pitfall", - "domain": "the-nexus", "confidence": 0.95, + "domain": "the-nexus", + "fact": "Merges fail with HTTP 405 due to branch protection", + "first_seen": "2026-04-05", + "id": "the-nexus:pitfall:001", + "last_confirmed": "2026-04-13", + "related": [ + "global:pitfall:001" + ], + "source_count": 12, "tags": [ "git", "merge", "branch-protection", "gitea" - ], - "source_count": 12, - "first_seen": "2026-04-05", - "last_confirmed": "2026-04-13", - "related": [ - "global:pitfall:001" ] }, { - "id": "the-nexus:pitfall:002", - "fact": "ThreadingHTTPServer required for multi-user bridge - standard HTTPServer blocks on concurrent requests", "category": "pitfall", - "domain": "the-nexus", "confidence": 0.95, + "domain": "the-nexus", + "fact": "ThreadingHTTPServer required for multi-user bridge - standard HTTPServer blocks on concurrent requests", + "first_seen": "2026-04-10", + "id": "the-nexus:pitfall:002", + "last_confirmed": "2026-04-13", + "source_count": 5, "tags": [ "server", "concurrency", "bridge" - ], - "source_count": 5, - "first_seen": "2026-04-10", - "last_confirmed": "2026-04-13" + ] }, { - "id": "the-nexus:pitfall:003", - "fact": "ChatLog.log() crashes on message persistence when index.html has orphaned button tags", "category": "pitfall", - "domain": "the-nexus", "confidence": 0.9, + "domain": "the-nexus", + "fact": "ChatLog.log() crashes on message persistence when index.html has orphaned button tags", + "first_seen": "2026-04-12", + "id": "the-nexus:pitfall:003", + "last_confirmed": "2026-04-13", + "source_count": 3, "tags": [ "html", "crash", "chatlog" - ], - "source_count": 3, - "first_seen": "2026-04-12", - "last_confirmed": "2026-04-13" + ] }, { - "id": "the-nexus:pitfall:004", - "fact": "Three.js LOD not implemented - local hardware struggles with full scene", "category": "pitfall", - "domain": "the-nexus", "confidence": 0.85, + "domain": "the-nexus", + "fact": "Three.js LOD not implemented - local hardware struggles with full scene", + "first_seen": "2026-04-09", + "id": "the-nexus:pitfall:004", + "last_confirmed": "2026-04-13", + "source_count": 4, "tags": [ "threejs", "performance", "lod" - ], - "source_count": 4, - "first_seen": "2026-04-09", - "last_confirmed": "2026-04-13" + ] }, { - "id": "the-nexus:pitfall:005", - "fact": "Duplicate content blocks appear in index.html when PR merges conflict silently", "category": "pitfall", - "domain": "the-nexus", "confidence": 0.8, + "domain": "the-nexus", + "fact": "Duplicate content blocks appear in index.html when PR merges conflict silently", + "first_seen": "2026-04-11", + "id": "the-nexus:pitfall:005", + "last_confirmed": "2026-04-13", + "source_count": 3, "tags": [ "html", "merge-conflict", "duplicate" - ], - "source_count": 3, - "first_seen": "2026-04-11", - "last_confirmed": "2026-04-13" + ] }, { - "id": "the-nexus:pitfall:006", - "fact": "Unified HTTP + WebSocket server required for proper URL deployment - separate servers break CORS", "category": "pitfall", - "domain": "the-nexus", "confidence": 0.9, + "domain": "the-nexus", + "fact": "Unified HTTP + WebSocket server required for proper URL deployment - separate servers break CORS", + "first_seen": "2026-04-10", + "id": "the-nexus:pitfall:006", + "last_confirmed": "2026-04-13", + "source_count": 4, "tags": [ "deploy", "websocket", "http", "cors" - ], - "source_count": 4, - "first_seen": "2026-04-10", - "last_confirmed": "2026-04-13" + ] }, { - "id": "global:tool-quirk:001", - "fact": "Gitea token stored at ~/.config/gitea/token, not env var GITEA_TOKEN", "category": "tool-quirk", - "domain": "global", "confidence": 0.95, + "domain": "global", + "fact": "Gitea token stored at ~/.config/gitea/token, not env var GITEA_TOKEN", + "first_seen": "2026-03-27", + "id": "global:tool-quirk:001", + "last_confirmed": "2026-04-13", + "related": [ + "global:pitfall:001" + ], + "source_count": 23, "tags": [ "git", "auth", "gitea", "token" - ], - "source_count": 23, - "first_seen": "2026-03-27", - "last_confirmed": "2026-04-13", - "related": [ - "global:pitfall:001" ] }, { - "id": "global:tool-quirk:002", - "fact": "Gitea API uses 'Authorization: token TOKEN' header format, not Bearer", "category": "tool-quirk", - "domain": "global", "confidence": 0.9, + "domain": "global", + "fact": "Gitea API uses 'Authorization: token TOKEN' header format, not Bearer", + "first_seen": "2026-03-28", + "id": "global:tool-quirk:002", + "last_confirmed": "2026-04-12", + "source_count": 8, "tags": [ "git", "api", "gitea" - ], - "source_count": 8, - "first_seen": "2026-03-28", - "last_confirmed": "2026-04-12" + ] }, { - "id": "global:tool-quirk:003", - "fact": "Gitea Issues API type=issues param does NOT filter PRs", "category": "tool-quirk", - "domain": "global", "confidence": 0.95, + "domain": "global", + "fact": "Gitea Issues API type=issues param does NOT filter PRs", + "first_seen": "2026-04-01", + "id": "global:tool-quirk:003", + "last_confirmed": "2026-04-13", + "source_count": 6, "tags": [ "gitea", "api", "issues", "pr" - ], - "source_count": 6, - "first_seen": "2026-04-01", - "last_confirmed": "2026-04-13" + ] }, { - "id": "global:tool-quirk:004", - "fact": "~/.hermes is the default hermes home - check get_hermes_home() not the path literal", "category": "tool-quirk", - "domain": "global", "confidence": 0.9, + "domain": "global", + "fact": "~/.hermes is the default hermes home - check get_hermes_home() not the path literal", + "first_seen": "2026-03-30", + "id": "global:tool-quirk:004", + "last_confirmed": "2026-04-13", + "related": [ + "hermes-agent:pitfall:005" + ], + "source_count": 10, "tags": [ "paths", "hermes", "env" - ], - "source_count": 10, - "first_seen": "2026-03-30", - "last_confirmed": "2026-04-13", - "related": [ - "hermes-agent:pitfall:005" ] }, { - "id": "global:tool-quirk:005", - "fact": "Ansible vault-encrypted vars in YAML require vault_inline_vars plugin", "category": "tool-quirk", - "domain": "global", "confidence": 0.85, + "domain": "global", + "fact": "Ansible vault-encrypted vars in YAML require vault_inline_vars plugin", + "first_seen": "2026-04-02", + "id": "global:tool-quirk:005", + "source_count": 3, "tags": [ "ansible", "vault", "config" - ], - "source_count": 3, - "first_seen": "2026-04-02" + ] }, { - "id": "global:tool-quirk:006", - "fact": "mimo-v2-pro via Nous Research is the default model - don't assume Anthropic is available", "category": "tool-quirk", - "domain": "global", "confidence": 0.95, + "domain": "global", + "fact": "mimo-v2-pro via Nous Research is the default model - don't assume Anthropic is available", + "first_seen": "2026-03-25", + "id": "global:tool-quirk:006", + "last_confirmed": "2026-04-13", + "source_count": 15, "tags": [ "model", "provider", "nous", "default" - ], - "source_count": 15, - "first_seen": "2026-03-25", - "last_confirmed": "2026-04-13" + ] }, { - "id": "global:tool-quirk:007", - "fact": "Kill + restart with 'hermes chat' preserves old model state - NEVER use --resume", "category": "tool-quirk", - "domain": "global", "confidence": 0.95, + "domain": "global", + "fact": "Kill + restart with 'hermes chat' preserves old model state - NEVER use --resume", + "first_seen": "2026-03-29", + "id": "global:tool-quirk:007", + "last_confirmed": "2026-04-12", + "source_count": 8, "tags": [ "hermes", "model", "restart", "session" - ], - "source_count": 8, - "first_seen": "2026-03-29", - "last_confirmed": "2026-04-12" + ] }, { - "id": "global:pitfall:001", - "fact": "Branch protection requires 1 approval on main - API merges fail with 405 without it", "category": "pitfall", - "domain": "global", "confidence": 0.95, + "domain": "global", + "fact": "Branch protection requires 1 approval on main - API merges fail with 405 without it", + "first_seen": "2026-04-05", + "id": "global:pitfall:001", + "last_confirmed": "2026-04-13", + "related": [ + "the-nexus:pitfall:001" + ], + "source_count": 12, "tags": [ "git", "merge", "branch-protection", "gitea" - ], - "source_count": 12, - "first_seen": "2026-04-05", - "last_confirmed": "2026-04-13", - "related": [ - "the-nexus:pitfall:001" ] }, { - "id": "global:pitfall:002", - "fact": "Never use --no-verify on git commits", "category": "pitfall", - "domain": "global", "confidence": 0.95, + "domain": "global", + "fact": "Never use --no-verify on git commits", + "first_seen": "2026-03-28", + "id": "global:pitfall:002", + "last_confirmed": "2026-04-13", + "source_count": 5, "tags": [ "git", "hooks", "safety" - ], - "source_count": 5, - "first_seen": "2026-03-28", - "last_confirmed": "2026-04-13" + ] }, { - "id": "global:pitfall:003", - "fact": "Gitea PR creation workaround needed on the-nexus - direct API call fails", "category": "pitfall", - "domain": "global", "confidence": 0.9, + "domain": "global", + "fact": "Gitea PR creation workaround needed on the-nexus - direct API call fails", + "first_seen": "2026-04-06", + "id": "global:pitfall:003", + "last_confirmed": "2026-04-12", + "source_count": 4, "tags": [ "gitea", "pr", "api", "workaround" - ], - "source_count": 4, - "first_seen": "2026-04-06", - "last_confirmed": "2026-04-12" + ] }, { - "id": "global:pitfall:004", - "fact": "Anthropic is BANNED from fallback chain", "category": "pitfall", - "domain": "global", "confidence": 0.95, + "domain": "global", + "fact": "Anthropic is BANNED from fallback chain", + "first_seen": "2026-03-30", + "id": "global:pitfall:004", + "last_confirmed": "2026-04-13", + "source_count": 7, "tags": [ "provider", "anthropic", "fallback" - ], - "source_count": 7, - "first_seen": "2026-03-30", - "last_confirmed": "2026-04-13" + ] }, { - "id": "global:pitfall:005", - "fact": "Telegram tokens expired - don't assume Telegram notifications work", "category": "pitfall", - "domain": "global", "confidence": 0.85, + "domain": "global", + "fact": "Telegram tokens expired - don't assume Telegram notifications work", + "first_seen": "2026-04-02", + "id": "global:pitfall:005", + "source_count": 3, "tags": [ "telegram", "notifications", "token" - ], - "source_count": 3, - "first_seen": "2026-04-02" + ] }, { - "id": "global:pitfall:006", - "fact": "Multiple gateways = 'cannot schedule futures' error - only one gateway process should run", "category": "pitfall", - "domain": "global", "confidence": 0.9, + "domain": "global", + "fact": "Multiple gateways = 'cannot schedule futures' error - only one gateway process should run", + "first_seen": "2026-04-04", + "id": "global:pitfall:006", + "last_confirmed": "2026-04-11", + "source_count": 4, "tags": [ "gateway", "cron", "process" - ], - "source_count": 4, - "first_seen": "2026-04-04", - "last_confirmed": "2026-04-11" + ] }, { - "id": "global:pitfall:007", - "fact": "pytest root collection picks up operational *_test.py scripts - restrict to tests/ directory", "category": "pitfall", - "domain": "global", "confidence": 0.9, + "domain": "global", + "fact": "pytest root collection picks up operational *_test.py scripts - restrict to tests/ directory", + "first_seen": "2026-04-07", + "id": "global:pitfall:007", + "last_confirmed": "2026-04-13", + "source_count": 3, "tags": [ "pytest", "test", "collection" - ], - "source_count": 3, - "first_seen": "2026-04-07", - "last_confirmed": "2026-04-13" + ] }, { - "id": "global:pitfall:008", - "fact": "TDD: test 1 before building 55", "category": "pitfall", - "domain": "global", "confidence": 0.95, + "domain": "global", + "fact": "TDD: test 1 before building 55", + "first_seen": "2026-03-25", + "id": "global:pitfall:008", + "last_confirmed": "2026-04-13", + "source_count": 8, "tags": [ "tdd", "testing", "methodology" - ], - "source_count": 8, - "first_seen": "2026-03-25", - "last_confirmed": "2026-04-13" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "hermes-agent references compounding-intelligence via issue #229: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [compounding-intelligence#229] [ATLAS][Telemetry] Build local token and cost ingestion using Tokscale core patterns", + "first_seen": "2026-04-26T11:21:56.905616+00:00", + "id": "cross-repo:connection:001", + "last_confirmed": "2026-04-26T11:21:56.905641+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "hermes-agent references compounding-intelligence via issue #231: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [compounding-intelligence#231] [ATLAS][Wiki] Build the LLM Wiki layer: ingest, query, lint, and session crystallization into durabl", + "first_seen": "2026-04-26T11:21:57.230615+00:00", + "id": "cross-repo:connection:002", + "last_confirmed": "2026-04-26T11:21:57.230632+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "hermes-agent references compounding-intelligence via issue #232: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [compounding-intelligence#232] [ATLAS][Research] Solve the swarm-memory gap for concurrent subagents", + "first_seen": "2026-04-26T11:21:57.415552+00:00", + "id": "cross-repo:connection:003", + "last_confirmed": "2026-04-26T11:21:57.415580+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "hermes-agent references fleet-ops via issue #410: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [fleet-ops#410] [ATLAS][Safety] Deploy a virtual-credential and DLP sidecar for sovereign agent runs", + "first_seen": "2026-04-26T11:21:57.716479+00:00", + "id": "cross-repo:connection:004", + "last_confirmed": "2026-04-26T11:21:57.716488+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "hermes-agent references the-nexus via issue #893: [CONSOLIDATED] Fleet SITREP — Allegro 7-Task Execution + Ezra Deliverables → [the-nexus#893] [AUDIT] System Formalization — OSS Replacements & Cleanup Candidates", + "first_seen": "2026-04-26T11:21:57.961498+00:00", + "id": "cross-repo:connection:005", + "last_confirmed": "2026-04-26T11:21:57.961510+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "hermes-agent references the-nexus via issue #1695: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [the-nexus#1695] [ATLAS][Cockpit] Build the operator inspector rail and session shell patterns worth stealing", + "first_seen": "2026-04-26T11:21:58.130733+00:00", + "id": "cross-repo:connection:006", + "last_confirmed": "2026-04-26T11:21:58.130745+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "hermes-agent references timmy-config via issue #875: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [timmy-config#875] [ATLAS][Skills] Import Karpathy-style cognitive principles and GStack-style role commands as native ", + "first_seen": "2026-04-26T11:21:58.327960+00:00", + "id": "cross-repo:connection:007", + "last_confirmed": "2026-04-26T11:21:58.327972+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "hermes-agent references timmy-dispatch via issue #18: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [timmy-dispatch#18] [ATLAS][Dispatch] Add Mission Control-style dispatch ledger, capacity model, and heartbeat tracking", + "first_seen": "2026-04-26T11:21:58.502966+00:00", + "id": "cross-repo:connection:008", + "last_confirmed": "2026-04-26T11:21:58.502981+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "hermes-agent references timmy-home via issue #568: [DISPATCH] Ezra — Investigate & Install MemPalace on Hermes VPS → [timmy-home#568] [EVALUATION] MemPalace v3.0.0 Integration — Before/After Metrics + Recommendation", + "first_seen": "2026-04-26T11:21:58.967894+00:00", + "id": "cross-repo:connection:009", + "last_confirmed": "2026-04-26T11:21:58.967906+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "the-nexus references hermes-agent via issue #984: [ATLAS][Cockpit] Build the operator inspector rail and session shell patterns worth stealing → [hermes-agent#984] [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack", + "first_seen": "2026-04-26T11:21:59.445454+00:00", + "id": "cross-repo:connection:010", + "last_confirmed": "2026-04-26T11:21:59.445470+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #501: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#501] [claude] Re-implement gravity anomaly zones (#478)", + "first_seen": "2026-04-26T11:21:59.975253+00:00", + "id": "cross-repo:connection:011", + "last_confirmed": "2026-04-26T11:21:59.975291+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #502: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#502] [claude] Time-lapse replay mode (#484)", + "first_seen": "2026-04-26T11:22:00.193542+00:00", + "id": "cross-repo:connection:012", + "last_confirmed": "2026-04-26T11:22:00.193552+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #503: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#503] [claude] InstancedMesh optimizations for repeated geometry (#482)", + "first_seen": "2026-04-26T11:22:00.515208+00:00", + "id": "cross-repo:connection:013", + "last_confirmed": "2026-04-26T11:22:00.515229+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #552: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#552] [HEARTBEAT] Apprentice protocol — episodic memory logging of desktop activity", + "first_seen": "2026-04-26T11:22:00.658814+00:00", + "id": "cross-repo:connection:014", + "last_confirmed": "2026-04-26T11:22:00.658829+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #554: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#554] [ECONOMY] Stand up Cashu Mint on Lightning", + "first_seen": "2026-04-26T11:22:01.089278+00:00", + "id": "cross-repo:connection:015", + "last_confirmed": "2026-04-26T11:22:01.089287+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #555: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#555] [ECONOMY] Prototype Bannerlord Denar → Cashu token Harmony patch", + "first_seen": "2026-04-26T11:22:01.297062+00:00", + "id": "cross-repo:connection:016", + "last_confirmed": "2026-04-26T11:22:01.297069+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #613: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#613] [gemini] [HARNESS] Shadow Context Manager — auto-generated brain dump for session continuity (#608)", + "first_seen": "2026-04-26T11:22:01.814895+00:00", + "id": "cross-repo:connection:017", + "last_confirmed": "2026-04-26T11:22:01.814905+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #673: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#673] [PORTAL] Deterministic Morrowind pilot loop with world-state proof", + "first_seen": "2026-04-26T11:22:02.118691+00:00", + "id": "cross-repo:connection:018", + "last_confirmed": "2026-04-26T11:22:02.118711+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #674: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#674] [PORTAL] Reflex tactical layer and semantic trajectory logging", + "first_seen": "2026-04-26T11:22:02.261655+00:00", + "id": "cross-repo:connection:019", + "last_confirmed": "2026-04-26T11:22:02.261669+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #675: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#675] [HARNESS] Deterministic context compaction for long local sessions", + "first_seen": "2026-04-26T11:22:02.403879+00:00", + "id": "cross-repo:connection:020", + "last_confirmed": "2026-04-26T11:22:02.403922+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #676: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#676] [gemini] [PORTAL] Reflex tactical layer and semantic trajectory logging (#674)", + "first_seen": "2026-04-26T11:22:02.545921+00:00", + "id": "cross-repo:connection:021", + "last_confirmed": "2026-04-26T11:22:02.545931+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #677: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#677] [gemini] [HARNESS] Deterministic context compaction for long local sessions (#675)", + "first_seen": "2026-04-26T11:22:02.691982+00:00", + "id": "cross-repo:connection:022", + "last_confirmed": "2026-04-26T11:22:02.691988+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #730: ☀️ Good Morning Report — 2026-03-29 (Sunday) → [the-nexus#730] [VISUAL] Give Workshop, Archive, Chapel, Courtyard, and Gate distinct Nexus visual identities", + "first_seen": "2026-04-26T11:22:03.030374+00:00", + "id": "cross-repo:connection:023", + "last_confirmed": "2026-04-26T11:22:03.030404+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #731: ☀️ Good Morning Report — 2026-03-29 (Sunday) → [the-nexus#731] [VALIDATION] Browser smoke + visual proof for the Evennia-fed Nexus shell", + "first_seen": "2026-04-26T11:22:03.245877+00:00", + "id": "cross-repo:connection:024", + "last_confirmed": "2026-04-26T11:22:03.245885+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #736: ☀️ Good Morning Report — 2026-03-29 (Sunday) → [the-nexus#736] Perplexity review", + "first_seen": "2026-04-26T11:22:03.471514+00:00", + "id": "cross-repo:connection:025", + "last_confirmed": "2026-04-26T11:22:03.471536+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #785: ☀️ Good Morning Report — 2026-03-30 (Monday) → [the-nexus#785] Implement SharedArrayBuffer for Zero-Copy Data Sharing", + "first_seen": "2026-04-26T11:22:03.598910+00:00", + "id": "cross-repo:connection:026", + "last_confirmed": "2026-04-26T11:22:03.598925+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #786: ☀️ Good Morning Report — 2026-03-30 (Monday) → [the-nexus#786] Implement GPU-Accelerated Knowledge Graph Queries", + "first_seen": "2026-04-26T11:22:03.762768+00:00", + "id": "cross-repo:connection:027", + "last_confirmed": "2026-04-26T11:22:03.762779+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-config references the-nexus via issue #787: ☀️ Good Morning Report — 2026-03-30 (Monday) → [the-nexus#787] Implement Hierarchical L1/L2 Cache for Meta-Reasoning", + "first_seen": "2026-04-26T11:22:03.917083+00:00", + "id": "cross-repo:connection:028", + "last_confirmed": "2026-04-26T11:22:03.917092+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-home references hermes-agent via issue #72: 🔥 Burn Report #5 — 2026-04-01 — Crisis Safety Test Infrastructure → [hermes-agent#72] [RED TEAM] Full Jailbreak Audit - Claude Opus 4.6 - 2026-03-30", + "first_seen": "2026-04-26T11:22:04.071933+00:00", + "id": "cross-repo:connection:029", + "last_confirmed": "2026-04-26T11:22:04.071949+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-home references hermes-agent via issue #74: [BURN REPORT] SHIELD Security Implementation - Issues #72/#74/#75 → [hermes-agent#74] [RED TEAM] ULTRAPLINIAN Crisis Stress Test — 22 CRITICAL Failures — 2026-03-31", + "first_seen": "2026-04-26T11:22:04.214487+00:00", + "id": "cross-repo:connection:030", + "last_confirmed": "2026-04-26T11:22:04.214499+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-home references hermes-agent via issue #75: [BURN REPORT] SHIELD Security Implementation - Issues #72/#74/#75 → [hermes-agent#75] [SHIELD] Jailbreak Input Detection Module — Built Overnight From Red Team Findings", + "first_seen": "2026-04-26T11:22:04.369176+00:00", + "id": "cross-repo:connection:031", + "last_confirmed": "2026-04-26T11:22:04.369184+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-home references hermes-agent via issue #79: 🔥 Burn Report #5 — 2026-04-01 — Crisis Safety Test Infrastructure → [hermes-agent#79] [SECURITY] [CRITICAL] Test og_godmode template against crisis/suicide safety queries", + "first_seen": "2026-04-26T11:22:04.884029+00:00", + "id": "cross-repo:connection:032", + "last_confirmed": "2026-04-26T11:22:04.884062+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-home references hermes-agent via issue #80: 🔥 Burn Report #5 — 2026-04-01 — Crisis Safety Test Infrastructure → [hermes-agent#80] [SECURITY] [HIGH] Implement input sanitization for GODMODE jailbreak patterns", + "first_seen": "2026-04-26T11:22:05.116347+00:00", + "id": "cross-repo:connection:033", + "last_confirmed": "2026-04-26T11:22:05.116357+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-home references hermes-agent via issue #81: 🔥 Burn Report #5 — 2026-04-01 — Crisis Safety Test Infrastructure → [hermes-agent#81] [SECURITY] [MEDIUM] ULTRAPLINIAN follow-up: Red team fallback chain (Kimi, Gemini, Grok, Llama)", + "first_seen": "2026-04-26T11:22:05.279272+00:00", + "id": "cross-repo:connection:034", + "last_confirmed": "2026-04-26T11:22:05.279284+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] + }, + { + "category": "pattern", + "confidence": 0.9, + "domain": "global", + "fact": "timmy-home references the-nexus via issue #859: [AGENDA] Next burn night — amplify bounded quick wins, proof-first comments, and overnight leverage → [the-nexus#859] [AUTOGENESIS][Phase I] Hermes v2.0 architecture spec + successor fork spec", + "first_seen": "2026-04-26T11:22:05.448200+00:00", + "id": "cross-repo:connection:035", + "last_confirmed": "2026-04-26T11:22:05.448207+00:00", + "related": [], + "source_count": 1, + "tags": [ + "cross-repo", + "issue-reference", + "connection" + ] } - ] + ], + "last_updated": "2026-04-26T11:22:05.448413+00:00", + "total_facts": 64, + "version": 1 } \ No newline at end of file diff --git a/metrics/cross_repo_report.md b/metrics/cross_repo_report.md new file mode 100644 index 0000000..7432f9d --- /dev/null +++ b/metrics/cross_repo_report.md @@ -0,0 +1,57 @@ +# Cross-Repo Connection Report + +Generated: 2026-04-26T11:22:05.466516+00:00 +Org: Timmy_Foundation +Repos scanned: 21 + +## Connections + +### hermes-agent + +- hermes-agent references compounding-intelligence via issue #229: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [compounding-intelligence#229] [ATLAS][Telemetry] Build local token and cost ingestion using Tokscale core patterns +- hermes-agent references compounding-intelligence via issue #231: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [compounding-intelligence#231] [ATLAS][Wiki] Build the LLM Wiki layer: ingest, query, lint, and session crystallization into durabl +- hermes-agent references compounding-intelligence via issue #232: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [compounding-intelligence#232] [ATLAS][Research] Solve the swarm-memory gap for concurrent subagents +- hermes-agent references fleet-ops via issue #410: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [fleet-ops#410] [ATLAS][Safety] Deploy a virtual-credential and DLP sidecar for sovereign agent runs +- hermes-agent references the-nexus via issue #893: [CONSOLIDATED] Fleet SITREP — Allegro 7-Task Execution + Ezra Deliverables → [the-nexus#893] [AUDIT] System Formalization — OSS Replacements & Cleanup Candidates +- hermes-agent references the-nexus via issue #1695: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [the-nexus#1695] [ATLAS][Cockpit] Build the operator inspector rail and session shell patterns worth stealing +- hermes-agent references timmy-config via issue #875: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [timmy-config#875] [ATLAS][Skills] Import Karpathy-style cognitive principles and GStack-style role commands as native +- hermes-agent references timmy-dispatch via issue #18: [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack → [timmy-dispatch#18] [ATLAS][Dispatch] Add Mission Control-style dispatch ledger, capacity model, and heartbeat tracking +- hermes-agent references timmy-home via issue #568: [DISPATCH] Ezra — Investigate & Install MemPalace on Hermes VPS → [timmy-home#568] [EVALUATION] MemPalace v3.0.0 Integration — Before/After Metrics + Recommendation + +### the-nexus + +- the-nexus references hermes-agent via issue #984: [ATLAS][Cockpit] Build the operator inspector rail and session shell patterns worth stealing → [hermes-agent#984] [ATLAS] Steal the highest-leverage ecosystem patterns into the sovereign stack + +### timmy-config + +- timmy-config references the-nexus via issue #501: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#501] [claude] Re-implement gravity anomaly zones (#478) +- timmy-config references the-nexus via issue #502: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#502] [claude] Time-lapse replay mode (#484) +- timmy-config references the-nexus via issue #503: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#503] [claude] InstancedMesh optimizations for repeated geometry (#482) +- timmy-config references the-nexus via issue #552: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#552] [HEARTBEAT] Apprentice protocol — episodic memory logging of desktop activity +- timmy-config references the-nexus via issue #554: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#554] [ECONOMY] Stand up Cashu Mint on Lightning +- timmy-config references the-nexus via issue #555: ☀️ Good Morning Report — 2026-03-26 (Thursday) → [the-nexus#555] [ECONOMY] Prototype Bannerlord Denar → Cashu token Harmony patch +- timmy-config references the-nexus via issue #613: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#613] [gemini] [HARNESS] Shadow Context Manager — auto-generated brain dump for session continuity (#608) +- timmy-config references the-nexus via issue #673: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#673] [PORTAL] Deterministic Morrowind pilot loop with world-state proof +- timmy-config references the-nexus via issue #674: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#674] [PORTAL] Reflex tactical layer and semantic trajectory logging +- timmy-config references the-nexus via issue #675: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#675] [HARNESS] Deterministic context compaction for long local sessions +- timmy-config references the-nexus via issue #676: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#676] [gemini] [PORTAL] Reflex tactical layer and semantic trajectory logging (#674) +- timmy-config references the-nexus via issue #677: ☀️ Good Morning Report — 2026-03-28 (Saturday) → [the-nexus#677] [gemini] [HARNESS] Deterministic context compaction for long local sessions (#675) +- timmy-config references the-nexus via issue #730: ☀️ Good Morning Report — 2026-03-29 (Sunday) → [the-nexus#730] [VISUAL] Give Workshop, Archive, Chapel, Courtyard, and Gate distinct Nexus visual identities +- timmy-config references the-nexus via issue #731: ☀️ Good Morning Report — 2026-03-29 (Sunday) → [the-nexus#731] [VALIDATION] Browser smoke + visual proof for the Evennia-fed Nexus shell +- timmy-config references the-nexus via issue #736: ☀️ Good Morning Report — 2026-03-29 (Sunday) → [the-nexus#736] Perplexity review +- timmy-config references the-nexus via issue #785: ☀️ Good Morning Report — 2026-03-30 (Monday) → [the-nexus#785] Implement SharedArrayBuffer for Zero-Copy Data Sharing +- timmy-config references the-nexus via issue #786: ☀️ Good Morning Report — 2026-03-30 (Monday) → [the-nexus#786] Implement GPU-Accelerated Knowledge Graph Queries +- timmy-config references the-nexus via issue #787: ☀️ Good Morning Report — 2026-03-30 (Monday) → [the-nexus#787] Implement Hierarchical L1/L2 Cache for Meta-Reasoning + +### timmy-home + +- timmy-home references hermes-agent via issue #72: 🔥 Burn Report #5 — 2026-04-01 — Crisis Safety Test Infrastructure → [hermes-agent#72] [RED TEAM] Full Jailbreak Audit - Claude Opus 4.6 - 2026-03-30 +- timmy-home references hermes-agent via issue #74: [BURN REPORT] SHIELD Security Implementation - Issues #72/#74/#75 → [hermes-agent#74] [RED TEAM] ULTRAPLINIAN Crisis Stress Test — 22 CRITICAL Failures — 2026-03-31 +- timmy-home references hermes-agent via issue #75: [BURN REPORT] SHIELD Security Implementation - Issues #72/#74/#75 → [hermes-agent#75] [SHIELD] Jailbreak Input Detection Module — Built Overnight From Red Team Findings +- timmy-home references hermes-agent via issue #79: 🔥 Burn Report #5 — 2026-04-01 — Crisis Safety Test Infrastructure → [hermes-agent#79] [SECURITY] [CRITICAL] Test og_godmode template against crisis/suicide safety queries +- timmy-home references hermes-agent via issue #80: 🔥 Burn Report #5 — 2026-04-01 — Crisis Safety Test Infrastructure → [hermes-agent#80] [SECURITY] [HIGH] Implement input sanitization for GODMODE jailbreak patterns +- timmy-home references hermes-agent via issue #81: 🔥 Burn Report #5 — 2026-04-01 — Crisis Safety Test Infrastructure → [hermes-agent#81] [SECURITY] [MEDIUM] ULTRAPLINIAN follow-up: Red team fallback chain (Kimi, Gemini, Grok, Llama) +- timmy-home references the-nexus via issue #859: [AGENDA] Next burn night — amplify bounded quick wins, proof-first comments, and overnight leverage → [the-nexus#859] [AUTOGENESIS][Phase I] Hermes v2.0 architecture spec + successor fork spec + + +Total connections: 35 diff --git a/scripts/cross_repo_connector.py b/scripts/cross_repo_connector.py new file mode 100755 index 0000000..718b0c6 --- /dev/null +++ b/scripts/cross_repo_connector.py @@ -0,0 +1,375 @@ +#!/usr/bin/env python3 +""" +Cross-Repo Connector — Issue Reference Scanner (8.4) + +Scans all repos in an org for cross-repo issue references. Identifies +connections where one repo's issue/PR references another repo's issue number. + +This is the smallest concrete first step toward full cross-repo analysis. +Future: extend to code imports, similar patterns. + +Usage: + python3 scripts/cross_repo_connector.py --org Timmy_Foundation --dry-run + python3 scripts/cross_repo_connector.py --org Timmy_Foundation --commit + +Output: + knowledge/global/cross_repo_connections.yaml — new facts + knowledge/index.json — updated index + metrics/cross_repo_report.md — human-readable summary +""" + +import argparse +import json +import os +import re +import sys +from collections import defaultdict +from datetime import datetime, timezone +from pathlib import Path +from typing import Dict, List, Optional, Tuple +import urllib.request +import urllib.error + + +GITEA_URL = "https://forge.alexanderwhitestone.com" + + +# ── GiteaClient (lifted from priority_rebalancer.py, minimal subset) ────── + +class GiteaClient: + def __init__(self, base_url: str, token: str): + self.base_url = base_url.rstrip("/") + self.token = token + + def _request(self, path: str, params: dict = None) -> any: + url = f"{self.base_url}/api/v1{path}" + if params: + qs = "&".join(f"{k}={v}" for k, v in params.items() if v is not None) + url += f"?{qs}" + req = urllib.request.Request(url) + req.add_header("Authorization", f"token {self.token}") + req.add_header("Content-Type", "application/json") + try: + with urllib.request.urlopen(req, timeout=30) as resp: + return json.loads(resp.read().decode()) + except urllib.error.HTTPError as e: + print(f"API error {e.code} for {path}: {e.read().decode()[:200]}", file=sys.stderr) + return None + + def get_org_repos(self, org: str) -> List[dict]: + repos = [] + page = 1 + while True: + batch = self._request(f"/orgs/{org}/repos", {"limit": 50, "page": page}) + if not batch: + break + repos.extend(batch) + if len(batch) < 50: + break + page += 1 + return repos + + def get_issues(self, org: str, repo: str, state: str = "closed") -> List[dict]: + """Fetch issues (and PRs, which Gitea returns together) for a repo.""" + issues = [] + page = 1 + while True: + batch = self._request( + f"/repos/{org}/{repo}/issues", + {"state": state, "limit": 50, "page": page, "type": "issues"} + ) + if not batch: + break + issues.extend(batch) + if len(batch) < 50: + break + page += 1 + return issues + + def get_issue(self, org: str, repo: str, issue_num: int) -> Optional[dict]: + return self._request(f"/repos/{org}/{repo}/issues/{issue_num}") + + +# ── Token handling ────────────────────────────────────────────────────────── + +def get_token() -> str: + """Read Gitea token from ~/.config/gitea/token or $GITEA_TOKEN.""" + token_path = Path.home() / ".config" / "gitea" / "token" + if token_path.exists(): + return token_path.read_text().strip() + env_token = os.environ.get("GITEA_TOKEN", "") + if env_token: + return env_token + raise FileNotFoundError( + "Gitea token not found. Create ~/.config/gitea/token or set $GITEA_TOKEN." + ) + + +# ── Cross-reference extraction ────────────────────────────────────────────── + +# Patterns that reference another repo's issue/PR: +# - Timmy_Foundation/other-repo#123 +# - Timmy_Foundation/other-repo/issues/123 +# - full URL: https://forge.../Timmy_Foundation/other-repo/issues/123 +# - just "#123" — needs resolving via linked issue numbers (more complex, skip for v1) + +CROSS_REF_PATTERN = re.compile( + r"(?:Timmy_Foundation/([\w.-]+)#(\d+))" + r"|(?:Timmy_Foundation/([\w.-]+)/issues/(\d+))" + r"|(?:https?://[^/]+/Timmy_Foundation/([\w.-]+)/issues/(\d+))" +) + + +def extract_cross_repo_refs(text: str, own_repo: str) -> List[Tuple[str, int]]: + """ + Return list of (other_repo, issue_number) tuples found in text. + Excludes references to the same repo. + """ + matches = [] + for m in CROSS_REF_PATTERN.finditer(text or ""): + repo = m.group(1) or m.group(3) or m.group(5) + num = m.group(2) or m.group(4) or m.group(6) + if repo and num: + repo = repo.lower().replace("_", "-") + if repo != own_repo.lower().replace("_", "-"): + matches.append((repo, int(num))) + return matches + + +# ── Knowledge store helpers ────────────────────────────────────────────────── + +def load_index(index_path: Path) -> dict: + if index_path.exists(): + with index_path.open() as f: + return json.load(f) + return {"version": 1, "last_updated": "", "total_facts": 0, "facts": []} + + +def save_index(index: dict, index_path: Path) -> None: + index["version"] = 1 + index["last_updated"] = datetime.now(timezone.utc).isoformat() + index["total_facts"] = len(index["facts"]) + with index_path.open("w") as f: + json.dump(index, f, indent=2, sort_keys=True, ensure_ascii=False) + + +def generate_fact_id(domain: str, category: str, sequence: int) -> str: + return f"{domain}:{category}:{sequence:03d}" + + +def make_connection_fact( + source_repo: str, + target_repo: str, + issue_num: int, + source_title: str, + target_title: Optional[str] = None, +) -> dict: + """Create a cross-repo connection fact.""" + fact_text = ( + f"{source_repo} references {target_repo} via issue #{issue_num}: " + f"{source_title[:100]}" + ) + if target_title: + fact_text += f" → [{target_repo}#{issue_num}] {target_title[:100]}" + return { + "id": "cross-repo:connection:TBD", # filled by caller with seq + "fact": fact_text, + "category": "pattern", # cross-repo reference is a discovered pattern + "domain": "global", # applies org-wide + "confidence": 0.9, + "tags": ["cross-repo", "issue-reference", "connection"], + "source_count": 1, + "first_seen": datetime.now(timezone.utc).isoformat(), + "last_confirmed": datetime.now(timezone.utc).isoformat(), + "related": [], + } + + +def append_to_global_yaml(facts: List[dict], knowledge_dir: Path) -> None: + """Append new cross-repo facts to knowledge/global/cross_repo.yaml.""" + global_dir = knowledge_dir / "global" + global_dir.mkdir(parents=True, exist_ok=True) + yaml_path = global_dir / "cross_repo.yaml" + + # Load existing YAML documents (may be dict or list-of-dict) + existing_docs = [] + if yaml_path.exists(): + with yaml_path.open() as f: + try: + import yaml + existing_docs = list(yaml.safe_load_all(f)) or [] + except Exception: + existing_docs = [] + + # Normalize to dict documents (unwrap single-element lists) + normalized = [] + for doc in existing_docs: + if isinstance(doc, dict): + normalized.append(doc) + elif isinstance(doc, list) and len(doc) == 1 and isinstance(doc[0], dict): + normalized.append(doc[0]) + + # Determine next sequence number + max_seq = 0 + for doc in normalized: + for f_item in doc.get("facts", []): + fid = f_item.get("id", "") + if fid.startswith("cross-repo:"): + try: + seq = int(fid.split(":")[-1]) + max_seq = max(max_seq, seq) + except ValueError: + pass + + # Assign new IDs + new_facts = [] + for i, fact in enumerate(facts, start=max_seq + 1): + fact_copy = dict(fact) # don't mutate caller's + fact_copy["id"] = f"cross-repo:connection:{i:03d}" + new_facts.append(fact_copy) + + if not new_facts: + return + + # New YAML document (dict, not list) + new_doc = { + "domain": "global", + "category": "pattern", + "version": 1, + "last_updated": datetime.now(timezone.utc).isoformat(), + "facts": new_facts, + } + + # Append document + with yaml_path.open("a") as f: + f.write("\n---\n") + import yaml + yaml.dump(new_doc, f, default_flow_style=False, sort_keys=False) + + print(f" Appended {len(new_facts)} facts to {yaml_path}") + +def main(): + p = argparse.ArgumentParser(description="Cross-repo issue reference connector") + p.add_argument("--org", default="Timmy_Foundation", help="Org to scan") + p.add_argument("--dry-run", action="store_true", help="Don't write knowledge files") + p.add_argument("--state", default="closed", choices=["open", "closed", "all"], + help="Issue state to scan (default: closed)") + p.add_argument("--limit-repos", type=int, help="Max repos to process (dev)") + p.add_argument("--limit-issues", type=int, help="Max issues per repo (dev)") + args = p.parse_args() + + token = get_token() + client = GiteaClient(GITEA_URL, token) + knowledge_dir = Path("knowledge") + index_path = knowledge_dir / "index.json" + + print(f"Fetching org repos…") + repos = client.get_org_repos(args.org) + print(f"Found {len(repos)} repos in {args.org}") + + if args.limit_repos: + repos = repos[:args.limit_repos] + print(f" (limited to {args.limit_repos})") + + # Build repo name -> info map + repo_info = {r["name"].lower(): r for r in repos} + + # Step 1: collect all cross-repo references from issues + # ((source_repo, target_repo, issue_num, source_title)) + raw_connections = [] + for repo_meta in repos: + repo_name = repo_meta["name"] + print(f"\nScanning {repo_name} issues…") + issues = client.get_issues(args.org, repo_name, state=args.state) + print(f" {len(issues)} {args.state} issues") + if args.limit_issues: + issues = issues[:args.limit_issues] + + for issue in issues: + body = issue.get("body", "") or "" + title = issue.get("title", "") or "" + refs = extract_cross_repo_refs(body + "\n" + title, repo_name) + for target_repo, num in refs: + raw_connections.append((repo_name, target_repo, num, title)) + + print(f"\nFound {len(raw_connections)} cross-repo reference(s).") + + # Deduplicate: (source_repo, target_repo, issue_num) → best title + connection_map = {} # (src, tgt, num) → title + for src, tgt, num, title in raw_connections: + key = (src.lower(), tgt.lower(), num) + if key not in connection_map or len(title) > len(connection_map[key]): + connection_map[key] = title + + print(f"Unique connections: {len(connection_map)}") + + if args.dry_run: + print("\nDry-run — not writing knowledge files.") + print("\nDiscovered connections:") + for (src, tgt, num), title in sorted(connection_map.items()): + print(f" {src} → {tgt}#{num}: {title[:80]}") + return 0 + + # Step 2: For each unique connection, try to resolve target issue title + # to enrich the fact text + resolved_facts = [] + for (src, tgt, num), src_title in sorted(connection_map.items()): + target_title = None + try: + target_issue = client.get_issue(args.org, tgt, num) + if target_issue: + target_title = target_issue.get("title", "") + except Exception as e: + print(f" Could not fetch {tgt}#{num}: {e}", file=sys.stderr) + + fact = make_connection_fact(src, tgt, num, src_title, target_title) + # Temporary ID — will be assigned when we know sequence + resolved_facts.append(fact) + + # Step 3: Update index.json + index = load_index(index_path) + next_seq = max( + [int(f["id"].split(":")[-1]) for f in index["facts"] + if f["id"].startswith("cross-repo:")] + ) + 1 if any(f["id"].startswith("cross-repo:") for f in index["facts"]) else 1 + + for i, fact in enumerate(resolved_facts): + fact["id"] = f"cross-repo:connection:{next_seq + i:03d}" + index["facts"].append(fact) + + save_index(index, index_path) + print(f"\n✓ Updated knowledge/index.json (+{len(resolved_facts)} facts)") + + # Step 4: Write to global YAML + append_to_global_yaml(resolved_facts, knowledge_dir) + + # Step 5: Generate metrics/report + metrics_dir = Path("metrics") + metrics_dir.mkdir(exist_ok=True) + report_path = metrics_dir / "cross_repo_report.md" + with report_path.open("w") as f: + f.write(f"# Cross-Repo Connection Report\n\n") + f.write(f"Generated: {datetime.now(timezone.utc).isoformat()}\n") + f.write(f"Org: {args.org}\n") + f.write(f"Repos scanned: {len(repos)}\n") + f.write(f"\n## Connections\n\n") + by_source = defaultdict(list) + for fact in resolved_facts: + src = fact["fact"].split(" ")[0] + by_source[src].append(fact) + for src in sorted(by_source.keys()): + f.write(f"### {src}\n\n") + for fact in by_source[src]: + f.write(f"- {fact['fact']}\n") + f.write("\n") + f.write(f"\nTotal connections: {len(resolved_facts)}\n") + + print(f"✓ Wrote {report_path}") + + print(f"\nDone. Next: run validation:") + print(f" python3 scripts/validate_knowledge.py") + return 0 + + +if __name__ == "__main__": + sys.exit(main())