workbench-closeout-validator

Installation
SKILL.md

Workbench Closeout Validator

Use this skill when reviewing or automating status-changing closeout comments for Workbench, Multica, Capy, Conductor, Hermes, Codex, Linear, Slack, or PR surfaces.

The validator is anti-LGTM infrastructure: it preserves the literal verdict and stops adapters from turning a FLAG closeout into PASS or Done.

Required Input Shape

Status-changing closeout must contain these headings in this order:

CHANGED:
VERIFIED:
REMAINING:
PRS / LINKS:
VERDICT: PASS | FLAG | BLOCK

REMAINING: is mandatory even when (none).

Local Validator

Use the strict parser, not free-form prose matching:

node scripts/workbench-closeout-validator.mjs \
  --comment-file <closeout.md> \
  --target-status "Done" \
  --references-json <references.json> \
  --affected-issues-json <affected-issues.json>

node scripts/test-workbench-closeout-validator.mjs

For Linear webhook or adapter events, use the audit-only wrapper:

node scripts/workbench-closeout-audit-linear-adapter.mjs \
  --event-file <linear-closeout-event.json>

node scripts/test-workbench-closeout-audit-linear-adapter.mjs

The adapter emits WORKBENCH_CLOSEOUT_AUDIT and a sanitized follow-up payload. It must not block, revert, or rewrite Linear status transitions.

Reference records use this public-safe shape:

[
  { "type": "contains", "id": "#24", "state": "merged" },
  { "type": "dogfood-platform", "id": "#25" },
  { "type": "discovered-via", "id": "#26" },
  { "type": "cross-issue-side-effect", "id": "SYN-40" }
]

Affected issue records use:

[
  { "id": "SYN-39", "remaining_synced": true },
  { "id": "SYN-40", "remaining_synced": false }
]

Validation Rules

  • Done requires VERDICT: PASS; FLAG or BLOCK cannot move to Done.
  • Blocked requires VERDICT: BLOCK.
  • Ready for Merge may carry PASS or FLAG, but not BLOCK.
  • contains references require merged or head-on-main proof.
  • dogfood-platform, discovered-via, and cross-issue-side-effect references do not require merge proof by themselves.
  • If one closeout affects multiple issues and REMAINING: is not (none), relevant remaining lines must be synced to every affected issue description or comment.

Failure Handling

Validator failures do not silently rewrite the issue status. They emit WORKBENCH_CLOSEOUT_VALIDATION with:

  • validator_verdict: BLOCK for malformed fields, verdict/status mismatch, or invalid contains references;
  • validator_verdict: FLAG for missing cross-issue sync proof or missing reference-state proof;
  • follow_up_required: true when audit trail work must be spawned.

Live adapters should create a FLAG follow-up issue and notify Supervisor instead of hiding the failure.

Related skills
Installs
1
GitHub Stars
5
First Seen
2 days ago