# Cross-language Test Checklist

Use the runner layout from `agent-ops/skills/project/add-proto-socket-crosstest-language/SKILL.md`.

## Runner Layout

- [ ] Server-language orchestrator lives under `<server-language>/crosstest/`.
- [ ] Client-language subprocess helper lives under `<client-language>/crosstest/`.
- [ ] No root-level package metadata is added only for crosstests.
- [ ] Subprocess paths resolve from the package root or runner source location.

## Required Output

The client helper prints its protocol type name before scenarios:

```text
INFO typeName <language>=TestData
```

Each scenario prints exactly one result line:

```text
PASS scenario=N detail=...
FAIL scenario=N error=...
```

The orchestrator fails when an expected scenario is missing, any `FAIL` line appears, or the subprocess exits non-zero.

## Required Scenarios

Run each scenario for TCP and WebSocket:

- [ ] Scenario 1: client sends fire-and-forget `TestData`; server validates `index` and `message`.
- [ ] Scenario 2: server pushes `TestData(index=200, message=push from ... server)` to the client.
- [ ] Scenario 3: client `sendRequest` receives `index=req.index*2` and `message=echo: req.message`.
- [ ] Scenario 4: multiple concurrent `sendRequest` calls verify nonce and response routing.

Split protocols into separate send-push and request phases if a communicator forbids normal listener and request listener registration for the same message type.

## Review Notes

- [ ] Record the exact commands used to run both directions.
- [ ] Record fixed ports and why they do not conflict with existing tests.
- [ ] Record any unsupported transport or platform caveat.
