Repository navigation
REQ 090
The engine shall run a consumer-declared lane workload, given as data (a fetch phase and a build phase of argument vectors with a timeout each (REQ-106), the full candidate commit SHA, declared inputs and outputs, and a working directory), without any consumer identifier in engine code.
A second consumer must be able to use a lane without forking engine code. Today the only workload phase hard-codes one consumer's package, a disclosed exception under REQ-001 (VITechnologies/projectbuddy#167 item 8). Challenge ledger row CH-01 in VITechnologies/projectbuddy#159 records the gap. How the declaration is delivered (a file in the candidate commit or a workflow input) is open decision D-3 in VITechnologies/projectbuddy#159; the declaration digest binds its content either way.
The declaration is validated offline, before any VM mutation. A declaration naming a command the engine has never seen runs in a disposable guest at the declared commit, and the evidence record (REQ-092) holds the SHA-256 of the canonical declaration, the candidate commit, the lane identity, and the run status. Canonical form: the declaration's JSON serialized per RFC 8785; the schema admits only strings, integers, booleans, arrays, and objects, so no floating-point canonicalization arises. Rejected before any VM mutation: a step given as one shell string instead of an argument vector; a commit given as a branch, tag, or abbreviated SHA; an input path outside the candidate checkout or an output path outside the evidence directory, including .. and symlink escapes; a phase with a missing or non-positive timeout. At run time, a phase that exceeds its timeout is stopped and recorded as timeout, distinct from a non-zero exit, and a declared output that is not produced fails the run.
Planned, TEST-092; no lane executor exists yet.
Software-Requirements-Specification
High
Planned lane workload contract cases
scripts/lane/declaration.py (offline validation of lane-workload@2, each step one argument vector) and scripts/lane/outputs.py (a build result that records timeout apart from an exit code, and a declared output missing from the output disk fails the read); the lane executor is not implemented
Planned