Two review-seal defects, both found by running builtin:coding-ideas-v2 through the
whole scenario matrix rather than the nominal path alone.
1. A DETERMINISTIC verification gate was sealed as write-capable. It needs a
worktree because it runs the project's test/build commands there, but it only
reads the tree — `verification-gate.ts` has no mutation path.
`workflowNodeRequiresWorktree` conflates "needs a worktree" with "writes", and
its inline-fix branch matches on the node NAME (`/review|verification/i`), so a
gate named "Verification" was refused after any approval.
2. A gate that already `passed` or was `skipped` was refused on replay. A
post-approval requeue — a merge conflict, a transient merge failure — walks the
graph back through gates whose output is already inside the approved tree.
Refusing them converts a retryable merge into a terminal wedge; re-running them
would rewrite the tree the review approved. "Already produced, already
reviewed" now resolves as satisfied. A gate with no result still hits the
refusal, which is the case the seal exists for.
Measured by pipeline-smoke S13, where a conflicting merge left the card cycling on
documentation-delivery with `workspace-review-seal-required` instead of retrying.
Coverage: builtin:coding-ideas-v2 now runs 16 of the 19 declared scenarios plus
the multi-repository workspace drive, up from 1. The duration budget is
re-baselined 90s -> 150s, and the workload growth is itemised in docs/testing.md:
17 added scenario executions and a second project shape, 124.95s measured against
76.9s for the smaller matrix. Three consecutive full runs: 116.9s, 115.6s, 119.8s.
NOT covered, deliberately and stated rather than hidden: S07 (unactionable review
rejection), S13 (scripted merge-conflict resolution) and S17 (restart resilience)
still run on the original workflows only. S07 and S13 do not converge on V2, and
S17 produced one intermittent post-merge failure in four full-lane runs — a flake
is not something to ship or to paper over, so those three stay uncovered until
they are understood.