Skip to content

chore: upgrade openspec to 1.6.0-beta.1 with OMP tool integration#37

Merged
George-RD merged 2 commits into
mainfrom
upgrade-openspec-1.6.0-beta.1
Jul 9, 2026
Merged

chore: upgrade openspec to 1.6.0-beta.1 with OMP tool integration#37
George-RD merged 2 commits into
mainfrom
upgrade-openspec-1.6.0-beta.1

Conversation

@George-RD

@George-RD George-RD commented Jul 9, 2026

Copy link
Copy Markdown
Owner

What

  • Pin @fission-ai/openspec from ^1.5.0 to exact 1.6.0-beta.1
  • Generate repo-scoped OMP integration via openspec init --tools oh-my-pi: 4 skills (.omp/skills/openspec-*) + 4 slash commands (/opsx:propose|apply|archive|explore)
  • Patch the generated archive skill/command: replace the upstream raw mkdir/mv archive step with this repo's mandated ceremony (openspec archive <id>, --skip-specs fallback for pre-seeded capabilities, hand-apply deltas, validate --all --strict; -y forbidden)

Why

  • 1.6.0-beta.1 ships native OMP tool support (feat: add Oh My Pi (OMP) tool support Fission-AI/OpenSpec#1276) — fresh unattended-loop sessions pick up the openspec workflow from the repo, no global install
  • Converged validate/view/archive canonical resolution + archive exit-code fix land in the same release
  • We never used Stores, so 1.5.0's "stable" label carried inert beta code anyway; exact pin (no ^) controls beta-channel risk

Evidence

  • ./scripts/check.sh green under the beta binary (npx --no-install): fmt, clippy -D warnings, tests, file-size, claims, openspec validate 11/11 strict
  • openspec/config.yaml and pre-existing user-authored .omp/skills/* untouched (verified via git diff)
  • Independent reviewer pass: 1 blocking finding (generated archive step bypassed the archive ceremony) — fixed before commit

Follow-up

  • At the first live change archive under the beta, verify whether the resolution convergence lets us retire the --skip-specs manual-apply workaround

Summary by cubic

Upgraded and pinned @fission-ai/openspec to 1.6.0-beta.1 and added repo-scoped OMP tools with /opsx commands for proposing, applying, archiving, and exploring changes. This enables native, repo-driven workflows and enforces a strict, validated archive process.

  • New Features

    • Repo-scoped OMP integration: 4 skills under .omp/skills/openspec-* and 4 /opsx commands (propose|apply|archive|explore).
    • Archive flow uses openspec archive with strict validation; supports --skip-specs fallback; no -y.
  • Bug Fixes

    • Removed references to nonexistent openspec-continue-change and /opsx-continue; added clear blocked-state guidance.
    • Replaced nonexistent sync-skill references with the repo’s hand-apply + strict-validate ceremony.
    • Archive sync prompt now respects Cancel.

Written for commit 93b93ee. Summary will update on new commits.

Review in cubic

- Pin @fission-ai/openspec to exact 1.6.0-beta.1 (OMP tool support, converged validate/view/archive resolution, archive exit-code fix)

- Generate repo-scoped OMP skills (.omp/skills/openspec-*) and /opsx:* commands via openspec init --tools oh-my-pi

- Align generated archive skill/command with the repo archive ceremony: openspec archive + --skip-specs fallback for pre-seeded capabilities, hand-apply deltas, strict validate; -y forbidden

Reviewer finding (raw mkdir/mv archive step bypassing the ceremony) fixed before commit. All local gates green under the beta binary.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR adds four new OpsX slash-command markdown docs (opsx-propose, opsx-explore, opsx-apply, opsx-archive) and corresponding skill definitions under .omp/skills, bumps the @fission-ai/openspec devDependency to a prerelease version, and regenerates graphify cache, manifest, and report artifacts reflecting these new files.

Changes

OpsX Command and Skill Documentation

Layer / File(s) Summary
Propose command and skill
.omp/commands/opsx-propose.md, .omp/skills/openspec-propose/SKILL.md
Documents scaffolding a change via openspec new change, generating artifacts in dependency order using openspec status/instructions --json, and finalizing with a status summary.
Explore command and skill
.omp/commands/opsx-explore.md, .omp/skills/openspec-explore/SKILL.md
Documents a thinking-only discovery mode with stance guidance, OpenSpec awareness of existing changes, entry-point handling, and guardrails against implementing code.
Apply command and skill
.omp/commands/opsx-apply.md, .omp/skills/openspec-apply-change/SKILL.md
Documents change selection, status/instructions retrieval, a pending-task implementation loop with checkbox updates, and pause/completion output templates.
Archive command and skill
.omp/commands/opsx-archive.md, .omp/skills/openspec-archive-change/SKILL.md
Documents completion checks, delta-spec sync assessment/prompting, the openspec archive ceremony with --skip-specs fallback, and success/warning/error output templates.
Dependency bump
package.json
Updates @fission-ai/openspec devDependency from ^1.5.0 to 1.6.0-beta.1.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Graphify Cache and Report Regeneration

Layer / File(s) Summary
New dated snapshot
graphify-out/2026-07-09/*
Adds a full new dated snapshot including labels, manifest, cost totals, and a graph report for the corpus.
Cache AST entries and stat index
graphify-out/cache/ast/v0.9.10/*, graphify-out/cache/stat-index.json
Adds cache AST JSON entries for the new .omp files, package.json, and README.md, and updates the stat index.
Main manifest and report updates
graphify-out/manifest.json, graphify-out/GRAPH_REPORT.md, graphify-out/.graphify_labels.json
Updates the main manifest with new file entries and refreshed metadata, and regenerates the graph report’s metrics, community groupings, and labels.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

Poem

A rabbit hops through docs anew,
opsx-propose, apply, archive too,
Explore mode whispers "just think, don't code,"
While graphify hums along its road. 🐇
New skills, new specs, all snug and bright—
Hop hop, this warren's set just right! 🥕


Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

❌ Failed checks (1 error)

Check name Status Explanation Resolution
All Comments Resolved ❌ Error Review items remain: opsx-explore docs still have unlabeled fences, and apply docs still disagree on /opsx-continue vs openspec-continue-change. Add language tags to all fenced blocks in opsx-explore docs, and make blocked-state recovery consistent in both apply docs by using one real recovery path or alias.
✅ Passed checks (5 passed)
Check name Status Explanation
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.
Title check ✅ Passed The title clearly summarizes the main change: upgrading OpenSpec and adding OMP tool integration.
Description check ✅ Passed The description directly matches the changeset, covering the version pin, new OMP commands and skills, and archive workflow updates.
✨ 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 upgrade-openspec-1.6.0-beta.1

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

@George-RD

Copy link
Copy Markdown
Owner Author

Pre-merge verification: archive path exercised under 1.6.0-beta.1

Throwaway probe (scratch openspec project replicating the pre-seeded-spec conflict pattern):

  • openspec archive --help confirms --skip-specs is wired in the beta CLI
  • Plain archive against a pre-seeded capability still fails with ADDED failed … already exists / No files were changed — the resolution convergence does not retire our fallback; the ceremony in the patched skill remains correct
  • archive --skip-specs behaves as documented: change moved to changes/archive/YYYY-MM-DD-<name>/, specsUpdated: false, deltas stranded pending hand-apply into openspec/specs/
  • Real corpus passes validate --all --strict 11/11 under the beta

Two caveats:

  1. --json archive now requires --yes (archive_confirmation_required). Repo convention forbids -y. An unattended loop invoking archive --json will hit this wall. Decision needed: either the loop contract permits --yes strictly in combination with --json (confirmation is meaningless non-interactively), or the loop must run archive without --json. Not resolved in this PR.
  2. Patch fragility: the archive-ceremony fixes in .omp/skills/openspec-archive-change/SKILL.md and .omp/commands/opsx-archive.md are edits to generated files — any future openspec init/update --tools oh-my-pi will silently revert them. Re-apply after regeneration (diff against git before committing regenerated output).

@George-RD

Copy link
Copy Markdown
Owner Author

Correction/extension to the archive verification above

Probed the exact command the patched skill prescribes (openspec archive "<name>", no --json, no --yes) in a non-TTY shell, both versions:

Invocation (non-TTY, stdin closed) 1.5.0 1.6.0-beta.1
archive <id> (plain) Proceed with spec updates? (Y/n) prompt → exit 1, no changes identical
archive <id> --skip-specs exit 0, archived cleanly
archive <id> --json error: requires --yes

Key facts:

  • Not a beta regression — 1.5.0 prompts identically on the plain path. It never bit us because every openspine archive to date used --skip-specs (all capabilities pre-seeded), which is non-TTY-safe.
  • The plain path is what the loop contract prescribes for new capabilities — that invocation cannot succeed unattended in either version. Failure is loud (exit 1, "No files were changed"), not a hang, when stdin is closed.

Decision needed (unchanged from caveat 1, now sharper): for unattended new-capability archives, pick one:

  1. Amend the loop contract to permit --yes strictly when non-interactive (the prompt is meaningless without a TTY), or
  2. Mandate --skip-specs + hand-apply for all archives (uniform ceremony, more manual steps), or
  3. Run archive under a PTY and answer the prompt (fragile).

Not resolved in this PR; the patched skill text stays as-is pending the call.

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 31 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread .omp/commands/opsx-archive.md
Comment thread .omp/skills/openspec-apply-change/SKILL.md Outdated
coderabbitai[bot]
coderabbitai Bot previously requested changes Jul 9, 2026

@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: 3

🤖 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 @.omp/commands/opsx-apply.md:
- Around line 45-47: The blocked-state handoff in the opsx apply flow points to
a non-existent recovery command. Update the blocked branch in opsx-apply so it
references the real continue path used by this stack, namely
openspec-continue-change, or add a working /opsx-continue alias that routes
there. Make sure the user-facing message and any related help text in the
opsx-apply command stay consistent with the actual recovery entry point.

In @.omp/commands/opsx-explore.md:
- Around line 57-72: The fenced examples in opsx-explore.md are missing language
tags, which triggers MD040; update the affected fenced blocks and the matching
skill file so the narrative/ASCII sections use text or markdown and any shell
snippets use bash. Use the existing fence content to identify the blocks around
the ASCII diagram and the other repeated sections, and apply consistent labels
across all matching examples.

In @.omp/skills/openspec-apply-change/SKILL.md:
- Around line 51-54: The blocked-state recovery guidance is inconsistent between
the apply-change flow and the documented command name. Update the handle-states
instructions in the openspec apply-change skill so the `state: "blocked"` path
points to the same recovery command as the paired command doc, using the
documented `/opsx-continue` name instead of `openspec-continue-change`. Keep the
`state: "all_done"` and implementation paths unchanged, and ensure the recovery
wording is consistent wherever this blocked-state guidance appears.
🪄 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: b30ee475-2516-42ef-ba2e-9244378b9141

📥 Commits

Reviewing files that changed from the base of the PR and between 83dd328 and 4ec9df1.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (30)
  • .omp/commands/opsx-apply.md
  • .omp/commands/opsx-archive.md
  • .omp/commands/opsx-explore.md
  • .omp/commands/opsx-propose.md
  • .omp/skills/openspec-apply-change/SKILL.md
  • .omp/skills/openspec-archive-change/SKILL.md
  • .omp/skills/openspec-explore/SKILL.md
  • .omp/skills/openspec-propose/SKILL.md
  • graphify-out/.graphify_labels.json
  • graphify-out/2026-07-09/.graphify_labels.json
  • graphify-out/2026-07-09/GRAPH_REPORT.md
  • graphify-out/2026-07-09/cost.json
  • graphify-out/2026-07-09/graph.json
  • graphify-out/2026-07-09/manifest.json
  • graphify-out/GRAPH_REPORT.md
  • graphify-out/cache/ast/v0.9.10/4db9403f888542702a3671a179ec043a6b120ada53f17c049b797bb2691e3cbc.json
  • graphify-out/cache/ast/v0.9.10/73800af32b139cebdca1d7941bfbd152c20a7b394c2d9804e376f38113ecc79a.json
  • graphify-out/cache/ast/v0.9.10/7c58d7c288a7af1556bbdd249b59350a33a61024c41ab5313735d968b2f2f4a7.json
  • graphify-out/cache/ast/v0.9.10/8a32ac138d40718433aedc94b6e552fd186a55df976b035b12ce99999e53f8fa.json
  • graphify-out/cache/ast/v0.9.10/bc1a9630969289ce9eab40badba90796550ab0b49d72897b39cdc74bf409ab7a.json
  • graphify-out/cache/ast/v0.9.10/c0433ac97e58fff219d102bf583309e72fd1dac752e7bab05e2e085fd56482ad.json
  • graphify-out/cache/ast/v0.9.10/c07854bdb7b373b38fb50bc34707035376644fcc2b97530447c3b18397e8adb5.json
  • graphify-out/cache/ast/v0.9.10/d0c4bd94e15d3ff0c31870a61a56c79fd65a15eb057e1a73177de504270c4738.json
  • graphify-out/cache/ast/v0.9.10/d177bf171298b015e77e83b26d39d15839283284962e2b0f0d2e4faa56f5b06d.json
  • graphify-out/cache/ast/v0.9.10/d43bff1ca5959d9fae16afcf835bd789577146d4b7989b1c9ac1279cf6975d78.json
  • graphify-out/cache/stat-index.json
  • graphify-out/graph.html
  • graphify-out/graph.json
  • graphify-out/manifest.json
  • package.json

Comment thread .omp/commands/opsx-apply.md Outdated
Comment on lines +45 to +47
- If `state: "blocked"` (missing artifacts): show message, suggest using `/opsx-continue`
- If `state: "all_done"`: congratulate, suggest archive
- Otherwise: proceed to implementation

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
rg -n "opsx-continue|continue-change" .omp openspec

Repository: George-RD/openspine

Length of output: 428


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== commands ==\n'
fd -a -t f 'opsx-*.md' .omp/commands .omp/skills 2>/dev/null || true
printf '\n== direct matches ==\n'
rg -n "opsx-continue|continue-change|blocked" .omp/commands .omp/skills

printf '\n== opsx-apply excerpt ==\n'
sed -n '1,140p' .omp/commands/opsx-apply.md

printf '\n== openspec apply-change excerpt ==\n'
sed -n '1,120p' .omp/skills/openspec-apply-change/SKILL.md

Repository: George-RD/openspine

Length of output: 9560


Point the blocked-state handoff at a real recovery path.
.omp/commands/opsx-apply.md:45 sends users to /opsx-continue, but the matching continue flow in this stack is openspec-continue-change. Rename the handoff or add a real /opsx-continue alias so blocked applies don’t dead-end.

🤖 Prompt for 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.

In @.omp/commands/opsx-apply.md around lines 45 - 47, The blocked-state handoff
in the opsx apply flow points to a non-existent recovery command. Update the
blocked branch in opsx-apply so it references the real continue path used by
this stack, namely openspec-continue-change, or add a working /opsx-continue
alias that routes there. Make sure the user-facing message and any related help
text in the opsx-apply command stay consistent with the actual recovery entry
point.

Comment on lines +57 to +72
```
┌─────────────────────────────────────────┐
│ Use ASCII diagrams liberally │
├─────────────────────────────────────────┤
│ │
│ ┌────────┐ ┌────────┐ │
│ │ State │────────▶│ State │ │
│ │ A │ │ B │ │
│ └────────┘ └────────┘ │
│ │
│ System diagrams, state machines, │
│ data flows, architecture sketches, │
│ dependency graphs, comparison tables │
│ │
└─────────────────────────────────────────┘
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add language tags to the fenced examples.

These unlabeled fences trigger MD040 across the doc, and the matching skill file has the same pattern. Mark the narrative/ASCII blocks as text/markdown and the shell snippets as bash.

Also applies to: 151-171, 174-202, 205-219, 222-248, 263-275

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 57-57: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for 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.

In @.omp/commands/opsx-explore.md around lines 57 - 72, The fenced examples in
opsx-explore.md are missing language tags, which triggers MD040; update the
affected fenced blocks and the matching skill file so the narrative/ASCII
sections use text or markdown and any shell snippets use bash. Use the existing
fence content to identify the blocks around the ASCII diagram and the other
repeated sections, and apply consistent labels across all matching examples.

Source: Linters/SAST tools

Comment on lines +51 to +54
**Handle states:**
- If `state: "blocked"` (missing artifacts): show message, suggest using openspec-continue-change
- If `state: "all_done"`: congratulate, suggest archive
- Otherwise: proceed to implementation

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
rg -n "opsx-continue|continue-change" .omp openspec

Repository: George-RD/openspine

Length of output: 428


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== Matches ==\n'
rg -n "opsx-continue|continue-change|openspec-continue-change" .omp || true

printf '\n== Relevant files ==\n'
for f in .omp/skills/openspec-apply-change/SKILL.md .omp/commands/opsx-apply.md; do
  echo "--- $f"
  nl -ba "$f" | sed -n '35,60p'
done

printf '\n== Command inventory ==\n'
fd -a 'opsx-*.md' .omp || true
fd -a 'openspec-*.md' .omp || true

Repository: George-RD/openspine

Length of output: 553


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== Command docs ==\n'
fd -a '' .omp/commands | sort || true

printf '\n== Search for continue commands ==\n'
rg -n "opsx-continue|continue-change|openspec-continue-change" .omp/commands .omp/skills || true

printf '\n== Relevant snippets ==\n'
for f in .omp/skills/openspec-apply-change/SKILL.md .omp/commands/opsx-apply.md; do
  echo "--- $f"
  sed -n '40,58p' "$f"
done

Repository: George-RD/openspine

Length of output: 2146


Make the blocked-state recovery name consistent. .omp/skills/openspec-apply-change/SKILL.md still suggests openspec-continue-change, but the paired command doc only documents /opsx-continue. Align the recovery name so blocked applies point users to one path.

🤖 Prompt for 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.

In @.omp/skills/openspec-apply-change/SKILL.md around lines 51 - 54, The
blocked-state recovery guidance is inconsistent between the apply-change flow
and the documented command name. Update the handle-states instructions in the
openspec apply-change skill so the `state: "blocked"` path points to the same
recovery command as the paired command doc, using the documented
`/opsx-continue` name instead of `openspec-continue-change`. Keep the `state:
"all_done"` and implementation paths unchanged, and ensure the recovery wording
is consistent wherever this blocked-state guidance appears.

- Replace references to nonexistent openspec-continue-change / /opsx-continue with actionable blocked-state guidance (cubic P2, coderabbit major)

- Respect Cancel in the archive sync prompt instead of proceeding regardless (cubic P1)

- Replace nonexistent openspec-sync-specs skill references with the repo hand-apply + strict-validate ceremony

Skipped: MD040 fence language tags (coderabbit minor) - generated files, no markdownlint gate, minimizes regeneration drift.

@cubic-dev-ai cubic-dev-ai 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.

1 issue found across 10 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".omp/commands/opsx-apply.md">

<violation number="1" location=".omp/commands/opsx-apply.md:45">
P2: This line uses `/opsx:propose` and `/opsx:apply` with colons, but the rest of the generated commands use dashes everywhere (`/opsx-apply`, `/opsx-propose`, `/opsx-archive`, `/opsx-explore`). If the OMP trigger convention is colon-based, all dash references need updating; if dash-based, this line introduced the wrong separator. Align the separator in this instruction with the convention used by the rest of the codebase to avoid agent confusion.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

- Dynamic instruction based on current state

**Handle states:**
- If `state: "blocked"` (missing artifacts): show message listing the missing artifacts; create them first (use `/opsx:propose` or follow the change's schema), then re-run `/opsx:apply`

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: This line uses /opsx:propose and /opsx:apply with colons, but the rest of the generated commands use dashes everywhere (/opsx-apply, /opsx-propose, /opsx-archive, /opsx-explore). If the OMP trigger convention is colon-based, all dash references need updating; if dash-based, this line introduced the wrong separator. Align the separator in this instruction with the convention used by the rest of the codebase to avoid agent confusion.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .omp/commands/opsx-apply.md, line 45:

<comment>This line uses `/opsx:propose` and `/opsx:apply` with colons, but the rest of the generated commands use dashes everywhere (`/opsx-apply`, `/opsx-propose`, `/opsx-archive`, `/opsx-explore`). If the OMP trigger convention is colon-based, all dash references need updating; if dash-based, this line introduced the wrong separator. Align the separator in this instruction with the convention used by the rest of the codebase to avoid agent confusion.</comment>

<file context>
@@ -42,7 +42,7 @@ Implement tasks from an OpenSpec change.
 
    **Handle states:**
-   - If `state: "blocked"` (missing artifacts): show message, suggest using `/opsx-continue`
+   - If `state: "blocked"` (missing artifacts): show message listing the missing artifacts; create them first (use `/opsx:propose` or follow the change's schema), then re-run `/opsx:apply`
    - If `state: "all_done"`: congratulate, suggest archive
    - Otherwise: proceed to implementation
</file context>
Suggested change
- If `state: "blocked"` (missing artifacts): show message listing the missing artifacts; create them first (use `/opsx:propose` or follow the change's schema), then re-run `/opsx:apply`
- If `state: "blocked"` (missing artifacts): show message listing the missing artifacts; create them first (use `/opsx-propose` or follow the change's schema), then re-run `/opsx-apply`

@George-RD George-RD dismissed coderabbitai[bot]’s stale review July 9, 2026 19:39

All three actionable findings addressed in 93b93ee (broken opsx-continue/openspec-continue-change refs, Cancel handling, sync-specs refs); MD040 skipped with reason (generated files, no markdownlint gate). Local gates + CI green.

@George-RD George-RD merged commit 9f60049 into main Jul 9, 2026
3 checks passed
@George-RD George-RD deleted the upgrade-openspec-1.6.0-beta.1 branch July 9, 2026 19:39
George-RD added a commit that referenced this pull request Jul 9, 2026
- Loop contract: pre-seeded requirements carried as MODIFIED deltas; archive via 'openspec archive <id> --yes' (mechanical delta apply) + strict validate; --yes permitted ONLY on non-interactive archive; --skip-specs reserved for no-spec-impact changes

- .omp archive skill/command updated to the same ceremony; ADDED-conflict recovery is now 'fix the delta header to MODIFIED', not a --skip-specs bypass

- scripts/check-omp-ceremony.sh: deterministic gate (wired into check.sh, inherited by CI) failing if openspec regeneration reverts the patched .omp files or reintroduces dangling skill refs; mutation-tested

- D-052 recorded in .raw/openspine-decision-log.md (narrows the blanket -y prohibition; grounded in PR #37 archive probes of 1.5.0 and 1.6.0-beta.1)

Independent review: COMMIT-READY, zero blockers.
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.

1 participant