You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sub-issue of #9216 (frozen-repo benchmark harness), epic #8534. Requirement 1 of that issue names the action space; this issue fixes it as validated types. Without a closed, validated action space, two agents' outputs are not comparable and the scorer has nothing stable to score against.
Requirements
Closed action set: merge | close | request_changes | label | hold. Closed, not extensible-by-string — an unrecognized action is a validation error, never a silently-ignored or zero-scored entry.
Per-action parameters, typed: label carries the label set; close carries a reason class; request_changes carries the blocking concern; merge and hold carry no parameters. Parameters that do not apply to the action are a validation error.
Prediction horizon is part of the task, not the agent's choice: the agent proposes the action it expects the maintainer to take within N days of T (N fixed per benchmark, recorded in the task).
Pure validator that never throws for ordinarily-invalid input, returning { valid: true; proposal } | { valid: false; errors: string[] } — mirroring validateAttestationEnvelope in packages/loopover-engine/src/calibration/attestation-envelope.ts exactly (including rejecting unknown keys rather than ignoring them).
Deliverables
Action-space + proposal types and their pure validator in packages/loopover-engine/src/calibration/ (public, so a candidate agent author can validate locally before submitting)
100% branch-coverage unit tests, including every rejection path
Exported from the engine barrel
Expected outcome
Any agent, written by anyone, can emit a proposal this repo will accept or reject deterministically — and the scorer downstream can assume well-formed input.
References
Sub-issue of #9216. Validator pattern to mirror: attestation-envelope.ts's validateAttestationEnvelope. Coverage/abstention semantics: #9215. Epic #8534.
Context
Sub-issue of #9216 (frozen-repo benchmark harness), epic #8534. Requirement 1 of that issue names the action space; this issue fixes it as validated types. Without a closed, validated action space, two agents' outputs are not comparable and the scorer has nothing stable to score against.
Requirements
merge | close | request_changes | label | hold. Closed, not extensible-by-string — an unrecognized action is a validation error, never a silently-ignored or zero-scored entry.labelcarries the label set;closecarries a reason class;request_changescarries the blocking concern;mergeandholdcarry no parameters. Parameters that do not apply to the action are a validation error.{ valid: true; proposal } | { valid: false; errors: string[] }— mirroringvalidateAttestationEnvelopeinpackages/loopover-engine/src/calibration/attestation-envelope.tsexactly (including rejecting unknown keys rather than ignoring them).Deliverables
packages/loopover-engine/src/calibration/(public, so a candidate agent author can validate locally before submitting)Expected outcome
Any agent, written by anyone, can emit a proposal this repo will accept or reject deterministically — and the scorer downstream can assume well-formed input.
References
Sub-issue of #9216. Validator pattern to mirror:
attestation-envelope.ts'svalidateAttestationEnvelope. Coverage/abstention semantics: #9215. Epic #8534.