Skip to content

chore: retire --skip-specs hand-apply archive ceremony (D-052)#38

Merged
George-RD merged 1 commit into
mainfrom
amend-archive-ceremony
Jul 9, 2026
Merged

chore: retire --skip-specs hand-apply archive ceremony (D-052)#38
George-RD merged 1 commit into
mainfrom
amend-archive-ceremony

Conversation

@George-RD

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

Copy link
Copy Markdown
Owner

What

Ratified workflow change (D-052), grounded in the PR #37 archive probes:

  • Loop contract (openspec/openspine-change-sequence.md): requirements already present in a pre-seeded capability spec are carried as ## MODIFIED Requirements (never re-ADDED); archive is openspec archive <id> --yes (mechanical delta apply) followed by openspec validate --all --strict. --yes is permitted ONLY on non-interactive archive; forbidden everywhere else. --skip-specs is reserved for genuinely no-spec-impact changes. Hand-copying deltas into openspec/specs/ is retired.
  • Generated OMP files (.omp/skills/openspec-archive-change/SKILL.md, .omp/commands/opsx-archive.md) updated to the same ceremony; ADDED-conflict recovery is now "fix the delta header to MODIFIED".
  • New gate scripts/check-omp-ceremony.sh (wired into check.sh, inherited by CI): fails loudly if openspec init/update --tools oh-my-pi regeneration reverts the patched files or reintroduces dangling skill references. Mutation-tested (appending upstream's raw mv "<changeRoot>" line trips it).
  • D-052 recorded in .raw/openspine-decision-log.md + change-log row; contract bullet cites it.

Why

Probes (PR #37) proved there is no flag-free unattended archive path: plain archive prompts and dies non-TTY in both 1.5.0 and 1.6.0-beta.1; MODIFIED deltas apply mechanically under --yes with a green post-apply corpus. Hand-applying deltas was the most error-prone canon-touching step an unattended loop performed; the archive prompt is confirmation theater without a TTY — the human gate is PR review, unchanged.

Evidence

  • ./scripts/check.sh fully green (fmt, clippy, tests, file-size, claims, new ceremony gate, openspec 11/11 strict)
  • Gate mutation-tested both directions
  • Independent reviewer agent (CodeRabbit not used per request): COMMIT-READY, zero blockers across contract text, .omp consistency, gate shell correctness, and cross-file ceremony agreement

Summary by cubic

Retires the manual --skip-specs archive path and standardizes on openspec archive <id> --yes followed by strict validate to apply deltas mechanically. Updates the loop contract and .omp files, and adds a CI gate to prevent ceremony regressions.

  • Refactors

    • Change-sequence: pre-seeded requirements must be authored as MODIFIED, not ADDED; --yes allowed only on non-interactive openspec archive; --skip-specs reserved for no-spec-impact changes.
    • Updated .omp/skills/openspec-archive-change/SKILL.md and .omp/commands/opsx-archive.md to the new ceremony and simplified prompts; conflict recovery is to change ADDED to MODIFIED.
    • Added scripts/check-omp-ceremony.sh and wired it into scripts/check.sh to fail if generated .omp files drop the ceremony or reintroduce dangling skill refs.
    • Recorded decision D-052 in .raw/openspine-decision-log.md; updated openspec/openspine-change-sequence.md.
  • Migration

    • Archive with openspec archive <id> --yes, then run openspec validate --all --strict.
    • Do not hand-copy deltas into openspec/specs/; avoid --skip-specs unless the change has no spec impact.
    • If a pre-seeded spec conflicts on ADDED, change the delta header to MODIFIED.

Written for commit ef607f8. Summary will update on new commits.

Review in cubic

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

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 20 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: dd87a36b-83f0-4345-8b5b-5383a8eb3871

📥 Commits

Reviewing files that changed from the base of the PR and between 9f60049 and ef607f8.

📒 Files selected for processing (22)
  • .omp/commands/opsx-archive.md
  • .omp/skills/openspec-archive-change/SKILL.md
  • .raw/openspine-decision-log.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/graph.json
  • graphify-out/2026-07-09/manifest.json
  • graphify-out/GRAPH_REPORT.md
  • graphify-out/cache/ast/v0.9.10/26ed5649dd212fe72c802e145b5064a52741fccb65c0b2e8e27e3406d69b57d1.json
  • graphify-out/cache/ast/v0.9.10/618b99f5473e5e4cc659d92b4a60c88616cc4dba7edcd4e30d0f13c6b3eeda36.json
  • graphify-out/cache/ast/v0.9.10/83b51c4c41d53319316b7d3accbbab967b69414b64baaf44e58ccf20028f02b2.json
  • graphify-out/cache/ast/v0.9.10/8cfabaf4639324d0491f961079b7df83e3245cf628923ee36c6aef3bff0e37f5.json
  • graphify-out/cache/ast/v0.9.10/93102bdfc1e80bef7019bb48717f721607d3e174166659f9288b973b885c7e5c.json
  • graphify-out/cache/ast/v0.9.10/d0463a89d0716a096a96b03498bfcfe6ff287fd12f1c26d1fd796fb071cae074.json
  • graphify-out/cache/stat-index.json
  • graphify-out/graph.html
  • graphify-out/graph.json
  • graphify-out/manifest.json
  • openspec/openspine-change-sequence.md
  • scripts/check-omp-ceremony.sh
  • scripts/check.sh
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amend-archive-ceremony

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

@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 22 files

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="scripts/check-omp-ceremony.sh">

<violation number="1" location="scripts/check-omp-ceremony.sh:21">
P2: The ceremony gate can report success even when expected generated OMP files are missing, because `forbid` treats `grep` read errors as a clean non-match. Checking file existence first in `forbid` would keep this guardrail from silently skipping missing-file drift.</violation>
</file>

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

Re-trigger cubic

}

forbid() { # file pattern description
if grep -qF -- "$2" "$1"; then

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: The ceremony gate can report success even when expected generated OMP files are missing, because forbid treats grep read errors as a clean non-match. Checking file existence first in forbid would keep this guardrail from silently skipping missing-file drift.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At scripts/check-omp-ceremony.sh, line 21:

<comment>The ceremony gate can report success even when expected generated OMP files are missing, because `forbid` treats `grep` read errors as a clean non-match. Checking file existence first in `forbid` would keep this guardrail from silently skipping missing-file drift.</comment>

<file context>
@@ -0,0 +1,47 @@
+}
+
+forbid() { # file pattern description
+  if grep -qF -- "$2" "$1"; then
+    echo "FAIL: $1 contains '$2' ($3)" >&2
+    fail=1
</file context>

@George-RD George-RD merged commit 47cff74 into main Jul 9, 2026
3 checks passed
@George-RD George-RD deleted the amend-archive-ceremony branch July 9, 2026 20:02
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