Add the end-to-end test, run after each milestone (M1.6)
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 1m48s

tests/integration/test_end_to_end.py drives the whole assembled agent
(real models, the Gitea sandbox, a real build host) through a milestone
with a scripted operator, and checks what bring-up run 3 checked by hand:
a PR holding only the work, pushed with the push credential; no
credential in the clone; the planner's view carrying facts, not the
executor's turns. It cleans up after itself on the sandbox and the build
host.

scripts/e2e.sh runs it on the bring-up build VM (or --local). It has its
own marker, e2e, kept out of check.sh and CI since it spends tokens.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE
This commit is contained in:
dongarandClaude Opus 5.5 committed 2026-10-02 22:59:13 +00:00
1 parent 3cc3eed8f3
commit b9f52be42c
6 files changed
+233 -4

No files matched your search

+6
View File
@@ -55,6 +55,12 @@ class InMemoryTransport:
def on_message(self, callback: Callable[[InboundMessage], None]) -> None:
self._callback = callback
def start(self) -> None:
"""Nothing to connect to: the transport's lifecycle, for the agent."""
def close(self) -> None:
"""Nothing to disconnect from."""
def receive(self, sender: str, text: str, original: str | None = None) -> None:
assert self._callback is not None, "no message handler registered"
self._callback(InboundMessage(sender, text, original))