Skip to content

Install spectacles SDD suite (ref: v0.1.2) - #360

Merged
norrietaylor merged 20 commits into
mainfrom
spectacles/install
Jun 8, 2026
Merged

Install spectacles SDD suite (ref: v0.1.2)#360
norrietaylor merged 20 commits into
mainfrom
spectacles/install

Conversation

@norrietaylor

@norrietaylor norrietaylor commented Jun 7, 2026

Copy link
Copy Markdown
Member

Installs the spectacles SDD agent suite (ADR 0004) via scripts/quick-setup.sh. Wrappers pin hosted reusable workflows at @v0.1.2. Labels, variables, and secrets were applied directly; the file artifacts in this PR honor the protected default branch. Merge to activate the workflows.

Summary by CodeRabbit

Release Notes

  • New Features

    • Added automated spike execution and re-entry workflows for deterministic spike-wave management.
  • Documentation

    • Added spike protocol guide for authors covering branch naming, required frontmatter, status values, and cleanup requirements.
  • Chores

    • Updated workflow action versions to v0.1.2 across multiple pipelines.
    • Added explicit observability endpoint configuration support.
    • Enhanced workflow permissions for improved security posture.

@coderabbitai

coderabbitai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR upgrades the SDD (Spectacles Dispatch Dispatch) GitHub Actions platform from v0.1.0 to v0.1.2 across all workflows, adds check-suite CI failure handling with implicit revise routing, introduces deterministic task label state management and Unit issue closing in dispatch, implements phase C cycle detection in triage, and introduces two new spike wave orchestration workflows with supporting documentation.

Changes

SDD v0.1.2 Platform Update

Layer / File(s) Summary
Version bump and observability endpoint unification
.github/workflows/distillery-sync.yml, .github/workflows/sdd-dispatch.yml, .github/workflows/sdd-execute-haiku.yml, .github/workflows/sdd-execute-opus.yml, .github/workflows/sdd-execute-sonnet.yml, .github/workflows/sdd-monitor.yml, .github/workflows/sdd-pr-sanitize.yml, .github/workflows/sdd-review.yml, .github/workflows/sdd-spec.yml, .github/workflows/sdd-triage-dedupe-tasks.yml, .github/workflows/sdd-triage-promote-ready.yml, .github/workflows/sdd-validate.yml
All Spectacles action and reusable workflow references updated from @v0.1.0 to @v0.1.2. Added explicit GH_AW_OTEL_ENDPOINT secret pass-through to reusable workflow calls with documentation for observability endpoint resolution and safe unsetting.
Check-suite failure routing in execute wrappers
.github/workflows/sdd-execute-haiku.yml, .github/workflows/sdd-execute-opus.yml, .github/workflows/sdd-execute-sonnet.yml
Three execute wrappers now trigger on check_suite.completed events. Concurrency key changed to route failure-like conclusions on sdd/ branches by PR number (or head branch) instead of run_id. Route job permissions expanded with checks: read and gating logic updated to recognize check_suite.completed failure-like conclusions as implicit /revise directives.
Dispatch label state determinism and Unit closing
.github/workflows/sdd-dispatch.yml
Compute job now exports closeable_units output. Dispatch job labeling becomes idempotent: adds sdd:in-progress (treating 422 as already-present) then removes sdd:ready (treating 404 as already-absent). Lifecycle job parses and closes nominated Units from CLOSEABLE_UNITS JSON. Initial dispatch /dispatch command now fails job on sdd:dispatched label API errors instead of logging-only.
Triage phase C cycle detection backstop
.github/workflows/sdd-triage.yml
New cycle-detect job runs after sdd-triage when phase is C, invokes cycle detection, and on cycle/tree incompleteness, mints App token to label tracking issue with needs-human and post tailored backstop comment describing the detected cycle or unresolvable blocked by reference.
Spike wave actuation workflow
.github/workflows/sdd-spike-actuator.yml
New workflow triggers on issues events (opened, labeled) filtered to kind:spike label. Resolves spike's parent tracking issue and gates on armed status. When armed, mints GitHub App token and posts /execute comment to spike sub-issue via github-script with failure handling.
Spike wave re-entry orchestration
.github/workflows/sdd-spike-reentry.yml
New workflow handles issues.closed and issues.unlabeled events for kind:spike children when phase B cannot naturally drain. Walk job validates spike child and computes armed/drained status, route job builds reentry context, and conditional sdd-triage job calls reusable workflow with constructed context and explicit secret mappings.
Spike protocol documentation
docs/spikes/README.md
New documentation defines spike authoring protocol: file naming, branch conventions, frontmatter and section requirements, status values, budget tracking, evidence quoting for parked spikes, needs-human hand-off behavior, and cleanup requirements for docs-only diffs.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related issues

  • gominimal/spectacles-test#241: PR updates .github/workflows/distillery-sync.yml workflow with v0.1.2 reference and OTEL secret wiring, directly addressing the distillery-sync observability endpoint resolution.

Possibly related PRs

  • gominimal/minspec-test#60: Both PRs touch SDD workflow wiring in .github/workflows/sdd-dispatch.yml, with the main PR evolving v0.1.0 wrapper logic by updating actions and changing dispatch/lifecycle labeling behavior.
  • gominimal/minimal#307: Main PR directly updates the same Spectacles SDD wrapper workflows introduced in PR #307—bumping versions from @v0.1.0@v0.1.2 and adding GH_AW_OTEL_ENDPOINT secret pass-through—plus related routing and label logic changes.
  • gominimal/webapp#102: Both PRs modify the same GitHub workflow wiring, especially .github/workflows/sdd-dispatch.yml (task label handling and making sdd:dispatched failures fatal) and execute wrappers' check_suite→implicit /revise routing, with the main PR adding newer @v0.1.2 versions and OTEL plumbing.

Suggested reviewers

  • twitchyliquid64

Poem

🐰 Workflows dance in v0.1.2 finery,
Check-suite storms now route revise machinery,
Spike waves actuate with deterministic grace,
Cycles caught backstage, OTEL tracks the race!
Another hop toward observability's embrace.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: installing the spectacles SDD suite at version v0.1.2, which is the primary purpose evident across all workflow updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/sdd-spike-actuator.yml:
- Around line 79-87: The "Mint App token" step (id: app, uses:
actions/create-github-app-token@v3) is creating a token with full App
permissions; restrict it by adding a permissions entry so the token only has
issues: write access. Update the step to include the permissions parameter
(e.g., permissions: issues: write) so the minted token can only call
github.rest.issues.createComment and nothing else.

In @.github/workflows/sdd-triage.yml:
- Around line 195-205: The catch block around github.rest.issues.addLabels
swallows failures (using core.info) causing the workflow to proceed as if the
tracker was parked; change the error handling so failures cause the job to
fail-closed: in the catch for github.rest.issues.addLabels (referencing
addLabels, tracking and core.info) either rethrow the error or call
core.setFailed with a descriptive message and the caught error.message, and
ensure any subsequent "parked" comment/posting only runs when addLabels
succeeded (i.e., move or gate the comment logic behind successful addLabels).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9b41d0e7-4f83-451e-8f1a-65cb5864b8e7

📥 Commits

Reviewing files that changed from the base of the PR and between 35fe939 and fd73b37.

📒 Files selected for processing (16)
  • .github/workflows/distillery-sync.yml
  • .github/workflows/sdd-dispatch.yml
  • .github/workflows/sdd-execute-haiku.yml
  • .github/workflows/sdd-execute-opus.yml
  • .github/workflows/sdd-execute-sonnet.yml
  • .github/workflows/sdd-monitor.yml
  • .github/workflows/sdd-pr-sanitize.yml
  • .github/workflows/sdd-review.yml
  • .github/workflows/sdd-spec.yml
  • .github/workflows/sdd-spike-actuator.yml
  • .github/workflows/sdd-spike-reentry.yml
  • .github/workflows/sdd-triage-dedupe-tasks.yml
  • .github/workflows/sdd-triage-promote-ready.yml
  • .github/workflows/sdd-triage.yml
  • .github/workflows/sdd-validate.yml
  • docs/spikes/README.md

Comment thread .github/workflows/sdd-spike-actuator.yml
Comment thread .github/workflows/sdd-triage.yml

@bryan-minimal bryan-minimal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@norrietaylor
norrietaylor merged commit 29501d0 into main Jun 8, 2026
44 of 50 checks passed
@norrietaylor
norrietaylor deleted the spectacles/install branch June 8, 2026 20:32
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