Skip to content

fix(openspec): restore unfinished deferred changes - #404

Merged
monkey1sai merged 3 commits into
mainfrom
chore/openspec-incomplete-state-repair
Jul 24, 2026
Merged

monkey1sai merged 3 commits into
mainfrom
chore/openspec-incomplete-state-repair

Conversation

@monkey1sai

@monkey1sai monkey1sai commented Jul 24, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Restore four unfinished/deferred OpenSpec changes from the completed archive while keeping each frozen and non-owning.
  • Record requirement and module-friction boundaries so the restored changes cannot start parallel production coding without explicit reconciliation.
  • Add a lifecycle verifier and Agent Governance CI step that reject newly archived deferred or unchecked changes.
  • Disambiguate PR review OpenSpec validation with --type change when an active change and canonical spec share a name.
  • Raise the canonical marker-aware OpenSpec WIP limit from 2 to 6 without automatically thawing deferred changes.
  • Preserve the 44 legacy archive entries with stale unchecked bookkeeping as historical audit debt rather than rewriting archived history.

AI Coding Governance

Item Result
Change lane G
Behavior contract changed yes
Linked issue none; historical correction to merged PR #364 and archive commit a8c5337
Requirement source existing contract
CODEOWNERS / owner review requested; OpenSpec governance, docs/plans, workflow, and test policy changed
GitNexus evidence detect_changes risk_level=low; latest WIP-policy diff changed_count=1; affected execution processes=0
Browser E2E evidence not user-facing; no production frontend code changed
Agent workflow changed? yes; Agent Governance now runs verify-openspec-lifecycle.ps1; rollback removes that workflow step and verifier
Required checks expected CI / Agent Governance / PR Review Agent

Frontend Verification

Not user-facing. The design-authority HTML edits only correct historical OpenSpec path/status references; no route, component, golden, manifest, or runtime behavior changed.

Deploy Path Verification

No runtime, Docker, Kit, viewer, port, environment, conversion service, or deploy script changes.

Validation

  • scripts/tests/verify-openspec-lifecycle.ps1 -RepoRoot . -BaseRef origin/main -> passed (non_deferred=5, deferred=4, canonical limit=6).
  • scripts/tests/test-agent-governance-check.ps1 -> passed.
  • scripts/tests/test-pr-review-agent.ps1 -> passed; duplicate change/spec name regression covered.
  • npx --no-install openspec validate --all --strict -> 68 passed, 0 failed.
  • scripts/tests/verify-design-system-reference.ps1 -RepoRoot . -> passed (13 screens, 26 golden files).
  • scripts/tests/test-design-system-reference.ps1 -> passed.
  • PowerShell parser -> passed for both affected scripts.
  • git diff origin/main...HEAD --check -> passed.
  • Three-layer adversarial review: Terra xhigh code truth, Sol xhigh module friction, Sol xhigh governance adversary (Lena route unavailable); unanimous restore/freeze decision.

Known Risks

  • Marker-aware non-deferred WIP is 5 under the new limit of 6, leaving one slot. The four restored changes remain deferred/frozen and are not automatically thawed.
  • align-frontend-design-system-reference conflicts with migrate-console-to-hifi-design; a requirement-level successor crosswalk is mandatory before thaw.
  • rvt-ifc-usdc-lineage overlaps conversion, runtime lease, single-GPU session, cloud outbox, and frontend ownership; it must be sliced before implementation.
  • 44 historical archive directories still contain 696 unchecked boxes. They were classified as stale bookkeeping, successor-covered, or retired-service history and are not rewritten by this correction.

Restore four non-terminal changes from the completed archive, freeze overlapping ownership, and add a lifecycle gate that prevents deferred or unchecked changes from being newly archived.
Copilot AI review requested due to automatic review settings July 24, 2026 06:38
@coderabbitai

coderabbitai Bot commented Jul 24, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

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

Next review available in: 47 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8f5e3de1-09d5-46f6-a1ab-fc4cf2cb1ff1

📥 Commits

Reviewing files that changed from the base of the PR and between 50dc380 and 68c034d.

📒 Files selected for processing (80)
  • .github/workflows/agent-governance.yml
  • docs/contracts/structured-log-schema.md
  • docs/plans/AI-BIM 前後端設計文件.dc.html
  • docs/plans/NOW.md
  • openspec/AGENTS.md
  • openspec/changes/a4-semantic-search-model-qa/design.md
  • openspec/changes/a4-semantic-search-model-qa/proposal.md
  • openspec/changes/align-frontend-design-system-reference/design.md
  • openspec/changes/align-frontend-design-system-reference/proposal.md
  • openspec/changes/align-frontend-design-system-reference/specs/agent-operability-governance/spec.md
  • openspec/changes/align-frontend-design-system-reference/specs/demo-fast-mvp-orchestration/spec.md
  • openspec/changes/align-frontend-design-system-reference/specs/documentation-source-of-truth/spec.md
  • openspec/changes/align-frontend-design-system-reference/specs/unified-governance-console/spec.md
  • openspec/changes/align-frontend-design-system-reference/tasks.md
  • openspec/changes/cross-service-structured-log-baseline/.openspec.yaml
  • openspec/changes/cross-service-structured-log-baseline/design.md
  • openspec/changes/cross-service-structured-log-baseline/proposal.md
  • openspec/changes/cross-service-structured-log-baseline/specs/cross-service-structured-log-baseline/spec.md
  • openspec/changes/cross-service-structured-log-baseline/tasks.md
  • openspec/changes/migrate-console-to-hifi-design/design.md
  • openspec/changes/migrate-console-to-hifi-design/proposal.md
  • openspec/changes/migrate-console-to-hifi-design/specs/console-design-token-authority/spec.md
  • openspec/changes/minio-folderview-and-baseline-disclosure/proposal.md
  • openspec/changes/minio-folderview-and-baseline-disclosure/specs/minio-fileserver-source/spec.md
  • openspec/changes/minio-folderview-and-baseline-disclosure/specs/minio-watch-auto-intake/spec.md
  • openspec/changes/minio-folderview-and-baseline-disclosure/tasks.md
  • openspec/changes/rvt-ifc-usdc-lineage/.openspec.yaml
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/README.md
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/cloud-lineage-publication-mysql8-reference.sql
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/cloud-lineage-publication-request-v1.schema.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/cloud-lineage-publication-response-v1.schema.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-colon-publication-identity-component.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-cross-site-health-locator.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-csv-valid-exceeds-total.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-edge-site-authority-character.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-error-event-id.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-full-lineage-below-set-intersection.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-full-lineage-exceeds-ifc-usdc.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-full-lineage-exceeds-rvt-ifc.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-incomplete-ack.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-inconsistent-alignment-counts.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-inconsistent-ifc-only-count.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-inconsistent-ifc-usdc-counts.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-inconsistent-rvt-ifc-counts.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-leap-second-health-observed-at.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-lowercase-presigned-locator.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-mismatched-publication-identity.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-nonretryable-transient-error.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-offset-ack-stored-at.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-offset-health-observed-at.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-offset-occurred-at.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-offset-published-at.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-out-of-range-health-observed-at.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-presigned-health-locator.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-retryable-deterministic-error.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-submicrosecond-health-observed-at.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/invalid-tombstone-id-on-non-tombstone.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/valid-auth-error-without-event-id.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/valid-conflict-error.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/valid-created-ack.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/valid-lineage-result-health-changed.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/valid-lineage-result-published.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/valid-lineage-result-tombstoned.json
  • openspec/changes/rvt-ifc-usdc-lineage/contracts/examples/valid-transient-error.json
  • openspec/changes/rvt-ifc-usdc-lineage/design.md
  • openspec/changes/rvt-ifc-usdc-lineage/proposal.md
  • openspec/changes/rvt-ifc-usdc-lineage/specs/cloud-lineage-publication/spec.md
  • openspec/changes/rvt-ifc-usdc-lineage/specs/conversion-attempt-publication/spec.md
  • openspec/changes/rvt-ifc-usdc-lineage/specs/conversion-runtime-admission/spec.md
  • openspec/changes/rvt-ifc-usdc-lineage/specs/lineage-governance-console/spec.md
  • openspec/changes/rvt-ifc-usdc-lineage/specs/minio-model-version-bundle/spec.md
  • openspec/changes/rvt-ifc-usdc-lineage/specs/rvt-ifc-usdc-lineage/spec.md
  • openspec/changes/rvt-ifc-usdc-lineage/tasks.md
  • openspec/specs/governance-throughput-budget/spec.md
  • openspec/specs/minio-fileserver-source/spec.md
  • openspec/specs/minio-watch-auto-intake/spec.md
  • scripts/lib/pr-review-agent.ps1
  • scripts/tests/test-agent-governance-check.ps1
  • scripts/tests/test-pr-review-agent.ps1
  • scripts/tests/verify-openspec-lifecycle.ps1
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/openspec-incomplete-state-repair

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.

Pass --type change from the PR review agent so a restored change can coexist with its canonical spec without producing an ambiguous validation command.

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 is a historical/governance correction to the OpenSpec lifecycle. It restores four unfinished/deferred changes (rvt-ifc-usdc-lineage, cross-service-structured-log-baseline, align-frontend-design-system-reference, minio-folderview-and-baseline-disclosure) out of the completed archive and back into openspec/changes/, keeping each frozen (Status: deferred, non-canonical, non-owner). It also codifies the new rule in openspec/AGENTS.md, adds a verify-openspec-lifecycle.ps1 gate wired into the Agent Governance workflow, and updates the governance ledger/docs. The only executable logic is the new PowerShell verifier and the CI wiring; the bulk of the diff is restored spec/proposal/contract text and status-note edits.

Changes:

  • Restore 4 deferred changes with "historical correction" notes and update openspec/AGENTS.md done-criteria so deferred stays in changes/ and only fully-completed/successor-covered changes may be archived.
  • Add scripts/tests/verify-openspec-lifecycle.ps1 (rejects deferred markers/unchecked tasks in newly archived changes, enforces WIP-over-budget additions must be deferred) and run it in agent-governance.yml with -BaseRef base.sha (+ fetch-depth: 0).
  • Update cross-referencing status notes in related active changes, docs/plans/NOW.md, and the structured-log contract doc; add corresponding assertions in test-agent-governance-check.ps1.

Reviewed changes

Copilot reviewed 22 out of 80 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
scripts/tests/verify-openspec-lifecycle.ps1 New lifecycle gate; core reviewable logic (diff parsing, deferred/archive/WIP checks); lacks a paired unit test.
.github/workflows/agent-governance.yml Adds fetch-depth: 0 and a step running the verifier with the PR base SHA.
scripts/tests/test-agent-governance-check.ps1 Adds existence + content assertions for the verifier, workflow step, and AGENTS.md rules.
openspec/AGENTS.md Adds MUST rules keeping deferred changes out of archive and restricting archival to completed/successor-covered changes.
openspec/changes/rvt-ifc-usdc-lineage/** (proposal, specs, contracts, examples) Restored frozen change with historical-correction note and full contract/spec/example set.
openspec/changes/cross-service-structured-log-baseline/** Restored deferred change (proposal/design/spec/.openspec.yaml) for runtime-evidence-only closeout.
openspec/changes/align-frontend-design-system-reference/** Restored deferred change (proposal/design/tasks/specs) pending crosswalk with migrate-console.
openspec/changes/minio-folderview-and-baseline-disclosure/** Restored deferred change (proposal/tasks/specs) for closeout reconciliation.
openspec/changes/migrate-console-to-hifi-design/, a4-semantic-search-model-qa/ Status-note edits pointing at restored deferred changes instead of archive paths.
openspec/specs/minio-watch-auto-intake, minio-fileserver-source, governance-throughput-budget Updated deferred-change cross-references to openspec/changes/ locations.
docs/plans/NOW.md Ledger/DoD updates; new change-log row inserted out of date order.
docs/contracts/structured-log-schema.md Reworded capability-spec pointer for the restored deferred change.

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

Comment on lines +32 to +51
function Get-DiffTargetPaths {
param([Parameter(Mandatory = $true)][string] $Against)

# Compare the base commit directly with the current tree. This works both in
# CI (where the PR diff is committed) and during a local pre-commit check.
$lines = @(git diff --name-status -M $Against --)
if ($LASTEXITCODE -ne 0) {
throw "Unable to diff lifecycle state against $Against"
}

foreach ($line in $lines) {
if ([string]::IsNullOrWhiteSpace($line)) { continue }
$parts = @($line -split "`t")
if ($parts[0] -match '^R\d+$') {
if ($parts.Count -ge 3) { $parts[2] }
continue
}
if ($parts.Count -ge 2 -and $parts[0] -ne 'D') { $parts[1] }
}
}
Comment thread docs/plans/NOW.md
Comment on lines +185 to 186
| 2026-07-24 | 使用者改採嚴格 terminal rule:archive 僅限 completed/完整 successor;三個 7/22 deferred change 與 structured-log evidence 缺口 historical correction 恢復原 id,維持 frozen/non-owner。 |
| 2026-07-23 | #382/#383/#386 merged;#386 先收斂 scoped A4 visible caller compatibility,S4-B coordinator session search proxy、安全 transport、host-kit dual-namespace seam 與 cold-scan timeout regression 由 PR #384 交付(狀態以 GitHub machine truth 為準),S4-C/D 仍 pending。 |

@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

<span style="font-size:10.5px;color:#8aa0b8">部分 Prompt Board 寫 Vue 3 / Pinia / Element Plus — 一律忽略。design token 沿用 <span style="font-family:'JetBrains Mono',monospace;font-size:10px;color:#b7a9ff">docs/plans/ai-bim-governance.css --ab-*</span> 單一真相源(production 真實 import,不手抄色碼、不平行建第二套 theme);前身 edge-console.css --ec-* 已於 migrate-console-to-hifi-design 退役。</span>

P2 Badge Mark token migration as target, not completed

At this commit the production frontend still uses the existing edge-console.css/theme code, while the migration tasks remain open, so stating here that edge-console.css --ec-* has already been retired turns a future design target into completion evidence. Agents reading §08 before the actual CSS/TS migration lands will be pointed away from the still-live implementation instead of seeing an explicit implementation gap.

AGENTS.md reference: docs/AGENTS.md:L31-L33

ℹ️ 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 on lines +166 to +167
$existedAtBase = $baseProposal.Count -gt 0
if ($existedAtBase) { continue }

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 Fail thawed existing changes over the WIP limit

When a PR removes the Status: deferred marker from an existing openspec/changes/<id>/proposal.md while the repo is already over the non-deferred WIP budget, this check skips it just because the proposal file existed at the base ref. That means thawing align-frontend-design-system-reference or another restored deferred change would only emit the global warning and still pass CI, even though the lifecycle gate is meant to keep deferred changes non-owners until explicitly restarted under the budget. Compare the base proposal state rather than only path existence before continuing.

AGENTS.md reference: openspec/AGENTS.md:L29-L29

Useful? React with 👍 / 👎.


> **Status: deferred 2026-07-24**:不計入 active WIP;code、contracts 與 canonical capability spec 已落地,只有 tasks 10.1–10.5 的真 4-service runtime evidence 尚未完成。`deepen-ifc-ready-conversion-pipeline` closeout 前不得為了 smoke 修改其 pipeline implementation。

> **Historical correction 2026-07-24**:本 change 曾在缺少 runtime evidence 時被 archive;現依嚴格 terminal rule 恢復原 change id。它目前只允許 execution/evidence closeout:跑 IFC-ready → conversion → session → close、驗四個 service JSONL/trace/env redaction,並落 durable evidence。既有 delta 已同步至 `openspec/specs/cross-service-structured-log-baseline/`,**不得重新套用或回滾 canonical spec,也不得重做已落地 adapters/contracts**。

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 Remove already-applied spec deltas from restored closeout

This restored change is marked as evidence-only and says its delta has already been synced to openspec/specs/cross-service-structured-log-baseline/, but the PR also restores the original specs/cross-service-structured-log-baseline/spec.md under openspec/changes/ with ## ADDED Requirements for the same canonical requirements. Any later strict validation/archive of this change will treat those files as an active delta again instead of a runtime-evidence closeout, risking duplicate or invalid spec application; keep the evidence tasks/proposal but remove or neutralize the already-applied spec delta.

AGENTS.md reference: openspec/AGENTS.md:L40-L40

Useful? React with 👍 / 👎.

if ($parts.Count -ge 3) { $parts[2] }
continue
}
if ($parts.Count -ge 2 -and $parts[0] -ne 'D') { $parts[1] }

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 Preserve deleted active changes through archive checks

If a PR simply deletes openspec/changes/<id>/... instead of moving it through an archive/spec update, git diff --name-status reports only D records and this helper drops those paths entirely. That lets an active change disappear without the lifecycle gate checking for a completed archive, synced canonical spec, or deferred state; include deletions in the target set and fail when they are not paired with an expected archive closeout.

AGENTS.md reference: openspec/AGENTS.md:L28-L30

Useful? React with 👍 / 👎.

Apply the user-approved capacity change across the canonical throughput spec, NOW routing, lifecycle enforcement, and regression assertions without thawing deferred changes.
@monkey1sai
monkey1sai merged commit 30f1b68 into main Jul 24, 2026
16 checks passed
@monkey1sai
monkey1sai deleted the chore/openspec-incomplete-state-repair branch July 24, 2026 06:54

@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: 68c034d439

ℹ️ 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 on lines +26 to +27
IsDeferred = $content -match '(?m)^>\s*\*\*Status:\s*deferred\b'
HasCondition = $content -match '(重啟|解凍|thaw|closeout)'

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 deferred parsing to the proposal header

When a proposal merely quotes or mentions > **Status: deferred later in the body (or contains closeout somewhere unrelated), this scan marks the whole change as deferred, so it is omitted from WIP counting and duplicate-owner checks even though the repository rule requires the canonical deferred marker, reason, and restart condition at the top of proposal.md. Please inspect only the top status block before excluding a change from active ownership.

AGENTS.md reference: openspec/AGENTS.md:L29-L29

Useful? React with 👍 / 👎.

Comment on lines +26 to +27
IsDeferred = $content -match '(?m)^>\s*\*\*Status:\s*deferred\b'
HasCondition = $content -match '(重啟|解凍|thaw|closeout)'

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 deferred parsing to the proposal header

When a proposal merely quotes or mentions > **Status: deferred later in the body (or contains closeout somewhere unrelated), this scan marks the whole change as deferred, so it is omitted from WIP counting and duplicate-owner checks even though the repository rule requires the canonical deferred marker, reason, and restart condition at the top of proposal.md. Please inspect only the top status block before excluding a change from active ownership.

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