@pm_zhousl/xinyun-ai-init 1.7.3 → 1.9.0

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 (48) hide show
  1. package/README.md +1 -1
  2. package/init/xinyun-ai-init/README.md +30 -4
  3. package/init/xinyun-ai-init/rules/coordination.md +33 -0
  4. package/init/xinyun-ai-init/rules/directory-self-completion.md +19 -0
  5. package/init/xinyun-ai-init/rules/frontend-audit.md +9 -0
  6. package/init/xinyun-ai-init/rules/init-rules.md +16 -1
  7. package/init/xinyun-ai-init/rules/session-workbench.md +18 -1
  8. package/init/xinyun-ai-init/rules/skills.md +15 -0
  9. package/init/xinyun-ai-init/rules/temporary-sessions.md +9 -0
  10. package/init/xinyun-ai-init/rules/upgrade-rules.md +14 -1
  11. package/init/xinyun-ai-init/templates/AGENTS.template.md +18 -2
  12. package/init/xinyun-ai-init/templates/coordination-change-ledger.template.json +10 -0
  13. package/init/xinyun-ai-init/templates/coordination-conflict-record.template.json +13 -0
  14. package/init/xinyun-ai-init/templates/coordination-contract-snapshot.template.json +9 -0
  15. package/init/xinyun-ai-init/templates/coordination-project-facts.template.json +9 -0
  16. package/init/xinyun-ai-init/templates/coordination-transaction.template.json +16 -0
  17. package/init/xinyun-ai-init/templates/core-rules.template.md +29 -3
  18. package/init/xinyun-ai-init/templates/current-task.template.md +24 -0
  19. package/init/xinyun-ai-init/templates/database-authorization.template.json +39 -0
  20. package/init/xinyun-ai-init/templates/frontend-audit.template.json +27 -0
  21. package/init/xinyun-ai-init/templates/init-result.template.json +10 -1
  22. package/init/xinyun-ai-init/templates/managed-baseline.template.json +2 -2
  23. package/init/xinyun-ai-init/templates/manifest.template.json +69 -6
  24. package/init/xinyun-ai-init/templates/project-check.template.md +22 -1
  25. package/init/xinyun-ai-init/templates/project-guide.template.md +18 -1
  26. package/init/xinyun-ai-init/templates/project-identity.template.json +23 -0
  27. package/init/xinyun-ai-init/templates/project-index.template.json +73 -0
  28. package/init/xinyun-ai-init/templates/requirement-packet.template.json +23 -0
  29. package/init/xinyun-ai-init/templates/role-execution.template.md +1 -1
  30. package/init/xinyun-ai-init/templates/role-session-binding.template.json +18 -2
  31. package/init/xinyun-ai-init/templates/session-candidates.template.json +19 -0
  32. package/init/xinyun-ai-init/templates/skills-assignments.template.json +19 -0
  33. package/init/xinyun-ai-init/templates/skills-registry.template.json +10 -0
  34. package/init/xinyun-ai-init/templates/task-index.template.json +5 -3
  35. package/init/xinyun-ai-init/templates/technical-impact-packet.template.json +31 -0
  36. package/init/xinyun-ai-init/templates/technical-landscape.template.json +41 -0
  37. package/init/xinyun-ai-init/templates/temporary-session.template.json +32 -0
  38. package/init/xinyun-ai-init/version.json +2 -2
  39. package/package.json +1 -1
  40. package/scripts/verify-init-package.js +309 -30
  41. package/scripts/verify-rules-package.js +197 -12
  42. package/test-scenarios/README.md +16 -4
  43. package/test-scenarios/fixtures/v1.9.0-behavior-fixture/README.md +9 -0
  44. package/test-scenarios/review-template.md +12 -0
  45. package/test-scenarios/scenarios.md +90 -3
  46. package/test-scenarios/v1.8.0-scenarios.md +39 -0
  47. package/test-scenarios/v1.9.0-behavior-evidence.json +269 -0
  48. package/test-scenarios/v1.9.0-scenarios.md +55 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "projectName": "",
3
- "xinyunAiVersion": "1.7.3",
4
- "scriptVersion": "2026.07.22",
3
+ "xinyunAiVersion": "1.9.0",
4
+ "scriptVersion": "2026.07.23",
5
5
  "schemaVersion": "1",
6
6
  "initializationMode": "fast",
7
7
  "expansionMode": "triggered",
@@ -46,7 +46,15 @@
46
46
  "taskArchiveTransactions": true,
47
47
  "codeGraphRequiredInitialization": true,
48
48
  "roleExecutionVisibility": true,
49
- "codexRoleSessionOrchestration": true
49
+ "codexRoleSessionOrchestration": true,
50
+ "sharedProjectFactsCoordination": true,
51
+ "skillRouting": true,
52
+ "frontendCouplingAudit": true,
53
+ "temporaryProgrammerSessions": true
54
+ ,"projectSessionIsolation": true
55
+ ,"roleDisplayNaming": true
56
+ ,"technicalLandscapeCoordination": true
57
+ ,"databaseSqlOnlyAuthorization": true
50
58
  },
51
59
  "tasking": {
52
60
  "currentTask": "xinyun-ai/current-task.md",
@@ -76,7 +84,7 @@
76
84
  "bindings": "xinyun-ai/sessions/role-session-bindings.json",
77
85
  "bindingTemplate": "xinyun-ai-init/templates/role-session-binding.template.json",
78
86
  "parentSessionId": null,
79
- "targetVersion": "1.7.3",
87
+ "targetVersion": "1.9.0",
80
88
  "requiredRoleCount": 5,
81
89
  "statusEnum": [
82
90
  "pending",
@@ -90,17 +98,62 @@
90
98
  ],
91
99
  "idempotency": {
92
100
  "keyFields": [
101
+ "projectRootHash",
102
+ "workspaceScope",
103
+ "repositoryScopeHash",
104
+ "workstream",
93
105
  "taskId",
94
106
  "roleId",
95
107
  "provider",
96
108
  "targetVersion"
97
109
  ],
98
- "algorithm": "JCS-SHA-256",
99
- "duplicatePolicy": "reuse"
110
+ "algorithm": "RFC8785-JCS-SHA-256",
111
+ "duplicatePolicy": "reuse-one-primary-preserve-history",
112
+ "legacyCreationIndexFields": ["taskId", "roleId", "provider", "targetVersion"],
113
+ "legacyCreationIndexPolicy": "compatibility lookup only; never used for candidate selection or cross-project reuse"
100
114
  },
101
115
  "hostUnsupportedPolicy": "local-degraded-no-fake-session-id",
102
116
  "readyPolicy": "created session enters onboarding first; ready requires role understanding, responsibility confirmation, and execution eligibility gates."
103
117
  },
118
+ "coordination": {
119
+ "enabled": true,
120
+ "directory": "xinyun-ai/coordination/",
121
+ "projectFacts": "xinyun-ai/coordination/project-facts.json",
122
+ "changeLedger": "xinyun-ai/coordination/change-ledger.json",
123
+ "contractSnapshots": "xinyun-ai/coordination/contract-snapshots/",
124
+ "conflictRecords": "xinyun-ai/coordination/conflict-records/",
125
+ "transactions": "xinyun-ai/coordination/.transactions/",
126
+ "statusSources": {
127
+ "taskStatus": "xinyun-ai/tasks/task-index.json",
128
+ "changeStatus": "xinyun-ai/coordination/change-ledger.json",
129
+ "conflictStatus": "xinyun-ai/coordination/conflict-records/<conflictId>.json",
130
+ "refreshStatus": "affected task record"
131
+ },
132
+ "transactionPhaseEnum": ["prepared", "validated", "renamed", "revision-updated", "committed", "recovery-required", "blocked"]
133
+ },
134
+ "skills": {
135
+ "enabled": true,
136
+ "directory": "xinyun-ai/skills/",
137
+ "registry": "xinyun-ai/skills/registry.json",
138
+ "assignments": "xinyun-ai/skills/assignments.json",
139
+ "usageRecords": "xinyun-ai/skills/usage-records/",
140
+ "assignmentStatusField": "assignmentStatus",
141
+ "usageStatusField": "usageStatus"
142
+ },
143
+ "frontendAudit": {
144
+ "enabled": true,
145
+ "directory": "xinyun-ai/frontend-audits/",
146
+ "recordTemplate": "xinyun-ai-init/templates/frontend-audit.template.json",
147
+ "defaultDecision": "audit-only"
148
+ },
149
+ "temporarySessions": {
150
+ "enabled": true,
151
+ "directory": "xinyun-ai/sessions/temporary/",
152
+ "recordTemplate": "xinyun-ai-init/templates/temporary-session.template.json",
153
+ "maxConcurrent": 3,
154
+ "sessionStatusField": "status",
155
+ "occupancyStatusEnum": ["occupied", "released", "unknown"]
156
+ },
104
157
  "taskTree": {
105
158
  "enabled": true,
106
159
  "mainTaskTitlePattern": "项目初始化:<项目显示名>",
@@ -160,5 +213,15 @@
160
213
  "pilotPlan": "xinyun-ai/migrations/html-to-client/pilot-plan.md",
161
214
  "openIssues": "xinyun-ai/migrations/html-to-client/open-issues.md",
162
215
  "recordJson": "xinyun-ai/migrations/html-to-client/migration-record.json"
216
+ },
217
+ "v19": {
218
+ "projectIdentity": "xinyun-ai/project-identity.json",
219
+ "sessionCandidates": "xinyun-ai/sessions/session-candidates.json",
220
+ "technicalLandscape": "xinyun-ai/technical-landscape.json",
221
+ "requirementPacket": "xinyun-ai/packets/requirement-packet.json",
222
+ "technicalImpactPacket": "xinyun-ai/packets/technical-impact-packet.json",
223
+ "databaseAuthorization": "xinyun-ai/database/authorization.json",
224
+ "packetHashAlgorithm": "RFC8785-JCS-SHA-256",
225
+ "databaseAccessModeDefault": "sql-only"
163
226
  }
164
227
  }
@@ -131,7 +131,7 @@
131
131
  - `xinyun-ai/sessions/role-session-bindings.json` 是否可解析:待填写
132
132
  - `xinyun-ai/sessions/roles/` 是否登记五个角色入口:待填写
133
133
  - `sessionStatus` 是否只使用 pending / creating / created / onboarding / ready / blocked / failed / closed:待填写
134
- - `roleSessionIdempotency` 是否为 taskId + roleId + provider + targetVersion:待填写
134
+ - `roleSessionIdempotency` 是否为 v1.9 八字段 projectRootHash、workspaceScope、repositoryScopeHash、workstream、taskId、roleId、provider、targetVersion 的 RFC8785-JCS-SHA-256:待填写;旧四字段仅作创建兼容索引,不得参与候选选择或复用
135
135
  - 真实 `sessionId` 是否来自宿主返回值:待填写
136
136
  - 是否不存在伪造 sessionId:待填写
137
137
  - 创建后是否先进入只读 onboarding,未直接 ready:待填写
@@ -146,3 +146,24 @@
146
146
  - decision=direct-map/rewrite-required/backend-required/unsupported/pending/unknown
147
147
  - status=planned/assessing/partial/blocked/paused/completed
148
148
  - coverage=full/partial/unknown
149
+
150
+ ## v1.8 检查
151
+
152
+ - `xinyun-ai/coordination/` 的事实、台账、冲突和事务文件是否可追溯。
153
+ - 是否统一使用 `assignmentStatus`,且与 `usageStatus` 合法映射。
154
+ - 前端 audit-only 是否零 diff,refactor-now 是否有确认、哈希、diff 和测试证据。
155
+ - 临时会话是否遵守单变更域、并发上限 3、unknown occupancy 和 releaseAudit。
156
+ - 是否未执行自动安装依赖、业务代码修改、数据库/API改动或 Git 写操作。
157
+
158
+ ## v1.9 检查
159
+
160
+ - 项目身份是否使用 realpath / lexical-fallback、Unicode NFC、projectRootHash 和 repositoryScopeHash:待填写
161
+ - 会话候选是否使用固定 sessionMatchStatus,且只有 reusable / renamed 可绑定:待填写
162
+ - 是否记录 hostRecoveryAvailable、hostRecoveryEvidence、selectionEvidence 和改名 audit:待填写
163
+ - 中文职责化名称是否稳定且未暴露内部资格检查文案:待填写
164
+ - technical-landscape 是否满足 full coverage、unverifiedScope 为空和核心证据完整才 ready:待填写
165
+ - requirementPacket / technicalImpactPacket 是否同 requirementId、taskId、projectRootHash、version 和 JCS-SHA-256 hash:待填写
166
+ - packet 变化是否进入 `blockedReason=packet-stale`:待填写
167
+ - 数据库默认是否为 `sql-only`:待填写
168
+ - connectionStatus、queryAuthorization、schemaChangeAuthorization、dataMutationAuthorization 是否独立:待填写
169
+ - statementHash、targetEnvironment、executionStatus 和 audit 是否完整:待填写
@@ -215,7 +215,7 @@
215
215
  - role session bindings:xinyun-ai/sessions/role-session-bindings.json
216
216
  - role session directory:xinyun-ai/sessions/roles/
217
217
  - sessionStatus:pending / creating / created / onboarding / ready / blocked / failed / closed
218
- - roleSessionIdempotency:JCS-SHA-256(taskId, roleId, provider, targetVersion)
218
+ - roleSessionIdempotency:RFC8785-JCS-SHA-256(projectRootHash, workspaceScope, repositoryScopeHash, workstream, taskId, roleId, provider, targetVersion);v1.7.3 四字段仅作创建兼容索引,不参与候选选择、复用或跨项目身份判定
219
219
  - parentSessionId:待填写
220
220
  - real sessionId:待填写;不得伪造 sessionId
221
221
  - onboarding:created 后先只读 onboarding,不能直接 ready
@@ -228,3 +228,20 @@
228
228
  - decision=direct-map/rewrite-required/backend-required/unsupported/pending/unknown
229
229
  - status=planned/assessing/partial/blocked/paused/completed
230
230
  - coverage=full/partial/unknown
231
+
232
+ ## v1.8 协作能力
233
+
234
+ - 共享事实与冲突协调:`xinyun-ai/coordination/`;状态字段按 fact/change/conflict/task/refresh 分域。
235
+ - Skill 路由:`xinyun-ai/skills/`;正式字段为 `assignmentStatus` 与 `usageStatus`。
236
+ - 前端耦合审计:`xinyun-ai/frontend-audits/`;audit-only 零 diff。
237
+ - 临时程序员会话:最多 3 个并行运行额度;unknown occupancy 不自动释放。
238
+
239
+ ## v1.9 项目身份、会话复用与技术联合门禁
240
+
241
+ - 项目身份文件:`xinyun-ai/project-identity.json`。
242
+ - 项目根解析:realpath / lexical-fallback;projectRootHash:SHA-256;repositoryScopeHash:RFC8785 JCS-SHA-256。
243
+ - 会话候选:`reusable/renamed/duplicate-not-primary/other-project/unknown/not-reusable/requires-confirmation`;只有 reusable 或完整改名审计的 renamed 可绑定。
244
+ - 会话展示名:`项目简称|角色中文名|职责名称`;主会话:`项目简称|主会话|项目总调度`。
245
+ - 技术全景:`xinyun-ai/technical-landscape.json`;只有 full coverage、空 unverifiedScope 和核心证据完整才可 ready。
246
+ - packet:`requirement-packet.json` + `technical-impact-packet.json`;使用 RFC8785 JCS-SHA-256,失效时为 `packet-stale`。
247
+ - 数据库默认 `sql-only`;连接、查询、结构变更和数据修改权限独立,执行前校验 statementHash、目标环境和 audit。
@@ -0,0 +1,23 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "projectRootHash": null,
4
+ "workspaceScope": {
5
+ "scopeType": "project-root",
6
+ "scopePathHashes": [],
7
+ "scopeRevision": null
8
+ },
9
+ "repositoryScopeHash": null,
10
+ "workstream": null,
11
+ "identityEvidence": [],
12
+ "normalization": {
13
+ "resolutionMode": "unknown",
14
+ "pathSeparators": "/",
15
+ "unicodeNormalization": "NFC",
16
+ "windowsDriveCase": "upper",
17
+ "windowsCaseSensitivity": "insensitive",
18
+ "unixCaseSensitivity": "sensitive",
19
+ "excludedFields": ["mtime", "inode", "temporaryPath"]
20
+ },
21
+ "createdAt": "2026-07-24T00:00:00.000Z",
22
+ "updatedAt": "2026-07-24T00:00:00.000Z"
23
+ }
@@ -1,5 +1,13 @@
1
1
  {
2
2
  "projectSummary": "",
3
+ "projectIdentity": {
4
+ "path": "xinyun-ai/project-identity.json",
5
+ "projectRootHash": null,
6
+ "workspaceScope": {"scopeType": "project-root", "scopePathHashes": [], "scopeRevision": null},
7
+ "repositoryScopeHash": null,
8
+ "identityEvidence": [],
9
+ "resolutionMode": "unknown"
10
+ },
3
11
  "understanding": {
4
12
  "overall": "quick",
5
13
  "workstreams": {},
@@ -150,8 +158,63 @@
150
158
  "failed",
151
159
  "closed"
152
160
  ],
161
+ "idempotency": {
162
+ "keyFields": [
163
+ "projectRootHash",
164
+ "workspaceScope",
165
+ "repositoryScopeHash",
166
+ "workstream",
167
+ "taskId",
168
+ "roleId",
169
+ "provider",
170
+ "targetVersion"
171
+ ],
172
+ "algorithm": "RFC8785-JCS-SHA-256",
173
+ "duplicatePolicy": "reuse-one-primary-preserve-history",
174
+ "legacyCreationIndexFields": ["taskId", "roleId", "provider", "targetVersion"],
175
+ "legacyCreationIndexPolicy": "compatibility lookup only; never used for candidate selection or cross-project reuse"
176
+ },
153
177
  "records": []
154
178
  },
179
+ "coordination": {
180
+ "enabled": true,
181
+ "directory": "xinyun-ai/coordination/",
182
+ "projectFacts": "xinyun-ai/coordination/project-facts.json",
183
+ "changeLedger": "xinyun-ai/coordination/change-ledger.json",
184
+ "contractSnapshots": "xinyun-ai/coordination/contract-snapshots/",
185
+ "conflictRecords": "xinyun-ai/coordination/conflict-records/",
186
+ "transactions": "xinyun-ai/coordination/.transactions/",
187
+ "statusSources": {
188
+ "taskStatus": "xinyun-ai/tasks/task-index.json",
189
+ "changeStatus": "xinyun-ai/coordination/change-ledger.json",
190
+ "conflictStatus": "xinyun-ai/coordination/conflict-records/<conflictId>.json",
191
+ "refreshStatus": "affected task record"
192
+ },
193
+ "transactionPhaseEnum": ["prepared", "validated", "renamed", "revision-updated", "committed", "recovery-required", "blocked"]
194
+ },
195
+ "skills": {
196
+ "enabled": true,
197
+ "directory": "xinyun-ai/skills/",
198
+ "registry": "xinyun-ai/skills/registry.json",
199
+ "assignments": "xinyun-ai/skills/assignments.json",
200
+ "usageRecords": "xinyun-ai/skills/usage-records/",
201
+ "assignmentStatusField": "assignmentStatus",
202
+ "usageStatusField": "usageStatus"
203
+ },
204
+ "frontendAudit": {
205
+ "enabled": true,
206
+ "directory": "xinyun-ai/frontend-audits/",
207
+ "recordTemplate": "xinyun-ai-init/templates/frontend-audit.template.json",
208
+ "defaultDecision": "audit-only"
209
+ },
210
+ "temporarySessions": {
211
+ "enabled": true,
212
+ "directory": "xinyun-ai/sessions/temporary/",
213
+ "recordTemplate": "xinyun-ai-init/templates/temporary-session.template.json",
214
+ "maxConcurrent": 3,
215
+ "sessionStatusField": "status",
216
+ "occupancyStatusEnum": ["occupied", "released", "unknown"]
217
+ },
155
218
  "codeGraphRequired": {
156
219
  "codeGraphRecordId": null,
157
220
  "required": true,
@@ -185,6 +248,16 @@
185
248
  "indexFile": "xinyun-ai/global-review/index.json",
186
249
  "createOnFastInit": false
187
250
  },
251
+ "v19": {
252
+ "projectIdentity": "xinyun-ai/project-identity.json",
253
+ "sessionCandidates": "xinyun-ai/sessions/session-candidates.json",
254
+ "technicalLandscape": "xinyun-ai/technical-landscape.json",
255
+ "requirementPacket": "xinyun-ai/packets/requirement-packet.json",
256
+ "technicalImpactPacket": "xinyun-ai/packets/technical-impact-packet.json",
257
+ "databaseAuthorization": "xinyun-ai/database/authorization.json",
258
+ "packetHashAlgorithm": "RFC8785-JCS-SHA-256",
259
+ "databaseAccessModeDefault": "sql-only"
260
+ },
188
261
  "requirementParsing": {
189
262
  "enabled": true,
190
263
  "trigger": "ambiguous_or_change_or_high_risk",
@@ -0,0 +1,23 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "packetId": "requirement-packet-template",
4
+ "requirementId": null,
5
+ "taskId": null,
6
+ "projectRootHash": null,
7
+ "version": "1.9.0",
8
+ "status": "captured",
9
+ "content": {
10
+ "userQuote": null,
11
+ "goal": null,
12
+ "acceptanceCriteria": [],
13
+ "priority": null,
14
+ "allowedScope": [],
15
+ "forbiddenScope": [],
16
+ "pendingQuestions": []
17
+ },
18
+ "evidence": [],
19
+ "sourceRevision": null,
20
+ "contentHash": null,
21
+ "createdAt": "2026-07-24T00:00:00.000Z",
22
+ "updatedAt": "2026-07-24T00:00:00.000Z"
23
+ }
@@ -49,5 +49,5 @@
49
49
 
50
50
  - `idempotencyKey` 是对 `{sourceTaskId, roleId, taskKind, targetVersion}` 使用 v1.6 JCS 规范化 JSON 后计算的 SHA-256。
51
51
  - 同一幂等键只允许对应一个角色后续任务;重复升级必须复用任务并补齐索引。
52
- - `sessionIdempotencyKey` 是对 `{taskId, roleId, provider, targetVersion}` 使用 JCS 规范化 JSON 后计算的 SHA-256。
52
+ - `sessionIdempotencyKey` 必须按 v1.9 `{projectRootHash, workspaceScope, repositoryScopeHash, workstream, taskId, roleId, provider, targetVersion}` 使用 RFC8785-JCS-SHA-256 计算;v1.7.3 四字段仅作创建兼容索引,不得参与候选选择、复用或跨项目身份判定。
53
53
  - 同一 `sessionIdempotencyKey` 只允许绑定一个有效真实角色会话;会话已创建但本地回写失败时,下次升级必须按该键查询并补齐绑定,不得创建第二个会话。
@@ -6,7 +6,16 @@
6
6
  "sessionId": null,
7
7
  "parentSessionId": null,
8
8
  "provider": "codex",
9
- "targetVersion": "1.7.3",
9
+ "targetVersion": "1.9.0",
10
+ "projectRootHash": null,
11
+ "workspaceScope": {"scopeType": "project-root", "scopePathHashes": [], "scopeRevision": null},
12
+ "repositoryScopeHash": null,
13
+ "workstream": null,
14
+ "permissionScope": [],
15
+ "sessionMatchStatus": "unknown",
16
+ "hostRecoveryAvailable": false,
17
+ "hostRecoveryEvidence": [],
18
+ "selectionEvidence": null,
10
19
  "sessionStatus": "pending",
11
20
  "understandingStatus": "pending",
12
21
  "confirmationStatus": "pending",
@@ -39,5 +48,12 @@
39
48
  "reason": null,
40
49
  "fakeSessionIdProhibited": true
41
50
  },
42
- "audit": []
51
+ "audit": [],
52
+ "renameAudit": null,
53
+ "displayName": null,
54
+ "projectDisplayName": null,
55
+ "roleDisplayName": null,
56
+ "responsibilityLabel": null,
57
+ "titleSource": "role-contract",
58
+ "titleVersion": "1.9.0"
43
59
  }
@@ -0,0 +1,19 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "candidates": [],
4
+ "sessionMatchStatusEnum": ["reusable", "renamed", "duplicate-not-primary", "other-project", "unknown", "not-reusable", "requires-confirmation"],
5
+ "reusableSessionStatusEnum": ["created", "onboarding", "ready"],
6
+ "selectionEvidence": {
7
+ "selectedSessionId": null,
8
+ "candidateSessionIds": [],
9
+ "ruleOrder": ["valid-binding", "reusable", "identity-complete", "ready", "updatedAt-desc", "sessionId-unicode-asc"],
10
+ "reason": null,
11
+ "checkedAt": null
12
+ },
13
+ "candidateRequiredFields": ["sessionId", "provider", "projectRootHash", "workspaceScope", "repositoryScopeHash", "workstream", "roleId", "taskId", "sessionStatus", "permissionScope", "updatedAt", "identityEvidence", "hostRecoveryAvailable", "hostRecoveryEvidence", "sessionMatchStatus"],
14
+ "reuseIdempotency": {
15
+ "keyFields": ["projectRootHash", "workspaceScope", "repositoryScopeHash", "workstream", "taskId", "roleId", "provider", "targetVersion"],
16
+ "algorithm": "RFC8785-JCS-SHA-256",
17
+ "duplicatePolicy": "reuse-one-primary-preserve-history"
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "assignments": [],
4
+ "recordContract": {
5
+ "requiredFields": ["assignmentId", "skillId", "roleId", "taskId", "workstream", "matchReason", "permittedPaths", "assignmentStatus", "usageRecordId", "createdAt", "updatedAt"],
6
+ "assignmentStatusEnum": ["pending", "selected", "running", "completed", "fallback", "blocked", "cancelled"],
7
+ "usageStatusEnum": ["selected", "running", "completed", "failed", "skipped", "fallback", "blocked"],
8
+ "statusMapping": {
9
+ "pending": ["selected"],
10
+ "selected": ["selected", "running"],
11
+ "running": ["running"],
12
+ "completed": ["completed"],
13
+ "fallback": ["fallback"],
14
+ "blocked": ["failed", "blocked"],
15
+ "cancelled": ["skipped"]
16
+ },
17
+ "failedRule": "usageStatus=failed requires assignmentStatus=blocked, failureReason and nextAction"
18
+ }
19
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "skills": [],
4
+ "recordContract": {
5
+ "requiredFields": ["skillId", "name", "version", "source", "digest", "description", "priority", "availabilityStatus", "trustStatus", "reviewedAt", "allowedRoles", "frameworks", "platforms", "dependencies", "permissions", "evidence", "fallbackPlan", "createdAt", "updatedAt"],
6
+ "availabilityStatusEnum": ["available", "unavailable", "disabled", "unknown"],
7
+ "trustStatusEnum": ["unreviewed", "reviewed", "blocked", "expired"]
8
+ },
9
+ "selectionOrder": ["project-binding", "framework-specific", "generic", "fallback"]
10
+ }
@@ -28,9 +28,11 @@
28
28
  "duplicatePolicy": "reuse"
29
29
  },
30
30
  "roleSessionIdempotency": {
31
- "keyFields": ["taskId", "roleId", "provider", "targetVersion"],
32
- "algorithm": "JCS-SHA-256",
33
- "duplicatePolicy": "reuse"
31
+ "keyFields": ["projectRootHash", "workspaceScope", "repositoryScopeHash", "workstream", "taskId", "roleId", "provider", "targetVersion"],
32
+ "algorithm": "RFC8785-JCS-SHA-256",
33
+ "duplicatePolicy": "reuse-one-primary-preserve-history",
34
+ "legacyCreationIndexFields": ["taskId", "roleId", "provider", "targetVersion"],
35
+ "legacyCreationIndexPolicy": "compatibility lookup only; never used for candidate selection or cross-project reuse"
34
36
  },
35
37
  "tasks": [],
36
38
  "roleSessionBindings": [],
@@ -0,0 +1,31 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "packetId": "technical-impact-packet-template",
4
+ "requirementId": null,
5
+ "taskId": null,
6
+ "projectRootHash": null,
7
+ "version": "1.9.0",
8
+ "status": "not-started",
9
+ "content": {
10
+ "summary": null,
11
+ "affectedPorts": [],
12
+ "affectedRepositories": [],
13
+ "affectedFiles": [],
14
+ "affectedApis": [],
15
+ "affectedFields": [],
16
+ "affectedComponents": [],
17
+ "affectedFlows": [],
18
+ "dependencies": [],
19
+ "conflicts": [],
20
+ "risks": [],
21
+ "expectedDiff": [],
22
+ "testPlan": [],
23
+ "unverifiedScope": [],
24
+ "executionRecommendation": null
25
+ },
26
+ "evidence": [],
27
+ "sourceRevision": null,
28
+ "contentHash": null,
29
+ "createdAt": "2026-07-24T00:00:00.000Z",
30
+ "updatedAt": "2026-07-24T00:00:00.000Z"
31
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "recordId": "technical-landscape-template",
4
+ "projectIdentity": "xinyun-ai/project-identity.json",
5
+ "coveredPorts": [],
6
+ "coveredRepositories": [],
7
+ "frameworks": [],
8
+ "runtimes": [],
9
+ "apiContracts": [],
10
+ "databaseContracts": [],
11
+ "components": [],
12
+ "routes": [],
13
+ "businessTechnicalFlows": [],
14
+ "dependencies": [],
15
+ "risks": [],
16
+ "adoptedLegacyFindings": [],
17
+ "pendingFindings": [],
18
+ "conflicts": [],
19
+ "unverifiedScope": [],
20
+ "evidence": [],
21
+ "coverage": {
22
+ "plannedPorts": [],
23
+ "actualPorts": [],
24
+ "plannedRepositories": [],
25
+ "actualRepositories": [],
26
+ "plannedObjectTypes": [],
27
+ "actualObjectCounts": {},
28
+ "unverifiedScope": [],
29
+ "coverageStatus": "unknown",
30
+ "coverageEvidence": []
31
+ },
32
+ "status": "not-started",
33
+ "landscapeVersion": "1.9.0",
34
+ "contentHash": null,
35
+ "sourceRevisions": [],
36
+ "invalidatedBy": [],
37
+ "refreshedAt": null,
38
+ "refreshedBy": null,
39
+ "createdAt": "2026-07-24T00:00:00.000Z",
40
+ "updatedAt": "2026-07-24T00:00:00.000Z"
41
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "taskId": "",
3
+ "parentTaskId": "",
4
+ "moduleId": "",
5
+ "moduleOwnerTaskId": "",
6
+ "executorType": "temporary-programmer",
7
+ "provider": "codex",
8
+ "sessionId": null,
9
+ "parentSessionId": null,
10
+ "planId": "",
11
+ "userConfirmationId": "",
12
+ "permittedPaths": [],
13
+ "changeDomain": [],
14
+ "autoCreated": true,
15
+ "autoClose": true,
16
+ "status": "pending",
17
+ "occupancyStatus": "released",
18
+ "leaseId": null,
19
+ "attempt": 1,
20
+ "failureReason": null,
21
+ "nextAction": "awaiting-confirmation",
22
+ "closeEvidence": null,
23
+ "createdAt": "",
24
+ "updatedAt": "",
25
+ "closedAt": null,
26
+ "closedBy": null,
27
+ "releaseAudit": null,
28
+ "statusEnum": ["pending", "creating", "onboarding", "queued", "executing", "waiting-review", "completed", "blocked", "failed", "closed", "cancelled"],
29
+ "occupancyStatusEnum": ["occupied", "released", "unknown"],
30
+ "maxConcurrent": 3,
31
+ "unknownPolicy": "unknown occupancy continues to consume capacity until complete releaseAudit is recorded"
32
+ }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "packageName": "xinyun-ai-init",
3
3
  "displayName": "欣芸技术开发 Agent 流初始化包",
4
- "version": "1.7.3",
5
- "scriptVersion": "2026.07.22",
4
+ "version": "1.9.0",
5
+ "scriptVersion": "2026.07.23",
6
6
  "schemaVersion": "1",
7
7
  "defaultMode": "fast-init",
8
8
  "targetWorkspace": "xinyun-ai",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pm_zhousl/xinyun-ai-init",
3
- "version": "1.7.3",
3
+ "version": "1.9.0",
4
4
  "description": "欣芸技术开发 Agent 流初始化包",
5
5
  "bin": {
6
6
  "xinyun-ai-init": "bin/xinyun-ai-init.js"