Repository navigation
REQ 091
Before a declared workload runs, the engine shall run each consumer-declared tool probe in the guest, record the exact observed version in the evidence record, and fail closed when an observed version differs from the declared version.
Reproducibility claims fail silently when guests drift (challenge ledger row CH-02 in VITechnologies/projectbuddy#159). Keeping the probe declarative keeps the engine tool-agnostic: the consumer, not the engine, knows how a tool prints its version. Comparing lanes with each other is a consumer-gate function, not an engine one; an exact per-lane match against one shared contract already makes two passing lanes' records equal. Stage 1 of the challenge program (VITechnologies/projectbuddy#168) rebuilt the extension's published VSIX byte for byte with Node 22.15.0, Node 22.23.4, and the declared 24.19.0, so for that workload an artifact digest cannot reveal toolchain drift; only the probe can.
The contract lists, per tool, a name, a probe argument vector (for example node --version), an extraction pattern with one capture group, and the expected version string; comparison is exact string equality on the captured group, and the engine has no built-in knowledge of any tool. The probe executes only the declared probe argument vectors (its log lists exactly those; a probe may invoke a package manager only to print its own version, for example npm --version, and no probe installs, updates, or downloads anything), before the workload starts, extending REQ-008's no-side-effect rule for the host presence probe to the guest. The evidence record (REQ-092) lists each tool's declared and observed version. A mismatched or missing tool, probe output that does not match the extraction pattern, and a probe that exits non-zero each fail before the workload starts; none is recorded as unknown and passed.
Planned, TEST-093; not yet performed live. Offline fixture tests show that the plan has one probe step for each declared tool, before the candidate's transfer, and that a probe that exits non-zero or prints another version, or output that does not match the pattern, stops the run. The evidence record is still to come.
Software-Requirements-Specification
High
scripts/tests/test_lane_plan.py toolchain contract cases and scripts/tests/test_lane_placement.py probe cases; planned lane workload contract cases
scripts/lane/plan.py (a probe-<tool> step with the declared argument vector for each declared tool, before the candidate's transfer) and scripts/lane/placement.py (probe: the declared argument vector run as the workload account, whose captured version must equal the declared one), with docs/vm-provisioning/ubuntu-lane.md; the evidence record is not implemented
Planned