Skip to content

AGENTS.md 角色路由重构 + IR 挂靠产品仓(ADR-0095) - #387

Merged
randypanding merged 3 commits into
mainfrom
agents-role-routing-adr0095
Aug 26, 2026
Merged

AGENTS.md 角色路由重构 + IR 挂靠产品仓(ADR-0095)#387
randypanding merged 3 commits into
mainfrom
agents-role-routing-adr0095

Conversation

@randypanding

@randypanding randypanding commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Card: 无(治理面 C1 变更——PR 引用 ADR-0095,archive#32)

变更

1. 四角色指引(新增 docs/agent/)

  • ROLE-IR.md:开 IR——issue 即 IR,feature 意图开在对应产品仓(无需 PR),治理意图开 .github;编号 IR-NNNN 全局唯一;不代签
  • ROLE-SPEC.md:IR→spec——spec PR 流程:测试设计逐类讨论(testing.yaml 清单 adopt-or-reject:差分/属性/模糊/蜕变/变异…)+ holdout 测试设计(verifier-app 注册,引用仅 id@sha8)+ 红队攻击测试设置合理性;spec agent 不得直接实现
  • ROLE-IMPLEMENT.md:实现(PM 职责)——弱模型优先(自带子 agent / CNB 池 ghcb dispatch);fan-out=工具非流程(PM 裁量、append-only);边做边推 PR、全 CI/review 清零才合并;弱模型 3 次不过 PM 自己接手;holdout 失败=修实现不修试卷(quarantine/needs-human)
  • ROLE-ACCEPT.md:验收与 bug 修复——人类让处理 issues 走此路:卡/IR 完成度检查(未完成开 bug issue 修复关闭);bug/incident 复现三值判定(无法复现关闭/能复现修复→PR→合并→关闭)

2. AGENTS.md 重构(仍 60 行)

  • 入口协议块 v2:新增第 0 步「按意图定角色」(与 template-service canon 及 14 仓下发的块逐字节一致,drift §17)
  • 新增「角色路由」表;PM 优先/红线/硬规则同步 ADR-0095 口径(弱模型 3 次熔断、IR 开在产品仓)

3. IR 挂靠规则修改(废止「IR 一律在 .github 仓开」)

  • docs/NAVIGATION.md:§0/§1/§2 改为按意图路由 + IR 开在产品仓;锚点全保留
  • docs/pm/PLAYBOOK.md §2/§4/§5:开 IR=产品仓 issue;spec PR 增加测试设计逐类讨论与 holdout 必备条款;角色文件引用;锚点全保留
  • profile/README.md:意图→交付链路改为产品仓 IR + 角色路由入口

4. 机器面

  • scripts/ghcb accept 子命令支持 [repo] 参数(feature IR 在产品仓,缺省 .github 兼容治理 IR)
  • governance/REPOS.yaml:entry_protocol: true 扩展到全部 15 活跃仓(协议块 v2 全仓对账)

本地验证

make gates-pr 全绿(test-navigation 35/35,AGENTS.md 60 行,协议块标记完整,断链零)

合并顺序(强依赖)

  1. archive#32(ADR-0095 正本)必须最先合并——本 PR 与 14 个仓 PR 的 adr-required 检查依赖它
  2. template-service#42(canon v2)→ 其余 13 个仓 PR(协议块 v2 下发,任意顺序)
  3. 本 PR 最后合并——REPOS.yaml 标注生效后 drift §17 全仓逐字节对账(各仓 main 届时已全部携带 v2 块)

ADR-0095

Summary by CodeRabbit

  • 新功能

    • 升级入口协议,新增按意图选择角色的流程,覆盖意图、规格、实现与验收阶段。
    • 新增验收、实现、意图和规格角色指南,明确测试、审计、验收及异常处理要求。
    • ghcb accept 支持指定仓库,未指定时默认查询治理仓库。
    • 为多个已登记仓库启用统一入口协议。
  • 文档

    • 更新导航、PM 流程及 Feature/Bug 流程说明,补充 holdout 测试、红队审计和熔断接管规则。

- 新增 docs/agent/ROLE-{IR,SPEC,IMPLEMENT,ACCEPT}.md 四角色指引
- AGENTS.md:入口协议块 v2(第 0 步按意图定角色)+ 角色路由节(仍 60 行)
- NAVIGATION/PLAYBOOK/profile:feature IR 一律开在对应产品仓,废止 IR 挂 .github 规定;
  spec PR 测试设计逐类讨论+holdout 必备;弱模型 3 次熔断 PM 接手
- scripts/ghcb accept 支持 [repo] 参数;REPOS.yaml entry_protocol 扩展到全部活跃仓
Copilot AI lite review requested due to automatic review settings August 26, 2026 13:15

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f2c255af-3de6-458a-b097-bc581cb7471c

📥 Commits

Reviewing files that changed from the base of the PR and between 3bc1408 and abf7fe1.

📒 Files selected for processing (10)
  • AGENTS.md
  • docs/NAVIGATION.md
  • docs/agent/ROLE-ACCEPT.md
  • docs/agent/ROLE-IMPLEMENT.md
  • docs/agent/ROLE-IR.md
  • docs/agent/ROLE-SPEC.md
  • docs/pm/PLAYBOOK.md
  • governance/REPOS.yaml
  • profile/README.md
  • scripts/ghcb

📝 Walkthrough

Walkthrough

本次变更将入口协议升级为 v2,新增 IR、spec、实现和验收角色指南,更新产品仓与治理仓路由,登记多个仓库,并扩展 ghcb accept 的仓库参数支持。

Changes

协议与角色流程

Layer / File(s) Summary
入口协议与角色路由
AGENTS.md, docs/NAVIGATION.md
入口协议升级为 v2。文档新增 ADR-0095 角色路由、产品仓与治理仓分流、令牌范围和 conductor 状态规则。
IR 与 spec 角色契约
docs/agent/ROLE-IR.md, docs/agent/ROLE-SPEC.md, docs/pm/PLAYBOOK.md
新增 IR 开立与签署规则。spec PR 增加 suite、测试设计、holdout 和红队审计要求。
角色执行与验收流程
docs/agent/ROLE-IMPLEMENT.md, docs/agent/ROLE-ACCEPT.md, docs/pm/PLAYBOOK.md
新增弱模型和 CNB 执行、熔断接手、holdout 处置、PR 收口、验收及卡片完成规则。
仓库登记与交付说明
governance/REPOS.yaml, profile/README.md
多个仓库新增 entry_protocol: true。Feature、治理和 Bug 流程说明同步更新。
ghcb 验收仓库参数
scripts/ghcb
ghcb accept 支持可选 [repo] 参数。查询和验收报告使用指定仓库或默认 .github 仓库。
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agents-role-routing-adr0095

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

Co-authored-by: traeagent <traeagent@users.noreply.github.com>
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Route agent roles and anchor feature IRs in product repositories

✨ Enhancement 📝 Documentation ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Adds four role guides for IR, specification, implementation, and acceptance workflows.
• Routes feature IRs to product repositories under ADR-0095.
• Extends protocol drift coverage and repository-aware acceptance report generation.
Diagram

graph TD
  I["New intent"] --> R["Role router"] --> IR["IR intake"] --> P["Product repo"] --> S["Spec gate"] --> M["Implementation"] --> A["Acceptance tooling"]
  G["Governance registry"] --> P
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Split workspace artifacts from governance changes
  • ➕ Keeps ADR-0095 review focused on normative and executable governance changes
  • ➕ Avoids opaque ZIP snapshots and gitlinks obscuring the intended rollout
  • ➕ Makes rollback and ownership boundaries clearer
  • ➖ Requires a separate PR or cleanup commit
  • ➖ May delay preservation of editor-generated share artifacts
2. Generate repeated guidance from one policy schema
  • ➕ Reduces drift across AGENTS.md, NAVIGATION, PLAYBOOK, profile, and role guides
  • ➕ Makes future role-policy changes mechanically verifiable
  • ➖ Adds generator and schema maintenance overhead
  • ➖ Reduces the readability of directly edited governance documents

Recommendation: Keep the dedicated role guides, product-repository IR ownership, and repository-aware ghcb behavior; they form a coherent ADR-0095 implementation. Before merging, remove or split the unrelated generated HTML ZIPs and newly introduced repository gitlinks unless they are explicitly required by the rollout, while retaining byte-for-byte protocol drift checks for distributed AGENTS.md blocks.

Files changed (37) +355 / -47

Enhancement (1) +9 / -5
ghcbMake acceptance reports repository-aware +9/-5

Make acceptance reports repository-aware

• Extends 'ghcb accept' with an optional repository argument, defaulting to the governance repository for compatibility. Generated acceptance reports now reference and query the actual IR repository.

scripts/ghcb

Documentation (8) +317 / -42
AGENTS.mdIntroduce entry protocol v2 and role routing +25/-23

Introduce entry protocol v2 and role routing

• Adds intent-first routing to four agent roles and aligns PM, IR placement, retry, red-team, and acceptance rules with ADR-0095. The governance entry contract remains constrained to 60 lines.

AGENTS.md

NAVIGATION.mdRoute navigation by role and repository intent +23/-13

Route navigation by role and repository intent

• Makes role selection the first navigation step and moves feature IR creation into the corresponding product repository. It also documents spec test-design requirements and the current cross-repository conductor limitation.

docs/NAVIGATION.md

ROLE-ACCEPT.mdDefine acceptance and issue-handling role +55/-0

Define acceptance and issue-handling role

• Adds a complete guide for card and IR completion checks, evidence-backed acceptance, and tri-state bug or incident reproduction. It defines when to fix, close, or escalate issues.

docs/agent/ROLE-ACCEPT.md

ROLE-IMPLEMENT.mdDefine PM implementation role +69/-0

Define PM implementation role

• Documents weak-model-first implementation, optional fan-out, incremental PR delivery, three-attempt escalation, and holdout quarantine behavior. It keeps CI, review, and merge evidence as hard completion gates.

docs/agent/ROLE-IMPLEMENT.md

ROLE-IR.mdDefine product-repository IR intake role +48/-0

Define product-repository IR intake role

• Documents product-versus-governance IR routing, globally unique IR identifiers, required intent fields, owner-only signing, and append-only intent handling.

docs/agent/ROLE-IR.md

ROLE-SPEC.mdDefine gated specification role +71/-0

Define gated specification role

• Requires specification PRs to include suites, per-test-family adopt-or-reject decisions, sealed holdout references, and adversarial review. It explicitly separates specification authorship from implementation.

docs/agent/ROLE-SPEC.md

PLAYBOOK.mdAlign PM stages with ADR-0095 roles +24/-4

Align PM stages with ADR-0095 roles

• Updates IR, specification, implementation, and acceptance stages to reference the new role guides. It adds product-repository IR ownership, mandatory test and holdout design, retry escalation, and issue-handling rules.

docs/pm/PLAYBOOK.md

README.mdPublish the revised intent-to-delivery path +2/-2

Publish the revised intent-to-delivery path

• Updates the organization profile to direct feature IRs to product repositories and governance IRs to .github. It summarizes role routing, spec gates, weak-model retries, and bug handling.

profile/README.md

Other (28) +29 / -0
page.html.zipAdd packaged brand-page HTML snapshot +0/-0

Add packaged brand-page HTML snapshot

• Adds an opaque ZIP snapshot of AI_Web_School's brand page under Trae's generated share-package directory. The binary payload is not directly reviewable from the textual diff.

.trae-html-share-packages/repos/AI_Web_School/src/core/render/brand/page.html.zip

item.html.zipAdd packaged item-template snapshot +0/-0

Add packaged item-template snapshot

• Adds a generated ZIP containing the AI_Web_School item rendering template.

.trae-html-share-packages/repos/AI_Web_School/src/core/render/templates/item.html.zip

base.html.zipAdd packaged workbench base template +0/-0

Add packaged workbench base template

• Adds a generated ZIP snapshot for the workbench base HTML template.

.trae-html-share-packages/repos/AI_Web_School/src/workbench/templates/base.html.zip

error.html.zipAdd packaged workbench error template +0/-0

Add packaged workbench error template

• Adds a generated ZIP snapshot for the workbench error page.

.trae-html-share-packages/repos/AI_Web_School/src/workbench/templates/error.html.zip

issue.html.zipAdd packaged workbench issue template +0/-0

Add packaged workbench issue template

• Adds a generated ZIP snapshot for the workbench issue page.

.trae-html-share-packages/repos/AI_Web_School/src/workbench/templates/issue.html.zip

issue_fail.html.zipAdd packaged issue-failure template +0/-0

Add packaged issue-failure template

• Adds a generated ZIP snapshot for the failed issue workflow page.

.trae-html-share-packages/repos/AI_Web_School/src/workbench/templates/issue_fail.html.zip

issue_success.html.zipAdd packaged issue-success template +0/-0

Add packaged issue-success template

• Adds a generated ZIP snapshot for the successful issue workflow page.

.trae-html-share-packages/repos/AI_Web_School/src/workbench/templates/issue_success.html.zip

detail.html.zipAdd packaged item-detail template +0/-0

Add packaged item-detail template

• Adds a generated ZIP snapshot for the workbench item detail page.

.trae-html-share-packages/repos/AI_Web_School/src/workbench/templates/items/detail.html.zip

list.html.zipAdd packaged item-list template +0/-0

Add packaged item-list template

• Adds a generated ZIP snapshot for the workbench item listing page.

.trae-html-share-packages/repos/AI_Web_School/src/workbench/templates/items/list.html.zip

login.html.zipAdd packaged workbench login template +0/-0

Add packaged workbench login template

• Adds a generated ZIP snapshot for the workbench login page.

.trae-html-share-packages/repos/AI_Web_School/src/workbench/templates/login.html.zip

template_form.html.zipAdd packaged template-form snapshot +0/-0

Add packaged template-form snapshot

• Adds a generated ZIP snapshot for the workbench template form.

.trae-html-share-packages/repos/AI_Web_School/src/workbench/templates/template_form.html.zip

create-cloudbird-agent-app.html.zipRefresh packaged agent-app instructions +0/-0

Refresh packaged agent-app instructions

• Refreshes ZIP container metadata for the generated Cloudbird agent application setup page; the compressed content appears otherwise unchanged in the diff.

.trae-html-share-packages/scripts/create-cloudbird-agent-app.html.zip

create-verifier-app.html.zipRefresh packaged verifier-app instructions +0/-0

Refresh packaged verifier-app instructions

• Refreshes ZIP container metadata for the generated verifier application setup page; the compressed content appears otherwise unchanged in the diff.

.trae-html-share-packages/scripts/create-verifier-app.html.zip

REPOS.yamlEnable entry-protocol checks across active repositories +15/-0

Enable entry-protocol checks across active repositories

• Marks the remaining active repositories as participants in entry-protocol drift enforcement. This expands byte-for-byte v2 protocol reconciliation across the organization.

governance/REPOS.yaml

AI_Web_SchoolAdd AI_Web_School subproject pointer +1/-0

Add AI_Web_School subproject pointer

• Adds a gitlink pinning AI_Web_School to commit 6ba800aa.

repos/AI_Web_School

CI-WorkflowsAdd CI-Workflows subproject pointer +1/-0

Add CI-Workflows subproject pointer

• Adds a gitlink pinning CI-Workflows to commit dfc4de05.

repos/CI-Workflows

Media-MonitorAdd Media-Monitor subproject pointer +1/-0

Add Media-Monitor subproject pointer

• Adds a gitlink pinning Media-Monitor to commit 926a71ea.

repos/Media-Monitor

QW_Arena1Add QW_Arena1 subproject pointer +1/-0

Add QW_Arena1 subproject pointer

• Adds a gitlink pinning QW_Arena1 to commit 7ff0a4f2.

repos/QW_Arena1

Script_WriterAdd Script_Writer subproject pointer +1/-0

Add Script_Writer subproject pointer

• Adds a gitlink pinning Script_Writer to commit b5058646.

repos/Script_Writer

Shorts_DirectorAdd Shorts_Director subproject pointer +1/-0

Add Shorts_Director subproject pointer

• Adds a gitlink pinning Shorts_Director to commit 4f8e3173.

repos/Shorts_Director

Use-up-PlanAdd Use-up-Plan subproject pointer +1/-0

Add Use-up-Plan subproject pointer

• Adds a gitlink pinning Use-up-Plan to commit 782f2ef5.

repos/Use-up-Plan

Viral_RadarAdd Viral_Radar subproject pointer +1/-0

Add Viral_Radar subproject pointer

• Adds a gitlink pinning Viral_Radar to commit 14d2f432.

repos/Viral_Radar

arbiterAdd arbiter subproject pointer +1/-0

Add arbiter subproject pointer

• Adds a gitlink pinning arbiter to commit fafe4912.

repos/arbiter

archiveAdd archive subproject pointer +1/-0

Add archive subproject pointer

• Adds a gitlink pinning archive to commit 004dbe2c.

repos/archive

cnb-bridgeAdd cnb-bridge subproject pointer +1/-0

Add cnb-bridge subproject pointer

• Adds a gitlink pinning cnb-bridge to commit 1320b691.

repos/cnb-bridge

holdoutAdd holdout subproject pointer +1/-0

Add holdout subproject pointer

• Adds a gitlink pinning holdout to commit 55ba3b8c.

repos/holdout

mutualAdd mutual subproject pointer +1/-0

Add mutual subproject pointer

• Adds a gitlink pinning mutual to commit ee68905f.

repos/mutual

template-serviceAdd template-service subproject pointer +1/-0

Add template-service subproject pointer

• Adds a gitlink pinning template-service to commit 53f24661.

repos/template-service

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (8) 📘 Rule violations (2) 📜 Skill insights (0)

Grey Divider


Action required

1. Completed cards block T9 🐞 Bug ≡ Correctness
Description
ROLE-ACCEPT says child cards only need state:done, but T9 rejects every open child card
regardless of labels, while T8 only swaps the state label and never closes the issue. Following the
new role instructions therefore leaves normal completed cards open and makes IR acceptance fail
indefinitely.
Code

docs/agent/ROLE-ACCEPT.md[R19-20]

+   - IR:T9 判据=全部子卡 `state:done` + `specs/<IR-NNNN>/acceptance.md` 存在
+     (子卡=body 含 `父意图: #<n>` 的 issue)。
Relevance

●●● Strong

The documented T9 contract conflicts directly with the cited workflow behavior, making acceptance
impossible for ordinary open completed cards.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
T8's transition is only a label swap, and the generic transition executor performs no issue-close
operation. T9 then queries open cards and marks every child reference as pending without checking
for state:done, contradicting the new acceptance contract.

governance/transitions.yaml[99-116]
.github/workflows/conductor.yml[442-459]
.github/workflows/conductor.yml[512-516]
docs/agent/ROLE-ACCEPT.md[15-27]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
T9 treats completed but open child cards as pending, although the documented completion contract only requires `state:done` and T8 does not close cards.

## Issue Context
Either T9 must inspect child-card state labels, or T8 must close completed card issues and the role instructions must explicitly require that behavior.

## Fix Focus Areas
- docs/agent/ROLE-ACCEPT.md[15-27]
- governance/transitions.yaml[99-116]
- .github/workflows/conductor.yml[442-468]
- .github/workflows/conductor.yml[512-516]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. IR duplicate check is local 🐞 Bug ≡ Correctness
Description
The new global IR-number rule tells agents to use ghcb board, but that command queries only one
repository and only open issues. It therefore misses IDs in every other repository and all closed
historical IRs, allowing duplicate IR-NNNN identifiers despite the claimed global uniqueness.
Code

docs/agent/ROLE-IR.md[R23-25]

+1. **编号**:标题以 `IR-NNNN` 前缀开头,编号全局唯一——开立前用
+   `bash ghcb board`(各活跃仓轮查)核对已用编号,避免撞号。机器侧(conductor /
+   ghcb)从标题提取编号;无前缀时会退化为 issue 号兜底,勿依赖兜底。
Relevance

●●● Strong

A single-repository open-only board cannot establish global uniqueness across repositories and
closed history; the stated guarantee is incorrect.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The board implementation normalizes one optional repository argument and all its gh issue list
calls use that single repository with --state open; it never enumerates governance/REPOS.yaml or
closed issues.

scripts/ghcb[95-105]
docs/agent/ROLE-IR.md[21-25]
governance/REPOS.yaml[20-27]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`ghcb board` cannot prove that an IR number is globally unused because it searches one repository and open issues only.

## Issue Context
Global uniqueness requires an organization-wide, history-inclusive lookup or a centralized allocator/registry; documentation should not claim the current command provides this guarantee.

## Fix Focus Areas
- docs/agent/ROLE-IR.md[21-25]
- docs/pm/PLAYBOOK.md[48-51]
- scripts/ghcb[95-105]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Holdout registration path is broken 🐞 Bug ≡ Correctness
Description
The new mandatory holdout step directs agents to scripts/holdout-register.sh, but that script
resolves the governance root two levels above scripts/ and then searches another level up for
CI-Workflows. In a normal sibling checkout it cannot find holdout_registry.py and exits 2, so
spec authors cannot complete the required registration.
Code

docs/agent/ROLE-SPEC.md[R43-45]

+   封存验收场景条目,经验证者 APP 注册到 holdout 仓(注册入口
+   `scripts/holdout-register.sh`,由 verifier-app 令牌调用;**cloudbrid-agent 严禁
+   挂载 holdout**,DECISION-02 隔离不变量)。spec/卡/PR 对 holdout 只能引用
Relevance

●●● Strong

The mandatory registration command appears deterministically unable to locate its dependency in the
normal checkout layout, blocking the required workflow.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
SCRIPT_DIR/../.. resolves to the checkout's parent rather than the .github repository root;
appending /../CI-Workflows then moves one directory above the sibling checkout location. The
fallback repeats the same path, and missing holdout_registry.py is a hard exit.

scripts/holdout-register.sh[26-35]
scripts/holdout-register.sh[71-80]
docs/agent/ROLE-SPEC.md[42-46]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The mandatory holdout registration script computes both its repository root and the sibling CI-Workflows path incorrectly.

## Issue Context
From `<parent>/.github/scripts`, the repository root is `scripts/..`, and the sibling workflow repository is then `<repo-root>/../CI-Workflows`.

## Fix Focus Areas
- docs/agent/ROLE-SPEC.md[42-46]
- scripts/holdout-register.sh[26-35]
- scripts/holdout-register.sh[71-80]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

4. Direct gh bypasses App token 📘 Rule violation ⛨ Security
Description
The new acceptance guide tells resident agents to execute gh pr list directly, without obtaining a
single-repository, short-lived cloudbrid-agent token through scripts/ghcb. This can cause
acceptance checks to run under a user's PAT or other ambient gh credential.
Code

docs/agent/ROLE-ACCEPT.md[18]

+     全 gate 绿的载体);`gh pr list --state merged` / issue 评论可核对。
Relevance

●●● Strong

Security guidance conflicts with the repository's explicit App-token requirement; direct gh
authentication is a clear local documentation defect.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Rule 2778539 requires resident agents to use scripts/ghcb rather than direct PAT or ambient
credential authentication. The added acceptance instruction directly recommends `gh pr list --state
merged` without token acquisition through the approved wrapper.

Rule 2778539: Agent GitHub operations must use cloudbrid-agent app tokens with constrained scope
docs/agent/ROLE-ACCEPT.md[18-18]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The acceptance instructions invoke `gh pr list` with ambient authentication instead of a repository-scoped `cloudbrid-agent` token.

## Issue Context
PR Compliance ID 2778539 requires resident-agent GitHub operations to authenticate through `scripts/ghcb`, with single-repository scope and a maximum one-hour expiry.

## Fix Focus Areas
- docs/agent/ROLE-ACCEPT.md[18-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. Card: metadata is invalid 📘 Rule violation § Compliance
Description
The PR description contains Card: 无(治理面 C1 变更——PR 引用 ADR-0095,archive#32), whose value does not
match the required <owner>/<repo>#<n> format. Downstream tooling cannot parse this as the required
card metadata.
Code

repos/AI_Web_School[1]

+Subproject commit 6ba800aab61f7af1df5bc428e0332ab2701621c9
Relevance

●●● Strong

The supplied Card value visibly violates the required owner/repository issue format, so downstream
metadata parsing cannot succeed.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Rule 2825427 requires exactly one Card: line whose remainder matches <owner>/<repo>#<n>. The
supplied PR description instead uses 无(治理面 C1 变更——PR 引用 ADR-0095,archive#32), while the diff also
adds a subproject pointer outside the governance-only paths listed by the separate C1 exemption
rule.

Rule 2825427: Require PR description to include a card metadata line
repos/AI_Web_School[1-1]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The pull request's sole `Card:` line is not parseable because its value is explanatory text rather than `<owner>/<repo>#<n>`.

## Issue Context
PR Compliance ID 2825427 requires exactly one uncommented `Card: ` line with a valid GitHub owner, repository, and numeric issue identifier. Replace the current line with the actual work-item reference, for example `Card: Cloudbird-Software/archive#32`.

## Fix Focus Areas
- repos/AI_Web_School[1-1]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. Feature form targets governance 🐞 Bug ≡ Correctness
Description
The profile's Feature-flow link is hard-coded to Cloudbird-Software/.github/issues/new, so
clicking it creates the IR in the governance repository even though the same sentence requires
feature IRs in the corresponding product repository. This directly steers users into the location
ADR-0095 is intended to retire.
Code

profile/README.md[34]

+- **Feature 流(签署前置)**:feature IR 开在**对应产品仓**的 issue([intent 表单](https://github.com/Cloudbird-Software/.github/issues/new?template=intent.yml)经 org 级继承,各仓可用;ADR-0095)→ owner 签署 → spec(PM 自著或 spec-author 快速通道;spec PR 必带测试设计逐类讨论+holdout,红队审计,开 spec 的 agent 不得直接实现)→ 开卡 → 实现(弱模型优先:子 agent / CNB 池默认,3 次熔断 PM 接手)→ 验收。治理意图 IR 开 [.github 仓](https://github.com/Cloudbird-Software/.github/issues/new?template=intent.yml)。规格与波次计划见 [`specs/`](https://github.com/Cloudbird-Software/.github/tree/main/specs);按角色选路的指引见 [docs/agent/](https://github.com/Cloudbird-Software/.github/tree/main/docs/agent)(ADR-0095)。
Relevance

●●● Strong

The hard-coded governance URL directly contradicts the adjacent requirement to create feature IRs in
product repositories.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The added URL explicitly names the .github repository, while the canonical role instructions
require product/feature intents to be opened in the corresponding product repository and reserve
.github for governance intents.

profile/README.md[32-35]
docs/agent/ROLE-IR.md[11-19]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The Feature-flow hyperlink opens the `.github` repository's form instead of the selected product repository's form.

## Issue Context
A static organization-profile link cannot infer the intended product repository; route users through repository selection/instructions rather than a fixed `.github/issues/new` URL.

## Fix Focus Areas
- profile/README.md[32-35]
- docs/agent/ROLE-IR.md[11-19]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View medium (3)
7. Unregistered gitlinks reintroduce pointers 🐞 Bug ⚙ Maintainability
Description
The PR adds fourteen repos/* gitlinks without adding .gitmodules, so clones receive unusable
subproject placeholders that cannot be initialized or updated. These pointers also directly
contradict the repository registry's stated purpose of replacing submodules to avoid stale pointers
and recursive-clone problems.
Code

repos/AI_Web_School[1]

+Subproject commit 6ba800aab61f7af1df5bc428e0332ab2701621c9
Relevance

●●● Strong

Adding gitlink entries without submodule registration creates unusable pointers and contradicts the
repository registry's stated anti-pointer design.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Each added repos/* entry is a Subproject commit pointer, while the registry header explicitly
says it replaces the submodule approach because pointers become stale and require recursive clones.
No .gitmodules file is added by the PR or present in the branch.

repos/AI_Web_School[1-1]
repos/CI-Workflows[1-1]
repos/Media-Monitor[1-1]
governance/REPOS.yaml[4-10]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The PR contains unregistered gitlinks for external repositories even though this repository intentionally uses `REPOS.yaml` instead of submodules.

## Issue Context
Remove all `repos/*` gitlinks and any associated workspace/share artifacts unless a separately reviewed submodule architecture, including `.gitmodules`, is intentionally introduced.

## Fix Focus Areas
- repos/AI_Web_School[1-1]
- repos/CI-Workflows[1-1]
- repos/Media-Monitor[1-1]
- governance/REPOS.yaml[4-10]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


8. ghcb dispatch [repo] breaks with options 🐞 Bug ≡ Correctness
Description
ROLE-IMPLEMENT.md documents bash ghcb dispatch <卡#> [repo] [--tier light|std] [--account <alias>]
implying [repo] can be omitted while options are supplied, but scripts/ghcb unconditionally consumes
argv[3] as REPO_ARG via REPO_ARG="${3:-$(origin_repo)}"; shift 3. Calling `ghcb dispatch 123
--tier std` (omitting repo) makes REPO_ARG="--tier", producing a malformed repo
Cloudbird-Software/--tier and silently dropping the intended std tier back to default light.
Code

docs/agent/ROLE-IMPLEMENT.md[17]

+   - 派单:`bash ghcb dispatch <卡#> [repo] [--tier light|std] [--account <alias>]`
Relevance

●●● Strong

The documented optional positional argument is incompatible with the existing parser; omitting repo
before flags deterministically misparses arguments.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The new doc line documents an optional [repo] positional before flag options, but the unchanged ghcb
dispatch parser (scripts/ghcb:109-110) treats the third positional arg as REPO_ARG regardless of
whether it looks like a flag, before any flag-parsing loop begins.

scripts/ghcb[109-118]
docs/agent/ROLE-IMPLEMENT.md[17]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Docs (docs/agent/ROLE-IMPLEMENT.md line 17) show `ghcb dispatch <卡#> [repo] [--tier ...] [--account ...]` implying repo is optional even when flags follow, but scripts/ghcb's `dispatch` subcommand blindly assigns argv[3] to REPO_ARG and shifts 3 positional args before parsing flags, so `ghcb dispatch 123 --tier std` treats `--tier` as the repo name and drops `std`.

## Issue Context
The PR changed dispatch's sibling `accept` subcommand to add an optional trailing `[repo]` argument (ADR-0095) and updated ROLE-IMPLEMENT.md to document the same optional-repo pattern for `dispatch`, but did not update the `dispatch` argument-parsing logic to handle a flag appearing in position 3.

## Fix Focus Areas
- scripts/ghcb[109-118]
- docs/agent/ROLE-IMPLEMENT.md[17]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


9. IR routing docs overclaim product-repo automation 🐞 Bug ≡ Correctness
Description
ROLE-IR.md and ROLE-ACCEPT.md now direct feature IR creation and ghcb accept to product
repositories and describe their lifecycle as using the same mechanically enforced owner-label and
conductor T7/T8/T9 state machine as governance IRs, but conductor's route job runs only for
Cloudbird-Software/.github, so product-repository events never reach it. Consequently, state
transitions require manual owner labeling and T9 acceptance is not enforced on the primary
feature-IR path introduced by this PR.
Code

docs/agent/ROLE-IR.md[R13-19]

+- **产品/feature 意图** → 开在**对应的产品仓**(如 `Cloudbird-Software/<产品仓>`)。
+  issue 模板 `intent.yml` 经 org 级 `.github/ISSUE_TEMPLATE` 自动被 org 内全部仓继承——
+  在产品仓 New issue 即可选用;若模板/`type:intent` 标签在本仓缺失,属治理漂移,
+  报 owner(apply.sh §7 同步治理标签),不要手工绕过。
+- **治理意图**(改治理面:governance/ 政策、门禁、流程本身)→ 开在 `.github` 治理仓。
+- 历史先例:`Viral_Radar#1`(产品仓 IR)。废止的旧规定「IR 一律在 .github 仓开」
+  已由 ADR-0095 移除——不要把 feature IR 开到治理仓。
Relevance

●●● Strong

The documentation claims a product-repository lifecycle while explicitly identified automation is
restricted to .github; this is a substantive correctness mismatch.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The new CLI reads and emits the IR from IR_REPO, and the role documentation treats
product-repository IRs as participating in the automated state machine, with ROLE-IR.md only
caveating manual owner labeling as a stopgap. However, conductor.yml restricts all event-driven
routing to the .github repository; moreover, its T9 implementation reads the event repository
while checking the locally checked-out .github/specs tree, so merely forwarding product-repository
events without checking out the target repository would still not make T9 work correctly.

.github/workflows/conductor.yml[33-36]
docs/agent/ROLE-IR.md[34-36]
scripts/ghcb[127-142]
.github/workflows/conductor.yml[2-35]
.github/workflows/conductor.yml[442-468]
docs/NAVIGATION.md[60-64]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description

Feature IRs are now opened and accepted in product repositories, but the conductor workflow implementing owner-label transitions and T7/T8/T9 predicates only runs when `github.repository == 'Cloudbird-Software/.github'`. Ensure product-repository IR events execute the promised state machine and T9 acceptance predicate rather than requiring manual state changes.

## Issue Context

ADR-0095, the new role documentation, and the `ghcb accept` repository argument move the primary feature-IR path from `.github` into product repositories while describing the lifecycle as mechanically enforced. The existing workflow remains repository-local, and its T9 implementation checks the locally checked-out `.github/specs` tree even though it reads the event repository, so forwarding events alone without checking out the target repository is insufficient.

## Fix Focus Areas

- docs/agent/ROLE-IR.md[13-19]
- docs/agent/ROLE-IR.md[34-36]
- docs/agent/ROLE-ACCEPT.md[16-27]
- scripts/ghcb[127-142]
- .github/workflows/conductor.yml[2-35]
- .github/workflows/conductor.yml[442-468]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Informational

10. Unverified org-wide issue template inheritance claim 🐞 Bug ⚙ Maintainability
Description
The new ROLE-IR.md and ROLE-ACCEPT.md assert that intent.yml and bug.yml templates are
automatically inherited by every organization repository ("org 级继承"/"org-inherited"), but the repo
only defines these templates under .github/ISSUE_TEMPLATE/ in this special .github repo and
scripts/new-repo-init.sh (the only repo-bootstrap script present) never copies or wires issue
templates into new repos. If GitHub's community-health-file inheritance does not apply here (e.g.,
templates using .github/ISSUE_TEMPLATE/*.yml community defaults do get inherited org-wide only
when the special-named .github repo hosts them at that exact path, which happens to be satisfied),
this is likely fine, but the claim is asserted without evidence and no fallback/verification step is
given if a repo lacks the label/template (only "报 owner" is mentioned as remediation).
Code

docs/agent/ROLE-IR.md[R14-16]

+  issue 模板 `intent.yml` 经 org 级 `.github/ISSUE_TEMPLATE` 自动被 org 内全部仓继承——
+  在产品仓 New issue 即可选用;若模板/`type:intent` 标签在本仓缺失,属治理漂移,
+  报 owner(apply.sh §7 同步治理标签),不要手工绕过。
Relevance

●● Moderate

The inheritance claim is externally plausible and the text provides drift remediation, but lacks
repository-local verification or fallback.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
No script or workflow in the diff or repo synchronizes issue templates to product repos; the claim
rests solely on GitHub's org .github repo community-file inheritance feature, which is plausible but
unverified against the actual product repos (external, not in this checkout).

docs/agent/ROLE-IR.md[14-16]
scripts/new-repo-init.sh[1-68]


Grey Divider

Context sources
✅ Compliance rules (platform): 20 rules
Review mode: 🧠 Deep: 该 PR 同时重构全局入口协议与角色治理文档、修改跨仓 REPOS 配置和 ghcb 行为,并包含大量独立编辑点及子模块指针变化;跨路径一致性、脚本参数兼容与漂移规则存在多个易漏缺陷,冗余审查有明显价值。
ⓘ  9 issues published inline · 10 in summary

Grey Divider

Tip of the day
💡 Did you know, you can start a comment with 'qodo' or '@qodo' to chat about any finding

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread docs/agent/ROLE-ACCEPT.md
1. **盘点**:`bash ghcb board`(逐活跃仓)列出全部 `state:*` 的卡与 `type:intent`
的 IR——不只看 ready;对每张卡 / 每条 IR 判定「是否真的完成」:
- 卡:T8 判据=存在 body 含 `Card: <repo>#<n>` 且**已合并**的 PR(合并事实即
全 gate 绿的载体);`gh pr list --state merged` / issue 评论可核对。

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

1. Direct gh bypasses app token 📘 Rule violation ⛨ Security

The new acceptance guide tells resident agents to execute gh pr list directly, without obtaining a
single-repository, short-lived cloudbrid-agent token through scripts/ghcb. This can cause
acceptance checks to run under a user's PAT or other ambient gh credential.
Agent Prompt
## Issue description
The acceptance instructions invoke `gh pr list` with ambient authentication instead of a repository-scoped `cloudbrid-agent` token.

## Issue Context
PR Compliance ID 2778539 requires resident-agent GitHub operations to authenticate through `scripts/ghcb`, with single-repository scope and a maximum one-hour expiry.

## Fix Focus Areas
- docs/agent/ROLE-ACCEPT.md[18-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread docs/agent/ROLE-ACCEPT.md
Comment on lines +19 to +20
- IR:T9 判据=全部子卡 `state:done` + `specs/<IR-NNNN>/acceptance.md` 存在
(子卡=body 含 `父意图: #<n>` 的 issue)。

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

3. Completed cards block t9 🐞 Bug ≡ Correctness

ROLE-ACCEPT says child cards only need state:done, but T9 rejects every open child card
regardless of labels, while T8 only swaps the state label and never closes the issue. Following the
new role instructions therefore leaves normal completed cards open and makes IR acceptance fail
indefinitely.
Agent Prompt
## Issue description
T9 treats completed but open child cards as pending, although the documented completion contract only requires `state:done` and T8 does not close cards.

## Issue Context
Either T9 must inspect child-card state labels, or T8 must close completed card issues and the role instructions must explicitly require that behavior.

## Fix Focus Areas
- docs/agent/ROLE-ACCEPT.md[15-27]
- governance/transitions.yaml[99-116]
- .github/workflows/conductor.yml[442-468]
- .github/workflows/conductor.yml[512-516]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread docs/agent/ROLE-IR.md
Comment on lines +23 to +25
1. **编号**:标题以 `IR-NNNN` 前缀开头,编号全局唯一——开立前用
`bash ghcb board`(各活跃仓轮查)核对已用编号,避免撞号。机器侧(conductor /
ghcb)从标题提取编号;无前缀时会退化为 issue 号兜底,勿依赖兜底。

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

4. Ir duplicate check is local 🐞 Bug ≡ Correctness

The new global IR-number rule tells agents to use ghcb board, but that command queries only one
repository and only open issues. It therefore misses IDs in every other repository and all closed
historical IRs, allowing duplicate IR-NNNN identifiers despite the claimed global uniqueness.
Agent Prompt
## Issue description
`ghcb board` cannot prove that an IR number is globally unused because it searches one repository and open issues only.

## Issue Context
Global uniqueness requires an organization-wide, history-inclusive lookup or a centralized allocator/registry; documentation should not claim the current command provides this guarantee.

## Fix Focus Areas
- docs/agent/ROLE-IR.md[21-25]
- docs/pm/PLAYBOOK.md[48-51]
- scripts/ghcb[95-105]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread docs/agent/ROLE-SPEC.md
Comment on lines +43 to +45
封存验收场景条目,经验证者 APP 注册到 holdout 仓(注册入口
`scripts/holdout-register.sh`,由 verifier-app 令牌调用;**cloudbrid-agent 严禁
挂载 holdout**,DECISION-02 隔离不变量)。spec/卡/PR 对 holdout 只能引用

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

5. Holdout registration path is broken 🐞 Bug ≡ Correctness

The new mandatory holdout step directs agents to scripts/holdout-register.sh, but that script
resolves the governance root two levels above scripts/ and then searches another level up for
CI-Workflows. In a normal sibling checkout it cannot find holdout_registry.py and exits 2, so
spec authors cannot complete the required registration.
Agent Prompt
## Issue description
The mandatory holdout registration script computes both its repository root and the sibling CI-Workflows path incorrectly.

## Issue Context
From `<parent>/.github/scripts`, the repository root is `scripts/..`, and the sibling workflow repository is then `<repo-root>/../CI-Workflows`.

## Fix Focus Areas
- docs/agent/ROLE-SPEC.md[42-46]
- scripts/holdout-register.sh[26-35]
- scripts/holdout-register.sh[71-80]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread profile/README.md

- **Feature 流(签署前置)**:[intent 表单](https://github.com/Cloudbird-Software/.github/issues/new?template=intent.yml)提交 IR → owner 签署 → spec(PM 自著或 spec-author 快速通道)→ 红队审计 → 开卡 → 实现(CNB 默认)→ 验收。规格与波次计划见 [`specs/`](https://github.com/Cloudbird-Software/.github/tree/main/specs)。
- **Bug 流(复现前置,签署点后移——ADR-0064)**:[bug 表单](https://github.com/Cloudbird-Software/.github/issues/new?template=bug.yml)提交即机器复现,三值判定(reproduced / cannot-reproduce / inconclusive),reproduced 后修复合入自动回写状态。
- **Feature 流(签署前置)**:feature IR 开在**对应产品仓**的 issue([intent 表单](https://github.com/Cloudbird-Software/.github/issues/new?template=intent.yml)经 org 级继承,各仓可用;ADR-0095)→ owner 签署 → spec(PM 自著或 spec-author 快速通道;spec PR 必带测试设计逐类讨论+holdout,红队审计,开 spec 的 agent 不得直接实现)→ 开卡 → 实现(弱模型优先:子 agent / CNB 池默认,3 次熔断 PM 接手)→ 验收。治理意图 IR 开 [.github 仓](https://github.com/Cloudbird-Software/.github/issues/new?template=intent.yml)。规格与波次计划见 [`specs/`](https://github.com/Cloudbird-Software/.github/tree/main/specs);按角色选路的指引见 [docs/agent/](https://github.com/Cloudbird-Software/.github/tree/main/docs/agent)(ADR-0095)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

6. Feature form targets governance 🐞 Bug ≡ Correctness

The profile's Feature-flow link is hard-coded to Cloudbird-Software/.github/issues/new, so
clicking it creates the IR in the governance repository even though the same sentence requires
feature IRs in the corresponding product repository. This directly steers users into the location
ADR-0095 is intended to retire.
Agent Prompt
## Issue description
The Feature-flow hyperlink opens the `.github` repository's form instead of the selected product repository's form.

## Issue Context
A static organization-profile link cannot infer the intended product repository; route users through repository selection/instructions rather than a fixed `.github/issues/new` URL.

## Fix Focus Areas
- profile/README.md[32-35]
- docs/agent/ROLE-IR.md[11-19]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


1. **自带子 agent**:你自己的子 agent / 任务拆分工具(若有)。
2. **CNB 免费算力池**(组织默认实现引擎):
- 派单:`bash ghcb dispatch <卡#> [repo] [--tier light|std] [--account <alias>]`

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

8. Ghcb dispatch [repo] breaks with options 🐞 Bug ≡ Correctness

ROLE-IMPLEMENT.md documents bash ghcb dispatch <卡#> [repo] [--tier light|std] [--account <alias>]
implying [repo] can be omitted while options are supplied, but scripts/ghcb unconditionally consumes
argv[3] as REPO_ARG via REPO_ARG="${3:-$(origin_repo)}"; shift 3. Calling `ghcb dispatch 123
--tier std` (omitting repo) makes REPO_ARG="--tier", producing a malformed repo
Cloudbird-Software/--tier and silently dropping the intended std tier back to default light.
Agent Prompt
## Issue description
Docs (docs/agent/ROLE-IMPLEMENT.md line 17) show `ghcb dispatch <卡#> [repo] [--tier ...] [--account ...]` implying repo is optional even when flags follow, but scripts/ghcb's `dispatch` subcommand blindly assigns argv[3] to REPO_ARG and shifts 3 positional args before parsing flags, so `ghcb dispatch 123 --tier std` treats `--tier` as the repo name and drops `std`.

## Issue Context
The PR changed dispatch's sibling `accept` subcommand to add an optional trailing `[repo]` argument (ADR-0095) and updated ROLE-IMPLEMENT.md to document the same optional-repo pattern for `dispatch`, but did not update the `dispatch` argument-parsing logic to handle a flag appearing in position 3.

## Fix Focus Areas
- scripts/ghcb[109-118]
- docs/agent/ROLE-IMPLEMENT.md[17]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread docs/agent/ROLE-IR.md
Comment on lines +13 to +19
- **产品/feature 意图** → 开在**对应的产品仓**(如 `Cloudbird-Software/<产品仓>`)。
issue 模板 `intent.yml` 经 org 级 `.github/ISSUE_TEMPLATE` 自动被 org 内全部仓继承——
在产品仓 New issue 即可选用;若模板/`type:intent` 标签在本仓缺失,属治理漂移,
报 owner(apply.sh §7 同步治理标签),不要手工绕过。
- **治理意图**(改治理面:governance/ 政策、门禁、流程本身)→ 开在 `.github` 治理仓。
- 历史先例:`Viral_Radar#1`(产品仓 IR)。废止的旧规定「IR 一律在 .github 仓开」
已由 ADR-0095 移除——不要把 feature IR 开到治理仓。

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

9. Ir routing docs overclaim product-repo automation 🐞 Bug ≡ Correctness

ROLE-IR.md and ROLE-ACCEPT.md now direct feature IR creation and ghcb accept to product
repositories and describe their lifecycle as using the same mechanically enforced owner-label and
conductor T7/T8/T9 state machine as governance IRs, but conductor's route job runs only for
Cloudbird-Software/.github, so product-repository events never reach it. Consequently, state
transitions require manual owner labeling and T9 acceptance is not enforced on the primary
feature-IR path introduced by this PR.
Agent Prompt
## Issue description

Feature IRs are now opened and accepted in product repositories, but the conductor workflow implementing owner-label transitions and T7/T8/T9 predicates only runs when `github.repository == 'Cloudbird-Software/.github'`. Ensure product-repository IR events execute the promised state machine and T9 acceptance predicate rather than requiring manual state changes.

## Issue Context

ADR-0095, the new role documentation, and the `ghcb accept` repository argument move the primary feature-IR path from `.github` into product repositories while describing the lifecycle as mechanically enforced. The existing workflow remains repository-local, and its T9 implementation checks the locally checked-out `.github/specs` tree even though it reads the event repository, so forwarding events alone without checking out the target repository is insufficient.

## Fix Focus Areas

- docs/agent/ROLE-IR.md[13-19]
- docs/agent/ROLE-IR.md[34-36]
- docs/agent/ROLE-ACCEPT.md[16-27]
- scripts/ghcb[127-142]
- .github/workflows/conductor.yml[2-35]
- .github/workflows/conductor.yml[442-468]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants