@pm_zhousl/xinyun-ai-init 1.9.0 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +1 -1
  2. package/init/xinyun-ai-init/README.md +26 -4
  3. package/init/xinyun-ai-init/rules/directory-self-completion.md +12 -0
  4. package/init/xinyun-ai-init/rules/init-rules.md +13 -0
  5. package/init/xinyun-ai-init/rules/session-workbench.md +13 -1
  6. package/init/xinyun-ai-init/rules/upgrade-rules.md +13 -0
  7. package/init/xinyun-ai-init/templates/AGENTS.template.md +15 -0
  8. package/init/xinyun-ai-init/templates/README.template.md +4 -0
  9. package/init/xinyun-ai-init/templates/control-plane-index.template.json +24 -0
  10. package/init/xinyun-ai-init/templates/core-rules.template.md +18 -0
  11. package/init/xinyun-ai-init/templates/current-task.template.md +11 -1
  12. package/init/xinyun-ai-init/templates/database-authorization.template.json +2 -2
  13. package/init/xinyun-ai-init/templates/host-capabilities.template.json +33 -0
  14. package/init/xinyun-ai-init/templates/init-result.template.json +12 -1
  15. package/init/xinyun-ai-init/templates/managed-baseline.template.json +2 -2
  16. package/init/xinyun-ai-init/templates/manifest.template.json +30 -4
  17. package/init/xinyun-ai-init/templates/onboarding-report.template.json +25 -0
  18. package/init/xinyun-ai-init/templates/preflight-report.template.json +30 -0
  19. package/init/xinyun-ai-init/templates/project-check.template.md +13 -0
  20. package/init/xinyun-ai-init/templates/project-guide.template.md +9 -1
  21. package/init/xinyun-ai-init/templates/project-index.template.json +16 -1
  22. package/init/xinyun-ai-init/templates/project-status.template.json +45 -0
  23. package/init/xinyun-ai-init/templates/requirement-packet.template.json +1 -1
  24. package/init/xinyun-ai-init/templates/role-session-binding.template.json +2 -2
  25. package/init/xinyun-ai-init/templates/takeover-baseline.template.json +17 -0
  26. package/init/xinyun-ai-init/templates/technical-impact-packet.template.json +1 -1
  27. package/init/xinyun-ai-init/templates/technical-landscape.template.json +1 -1
  28. package/init/xinyun-ai-init/version.json +1 -1
  29. package/package.json +2 -1
  30. package/scripts/collect-v1.10-evidence.js +159 -0
  31. package/scripts/verify-init-package.js +156 -23
  32. package/scripts/verify-rules-package.js +116 -11
  33. package/test-scenarios/README.md +3 -3
  34. package/test-scenarios/fixtures/v1.10.0-takeover-gate-fixture/README.md +23 -0
  35. package/test-scenarios/fixtures/v1.10.0-takeover-gate-fixture/after/project-status.json +7 -0
  36. package/test-scenarios/fixtures/v1.10.0-takeover-gate-fixture/before/project-status.json +7 -0
  37. package/test-scenarios/review-template.md +1 -1
  38. package/test-scenarios/scenarios.md +4 -2
  39. package/test-scenarios/v1.10.0-behavior-evidence.json +31 -0
  40. package/test-scenarios/v1.10.0-scenarios.md +96 -0
package/README.md CHANGED
@@ -24,7 +24,7 @@ npx --yes @pm_zhousl/xinyun-ai-init@latest --force
24
24
  npm run verify:init
25
25
  npm run verify:rules
26
26
  npm run verify:rules -- --json
27
- npm run verify:rules -- --tarball ./pm_zhousl-xinyun-ai-init-1.8.0.tgz
27
+ npm run verify:rules -- --tarball ./pm_zhousl-xinyun-ai-init-1.10.1.tgz
28
28
  ```
29
29
 
30
30
  `verify:rules` 为只读规则包一致性检查,不自动修复、不安装依赖、不修改 Git 或业务代码。
@@ -2,7 +2,7 @@
2
2
 
3
3
  本目录是“欣芸技术开发 Agent 流”的初始化包,负责把完整 AI 执行要求下发到目标项目。
4
4
 
5
- 当前规则版本:`1.9.0`。
5
+ 当前规则版本:`1.10.1`。
6
6
 
7
7
  ## Codex 一句话入口
8
8
 
@@ -19,7 +19,7 @@ npx --yes @pm_zhousl/xinyun-ai-init@latest --force
19
19
  ```
20
20
 
21
21
  v1.7.2 fixed task contract keys: `taskKind=initialization-main`, `taskKind=initialization-record`, `taskKind=role-execution`.
22
- v1.7.3 fixed Codex role session creation compatibility fields: `provider=codex`, `sessionStatus=pending/creating/created/onboarding/ready/blocked/failed/closed`, and legacy creation index `{taskId,roleId,provider,targetVersion}`. v1.9.0 project-isolated reuse is authoritative.
22
+ v1.7.3 fixed Codex role session creation compatibility fields: `provider=codex`, `sessionStatus=pending/creating/created/onboarding/ready/blocked/failed/closed`, and legacy creation index `{taskId,roleId,provider,targetVersion}`. v1.10.x takeover gates are authoritative for project readiness.
23
23
  v1.7.3 Codex role session orchestration is host-level only; CLI still only creates `xinyun-ai-init/`.
24
24
 
25
25
  执行上面的命令后,会生成 `xinyun-ai-init/`。随后让 AI 读取 `xinyun-ai-init/README.md` 即可。
@@ -424,7 +424,7 @@ AI 读取本 README 并进入初始化或升级流程后,不论项目大小、
424
424
  - 任务 `task.status`:`pending`、`executing`、`partial`、`blocked`、`completed`、`cancelled`。
425
425
  - 步骤 `step.status`:`pending`、`running`、`completed`、`skipped`、`failed`。
426
426
  - 升级 `upgrade.status`:`not-started`、`analyzing`、`ready`、`applied`、`conflict-pending`、`partial`、`blocked`、`failed`。
427
- - 能力 `capability.status`:`available`、`available-with-dependency`、`unavailable`、`not-checked`、`unknown`。
427
+ - 能力 `capability.status`:`available`、`available-with-dependency`、`unavailable`、`permission-denied`、`unknown`、`not-checked`、`not-verified`、`failed`。
428
428
  - 结果 `result.status` 必须使用任务状态的同名值。
429
429
  - 锁 `lock.status`:`active`、`waiting`、`blocked`、`unknown`、`released`。
430
430
 
@@ -511,7 +511,7 @@ AI 读取本 README 并进入初始化或升级流程后,不论项目大小、
511
511
  - capabilityId:唯一能力 ID
512
512
  - name:能力名称
513
513
  - detectionMethod:检测方式或命令名称,不写敏感参数
514
- - status:available / available-with-dependency / unavailable / not-checked / unknown
514
+ - status:available / available-with-dependency / unavailable / permission-denied / unknown / not-checked / not-verified / failed
515
515
  - evidence:路径、版本、命令返回摘要或项目封装位置
516
516
  - dependencyStatus:满足 / 缺失 / 不适用 / 未知
517
517
  - fallbackPlan:降级方案
@@ -1115,6 +1115,28 @@ Skill 位于 `xinyun-ai/skills/`。分配文件必须使用 `assignmentStatus`
1115
1115
 
1116
1116
  临时程序员会话必须有已确认的 `planId`、`userConfirmationId`、单一 `taskId`、规范化 `changeDomain`、允许路径和真实 `sessionId`。最多同时占用 3 个运行额度;`occupancyStatus=unknown` 不得自动释放,人工释放必须有完整 `releaseAudit`。跨文件控制面必须使用 `coordinationTransactionId`。详情见 `rules/coordination.md`、`rules/skills.md`、`rules/frontend-audit.md` 和 `rules/temporary-sessions.md`。
1117
1117
 
1118
+ ## v1.10 项目 AI 接管初始化门禁
1119
+
1120
+ v1.10 的目标是接管整个项目的 AI 代码开发。接管 preflight 和 onboarding 未完成前,AI 只能读取项目、创建或补齐 `xinyun-ai/` 控制面,不得进入业务代码开发。
1121
+ `projectStatus=not-started/initializing/partial/blocked/ready`;`executionEligible=true` 只有全部接管门禁通过后才允许写入。
1122
+
1123
+ 必须创建并维护:
1124
+
1125
+ - `xinyun-ai/project-status.json`
1126
+ - `xinyun-ai/preflight-report.json`
1127
+ - `xinyun-ai/onboarding-report.json`
1128
+ - `xinyun-ai/host-capabilities.json`
1129
+ - `xinyun-ai/index/takeover-baseline.json`
1130
+ - `xinyun-ai/index/control-plane-index.json`
1131
+
1132
+ preflight 必须检查宿主真实会话创建/复用/发送/获取/关闭和控制文件读写,项目身份,CodeGraph,业务与控制面基线,Git 模式,测试框架,工具链,旧 AI 沉淀,五个角色职责,主任务/角色任务,控制面原子写入,数据库默认授权和敏感扫描。宿主核心能力、项目身份、CodeGraph、基线、真实角色会话、控制面或敏感扫描任一必要项不可用时,不得 `projectStatus=ready`。
1133
+ CodeGraph 唯一状态源为 `xinyun-ai/manifest.json` 的 `codeGraphRequired`;`project-index.json`、`preflight-report.json`、`onboarding-report.json`、`current-task.md` 和 `init-result.json` 必须引用同一 `codeGraphRecordId`,并同步 `status`、`sourceRevision`、`indexScope`、`unindexedScope`、`failureReason` 和 evidence。
1134
+ 宿主能力状态为 `available-with-dependency` 时必须等待依赖授权和依赖 evidence,不能直接 ready;`unknown`、`unavailable`、`permission-denied`、`failed`、`not-checked`、`not-verified` 和依赖未授权均阻断 ready。
1135
+
1136
+ `projectStatus` 固定为 `not-started/initializing/partial/blocked/ready`。只有全部 `requiredGates` 通过且无高风险阻塞时才允许 `executionEligible=true`。缺少真实角色会话时必须 `blocked + blockedReason=required-role-session-not-created`,不得伪造 `sessionId`。
1137
+
1138
+ Git none、无测试框架和工具链未检测只登记 `not-available/not-detected`、证据和 `unverifiedScope`,不伪造通过且不自动安装依赖。数据库默认 `authorization=not-requested`、`executionStatus=needs-confirmation`、`redactionStatus=verified`;未明确授权不得连接数据库或执行 SQL,只输出 SQL 计划。所有敏感信息不得写入任务、日志、交接单、JSON、Markdown 或 stdout/stderr。
1139
+
1118
1140
  ## v1.9 项目会话隔离、总工全景与数据库授权
1119
1141
 
1120
1142
  项目身份写入 `xinyun-ai/project-identity.json`。项目根优先使用 realpath,失败时使用 lexical-fallback 并记录 `identityEvidence`;路径统一 `/`、Unicode NFC,Windows 盘符大写且按不区分大小写规范化,Unix 保持大小写敏感。`projectRootHash` 和 `repositoryScopeHash` 不包含原始绝对路径,后者对稳定排序的 repository scope 使用 RFC 8785 JCS-SHA-256。
@@ -66,6 +66,18 @@
66
66
  - 普通咨询、首次极速初始化和不涉及这些能力的任务不创建空目录。目录补齐只修改 AI 控制面,不修改业务代码。
67
67
  - 普通咨询、首次极速初始化和不涉及这些能力的任务不创建空目录。目录补齐只修改 AI 控制面,不修改业务代码。
68
68
 
69
+ ## v1.10 项目 AI 接管目录
70
+
71
+ - `xinyun-ai/project-status.json`
72
+ - `xinyun-ai/preflight-report.json`
73
+ - `xinyun-ai/onboarding-report.json`
74
+ - `xinyun-ai/host-capabilities.json`
75
+ - `xinyun-ai/index/takeover-baseline.json`
76
+ - `xinyun-ai/index/control-plane-index.json`
77
+ - `xinyun-ai/events/events.jsonl`
78
+
79
+ 接管门禁目录必须在业务代码开发前创建或明确记录为 blocked/partial;首次 CLI 仍只创建 `xinyun-ai-init/`,不会直接创建 `xinyun-ai/`。
80
+
69
81
  ## v1.9 按需目录
70
82
 
71
83
  - `xinyun-ai/project-identity.json`
@@ -79,6 +79,19 @@
79
79
 
80
80
  需要多会话协作时,按 A-D 顺序补齐 `xinyun-ai/coordination/`、`xinyun-ai/skills/`、`xinyun-ai/frontend-audits/` 和 `xinyun-ai/sessions/temporary/` 的最小模板。普通咨询和首次极速初始化不强制创建这些业务记录目录。
81
81
 
82
+ ## v1.10 项目 AI 接管初始化门禁
83
+
84
+ - 所有项目先执行接管 preflight,再允许进入业务代码开发。必须创建 `project-status.json`、`preflight-report.json`、`onboarding-report.json`、`host-capabilities.json`、`index/takeover-baseline.json` 和 `index/control-plane-index.json`。
85
+ - 宿主能力必须逐项检测真实会话创建、旧会话复用、发送任务、获取结果、关闭会话和控制文件读写;核心能力 unavailable、permission-denied、failed 或 unknown 时不得 ready。
86
+ - 项目身份必须明确 projectRoot、projectName、repositoryScopeHash、workstream、version、codeBaselineHash;路径不明确进入 blocked。
87
+ - CodeGraph 缺失且命令可用时执行 `codegraph init -i`;登记 initialization result、indexScope、sourceRevision、unindexedScope 和 failureReason,失败不得声称完整理解。
88
+ - CodeGraph 状态唯一读取 `xinyun-ai/manifest.json` 的 `codeGraphRequired`;preflight、onboarding、current-task 和 init-result 只引用同一 `codeGraphRecordId`,状态源缺失或摘要不一致时 blocked。
89
+ - 宿主能力为 `available-with-dependency` 时必须记录 dependencyStatus、依赖授权和 evidence;依赖未授权以及 `unknown`、`unavailable`、`permission-denied`、`failed`、`not-checked`、`not-verified` 均禁止 ready。
90
+ - 接管基线记录业务文件哈希、控制文件哈希、未提交 Git、已有任务/会话和旧 AI 文档。旧沉淀必须分类为 adopted/pending-confirmation/not-adopted,敏感原文不得落盘。
91
+ - 五个角色和主任务必须有父子任务、状态、下一步和真实 sessionId;缺失角色会话固定 `blockedReason=required-role-session-not-created`,不得伪造 sessionId。
92
+ - `projectStatus` 只有在所有 requiredGates 通过、敏感扫描通过且无高风险阻塞时才可为 ready;executionEligible 必须同时为 true。
93
+ - Git none、无测试框架、工具链未检测只记录 not-available/not-detected 和 unverifiedScope;数据库默认 `authorization=not-requested`、`executionStatus=needs-confirmation`、`redactionStatus=verified`,未经确认不得连接或执行 SQL。
94
+
82
95
  ## v1.9 初始化项目身份与联合门禁
83
96
 
84
97
  按需创建 `xinyun-ai/project-identity.json`、`sessions/session-candidates.json`、`technical-landscape.json`、`packets/requirement-packet.json`、`packets/technical-impact-packet.json` 和 `database/authorization.json`。项目根优先 realpath,失败使用 lexical-fallback;使用 Unicode NFC、规范化路径和 RFC 8785 JCS-SHA-256,禁止保存原始绝对路径。
@@ -270,7 +270,7 @@ HTML 迁移只允许评估和单页面 / 区块试点计划;实际代码迁移
270
270
  - `sessionBindingPath`:xinyun-ai/sessions/role-session-bindings.json
271
271
  - `roleSessionPath`:xinyun-ai/sessions/roles/<roleId>.md
272
272
  - `roleSessionIdempotency`:v1.9 使用 projectRootHash + workspaceScope + repositoryScopeHash + workstream + taskId + roleId + provider + targetVersion 的 RFC8785-JCS-SHA-256;v1.7.3 `legacyCreationIndexFields={taskId, roleId, provider, targetVersion}` 只作创建兼容索引,不参与候选选择或跨项目复用
273
- - `hostCapability`:available / unavailable / permission-denied / unknown / failed
273
+ - `hostCapability`:available / available-with-dependency / unavailable / permission-denied / unknown / not-checked / not-verified / failed
274
274
  - `degradationReason`:local-degraded-no-fake-session-id / none
275
275
  - `onboardingStatus`
276
276
  - `created-but-writeback-failed` 恢复线索
@@ -285,6 +285,18 @@ HTML 迁移只允许评估和单页面 / 区块试点计划;实际代码迁移
285
285
 
286
286
  任何跨会话冲突、状态源缺失、预算超限、权限失败或敏感信息无法确认时暂停或阻塞,不自动重试、合并、覆盖或释放。
287
287
 
288
+ ## v1.10 接管 preflight 与交接
289
+
290
+ 交接必须记录 host capability、真实 sessionId、executionEligible 和阻塞原因;宿主不支持时保持 sessionId=null,不得伪造 sessionId。
291
+
292
+ - 接管交接必须引用 `preflightId`、`projectStatus`、`projectRootHash`、`codeGraphRecordId`、`baselineRecordId`、`hostCapabilityRecordId`、`mainTaskId` 和五个 role task/session 记录。
293
+ - 交接前必须确认宿主真实会话能力、项目身份、CodeGraph、业务/控制面基线、Git/测试/工具链发现、旧沉淀分类、职责确认、控制面索引和敏感扫描。
294
+ - CodeGraph 交接必须引用 manifest 状态源的 `codeGraphRecordId`,并同步 sourceRevision、indexScope、unindexedScope、failureReason 和 evidence;状态源缺失或跨文件不一致时 blocked。
295
+ - 每项宿主能力必须有 capabilityId、detectionMethod、status、dependencyStatus、fallbackPlan、usedTools、unusedTools、unverifiedScope、failureReason 和 checkedAt;available-with-dependency 未获授权不得 ready。
296
+ - `projectStatus=ready` 是唯一允许进入业务代码执行的状态;任一必要角色会话缺失时必须 `blocked + required-role-session-not-created`,不能伪造 sessionId。
297
+ - 数据库交接默认写 `authorization=not-requested`、`executionStatus=needs-confirmation`、`redactionStatus=verified`;只交付 SQL 计划,不连接数据库。
298
+ - 所有交接文件、事件日志和 JSON/Markdown 输出必须通过敏感扫描;原子写入失败、锁异常或用户修改控制文件进入 paused/blocked 并保留 audit。
299
+
288
300
  ## v1.9 会话与技术交接字段
289
301
 
290
302
  会话交接记录 `projectRootHash`、`workspaceScope`、`repositoryScopeHash`、`workstream`、`roleId`、`taskId`、`permissionScope`、`sessionMatchStatus`、`hostRecoveryAvailable`、`hostRecoveryEvidence` 和 `selectionEvidence`。只有 reusable 或完成改名 audit 的 renamed 可绑定当前项目。
@@ -116,6 +116,19 @@
116
116
 
117
117
  升级先校验共享事实、状态源和 coordination transaction;再校验 Skill registry、`assignmentStatus`/`usageStatus` 映射;然后处理前端 audit-only 或已确认的单页面试点;最后才创建临时程序员会话。已有用户修改的控制文件不得静默覆盖,冲突或哈希不一致进入 `blocked`/`recovery-required`。
118
118
 
119
+ ## v1.10 接管状态升级与恢复
120
+
121
+ 升级前读取 `projectStatus` 和全部 preflight 控制文件;冲突进入 blocked/recovery-required,不覆盖用户修改。
122
+
123
+ - 升级先读取 `project-status.json`、`preflight-report.json`、`onboarding-report.json`、`host-capabilities.json`、`takeover-baseline.json` 和 `control-plane-index.json`,任何用户修改或 hash 冲突进入 blocked/recovery-required,不覆盖控制文件。
124
+ - 接管状态统一为 `not-started/initializing/partial/blocked/ready`。已有任务、会话、锁、旧沉淀和 Git 改动必须先登记,再按幂等键恢复;不得删除历史或强制解锁。
125
+ - 真实角色会话缺失、无法复用或回写失败时,保留活动任务和恢复线索,状态为 `blocked`,`blockedReason=required-role-session-not-created`;不得把 sessionId 写成占位值。
126
+ - CodeGraph 缺失且命令可用时只执行一次 `codegraph init -i`;不可用、权限失败、索引损坏或状态未知按失败矩阵记录,不能声称 ready。
127
+ - 升级时不得读取未注册的 `codegraph-status.json`;统一从 manifest 的 `codeGraphRequired` 恢复,并校验 project-index、preflight、onboarding、current-task、init-result 的 codeGraphRecordId 和摘要一致。
128
+ - `available-with-dependency` 必须等待依赖授权;必要能力处于 unknown、unavailable、permission-denied、failed、not-checked、not-verified 或依赖未授权时保持 blocked/partial,不得 ready。
129
+ - Git none、测试框架未发现和工具链未检测不单独阻塞,但必须写入 status、evidence 和 unverifiedScope;禁止自动安装依赖。
130
+ - 数据库状态升级默认保持 `not-requested/needs-confirmation/verified`;没有新授权不得连接、执行 SQL、migration、seed 或修改真实数据。
131
+
119
132
  ## v1.9 升级兼容与失效处理
120
133
 
121
134
  升级前按当前项目身份的 realpath/lexical-fallback 结果计算 projectRootHash,按排序 repository scope 计算 repositoryScopeHash。只有八字段身份/任务键、权限和 RFC8785 JCS-SHA-256 复用键一致时复用会话;其他项目、重复非主会话和身份未知会话不得复用。保留 v1.7.3 sessionId、旧创建索引、v1.8 共享事实和双会话文件契约。
@@ -206,6 +206,21 @@ AI 接手本项目时,请先读取:
206
206
 
207
207
  未获用户确认前,不要修改业务代码、配置、数据库、依赖、构建脚本、测试逻辑、API 行为、UI 行为或业务流程。
208
208
 
209
+ ## v1.10 项目 AI 接管初始化门禁
210
+
211
+ - 初始化目标是接管整个项目的 AI 代码开发;`xinyun-ai/` 接管门禁完成前,任何 AI 不得进入业务代码开发。
212
+ - 初始化必须先生成 `xinyun-ai/preflight-report.json`、`xinyun-ai/project-status.json`、`xinyun-ai/onboarding-report.json`、`xinyun-ai/host-capabilities.json`、`xinyun-ai/index/takeover-baseline.json` 和 `xinyun-ai/index/control-plane-index.json`。
213
+ - 宿主能力必须检测真实会话创建、旧会话复用、发送任务、获取结果、关闭会话和本地控制文件读写;任一核心能力为 unavailable、permission-denied、failed 或 unknown 时不得 ready。
214
+ - 项目身份必须包含 projectRoot、projectName、repositoryScopeHash、workstream、version、codeBaselineHash;路径不明确时为 `blocked`,不得猜测项目根。
215
+ - CodeGraph 必须检查 `.codegraph/`,命令可用且缺失时执行 `codegraph init -i`;记录结果、索引范围、sourceRevision、未索引范围和失败原因。失败或未知不得声称完整理解。
216
+ - 接管基线必须记录业务文件清单/哈希、xinyun-ai 控制文件哈希、未提交 Git 改动、已有任务/会话和旧 AI 文档;敏感原文不得进入任何任务、日志、JSON、Markdown 或 stdout/stderr。
217
+ - 五个逻辑角色必须完成职责、文件责任、读取范围、禁止操作、最终确认人和理解回执登记;角色登记不等于真实会话,未绑定真实 sessionId 必须保持 null。
218
+ - 主任务和五个角色任务必须有明确名称、父子关联、状态、下一步和真实 sessionId 绑定;任一必要角色会话缺失时写入 `blockedReason=required-role-session-not-created`。
219
+ - `projectStatus` 固定为 `not-started/initializing/partial/blocked/ready`;只有身份、CodeGraph、基线、团队、任务、控制面、旧沉淀、宿主能力、敏感扫描和无高风险阻塞全部通过,才允许 `ready` 和 `executionEligible=true`。
220
+ - 初始化冲突、旧任务、锁异常或用户修改控制文件时必须暂停/阻塞,不覆盖、不强制解锁;所有控制面写入使用临时文件、原子重命名、revision、幂等和恢复记录。
221
+ - Git none、无测试框架和未检测到工具链只记录 `not-available/not-detected` 及未验证范围,不得伪造通过,也不得自动安装依赖。
222
+ - 数据库初始化固定为 `authorization=not-requested`、`executionStatus=needs-confirmation`、`redactionStatus=verified`;未经明确授权不得连接数据库或执行 SQL,只输出 SQL 计划。
223
+
209
224
  ## v1.9 当前项目会话隔离与联合门禁
210
225
 
211
226
  - 项目身份使用 `xinyun-ai/project-identity.json`;优先 realpath,失败使用 lexical-fallback,记录 `identityEvidence`,路径使用 `/` 和 Unicode NFC,`projectRootHash` 不保存原始绝对路径。
@@ -2,6 +2,10 @@
2
2
 
3
3
  本目录是当前项目的 AI 协作工作区,采用“欣芸技术开发 Agent 流”。
4
4
 
5
+ ## v1.10 接管门禁
6
+
7
+ 当前项目必须先完成 `preflight-report.json` 和 `onboarding-report.json`,再进入业务代码开发。`project-status.json` 只有在项目身份、CodeGraph、基线、团队职责、五个真实角色会话、本地控制面、旧沉淀、宿主能力和敏感扫描全部通过时才可为 `ready`;缺失真实角色会话必须为 `blocked + required-role-session-not-created`。CLI 只创建 `xinyun-ai-init/`,AI 获得授权后才创建项目控制面。
8
+
5
9
  ## 工作方式
6
10
 
7
11
  - 首次初始化为极速模式,后续能力按需补齐。
@@ -0,0 +1,24 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "indexId": "control-plane-index-template",
4
+ "projectRootHash": null,
5
+ "taskIndex": "xinyun-ai/tasks/task-index.json",
6
+ "sessionIndex": "xinyun-ai/sessions/role-session-bindings.json",
7
+ "roleIndex": "xinyun-ai/team/assignments.json",
8
+ "factIndex": "xinyun-ai/coordination/project-facts.json",
9
+ "evidenceIndex": "xinyun-ai/index/evidence-index.json",
10
+ "eventLog": "xinyun-ai/events/events.jsonl",
11
+ "lockFile": "xinyun-ai/task-lock.json",
12
+ "status": "unknown",
13
+ "statusEnum": ["unknown", "initializing", "ready", "partial", "blocked", "recovery-required"],
14
+ "atomicWriteContract": {
15
+ "tempFileRequired": true,
16
+ "fsyncBeforeRename": true,
17
+ "indexRevisionRequired": true,
18
+ "recoveryRecordRequired": true,
19
+ "userModifiedControlFile": "blocked",
20
+ "lockFailure": "paused"
21
+ },
22
+ "idempotency": { "required": true, "keyScope": "projectRootHash + operation + targetPath + requestHash", "duplicatePolicy": "reuse-and-audit" },
23
+ "updatedAt": null
24
+ }
@@ -576,6 +576,24 @@ Skill 分配使用 `assignmentStatus`,使用记录使用 `usageStatus`。固
576
576
 
577
577
  临时程序员会话最多并行 3 个,状态与 `occupancyStatus` 分离。`occupancyStatus=unknown` 时继续占用额度。同一 changeDomain 不重复写入;unknown 占用不得自动释放,人工释放必须记录 releaseAudit。异常、超时、写回失败和测试失败不得自动重试或伪造完成。
578
578
 
579
+ ## v1.10 项目 AI 接管初始化门禁
580
+
581
+ - CodeGraph 唯一状态源为 `xinyun-ai/manifest.json` 的 `codeGraphRequired`;所有接管报告和 current-task/init-result 必须引用同一 `codeGraphRecordId`,不得创建未注册的 `codegraph-status.json`。
582
+ - 宿主能力记录必须包含 `capabilityId`、`detectionMethod`、`status`、`evidence`、`dependencyStatus`、`fallbackPlan`、`usedTools`、`unusedTools`、`unverifiedScope`、`failureReason` 和 `checkedAt`。
583
+ - `available-with-dependency` 只有依赖已授权且有证据时才可通过;`unknown`、`unavailable`、`permission-denied`、`failed`、`not-checked`、`not-verified` 或依赖未授权时不得 ready。
584
+
585
+ 接管使用 `host-capabilities`、`takeover-baseline`、`projectStatus` 和 `executionEligible` 控制面;核心宿主能力不可用时不得 ready。
586
+
587
+ - `projectStatus` 是接管状态源,枚举为 `not-started/initializing/partial/blocked/ready`;接管完成前,程序员任务只能读取、分析和补齐 AI 控制面,不得修改业务代码。
588
+ - `preflight-report.json` 必须逐项记录 `checkId/category/status/evidence/unverifiedScope/failureReason/checkedAt`,覆盖项目身份、宿主能力、CodeGraph、基线、Git、测试框架、工具链、旧沉淀、团队、任务、控制面、数据库和敏感扫描。
589
+ - 宿主能力检测必须覆盖真实会话创建、复用、发送任务、获取结果、关闭会话和本地控制文件读写;核心能力不可用或未知时 `projectStatus` 不得 ready。
590
+ - 项目身份缺少明确 projectRoot 时必须 blocked;身份最小字段为 projectRoot、projectName、repositoryScopeHash、workstream、version、codeBaselineHash。
591
+ - CodeGraph 缺失且命令可用时执行 `codegraph init -i`;必须登记 initialization result、indexScope、sourceRevision、unindexedScope 和 failureReason,失败不得宣称完整理解。
592
+ - 初始化前后基线必须分别记录业务文件清单/哈希、控制文件哈希、未提交 Git 改动、已有任务/会话和旧 AI 文档;敏感扫描未通过时不得 ready。
593
+ - `role-execution` 任务必须与五个逻辑角色和主任务关联;真实角色会话创建失败、无法复用或宿主不支持时写入 `blocked + required-role-session-not-created`,不得伪造 sessionId。
594
+ - `projectStatus=ready` 且 `executionEligible=true` 的联合门禁必须同时通过项目身份、CodeGraph、基线、职责确认、五个真实角色会话、任务树、本地控制面、旧沉淀分类、宿主能力、敏感扫描和无高风险阻塞。
595
+ - Git none、测试框架 not-available、工具链 not-detected 只降低覆盖范围并记录 unverifiedScope,不得伪造测试通过;数据库保持 `not-requested/needs-confirmation/verified`,禁止未授权连接或 SQL。
596
+
579
597
  ## v1.9 项目会话隔离、总工全景与数据库授权
580
598
 
581
599
  项目身份落盘于 `xinyun-ai/project-identity.json`。根目录优先 realpath,失败使用 lexical-fallback 并记录失败原因;路径统一 `/`、Unicode NFC,Windows 盘符大写且不区分大小写,Unix 保持大小写敏感。projectRootHash 使用规范化根目录 SHA-256;repository scope 按 repoRootHash、workstream、kind 排序后使用 RFC 8785 JCS-SHA-256。
@@ -79,6 +79,12 @@
79
79
  - 检索根目录:
80
80
  - 排除目录与文件:
81
81
  - CodeGraph 状态:
82
+ - codeGraphRecordId:null
83
+ - statusSource:xinyun-ai/manifest.json
84
+ - sourceRevision:null
85
+ - indexScope:[]
86
+ - unindexedScope:[]
87
+ - failureReason:null
82
88
  - 证据列表:
83
89
  - 已覆盖范围:
84
90
  - 可能遗漏位置:
@@ -162,11 +168,15 @@
162
168
  - executableTaskIds:
163
169
  - CodeGraph 必备初始化:
164
170
  - codeGraphRecordId:
171
+ - statusSource:xinyun-ai/manifest.json
165
172
  - required:true
166
173
  - status:initialized / healthy / missing / unavailable / permission-denied / failed / unknown
167
174
  - command:codegraph init -i
168
175
  - version:
169
176
  - indexPath:.codegraph/
177
+ - sourceRevision:
178
+ - indexScope:
179
+ - unindexedScope:
170
180
  - initializedAt:
171
181
  - checkedAt:
172
182
  - evidence:
@@ -222,7 +232,7 @@
222
232
  - 能力检测与降级:
223
233
  - capabilityId:
224
234
  - detectionMethod:
225
- - capability.status:available / available-with-dependency / unavailable / not-checked / unknown
235
+ - capability.status:available / available-with-dependency / unavailable / permission-denied / unknown / not-checked / not-verified / failed
226
236
  - evidence:
227
237
  - fallbackPlan:
228
238
  - usedTools:
@@ -28,9 +28,9 @@
28
28
  "statementHash": null,
29
29
  "statementHashAlgorithm": "RFC8785-JCS-SHA-256",
30
30
  "statementHashCanonicalInput": ["databaseEngine", "dialectVersion", "statements", "parameters", "transactionPlan", "targetEnvironment", "authorizationScope"],
31
- "executionStatus": "not-run",
31
+ "executionStatus": "needs-confirmation",
32
32
  "executionStatusEnum": ["not-run", "needs-confirmation", "authorized", "executed", "failed", "unknown"],
33
- "redactionStatus": "unverified",
33
+ "redactionStatus": "verified",
34
34
  "redactionStatusEnum": ["verified", "unverified", "failed"],
35
35
  "audit": [],
36
36
  "auditRequiredFields": ["auditId", "action", "actorType", "actorId", "authorizationType", "statementHash", "targetEnvironment", "resultStatus", "redactionStatus", "evidence", "at"],
@@ -0,0 +1,33 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "capabilityRecordId": "host-capabilities-template",
4
+ "provider": "codex",
5
+ "projectRootHash": null,
6
+ "status": "unknown",
7
+ "statusEnum": ["available", "available-with-dependency", "unavailable", "permission-denied", "unknown", "not-checked", "not-verified", "failed"],
8
+ "dependencyStatusEnum": ["not-required", "required", "authorized", "not-authorized", "unknown"],
9
+ "capabilityRequiredFields": ["capabilityId", "detectionMethod", "status", "evidence", "dependencyStatus", "fallbackPlan", "usedTools", "unusedTools", "unverifiedScope", "failureReason", "checkedAt"],
10
+ "checkedAt": null,
11
+ "capabilities": {
12
+ "createRealSession": { "capabilityId": "createRealSession", "detectionMethod": "host-api", "status": "unknown", "evidence": [], "dependencyStatus": "unknown", "fallbackPlan": "local-degraded-no-fake-session-id", "usedTools": [], "unusedTools": [], "unverifiedScope": [], "failureReason": null, "checkedAt": null },
13
+ "reuseExistingSession": { "capabilityId": "reuseExistingSession", "detectionMethod": "host-api", "status": "unknown", "evidence": [], "dependencyStatus": "unknown", "fallbackPlan": "local-degraded-no-fake-session-id", "usedTools": [], "unusedTools": [], "unverifiedScope": [], "failureReason": null, "checkedAt": null },
14
+ "sendTask": { "capabilityId": "sendTask", "detectionMethod": "host-api", "status": "unknown", "evidence": [], "dependencyStatus": "unknown", "fallbackPlan": "read-only handoff", "usedTools": [], "unusedTools": [], "unverifiedScope": [], "failureReason": null, "checkedAt": null },
15
+ "receiveResult": { "capabilityId": "receiveResult", "detectionMethod": "host-api", "status": "unknown", "evidence": [], "dependencyStatus": "unknown", "fallbackPlan": "read-only handoff", "usedTools": [], "unusedTools": [], "unverifiedScope": [], "failureReason": null, "checkedAt": null },
16
+ "closeSession": { "capabilityId": "closeSession", "detectionMethod": "host-api", "status": "unknown", "evidence": [], "dependencyStatus": "unknown", "fallbackPlan": "manual host close", "usedTools": [], "unusedTools": [], "unverifiedScope": [], "failureReason": null, "checkedAt": null },
17
+ "controlFileReadWrite": { "capabilityId": "controlFileReadWrite", "detectionMethod": "filesystem", "status": "unknown", "evidence": [], "dependencyStatus": "unknown", "fallbackPlan": "pause on write failure", "usedTools": [], "unusedTools": [], "unverifiedScope": [], "failureReason": null, "checkedAt": null }
18
+ },
19
+ "readyPolicy": {
20
+ "requiredCapabilities": ["createRealSession", "reuseExistingSession", "sendTask", "receiveResult", "closeSession", "controlFileReadWrite"],
21
+ "unavailableBlocksReady": true,
22
+ "unknownBlocksReady": true,
23
+ "availableWithDependencyBlocksReady": true,
24
+ "notVerifiedBlocksReady": true,
25
+ "blockedStatuses": ["unknown", "unavailable", "permission-denied", "failed", "available-with-dependency", "not-checked", "not-verified"],
26
+ "dependencyRequiredStatus": "authorized",
27
+ "fakeSessionIdProhibited": true
28
+ },
29
+ "unverifiedScope": [],
30
+ "sensitiveScan": { "status": "not-run", "matches": [] },
31
+ "createdAt": null,
32
+ "updatedAt": null
33
+ }
@@ -7,7 +7,7 @@
7
7
  "mode": "initialization",
8
8
  "status": "pending",
9
9
  "currentVersion": null,
10
- "targetVersion": "1.9.0",
10
+ "targetVersion": "1.10.1",
11
11
  "idempotencyKey": null,
12
12
  "createdFiles": [],
13
13
  "updatedFiles": [],
@@ -53,13 +53,24 @@
53
53
  "packetHashAlgorithm": "RFC8785-JCS-SHA-256",
54
54
  "databaseAccessMode": "sql-only"
55
55
  },
56
+ "databaseAuthorization": {
57
+ "authorization": "not-requested",
58
+ "executionStatus": "needs-confirmation",
59
+ "redactionStatus": "verified",
60
+ "connected": false,
61
+ "evidence": []
62
+ },
56
63
  "codeGraph": {
57
64
  "codeGraphRecordId": null,
65
+ "statusSource": "xinyun-ai/manifest.json",
58
66
  "required": true,
59
67
  "status": "unknown",
60
68
  "command": "codegraph init -i",
61
69
  "version": null,
62
70
  "indexPath": ".codegraph/",
71
+ "sourceRevision": null,
72
+ "indexScope": [],
73
+ "unindexedScope": [],
63
74
  "initializedAt": null,
64
75
  "checkedAt": null,
65
76
  "evidence": [],
@@ -3,13 +3,13 @@
3
3
  "hashAlgorithm": "sha256",
4
4
  "contentEncoding": "utf8-normalized",
5
5
  "managedBy": "@pm_zhousl/xinyun-ai-init",
6
- "lastAppliedVersion": "1.9.0",
6
+ "lastAppliedVersion": "1.10.1",
7
7
  "files": [
8
8
  {
9
9
  "path": "xinyun-ai/rules/core-rules.md",
10
10
  "baselineHash": null,
11
11
  "templateHash": null,
12
- "lastAppliedVersion": "1.9.0",
12
+ "lastAppliedVersion": "1.10.1",
13
13
  "managedBy": "@pm_zhousl/xinyun-ai-init",
14
14
  "status": "unknown"
15
15
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "projectName": "",
3
- "xinyunAiVersion": "1.9.0",
3
+ "xinyunAiVersion": "1.10.1",
4
4
  "scriptVersion": "2026.07.23",
5
5
  "schemaVersion": "1",
6
6
  "initializationMode": "fast",
@@ -55,6 +55,10 @@
55
55
  ,"roleDisplayNaming": true
56
56
  ,"technicalLandscapeCoordination": true
57
57
  ,"databaseSqlOnlyAuthorization": true
58
+ ,"projectAiTakeoverGate": true
59
+ ,"hostCapabilityPreflight": true
60
+ ,"projectStatusGate": true
61
+ ,"takeoverBaseline": true
58
62
  },
59
63
  "tasking": {
60
64
  "currentTask": "xinyun-ai/current-task.md",
@@ -75,7 +79,13 @@
75
79
  "roleExecutionDirectory": "xinyun-ai/tasks/role-execution/",
76
80
  "roleExecutionTemplate": "xinyun-ai-init/templates/role-execution.template.md",
77
81
  "roleSessionBindings": "xinyun-ai/sessions/role-session-bindings.json",
78
- "roleSessionBindingTemplate": "xinyun-ai-init/templates/role-session-binding.template.json"
82
+ "roleSessionBindingTemplate": "xinyun-ai-init/templates/role-session-binding.template.json",
83
+ "projectStatus": "xinyun-ai/project-status.json",
84
+ "preflightReport": "xinyun-ai/preflight-report.json",
85
+ "onboardingReport": "xinyun-ai/onboarding-report.json",
86
+ "hostCapabilities": "xinyun-ai/host-capabilities.json",
87
+ "takeoverBaseline": "xinyun-ai/index/takeover-baseline.json",
88
+ "controlPlaneIndex": "xinyun-ai/index/control-plane-index.json"
79
89
  },
80
90
  "roleSessions": {
81
91
  "enabled": true,
@@ -84,7 +94,7 @@
84
94
  "bindings": "xinyun-ai/sessions/role-session-bindings.json",
85
95
  "bindingTemplate": "xinyun-ai-init/templates/role-session-binding.template.json",
86
96
  "parentSessionId": null,
87
- "targetVersion": "1.9.0",
97
+ "targetVersion": "1.10.1",
88
98
  "requiredRoleCount": 5,
89
99
  "statusEnum": [
90
100
  "pending",
@@ -183,11 +193,15 @@
183
193
  "command": "codegraph init -i",
184
194
  "version": null,
185
195
  "indexPath": ".codegraph/",
196
+ "sourceRevision": null,
197
+ "indexScope": [],
198
+ "unindexedScope": [],
186
199
  "initializedAt": null,
187
200
  "checkedAt": null,
188
201
  "evidence": [],
189
202
  "failureReason": null,
190
- "degradationAuthorized": false
203
+ "degradationAuthorized": false,
204
+ "statusSource": "xinyun-ai/manifest.json"
191
205
  },
192
206
  "team": {
193
207
  "directory": "xinyun-ai/team/",
@@ -223,5 +237,17 @@
223
237
  "databaseAuthorization": "xinyun-ai/database/authorization.json",
224
238
  "packetHashAlgorithm": "RFC8785-JCS-SHA-256",
225
239
  "databaseAccessModeDefault": "sql-only"
240
+ },
241
+ "v110": {
242
+ "projectStatus": "xinyun-ai/project-status.json",
243
+ "preflightReport": "xinyun-ai/preflight-report.json",
244
+ "onboardingReport": "xinyun-ai/onboarding-report.json",
245
+ "hostCapabilities": "xinyun-ai/host-capabilities.json",
246
+ "takeoverBaseline": "xinyun-ai/index/takeover-baseline.json",
247
+ "controlPlaneIndex": "xinyun-ai/index/control-plane-index.json",
248
+ "projectStatusEnum": ["not-started", "initializing", "partial", "blocked", "ready"],
249
+ "requiredRoleSessionBlockedReason": "required-role-session-not-created",
250
+ "databaseDefault": { "authorization": "not-requested", "executionStatus": "needs-confirmation", "redactionStatus": "verified" },
251
+ "readyRequires": ["projectIdentity", "codeGraph", "baseline", "teamResponsibility", "roleSessions", "taskTree", "localControlPlane", "legacyHandoff", "hostCapabilities", "sensitiveScan", "noHighRiskBlocker"]
226
252
  }
227
253
  }
@@ -0,0 +1,25 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "reportId": "onboarding-report-template",
4
+ "projectRootHash": null,
5
+ "projectName": null,
6
+ "projectStatus": "not-started",
7
+ "executionEligible": false,
8
+ "preflightId": null,
9
+ "codeGraphRecordId": null,
10
+ "codeGraph": { "statusSource": "xinyun-ai/manifest.json", "status": "unknown", "sourceRevision": null, "indexScope": [], "unindexedScope": [], "failureReason": null, "evidence": [] },
11
+ "baselineRecordId": null,
12
+ "hostCapabilityRecordId": null,
13
+ "mainTaskId": null,
14
+ "roleTasks": [],
15
+ "requiredRoleIds": ["project-owner", "project-product", "chief-engineer", "programmer", "test-reviewer"],
16
+ "roleSessionContract": { "required": true, "realSessionIdRequired": true, "missingSessionStatus": "blocked", "missingSessionReason": "required-role-session-not-created" },
17
+ "gates": {},
18
+ "legacyHandoff": { "status": "unknown", "classificationRequired": true },
19
+ "sensitiveScan": { "status": "unknown", "matches": [] },
20
+ "evidence": [],
21
+ "blockedReasons": [],
22
+ "unverifiedScope": [],
23
+ "createdAt": null,
24
+ "updatedAt": null
25
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "preflightId": "preflight-template",
4
+ "projectRootHash": null,
5
+ "projectStatus": "not-started",
6
+ "result": "not-run",
7
+ "resultEnum": ["not-run", "partial", "blocked", "ready"],
8
+ "startedAt": null,
9
+ "finishedAt": null,
10
+ "checks": [],
11
+ "checkRequiredFields": ["checkId", "category", "status", "evidence", "unverifiedScope", "failureReason", "checkedAt"],
12
+ "projectIdentity": { "status": "unknown", "projectRoot": null, "projectName": null, "repositoryScopeHash": null, "workstream": null, "version": null, "codeBaselineHash": null, "evidence": [] },
13
+ "hostCapabilities": { "status": "unknown", "recordPath": "xinyun-ai/host-capabilities.json", "evidence": [] },
14
+ "codeGraph": { "codeGraphRecordId": null, "statusSource": "xinyun-ai/manifest.json", "status": "unknown", "recordPath": "xinyun-ai/manifest.json", "command": "codegraph init -i", "sourceRevision": null, "indexScope": [], "unindexedScope": [], "failureReason": null, "evidence": [] },
15
+ "baseline": { "status": "unknown", "recordPath": "xinyun-ai/index/takeover-baseline.json", "businessFilesHash": null, "controlFilesHash": null, "uncommittedGitChanges": [], "existingTasks": [], "existingSessions": [], "legacyAiDocuments": [], "evidence": [] },
16
+ "git": { "kind": "unknown", "status": "unknown", "evidence": [] },
17
+ "testFramework": { "status": "unknown", "commands": [], "directories": [], "buildChecks": [], "evidence": [], "unverifiedScope": [] },
18
+ "toolchains": { "status": "unknown", "detected": [], "notDetected": [], "degraded": [], "unverifiedScope": [] },
19
+ "legacyHandoff": { "status": "unknown", "adopted": [], "pendingConfirmation": [], "notAdopted": [], "evidence": [] },
20
+ "team": { "status": "unknown", "roleIds": ["project-owner", "project-product", "chief-engineer", "programmer", "test-reviewer"], "evidence": [] },
21
+ "tasks": { "status": "unknown", "mainTaskId": null, "roleTaskIds": [], "evidence": [] },
22
+ "controlPlane": { "status": "unknown", "indexPath": "xinyun-ai/index/control-plane-index.json", "lockPath": "xinyun-ai/task-lock.json", "eventLogPath": "xinyun-ai/events/events.jsonl", "evidence": [] },
23
+ "database": { "authorization": "not-requested", "executionStatus": "needs-confirmation", "redactionStatus": "verified", "connected": false, "evidence": [] },
24
+ "sensitiveScan": { "status": "unknown", "matches": [], "scannedOutputs": [] },
25
+ "blockedReasons": [],
26
+ "unverifiedScope": [],
27
+ "forbiddenOperations": { "businessCodeWrite": false, "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "dependencyInstall": false, "npmPublish": false },
28
+ "atomicWrite": { "required": true, "tempFile": true, "rename": true, "indexRevision": null, "recoveryRequired": false },
29
+ "updatedAt": null
30
+ }
@@ -155,6 +155,19 @@
155
155
  - 临时会话是否遵守单变更域、并发上限 3、unknown occupancy 和 releaseAudit。
156
156
  - 是否未执行自动安装依赖、业务代码修改、数据库/API改动或 Git 写操作。
157
157
 
158
+ ## v1.10 接管门禁检查
159
+
160
+ - `projectStatus` 是否仅为 not-started / initializing / partial / blocked / ready:待填写
161
+ - `preflight-report.json` 是否覆盖身份、宿主能力、CodeGraph、基线、Git、测试框架、工具链、旧沉淀、团队、任务、控制面、数据库和敏感扫描:待填写
162
+ - 宿主是否能创建/复用/发送/获取/关闭真实会话及读写控制文件:待填写
163
+ - CodeGraph 是否已初始化或健康复用,并记录 sourceRevision、索引范围和未索引范围:待填写
164
+ - 业务文件、控制文件、Git、既有任务/会话和旧 AI 文档基线是否已记录:待填写
165
+ - 五个真实角色 sessionId 是否存在且可追溯:待填写;缺失必须 blocked + required-role-session-not-created
166
+ - 主任务、五个角色任务和控制面索引是否原子写入且可恢复:待填写
167
+ - 数据库是否保持 authorization=not-requested、executionStatus=needs-confirmation、redactionStatus=verified:待填写
168
+ - 敏感扫描、业务文件 changedFiles 和禁止操作证明是否通过:待填写
169
+ - `projectStatus=ready` 和 `executionEligible=true` 是否仅在全部门禁通过后出现:待填写
170
+
158
171
  ## v1.9 检查
159
172
 
160
173
  - 项目身份是否使用 realpath / lexical-fallback、Unicode NFC、projectRootHash 和 repositoryScopeHash:待填写
@@ -146,7 +146,7 @@
146
146
  ## v1.6 能力检测、基线和安全状态
147
147
 
148
148
  - 能力检测记录:`xinyun-ai/index/capabilities.json`
149
- - capability.status:available / available-with-dependency / unavailable / not-checked / unknown。
149
+ - capability.status:available / available-with-dependency / unavailable / permission-denied / unknown / not-checked / not-verified / failed。
150
150
  - fallbackPlan:待填写。
151
151
  - 未验证范围:待填写。
152
152
  - 受管理基线:`xinyun-ai/index/managed-baseline.json`
@@ -236,6 +236,14 @@
236
236
  - 前端耦合审计:`xinyun-ai/frontend-audits/`;audit-only 零 diff。
237
237
  - 临时程序员会话:最多 3 个并行运行额度;unknown occupancy 不自动释放。
238
238
 
239
+ ## v1.10 项目 AI 接管初始化门禁
240
+
241
+ - 当前接管状态:`projectStatus` 待填写;`executionEligible` 待填写。
242
+ - 接管门禁文件:`xinyun-ai/preflight-report.json`、`xinyun-ai/project-status.json`、`xinyun-ai/onboarding-report.json`、`xinyun-ai/host-capabilities.json`、`xinyun-ai/index/takeover-baseline.json`、`xinyun-ai/index/control-plane-index.json`。
243
+ - 未通过全部接管门禁前,不进入业务代码开发;缺少真实角色 sessionId 时记录 `blockedReason=required-role-session-not-created`。
244
+ - 接管检查必须覆盖项目身份、CodeGraph、业务/控制面基线、Git 模式、测试框架、工具链、旧沉淀、五角色职责、主任务/角色任务、控制面原子写入、数据库默认授权和敏感扫描。
245
+ - `projectStatus=ready` 只允许在全部 requiredGates 通过且无高风险阻塞时使用;Git none、无测试框架或工具链未检测不得被伪造为通过,也不必单独阻塞。
246
+
239
247
  ## v1.9 项目身份、会话复用与技术联合门禁
240
248
 
241
249
  - 项目身份文件:`xinyun-ai/project-identity.json`。