Skip to content

docs(openspec): governance-throughput-budget 提案——WIP 上限+治理稅預算+canon 批次化+收斂清單(供審;不掛 auto-merge) - #364

Merged
monkey1sai merged 2 commits into
mainfrom
docs/wip-convergence-throughput
Jul 21, 2026
Merged

monkey1sai merged 2 commits into
mainfrom
docs/wip-convergence-throughput

Conversation

@monkey1sai

@monkey1sai monkey1sai commented Jul 21, 2026 •

Copy link
Copy Markdown
Owner

governance-throughput-budget 提案——WIP 上限+治理稅預算+canon 批次化+收斂清單(供審;不掛 auto-merge)

本 PR 為治理提案(仿 #360 供審模式,非自動採納),回應「開發進度緩慢、WIP 過寬」的實測診斷:

  • 治理稅實測(origin/main@b9c88bf):近 60 天 docs+chore commit 佔 43.1%(153/355);rolling 14 天 47.1%(41/87),趨勢向上。
  • openspec active change 同時 9 個在飛;其中 a4-semantic-search-model-qa tasks 0/64、rvt-ifc-usdc-lineage 1/48(contract-only)、minio-folderview-and-baseline-disclosure 0/7、align-frontend-design-system-reference 0/23 全未動工。
  • 勾選帳與實際落地脫鉤的實例:migrate-console-to-hifi-design tasks 0/35 未勾但 feat(console): UnifiedConsole 遷移至 Hi-Fi design token(1/2 product code) #357 已落 1/2 product code;codex/openspec/a4-semantic-search-model-qa 分支有 6,478 行新增(覆蓋 tasks §2–§5)但 tasks.md 零勾選。

內容

  1. 新 change openspec/changes/governance-throughput-budget/(proposal + tasks + spec,新 capability ADDED 4 條 requirement,每條含 trigger/action/validation 與 PowerShell 量測指令):
    • R1 active change 同時 ≤2(不含 archive 與 deferred;含 deferred 標記格式與計數指令)
    • R2 rolling 14 天 docs+chore ≤30%;超標當週只收功能 PR(安全/誠實修正豁免須附佔比)
    • R3 canon 修訂雙週一批 batch PR;不改變 design-canon-change-control 授權邊界
    • R4 九個 active change 的收斂行動清單(c-m4 建議 archive;viewer-embed-a1-highlight / minio-watch / minio-trigger close-out 條件;兩案 deferred)
  2. minio-folderview-and-baseline-disclosure 與 align-frontend-design-system-reference 兩案 proposal.md 頂部加 Status: deferred-proposed 2026-07-21 註記(僅加註記,原文未動)。

Open Questions(需使用者裁決)

  • OQ-1:收斂後仍餘 3 個大型 active(a4 / lineage / migrate-console),保留哪 ≤2。
  • OQ-2:30% 治理稅上限是否採漸進(如首月 40%)。
  • OQ-3:本 change 自身為第 10 個 active 的自指悖論——採納即 archive 的出場路徑。

與既有「分支收斂設計 spec」(#352,docs/superpowers/specs/2026-07-16-branch-convergence-design.md)互補:該 spec 管分支存量,本提案管 change 流量;無重複建制。

Change Classification

Field Value
Change lane F
Behavior contract changed no
Requirement source not applicable(使用者直接指示的治理提案;純 openspec docs,供審不自動採納)

驗證

  • npx openspec validate governance-throughput-budget --strict → valid
  • npx openspec validate --all --strict → 63 passed / 0 failed(openspec 1.6.0)
  • 純 openspec docs 變更,無程式碼、無 runtime 影響;commit 前 git status --porcelain 僅含 5 個預期檔案。

已知偏差揭露:本 change 開在 docs/wip-convergence-throughput branch 而非 codex/openspec/<change-id> 慣例命名(依協調任務指示的分支配置為之)。

🤖 Generated with Claude Code

https://claude.ai/code/session_01VBTR2vcGmQXq2TGJ4HzWDs

Summary by CodeRabbit

  • Documentation
    • Added a governance proposal covering active-change limits, rolling documentation/chore budgets, batched canon updates, and change convergence procedures.
    • Added requirements, validation steps, decision gates, and a task ledger for the governance proposal.
    • Marked two proposals as deferred-proposed, including status, restart conditions, and validation guidance.
    • Clarified that deferred items do not alter their original content and remain subject to future review.

…次化+收斂清單(供審;不掛 auto-merge)

- 新 capability governance-throughput-budget(ADDED 4 條,各含 trigger/action/validation 與 git 統計指令):
  R1 active change 同時 ≤2、R2 rolling 14 天 docs+chore ≤30%(基線實測 60d 43.1%/14d 47.1%)、
  R3 canon 修訂雙週一批不逐條開 PR、R4 九個 active change 實核勾選快照+逐一處置提案
- minio-folderview-and-baseline-disclosure(0/7)與 align-frontend-design-system-reference(0/23)
  proposal.md 頂部加 Status: deferred-proposed 2026-07-21 註記(只加不改原內容)
- 與 #352 分支收斂設計 spec 互補不重複:該 spec 管分支存量,本提案管 change 流量與治理稅
- 驗證: openspec validate governance-throughput-budget --strict 綠; --all --strict 63 passed/0 failed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBTR2vcGmQXq2TGJ4HzWDs
Copilot AI review requested due to automatic review settings July 21, 2026 03:50
@coderabbitai

coderabbitai Bot commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Introduces a governance-throughput-budget proposal and specification covering active-change limits, governance-tax budgeting, canon batching, and convergence actions. Adds a task ledger and deferred-proposed annotations to two existing proposals.

Changes

Governance throughput budget

Layer / File(s) Summary
Proposal definition and governance scope
openspec/changes/governance-throughput-budget/proposal.md
Defines the proposal’s scope, four governance requirements, impact, non-goals, and open questions.
Throughput and batching requirements
openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md
Specifies active-change caps, rolling governance-tax limits, canon batching, validation commands, scenarios, and convergence behavior.
Convergence tasks and deferred statuses
openspec/changes/governance-throughput-budget/tasks.md, openspec/changes/*/proposal.md
Adds the four-phase task ledger and marks the alignment and MinIO proposals as deferred-proposed with reactivation conditions.

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

Suggested reviewers: copilot

🚥 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 governance-throughput-budget proposal and its key rules.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/wip-convergence-throughput

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.

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

Actionable comments posted: 5

🤖 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
`@openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md`:
- Around line 58-63: Update the batching requirement around the git log command
to measure pull requests rather than commits, using authoritative PR metadata
and an explicitly defined two-week window. Alternatively, consistently redefine
the requirement and wording as a commit-count threshold; keep the exemption and
failure-signal behavior unchanged.
- Around line 58-63: Update the validation command in the governance throughput
budget specification to include the complete recursive AGENTS.md and CLAUDE.md
reference chain, not only root-level files. Ensure changes to nested files such
as openspec/AGENTS.md are included while preserving the existing governed
plan-file paths and two-week PR counting behavior.
- Around line 12-15: Update the deferred-status filter in the change-count
expression to inspect only the proposal header’s top-level blockquote, anchoring
the match rather than scanning the entire proposal.md. Match only the statuses
“deferred” and “deferred-proposed,” while preserving inclusion of active changes
whose body merely mentions those strings.
- Around line 34-40: Update the throughput ratio calculation in the PowerShell
validation command so it checks whether $all is zero before dividing. For an
empty 14-day commit window, emit an explicit zero/no-data ratio; otherwise
preserve the existing $tax / $all percentage output.
- Around line 87-95: Replace the post-archive validation command with `npx
openspec validate --specs --strict` in
openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md
lines 87-95 and openspec/changes/governance-throughput-budget/tasks.md lines
21-24. Add the same validation after archiving this change in tasks.md line 30.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 316e9681-a0f3-4dac-b09a-0076bec680aa

📥 Commits

Reviewing files that changed from the base of the PR and between b9c88bf and 9a08953.

📒 Files selected for processing (5)
  • openspec/changes/align-frontend-design-system-reference/proposal.md
  • openspec/changes/governance-throughput-budget/proposal.md
  • openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md
  • openspec/changes/governance-throughput-budget/tasks.md
  • openspec/changes/minio-folderview-and-baseline-disclosure/proposal.md

Comment on lines +12 to +15
(Get-ChildItem openspec/changes -Directory |
Where-Object { $_.Name -ne 'archive' } |
Where-Object { -not (Select-String -Path (Join-Path $_.FullName 'proposal.md') -Pattern 'Status: deferred' -Quiet) }
).Count

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.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Match deferred status only at the proposal header.

This search scans the entire proposal.md and uses a substring match, so an active change can be excluded merely by mentioning Status: deferred in its body. Anchor the expression to the top-level blockquote and match only deferred or deferred-proposed.

🤖 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
`@openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md`
around lines 12 - 15, Update the deferred-status filter in the change-count
expression to inspect only the proposal header’s top-level blockquote, anchoring
the match rather than scanning the entire proposal.md. Match only the statuses
“deferred” and “deferred-proposed,” while preserving inclusion of active changes
whose body merely mentions those strings.

Comment on lines +34 to +40
```powershell
git fetch origin
$all = (git log --since="14 days ago" --oneline origin/main | Measure-Object -Line).Lines
$tax = (git log --since="14 days ago" --oneline origin/main |
Select-String -Pattern '^[0-9a-f]+ (docs|chore)' | Measure-Object -Line).Lines
"tax={0} total={1} ratio={2:P1}" -f $tax, $all, ($tax / $all)
```

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Handle an empty 14-day window before dividing.

When origin/main has no commits in the window, $tax / $all divides by zero and the validation command fails. Return an explicit zero/no-data ratio instead.

🤖 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
`@openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md`
around lines 34 - 40, Update the throughput ratio calculation in the PowerShell
validation command so it checks whether $all is zero before dividing. For an
empty 14-day commit window, emit an explicit zero/no-data ratio; otherwise
preserve the existing $tax / $all percentage output.

Comment on lines +58 to +63
```powershell
git log --since="14 days ago" --oneline origin/main -- `
"docs/plans/*.dc.html" docs/plans/docs-plans-README.md AGENTS.md CLAUDE.md
```

雙週窗口內 touch 上述檔案之 PR 數 SHALL ≤ 1(豁免項除外;超出即為批次化失效訊號)。

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.

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Measure PRs, not commits, for the batching requirement.

The requirement is stated in terms of PR count, but this command counts commits touching the paths. Multi-commit PRs and squash-merged PRs can therefore produce false failures or false passes. Either redefine the requirement as commit count or use authoritative PR metadata with a defined time window.

🤖 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
`@openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md`
around lines 58 - 63, Update the batching requirement around the git log command
to measure pull requests rather than commits, using authoritative PR metadata
and an explicitly defined two-week window. Alternatively, consistently redefine
the requirement and wording as a commit-count threshold; keep the exemption and
failure-signal behavior unchanged.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Include the full AGENTS/CLAUDE reference chain.

The validation command only checks root-level AGENTS.md and CLAUDE.md, while the requirement covers the reference chain. Changes such as openspec/AGENTS.md are currently invisible to this measurement; discover these files recursively or enumerate the governed paths explicitly.

🤖 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
`@openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md`
around lines 58 - 63, Update the validation command in the governance throughput
budget specification to include the complete recursive AGENTS.md and CLAUDE.md
reference chain, not only root-level files. Ensure changes to nested files such
as openspec/AGENTS.md are included while preserving the existing governed
plan-file paths and two-week PR counting behavior.

Comment on lines +87 to +95
- **Trigger**:本 change 被使用者採納且 OQ-1 裁決完成。
- **Action**:依本 change tasks §3 逐項執行,每項附最小驗證;deferred 註記由 `deferred-proposed` 改為 `deferred`。
- **Validation**:全部執行後,R1 之計數指令輸出 SHALL ≤ 2(另加本 change 自身於 archive 前的暫時 +1),且 `npx openspec validate --all --strict` 綠。

#### Scenario: 採納後執行收斂使 active 降至上限內

- **WHEN** 使用者採納本 change 並完成 OQ-1 裁決
- **THEN** 執行收斂動作後 `openspec/changes/` 之 active(非 deferred)change 數 SHALL ≤ 2(不計本 change 自身 archive 前的暫時佔位)
- **AND** 每個被 archive 的 change SHALL 滿足:對應 PR 已 merge、剩餘 follow-up 有 issue 對照或明文 known gap 紀錄

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== spec.md slice ==\n'
sed -n '80,105p' openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md

printf '\n== tasks.md slice ==\n'
sed -n '1,80p' openspec/changes/governance-throughput-budget/tasks.md

printf '\n== search validate command references ==\n'
rg -n "openspec validate|--specs --strict|--all --strict" -S .

Repository: monkey1sai/AI-BIM-governance

Length of output: 12227


🏁 Script executed:

#!/bin/bash
set -euo pipefail
rg -n "openspec validate --(all|specs) --strict|validate --specs --strict|validate --all --strict" openspec .github README.md docs -S

Repository: monkey1sai/AI-BIM-governance

Length of output: 8429


🌐 Web query:

"openspec validate --specs --strict --all --strict"

💡 Result:

The command openspec validate --specs --strict --all --strict is a valid way to invoke the OpenSpec validation tool, although it contains redundant flags [1][2]. In OpenSpec, the validate command checks the structure and syntax of changes and specifications [3][4]. When you run this command, the tool interprets the provided options as follows: - --specs: Tells the tool to validate all specifications in the openspec/specs/ directory [1][5]. - --all: Tells the tool to validate all changes and specs [1][3]. - --strict: Enables strict validation mode, which causes the tool to treat warnings (such as descriptions that are too short) as errors, failing the validation process if any exist [3][5]. Including --strict twice does not change the behavior, as it is a boolean flag that is enabled once specified [1][4]. Running this command will trigger a bulk validation of all changes and specs in your repository, applying strict error-checking rules across the entire dataset [1][5]. If any validation fails, the process will typically exit with a non-zero exit code (commonly 1) [5]. For CI/CD environments, it is often recommended to combine these flags with --json to receive a structured report [1][2].

Citations:


🌐 Web query:

"OpenSpec validate specs strict all strict"

💡 Result:

In OpenSpec, the command to validate specifications and changes is openspec validate [1][2]. To run validation in "strict" mode across all available files, you should use the following command: openspec validate --all --strict When the --strict flag is used, the validator treats warnings as errors and will cause the process to fail if any warnings or errors are present (such as descriptions that are too short) [1][3]. The --all flag ensures that the command validates all changes and specifications within the project, excluding archived items [1][3]. Additional details on this command: - --specs: Use this instead of --all if you wish to validate only the specifications [1][2]. - --json: You can append this flag to output the validation results in a structured JSON format, which is particularly useful for CI/CD pipelines [2][4]. - --concurrency: You can control the parallel validation limit (default is 6) by using this option (e.g., --concurrency 12) [1][2]. When executed, the system performs various checks, including verifying required sections, proper formatting of requirements and scenarios, and ensuring that delta blocks are valid [1].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== docs/PR_REVIEW_AGENT.md slice ==\n'
sed -n '55,80p' docs/PR_REVIEW_AGENT.md

printf '\n== openspec/AGENTS.md slice ==\n'
sed -n '38,56p' openspec/AGENTS.md

printf '\n== openspec/specs/pull-request-review-agent/spec.md slice ==\n'
sed -n '70,90p' openspec/specs/pull-request-review-agent/spec.md

Repository: monkey1sai/AI-BIM-governance

Length of output: 3564


Use npx openspec validate --specs --strict for archive closeout.

  • openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md#L87-L95: replace the post-archive --all --strict check with --specs --strict.
  • openspec/changes/governance-throughput-budget/tasks.md#L21-L24: do the same after each archive.
  • openspec/changes/governance-throughput-budget/tasks.md#L30-L30: add the same validation after archiving this change.
📍 Affects 2 files
  • openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md#L87-L95 (this comment)
  • openspec/changes/governance-throughput-budget/tasks.md#L21-L24
  • openspec/changes/governance-throughput-budget/tasks.md#L30-L30
🤖 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
`@openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md`
around lines 87 - 95, Replace the post-archive validation command with `npx
openspec validate --specs --strict` in
openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md
lines 87-95 and openspec/changes/governance-throughput-budget/tasks.md lines
21-24. Add the same validation after archiving this change in tasks.md line 30.

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 adds a docs-only OpenSpec governance proposal (governance-throughput-budget) intended for human review rather than automatic adoption. It responds to a measured "governance tax" problem (docs+chore commits ~43–47% of recent history) and excessive WIP (9 active OpenSpec changes in flight, several unstarted). The change introduces four ADDED requirements — a WIP cap (≤2 active changes), a rolling-14-day docs+chore budget (≤30%), biweekly canon-revision batching, and a one-time convergence action list for the 9 existing active changes — each with trigger/action/validation and PowerShell measurement commands. It also annotates two unstarted changes with Status: deferred-proposed 2026-07-21 notices. The proposal is self-aware of being the 10th active change and includes an archive exit path plus open questions for the maintainer.

Changes:

  • New governance-throughput-budget change (proposal + tasks + spec with 4 ADDED requirements: WIP cap, governance-tax budget, canon batching, convergence list).
  • Adds Status: deferred-proposed blockquote notices to minio-folderview-and-baseline-disclosure and align-frontend-design-system-reference proposals (annotation only, original text untouched).
  • Defers execution (tasks §3/§4) behind an explicit user-adjudication gate; nothing is enforced automatically.

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/changes/governance-throughput-budget/proposal.md New proposal: why (governance-tax/WIP data), what changes (R1–R4), impact, and open questions (OQ-1/2/3).
openspec/changes/governance-throughput-budget/specs/governance-throughput-budget/spec.md New capability spec: 4 ADDED requirements each with trigger/action/validation and a scenario; R4 convergence snapshot table.
openspec/changes/governance-throughput-budget/tasks.md Task list split into completed proposal body (§1), user-adjudication gate (§2), post-adoption convergence (§3), and self-archive (§4).
openspec/changes/minio-folderview-and-baseline-disclosure/proposal.md Adds deferred-proposed notice with restart conditions; original content unchanged.
openspec/changes/align-frontend-design-system-reference/proposal.md Adds deferred-proposed notice noting #363 PF-3 reconciliation; original content unchanged.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@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: 9a089535ed

ℹ️ 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".

```powershell
(Get-ChildItem openspec/changes -Directory |
Where-Object { $_.Name -ne 'archive' } |
Where-Object { -not (Select-String -Path (Join-Path $_.FullName 'proposal.md') -Pattern 'Status: deferred' -Quiet) }

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 Badge Do not count proposed deferrals as inactive

When a change only has the new Status: deferred-proposed note and the user has not accepted deferral yet, this matcher still excludes it because Status: deferred-proposed contains Status: deferred. That underreports active WIP and can allow new changes before the proposed deferral is approved; match only the accepted Status: deferred <date> marker or handle proposed deferrals separately.

Useful? React with 👍 / 👎.

## 2. 使用者裁決閘(採納前不得執行後續)

- [ ] 2.1 使用者逐條裁決 R1–R4(可部分採納;未採納條文於 archive 前刪除或降級為非規範建議)
- [ ] 2.2 裁決 OQ-1:收斂後仍餘 3 個大型 active(a4/rvt-ifc/migrate-console),指定保留哪 ≤ 2 個

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 Badge Add the missing OQ-1 convergence action

When R4 is adopted and OQ-1 selects which two of a4/rvt-ifc/migrate-console to keep, the tasks only ask for that decision and never add the corresponding action to defer/archive/close out the unkept change. Following §3 as written archives four changes and defers two, but still leaves governance-throughput-budget plus all three large changes active; after self-archive, three non-deferred changes remain, so the R1 limit of ≤2 is not achievable.

Useful? React with 👍 / 👎.


## 3. 收斂動作(採納後執行;每項執行前重驗當下狀態,快照非免驗依據)

- [ ] 3.1 archive `c-m4-runtime-command-bridge`:確認 #309 已 merge、follow-up #307/#308 已有 issue 對照 → `npx openspec archive c-m4-runtime-command-bridge` → `npx openspec validate --all --strict` 綠

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 Badge Move root evidence before archiving

When this archive step runs for changes that already have evidence under docs/evidence/ (for example docs/evidence/c-m4-runtime-command-bridge), it leaves that evidence outside the archived change even though openspec/specs/documentation-source-of-truth/spec.md requires archived change evidence to live under openspec/changes/archive/<change-id>/evidence/. Add the evidence move/copy to the close-out step before validation, otherwise the archive PR will violate the existing evidence-location rule.

Useful? React with 👍 / 👎.


- **Trigger**:本 change 被使用者採納且 OQ-1 裁決完成。
- **Action**:依本 change tasks §3 逐項執行,每項附最小驗證;deferred 註記由 `deferred-proposed` 改為 `deferred`。
- **Validation**:全部執行後,R1 之計數指令輸出 SHALL ≤ 2(另加本 change 自身於 archive 前的暫時 +1),且 `npx openspec validate --all --strict` 綠。

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 Badge Keep deferred changes out of --all validation

When any accepted deferred change later drifts, openspec validate --all --strict still validates every change directory; the custom Status: deferred marker introduced here does not exclude it from OpenSpec's all-change validation. Because R1 allows deferred changes to remain under openspec/changes/ indefinitely, this gate can fail on a deferred item that no longer counts toward WIP; either move/archive deferred changes or use a validation command that intentionally skips accepted deferred ones.

Useful? React with 👍 / 👎.

@monkey1sai

Copy link
Copy Markdown
Owner Author

@codex review

@monkey1sai
monkey1sai merged commit 2b12379 into main Jul 21, 2026
15 checks passed
@monkey1sai
monkey1sai deleted the docs/wip-convergence-throughput branch July 21, 2026 04:56

@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: 2b12379e07

ℹ️ 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".

```powershell
(Get-ChildItem openspec/changes -Directory |
Where-Object { $_.Name -ne 'archive' } |
Where-Object { -not (Select-String -Path (Join-Path $_.FullName 'proposal.md') -Pattern 'Status: deferred' -Quiet) }

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 Badge Anchor the deferred-status count to the proposal header

When a proposal only mentions a deferred marker without being deferred, this full-file Select-String excludes it from the active count. The new governance-throughput-budget/proposal.md itself contains Status: deferred-proposed in its What Changes section, so the validation command already drops this active change from the count and can let R1 pass while the WIP limit is still exceeded; constrain the match to the top blockquote/status line instead of scanning the whole proposal body.

Useful? React with 👍 / 👎.


### Requirement: canon 修訂 SHALL 累積雙週一批處理,不逐條開 PR(canon 修訂批次化)

(採納後生效)手寫正本(`docs/plans/*.dc.html` 兩份、`docs/plans/docs-plans-README.md`)與 AGENTS.md/CLAUDE.md 參照鏈之修訂提案 SHALL 累積至雙週窗口,以單一 batch 提案 PR 提交(內含逐條變更清單與各自理由),SHALL NOT 逐條開獨立 PR 分散審批。豁免項:安全修補與誠實鐵律違規修正得即時單獨提案。本條不改變 `design-canon-change-control` 的寫入授權邊界(AI 僅提案、正本採納由使用者裁決),只約束提案的批次節奏。

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 Badge Include the CSS canon in the batching rule

The existing design-canon-change-control spec defines docs/plans/ai-bim-governance.css as part of the hand-written canon, but this R3 scope only batches the two .dc.html files plus docs-plans-README.md. In that context, a non-emergency change to the CSS canon can still be opened as a separate PR and bypass the two-week batch limit; include the CSS path here and in the validation pathspec below.

Useful? React with 👍 / 👎.

Comment on lines +59 to +60
git log --since="14 days ago" --oneline origin/main -- `
"docs/plans/*.dc.html" docs/plans/docs-plans-README.md AGENTS.md CLAUDE.md

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 Badge Count canon batches by PR, not by commits

For a batch PR that touches these canon paths with more than one commit, this validation reports multiple git log --oneline entries even though the rule below is about PR count. I checked git log -h, whose usage is git log [<revision-range>] [[--] <path>...], so this command counts commits matching the pathspec rather than grouping by pull request; use PR metadata or explicitly require squash/single-commit batches, otherwise a compliant batch PR will be flagged as a batching failure.

Useful? React with 👍 / 👎.

Comment on lines +21 to +24
- [ ] 3.1 archive `c-m4-runtime-command-bridge`:確認 #309 已 merge、follow-up #307/#308 已有 issue 對照 → `npx openspec archive c-m4-runtime-command-bridge` → `npx openspec validate --all --strict` 綠
- [ ] 3.2 close-out `viewer-embed-a1-highlight`:task 6 follow-up 移 issue 追蹤 → archive → validate 綠
- [ ] 3.3 close-out `minio-trigger-lifecycle-backend`:task 5 follow-up(PR #257 系列)留 issue 對照 → archive → validate 綠
- [ ] 3.4 close-out `minio-watch-key-structure`:完成 P7 部署區 browser E2E(evidence 落 `docs/evidence/minio-watch-auto-intake/`),或使用者明文裁決記為 known gap(不是 pass)→ archive → validate 綠

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 Badge Move evidence before archiving the listed changes

When these close-out steps archive changes that already have or will create docs/evidence/* artifacts, the existing documentation-source-of-truth requirement says archived change evidence must live under openspec/changes/archive/<change-id>/evidence/. These tasks only say to archive and validate, so an agent following the checklist would leave evidence beside the archive in root docs/evidence/; add the evidence move or an explicit exception to each affected archive step.

Useful? React with 👍 / 👎.

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