Skip to content

tests: e2e coverage for the continual harness - #48

Merged
mannuch merged 2 commits into
chore/sync-upstream-2026-11-02from
tests/e2e-continual-harness
Nov 3, 2026
Merged

mannuch merged 2 commits into
chore/sync-upstream-2026-11-02from
tests/e2e-continual-harness

Conversation

@mannuch

@mannuch mannuch commented Nov 3, 2026

Copy link
Copy Markdown
Owner

Stacked on #46. Adds end-to-end tests for the fork's continual harness to the hosted-model suite in tests/e2e. Like the rest of the suite, each answer exists only behind the feature under test, and every test runs in all three placements (local, stdio, tcp).

Tests (tests/e2e/test_harness.py)

  • test_agent_records_a_memory: the agent saves a codeword from secret.txt with h.create_memory. It must land in the session's harness/harness_state.json and in the snapshot's local memory count. In split placements this goes through the brokered harness.call path.
  • test_global_memory_reaches_the_next_session: session 1 saves the codeword to a shared global_dir. Session 2 has no secret.txt, so it can only answer from the harness block in its prompt.
  • test_authored_skill_works_in_the_next_session: with author_skills, session 1 writes a vault package. It must appear under $RLM_HOME/skills, which in split placements means the skills mirror wrote it back. Session 2 must call vault(...) and return its stamp.
  • test_next_session_reads_a_past_episode: with record_episodes, session 1 prints a random token and answers "done". Session 2 must find the episode and read the token from its ledger with history(...).

In the e2e setup the split workers share the test machine's filesystem, so history(path) reads the past ledger directly. The broker fallback for missing paths is still covered only by unit tests.

Fixture changes (tests/e2e/conftest.py)

  • open_session takes a harness option, passed through as the runtime's harness field.
  • Each session gets its own workspace-* temp directory, so one test can open several sessions on a shared RLM_HOME.
  • AgentSession.session_dir is home/sessions/<session_id> (the ACP session id is the session directory's name) instead of assuming a single directory.

These are fork changes to an upstream file, so they may need attention when syncing.

Test plan

  • uv run pytest tests/e2e/test_harness.py -m e2e: all 12 cases passed locally against Prime Inference.

🤖 Generated with Claude Code

Four end-to-end tests, each in the local, stdio and tcp placements: the agent
records a memory through the brokered harness view; a global memory reaches the
next session; an authored skill package written in one session is callable in
the next (through the skills mirror in split execution); and a later session
reads a past episode's history. The e2e fixture gains a `harness` option, a
fresh workspace per session and a session_dir keyed by session id, so one test
can open several sessions on a shared RLM_HOME.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mannuch
mannuch added this pull request to stack #47 November 3, 2026 00:40
@mannuch
mannuch marked this pull request as ready for review November 3, 2026 00:40
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mannuch
mannuch merged commit 68ea1e4 into main Nov 3, 2026
9 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant