test(architecture): migrate llm egress policy

This commit is contained in:
jxxghp
2026-08-29 14:20:59 +08:00
parent c000c4fff3
commit ffe4e0de51
3 changed files with 14 additions and 20 deletions

View File

@@ -709,7 +709,7 @@ flowchart LR
`--write-host` 不会替代人工决策。
- 同一 baseline 的 `direct_adapter_imports` 记录现存原始直连;Application 与 Chain 均已清零,
policy 目标为空集合。新增、替换、删除后未清理 policy 都会失败。
- `direct_egress` 记录全宿主 55 条 raw transport、network SDK 和协议操作 identity;普通 HTTP/
- `direct_egress` 记录全宿主 53 条 raw transport、network SDK 和协议操作 identity;普通 HTTP/
Session bridge 与 Application DNS I/O 债务已清零,其余 canonical transport、SDK、
stream/vendor/diagnostic/control-plane 事实是精确 containment。每条初始边的指纹由测试独立冻结,
bindings/uses 变化、分类互换、通配导入和初始边增长都会失败;债务删除时同步删除冻结项以禁止恢复,
@@ -732,7 +732,7 @@ flowchart LR
| 内部导入边 | 8,106 |
| 非平凡 SCC | 1(精确 containment 的 TMDB 移植包环) |
| Application / Chain 具体 Adapter 直连 | 0 / 0 |
| Direct egress | 55(债务已清零,55 条精确 containment) |
| Direct egress | 53(债务已清零,53 条精确 containment) |
| Module Contract V2 spec | 217(其中 215 个进入 `run_module` 观察面) |
| Event Contract | 53 |
| Event producer / consumer | 95(94 静态、1 动态)/ 17(16 静态、1 动态) |

View File

@@ -127,18 +127,16 @@
"reason": "命名 SDK 或显式注入的 SDK transport 由该精确 source 持有,不授权新增调用方。",
"facts": [
{"source": "app.agent.llm.capability", "target": "openai", "kind": "network_sdk", "fingerprint": "60160ab01b60be2c9794b9724a50b90f8875c6a10748ff9392a1e4bc7d48c334"},
{"source": "app.agent.llm.helper", "target": "google.genai", "kind": "network_sdk", "fingerprint": "d41688ecda4c5de296fabb0d0d25c79a7b0f29f67ccdd44569dc1110e1db9b86"},
{"source": "app.agent.llm.helper", "target": "httpx", "kind": "raw_transport", "fingerprint": "caeccd432f48d9a23948dd5b9220ddbebc57d2b2936bfa499fc7d4876e935ea8"},
{"source": "app.agent.llm.helper", "target": "langchain_anthropic", "kind": "network_sdk", "fingerprint": "c8d2c3166c4d42d61e7ef38a25080cac0f93422f47393df6dc19b329a7f72265"},
{"source": "app.agent.llm.helper", "target": "langchain_aws", "kind": "network_sdk", "fingerprint": "51dd02f5e2305cce4e1f6f29b4ed47edf54dde9f6557781178a6edf96bfeeb6b"},
{"source": "app.agent.llm.helper", "target": "langchain_deepseek", "kind": "network_sdk", "fingerprint": "bcf8b1ffae0995cfc33cfe26609cef8014cd2ce036b845c2a88c0cd878b1ebc4"},
{"source": "app.agent.llm.helper", "target": "langchain_google_genai", "kind": "network_sdk", "fingerprint": "79ae88c63908da9ea36dcfc23c4ad5345bc5d1977b80cc2e0b89292d063ed8ee"},
{"source": "app.agent.llm.helper", "target": "langchain_openai", "kind": "network_sdk", "fingerprint": "15775bf1694780d5cf516e6cc3d3b5174ebb25e3038433132d3071e6abceba52"},
{"source": "app.agent.llm.helper", "target": "openai", "kind": "network_sdk", "fingerprint": "dbebd5e9fa38b2a525a5a2e5a92d855ba9d05762410590bfb544e665fe38f620"},
{"source": "app.agent.llm.provider", "target": "boto3", "kind": "network_sdk", "fingerprint": "04ca4b5ecbda1531266d5f53817dde061dcfdd3293cabf9301fc8d8e4c281a88"},
{"source": "app.agent.llm.provider", "target": "botocore", "kind": "network_sdk", "fingerprint": "fbeaa702703665ca60233a153aade0da7e49dfb6fe31f72e5593c883fb7d3f11"},
{"source": "app.agent.llm.provider", "target": "google.genai", "kind": "network_sdk", "fingerprint": "b1a42e9a06f7cf3bdd1cb069a73c3597ebd0433cf64da6c0a305cccb56d257b7"},
{"source": "app.agent.llm.provider", "target": "openai", "kind": "network_sdk", "fingerprint": "ffac3b355eb640f6421299cf838cb4e24866a39afabd9dcfd8d0f340925dc1a8"},
{"source": "app.agent.llm.discovery", "target": "boto3", "kind": "network_sdk", "fingerprint": "9b49a7988025e00f5758115804281695d11e5327b8cd49f662ec579d29419f11"},
{"source": "app.agent.llm.discovery", "target": "botocore", "kind": "network_sdk", "fingerprint": "74285ca518bd6e863adc78e84a387abd84c4f8fd22872e447a9c4acf64386b66"},
{"source": "app.agent.llm.discovery", "target": "google.genai", "kind": "network_sdk", "fingerprint": "5b87a7bb210b521bd21971fb6e3d19ca450658548670106e3c756c0ce3a83cad"},
{"source": "app.agent.llm.discovery", "target": "openai", "kind": "network_sdk", "fingerprint": "fff154461ff3fdfdf1daea0530dcb68589d6ad7a67f3966e3b86338b483e6dfd"},
{"source": "app.agent.tools.impl.search_web", "target": "ddgs", "kind": "network_sdk", "fingerprint": "377e73bb3be804b825d60ad6e792344ca633de107f8c4dbb45d50a34a4dfa04b"},
{"source": "app.api.endpoints.message", "target": "pywebpush", "kind": "network_sdk", "fingerprint": "7d83ca0dc89dfb6af1cdd7bc90d922105de94222e4e3a44bba4f53bbd97bc31b"},
{"source": "app.modules.discord.discord", "target": "discord", "kind": "network_sdk", "fingerprint": "e1486525fedbfe574aa47d60b483426c8c48e4e27fa35dbe34f6cd2f47d37c86"},

View File

@@ -27,18 +27,16 @@ FROZEN_EGRESS_EDGES_BY_REASON = {
},
"sdk_transport": {
("app.agent.llm.capability", "openai"),
("app.agent.llm.helper", "google.genai"),
("app.agent.llm.helper", "httpx"),
("app.agent.llm.helper", "langchain_anthropic"),
("app.agent.llm.helper", "langchain_aws"),
("app.agent.llm.helper", "langchain_deepseek"),
("app.agent.llm.helper", "langchain_google_genai"),
("app.agent.llm.helper", "langchain_openai"),
("app.agent.llm.helper", "openai"),
("app.agent.llm.provider", "boto3"),
("app.agent.llm.provider", "botocore"),
("app.agent.llm.provider", "google.genai"),
("app.agent.llm.provider", "openai"),
("app.agent.llm.discovery", "boto3"),
("app.agent.llm.discovery", "botocore"),
("app.agent.llm.discovery", "google.genai"),
("app.agent.llm.discovery", "openai"),
("app.agent.tools.impl.search_web", "ddgs"),
("app.api.endpoints.message", "pywebpush"),
("app.modules.discord.discord", "discord"),
@@ -106,18 +104,16 @@ FROZEN_EGRESS_FINGERPRINT_BY_EDGE = {
("app.adapters.network.ip", "socket.gethostbyname"): "a43e8969e2f26546fcf925b258728b309f1b9b966ff3c7b48a64273b8c82d048",
("app.adapters.network.resolver", "socket.getaddrinfo"): "1b1ce6763d730d7aa9c35d32a668560013c939467dcb3087357ffa53653ff306",
("app.agent.llm.capability", "openai"): "60160ab01b60be2c9794b9724a50b90f8875c6a10748ff9392a1e4bc7d48c334",
("app.agent.llm.helper", "google.genai"): "d41688ecda4c5de296fabb0d0d25c79a7b0f29f67ccdd44569dc1110e1db9b86",
("app.agent.llm.helper", "httpx"): "caeccd432f48d9a23948dd5b9220ddbebc57d2b2936bfa499fc7d4876e935ea8",
("app.agent.llm.helper", "langchain_anthropic"): "c8d2c3166c4d42d61e7ef38a25080cac0f93422f47393df6dc19b329a7f72265",
("app.agent.llm.helper", "langchain_aws"): "51dd02f5e2305cce4e1f6f29b4ed47edf54dde9f6557781178a6edf96bfeeb6b",
("app.agent.llm.helper", "langchain_deepseek"): "bcf8b1ffae0995cfc33cfe26609cef8014cd2ce036b845c2a88c0cd878b1ebc4",
("app.agent.llm.helper", "langchain_google_genai"): "79ae88c63908da9ea36dcfc23c4ad5345bc5d1977b80cc2e0b89292d063ed8ee",
("app.agent.llm.helper", "langchain_openai"): "15775bf1694780d5cf516e6cc3d3b5174ebb25e3038433132d3071e6abceba52",
("app.agent.llm.helper", "openai"): "dbebd5e9fa38b2a525a5a2e5a92d855ba9d05762410590bfb544e665fe38f620",
("app.agent.llm.provider", "boto3"): "04ca4b5ecbda1531266d5f53817dde061dcfdd3293cabf9301fc8d8e4c281a88",
("app.agent.llm.provider", "botocore"): "fbeaa702703665ca60233a153aade0da7e49dfb6fe31f72e5593c883fb7d3f11",
("app.agent.llm.provider", "google.genai"): "b1a42e9a06f7cf3bdd1cb069a73c3597ebd0433cf64da6c0a305cccb56d257b7",
("app.agent.llm.provider", "openai"): "ffac3b355eb640f6421299cf838cb4e24866a39afabd9dcfd8d0f340925dc1a8",
("app.agent.llm.discovery", "boto3"): "9b49a7988025e00f5758115804281695d11e5327b8cd49f662ec579d29419f11",
("app.agent.llm.discovery", "botocore"): "74285ca518bd6e863adc78e84a387abd84c4f8fd22872e447a9c4acf64386b66",
("app.agent.llm.discovery", "google.genai"): "5b87a7bb210b521bd21971fb6e3d19ca450658548670106e3c756c0ce3a83cad",
("app.agent.llm.discovery", "openai"): "fff154461ff3fdfdf1daea0530dcb68589d6ad7a67f3966e3b86338b483e6dfd",
("app.agent.tools.impl.search_web", "ddgs"): "377e73bb3be804b825d60ad6e792344ca633de107f8c4dbb45d50a34a4dfa04b",
("app.api.endpoints.message", "pywebpush"): "7d83ca0dc89dfb6af1cdd7bc90d922105de94222e4e3a44bba4f53bbd97bc31b",
("app.cli", "urllib.request"): "71b3e5be2a7d85fdc7a207d15c0e690d7ab96b335b882a3eaec03a1cb4ec1d1b",