Skip to content

Pin multi-instance isolation (G1h — register Alpha + Beta keeps state separate)

Placeholder ppxd requested to merge phase12.M.L.G.1-multi-instance-isolation into main

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 + register for two named instances) end-to-end and asserts config files, cert dirs, machine-name register payloads, and instances.json registry entries are all isolated per instance.
  • New test file TentacleLinuxMultiInstanceE2ETests.cs (Section G's first test); reuses existing LinuxTentacleBinaryFixture + LinuxStubSquidServer infrastructure.

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 build green (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.json contains both entries
  • Existing 40 Linux E2E tests still pass (no regression)

🤖 Generated with Claude Code

Merge request reports

Loading