Recorded gate verdicts
homeboy agent-task gate <cook-id> gate-1 runs the first public shell gate
from the Cook’s persisted policy in the current directory. Use the candidate
workspace, not the promotion destination. Private gates remain controller-owned.
The command uses the recorded environment, package requirements and deadlines.
The shared process executor stores verdicts below Homeboy’s data directory in
controller-state/gate-verdicts/<key>/. The key hashes the candidate working-tree
content (including untracked, non-ignored files), argv, declared test plan,
environment policy, resolved process environment and recorded input provenance.
Environment values are hashed, not stored in the key. Isolated scratch locations
are normalized; explicitly preserved host locations are not.
A matching successful verdict avoids launching the gate process. Its report and
normalized gate evidence include verdict.reused, original_run (the original
durable JSON result), elapsed_ms, and saved_ms. Failures are recorded but
never satisfy a gate. Changed inputs miss. Mutating gates cannot publish passes.
Unfingerprinted linked extension inputs deliberately disable reuse. Non-Git
workspaces continue executing gates without content-addressed reuse.
The cache lives on the execution host. Lab gates still perform admission, materialization and setup; their process verdict can be reused only where the same Homeboy data root and exact input identity are available. Ephemeral runner data roots do not share verdicts. There is no controller-side Lab receipt cache.
Deleting controller-state/gate-verdicts forces execution again. This feature
does not make arbitrary shell commands hermetic: gates must declare inputs and
must not rely on undeclared mutable network or filesystem state.