@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.
- package/README.md +1 -1
- package/init/xinyun-ai-init/README.md +30 -4
- package/init/xinyun-ai-init/rules/coordination.md +33 -0
- package/init/xinyun-ai-init/rules/directory-self-completion.md +19 -0
- package/init/xinyun-ai-init/rules/frontend-audit.md +9 -0
- package/init/xinyun-ai-init/rules/init-rules.md +16 -1
- package/init/xinyun-ai-init/rules/session-workbench.md +18 -1
- package/init/xinyun-ai-init/rules/skills.md +15 -0
- package/init/xinyun-ai-init/rules/temporary-sessions.md +9 -0
- package/init/xinyun-ai-init/rules/upgrade-rules.md +14 -1
- package/init/xinyun-ai-init/templates/AGENTS.template.md +18 -2
- package/init/xinyun-ai-init/templates/coordination-change-ledger.template.json +10 -0
- package/init/xinyun-ai-init/templates/coordination-conflict-record.template.json +13 -0
- package/init/xinyun-ai-init/templates/coordination-contract-snapshot.template.json +9 -0
- package/init/xinyun-ai-init/templates/coordination-project-facts.template.json +9 -0
- package/init/xinyun-ai-init/templates/coordination-transaction.template.json +16 -0
- package/init/xinyun-ai-init/templates/core-rules.template.md +29 -3
- package/init/xinyun-ai-init/templates/current-task.template.md +24 -0
- package/init/xinyun-ai-init/templates/database-authorization.template.json +39 -0
- package/init/xinyun-ai-init/templates/frontend-audit.template.json +27 -0
- package/init/xinyun-ai-init/templates/init-result.template.json +10 -1
- package/init/xinyun-ai-init/templates/managed-baseline.template.json +2 -2
- package/init/xinyun-ai-init/templates/manifest.template.json +69 -6
- package/init/xinyun-ai-init/templates/project-check.template.md +22 -1
- package/init/xinyun-ai-init/templates/project-guide.template.md +18 -1
- package/init/xinyun-ai-init/templates/project-identity.template.json +23 -0
- package/init/xinyun-ai-init/templates/project-index.template.json +73 -0
- package/init/xinyun-ai-init/templates/requirement-packet.template.json +23 -0
- package/init/xinyun-ai-init/templates/role-execution.template.md +1 -1
- package/init/xinyun-ai-init/templates/role-session-binding.template.json +18 -2
- package/init/xinyun-ai-init/templates/session-candidates.template.json +19 -0
- package/init/xinyun-ai-init/templates/skills-assignments.template.json +19 -0
- package/init/xinyun-ai-init/templates/skills-registry.template.json +10 -0
- package/init/xinyun-ai-init/templates/task-index.template.json +5 -3
- package/init/xinyun-ai-init/templates/technical-impact-packet.template.json +31 -0
- package/init/xinyun-ai-init/templates/technical-landscape.template.json +41 -0
- package/init/xinyun-ai-init/templates/temporary-session.template.json +32 -0
- package/init/xinyun-ai-init/version.json +2 -2
- package/package.json +1 -1
- package/scripts/verify-init-package.js +309 -30
- package/scripts/verify-rules-package.js +197 -12
- package/test-scenarios/README.md +16 -4
- package/test-scenarios/fixtures/v1.9.0-behavior-fixture/README.md +9 -0
- package/test-scenarios/review-template.md +12 -0
- package/test-scenarios/scenarios.md +90 -3
- package/test-scenarios/v1.8.0-scenarios.md +39 -0
- package/test-scenarios/v1.9.0-behavior-evidence.json +269 -0
- package/test-scenarios/v1.9.0-scenarios.md +55 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"projectName": "",
|
|
3
|
-
"xinyunAiVersion": "1.
|
|
4
|
-
"scriptVersion": "2026.07.
|
|
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.
|
|
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` 是否为
|
|
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`
|
|
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.
|
|
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.
|
|
5
|
-
"scriptVersion": "2026.07.
|
|
4
|
+
"version": "1.9.0",
|
|
5
|
+
"scriptVersion": "2026.07.23",
|
|
6
6
|
"schemaVersion": "1",
|
|
7
7
|
"defaultMode": "fast-init",
|
|
8
8
|
"targetWorkspace": "xinyun-ai",
|