Skip to content

chore(openspec): align ship-cycle merge contract with lifecycle ancestry (#451) - #504

Merged
monkey1sai merged 3 commits into
mainfrom
chore/451-align-ship-merge-ancestry-v2
Aug 12, 2026
Merged

chore(openspec): align ship-cycle merge contract with lifecycle ancestry (#451)#504
monkey1sai merged 3 commits into
mainfrom
chore/451-align-ship-merge-ancestry-v2

Conversation

@monkey1sai

@monkey1sai monkey1sai commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • Align ship-cycle merge contract with lifecycle ancestry #451openspec/specs/agent-operability-governance/spec.md 的 ship-cycle 契約兩處 squash-merge 措辭與 executable workflow(.claude/workflows/ship-item.md--merge --match-head-commit)及 enforcing test(test-agent-governance-check.ps1 斷言含 --merge--squash)矛盾;merge commit 是為保 lifecycle subject_commit ancestry,spec 是過時方。
  • 以 OpenSpec change align-ship-cycle-merge-ancestry 走完整儀式:proposal+tasks(6/6 全勾)+MODIFIED Requirement delta → npx openspec validate --strictnpx openspec archive(同輪 archive,落 openspec/changes/archive/2026-08-11-align-ship-cycle-merge-ancestry/)→ ledger 新增 archived row。
  • spec 兩處現讀 merge(merge commit、non-squash,保留 lifecycle subject_commit ancestry);其餘措辭(official gate 全綠、不 merge 真 P1/P2、不偽裝 CI、buffer cycle)逐字不變;grep squash-merge 該 spec 零殘留。
  • 未動:.claude/workflows/ship-item.mdscripts/tests/test-agent-governance-check.ps1、既有 archive 內容、docs/plans/NOW.md

AI Coding Governance

Machine values: Change lane = F / B / G / S; Behavior contract changed = yes / no; Requirement source = issue / docs/plans / superpowers spec / existing contract / not applicable.

Item Result
Change lane F
Behavior contract changed no
Linked issue #451
Requirement source issue(#451
CODEOWNERS / owner review requested
GitNexus evidence not needed(純 openspec 文件;無 code symbol 變更)
Browser E2E evidence not user-facing
Agent workflow changed? no
Required checks expected CI / Agent Governance / PR Metadata Contract

Frontend Verification

User-facing changes must pass two independent producers: real frontend/runtime operability evidence and the pinned docs/plans/design-system-reference.manifest.json fidelity gate. Scope is derived from changed paths plus the base/head manifest union; the PR body cannot select an easier screen. mixed and partial_reference_missing permit honest partial work but require Full completion claimed = no. Semantic evidence is produced only by the design-semantic-visual CI Playwright job, never supplied as PR input; PR Metadata Contract validates the live PR metadata, while normal protected CI checks determine mergeability.

Item Result
Frontend route not applicable
Main button(s) tested not applicable
Fixture used not applicable
Backend API called not applicable
Runtime action not applicable
Visible success state not applicable
E2E command not applicable
Screenshot / trace not applicable
Design gate status not applicable
Design screen(s) not applicable
Reference-missing route(s) / surface(s) not applicable
Full completion claimed no
Design reference manifest docs/plans/design-system-reference.manifest.json
Visual fidelity result not applicable
Visual comparison not applicable
Visual artifacts not applicable
Manual test steps not applicable
Known gaps not applicable

Deploy Path Verification

Required for runtime / Docker / Kit / viewer / ports / env / conversion-service changes.

Item Result
Affects runtime / docker / Kit / viewer / ports / env? no
Canonical deploy path updated? not needed
New root script added? no
Deploy dry-run command not applicable
Full deploy tested not available
Verify command not applicable
Frontend URL verified not applicable
Evidence path openspec/changes/archive/2026-08-11-align-ship-cycle-merge-ancestry/

Self-Referential Bootstrap

Required when the PR changes the verification mechanism itself (deploy path / evidence harness / gate script). Rule: docs/agents/self-referential-bootstrap.md. Open ledger debt in scripts/self-referential-bootstrap-ledger.json blocks further mechanism PRs until fixpoint closure.

Item Result
Self-referential bootstrap no
Bootstrap ledger entry not applicable
Bootstrap reason not applicable

Validation

  • npx openspec validate align-ship-cycle-merge-ancestry --strict → valid;npx openspec archive --yes → exit 0(~ 1 modified)。
  • rebase 到 4721923 後重跑:node --test scripts/tests/test-openspec-machine-truth.mjs → 24 pass/0 fail(含 ledger row subject rebind 至 rebased commit);test-ai-coding-metrics.mjs → 13 pass/0 fail。
  • pwsh scripts/tests/verify-openspec-lifecycle.ps1 -BaseRef origin/mainopenspec lifecycle OK: non_deferred=5; deferred=5
  • pwsh scripts/tests/test-openspec-lifecycle-archive-diff.ps1 → PASS;test-openspec-ledger-reconciliation.ps1 → all assertions passed。
  • pwsh scripts/tests/test-agent-governance-check.ps1 → 45 pass/0 fail。

Known Risks

🤖 Generated with Claude Code

monkey1sai and others added 2 commits August 12, 2026 09:56
#451)

spec.md 的 ship-cycle requirement 寫 squash-merge,但可執行的
.claude/workflows/ship-item.md 與 enforcing test
scripts/tests/test-agent-governance-check.ps1 都要求
--merge --match-head-commit(non-squash merge commit,保留
lifecycle subject_commit ancestry)。spec 是過時的一方。

新增並 archive OpenSpec change align-ship-cycle-merge-ancestry:
把 openspec/specs/agent-operability-governance/spec.md 內兩處
squash-merge 措辭改為 merge(merge commit、non-squash、保留
ancestry),其餘措辭不變。不動 ship-item.md、不動 enforcing test、
不動既有 archive 內容。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ancestry (#451)

新增 archived change align-ship-cycle-merge-ancestry 的 lifecycle-ledger.json
row(task_ledger 6/6、evidence_refs 指向 archive 內 proposal.md/tasks.md、
subject_commit=900b0ac62b4001b26d86b927baf20f0700ca03d0,即上一個 commit)。
欄位形狀比照既有 archived row。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings August 12, 2026 01:58
@monkey1sai
monkey1sai enabled auto-merge (squash) August 12, 2026 01:58
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@monkey1sai, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 53 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 00713660-f195-4206-b6f0-3f0e90e92fd6

📥 Commits

Reviewing files that changed from the base of the PR and between 970dc34 and 9839d2b.

📒 Files selected for processing (5)
  • openspec/changes/archive/2026-08-11-align-ship-cycle-merge-ancestry/proposal.md
  • openspec/changes/archive/2026-08-11-align-ship-cycle-merge-ancestry/specs/agent-operability-governance/spec.md
  • openspec/changes/archive/2026-08-11-align-ship-cycle-merge-ancestry/tasks.md
  • openspec/lifecycle-ledger.json
  • openspec/specs/agent-operability-governance/spec.md

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.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3c94d28854

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread openspec/lifecycle-ledger.json

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR resolves issue #451, which reported a contradiction between the canonical spec and the executable ship-cycle workflow. openspec/specs/agent-operability-governance/spec.md previously mandated squash-merge, while the executable .claude/workflows/ship-item.md and the enforcing test scripts/tests/test-agent-governance-check.ps1 require a non-squash --merge --match-head-commit to preserve the lifecycle subject_commit ancestry invariant. The change updates the stale spec wording to match the already-landed executable behavior, wrapped in a full OpenSpec change ceremony (proposal + tasks + spec delta) that was archived in the same turn, with a corresponding archived ledger row.

I verified the core claim against source: ship-item.md:19 and :125 both use --merge --match-head-commit, and test-agent-governance-check.ps1:875-876 assert --merge is present and --squash is absent — confirming the spec was indeed the stale party. A grep of the spec shows zero squash-merge residual after the change, and the new ledger row's fields (owner, task_ledger 6/6, evidence_refs, archive_debt) match existing archived-row conventions.

Changes:

  • Reworded two occurrences of squash-merge in the ship-cycle requirement and scenario to merge (merge commit, non-squash, preserving lifecycle subject_commit ancestry).
  • Added the archived OpenSpec change (proposal.md, tasks.md, spec delta) under 2026-08-11-align-ship-cycle-merge-ancestry/.
  • Appended a matching archived row to openspec/lifecycle-ledger.json.

Reviewed changes

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

Show a summary per file
File Description
openspec/specs/agent-operability-governance/spec.md Aligns two squash-merge mentions to non-squash merge to match executable workflow/test
openspec/lifecycle-ledger.json Adds the archived lifecycle row for the change with evidence refs and subject commit
openspec/changes/archive/2026-08-11-align-ship-cycle-merge-ancestry/proposal.md Documents the rationale (spec drift vs. executable behavior) and scope
openspec/changes/archive/2026-08-11-align-ship-cycle-merge-ancestry/tasks.md Records the 6/6 completed change tasks and validation commands
openspec/changes/archive/.../specs/agent-operability-governance/spec.md MODIFIED requirement delta applied at archive time

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

@codex-tri-adversarial-bot codex-tri-adversarial-bot 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.

Codex Tri-Adversarial Bot

Automated tri-adversarial ship-gate (L0 terra triage / L1 tier-routed lens fanout / L2 refute-by-default / L3 sol apex — Codex models).
Mapped event: COMMENT


Codex Tri-Adversarial ship-gate — PR #504

  • Repo head: chore/451-align-ship-merge-ancestry-v2 @ 3c94d28
  • Base: main @ 4721923
  • Files changed: 5
  • Engine: four-model tri-adversarial gate on Codex — L0 triage gpt-5.6-terra/low; L1 lens finders routed gpt-5.6-terra/low → gpt-5.6-luna/medium → gpt-5.5/xhigh (security floor gpt-5.5); L2 refute-by-default gpt-5.5/xhigh, top-tier findings refuted by gpt-5.6-sol/xhigh (every refutation cross-model); L3 apex gpt-5.6-sol/max. 誠實聲明:層級與 Claude 三層 gate 同構(terra≈haiku、luna≈sonnet、gpt-5.5≈opus、sol≈fable),但模型池是 Codex 的,非 Anthropic 的。

Verdict

SHIP

  • 阻擋門檻 severity: critical, high
  • mapped GitHub event: COMMENT
  • ℹ️ 判定為 SHIP,但刻意不送 APPROVE:GitHub App 的 approving review 不計入 required_approving_review_count(2026-07-31 實測)。本報告是證據,approving 那一票請由真人帳號投。

Difficulty & routing

  • overall: high (source: terra-triage)
  • lens tiers: correctness→gpt-5.5, security→gpt-5.5, simplification→gpt-5.6-luna, test-gap→gpt-5.5

Layer stats

  • L1: raw=2 deduped=2 finder_failures=0
  • L2: confirmed=0 refuted=2 unverified=0
  • L3 final: 0

Killed (did not survive L2/L3)

  • S1 [low] Avoid duplicated merge semantics in requirement and scenario — The finding is overstated as a simplification issue. In OpenSpec-style normative text, the requirement states the contract and the scenario restates the expected observable behavior for that scenario. The adjacent duplication is intentional traceability, not clear maintainability debt. The two phras
  • S2 [low] Remove brittle line-number references from proposal rationale — The diff does add hard-coded line numbers, but they are in an archived OpenSpec proposal rationale, not in the active requirement or executable contract. The same paragraph already names the requirement, file paths, command shape (gh pr merge ... --merge --match-head-commit <preparedHead>), and th

Summary

沒有通過 L1/L2 的 survivor finding,因此本 gate 無需阻擋此 PR。S1 與 S2 維持 L2 的否決結果,不納入最終 findings。

Agent calls

  • 8/8 ok, engine wall-clock 150.5s

VERDICT

SHIP

VERDICT: SHIP

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9839d2b524

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread openspec/lifecycle-ledger.json

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

Approved by monkey1sai-blip (the reviewer account pinned by the repo's merge governance).

Submitted through scripts/blip_review.py — a scripted approval carrying the operator's authority, pinned to head 9839d2b524047d30d985066ecb51951ccdeaeda5. This is the mechanism the GitHub App cannot satisfy: an App's approving review does not count toward required_approving_review_count.

@monkey1sai
monkey1sai merged commit 881f6da into main Aug 12, 2026
21 checks passed
@monkey1sai
monkey1sai deleted the chore/451-align-ship-merge-ancestry-v2 branch August 12, 2026 03:15
monkey1sai added a commit that referenced this pull request Aug 12, 2026
#512)

Same pattern as #482/#501: the row's subject_commit pointed at the
pre-squash branch commit (bccf251) which is not an ancestor of main after
the #504 squash (881f6da); any PR CI running the machine-truth source
observation against this ledger fails subject_not_ancestor. Rebound to
the landed squash. Local gates: machine-truth 24/0, metrics 13/0.

Co-authored-by: Claude Fable 5 <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.

3 participants