refactor(egress): make addon core a compatibility facade
test / integration-macos (pull_request) Has been skipped
tracker-policy-pr / check-pr (pull_request) Successful in 10s
test / integration-docker (pull_request) Successful in 16s
test / unit (pull_request) Successful in 50s
lint / lint (push) Failing after 1m3s
test / integration-firecracker (pull_request) Successful in 3m55s
test / coverage (pull_request) Successful in 58s
test / publish-infra (pull_request) Has been skipped

This commit is contained in:
2026-07-26 06:25:51 +00:00
parent 55ee91f356
commit 6ad817cedd
11 changed files with 440 additions and 874 deletions
+17 -1
View File
@@ -36,7 +36,8 @@ class TestCliBackendBoundaries(unittest.TestCase):
class TestRuntimeModuleSizes(unittest.TestCase):
def test_egress_modules_stay_focused(self) -> None:
caps = {
"addon_core.py": 900, # compatibility + policy-schema parsing only
"addon_core.py": 100,
"schema.py": 400,
"types.py": 180,
"matching.py": 180,
"dlp.py": 180,
@@ -48,3 +49,18 @@ class TestRuntimeModuleSizes(unittest.TestCase):
if len((directory / name).read_text().splitlines()) > cap]
self.assertEqual([], oversized, "split a module rather than raising its cap: " +
", ".join(oversized))
def test_runtime_code_uses_focused_egress_modules(self) -> None:
"""addon_core is compatibility-only, never an internal dependency."""
violations: list[str] = []
package = ROOT / "bot_bottle"
facade = package / "gateway" / "egress" / "addon_core.py"
package_init = package / "gateway" / "egress" / "__init__.py"
for path in package.rglob("*.py"):
if path in (facade, package_init):
continue
text = path.read_text()
if "gateway.egress.addon_core import" in text or \
".addon_core import" in text:
violations.append(str(path.relative_to(ROOT)))
self.assertEqual([], violations)
+8 -6
View File
@@ -8,17 +8,19 @@ from __future__ import annotations
import unittest
from bot_bottle.gateway.egress.addon_core import (
HeaderMatch,
MatchEntry,
PathMatch,
Route,
evaluate_matches,
from bot_bottle.gateway.egress.matching import evaluate_matches
from bot_bottle.gateway.egress.schema import (
load_config,
parse_config,
parse_routes,
route_to_yaml_dict,
)
from bot_bottle.gateway.egress.types import (
HeaderMatch,
MatchEntry,
PathMatch,
Route,
)
def _route(d: dict[str, object]) -> Route: