Skip to content

Workflow status is tracked in GitHub: https://github.com/emulebb/emulebb/issues/51. This local document is retained as an engineering spec/evidence record.

CI-046 - Share product-family test profile and fixture hygiene

Problem

eMuleBB and p2p-overlord both build throw-away eMule profiles for tests, but the responsibilities are split across repo-local helpers. That makes profile layout, preferences defaults, transient cleanup, and seed handling easy to drift.

The workspace needs one reusable contract for generated test profiles while still letting each consumer own its scenario registry and runner-specific orchestration.

Scope

  • Keep repos/emulebb-build-tests as the shared Python home for eMule profile and preferences helpers.
  • Let p2p-overlord tooling import or adapt those helpers instead of duplicating profile writers.
  • Keep scenario manifests and runner-specific orchestration in the consumer repos.
  • Clean generated throw-away profiles by default unless a test/debug path explicitly asks to retain them.
  • Document the boundary so future test additions know where shared helpers belong.

Acceptance Criteria

  • Shared eMule profile creation handles deterministic private/local profiles and live seed based profiles.
  • Preferences mutation uses the shared INI helpers instead of repo-local string replacement.
  • p2p-overlord eMule harness tests consume the shared helper surface.
  • Focused tests cover profile materialization, preference mutation, and transient cleanup.

Progress

  • 2026-05-25: First implementation slice added shared private/local eMule harness profile materialization in emulebb-build-tests, switched p2p-overlord's eMule harness adapter to consume it, and documented the product-family profile boundary.
  • 2026-05-25: Follow-up hygiene slice extracted p2p-overlord's eMuleBB shared-helper resolution into a reusable p2p test module and added static profile-writer contract tests to prevent new local preferences.ini writers.