From defe3365c48b25f392903bdbb663737411309c87 Mon Sep 17 00:00:00 2001 From: Dai Ha Date: Sun, 9 Aug 2026 05:59:14 +0200 Subject: [PATCH] CB-519: re-point pane assertions at the protocol-19 coordinate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rebase integration only, no behaviour change. CB-519's tests named the pane the pre-protocol-19 fake produced (w9:pW_n); upstream's herdr 0.8.0 port creates the pane through tab.create and starts the agent into it, so the fake now reports w9:pRoot_n. Five assertions were therefore counting closes of a pane that never existed and reading 0. mvn clean install: Tests run: 399, Failures: 0, Errors: 0 — BUILD SUCCESS --- .../java/dev/ltms/bridged/herdr/FakeHerdr.java | 2 +- .../ltms/bridged/session/SessionManagerTest.java | 14 +++++++------- .../bridged/worker/ClaudeCodeLauncherTest.java | 8 ++++---- .../bridged/worker/CompositePeerLauncherTest.java | 4 ++-- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/bridged/src/test/java/dev/ltms/bridged/herdr/FakeHerdr.java b/bridged/src/test/java/dev/ltms/bridged/herdr/FakeHerdr.java index 8b999dc..fe57395 100644 --- a/bridged/src/test/java/dev/ltms/bridged/herdr/FakeHerdr.java +++ b/bridged/src/test/java/dev/ltms/bridged/herdr/FakeHerdr.java @@ -84,7 +84,7 @@ public final class FakeHerdr implements HerdrClient { /** * Force the next {@code n} {@code agent.start} calls to report this terminal/pane coordinate, - * instead of the fake's usual incrementing {@code term_new_n}/{@code w9:pW_n}. Lets a test make + * instead of the fake's usual incrementing {@code term_new_n}/{@code w9:pRoot_n}. Lets a test make * two spawns report the same herdr pane, to prove the host-unique id (CB-519) never * collides on that coordinate. */ diff --git a/bridged/src/test/java/dev/ltms/bridged/session/SessionManagerTest.java b/bridged/src/test/java/dev/ltms/bridged/session/SessionManagerTest.java index 282cc79..640bfa4 100644 --- a/bridged/src/test/java/dev/ltms/bridged/session/SessionManagerTest.java +++ b/bridged/src/test/java/dev/ltms/bridged/session/SessionManagerTest.java @@ -172,11 +172,11 @@ class SessionManagerTest { assertEquals(1, sessions.roster().size(), "only the fresh session remains"); assertEquals(fresh.paneId(), sessions.roster().getFirst().paneId()); - // The old session was the first spawn → pane w9:pW_1 (CB-519: the registry key is the + // The old session was the first spawn → pane w9:pRoot_1 (CB-519: the registry key is the // uuid id, so teardown is asserted on the real pane coordinate). long paneCloseCount = herdr.calls.stream() .filter(c -> "pane.close".equals(c.method())) - .filter(c -> "w9:pW_1".equals(((Map) c.params()).get("pane_id"))) + .filter(c -> "w9:pRoot_1".equals(((Map) c.params()).get("pane_id"))) .count(); assertEquals(1, paneCloseCount, "the old worker was torn down"); } @@ -309,7 +309,7 @@ class SessionManagerTest { WorkerSession updated = sessions.get(session.paneId()).orElseThrow(); assertEquals(WorkerSession.State.DONE, updated.state(), "session finishes second turn"); assertEquals(2, updated.turnCount(), "turn count tracks both deliveries"); - long releaseCloseCount = paneCloseCallsFor(herdr, "w9:pW_1"); // the real pane coordinate + long releaseCloseCount = paneCloseCallsFor(herdr, "w9:pRoot_1"); // the real pane coordinate assertEquals(0, releaseCloseCount, "cap disabled — no forced release of the worker pane"); } @@ -332,7 +332,7 @@ class SessionManagerTest { assertTrue(sessions.get(session.paneId()).isEmpty(), "session released after cap reached"); assertTrue(sessions.roster().isEmpty(), "released session leaves roster"); - assertEquals(1, paneCloseCallsFor(herdr, "w9:pW_1"), + assertEquals(1, paneCloseCallsFor(herdr, "w9:pRoot_1"), "forced release tears the worker pane down exactly once"); } @@ -353,10 +353,10 @@ class SessionManagerTest { assertTrue(sessions.roster().isEmpty(), "drain clears the roster"); assertTrue(sessions.get(ready.paneId()).isEmpty(), "ready session is released"); assertTrue(sessions.get(busy.paneId()).isEmpty(), "busy session is released after timeout"); - // ready is the first spawn → pane w9:pW_1, busy the second → w9:pW_2 (FakeHerdr order). - assertEquals(1, paneCloseCallsFor(herdr, "w9:pW_1"), + // ready is the first spawn → pane w9:pRoot_1, busy the second → w9:pRoot_2 (FakeHerdr order). + assertEquals(1, paneCloseCallsFor(herdr, "w9:pRoot_1"), "ready worker pane is torn down"); - assertEquals(1, paneCloseCallsFor(herdr, "w9:pW_2"), + assertEquals(1, paneCloseCallsFor(herdr, "w9:pRoot_2"), "busy worker pane is torn down"); } diff --git a/bridged/src/test/java/dev/ltms/bridged/worker/ClaudeCodeLauncherTest.java b/bridged/src/test/java/dev/ltms/bridged/worker/ClaudeCodeLauncherTest.java index 48769b9..a6c6ab4 100644 --- a/bridged/src/test/java/dev/ltms/bridged/worker/ClaudeCodeLauncherTest.java +++ b/bridged/src/test/java/dev/ltms/bridged/worker/ClaudeCodeLauncherTest.java @@ -378,7 +378,7 @@ class ClaudeCodeLauncherTest { void stopResolvesTheHostUniqueIdToThePaneThatSpawnedIt() { // CB-519: id() != paneId, so stop(id) must tear down the exact pane the id names — and no // other live peer's pane. - FakeHerdr herdr = new FakeHerdr(); // deterministic panes w9:pW_1, w9:pW_2 per spawn + FakeHerdr herdr = new FakeHerdr(); // deterministic panes w9:pRoot_1, w9:pRoot_2 per spawn ClaudeCodeLauncher svc = service(herdr, List.of("ccs", "ltms-local"), null); PeerHandle a = svc.spawn(new SpawnRequest(null, null, null)); @@ -386,8 +386,8 @@ class ClaudeCodeLauncherTest { svc.stop(b.id()); - assertEquals(1, paneCloseCount(herdr, "w9:pW_2"), "stop(b.id()) closes only b's pane"); - assertEquals(0, paneCloseCount(herdr, "w9:pW_1"), "a's pane is untouched"); + assertEquals(1, paneCloseCount(herdr, "w9:pRoot_2"), "stop(b.id()) closes only b's pane"); + assertEquals(0, paneCloseCount(herdr, "w9:pRoot_1"), "a's pane is untouched"); } // --- CB-306 spawn-readiness gate ----------------------------------------------------------- @@ -485,7 +485,7 @@ class ClaudeCodeLauncherTest { PeerHandle handle = svc.spawn(new SpawnRequest(null, null, null)); assertNotNull(handle, "spawn still succeeds with zero timeout"); - assertEquals(0, paneCloseCount(herdr, "w9:pW_1"), + assertEquals(0, paneCloseCount(herdr, "w9:pRoot_1"), "no orphan pane close from the gate path"); assertDoesNotThrow(() -> UUID.fromString(handle.id())); } diff --git a/bridged/src/test/java/dev/ltms/bridged/worker/CompositePeerLauncherTest.java b/bridged/src/test/java/dev/ltms/bridged/worker/CompositePeerLauncherTest.java index 4d45e21..87ec958 100644 --- a/bridged/src/test/java/dev/ltms/bridged/worker/CompositePeerLauncherTest.java +++ b/bridged/src/test/java/dev/ltms/bridged/worker/CompositePeerLauncherTest.java @@ -223,12 +223,12 @@ class CompositePeerLauncherTest { FakeHerdr herdr = new FakeHerdr(); PeerLauncher composite = composite(herdr); PeerHandle handle = composite.spawn(new SpawnRequest("gemini", null, null)); - assertNotEquals("w9:pW_1", handle.id(), "the id is decoupled from the pane coordinate"); + assertNotEquals("w9:pRoot_1", handle.id(), "the id is decoupled from the pane coordinate"); composite.stop(handle.id()); assertTrue(herdr.calls.stream() .anyMatch(c -> c.method().equals("pane.close") - && "w9:pW_1".equals(((Map) c.params()).get("pane_id"))), + && "w9:pRoot_1".equals(((Map) c.params()).get("pane_id"))), "stop routes to the spawning adapter and closes exactly that worker's pane"); }