Pin multi-instance isolation (G1h — register Alpha + Beta keeps state separate)
Summary
- Closes the largest zero-coverage gap in the Linux Tentacle E2E suite: multi-instance (Section G).
-
G1h drives the canonical operator multi-instance recipe (
create-instance+registerfor two named instances) end-to-end and asserts config files, cert dirs, machine-name register payloads, andinstances.jsonregistry entries are all isolated per instance. - New test file
TentacleLinuxMultiInstanceE2ETests.cs(Section G's first test); reuses existingLinuxTentacleBinaryFixture+LinuxStubSquidServerinfrastructure.
Why this matters
Multi-instance is a documented operator feature (running two agents on one host for prod/dev separation). MANY layers can collide silently — instances.json entry, per-instance config path, per-instance cert dir, register payload, file-write paths. A regression in any of them merges the two instances' state and operators only discover it after one instance overwrites the other's identity. This single test pins the isolation contract end-to-end.
Test plan
-
dotnet buildgreen (0 errors) -
CI tentacle-linux-e2e workflow passes G1h_TwoInstances_RegisterAlphaThenBeta_KeepsIsolatedConfigsAndCerts -
G1h asserts: both configs exist + DIFFERENT content (each contains its own listening port, neither contains the other's) + both cert dirs exist as separate directories + stub received EXACTLY 2 register requests with the two distinct machine names + instances.jsoncontains both entries -
Existing 40 Linux E2E tests still pass (no regression)