Skip to content

Acceptance Gate -> Conductor wiring (d058) — auto-gate /baton:go's finished work#65

Merged
Ryfter merged 4 commits into
masterfrom
acceptance-gate-conductor
Jun 22, 2026
Merged

Acceptance Gate -> Conductor wiring (d058) — auto-gate /baton:go's finished work#65
Ryfter merged 4 commits into
masterfrom
acceptance-gate-conductor

Conversation

@Ryfter

@Ryfter Ryfter commented Jun 22, 2026

Copy link
Copy Markdown
Owner

Wires the Sprint-7 Acceptance/Polish Gate into the Conductor (/baton:go) as an opt-in, advisory, fail-open acceptance phase that runs after a successful DAG walk and stamps the run accept/polish/reject. Second v1.4 slice.

What

After the walk completes, if a gate target is supplied (-GateArtifact <text> / -GateDiff <range>), the Conductor runs Invoke-AcceptanceGate over the finished artifact and maps the verdict to the terminal status: accept/polishcompleted (polish adds the brief + a gate event), reject → new rejected status. No target → phase skipped → behavior byte-for-byte identical to today. Adds a 5th run artifact acceptance.json + an ## Acceptance report section.

How

  • conductor-lib.ps1: dot-source gate-lib.ps1; pure Resolve-GateArtifact (literal / git diff / fail-open) + Format-AcceptanceSection; Invoke-Conductor gains -GateArtifact/-GateDiff/-Gater + the post-walk phase; Complete-Run -Gate (untyped — ordered dict or hashtable).
  • fleet-go.ps1: -GateArtifact/-GateDiff + BATON_GO_TEST_GATE test seam.
  • commands/go.md: flags + rejected status + 5th artifact. Plugin 1.4.0-rc.1 → 1.4.0-rc.2.

Decisions (d058)

d-cg-1 run-level opt-in phase (no task-output bus yet → run-level over sequenceable) · d-cg-2 advisory, no new mid-walk interrupt (budget+destructive stay the only two) · d-cg-3 verdict→status · d-cg-4 fail-open · d-cg-5 seamed -Gater + 5th artifact.

Tests

  • test-conductor-lib.ps1: T1–T79 + T60c ALL CHECKS PASS — pure helpers (T60–T65), seamed accept/polish/reject/throw/no-verdict (T66–T79), CLI gate seam (T60c). Bootstrap exit 0.
  • Final adversarial opus review: 0 Critical, all invariants verified by direct execution (success-path-only, untyped ordered-dict binding, no-gate byte-for-byte, both fail-open branches, -Gater signature). 1 Important (the no-verdict fail-open branch lacked a check) fixed in 013974c (T77–T79). Minors tracked, not blocking.

Spec: docs/superpowers/specs/2026-06-21-acceptance-gate-conductor-wiring-design.md
Plan: docs/superpowers/plans/2026-06-21-acceptance-gate-conductor-wiring.md

🤖 Generated with Claude Code

Ryfter and others added 4 commits June 21, 2026 19:29
Final-review Important: the constraint named both fail-open cases (throw AND
no-verdict); only throw was guarded. Adds T77-T79 for a gater returning a result
with no .verdict -> completed + 'produced no verdict' warn + no acceptance.json.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 22, 2026 08:48
@Ryfter
Ryfter merged commit 86f4e59 into master Jun 22, 2026
@Ryfter
Ryfter deleted the acceptance-gate-conductor branch June 22, 2026 08:48

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an opt-in, advisory “Acceptance/Polish Gate” phase to /baton:go runs, executed after a successful DAG walk. When a gate target is provided, the Conductor runs the acceptance gate, records a verdict (accept/polish/reject), and surfaces the result via terminal status, report output, and a new optional artifact.

Changes:

  • scripts/conductor-lib.ps1: adds Resolve-GateArtifact + Format-AcceptanceSection, extends Invoke-Conductor with -GateArtifact/-GateDiff/-Gater, and appends an ## Acceptance section + acceptance.json when gating produces a verdict.
  • scripts/fleet-go.ps1: wires new gate parameters through the CLI and adds a test seam (BATON_GO_TEST_GATE) for deterministic verdicts.
  • scripts/test-conductor-lib.ps1 / commands/go.md / .claude-plugin/plugin.json: expands coverage for gate behavior, documents the new flags/status, and bumps plugin version.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
scripts/test-conductor-lib.ps1 Adds end-to-end and seamed unit tests for the acceptance phase (including fail-open branches).
scripts/fleet-go.ps1 Exposes -GateArtifact/-GateDiff and a BATON_GO_TEST_GATE seam to avoid real reviewers in tests.
scripts/conductor-lib.ps1 Implements gate artifact resolution, report section rendering, acceptance.json emission, and post-walk gating logic.
commands/go.md Documents new gate flags, rejected status, and acceptance reporting.
.claude-plugin/plugin.json Version bump to 1.4.0-rc.2.

Comment thread scripts/conductor-lib.ps1
Comment on lines +203 to +210
if (-not [string]::IsNullOrWhiteSpace($Artifact)) { return $Artifact }
if (-not [string]::IsNullOrWhiteSpace($Diff)) {
try {
$out = & git diff $Diff 2>$null
if ($LASTEXITCODE -ne 0) { return '' }
return (@($out) -join "`n")
} catch { return '' }
}
Comment thread commands/go.md
---
description: Natural-language front door — describe an outcome and the Conductor plans it into a task DAG, then runs it full-auto under two guards (budget cap + destructive action), narrating as it goes. Interrupts only to cross a budget ceiling or before an irreversible action; guesses through everything else and logs every choice. Run artifacts (plan.json / events.jsonl / decisions.jsonl / report.md) land under BATON_HOME/runs/<run-id>/.
argument-hint: "<what you want done>" [--budget <n>] [--max-tier local|free|paid]
description: Natural-language front door — describe an outcome and the Conductor plans it into a task DAG, then runs it full-auto under two guards (budget cap + destructive action), narrating as it goes. Interrupts only to cross a budget ceiling or before an irreversible action; guesses through everything else and logs every choice. Run artifacts (plan.json / events.jsonl / decisions.jsonl / report.md / acceptance.json) land under BATON_HOME/runs/<run-id>/.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants