Phase 12.J.E.2: capabilities probe E2E (4 tests, P0-unblocked)
Summary
Phase 12.J.E.2 was BLOCKED by the Halibut 8.1 cache-key bug fixed in PR #194. With that fix landed, the capabilities-probe round-trip is now E2E-testable.
Tests added (4)
- F1.h Listening_CapabilitiesProbe_ReturnsAgentReportedVersion
- F1.h2 Polling_CapabilitiesProbe_ReturnsAgentReportedVersion
-
F3.cache Listening_RepeatedProbes_WithinCacheTtl_ReturnCachedResponse — pins the documented 60-second
[CacheResponse(60)]TTL behavior -
F1.metadata Listening_CapabilitiesResponse_CarriesMetadataDictionary — pins
Dictionary<string,string>round-trip
Test plan
-
75/75 on macOS (4 new genuinely run, not skip-guarded) -
75/75 on Windows runner (run 25441003521)
Why this is the unblock test
If PR #194's fix ever regresses (CapabilitiesRequest loses its IEnumerable<string> implementation), these 4 E2E tests fail with the same ArgumentOutOfRangeException as the unit reproducer in HalibutCacheKeyBugReproductionTests. Triple defense:
- Reproducer test (unit, full Halibut runtime, no service registered)
- Type-shape Rule-8 pin (unit, reflection-based)
- This file (E2E, real RPC, real cache behavior)
All three must pass for the bug to stay fixed.
Infrastructure additions
-
StubAgentregistersICapabilitiesService→StubCapabilitiesService(configurable AgentVersion) -
StubSquidServer.ProbeCapabilities{Listening,Polling}Asyncmirror productionHalibutClientFactory.CreateCapabilitiesClientexactly