Workflow status is tracked in GitHub: https://github.com/emulebb/emulebb/issues/123. This local document is retained as an engineering spec/evidence record.
FEAT-109 - Materialize suite tool dependencies deterministically¶
Summary¶
Make the workspace test and release suites download, pin, verify, and expose
external helper tools such as MediaInfo, FFmpeg, and 7-Zip through the suite
materialization path instead of relying on operator-global installs or whatever
is currently on PATH.
The goal is repeatable local and CI behavior: the same suite revision should use the same helper binaries, with clear provenance and checksum validation.
Intended Shape¶
- Add a suite-owned helper-tool manifest with version, architecture, download URL, archive layout, expected executable path, and SHA-256 checksum.
- Materialize tools into a deterministic workspace cache or tools directory
controlled by
repos/emulebb-build. - Expose resolved tool paths through the existing workspace dependency contract or test configuration layer.
- Prefer portable archives over machine-wide installers.
- Fail early with actionable diagnostics when a tool is missing, corrupt, or does not match the pinned checksum.
- Keep download and extraction behavior reproducible across local developer, CI, release-campaign, and VM-test runs.
Candidate Tools¶
- MediaInfo for media metadata verification.
- FFmpeg/ffprobe for media fixture generation and inspection.
- 7-Zip for deterministic archive extraction and packaging smoke tests.
- Future helper tools required by live E2E, release proof, or packaging scenarios.
Scope Constraints¶
- Do not depend on mutable "latest" download endpoints.
- Do not silently fall back to arbitrary
PATHtools for deterministic suite runs. - Do not add machine-global installers as the default path.
- Do not mix app runtime dependencies with suite-only helper tools unless a separate product packaging decision requires it.
- Keep operator-local override support explicit for diagnosis, but report the override in suite evidence.
Acceptance Criteria¶
- [ ] Suite helper tools are declared in a pinned manifest with checksums.
- [ ] Materialization downloads and verifies MediaInfo, FFmpeg/ffprobe, and 7-Zip or records why a tool is intentionally omitted.
- [ ] Test and release suites consume resolved tool paths from workspace-owned
configuration instead of raw
PATHlookup. - [ ] Missing or checksum-mismatched tools fail before a scenario starts.
- [ ] Suite evidence records tool names, versions, paths, and checksum status.
- [ ] Operator override paths are explicit and visible in evidence.
Validation¶
- dependency materialization smoke on a clean workspace cache
- checksum mismatch negative test
- suite smoke using resolved MediaInfo, FFmpeg/ffprobe, and 7-Zip paths
- CI/release-campaign dry run proving no global tool install is required