Cross-service linker plumbing (PR 1/5)#376
Open
Shidfar wants to merge 2 commits into
Open
Conversation
Core framework for 14 protocol linkers: - servicelink.h: shared types, endpoint registry, pattern matching helpers - pass_servicelinks: pipeline pass that dispatches to per-protocol linkers - Endpoint persistence: protocol_endpoints table in each project DB - MCP tool registration and cross_project_links handler - Build system, test harness, and CI integration
This was referenced May 26, 2026
Removes stale-fact drift from the fork era (language/agent counts, install one-liner, feature bullets) flagged in PR DeusData#295's close comment. No URL substitutions involved — README's links already pointed at DeusData; this only reverts the content body. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Pure plumbing for cross-service protocol linking — the framework only, no protocol linkers yet. Splits the 24K-line bundle from #295 into 5 reviewable PRs per your guidance; this is the foundation.
What this adds
src/pipeline/servicelink.h— shared types (endpoint, endpoint-list, config), 14 protocol edge constants, helper inlinessrc/pipeline/pass_servicelinks.c— pipeline pass that loads.cgrconfig, iterates a (currently empty) LINKERS dispatch table. Each protocol linker registers its row in PR 2.src/mcp/mcp.c— registers thecross_project_linksMCP tool and its handler. The handler returns "No cross-project links found" since no writer exists yet — wired in PR 3 and migrated to the unified storage in PR 5.src/store/store.c— adds theprotocol_endpointstable to the project schematests/test_endpoint_registry.c— coverscbm_sl_endpoint_list_*helperstests/test_endpoint_persistence.cis intentionally not here — it testscbm_persist_endpointswhich lives in PR 3What's NOT in this PR
The empty LINKERS table makes
pass_servicelinksa no-op until PR 2 lands the 14 protocol linker.cfiles and restores the full 14-row dispatch. The MCP tool exists but answers empty until PR 3 wires the writer, and PR 5 rewires the reader to the unified storage.Note on #295's URL flag
PR #295 substituted
DeusData→hodizodaacrossserver.json/scripts/setup*.sh/SECURITY.md/ etc. My local fork was rebased onto fresh upstream after that comment and the URL-substitution commits were dropped in the process; this PR (and the 4 stacked behind it) carry none of those changes — install paths, registry URLs, and security-audit allowlists all remain pointed atDeusData/codebase-memory-mcp. Verified withgit diff upstream/main -- server.json scripts/setup*.sh scripts/security-*.sh scripts/security-allowlist.txt SECURITY.md README.md CONTRIBUTING.md docs/index.html .github/workflows/release.ymlreturning empty.Test plan
./scripts/test.shpasses (3620/3620, ASan + UBSan)PR stack
This is the bottom of a 5-PR stack. The remaining PRs (drafts):
cross_project_linksintegrationEach will be un-drafted as the chain merges.