Description
Verified by read-only audit (seal/gpt-5.6-sol subagent, verdict: PARTIAL — behavior confirmed, but an explicit by-design contract rather than an implementation oversight).
Behavior
requiredEvidence is explicitly optional (acceptance.ts:4-7); omitted/empty requirements are normalized away (acceptance.ts:60-82).
evidence must be an array but has no minItems (acceptance.ts:106-113); empty/invalid entries normalize to [] (acceptance.ts:227-233).
- Only declared labels are enforced (
acceptance.ts:253-260); all-accepted statuses make the ledger accepted (acceptance.ts:268-274) → ok:true (acceptance.ts:287-291).
acceptance.test.ts:17, 61-74 — the scope criterion has no requirements, returns evidence: [], and explicitly asserts accepted.ok === true. This is deliberate, not accidental.
Documentation contract
skills/workflows/REFERENCE.md:21 documents requiredEvidence? as optional; README.md:303-305 promises an "evidence ledger", not non-empty evidence per criterion. Runtime matches the documented structural contract.
Why still worth raising
Semantic tension: acceptance.ts:190-191 states acceptance is "explicit evidence, not a self-awarded success claim" — yet a description-only criterion is validated solely by the agent's own status assertion, with no structured field independently demonstrating it. The design is defensible as configurable acceptance, but callers must know that criteria wanting proof must declare requiredEvidence, or the gate silently degrades to attestation.
Options (maintainer decision)
- Keep the contract; strengthen docs to state explicitly that criteria without
requiredEvidence are attestations, not evidence-backed gates.
- Tighten: require at least one non-empty evidence entry per accepted criterion (schema
minItems: 1 + evaluator check), possibly behind an opt-in strict mode.
Found by automated workflow audit (run wf_56028a5b018b).
Description
Verified by read-only audit (
seal/gpt-5.6-solsubagent, verdict: PARTIAL — behavior confirmed, but an explicit by-design contract rather than an implementation oversight).Behavior
requiredEvidenceis explicitly optional (acceptance.ts:4-7); omitted/empty requirements are normalized away (acceptance.ts:60-82).evidencemust be an array but has nominItems(acceptance.ts:106-113); empty/invalid entries normalize to[](acceptance.ts:227-233).acceptance.ts:253-260); all-accepted statuses make the ledger accepted (acceptance.ts:268-274) →ok:true(acceptance.ts:287-291).acceptance.test.ts:17, 61-74— thescopecriterion has no requirements, returnsevidence: [], and explicitly assertsaccepted.ok === true. This is deliberate, not accidental.Documentation contract
skills/workflows/REFERENCE.md:21documentsrequiredEvidence?as optional;README.md:303-305promises an "evidence ledger", not non-empty evidence per criterion. Runtime matches the documented structural contract.Why still worth raising
Semantic tension:
acceptance.ts:190-191states acceptance is "explicit evidence, not a self-awarded success claim" — yet a description-only criterion is validated solely by the agent's own status assertion, with no structured field independently demonstrating it. The design is defensible as configurable acceptance, but callers must know that criteria wanting proof must declarerequiredEvidence, or the gate silently degrades to attestation.Options (maintainer decision)
requiredEvidenceare attestations, not evidence-backed gates.minItems: 1+ evaluator check), possibly behind an opt-in strict mode.Found by automated workflow audit (run
wf_56028a5b018b).