From d1ed21ca1dea195de236611ff96e4cb2ba561638 Mon Sep 17 00:00:00 2001 From: Shreyansh Sancheti <43677304+shreyanshjain7174@users.noreply.github.com> Date: Mon, 13 Jul 2026 21:21:00 +0530 Subject: [PATCH 1/3] refactor: rename Go module and slug to agent-native-format Replace github.com/Clawdlinux/agent-contract-protocol and the older Clawdlinux/ninevigil-acp slug with Clawdlinux/agent-native-format across go.mod, all imports, docs, and deploy configs. Build, vet, and tests pass. Code identifiers (pkg/acp, acp-server, ACP_AUTH_TOKEN) unchanged in this commit. Signed-off-by: Shreyansh Sancheti <43677304+shreyanshjain7174@users.noreply.github.com> --- CHANGELOG.md | 6 +- README.md | 14 ++-- acp-bridge | Bin 8814274 -> 8814910 bytes adapters/python/acp_common/README.md | 4 +- adapters/python/acp_common/pyproject.toml | 8 +-- adapters/python/acp_crewai/pyproject.toml | 4 +- adapters/python/acp_langgraph/pyproject.toml | 8 +-- adapters/python/acp_openai/pyproject.toml | 4 +- blog/launch-post.md | 6 +- cmd/acp-bridge/main.go | 12 ++-- cmd/acp-server/main.go | 12 ++-- cmd/import-demo/main.go | 4 +- docs/decision-log.md | 2 +- docs/operator-integration.md | 8 +-- docs/phase-log.md | 4 +- docs/run-log/2026-05-02-phase-1-scaffold.md | 4 +- .../2026-05-02-phase-2-week-1-server.md | 12 ++-- examples/README.md | 2 +- go.mod | 2 +- internal/bridge/bridge.go | 4 +- internal/bridge/bridge_test.go | 6 +- internal/builder/builder.go | 4 +- internal/builder/builder_fuzz_test.go | 4 +- internal/builder/builder_test.go | 4 +- internal/builder/mocks_test.go | 2 +- internal/mcpclient/stdio.go | 2 +- internal/observability/observability.go | 2 +- internal/observability/observability_test.go | 2 +- internal/proxy/mocks_test.go | 2 +- internal/proxy/proxy.go | 2 +- internal/proxy/proxy_test.go | 2 +- internal/registry/registry.go | 2 +- internal/registry/registry_test.go | 2 +- internal/registry/seed.go | 2 +- internal/server/mocks_test.go | 2 +- internal/server/server.go | 4 +- internal/server/server_extra_test.go | 2 +- internal/server/server_test.go | 2 +- internal/sources/k8s/source.go | 4 +- internal/sources/k8s/source_test.go | 4 +- internal/sources/mcp/source.go | 4 +- internal/sources/mcp/source_test.go | 2 +- landing/index.html | 10 +-- naming-decision.md | 65 ++++++++++++++++++ paper/acp.md | 6 +- pkg/acp/client.go | 2 +- pkg/acp/client_test.go | 2 +- tests/integration/deferred_bridge_test.go | 8 +-- tests/integration/integration_test.go | 12 ++-- tests/integration/mcp_source_to_acp_test.go | 14 ++-- translators/kubernetes/translator.go | 4 +- translators/kubernetes/translator_test.go | 2 +- 52 files changed, 186 insertions(+), 121 deletions(-) create mode 100644 naming-decision.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 7038fa6..25cab2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,7 @@ This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Renamed the project identity from Agent Context Protocol to Agent Contract Protocol while keeping the ACP acronym. - Renamed the Go module and repository references to - `github.com/Clawdlinux/agent-contract-protocol`. + `github.com/Clawdlinux/agent-native-format`. - Reframed the README, SPEC, positioning doc, landing page, and public post draft around governed execution contracts instead of token efficiency. @@ -125,5 +125,5 @@ Mean reduction: **76.6%**. - `pkg/`, `adapters/`: Apache 2.0. - `cmd/`, `internal/`: BSL 1.1, converts to Apache 2.0 on 2029-05-02. -[Unreleased]: https://github.com/Clawdlinux/agent-contract-protocol/compare/v0.1.0-spec...HEAD -[0.1.0-spec]: https://github.com/Clawdlinux/agent-contract-protocol/releases/tag/v0.1.0-spec +[Unreleased]: https://github.com/Clawdlinux/agent-native-format/compare/v0.1.0-spec...HEAD +[0.1.0-spec]: https://github.com/Clawdlinux/agent-native-format/releases/tag/v0.1.0-spec diff --git a/README.md b/README.md index 877acdb..0a6564f 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ agent-contract-protocol/ ### Build from source ```bash -git clone https://github.com/Clawdlinux/agent-contract-protocol +git clone https://github.com/Clawdlinux/agent-native-format cd agent-contract-protocol make build ACP_AUTH_TOKEN=dev-token ./bin/acp-server --addr :8080 @@ -105,7 +105,7 @@ ACP_AUTH_TOKEN=dev-token ./bin/acp-server --addr :8080 For normal MCP users, install the bridge and register one MCP server in VS Code: ```bash -go install github.com/Clawdlinux/agent-contract-protocol/cmd/acp-bridge@latest +go install github.com/Clawdlinux/agent-native-format/cmd/acp-bridge@latest ``` `~/Library/Application Support/Code/User/mcp.json`: @@ -148,7 +148,7 @@ curl -sS -X POST http://localhost:8080/v1/context \ ### Go install after the rename lands ```bash -go install github.com/Clawdlinux/agent-contract-protocol/cmd/acp-server@main +go install github.com/Clawdlinux/agent-native-format/cmd/acp-server@main ACP_AUTH_TOKEN=dev-token acp-server --addr :8080 ``` @@ -230,10 +230,10 @@ See [`docs/positioning.md`](docs/positioning.md) and ## Python adapters ```bash -pip install "git+https://github.com/Clawdlinux/agent-contract-protocol.git@main#subdirectory=adapters/python/acp_common" -pip install "git+https://github.com/Clawdlinux/agent-contract-protocol.git@main#subdirectory=adapters/python/acp_langgraph" -pip install "git+https://github.com/Clawdlinux/agent-contract-protocol.git@main#subdirectory=adapters/python/acp_openai" -pip install "git+https://github.com/Clawdlinux/agent-contract-protocol.git@main#subdirectory=adapters/python/acp_crewai" +pip install "git+https://github.com/Clawdlinux/agent-native-format.git@main#subdirectory=adapters/python/acp_common" +pip install "git+https://github.com/Clawdlinux/agent-native-format.git@main#subdirectory=adapters/python/acp_langgraph" +pip install "git+https://github.com/Clawdlinux/agent-native-format.git@main#subdirectory=adapters/python/acp_openai" +pip install "git+https://github.com/Clawdlinux/agent-native-format.git@main#subdirectory=adapters/python/acp_crewai" ``` ## Go SDK diff --git a/acp-bridge b/acp-bridge index 0c9f82a49b08fcbec968f04a1ba973f96a758558..074422613f4ae5a2c8874a4a231d7efd422d0b09 100755 GIT binary patch delta 3740 zcmaKuO>9(E6vqSB8EB^r?Q5qk17%uTW(v0z0Sgudt*DISe1Er{+M)%E(9$|kt9*HT zVO9+qO-^(nF$QUj8xqZPL4>$4Q7~>B7lv_XVn|HfqW*hhSbcQd`L3c8uWL#VqxSbO&ie#B9)*16JhS^>^Wp%Xwlg7X zDN+#ojUm;7Xr-ls5S+T#D12HJeUvDQ!|UEp!B8|(pl!4se#>;wD3lVAWG08fFZ!9j2cJOiEugWx%E7(5SN055_g zAPiozmrIcj<4xMGg~*9o(|+yqi;*)flS2P|5HU7vyZ^&T^lM`ZuC=*xJ^V6=f*6Q{ z1W1AuNZZ%LnVbE_bZ$0d76-pyQyG&PkOeuA2L(_BLtq$;fD#x5uYfTy4vvCX!E0aw z90SL}>tGU`0B?Yk;1rkw)8I6i0khyuPzGnfSuh9Q0`uT)@D4Z!&Vvi!BDiFa$#<(i z8V{?x%VboVAGcP~*>&&s&`(im9*>AKw-{YOH`jbjnkV=FAva>uJbqR~HqzfQeg}Ti zE&51Ya{fey`8)V6E*+)^8mU=D|Lvv=31(OLg?s3(gBqfiq%<1?}3IF5iAIE2HLVv{Jh=IxoS3Jvy(-i{>>7qMaVPE;Aqa YKi^ePaW@x&ZB(whFWXn$SN6>P3la3RJ^%m! delta 2597 zcmZveTWnNS6oymn?aZalsZ6J3re#Wj7P?z5MMTE7BI0fA+^?N!i=tu$#9KkFrFD1L zu>pNRa781=_()=mQFEdXniwMn(->a7B$`5ukHi-re8Kql^vpT?%=F<)X0NsO+P8K7 zHDB}hYQMetZta|?5x0n2MXjh4^`b#E3Pm`CQ@Dg%G>O}UN2sD%+%DD$uV@iI(JI=+ zdf^uV(Jnf~1`!mUVx#C1o5W_Z<@4?zuhG7t{s7&$*6m;UQV|*LyD= zTX8kf>|no>E=E`z-5g;X*042FF~T<59ebqVNR$O>IK}I!HOgA-j{VZ`<0u=j4+G?n zvGz*aQi8i^HfBqO{WZ{Fn!D)-*`d<;Eca4tTnbicIn4ufBF=nfX5H39u5@Lbmrf>G zhds_q(+Sok+5X93jb9VCxqoH(y2^Fm&tTotNn6~1Nv2S)Xxj^H+okjl$AX(CQqnYq zCSzQstx;UWCn;&Ja?68?xxA~|q#vAEx`Q%3MK!$bNgH_@gyk)s8j08Vd z#RX_bmg$wHmyaITNsHO)BP?ZEpFN*SJvr80X`7342bFTR1YhOY&dRu-R^qzyY_H_F zq%8R9?YvaG3c=Pyf8<#}igOL2(68k9dJ2uQ18X?i=$lcg&=o4ra8pa6+Ht60TT&1H zx4@d|%YyC6$`0$zjm*)a?XvYa*cAG(D18-1@XQ!%q#J8Ec8y8JY6WkqJfNq5I=DK< zW=w~Zj*m-~Xw3a?oDG{HN+~$OKp*G_+rbX76YK&5U^ln}>;ZRzz2Gje4}`$oU=R#} zVQ>%F5AFpAz{STnsDk~YUvth=S6Z4+fi%c~EXaX8 z7zG7T1Y=+vOn^h+QScZz3?2thfG5Eb@D!K?PlKc27&s1|0Vlw-;5qO-cmcc!roc&X z3cLhf2Csl=@G6)Ar@<_k)0XC6`~8Y^4VJ9@8R4yKIOH1DgP|z(bT-N@Ej3i(mngS- zf?B3P*%dyIQDnTiH6pB|nAPrSA1sRZSPzpcwB&4}cLbqv$kXPCQ zg!W>IyB-&y-XyoGNAHF~dLwC@i!RqozuEJZJD=Rb%AHi9iz!=zvO{mDu6NRvPQAZb zU#-!`K1xgPq}!~IQy+RMmyvE=C3GRH&8mdv#mt9R>0p*`lZI%YvKL*gSMuu3Yba;i z0c;*RlaqFD=mwNkmg};1>Z0nh-<&nWP3QB{a~O{0Jl|q&!?5*@@>MBV`NLw^%9_|f zi=)*Wf<7yBE>i7)63S&-*5_uLEJ#N+)_@>8w9g8>ug%<%N{by~4|%7g)T$Pr;t@-c qR%e$kPjfJ@U7i+GZ<+~={&YlHkdKL;6*5EA68;uw4#(@ePyG*8Kzv;Q diff --git a/adapters/python/acp_common/README.md b/adapters/python/acp_common/README.md index aeeeb50..28eec4d 100644 --- a/adapters/python/acp_common/README.md +++ b/adapters/python/acp_common/README.md @@ -1,13 +1,13 @@ # acp-common -Shared client + types for [ACP (Agent Contract Protocol)](https://github.com/Clawdlinux/agent-contract-protocol) Python adapters. Pure-stdlib — `urllib`, `json`, `dataclasses`. No third-party runtime dependencies. +Shared client + types for [ACP (Agent Contract Protocol)](https://github.com/Clawdlinux/agent-native-format) Python adapters. Pure-stdlib — `urllib`, `json`, `dataclasses`. No third-party runtime dependencies. Used by `acp-langgraph`, `acp-openai`, and `acp-crewai`. You generally do not install this directly — it is a transitive dependency of the framework adapter you actually want. ## Install ```bash -pip install "git+https://github.com/Clawdlinux/agent-contract-protocol.git@v0.1.0-spec#subdirectory=adapters/python/acp_common" +pip install "git+https://github.com/Clawdlinux/agent-native-format.git@v0.1.0-spec#subdirectory=adapters/python/acp_common" ``` ## Usage diff --git a/adapters/python/acp_common/pyproject.toml b/adapters/python/acp_common/pyproject.toml index 469afdb..8ceda0e 100644 --- a/adapters/python/acp_common/pyproject.toml +++ b/adapters/python/acp_common/pyproject.toml @@ -27,10 +27,10 @@ classifiers = [ dependencies = [] [project.urls] -Homepage = "https://github.com/Clawdlinux/agent-contract-protocol" -Repository = "https://github.com/Clawdlinux/agent-contract-protocol" -Spec = "https://github.com/Clawdlinux/agent-contract-protocol/blob/main/SPEC.md" -Issues = "https://github.com/Clawdlinux/agent-contract-protocol/issues" +Homepage = "https://github.com/Clawdlinux/agent-native-format" +Repository = "https://github.com/Clawdlinux/agent-native-format" +Spec = "https://github.com/Clawdlinux/agent-native-format/blob/main/SPEC.md" +Issues = "https://github.com/Clawdlinux/agent-native-format/issues" [tool.setuptools] # The package source is the directory containing pyproject.toml itself diff --git a/adapters/python/acp_crewai/pyproject.toml b/adapters/python/acp_crewai/pyproject.toml index 19b88fd..e5c27a2 100644 --- a/adapters/python/acp_crewai/pyproject.toml +++ b/adapters/python/acp_crewai/pyproject.toml @@ -29,8 +29,8 @@ crewai = ["crewai>=0.1.0"] test = ["pytest>=7"] [project.urls] -Homepage = "https://github.com/Clawdlinux/agent-contract-protocol" -Repository = "https://github.com/Clawdlinux/agent-contract-protocol" +Homepage = "https://github.com/Clawdlinux/agent-native-format" +Repository = "https://github.com/Clawdlinux/agent-native-format" [tool.setuptools] packages = ["acp_crewai"] diff --git a/adapters/python/acp_langgraph/pyproject.toml b/adapters/python/acp_langgraph/pyproject.toml index 20b9a60..05cc187 100644 --- a/adapters/python/acp_langgraph/pyproject.toml +++ b/adapters/python/acp_langgraph/pyproject.toml @@ -38,10 +38,10 @@ langgraph = ["langgraph>=0.0.50"] test = ["pytest>=7", "langgraph>=0.0.50"] [project.urls] -Homepage = "https://github.com/Clawdlinux/agent-contract-protocol" -Repository = "https://github.com/Clawdlinux/agent-contract-protocol" -Spec = "https://github.com/Clawdlinux/agent-contract-protocol/blob/main/SPEC.md" -Issues = "https://github.com/Clawdlinux/agent-contract-protocol/issues" +Homepage = "https://github.com/Clawdlinux/agent-native-format" +Repository = "https://github.com/Clawdlinux/agent-native-format" +Spec = "https://github.com/Clawdlinux/agent-native-format/blob/main/SPEC.md" +Issues = "https://github.com/Clawdlinux/agent-native-format/issues" [tool.setuptools] packages = ["acp_langgraph"] diff --git a/adapters/python/acp_openai/pyproject.toml b/adapters/python/acp_openai/pyproject.toml index d634c4c..9feb729 100644 --- a/adapters/python/acp_openai/pyproject.toml +++ b/adapters/python/acp_openai/pyproject.toml @@ -29,8 +29,8 @@ openai = ["openai>=1.0"] test = ["pytest>=7"] [project.urls] -Homepage = "https://github.com/Clawdlinux/agent-contract-protocol" -Repository = "https://github.com/Clawdlinux/agent-contract-protocol" +Homepage = "https://github.com/Clawdlinux/agent-native-format" +Repository = "https://github.com/Clawdlinux/agent-native-format" [tool.setuptools] packages = ["acp_openai"] diff --git a/blog/launch-post.md b/blog/launch-post.md index f397441..8385ac3 100644 --- a/blog/launch-post.md +++ b/blog/launch-post.md @@ -25,7 +25,7 @@ auditable execution out. If this is not your pain, I want to know. -Repo: https://github.com/Clawdlinux/agent-contract-protocol +Repo: https://github.com/Clawdlinux/agent-native-format ## LinkedIn @@ -50,7 +50,7 @@ auditable execution out. Genuinely looking for counterexamples. If this is already solved in your stack, I want to learn how. -Repo: https://github.com/Clawdlinux/agent-contract-protocol +Repo: https://github.com/Clawdlinux/agent-native-format ## Hacker News / Reddit @@ -81,4 +81,4 @@ existing tool sources and emits a signed, identity-bound, ordered, auditable uni of execution. I am not sure yet if this is the right primitive, so I would rather ask before building too much. -Repo: https://github.com/Clawdlinux/agent-contract-protocol \ No newline at end of file +Repo: https://github.com/Clawdlinux/agent-native-format \ No newline at end of file diff --git a/cmd/acp-bridge/main.go b/cmd/acp-bridge/main.go index 85a9f6b..9f5dc8a 100644 --- a/cmd/acp-bridge/main.go +++ b/cmd/acp-bridge/main.go @@ -40,12 +40,12 @@ import ( "time" "unicode" - "github.com/Clawdlinux/agent-contract-protocol/internal/bridge" - "github.com/Clawdlinux/agent-contract-protocol/internal/mcpclient" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/internal/resolver" - mcpsource "github.com/Clawdlinux/agent-contract-protocol/internal/sources/mcp" - "github.com/Clawdlinux/agent-contract-protocol/internal/vscodeconfig" + "github.com/Clawdlinux/agent-native-format/internal/bridge" + "github.com/Clawdlinux/agent-native-format/internal/mcpclient" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/internal/resolver" + mcpsource "github.com/Clawdlinux/agent-native-format/internal/sources/mcp" + "github.com/Clawdlinux/agent-native-format/internal/vscodeconfig" ) var version = "0.2.0-dev" diff --git a/cmd/acp-server/main.go b/cmd/acp-server/main.go index a3196cd..bf76dee 100644 --- a/cmd/acp-server/main.go +++ b/cmd/acp-server/main.go @@ -20,12 +20,12 @@ import ( "syscall" "time" - builder "github.com/Clawdlinux/agent-contract-protocol/internal/builder" - "github.com/Clawdlinux/agent-contract-protocol/internal/observability" - "github.com/Clawdlinux/agent-contract-protocol/internal/proxy" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/internal/resolver" - "github.com/Clawdlinux/agent-contract-protocol/internal/server" + builder "github.com/Clawdlinux/agent-native-format/internal/builder" + "github.com/Clawdlinux/agent-native-format/internal/observability" + "github.com/Clawdlinux/agent-native-format/internal/proxy" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/internal/resolver" + "github.com/Clawdlinux/agent-native-format/internal/server" ) // acpVersion is the version string set at build time via -ldflags. diff --git a/cmd/import-demo/main.go b/cmd/import-demo/main.go index 98372d5..2dbc0d9 100644 --- a/cmd/import-demo/main.go +++ b/cmd/import-demo/main.go @@ -33,8 +33,8 @@ import ( "os" "strings" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - mcpsource "github.com/Clawdlinux/agent-contract-protocol/internal/sources/mcp" + "github.com/Clawdlinux/agent-native-format/internal/registry" + mcpsource "github.com/Clawdlinux/agent-native-format/internal/sources/mcp" ) // sourceFlag is a repeatable -source flag whose value is parsed as a comma- diff --git a/docs/decision-log.md b/docs/decision-log.md index 3af3f59..6bfc569 100644 --- a/docs/decision-log.md +++ b/docs/decision-log.md @@ -2,7 +2,7 @@ ## 2026-05-02 — Start ACP as a private Clawdlinux repo -**Decision:** Create `Clawdlinux/agent-contract-protocol` as a private repository and +**Decision:** Create `Clawdlinux/agent-native-format` as a private repository and build the PoC independently from `agentic-operator-core`. **Why:** ACP is a new protocol and benchmark artifact. Keeping it separate diff --git a/docs/operator-integration.md b/docs/operator-integration.md index 61f956b..3a15e43 100644 --- a/docs/operator-integration.md +++ b/docs/operator-integration.md @@ -20,7 +20,7 @@ other. | POST /v1/context v +-------------------------+ -| ACP server | <-- this repo (Clawdlinux/agent-contract-protocol) +| ACP server | <-- this repo (Clawdlinux/agent-native-format) | - intent resolver | | - contract builder | | - auth proxy | @@ -53,9 +53,9 @@ required. | Concern | Owner | Repo | |---|---|---| -| ACP wire protocol | this repo | `Clawdlinux/agent-contract-protocol` SPEC.md | -| ACP server runtime | this repo | `Clawdlinux/agent-contract-protocol` cmd/, internal/ | -| ACP source adapters (MCP, k8s) | this repo | `Clawdlinux/agent-contract-protocol` internal/sources/ | +| ACP wire protocol | this repo | `Clawdlinux/agent-native-format` SPEC.md | +| ACP server runtime | this repo | `Clawdlinux/agent-native-format` cmd/, internal/ | +| ACP source adapters (MCP, k8s) | this repo | `Clawdlinux/agent-native-format` internal/sources/ | | Kubernetes CRDs (AgentWorkload, AgentCard, Tenant) | operator | `Clawdlinux/agentic-operator-core` api/v1alpha1/ | | Reconcilers | operator | `Clawdlinux/agentic-operator-core` internal/controller/ | | RuntimeClass / NetworkPolicy / RBAC manifests | operator | `Clawdlinux/agentic-operator-core` charts/ | diff --git a/docs/phase-log.md b/docs/phase-log.md index 5e0f653..dd72ef3 100644 --- a/docs/phase-log.md +++ b/docs/phase-log.md @@ -11,8 +11,8 @@ Obsidian vault. **Inputs** - Source spec: `ACP_PoC_Specification_CONFIDENTIAL.docx` - Workspace: `/Users/sunny/clawdlinux/agent-contract-protocol` -- GitHub repo: `Clawdlinux/agent-contract-protocol` (private) -- GitHub milestone: `https://github.com/Clawdlinux/agent-contract-protocol/milestone/1` +- GitHub repo: `Clawdlinux/agent-native-format` (private) +- GitHub milestone: `https://github.com/Clawdlinux/agent-native-format/milestone/1` **Decisions** - Repo name: `agent-contract-protocol` diff --git a/docs/run-log/2026-05-02-phase-1-scaffold.md b/docs/run-log/2026-05-02-phase-1-scaffold.md index 99877fd..11837b1 100644 --- a/docs/run-log/2026-05-02-phase-1-scaffold.md +++ b/docs/run-log/2026-05-02-phase-1-scaffold.md @@ -9,13 +9,13 @@ protocol spec, scaffold, benchmark plan, and Obsidian mirror. - Source document: `/Users/sunny/Documents/Claude/Projects/Kubernetes Agent Swarms for Enterprise/ACP_PoC_Specification_CONFIDENTIAL.docx` - GitHub org: `clawdlinux` -- Repo: `Clawdlinux/agent-contract-protocol` +- Repo: `Clawdlinux/agent-native-format` - Local path: `/Users/sunny/clawdlinux/agent-contract-protocol` - Obsidian vault folder: `ACP-PoC/` inside the NineVigil vault ## Work completed -- Created private GitHub repo `Clawdlinux/agent-contract-protocol`. +- Created private GitHub repo `Clawdlinux/agent-native-format`. - Cloned repo to `/Users/sunny/clawdlinux/agent-contract-protocol`. - Created source-spec scaffold: - `cmd/acp-server/` diff --git a/docs/run-log/2026-05-02-phase-2-week-1-server.md b/docs/run-log/2026-05-02-phase-2-week-1-server.md index 39c91cb..92b79de 100644 --- a/docs/run-log/2026-05-02-phase-2-week-1-server.md +++ b/docs/run-log/2026-05-02-phase-2-week-1-server.md @@ -95,12 +95,12 @@ builder, and bearer auth. ```bash $ go test -race -count=1 ./... -ok github.com/Clawdlinux/agent-contract-protocol/internal/manifest 0.49s -ok github.com/Clawdlinux/agent-contract-protocol/internal/registry 0.91s -ok github.com/Clawdlinux/agent-contract-protocol/internal/resolver 0.51s -ok github.com/Clawdlinux/agent-contract-protocol/internal/server 0.59s -ok github.com/Clawdlinux/agent-contract-protocol/pkg/acp 0.57s -ok github.com/Clawdlinux/agent-contract-protocol/pkg/manifest 0.43s +ok github.com/Clawdlinux/agent-native-format/internal/manifest 0.49s +ok github.com/Clawdlinux/agent-native-format/internal/registry 0.91s +ok github.com/Clawdlinux/agent-native-format/internal/resolver 0.51s +ok github.com/Clawdlinux/agent-native-format/internal/server 0.59s +ok github.com/Clawdlinux/agent-native-format/pkg/acp 0.57s +ok github.com/Clawdlinux/agent-native-format/pkg/manifest 0.43s ``` End-to-end smoke test against the running binary: diff --git a/examples/README.md b/examples/README.md index 004227c..20fd822 100644 --- a/examples/README.md +++ b/examples/README.md @@ -8,7 +8,7 @@ ACP-managed tool surface. Install the bridge: ```bash -go install github.com/Clawdlinux/agent-contract-protocol/cmd/acp-bridge@latest +go install github.com/Clawdlinux/agent-native-format/cmd/acp-bridge@latest ``` Add one server to VS Code `mcp.json`: diff --git a/go.mod b/go.mod index e6846a0..0b0444f 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/Clawdlinux/agent-contract-protocol +module github.com/Clawdlinux/agent-native-format go 1.25.3 diff --git a/internal/bridge/bridge.go b/internal/bridge/bridge.go index 8db9d6b..6555dff 100644 --- a/internal/bridge/bridge.go +++ b/internal/bridge/bridge.go @@ -31,8 +31,8 @@ import ( "strings" "sync" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/internal/resolver" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/internal/resolver" ) // Forwarder routes a bridge tools/call to the original downstream MCP server. diff --git a/internal/bridge/bridge_test.go b/internal/bridge/bridge_test.go index 1d6e8a7..8ff7847 100644 --- a/internal/bridge/bridge_test.go +++ b/internal/bridge/bridge_test.go @@ -14,9 +14,9 @@ import ( "strings" "testing" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/internal/resolver" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/internal/resolver" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) type fakeForwarder struct { diff --git a/internal/builder/builder.go b/internal/builder/builder.go index 5d77e90..0a64431 100644 --- a/internal/builder/builder.go +++ b/internal/builder/builder.go @@ -19,8 +19,8 @@ import ( "sort" "strings" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) //go:generate ../../bin/mockgen -source=builder.go -destination=mocks_test.go -package=builder diff --git a/internal/builder/builder_fuzz_test.go b/internal/builder/builder_fuzz_test.go index ea105c6..bae8cd6 100644 --- a/internal/builder/builder_fuzz_test.go +++ b/internal/builder/builder_fuzz_test.go @@ -12,8 +12,8 @@ import ( "testing" "unicode/utf8" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) func makeFuzzTool(depsCaps []string) registry.Tool { diff --git a/internal/builder/builder_test.go b/internal/builder/builder_test.go index 4039a7e..e722474 100644 --- a/internal/builder/builder_test.go +++ b/internal/builder/builder_test.go @@ -14,8 +14,8 @@ import ( "go.uber.org/mock/gomock" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) // fixedID is a tiny IDSource for deterministic tests. diff --git a/internal/builder/mocks_test.go b/internal/builder/mocks_test.go index 80d9c3b..ac63ae4 100644 --- a/internal/builder/mocks_test.go +++ b/internal/builder/mocks_test.go @@ -12,7 +12,7 @@ package builder import ( reflect "reflect" - registry "github.com/Clawdlinux/agent-contract-protocol/internal/registry" + registry "github.com/Clawdlinux/agent-native-format/internal/registry" gomock "go.uber.org/mock/gomock" ) diff --git a/internal/mcpclient/stdio.go b/internal/mcpclient/stdio.go index 3ab128c..b95bc2e 100644 --- a/internal/mcpclient/stdio.go +++ b/internal/mcpclient/stdio.go @@ -24,7 +24,7 @@ import ( "sync/atomic" "time" - mcpsource "github.com/Clawdlinux/agent-contract-protocol/internal/sources/mcp" + mcpsource "github.com/Clawdlinux/agent-native-format/internal/sources/mcp" ) const defaultProtocolVersion = "2025-03-26" diff --git a/internal/observability/observability.go b/internal/observability/observability.go index 5b9946b..4dc7236 100644 --- a/internal/observability/observability.go +++ b/internal/observability/observability.go @@ -38,7 +38,7 @@ import ( ) const ( - TracerName = "github.com/Clawdlinux/agent-contract-protocol/internal/observability" + TracerName = "github.com/Clawdlinux/agent-native-format/internal/observability" SchemaURL = "https://opentelemetry.io/schemas/genai/1.30.0" ) diff --git a/internal/observability/observability_test.go b/internal/observability/observability_test.go index caaee02..9ac8203 100644 --- a/internal/observability/observability_test.go +++ b/internal/observability/observability_test.go @@ -15,7 +15,7 @@ import ( sdktrace "go.opentelemetry.io/otel/sdk/trace" "go.opentelemetry.io/otel/sdk/trace/tracetest" - "github.com/Clawdlinux/agent-contract-protocol/internal/observability" + "github.com/Clawdlinux/agent-native-format/internal/observability" ) func setupRecorder(t *testing.T) (*tracetest.SpanRecorder, func()) { diff --git a/internal/proxy/mocks_test.go b/internal/proxy/mocks_test.go index c8cbf01..f3860d8 100644 --- a/internal/proxy/mocks_test.go +++ b/internal/proxy/mocks_test.go @@ -14,7 +14,7 @@ import ( http "net/http" reflect "reflect" - manifest "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + manifest "github.com/Clawdlinux/agent-native-format/pkg/manifest" gomock "go.uber.org/mock/gomock" ) diff --git a/internal/proxy/proxy.go b/internal/proxy/proxy.go index ee7f574..1b9b6da 100644 --- a/internal/proxy/proxy.go +++ b/internal/proxy/proxy.go @@ -32,7 +32,7 @@ import ( "net/url" "strings" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) //go:generate ../../bin/mockgen -source=proxy.go -destination=mocks_test.go -package=proxy diff --git a/internal/proxy/proxy_test.go b/internal/proxy/proxy_test.go index e5caba3..42aed36 100644 --- a/internal/proxy/proxy_test.go +++ b/internal/proxy/proxy_test.go @@ -20,7 +20,7 @@ import ( "go.uber.org/mock/gomock" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) // fakeUpstream returns an httptest.Server that records the last request it diff --git a/internal/registry/registry.go b/internal/registry/registry.go index 8dfbb54..04c25da 100644 --- a/internal/registry/registry.go +++ b/internal/registry/registry.go @@ -15,7 +15,7 @@ import ( "strings" "sync" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) // ErrNotFound is returned when a tool is not registered. diff --git a/internal/registry/registry_test.go b/internal/registry/registry_test.go index c4d75e0..7e90068 100644 --- a/internal/registry/registry_test.go +++ b/internal/registry/registry_test.go @@ -12,7 +12,7 @@ import ( "reflect" "testing" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) func newTool(id string, caps ...string) Tool { diff --git a/internal/registry/seed.go b/internal/registry/seed.go index 5c35644..c3f17ca 100644 --- a/internal/registry/seed.go +++ b/internal/registry/seed.go @@ -7,7 +7,7 @@ See LICENSE in the repository root. package registry -import "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" +import "github.com/Clawdlinux/agent-native-format/pkg/manifest" // Seed populates a registry with a baseline of demo tools used by the Week 1 // PoC server, the docker-compose dev stack, and the benchmark harness. diff --git a/internal/server/mocks_test.go b/internal/server/mocks_test.go index e20abb0..44215eb 100644 --- a/internal/server/mocks_test.go +++ b/internal/server/mocks_test.go @@ -12,7 +12,7 @@ package server import ( reflect "reflect" - manifest "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + manifest "github.com/Clawdlinux/agent-native-format/pkg/manifest" gomock "go.uber.org/mock/gomock" ) diff --git a/internal/server/server.go b/internal/server/server.go index 88dfa0d..11fe2ec 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -23,8 +23,8 @@ import ( "sync/atomic" "time" - "github.com/Clawdlinux/agent-contract-protocol/internal/observability" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/internal/observability" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) //go:generate ../../bin/mockgen -source=server.go -destination=mocks_test.go -package=server diff --git a/internal/server/server_extra_test.go b/internal/server/server_extra_test.go index f814263..c44e084 100644 --- a/internal/server/server_extra_test.go +++ b/internal/server/server_extra_test.go @@ -18,7 +18,7 @@ import ( "testing" "time" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) // errorSink always fails on Record so we can hit handleFeedback's 500 path. diff --git a/internal/server/server_test.go b/internal/server/server_test.go index 0292bc1..f95a223 100644 --- a/internal/server/server_test.go +++ b/internal/server/server_test.go @@ -19,7 +19,7 @@ import ( "go.uber.org/mock/gomock" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) func newServer(t *testing.T, cfg Config) *httptest.Server { diff --git a/internal/sources/k8s/source.go b/internal/sources/k8s/source.go index 35db300..1147e51 100644 --- a/internal/sources/k8s/source.go +++ b/internal/sources/k8s/source.go @@ -39,8 +39,8 @@ import ( "sort" "strings" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) // AnnotationPrefix is the common prefix for all ACP-relevant Service diff --git a/internal/sources/k8s/source_test.go b/internal/sources/k8s/source_test.go index ef50a97..648b1ed 100644 --- a/internal/sources/k8s/source_test.go +++ b/internal/sources/k8s/source_test.go @@ -12,8 +12,8 @@ import ( "sort" "testing" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) func ann(kvs ...string) map[string]string { diff --git a/internal/sources/mcp/source.go b/internal/sources/mcp/source.go index 7de9595..20c3b7a 100644 --- a/internal/sources/mcp/source.go +++ b/internal/sources/mcp/source.go @@ -34,8 +34,8 @@ import ( "strings" "time" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) //go:generate ../../../bin/mockgen -source=source.go -destination=mocks_test.go -package=mcp diff --git a/internal/sources/mcp/source_test.go b/internal/sources/mcp/source_test.go index 44e2c48..f33730f 100644 --- a/internal/sources/mcp/source_test.go +++ b/internal/sources/mcp/source_test.go @@ -18,7 +18,7 @@ import ( "go.uber.org/mock/gomock" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" + "github.com/Clawdlinux/agent-native-format/internal/registry" ) func sampleToolsListJSON() string { diff --git a/landing/index.html b/landing/index.html index 94bf42a..239d2f2 100644 --- a/landing/index.html +++ b/landing/index.html @@ -89,7 +89,7 @@

Token efficiency as a side effect

Try it (~30 seconds)

-
git clone https://github.com/Clawdlinux/agent-contract-protocol
+    
git clone https://github.com/Clawdlinux/agent-native-format
 cd agent-contract-protocol
 go build -o bin/acp-server ./cmd/acp-server
 ACP_AUTH_TOKEN=dev ./bin/acp-server --addr :8080 &
@@ -142,9 +142,9 @@ 

What the contract gives you

- Code on GitHub - Read SPEC.md - Paper draft + Code on GitHub + Read SPEC.md + Paper draft
diff --git a/naming-decision.md b/naming-decision.md new file mode 100644 index 0000000..9a40245 --- /dev/null +++ b/naming-decision.md @@ -0,0 +1,65 @@ +# Naming Decision — ACP protocol + +Date: 2026-06-16. Status: DECIDED by PR #20. This doc ratifies it. +Author: ralph loop, Lane A1. + +## What was decided + +PR #20 ("refactor: reframe ACP as Agent Contract Protocol") already made the +call and shipped the rename. The name is **Agent Contract Protocol**, acronym +**ACP**. The "C" moves from Context to Contract. PR #20 renamed the repo slug +and Go module to `agent-contract-protocol` and rewrote README, SPEC, +positioning, landing, paper, and validation docs across ~70 files. + +This doc does not reopen that. It records the collision evidence so the risk is +known and the one mitigation is enforced. + +## The bet, stated plainly + +Keep ACP. Do not fight for the bare acronym. Own the full phrase "Agent Contract +Protocol" and the category: a signed, identity-bound, ordered, auditable +execution contract for agents. MCP stays the discovery supply chain. That +framing is distinct from every other "ACP" below, so the collision is on the +acronym only, not the product. + +## Collision evidence (verified 2026-06-16) + +The acronym collides at least three ways. Two confirmed by direct fetch: + +- agent-context-protocol — live GitHub org, self-describes as "The first + protocol for multi-agent communication and coordination." MIT, active 2025. + https://github.com/agent-context-protocol +- Agent Client Protocol (Zed) — brands itself "ACP", standardizes + editor<->coding-agent comms, JSON-RPC over stdio, reuses MCP JSON. Shares our + transport and MCP-reuse story. https://agentclientprotocol.com +- Agent Communication Protocol (IBM / Linux Foundation, BeeAI lineage) — widely + cited "ACP". Verify the URL before citing it in the paper. + +## The mitigation (enforce this, it is the whole risk control) + +Because Zed's "ACP" shares our transport story, the bare acronym is contested. +The reframe survives that only if we are disciplined: + +1. Always use the full phrase "Agent Contract Protocol" on first mention in the + README h1, the arXiv paper title, and every launch post. Never lead with bare + "ACP". +2. Paper title must be the full phrase, e.g. "Agent Contract Protocol: a + governed execution contract for autonomous agents." Do not title it "ACP". +3. In the README, add one line that says what it is NOT: not Zed's Agent Client + Protocol, not IBM's Agent Communication Protocol. Disambiguate on purpose. +4. SEO/discovery: register the GitHub topic and any social handle as + "agent-contract-protocol", the unique string, not "acp". + +## Status of related lanes (reconciled to reality) + +- Lane A (naming): DONE by PR #20. Human gate is now "review + merge PR #20", + not "pick a name." +- Lane C1 (bridge): DONE. PR #15 is open and mergeable. +- Lane C3 (PyPI): PR #20 adds pyproject.toml to all four adapters. Packaging + metadata exists; publish is still the human-gated step. + +## Human gate (was A2, now restated) + +1. Review and merge PR #20 to land the reframe on main. +2. Then merge PR #15 (bridge) on top, or rebase it on the reframed main. +3. Confirm the paper title uses the full phrase before arXiv submit. diff --git a/paper/acp.md b/paper/acp.md index f14f91f..d86cdea 100644 --- a/paper/acp.md +++ b/paper/acp.md @@ -29,7 +29,7 @@ discovery (MCP-Zero), ACP combines server-side intent resolution, schema stripping, credential injection, and dependency pre-computation into one execution manifest. The reference implementation is open source. -**Code:** `https://github.com/Clawdlinux/agent-contract-protocol` +**Code:** `https://github.com/Clawdlinux/agent-native-format` **License (spec):** CC BY 4.0 **License (reference runtime):** BSL 1.1, converts to Apache 2.0 on 2029-05-02 @@ -332,7 +332,7 @@ All benchmark code and result artifacts are open: - Deterministic results: `results/2026-05-02-week3-baseline.json` ```bash -git clone https://github.com/Clawdlinux/agent-contract-protocol +git clone https://github.com/Clawdlinux/agent-native-format cd agent-contract-protocol python3 -m venv .venv && .venv/bin/pip install tiktoken export $(grep -v '^#' .env | xargs) @@ -446,4 +446,4 @@ from teams running multi-tool agent systems at scale. *Draft updated: 2026-05-13. Frontier benchmark: 120 API calls across Opus 4.7, Sonnet 4.6, GPT-5.5, GPT-5.4. Raw results committed under `results/frontier/`. Manuscript source: -`https://github.com/Clawdlinux/agent-contract-protocol/blob/main/paper/acp.md`* \ No newline at end of file +`https://github.com/Clawdlinux/agent-native-format/blob/main/paper/acp.md`* \ No newline at end of file diff --git a/pkg/acp/client.go b/pkg/acp/client.go index c967f9c..62441f6 100644 --- a/pkg/acp/client.go +++ b/pkg/acp/client.go @@ -30,7 +30,7 @@ import ( "strings" "time" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) //go:generate ../../bin/mockgen -source=client.go -destination=mock_httpdoer_test.go -package=acp diff --git a/pkg/acp/client_test.go b/pkg/acp/client_test.go index fb35028..6d2d231 100644 --- a/pkg/acp/client_test.go +++ b/pkg/acp/client_test.go @@ -22,7 +22,7 @@ import ( "go.uber.org/mock/gomock" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) func mustResponse(status int, body any) *http.Response { diff --git a/tests/integration/deferred_bridge_test.go b/tests/integration/deferred_bridge_test.go index 9686621..faecbea 100644 --- a/tests/integration/deferred_bridge_test.go +++ b/tests/integration/deferred_bridge_test.go @@ -28,10 +28,10 @@ import ( "strings" "testing" - "github.com/Clawdlinux/agent-contract-protocol/internal/bridge" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/internal/resolver" - mcpsource "github.com/Clawdlinux/agent-contract-protocol/internal/sources/mcp" + "github.com/Clawdlinux/agent-native-format/internal/bridge" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/internal/resolver" + mcpsource "github.com/Clawdlinux/agent-native-format/internal/sources/mcp" ) type jsonrpcRequest struct { diff --git a/tests/integration/integration_test.go b/tests/integration/integration_test.go index b84f88f..7536ed9 100644 --- a/tests/integration/integration_test.go +++ b/tests/integration/integration_test.go @@ -19,12 +19,12 @@ import ( "testing" "time" - builder "github.com/Clawdlinux/agent-contract-protocol/internal/builder" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/internal/resolver" - "github.com/Clawdlinux/agent-contract-protocol/internal/server" - "github.com/Clawdlinux/agent-contract-protocol/pkg/acp" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + builder "github.com/Clawdlinux/agent-native-format/internal/builder" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/internal/resolver" + "github.com/Clawdlinux/agent-native-format/internal/server" + "github.com/Clawdlinux/agent-native-format/pkg/acp" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) // liveStack returns an httptest.Server hosting a fully-wired ACP stack. diff --git a/tests/integration/mcp_source_to_acp_test.go b/tests/integration/mcp_source_to_acp_test.go index a215bc1..26ea333 100644 --- a/tests/integration/mcp_source_to_acp_test.go +++ b/tests/integration/mcp_source_to_acp_test.go @@ -28,13 +28,13 @@ import ( "testing" "time" - builder "github.com/Clawdlinux/agent-contract-protocol/internal/builder" - "github.com/Clawdlinux/agent-contract-protocol/internal/registry" - "github.com/Clawdlinux/agent-contract-protocol/internal/resolver" - "github.com/Clawdlinux/agent-contract-protocol/internal/server" - mcpsource "github.com/Clawdlinux/agent-contract-protocol/internal/sources/mcp" - "github.com/Clawdlinux/agent-contract-protocol/pkg/acp" - "github.com/Clawdlinux/agent-contract-protocol/pkg/manifest" + builder "github.com/Clawdlinux/agent-native-format/internal/builder" + "github.com/Clawdlinux/agent-native-format/internal/registry" + "github.com/Clawdlinux/agent-native-format/internal/resolver" + "github.com/Clawdlinux/agent-native-format/internal/server" + mcpsource "github.com/Clawdlinux/agent-native-format/internal/sources/mcp" + "github.com/Clawdlinux/agent-native-format/pkg/acp" + "github.com/Clawdlinux/agent-native-format/pkg/manifest" ) // fakeMCPServer returns an httptest.Server that serves a verbose MCP diff --git a/translators/kubernetes/translator.go b/translators/kubernetes/translator.go index 0b595aa..b7ecfdf 100644 --- a/translators/kubernetes/translator.go +++ b/translators/kubernetes/translator.go @@ -3,7 +3,7 @@ // // This package is designed to be imported by agentic-operator-core: // -// import "github.com/Clawdlinux/agent-contract-protocol/translators/kubernetes" +// import "github.com/Clawdlinux/agent-native-format/translators/kubernetes" // // The translator takes standard k8s.io types and produces ANF documents // that compress ~12,000 tokens of raw K8s JSON into ~350 tokens of @@ -16,7 +16,7 @@ import ( "strings" "time" - "github.com/Clawdlinux/agent-contract-protocol/pkg/anf" + "github.com/Clawdlinux/agent-native-format/pkg/anf" ) const TranslatorVersion = "ninevigil/k8s-translator:0.1.0" diff --git a/translators/kubernetes/translator_test.go b/translators/kubernetes/translator_test.go index 582ef83..2b37f56 100644 --- a/translators/kubernetes/translator_test.go +++ b/translators/kubernetes/translator_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/Clawdlinux/agent-contract-protocol/pkg/anf" + "github.com/Clawdlinux/agent-native-format/pkg/anf" ) // TestTranslatePaymentsNamespace produces the example from FORMAT.md and From 03db42c3dbeaed9db2e3d0c984d22ddd91c8e408 Mon Sep 17 00:00:00 2001 From: Shreyansh Sancheti <43677304+shreyanshjain7174@users.noreply.github.com> Date: Mon, 13 Jul 2026 21:26:07 +0530 Subject: [PATCH 2/3] docs: reposition repo as Agent Native Format Lead README and About with ANF, the token-minimal view format (FORMAT.md, pkg/anf, Kubernetes translator). Keep the execution-contract runtime as a secondary component. Supersede the 2026-06-16 naming record. Fix stale clone path and release-tag notes. Code identifiers (acp-server, pkg/acp, ACP_AUTH_TOKEN) and the paper are follow-ups, noted in naming-decision.md. Signed-off-by: Shreyansh Sancheti <43677304+shreyanshjain7174@users.noreply.github.com> --- README.md | 108 ++++++++++++++++++++++++--------------------- naming-decision.md | 83 +++++++++++++--------------------- 2 files changed, 88 insertions(+), 103 deletions(-) diff --git a/README.md b/README.md index 0a6564f..6d9ca27 100644 --- a/README.md +++ b/README.md @@ -1,60 +1,64 @@ -# Agent Contract Protocol +# Agent Native Format (ANF) -> **ACP** is the governed execution layer for autonomous agents. -> Any tool source in. Signed, identity-bound, ordered, auditable execution out. +> **ANF** is a token-minimal view format for AI agents. +> Translate live system state into far fewer tokens. Same facts, a fraction of +> the context window. > -> **Status:** Public PoC · v0.2 DRAFT · June 2026  **Owner:** Clawdlinux / NineVigil +> **Status:** Public PoC · v0.1 spec DRAFT · 2026  **Owner:** Clawdlinux + +Not Zed's Agent Client Protocol. Not IBM's Agent Communication Protocol. ANF is +a data format, not a transport. --- ## TL;DR -MCP answers **what tools exist**. Claude Code Tool Search and semantic retrieval -are making tool selection cheaper. That is good. It also means raw token -reduction is not a durable product thesis. +JSON, YAML, and HTML are built for humans. Agents pay for that in tokens. -The hard problem is now execution trust. +ANF is a line-oriented representation built for LLM consumption. It encodes the +decision-relevant state of a system, a Kubernetes namespace, a database, a SaaS +dashboard, in the fewest tokens that still carry the facts. -Before an autonomous agent touches a real system, you need to know: +- No quotes, braces, or commas. Indentation and newlines are the structure. +- Health, alerts, and available actions surface first. +- Self-describing. An LLM parses it with no schema. -1. **Who is it acting as?** The contract binds execution to an agent identity - and a credential alias. Raw credentials never enter the model context. -2. **What is it allowed to do?** The contract declares egress, approval gates, - TTL, rate limits, and audit level. -3. **What happened afterward?** Every action can be tied back to a contract, - action id, principal, outcome, and audit record. +A Kubernetes namespace that costs about 12,000 tokens as raw API JSON costs +about 350 tokens as ANF. The full spec is in [`FORMAT.md`](FORMAT.md). -ACP takes an agent intent and returns an **Execution Contract**. The current -wire type is still `ExecutionManifest` for v0.1 compatibility, but the contract -is the product primitive: scoped capabilities, ordered actions, auth handled at -the proxy, and policy declared before the first tool call. +## What ships today -## Why this exists +- **Spec.** [`FORMAT.md`](FORMAT.md), CC BY 4.0. The format definition. +- **Go encoder.** [`pkg/anf`](pkg/anf), Apache 2.0. Build and emit ANF documents. +- **Kubernetes translator.** [`translators/kubernetes`](translators/kubernetes). + Live cluster state to ANF. +- **Benchmarks.** Reproducible token measurements against raw and filtered JSON. -Autonomous agents are stuck in demos because teams cannot bound their blast -radius. Tool discovery is getting solved. Production execution governance is -not. +## Governed execution runtime -ACP is a small open contract format and reference runtime for that gap: +The repo also ships a reference runtime that turns an agent intent into a +scoped, auditable execution contract. This was the original Agent Contract +Protocol work. It stays here as the execution layer that consumes tool +discovery and enforces policy at the boundary. -- **MCP-compatible.** Existing MCP servers keep working. ACP consumes their - `tools/list` and emits a governed execution contract. -- **Source-agnostic.** MCP, Kubernetes Services, and future OpenAPI/gRPC/CLI - adapters all normalize into the same contract shape. -- **Policy at the boundary.** The proxy enforces egress and approval. The - model does not get to self-police. -- **Audit by construction.** Feedback and proxy execution events attach to the - same contract id. +Before an autonomous agent touches a real system, the runtime answers: -## Token efficiency is a side effect +1. **Who is it acting as?** The contract binds execution to an agent identity + and a credential alias. Raw credentials never enter the model context. +2. **What is it allowed to do?** The contract declares egress, approval gates, + TTL, rate limits, and audit level. +3. **What happened afterward?** Every action ties back to a contract, action + id, principal, outcome, and audit record. -ACP still reduces tool-context tokens because contracts only include the -capabilities needed for the intent. +The runtime is MCP-compatible. It consumes existing `tools/list` output, +normalizes MCP, Kubernetes, and future OpenAPI/gRPC/CLI sources into one +contract shape, enforces egress and approval at the proxy, and attaches audit +events to the same contract id. -Measured benchmark data is in -[`results/2026-05-02-week3-summary.md`](results/2026-05-02-week3-summary.md). +Scoped contracts also cut tool-context tokens, because a contract only carries +the capabilities the intent needs. Measured against the MCP baseline: -| Scenario | ACP / MCP tokens | ACP / MCP round trips | Reduction | +| Scenario | runtime / MCP tokens | runtime / MCP round trips | Reduction | |---|---:|---:|---:| | S1 Simple DB query | 111 / 373 | 1 / 3 | 70.2% | | S2 Multi-tool workflow | 295 / 837 | 1 / 5 | 64.7% | @@ -62,16 +66,23 @@ Measured benchmark data is in | S4 Scale, 50 tools and 2 relevant | 241 / 9,223 | 1 / 21 | 97.4% | | S5 Auth-heavy | 359 / 1,431 | 1 / 7 | 74.9% | -Those numbers are useful. They are not the moat. The moat is the governed -execution contract. +Full data in +[`results/2026-05-02-week3-summary.md`](results/2026-05-02-week3-summary.md). ## Repository layout ```text -agent-contract-protocol/ -├── SPEC.md # ACP protocol specification +agent-native-format/ +├── FORMAT.md # ANF format specification (CC BY 4.0) +├── SPEC.md # Execution runtime protocol specification +├── pkg/ +│ ├── anf/ # ANF encoder and types +│ ├── acp/ # Execution runtime Go SDK +│ └── manifest/ # Wire types +├── translators/ +│ └── kubernetes/ # Live cluster state to ANF ├── cmd/ -│ ├── acp-server/ # ACP server entrypoint +│ ├── acp-server/ # Execution runtime entrypoint │ ├── acp-bridge/ # MCP bridge for IDE-style clients │ └── benchmark/ # Benchmark CLI ├── internal/ @@ -80,11 +91,8 @@ agent-contract-protocol/ │ ├── registry/ # Tool registry │ ├── resolver/ # Intent to capabilities resolver │ └── sources/ # MCP and Kubernetes source adapters -├── pkg/ -│ ├── acp/ # Public Go SDK -│ └── manifest/ # Wire types ├── adapters/python/ # Python adapters for common agent stacks -├── benchmark/ # Reproducible MCP vs ACP harness +├── benchmark/ # Reproducible token benchmark harness ├── docs/ # Architecture, positioning, validation └── deploy/ # Docker Compose and Kubernetes assets ``` @@ -95,7 +103,7 @@ agent-contract-protocol/ ```bash git clone https://github.com/Clawdlinux/agent-native-format -cd agent-contract-protocol +cd agent-native-format make build ACP_AUTH_TOKEN=dev-token ./bin/acp-server --addr :8080 ``` @@ -145,14 +153,14 @@ curl -sS -X POST http://localhost:8080/v1/context \ | python3 -m json.tool ``` -### Go install after the rename lands +### Go install ```bash go install github.com/Clawdlinux/agent-native-format/cmd/acp-server@main ACP_AUTH_TOKEN=dev-token acp-server --addr :8080 ``` -Use a release tag once the first Agent Contract Protocol tag is cut. +Use a release tag like `@v0.2.0-paper` for reproducible installs. ## Use with existing MCP servers diff --git a/naming-decision.md b/naming-decision.md index 9a40245..1336ab1 100644 --- a/naming-decision.md +++ b/naming-decision.md @@ -1,65 +1,42 @@ -# Naming Decision — ACP protocol +# Naming Decision: Agent Native Format -Date: 2026-06-16. Status: DECIDED by PR #20. This doc ratifies it. -Author: ralph loop, Lane A1. +Date: 2026-07-13. Status: DECIDED. Supersedes the 2026-06-16 record. -## What was decided +## What changed -PR #20 ("refactor: reframe ACP as Agent Contract Protocol") already made the -call and shipped the rename. The name is **Agent Contract Protocol**, acronym -**ACP**. The "C" moves from Context to Contract. PR #20 renamed the repo slug -and Go module to `agent-contract-protocol` and rewrote README, SPEC, -positioning, landing, paper, and validation docs across ~70 files. +The repo is now Agent Native Format (ANF). The GitHub slug, Go module path, +README, and About all lead with ANF. The prior record from 2026-06-16 ratified +"Agent Contract Protocol / ACP" and is now superseded. -This doc does not reopen that. It records the collision evidence so the risk is -known and the one mitigation is enforced. +## Why -## The bet, stated plainly +ANF is the durable primitive. It is a token-minimal view format that translates +live system state into far fewer tokens for agent consumption. It is specified +in `FORMAT.md`, implemented in `pkg/anf`, and shipped with a Kubernetes +translator. -Keep ACP. Do not fight for the bare acronym. Own the full phrase "Agent Contract -Protocol" and the category: a signed, identity-bound, ordered, auditable -execution contract for agents. MCP stays the discovery supply chain. That -framing is distinct from every other "ACP" below, so the collision is on the -acronym only, not the product. +The execution-contract runtime, formerly ACP, stays in the repo as a secondary +component. It is the governed execution layer that consumes tool discovery and +enforces policy at the boundary. Its code identifiers (`pkg/acp`, `acp-server`, +`ACP_AUTH_TOKEN`) are unchanged for now. Renaming them is a separate breaking +follow-up. -## Collision evidence (verified 2026-06-16) +## Acronym collisions (still enforced) -The acronym collides at least three ways. Two confirmed by direct fetch: +ANF as a data format sits apart from the "ACP" cluster: -- agent-context-protocol — live GitHub org, self-describes as "The first - protocol for multi-agent communication and coordination." MIT, active 2025. - https://github.com/agent-context-protocol -- Agent Client Protocol (Zed) — brands itself "ACP", standardizes - editor<->coding-agent comms, JSON-RPC over stdio, reuses MCP JSON. Shares our - transport and MCP-reuse story. https://agentclientprotocol.com -- Agent Communication Protocol (IBM / Linux Foundation, BeeAI lineage) — widely - cited "ACP". Verify the URL before citing it in the paper. +- Zed Agent Client Protocol is a transport. ANF is not a transport. +- IBM Agent Communication Protocol is multi-agent messaging. ANF is a view format. +- agent-context-protocol is multi-agent coordination. ANF is a serialization. -## The mitigation (enforce this, it is the whole risk control) +Rule: on first mention in the README h1, the paper title, and every launch post, +use the full phrase "Agent Native Format". Disambiguate from the ACP cluster on +purpose. -Because Zed's "ACP" shares our transport story, the bare acronym is contested. -The reframe survives that only if we are disciplined: +## Follow-ups (not in the reposition PR) -1. Always use the full phrase "Agent Contract Protocol" on first mention in the - README h1, the arXiv paper title, and every launch post. Never lead with bare - "ACP". -2. Paper title must be the full phrase, e.g. "Agent Contract Protocol: a - governed execution contract for autonomous agents." Do not title it "ACP". -3. In the README, add one line that says what it is NOT: not Zed's Agent Client - Protocol, not IBM's Agent Communication Protocol. Disambiguate on purpose. -4. SEO/discovery: register the GitHub topic and any social handle as - "agent-contract-protocol", the unique string, not "acp". - -## Status of related lanes (reconciled to reality) - -- Lane A (naming): DONE by PR #20. Human gate is now "review + merge PR #20", - not "pick a name." -- Lane C1 (bridge): DONE. PR #15 is open and mergeable. -- Lane C3 (PyPI): PR #20 adds pyproject.toml to all four adapters. Packaging - metadata exists; publish is still the human-gated step. - -## Human gate (was A2, now restated) - -1. Review and merge PR #20 to land the reframe on main. -2. Then merge PR #15 (bridge) on top, or rebase it on the reframed main. -3. Confirm the paper title uses the full phrase before arXiv submit. +1. Decide whether to keep, rename, or deprecate the execution runtime and its + `acp-*` code identifiers. +2. Retitle the paper (`paper/acp.*`) and rebuild the PDF as `anf.pdf` before the + next arXiv update. Needs a chosen paper title. +3. Cut a fresh ANF-branded release once 1 and 2 land. From 7bf4cc9dad064618424f396a73bebec7066bc8c2 Mon Sep 17 00:00:00 2001 From: Shreyansh Sancheti <43677304+shreyanshjain7174@users.noreply.github.com> Date: Mon, 13 Jul 2026 21:55:47 +0530 Subject: [PATCH 3/3] ci: align docs check with ANF positioning and patch crypto/tls CVE - check_docs.py: README required phrases now match the ANF reposition (Agent Native Format, token-minimal view format, Governed execution runtime) instead of the old ACP positioning. - go.mod: bump toolchain go1.26.4 -> go1.26.5 to resolve GO-2026-5856 (crypto/tls ECH privacy leak). govulncheck now reports 0 called vulns. This also fixes the same govulncheck failure on main. Signed-off-by: Shreyansh Sancheti <43677304+shreyanshjain7174@users.noreply.github.com> --- go.mod | 2 +- scripts/check_docs.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 0b0444f..273b465 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/Clawdlinux/agent-native-format go 1.25.3 -toolchain go1.26.4 +toolchain go1.26.5 require ( go.opentelemetry.io/otel v1.43.0 diff --git a/scripts/check_docs.py b/scripts/check_docs.py index 0188a03..26c70d9 100755 --- a/scripts/check_docs.py +++ b/scripts/check_docs.py @@ -33,7 +33,7 @@ sys.exit(1) readme = Path("README.md").read_text(encoding="utf-8") -readme_checks = ["Agent Contract Protocol", "governed execution", "Token efficiency is a side effect"] +readme_checks = ["Agent Native Format", "token-minimal view format", "Governed execution runtime"] for needle in readme_checks: if needle not in readme: print(f"README.md missing required phrase: {needle}", file=sys.stderr)