@pm_zhousl/xinyun-ai-init 1.16.0 → 2.0.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 (74) hide show
  1. package/README.md +10 -15
  2. package/init/xinyun-ai-init/README.md +112 -1117
  3. package/init/xinyun-ai-init/rules/coordination.md +30 -20
  4. package/init/xinyun-ai-init/rules/directory-self-completion.md +4 -0
  5. package/init/xinyun-ai-init/rules/init-rules.md +6 -0
  6. package/init/xinyun-ai-init/rules/session-workbench.md +6 -0
  7. package/init/xinyun-ai-init/rules/skills.md +8 -0
  8. package/init/xinyun-ai-init/rules/temporary-sessions.md +4 -0
  9. package/init/xinyun-ai-init/rules/upgrade-rules.md +6 -0
  10. package/init/xinyun-ai-init/rules/v2.0.0-shared-project-conversations.md +68 -0
  11. package/init/xinyun-ai-init/rules/v2.0.0-single-session-skills.md +89 -0
  12. package/init/xinyun-ai-init/templates/AGENTS.template.md +16 -231
  13. package/init/xinyun-ai-init/templates/README.template.md +26 -39
  14. package/init/xinyun-ai-init/templates/agent-profile.template.json +10 -15
  15. package/init/xinyun-ai-init/templates/bootstrap-snapshot.template.json +6 -1
  16. package/init/xinyun-ai-init/templates/control-plane-index.template.json +32 -26
  17. package/init/xinyun-ai-init/templates/conversation-binding.template.json +26 -0
  18. package/init/xinyun-ai-init/templates/conversation-event.template.json +24 -0
  19. package/init/xinyun-ai-init/templates/conversation-registry.template.json +15 -0
  20. package/init/xinyun-ai-init/templates/conversation-stream-head.template.json +14 -0
  21. package/init/xinyun-ai-init/templates/conversation-sync-cursor.template.json +13 -0
  22. package/init/xinyun-ai-init/templates/coordination-change-ledger.template.json +6 -3
  23. package/init/xinyun-ai-init/templates/coordination-conflict-record.template.json +6 -1
  24. package/init/xinyun-ai-init/templates/coordination-project-facts.template.json +5 -3
  25. package/init/xinyun-ai-init/templates/core-rules.template.md +42 -621
  26. package/init/xinyun-ai-init/templates/current-task.template.md +24 -322
  27. package/init/xinyun-ai-init/templates/handoff.template.json +9 -14
  28. package/init/xinyun-ai-init/templates/init-result.template.json +21 -216
  29. package/init/xinyun-ai-init/templates/initialization-recovery.template.json +12 -17
  30. package/init/xinyun-ai-init/templates/initialization-stages.template.json +10 -10
  31. package/init/xinyun-ai-init/templates/local-query-index.template.json +1 -1
  32. package/init/xinyun-ai-init/templates/manifest.template.json +80 -387
  33. package/init/xinyun-ai-init/templates/multi-conversation-migration.template.json +24 -0
  34. package/init/xinyun-ai-init/templates/onboarding-report.template.json +22 -17
  35. package/init/xinyun-ai-init/templates/orchestrator.template.json +20 -10
  36. package/init/xinyun-ai-init/templates/preflight-report.template.json +18 -39
  37. package/init/xinyun-ai-init/templates/project-check.template.md +42 -184
  38. package/init/xinyun-ai-init/templates/project-context.template.json +20 -0
  39. package/init/xinyun-ai-init/templates/project-guide.template.md +42 -249
  40. package/init/xinyun-ai-init/templates/project-index.template.json +47 -415
  41. package/init/xinyun-ai-init/templates/project-status.template.json +17 -42
  42. package/init/xinyun-ai-init/templates/provider-adapter.template.json +20 -33
  43. package/init/xinyun-ai-init/templates/re-takeover-record.template.json +37 -0
  44. package/init/xinyun-ai-init/templates/session-binding.template.json +21 -18
  45. package/init/xinyun-ai-init/templates/single-session-migration.template.json +31 -0
  46. package/init/xinyun-ai-init/templates/skill-run-record.template.json +10 -6
  47. package/init/xinyun-ai-init/templates/skill-runtime-route.template.json +17 -4
  48. package/init/xinyun-ai-init/templates/skills-assignments.template.json +18 -13
  49. package/init/xinyun-ai-init/templates/skills-registry.template.json +24 -2
  50. package/init/xinyun-ai-init/templates/sync-check.template.json +23 -0
  51. package/init/xinyun-ai-init/templates/takeover-gate.template.json +13 -8
  52. package/init/xinyun-ai-init/templates/task-graph.template.json +5 -14
  53. package/init/xinyun-ai-init/templates/task-index.template.json +27 -84
  54. package/init/xinyun-ai-init/templates/task-lease.template.json +19 -0
  55. package/init/xinyun-ai-init/templates/task-main.template.md +28 -37
  56. package/init/xinyun-ai-init/version.json +4 -3
  57. package/package.json +8 -3
  58. package/scripts/collect-v2-evidence.js +35 -0
  59. package/scripts/publish-with-token.ps1 +6 -16
  60. package/scripts/run-v2-runtime-probe.js +110 -0
  61. package/scripts/verify-init-package.js +5 -0
  62. package/scripts/verify-multi-conversation-contract.js +61 -0
  63. package/scripts/verify-re-takeover-contract.js +54 -0
  64. package/scripts/verify-release-gate.js +21 -13
  65. package/scripts/verify-rules-package.js +7 -0
  66. package/scripts/verify-rules-tarball-security.js +1 -1
  67. package/scripts/verify-v2-package.js +210 -0
  68. package/scripts/verify-v2-tarball.js +73 -0
  69. package/test-scenarios/multi-conversation-evidence.json +26 -0
  70. package/test-scenarios/multi-conversation-scenarios.md +16 -0
  71. package/test-scenarios/re-takeover-evidence.json +20 -0
  72. package/test-scenarios/re-takeover-scenarios.md +33 -0
  73. package/test-scenarios/v2.0.0-behavior-evidence.json +40 -0
  74. package/test-scenarios/v2.0.0-scenarios.md +21 -0
@@ -1,18 +1,18 @@
1
1
  {
2
- "schemaVersion": 1,
2
+ "schemaVersion": 2,
3
+ "executionModel": "shared-project-multi-conversation-runtime",
3
4
  "initializationId": "initialization-template",
4
5
  "status": "initializing",
5
- "statusEnum": ["initializing", "partial", "blocked", "ready"],
6
6
  "stageStatusEnum": ["pending", "running", "completed", "skipped", "partial", "blocked", "recovery-required"],
7
7
  "stages": [
8
- {"stageId": "preflight", "status": "pending", "attempt": 0, "cacheHit": false, "startedAt": null, "finishedAt": null, "durationMs": null, "failureReason": null, "nextAction": null},
9
- {"stageId": "fixed-materialization", "status": "pending", "attempt": 0, "cacheHit": false, "startedAt": null, "finishedAt": null, "durationMs": null, "failureReason": null, "nextAction": null},
10
- {"stageId": "control-plane", "status": "pending", "attempt": 0, "cacheHit": false, "startedAt": null, "finishedAt": null, "durationMs": null, "failureReason": null, "nextAction": null},
11
- {"stageId": "codegraph", "status": "pending", "attempt": 0, "cacheHit": false, "startedAt": null, "finishedAt": null, "durationMs": null, "failureReason": null, "nextAction": null},
12
- {"stageId": "bootstrap-snapshot", "status": "pending", "attempt": 0, "cacheHit": false, "startedAt": null, "finishedAt": null, "durationMs": null, "failureReason": null, "nextAction": null},
13
- {"stageId": "role-sessions", "status": "pending", "attempt": 0, "cacheHit": false, "startedAt": null, "finishedAt": null, "durationMs": null, "failureReason": null, "nextAction": null},
14
- {"stageId": "onboarding", "status": "pending", "attempt": 0, "cacheHit": false, "startedAt": null, "finishedAt": null, "durationMs": null, "failureReason": null, "nextAction": null},
15
- {"stageId": "final-gate", "status": "pending", "attempt": 0, "cacheHit": false, "startedAt": null, "finishedAt": null, "durationMs": null, "failureReason": null, "nextAction": null}
8
+ {"stageId": "preflight", "status": "pending", "attempt": 0, "startedAt": null, "finishedAt": null, "failureReason": null},
9
+ {"stageId": "task-transaction", "status": "pending", "attempt": 0, "startedAt": null, "finishedAt": null, "failureReason": null},
10
+ {"stageId": "main-session", "status": "pending", "attempt": 0, "startedAt": null, "finishedAt": null, "failureReason": null},
11
+ {"stageId": "skill-registry", "status": "pending", "attempt": 0, "startedAt": null, "finishedAt": null, "failureReason": null},
12
+ {"stageId": "codegraph", "status": "pending", "attempt": 0, "startedAt": null, "finishedAt": null, "failureReason": null},
13
+ {"stageId": "legacy-migration", "status": "pending", "attempt": 0, "startedAt": null, "finishedAt": null, "failureReason": null},
14
+ {"stageId": "onboarding", "status": "pending", "attempt": 0, "startedAt": null, "finishedAt": null, "failureReason": null},
15
+ {"stageId": "final-gate", "status": "pending", "attempt": 0, "startedAt": null, "finishedAt": null, "failureReason": null}
16
16
  ],
17
17
  "updatedAt": null
18
18
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "indexId": "local-query-index-template",
4
- "indexVersion": "1.16.0",
4
+ "indexVersion": "2.0.0",
5
5
  "sourcePaths": [],
6
6
  "sourceHash": null,
7
7
  "builtAt": null,
@@ -1,402 +1,95 @@
1
1
  {
2
- "projectName": "",
3
- "xinyunAiVersion": "1.16.0",
4
- "scriptVersion": "2026.07.31",
5
- "schemaVersion": "1",
6
- "initializationMode": "fast",
7
- "expansionMode": "triggered",
8
- "currentTask": "xinyun-ai/current-task.md",
9
- "understanding": {
10
- "overall": "quick",
11
- "workstreams": {},
12
- "database": "unknown",
13
- "api": "unknown",
14
- "git": "unknown"
15
- },
16
- "codegraph": { "enabled": false, "status": "unknown" },
17
- "agentCore": {
18
- "version": "1.16.0",
19
- "profile": "xinyun-ai/agent-profile.json",
20
- "capabilities": "xinyun-ai/agent-capabilities.json",
21
- "takeoverGate": "xinyun-ai/takeover-gate.json",
22
- "orchestrator": "xinyun-ai/tasks/orchestrator.json",
23
- "taskGraph": "xinyun-ai/tasks/task-graph.json",
24
- "handoffsDirectory": "xinyun-ai/handoffs/",
25
- "finalDelivery": "xinyun-ai/final-delivery.json",
26
- "statusEnum": ["ready", "partial", "blocked", "manual-required"],
27
- "status": "manual-required"
28
- },
29
- "index": { "primary": "json_markdown", "sqlite": "optional" },
30
- "capabilities": {
31
- "confirmationGate": true,
32
- "legacyRuleHandoff": true,
33
- "lightFrameworkDetection": true,
34
- "focusedSearchResponse": true,
35
- "safeExecutionGate": true,
36
- "restrainedProductionCopy": true,
37
- "doubleSessionMvp": true,
38
- "unifiedEntryPriority": true,
39
- "legacyHandoffClassification": true,
40
- "globalReview": true,
41
- "chineseRequirementParsing": true,
42
- "frameworkEvidenceBudget": true,
43
- "readonlyGitRepositoryIndex": true,
44
- "boundedFieldImpactReview": true,
45
- "fieldChangeRequirementRouting": true,
46
- "teamResponsibilityClosure": true,
47
- "workspaceTaskHistory": true,
48
- "idempotentInitialization": true,
49
- "upgradeConflictProtection": true,
50
- "capabilityDetectionEvidence": true,
51
- "localTaskLock": true,
52
- "sensitiveRedaction": true,
53
- "rulePackageConsistencyCheck": true,
54
- "technologyStackProfile": true,
55
- "thinkphpDeepProfile": true,
56
- "htmlToClientMigrationPreparation": true,
57
- "namedInitializationTaskTree": true,
58
- "taskArchiveTransactions": true,
59
- "codeGraphRequiredInitialization": true,
60
- "roleExecutionVisibility": true,
61
- "codexRoleSessionOrchestration": true,
62
- "sharedProjectFactsCoordination": true,
63
- "skillRouting": true,
64
- "frontendCouplingAudit": true,
65
- "temporaryProgrammerSessions": true
66
- ,"projectSessionIsolation": true
67
- ,"roleDisplayNaming": true
68
- ,"technicalLandscapeCoordination": true
69
- ,"databaseSqlOnlyAuthorization": true
70
- ,"projectAiTakeoverGate": true
71
- ,"hostPreflightRecovery": true
72
- ,"manualRoleSessionBinding": true
73
- ,"codeGraphIncrementalReuse": true
74
- ,"sharedProjectSnapshot": true
75
- ,"initializationTiming": true
76
- ,"hostCapabilityPreflight": true
77
- ,"projectStatusGate": true
78
- ,"takeoverBaseline": true
79
- ,"providerSpecificSessionBinding": true
2
+ "schemaVersion": 2,
3
+ "xinyunAiVersion": "2.0.0",
4
+ "executionModel": "shared-project-multi-conversation-runtime",
5
+ "projectName": null,
6
+ "projectIdentityPath": "xinyun-ai/project-identity.json",
7
+ "currentTaskPath": "xinyun-ai/current-task.md",
8
+ "rulesEntry": "xinyun-ai/rules/core-rules.md",
9
+ "projectIndexPath": "xinyun-ai/index/project-index.json",
10
+ "controlPlaneIndexPath": "xinyun-ai/index/control-plane-index.json",
11
+ "projectContextPath": "xinyun-ai/project-context.json",
12
+ "reTakeover": {
13
+ "recordPath": "xinyun-ai/index/re-takeover-record.json",
14
+ "snapshotPath": "xinyun-ai/index/bootstrap-snapshot.json",
15
+ "mode": "read-project-then-validate-execution",
16
+ "contextStatusEnum": ["unknown", "assessing", "context-ready", "partial", "stale", "blocked"],
17
+ "understandingStatusEnum": ["unknown", "quick", "expanded", "verified", "stale"],
18
+ "incrementalBySourceHash": true,
19
+ "executionRequiresConversationBindingEvidence": true,
20
+ "threadIdPolicy": "host-thread-candidate-only"
80
21
  },
81
22
  "tasking": {
82
- "currentTask": "xinyun-ai/current-task.md",
83
23
  "tasksDirectory": "xinyun-ai/tasks/",
84
- "idempotencyDirectory": "xinyun-ai/tasks/.idempotency/",
85
24
  "taskIndex": "xinyun-ai/tasks/task-index.json",
86
- "archiveDirectory": "xinyun-ai/tasks/archive/",
87
- "archiveTransactionsDirectory": "xinyun-ai/tasks/.archive-transactions/",
88
- "archiveTempDirectory": "xinyun-ai/tasks/.archive-tmp/",
89
- "initResult": "xinyun-ai/init-result.json",
90
- "taskLock": "xinyun-ai/task-lock.json",
91
- "managedBaseline": "xinyun-ai/index/managed-baseline.json",
92
- "capabilities": "xinyun-ai/index/capabilities.json",
93
- "mainTaskTemplate": "xinyun-ai-init/templates/task-main.template.md",
94
- "roleSubtaskTemplate": "xinyun-ai-init/templates/role-subtask.template.md",
95
- "taskIndexTemplate": "xinyun-ai-init/templates/task-index.template.json",
96
- "archiveTransactionTemplate": "xinyun-ai-init/templates/archive-transaction.template.json",
97
- "roleExecutionDirectory": "xinyun-ai/tasks/role-execution/",
98
- "roleExecutionTemplate": "xinyun-ai-init/templates/role-execution.template.md",
99
- "roleSessionBindings": "xinyun-ai/sessions/role-session-bindings.json",
100
- "roleSessionBindingTemplate": "xinyun-ai-init/templates/role-session-binding.template.json",
101
- "providerSessionBindingTemplate": "xinyun-ai-init/templates/provider-session-binding.template.json",
102
- "providerSessionBindings": "xinyun-ai/sessions/provider-session-bindings.json",
103
- "projectStatus": "xinyun-ai/project-status.json",
104
- "preflightReport": "xinyun-ai/preflight-report.json",
105
- "onboardingReport": "xinyun-ai/onboarding-report.json",
106
- "hostCapabilities": "xinyun-ai/host-capabilities.json",
107
- "takeoverBaseline": "xinyun-ai/index/takeover-baseline.json",
108
- "controlPlaneIndex": "xinyun-ai/index/control-plane-index.json",
109
- "providerAdapter": "xinyun-ai/sessions/provider-adapter.json",
110
- "manualSessionRecovery": "xinyun-ai/sessions/manual-session-recovery.json",
111
- "initializationChangeReport": "xinyun-ai/index/initialization-change-report.json"
112
- },
113
- "roleSessions": {
114
- "enabled": true,
115
- "provider": "codex",
116
- "directory": "xinyun-ai/sessions/roles/",
117
- "bindings": "xinyun-ai/sessions/role-session-bindings.json",
118
- "bindingTemplate": "xinyun-ai-init/templates/role-session-binding.template.json",
119
- "providerSessionBindingTemplate": "xinyun-ai-init/templates/provider-session-binding.template.json",
120
- "providerSessionBindings": "xinyun-ai/sessions/provider-session-bindings.json",
121
- "parentSessionId": null,
122
- "targetVersion": "1.16.0",
123
- "requiredRoleCount": 5,
124
- "statusEnum": [
125
- "pending",
126
- "creating",
127
- "created",
128
- "onboarding",
129
- "ready",
130
- "blocked",
131
- "failed",
132
- "closed"
25
+ "taskGraph": "xinyun-ai/tasks/task-graph.json",
26
+ "transactionsDirectory": "xinyun-ai/tasks/.transactions/",
27
+ "idempotencyDirectory": "xinyun-ai/tasks/.idempotency/",
28
+ "currentTask": "xinyun-ai/current-task.md",
29
+ "atomicWriteRequired": true,
30
+ "consistencyFailureStatus": "blocked"
31
+ },
32
+ "conversations": {
33
+ "projectContext": "xinyun-ai/project-context.json",
34
+ "registry": "xinyun-ai/conversations/registry.json",
35
+ "bindingsDirectory": "xinyun-ai/conversations/bindings/",
36
+ "activeConversationLimit": null,
37
+ "bindingTemplate": "xinyun-ai-init/templates/conversation-binding.template.json",
38
+ "requiredEvidenceCategories": [
39
+ "create-or-reuse",
40
+ "send",
41
+ "receive",
42
+ "query-status",
43
+ "recover",
44
+ "close",
45
+ "control-file-read-write"
133
46
  ],
134
- "idempotency": {
135
- "keyFields": [
136
- "projectRootHash",
137
- "workspaceScope",
138
- "repositoryScopeHash",
139
- "workstream",
140
- "taskId",
141
- "roleId",
142
- "provider",
143
- "targetVersion"
144
- ],
145
- "algorithm": "RFC8785-JCS-SHA-256",
146
- "duplicatePolicy": "reuse-one-primary-preserve-history",
147
- "legacyCreationIndexFields": ["taskId", "roleId", "provider", "targetVersion"],
148
- "legacyCreationIndexPolicy": "compatibility lookup only; never used for candidate selection or cross-project reuse"
149
- },
150
- "hostUnsupportedPolicy": "local-degraded-no-fake-session-id",
151
- "readyPolicy": "created session enters onboarding first; ready requires role understanding, responsibility confirmation, and execution eligibility gates."
152
- },
153
- "coordination": {
154
- "enabled": true,
155
- "directory": "xinyun-ai/coordination/",
156
- "projectFacts": "xinyun-ai/coordination/project-facts.json",
157
- "changeLedger": "xinyun-ai/coordination/change-ledger.json",
158
- "contractSnapshots": "xinyun-ai/coordination/contract-snapshots/",
159
- "conflictRecords": "xinyun-ai/coordination/conflict-records/",
160
- "transactions": "xinyun-ai/coordination/.transactions/",
161
- "statusSources": {
162
- "taskStatus": "xinyun-ai/tasks/task-index.json",
163
- "changeStatus": "xinyun-ai/coordination/change-ledger.json",
164
- "conflictStatus": "xinyun-ai/coordination/conflict-records/<conflictId>.json",
165
- "refreshStatus": "affected task record"
166
- },
167
- "transactionPhaseEnum": ["prepared", "validated", "renamed", "revision-updated", "committed", "recovery-required", "blocked"]
47
+ "legacyProviderSessionPolicy": "compatibility-only",
48
+ "threadIdPolicy": "host-thread-reference-only"
168
49
  },
169
50
  "skills": {
170
- "enabled": true,
171
- "directory": "xinyun-ai/skills/",
172
51
  "registry": "xinyun-ai/skills/registry.json",
173
52
  "assignments": "xinyun-ai/skills/assignments.json",
174
- "usageRecords": "xinyun-ai/skills/usage-records/",
175
- "assignmentStatusField": "assignmentStatus",
176
- "usageStatusField": "usageStatus"
177
- },
178
- "frontendAudit": {
179
- "enabled": true,
180
- "directory": "xinyun-ai/frontend-audits/",
181
- "recordTemplate": "xinyun-ai-init/templates/frontend-audit.template.json",
182
- "defaultDecision": "audit-only"
183
- },
184
- "temporarySessions": {
185
- "enabled": true,
186
- "directory": "xinyun-ai/sessions/temporary/",
187
- "recordTemplate": "xinyun-ai-init/templates/temporary-session.template.json",
188
- "maxConcurrent": 3,
189
- "sessionStatusField": "status",
190
- "occupancyStatusEnum": ["occupied", "released", "unknown"]
191
- },
192
- "taskTree": {
193
- "enabled": true,
194
- "mainTaskTitlePattern": "项目初始化:<项目显示名>",
195
- "mainTaskPathPattern": "xinyun-ai/tasks/<taskId>.md",
196
- "roleSubtaskPathPattern": "xinyun-ai/tasks/<taskId>/subtasks/<roleTaskId>.md",
197
- "taskIndex": "xinyun-ai/tasks/task-index.json",
198
- "archiveDirectory": "xinyun-ai/tasks/archive/",
199
- "archiveTransactionsDirectory": "xinyun-ai/tasks/.archive-transactions/",
200
- "roleTaskCount": 5,
201
- "roleExecutionDirectory": "xinyun-ai/tasks/role-execution/",
202
- "roleExecutionPathPattern": "xinyun-ai/tasks/role-execution/<roleTaskId>.md",
203
- "roleExecutionTaskKind": "role-execution",
204
- "roleExecutionPriority": {
205
- "project-owner": 10,
206
- "project-product": 20,
207
- "chief-engineer": 30,
208
- "programmer": 40,
209
- "test-reviewer": 50
210
- },
211
- "taskSortOrder": ["priority", "createdAt", "roleId", "taskId"]
53
+ "routesDirectory": "xinyun-ai/skills/routes/",
54
+ "usageRecordsDirectory": "xinyun-ai/skills/usage-records/",
55
+ "routeTemplate": "xinyun-ai-init/templates/skill-runtime-route.template.json",
56
+ "runTemplate": "xinyun-ai-init/templates/skill-run-record.template.json",
57
+ "routeByTaskFacts": true,
58
+ "fixedRoleRouting": false
212
59
  },
213
- "codeGraphRequired": {
214
- "codeGraphRecordId": null,
215
- "required": true,
60
+ "coordination": {
61
+ "projectFacts": "xinyun-ai/coordination/project-facts.json",
62
+ "changeLedger": "xinyun-ai/coordination/change-ledger.json",
63
+ "conflictsDirectory": "xinyun-ai/coordination/conflict-records/",
64
+ "handoffsDirectory": "xinyun-ai/handoffs/",
65
+ "streamsDirectory": "xinyun-ai/coordination/streams/",
66
+ "cursorsDirectory": "xinyun-ai/coordination/cursors/",
67
+ "syncChecksDirectory": "xinyun-ai/coordination/sync-checks/",
68
+ "leasesDirectory": "xinyun-ai/coordination/leases/",
69
+ "syncTriggers": ["user-message-received", "before-plan", "before-write", "before-verification", "before-delivery"],
70
+ "silentWhenNoChanges": true,
71
+ "eventWriteMode": "per-conversation-single-writer"
72
+ },
73
+ "migration": {
74
+ "directory": "xinyun-ai/migrations/shared-project-conversations/",
75
+ "template": "xinyun-ai-init/templates/multi-conversation-migration.template.json",
76
+ "legacyDirectories": ["xinyun-ai/team/", "xinyun-ai/tasks/role-execution/", "xinyun-ai/sessions/roles/"],
77
+ "legacyMode": "read-only",
78
+ "deleteLegacyMaterials": false
79
+ },
80
+ "authorization": {
81
+ "changePlanConfirmationRequired": true,
82
+ "databaseAuthorizationSeparate": true,
83
+ "gitWriteAuthorizationSeparate": true,
84
+ "npmPublishAuthorizationSeparate": true
85
+ },
86
+ "codeGraph": {
87
+ "requiredForStructuralTasks": true,
216
88
  "status": "unknown",
217
- "statusEnum": ["initialized", "healthy", "missing", "unavailable", "permission-denied", "failed", "unknown"],
218
- "command": "codegraph init -i",
219
- "version": null,
220
- "indexPath": ".codegraph/",
221
- "sourceRevision": null,
222
- "indexScope": [],
223
- "unindexedScope": [],
224
- "initializedAt": null,
225
- "checkedAt": null,
226
89
  "evidence": [],
227
- "failureReason": null,
228
- "degradationAuthorized": false,
229
- "statusSource": "xinyun-ai/manifest.json"
230
- },
231
- "team": {
232
- "directory": "xinyun-ai/team/",
233
- "roles": "xinyun-ai/team/roles.json",
234
- "members": "xinyun-ai/team/members.json",
235
- "assignments": "xinyun-ai/team/assignments.json",
236
- "responsibilityMatrix": "xinyun-ai/team/responsibility-matrix.json",
237
- "fileOwnership": "xinyun-ai/team/file-ownership.json",
238
- "understandingsDirectory": "xinyun-ai/team/understandings/",
239
- "confirmationsDirectory": "xinyun-ai/team/confirmations/"
240
- },
241
- "frameworkProfile": {
242
- "directory": "xinyun-ai/frameworks/",
243
- "markdown": "xinyun-ai/frameworks/framework-profile.md",
244
- "json": "xinyun-ai/frameworks/framework-profile.json"
245
- },
246
- "htmlMigration": {
247
- "directory": "xinyun-ai/migrations/html-to-client/",
248
- "scope": "xinyun-ai/migrations/html-to-client/migration-scope.md",
249
- "compatibilityMatrix": "xinyun-ai/migrations/html-to-client/compatibility-matrix.md",
250
- "routeMap": "xinyun-ai/migrations/html-to-client/route-map.md",
251
- "assetMap": "xinyun-ai/migrations/html-to-client/asset-map.md",
252
- "pilotPlan": "xinyun-ai/migrations/html-to-client/pilot-plan.md",
253
- "openIssues": "xinyun-ai/migrations/html-to-client/open-issues.md",
254
- "recordJson": "xinyun-ai/migrations/html-to-client/migration-record.json"
255
- },
256
- "v19": {
257
- "projectIdentity": "xinyun-ai/project-identity.json",
258
- "sessionCandidates": "xinyun-ai/sessions/session-candidates.json",
259
- "technicalLandscape": "xinyun-ai/technical-landscape.json",
260
- "requirementPacket": "xinyun-ai/packets/requirement-packet.json",
261
- "technicalImpactPacket": "xinyun-ai/packets/technical-impact-packet.json",
262
- "databaseAuthorization": "xinyun-ai/database/authorization.json",
263
- "packetHashAlgorithm": "RFC8785-JCS-SHA-256",
264
- "databaseAccessModeDefault": "local-files-read-only",
265
- "legacyDatabaseAccessMode": "sql-only",
266
- "sqlExecutionMode": "generate-only",
267
- "databaseLocalFilePolicy": {
268
- "scope": ["*.sql", "*.ddl", "*.schema", "*.migration", "database/", "migrations/", "schema/", "models/"],
269
- "readOnly": true,
270
- "taskTriggeredOnly": true,
271
- "connectionAllowed": false,
272
- "sqlExecutionAllowed": false
273
- }
274
- },
275
- "v110": {
276
- "projectStatus": "xinyun-ai/project-status.json",
277
- "preflightReport": "xinyun-ai/preflight-report.json",
278
- "onboardingReport": "xinyun-ai/onboarding-report.json",
279
- "hostCapabilities": "xinyun-ai/host-capabilities.json",
280
- "takeoverBaseline": "xinyun-ai/index/takeover-baseline.json",
281
- "controlPlaneIndex": "xinyun-ai/index/control-plane-index.json",
282
- "projectStatusEnum": ["not-started", "initializing", "partial", "blocked", "ready"],
283
- "requiredRoleSessionBlockedReason": "required-role-session-not-created",
284
- "databaseDefault": { "authorization": "not-requested", "executionStatus": "needs-confirmation", "redactionStatus": "verified" },
285
- "readyRequires": ["projectIdentity", "codeGraph", "baseline", "teamResponsibility", "roleSessions", "taskTree", "localControlPlane", "legacyHandoff", "hostCapabilities", "sensitiveScan", "noHighRiskBlocker"]
286
- },
287
- "v112": {
288
- "status": "implemented-in-package",
289
- "capability": "initializationGateRecovery",
290
- "hostPreflight": "xinyun-ai/host-preflight.json",
291
- "initializationRecovery": "xinyun-ai/index/initialization-recovery.json",
292
- "manualSessionBindings": "xinyun-ai/sessions/manual-bindings.json",
293
- "sharedProjectSnapshot": "xinyun-ai/index/shared-project-snapshot.json",
294
- "initializationTiming": "xinyun-ai/index/initialization-timing.json",
295
- "hostCapabilityStatusEnum": ["available", "available-with-dependency", "unavailable", "permission-denied", "unknown", "not-checked", "not-verified", "failed"],
296
- "preflightRequiredCapabilities": ["createRealSession", "reuseExistingSession", "sendTask", "receiveResult", "querySessionStatus", "recoverSession", "closeSession", "controlFileReadWrite"],
297
- "resumeConfirmationPhrases": ["确认执行", "确认继续初始化"],
298
- "codeGraphReuseStatuses": ["healthy", "initialized"],
299
- "projectSnapshotReusePolicy": "reuse-until-business-or-codegraph-hash-changes",
300
- "stageTimingRequiredFields": ["stageId", "attempt", "status", "startedAt", "finishedAt", "durationMs", "cacheHit", "failureReason", "bottleneck", "recoveryAction"]
301
- },
302
- "v1121": {
303
- "status": "implemented-in-package",
304
- "capability": "providerSpecificSessionBinding",
305
- "providerBindingTemplate": "xinyun-ai-init/templates/provider-session-binding.template.json",
306
- "providerBindings": "xinyun-ai/sessions/provider-session-bindings.json",
307
- "providerEnum": ["codex"],
308
- "bindingModeEnum": ["auto-created", "auto-reused", "manual", "recovery", "local-degraded"],
309
- "bindingStatusEnum": ["pending", "validating", "bound", "blocked", "rejected", "released", "conflict", "recovery-required"],
310
- "identityEvidenceRequired": ["providerSessionId", "projectRootHash", "workspaceScope", "roleId", "taskId", "title", "cwd", "source", "verifiedAt", "evidenceHash"],
311
- "interactionEvidenceRequired": ["sendReceipt", "receiveReceipt", "transcriptHash", "messageCount", "recordedAt", "evidenceHash"],
312
- "sessionIdentityFields": ["hostThreadId", "hostSessionId", "providerSessionId", "projectSessionId", "sessionId", "orchestratorSessionId"],
313
- "canonicalSessionIdentity": "providerSessionId",
314
- "sessionCompatibilityAlias": "sessionId",
315
- "sessionIdentityMappingRule": "sessionId equals providerSessionId only after canonical provider evidence is verified; hostThreadId and hostSessionId are evidence only",
316
- "requiredHostEvidence": ["create-or-reuse", "send", "receive", "query-status", "recover", "close"],
317
- "crossFileSessionConsistency": "role-session-binding, provider-session-binding, assignments, task, task-index and init-result must agree on roleId, taskId, projectRootHash, providerSessionId, sessionId, attempt and status",
318
- "bindingGate": "provider canonical ID + identity evidence + interaction evidence + exclusive occupancy",
319
- "unsupportedHostPolicy": "blocked-without-fake-provider-session-id"
320
- },
321
- "v113": {
322
- "status": "implemented-in-package",
323
- "capability": "hostAdapterAndManualRecovery",
324
- "providerAdapter": "xinyun-ai/sessions/provider-adapter.json",
325
- "manualSessionRecovery": "xinyun-ai/sessions/manual-session-recovery.json",
326
- "initializationChangeReport": "xinyun-ai/index/initialization-change-report.json",
327
- "preflightRequiredCapabilities": ["createRealSession", "reuseExistingSession", "sendTask", "receiveResult", "querySessionStatus", "recoverSession", "closeSession", "controlFileReadWrite"],
328
- "fastBlockBeforeCodeGraph": true,
329
- "sessionIdentityFields": ["hostThreadId", "hostSessionId", "providerSessionId", "projectSessionId", "sessionId", "orchestratorSessionId"],
330
- "canonicalSessionIdentity": "providerSessionId",
331
- "sessionCompatibilityAlias": "sessionId",
332
- "sessionIdentityMappingRule": "sessionId equals providerSessionId only after canonical provider evidence is verified; hostThreadId and hostSessionId are evidence only",
333
- "requiredHostEvidence": ["create-or-reuse", "send", "receive", "query-status", "recover", "close"],
334
- "crossFileSessionConsistency": "role-session-binding, provider-session-binding, assignments, task, task-index and init-result must agree on roleId, taskId, projectRootHash, providerSessionId, sessionId, attempt and status",
335
- "changeOriginEnum": ["initialization-created", "initialization-updated", "pre-existing-user-change", "control-plane-only"],
336
- "manualRecoveryRoles": ["project-owner", "project-product", "chief-engineer", "programmer", "test-reviewer"],
337
- "userDecisionEnum": ["manual-create", "defer", "redetect"],
338
- "decisionStatusEnum": ["not-asked", "awaiting-user", "selected", "processing", "completed", "blocked"],
339
- "decisionRequiredFields": ["decisionId", "userDecision", "actor", "source", "requiredRoleCount", "createdRoleCount", "remainingRoleIds", "decisionStatus", "decidedAt", "nextAction", "decisionEvidence"],
340
- "decisionEvidenceFields": ["decisionId", "userDecision", "actor", "source", "decidedAt", "inputHash", "evidenceHash"],
341
- "sessionCreationDecisionEnum": ["create-and-onboard", "defer"],
342
- "sessionCreationStatusEnum": ["not-asked", "awaiting-confirmation", "approved", "deferred", "processing", "completed", "blocked"],
343
- "sessionCreationDecisionRequiredFields": ["decision", "decisionId", "status", "actor", "source", "decidedAt", "decisionEvidence", "nextAction"],
344
- "taskFirstSessionGate": "create main task and five role tasks first; ask user before creating or completing role sessions",
345
- "manualBindingConfirmationPhrase": "已创建,继续绑定",
346
- "noChoicePolicy": "remain-blocked-without-repeat-prompt"
347
- },
348
- "v114": {
349
- "status": "implemented-in-package",
350
- "capability": "agentCoreAndTakeoverControl",
351
- "agentProfile": "xinyun-ai/agent-profile.json",
352
- "agentCapabilities": "xinyun-ai/agent-capabilities.json",
353
- "takeoverGate": "xinyun-ai/takeover-gate.json",
354
- "orchestrator": "xinyun-ai/tasks/orchestrator.json",
355
- "taskGraph": "xinyun-ai/tasks/task-graph.json",
356
- "handoffsDirectory": "xinyun-ai/handoffs/",
357
- "finalDelivery": "xinyun-ai/final-delivery.json",
358
- "agentStatusEnum": ["ready", "partial", "blocked", "manual-required"],
359
- "takeoverStatusEnum": ["not-started", "assessing", "partial", "blocked", "manual-required", "ready"],
360
- "taskStatusCodeEnum": ["captured", "pending", "executing", "waiting-review", "awaiting-confirmation", "completed", "blocked", "cancelled"],
361
- "taskStatusLabelMap": {"captured": "待分析", "pending": "待分配", "executing": "执行中", "waiting-review": "待审查", "awaiting-confirmation": "待确认", "completed": "已完成", "blocked": "阻塞", "cancelled": "已取消"},
362
- "readyRequires": ["controlPlane", "mainTask", "roleTasks", "teamResponsibility", "codeGraph", "roleSessions", "orchestrator", "recovery", "indexes", "sharedFacts", "conflicts", "sensitiveScan"]
363
- },
364
- "v115": {
365
- "status": "released",
366
- "sessionBindingTemplate": "xinyun-ai-init/templates/session-binding.template.json",
367
- "sessionBindingPath": "xinyun-ai/sessions/session-bindings.json",
368
- "sessionIdentityMode": "adapter-neutral",
369
- "sessionIdentityFields": ["sessionId", "sessionRefType", "sessionRef", "hostId", "provider", "projectRootHash", "workspaceScope", "repositoryScope", "workstream", "roleId", "taskId", "title", "cwd", "identityEvidence", "interactionEvidence", "bindingStatus", "bindingMode", "createdAt", "updatedAt"],
370
- "sessionRefTypeEnum": ["host-thread", "provider-session", "manual-reference", "local-session"],
371
- "requiredEvidenceCategories": ["create-or-reuse", "send", "receive", "query-status", "recover", "close", "control-file-read-write"],
372
- "canonicalControlPlaneId": "sessionId",
373
- "providerSessionIdPolicy": "compatibility-only; not the sole identity or ready gate",
374
- "batchStatus": {"v1.15-A": "released", "v1.15-B": "released", "v1.15-C": "released"}
375
- },
376
- "v116": {
377
- "status": "candidate",
378
- "capability": "skill-routing-incremental-index-efficiency",
379
- "skillRoute": "xinyun-ai/skills/runtime-routes.json",
380
- "skillRunRecords": "xinyun-ai/skills/runs/",
381
- "incrementalCodeGraph": "xinyun-ai/index/codegraph-incremental.json",
382
- "localQueryIndex": "xinyun-ai/index/local-query-index.json",
383
- "performanceMetrics": "xinyun-ai/index/performance-metrics.json",
384
- "statusEnum": ["candidate", "partial", "blocked", "ready"],
385
- "batchStatus": {"v1.16-A": "candidate", "v1.16-B": "candidate", "v1.16-C": "candidate"},
386
- "providerSessionIdPolicy": "compatibility-only; adapter-neutral session binding remains authoritative"
90
+ "unverifiedScope": []
387
91
  },
388
- "v111": {
389
- "status": "implemented-in-package",
390
- "capability": "initializationAcceleration",
391
- "fixedMaterialization": "xinyun-ai/fixed-materialization.json",
392
- "initializationStages": "xinyun-ai/initialization-stages.json",
393
- "bootstrapSnapshot": "xinyun-ai/bootstrap-snapshot.json",
394
- "initializationCache": "xinyun-ai/index/initialization-cache.json",
395
- "parallelism": "xinyun-ai/sessions/parallelism.json",
396
- "stageStatusEnum": ["pending", "running", "completed", "skipped", "partial", "blocked", "recovery-required"],
397
- "projectStatusEnum": ["initializing", "partial", "blocked", "ready"],
398
- "defaultRoleConcurrency": 3,
399
- "cacheTtlHours": 24,
400
- "cacheKeyAlgorithm": "RFC8785-JCS-SHA-256"
401
- }
92
+ "projectStatus": "not-started",
93
+ "executionEligible": false,
94
+ "lastUpdatedAt": null
402
95
  }
@@ -0,0 +1,24 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "migrationId": null,
4
+ "executionModelFrom": null,
5
+ "executionModelTo": "shared-project-multi-conversation-runtime",
6
+ "phase": "not-started",
7
+ "phaseEnum": ["not-started", "inventory", "prepared", "converting", "validating", "committed", "partial", "blocked", "recovery-required", "manual-required"],
8
+ "projectContextId": null,
9
+ "idempotencyKey": null,
10
+ "beforeHash": null,
11
+ "afterHash": null,
12
+ "legacyInventory": [],
13
+ "preservedReadOnlyPaths": [],
14
+ "convertedTaskIds": [],
15
+ "createdConversationBindingIds": [],
16
+ "createdStreamIds": [],
17
+ "cursorInitialization": {},
18
+ "rollbackPaths": [],
19
+ "conflicts": [],
20
+ "evidence": [],
21
+ "startedAt": null,
22
+ "updatedAt": null,
23
+ "completedAt": null
24
+ }
@@ -1,25 +1,30 @@
1
1
  {
2
- "schemaVersion": 1,
3
- "reportId": "onboarding-report-template",
2
+ "schemaVersion": 2,
3
+ "executionModel": "shared-project-multi-conversation-runtime",
4
4
  "projectRootHash": null,
5
- "projectName": null,
6
- "projectStatus": "not-started",
5
+ "status": "partial",
7
6
  "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": [],
7
+ "contextStatus": "unknown",
8
+ "understandingStatus": "unknown",
9
+ "reTakeover": {
10
+ "recordPath": "xinyun-ai/index/re-takeover-record.json",
11
+ "snapshotPath": "xinyun-ai/index/bootstrap-snapshot.json",
12
+ "status": "not-started",
13
+ "takeoverId": null,
14
+ "evidence": []
15
+ },
16
+ "projectIdentity": {"status": "pending", "evidence": []},
17
+ "projectContext": {"status": "pending", "path": "xinyun-ai/project-context.json", "evidence": []},
18
+ "conversationBinding": {"status": "pending", "registryPath": "xinyun-ai/conversations/registry.json", "evidence": []},
19
+ "incrementalSync": {"status": "pending", "cursorPath": null, "evidence": []},
20
+ "taskControlPlane": {"status": "pending", "taskIndex": "xinyun-ai/tasks/task-index.json", "taskGraph": "xinyun-ai/tasks/task-graph.json", "evidence": []},
21
+ "skillRuntime": {"status": "pending", "registry": "xinyun-ai/skills/registry.json", "evidence": []},
22
+ "legacyMigration": {"status": "not-required", "inventoryPath": null, "evidence": []},
23
+ "authorization": {"changePlan": "required", "database": "not-requested", "gitWrite": "not-requested", "npmPublish": "not-requested"},
24
+ "requiredGates": [],
21
25
  "blockedReasons": [],
22
26
  "unverifiedScope": [],
27
+ "evidence": [],
23
28
  "createdAt": null,
24
29
  "updatedAt": null
25
30
  }