Show eval gates in trail show and trail merge
Commit
entire-api now reports gates on an agent's eval (gate_type "eval"). The gate key is the agent id, so the old one-row-per-gate view printed a ULID with no reading or threshold.
trail show now groups eval gates under "Evals:", named by the agent, with the reading against the threshold ("72% must be ≤ 40%") and whether it passed, blocks the merge, or needs attention. A gate skipped for a configuration issue prints "not enforced: <reason>". Non-blocking gates that failed or errored, of any type, are listed under "Needs attention:". --json already passes each gate's value through untouched.
trail merge keeps what blocks unchanged. Before it merges, it prints the gates that need attention and the eval gates that are not enforced as warnings on stderr, so --json keeps them too. A blocking eval gate is listed by its rationale, which names the agent, instead of its id.
Part of https://entire.com/gh/entirehq/-/trails/19610 (design: https://entire.com/et/entirehq/-/trails/620).
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com Entire-Checkpoint: 01M67M72S4GBC0ETT6VMR2K4WQ