Skip to content

fix(config): label the update workflow in the picker; drop "expanded-profile" wording - #1632

Merged
clay-good merged 3 commits into
mainfrom
claude/issue-1627-fix-dc2b41
Aug 11, 2026
Merged

fix(config): label the update workflow in the picker; drop "expanded-profile" wording#1632
clay-good merged 3 commits into
mainfrom
claude/issue-1627-fix-dc2b41

Conversation

@clay-good

@clay-good clay-good commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Status: LGTM — closes #1627. All affected tests pass; no new failures introduced.

What was wrong

Two small, related defects surfaced in a profile-naming audit:

  1. Unlabeled update row in the config picker. openspec config → edit workflows shows a checklist of all 12 workflows. WORKFLOW_PROMPT_META in src/commands/config.ts had friendly labels for 11 of them but was missing update, so that row fell back to the raw id update with a placeholder Workflow: update description. Because update is one of the six core workflows, every user who opens the picker saw it.

  2. "expanded-profile" survives in template strings. The update-change workflow template called /opsx:continue and /opsx:new "expanded-profile" workflows. There is no "expanded" profile — the only profile values the product stores are core and custom — so an agent or user looking for one finds nothing.

How it was fixed

  • Added the missing update entry to WORKFLOW_PROMPT_META → the row now reads Update change / Revise the planning artifacts of an existing change.
  • Reworded the four template strings in src/core/templates/workflows/update-change.ts from "expanded-profile workflow" to "optional workflow".
  • Regenerated the committed skills.sh mirror (skills/openspec-update-change/SKILL.md) via pnpm generate:skills and the parity hashes via pnpm regen:parity-hashes so the generated-file parity tests stay green.

Proof it works

  • New regression guard (test/commands/config.test.ts): asserts every ALL_WORKFLOWS id has real picker metadata — no name equal to the raw id, no Workflow: placeholder — so adding a future workflow can't silently reintroduce the fallback. Reverting the update entry makes it fail.
  • End-to-end label check against the built dist output confirms 0 raw-id fallbacks across all 12 workflows.
  • Updated the three existing tests that pinned the old "expanded-profile" wording (init.test.ts, update-change.test.ts).
  • Full suite: 2854 passed. The only failures (config-profile, artifact-workflow) reproduce on a clean stash of main — pre-existing and unrelated; tsc --noEmit and eslint src/ are clean.

Scope / notes

  • A drift audit of every other workflow-keyed lookup table (skill dirs, command refs, skill/command templates, legacy maps) confirmed all are complete at 12/12 — this was the only affected table.
  • Deliberately kept out of scope: broader docs prose that informally calls the optional commands "expanded" (a separate stylistic sweep). This PR fixes the shipped code + agent-facing template strings only.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Workflow Updates

    • Identified /opsx:continue and /opsx:new as optional workflows.
    • Added availability checks before recommending optional commands.
    • Added clear names and descriptions for the update workflow.
  • Quality Improvements

    • Ensured configured workflows display complete, user-friendly metadata.
    • Updated guidance and generated workflow content to reflect revised recommendations.
    • Improved consistency between workflow guidance, commands, and generated content.

@clay-good
clay-good requested a review from a team as a code owner August 11, 2026 21:49
@clay-good
clay-good requested review from TabishB and removed request for a team August 11, 2026 21:49
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 9c62caa9-3754-4540-bac4-588c1543eb75

📥 Commits

Reviewing files that changed from the base of the PR and between 03b287c and 275f2d5.

📒 Files selected for processing (2)
  • skills/openspec-update-change/SKILL.md
  • test/core/templates/skill-templates-parity.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/core/templates/skill-templates-parity.test.ts

📝 Walkthrough

Walkthrough

The update workflow now has picker metadata. Update-change guidance treats /opsx:continue and /opsx:new as optional workflows and verifies availability before recommendation. Tests cover metadata, guidance wording, and template parity.

Changes

Update workflow

Layer / File(s) Summary
Register update workflow metadata
src/commands/config.ts, test/commands/config.test.ts
Exports WORKFLOW_PROMPT_META, adds update display metadata, and validates metadata for every configured workflow.
Align optional workflow guidance
skills/openspec-update-change/SKILL.md, src/core/templates/workflows/update-change.ts, test/core/init.test.ts, test/core/templates/update-change.test.ts, test/core/templates/skill-templates-parity.test.ts
Replaces “expanded-profile” wording with “optional workflow” wording and updates related generated-content expectations and hashes.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: tabishb, alfred-openspec

🚥 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 clearly summarizes both main changes: labeling the update workflow and replacing expanded-profile wording.
Linked Issues check ✅ Passed The changes satisfy issue #1627 by adding update workflow metadata and replacing expanded-profile wording with optional workflow guidance.
Out of Scope Changes check ✅ Passed All code, template, mirror, hash, and test changes directly support the objectives in issue #1627.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/issue-1627-fix-dc2b41

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@alfred-openspec alfred-openspec left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The picker metadata and optional-workflow wording look sound, and the focused generation/parity tests pass. This head currently conflicts with main in test/core/templates/skill-templates-parity.test.ts, so please rebase and resolve the conflict, then let the new exact-head matrix finish before approval.

clay-good and others added 2 commits August 11, 2026 17:18
…ed-profile" wording

The config workflow picker builds each row's label from WORKFLOW_PROMPT_META
in src/commands/config.ts. The table had entries for 11 of the 12 workflows
but not `update`, so `openspec config` rendered that row as the raw id
`update` with a `Workflow: update` placeholder description. Since `update` is
one of the six core workflows, every user who opens the picker saw it.

Add the missing `update` entry so the row reads "Update change / Revise the
planning artifacts of an existing change".

Also reword the update-change workflow template, which called `/opsx:continue`
and `/opsx:new` "expanded-profile" workflows. There is no "expanded" profile;
the only profile values the product stores are `core` and `custom`. They are
now described as "optional" workflows. Regenerated the committed skills.sh
mirror and parity hashes accordingly.

Harden with a regression test asserting every ALL_WORKFLOWS id has real picker
metadata (no raw-id name, no "Workflow:" placeholder), so a future workflow
addition can't silently reintroduce the fallback.

Closes #1627

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@clay-good
clay-good force-pushed the claude/issue-1627-fix-dc2b41 branch from 03b287c to 275f2d5 Compare August 11, 2026 22:23
@clay-good

Copy link
Copy Markdown
Collaborator Author

Rebased onto current main. The only conflict was the generated parity-hash file test/core/templates/skill-templates-parity.test.ts (a recurring collision from other merged PRs regenerating skills/hashes). Resolved by regenerating rather than hand-merging: took main's base, then ran generate:skills + regen:parity-hashes so the committed skills and 3 parity hashes reflect both main's current templates and this PR's update-change template change.

Verification: npm run build clean; full vitest run = 3951 passed. The parity test and this PR's own tests (config.test.ts, update-change.test.ts, init.test.ts) all pass. The only 2 failures are the known pre-existing ones on main (config-profile.test.ts:389, artifact-workflow.test.ts:1226), unrelated to this change. Intent intact: the update workflow row is labeled in the config picker and "expanded-profile" wording is dropped from the update-change template/skill. No longer DIRTY.

@alfred-openspec alfred-openspec left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The rebase resolves the conflict cleanly, generated skills and parity hashes are current, the focused 164-test suite plus build and lint pass locally, and the full hosted matrix is green. Approved.

@clay-good
clay-good added this pull request to the merge queue Aug 11, 2026
Merged via the queue into main with commit 207f3cc Aug 11, 2026
17 checks passed
@clay-good
clay-good deleted the claude/issue-1627-fix-dc2b41 branch August 11, 2026 22:48
Stanley00 pushed a commit to stanley-fork/OpenSpec that referenced this pull request Aug 12, 2026
…ion-AI#1640)

Six user-facing fixes merged after v1.8.0 without a changeset, so they
would ship in v1.9.0 with no changelog entry and their authors uncredited.
All are patch fixes; the release target stays at 1.9.0.

Covers: Fission-AI#1637, Fission-AI#1607, Fission-AI#1632, Fission-AI#1616, Fission-AI#1612, Fission-AI#1523.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.

update workflow is unlabeled in the config picker; "expanded-profile" survives in template strings

2 participants