@pm_zhousl/xinyun-ai-init 1.14.0 → 1.16.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 +9 -1
- package/init/xinyun-ai-init/rules/init-rules.md +4 -0
- package/init/xinyun-ai-init/rules/session-workbench.md +4 -0
- package/init/xinyun-ai-init/rules/upgrade-rules.md +4 -0
- package/init/xinyun-ai-init/rules/v1.14.0-agent-core.md +4 -0
- package/init/xinyun-ai-init/rules/v1.15.0-session-binding.md +44 -0
- package/init/xinyun-ai-init/rules/v1.16.0-capability-efficiency.md +23 -0
- package/init/xinyun-ai-init/templates/README.template.md +5 -1
- package/init/xinyun-ai-init/templates/agent-profile.template.json +2 -2
- package/init/xinyun-ai-init/templates/codegraph-incremental-record.template.json +21 -0
- package/init/xinyun-ai-init/templates/core-rules.template.md +4 -0
- package/init/xinyun-ai-init/templates/current-task.template.md +9 -0
- package/init/xinyun-ai-init/templates/init-result.template.json +22 -3
- package/init/xinyun-ai-init/templates/local-query-index.template.json +15 -0
- package/init/xinyun-ai-init/templates/manifest.template.json +28 -4
- package/init/xinyun-ai-init/templates/manual-session-binding.template.json +6 -0
- package/init/xinyun-ai-init/templates/manual-session-recovery.template.json +4 -0
- package/init/xinyun-ai-init/templates/performance-metrics.template.json +17 -0
- package/init/xinyun-ai-init/templates/project-check.template.md +7 -0
- package/init/xinyun-ai-init/templates/project-guide.template.md +4 -0
- package/init/xinyun-ai-init/templates/project-index.template.json +24 -1
- package/init/xinyun-ai-init/templates/provider-adapter.template.json +8 -2
- package/init/xinyun-ai-init/templates/role-session-binding.template.json +8 -2
- package/init/xinyun-ai-init/templates/session-binding.template.json +35 -0
- package/init/xinyun-ai-init/templates/skill-run-record.template.json +24 -0
- package/init/xinyun-ai-init/templates/skill-runtime-route.template.json +20 -0
- package/init/xinyun-ai-init/templates/task-index.template.json +9 -0
- package/init/xinyun-ai-init/version.json +2 -2
- package/package.json +4 -1
- package/scripts/collect-v1.15-real-evidence.js +114 -0
- package/scripts/collect-v1.16-evidence.js +48 -0
- package/scripts/publish-with-token.ps1 +19 -6
- package/scripts/run-v1.16-runtime-probe.js +91 -0
- package/scripts/verify-init-package.js +69 -1
- package/scripts/verify-release-gate.js +13 -77
- package/scripts/verify-rules-package.js +86 -1
- package/test-scenarios/v1.15.0-behavior-evidence.json +476 -0
- package/test-scenarios/v1.15.0-scenarios.md +57 -0
- package/test-scenarios/v1.16.0-behavior-evidence.json +46 -0
- package/test-scenarios/v1.16.0-real-host-probe.json +132 -0
- package/test-scenarios/v1.16.0-scenarios.md +19 -0
package/README.md
CHANGED
|
@@ -55,7 +55,7 @@ npm run publish:token
|
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
脚本会提示输入 npm token,临时写入 `.npmrc`,发布完成或失败后自动删除 `.npmrc`。
|
|
58
|
-
发布脚本会先执行 `npm run verify:release
|
|
58
|
+
发布脚本会先执行 `npm run verify:release`;v1.16 要求可审计的真实宿主运行证据,且只有证据完整时才允许进入发布流程。未验证范围必须继续保留在证据记录中。
|
|
59
59
|
|
|
60
60
|
如果需要让 AI 代执行,可先在当前终端设置临时环境变量:
|
|
61
61
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
本目录是“欣芸技术开发 Agent 流”的初始化包,负责把完整 AI 执行要求下发到目标项目。
|
|
4
4
|
|
|
5
|
-
当前规则版本:`1.
|
|
5
|
+
当前规则版本:`1.16.0`。
|
|
6
6
|
|
|
7
7
|
## Codex 一句话入口
|
|
8
8
|
|
|
@@ -1157,3 +1157,11 @@ Git none、无测试框架和工具链未检测只登记 `not-available/not-dete
|
|
|
1157
1157
|
数据库正式模式为 `databaseAccessMode=local-files-read-only`,`legacyDatabaseAccessMode=sql-only` 仅为兼容标识;`sqlExecutionMode=generate-only`。只有数据库相关任务才读取项目内 `*.sql`、`*.ddl`、`*.schema`、`*.migration` 以及 `database/`、`migrations/`、`schema/`、`models/` 下的文本文件。严禁连接本地或线上数据库、打开 SQLite/数据库服务、查询真实数据、执行 SQL、migration、seed 或修改数据,也不自动安装驱动。连接、只读查询、结构变更和数据修改权限仍独立记录;四类授权状态固定为 `not-requested/requested/authorized/denied/expired/failed/unknown`,脱敏状态固定为 `verified/unverified/failed`。SQL 只作为 review 计划输出,需校验规范化 SQL、参数、方言、targetEnvironment、授权范围和 `statementHash`;授权过期或输入变化时回到 `executionStatus=needs-confirmation`,受影响授权进入 `expired` 并追加 audit。
|
|
1158
1158
|
|
|
1159
1159
|
v1.9 不自动复用其他项目会话、不自动连接或修改数据库、不扩大 HTML 迁移范围,不执行 Git 写操作或 npm publish。
|
|
1160
|
+
|
|
1161
|
+
## v1.15 会话契约修订
|
|
1162
|
+
|
|
1163
|
+
v1.14.0 已发布。v1.12.1/v1.13.x 中的 `providerSessionId` 仅作为历史 provider-session 兼容记录保留;后续规则以 `rules/v1.15.0-session-binding.md` 和 `rules/v1.16.0-capability-efficiency.md` 为准。新的会话绑定使用 `sessionId`、`sessionRefType`、`sessionRef`、项目/角色/任务身份和交互证据。普通 thread ID 只有在宿主可操作、项目归属匹配且七类证据完整时才可绑定,不能仅凭字段名称、taskId、文件名、标题或历史摘要进入 ready。
|
|
1164
|
+
|
|
1165
|
+
## v1.16 能力与效率
|
|
1166
|
+
|
|
1167
|
+
v1.16.0 在已发布的 v1.15.0 协作闭环之上增加 Skill 运行时路由、增量 CodeGraph、本地派生查询索引和阶段效率统计。三批能力分别验收;JSON/Markdown 仍是事实源,SQLite 只能作为可选派生缓存。缺少真实 v1.16 宿主行为证据时,项目状态保持 `partial`、`blocked` 或 `manual-required`,不得输出 ready 或已发布。
|
|
@@ -133,3 +133,7 @@ Run the seven-capability host preflight before role sessions. Materialize the ma
|
|
|
133
133
|
- v1.9 fields: `sessionMatchStatus`、`selectionEvidence`、`项目简称|角色中文名|职责名称`、`coverageStatus=full`、`databaseAccessMode=local-files-read-only`、`legacyDatabaseAccessMode=sql-only`、`targetEnvironment`。
|
|
134
134
|
|
|
135
135
|
共享事实和 Skill 文件使用临时文件、完整校验和原子重命名。前端审计默认只读;临时会话只有用户确认的代码任务才可创建。不得修改业务代码、数据库、API、依赖、Git 或发布配置。
|
|
136
|
+
|
|
137
|
+
## v1.15 adapter-neutral session binding
|
|
138
|
+
|
|
139
|
+
历史 v1.12.1/v1.13.x 的 providerSessionId 记录只用于兼容读取。当前新任务必须使用 `sessionId`、`sessionRefType`、`sessionRef`、`hostId/provider`、项目/角色/任务身份和 identity/interaction evidence。`host-thread`、`provider-session`、`manual-reference`、`local-session` 均需按 adapter-neutral 规则验证;providerSessionId 不再是唯一身份键或 ready 硬门禁。
|
|
@@ -321,3 +321,7 @@ Record all seven host capabilities before role sessions. `available-with-depende
|
|
|
321
321
|
|
|
322
322
|
数据库交接必须记录 `databaseAccessMode=local-files-read-only`、`legacyDatabaseAccessMode=sql-only`、`sqlExecutionMode=generate-only`、四类授权、授权状态 `not-requested/requested/authorized/denied/expired/failed/unknown`、`statementHash`、targetEnvironment、`executionStatus`、`redactionStatus=verified/unverified/failed` 和完整 audit。仅允许按需读取本地 SQL/schema/migration/model 文本文件,严禁连接数据库或执行 SQL;授权变化后不得继续执行旧 SQL,执行状态回到 `needs-confirmation`。
|
|
323
323
|
- v1.9 fields: `lexical-fallback`、`duplicate-not-primary`、`项目简称|角色中文名|职责名称`、`coverageStatus=full`、`RFC 8785 JCS-SHA-256`。
|
|
324
|
+
|
|
325
|
+
## v1.15 会话绑定字段
|
|
326
|
+
|
|
327
|
+
任务单和交接单新增 `sessionRefType`、`sessionRef`、`hostId`、`provider`、`identityEvidence`、`interactionEvidence`、`bindingStatus` 和 `bindingMode`。`sessionId` 仍是控制面关联键;旧 providerSessionId 只作为兼容字段。七类宿主证据不完整、跨项目或跨文件身份不一致时必须暂停或阻塞。
|
|
@@ -149,3 +149,7 @@ Before upgrade role-session work, read `xinyun-ai/index/initialization-recovery.
|
|
|
149
149
|
- v1.9 fields: `sessionMatchStatus`、`duplicate-not-primary`、`selectionEvidence`、`项目简称|角色中文名|职责名称`、`technical-landscape`、`coverageStatus=full`、`RFC 8785 JCS-SHA-256`、`databaseAccessMode=local-files-read-only`、`legacyDatabaseAccessMode=sql-only`、`targetEnvironment`。
|
|
150
150
|
|
|
151
151
|
同一 taskId + changeDomain 不得重复创建临时会话;容量不足进入 `queued`,unknown occupancy 保持占用,失败不得自动重试。升级不自动安装 Skill 依赖,不执行业务代码、数据库、API 或 Git 写操作。
|
|
152
|
+
|
|
153
|
+
## v1.15 会话升级兼容
|
|
154
|
+
|
|
155
|
+
升级读取旧 `providerSessionId` 时映射为 `sessionRefType=provider-session` 和 `sessionRef=providerSessionId`,不得伪造新证据。新会话发现和复用必须验证 `sessionRef` 可操作、项目/角色/任务/cwd/占用一致及七类证据;无法验证进入 pending/blocked/manual-required。普通 host-thread 不因名称自动无效,但也不能仅凭 thread ID 直接 ready。
|
|
@@ -29,3 +29,7 @@ Display names follow `项目名|角色|职责或工作流`. Discovery and re
|
|
|
29
29
|
## Final delivery gate
|
|
30
30
|
|
|
31
31
|
The final delivery record must list completed and unfinished work, blocked tasks, actual changed files, business-code change status, tests, review results, risks, next actions, and all gate/evidence references. `ready` requires every required gate, provider evidence, shared-fact consistency, conflict check, sensitive scan, and reviewer result to pass.
|
|
32
|
+
|
|
33
|
+
## Post-v1.14 compatibility direction
|
|
34
|
+
|
|
35
|
+
The package is published as v1.14.0. Its provider-specific session evidence remains historical compatibility material only. Starting with v1.15.0, use the adapter-neutral contract in `rules/v1.15.0-session-binding.md`: `sessionId` is the control-plane ID and `sessionRefType/sessionRef` identify the host reference. A `host-thread` value is acceptable only with operability, ownership and all seven interaction evidence categories. `providerSessionId` is retained only for `sessionRefType=provider-session` compatibility and is never the sole ready gate.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# v1.15.0 adapter-neutral session binding
|
|
2
|
+
|
|
3
|
+
## Contract
|
|
4
|
+
|
|
5
|
+
v1.15.0 uses a host-independent session binding contract. `sessionId` is the control-plane role-session identifier. The host-operable reference is stored separately in `sessionRefType` and `sessionRef`.
|
|
6
|
+
|
|
7
|
+
Required binding fields are `sessionId`, `sessionRefType`, `sessionRef`, `hostId`, `provider`, `projectRootHash`, `workspaceScope`, `repositoryScope`, `workstream`, `roleId`, `taskId`, `title`, `cwd`, `identityEvidence`, `interactionEvidence`, `bindingStatus`, `bindingMode`, `createdAt`, and `updatedAt`.
|
|
8
|
+
|
|
9
|
+
`sessionRefType` is one of `host-thread`, `provider-session`, `manual-reference`, or `local-session`. The adapter decides the reference format. A `providerSessionId` may be retained as a historical provider-session record, but it is not the v1.15 canonical field and its field name cannot decide readiness.
|
|
10
|
+
|
|
11
|
+
## Binding gate
|
|
12
|
+
|
|
13
|
+
Bind only when the reference is currently operable, belongs to the current project and workstream, matches `roleId`, `taskId`, `title`, `cwd`, workspace/repository scope and occupancy, and has complete identity and interaction evidence. `sessionId`, assignment/session binding, task index and init-result must agree.
|
|
14
|
+
|
|
15
|
+
The seven evidence categories are:
|
|
16
|
+
|
|
17
|
+
1. create or reuse
|
|
18
|
+
2. send
|
|
19
|
+
3. receive
|
|
20
|
+
4. query status
|
|
21
|
+
5. recover
|
|
22
|
+
6. close
|
|
23
|
+
7. control-file read/write
|
|
24
|
+
|
|
25
|
+
Missing, stale, contradictory or unverifiable evidence keeps `bindingStatus=pending|blocked|manual-required`. It cannot produce `ready` or `executionEligible=true`.
|
|
26
|
+
|
|
27
|
+
## Positive and negative rules
|
|
28
|
+
|
|
29
|
+
- A `host-thread` reference is valid only when the current host can send, receive and query that thread and identity evidence proves project/role/task ownership.
|
|
30
|
+
- A `provider-session` reference is accepted through the adapter compatibility path when the provider evidence is complete.
|
|
31
|
+
- A `manual-reference` may be bound only with an actor, timestamp, project/role/task identity evidence and all seven interaction records.
|
|
32
|
+
- A `local-session` is a control-plane correlation record only; it never authorizes real host reuse or ready.
|
|
33
|
+
- A bare thread ID, task ID, filename, title, history summary or user statement is not evidence of operability or ownership.
|
|
34
|
+
- A candidate from another project, workstream, repository scope or occupied role is rejected; history is preserved and never overwritten.
|
|
35
|
+
- Cross-project reuse is always rejected, even when the role name and title are identical.
|
|
36
|
+
- If fields disagree across task, assignment, binding, task-index or init-result, pause and route to the main session.
|
|
37
|
+
|
|
38
|
+
## Compatibility
|
|
39
|
+
|
|
40
|
+
v1.12.1 and v1.13.x records remain readable. Map `providerSessionId` to `sessionRefType=provider-session` and `sessionRef=providerSessionId` without deleting the historical field. Do not rewrite historical evidence as if it had used the v1.15 contract.
|
|
41
|
+
|
|
42
|
+
## Recovery and idempotency
|
|
43
|
+
|
|
44
|
+
Reuse the original task and role-task IDs, increment `attempt`, preserve audit records, and use the same idempotency key for retries. A failed create, send, receive, status query, recovery, close or control-file write never creates a duplicate binding. Conflicts stop writes until the main session resolves them.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# v1.16.0 capability routing and execution efficiency
|
|
2
|
+
|
|
3
|
+
v1.16.0 extends the published v1.15 collaboration contract. It does not add roles, create unlimited sessions, install hosts or dependencies, modify business code, connect to databases, execute SQL, or write Git state.
|
|
4
|
+
|
|
5
|
+
## A. Runtime Skill routing
|
|
6
|
+
|
|
7
|
+
Route by role, task type, port, language, runtime, platform, framework and risk terms. A task may select multiple Skills, but selection order is deterministic: project binding, framework-specific, generic, then fallback. Record selected, rejected, fallback and blocked decisions with source, version, digest, trust, compatibility, dependency and permission status.
|
|
8
|
+
|
|
9
|
+
The minimum execution record is `skillRunId`, `skillId`, `roleId`, `taskId`, `routeReason`, `selectedAt`, `status`, `usedTools`, `unusedTools`, `fallbackReason`, `evidence`, `unverifiedScope`, `startedAt` and `finishedAt`. Unknown stacks use a generic Skill with explicit uncertainty. Missing dependencies, insufficient permissions or untrusted sources remain fallback/blocked; they are never installed or reported as executed. Repeated runs reuse the route fingerprint until task scope, stack or Skill version changes.
|
|
10
|
+
|
|
11
|
+
## B. Incremental CodeGraph and local query index
|
|
12
|
+
|
|
13
|
+
Reuse a healthy CodeGraph only when project identity and index identity match. Detect changes using file hashes, read-only Git evidence or the existing change ledger. No changes means `unchanged-reused`; local changes mean `incremental-updated`; incompatible or missing indexes mean `full-rebuild-required`, `unknown`, `partial` or `failed`. A failed increment preserves the old healthy index and records failed files and unverified scope.
|
|
14
|
+
|
|
15
|
+
The local query index is derived from JSON/Markdown control-plane facts and can be rebuilt from them. SQLite is optional cache only. Every index records `sourceHash`, `builtAt`, `indexVersion`, `coverage` and `stale`; every query returns `evidence`, `sourcePath` and `freshness`. A read or time budget overrun returns `partial` or `unknown`, never full understanding.
|
|
16
|
+
|
|
17
|
+
## C. Efficiency evidence
|
|
18
|
+
|
|
19
|
+
Record stage duration, preflight time, control-plane reads, CodeGraph cache hits, incrementally updated files, Skill routing time, query index build/query time, role concurrency, queue time, retries, cache hit rate and failure/degradation causes. Compare repeatable stage data with a baseline; host-dependent total duration is not a sole acceptance criterion. Fixed materialization target is 5 seconds, and optimization cannot bypass confirmation, permissions, evidence or safety gates.
|
|
20
|
+
|
|
21
|
+
## Readiness and compatibility
|
|
22
|
+
|
|
23
|
+
v1.15 adapter-neutral session binding remains authoritative. `providerSessionId` is historical compatibility data only and is never a v1.16 identity or ready gate. Missing or unverifiable host interaction evidence remains `pending`, `blocked` or `manual-required`.
|
|
@@ -4,12 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
## v1.12.1 provider session binding
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
For v1.12.1/v1.13.x compatibility, historical provider bindings may contain provider-returned `providerSessionId`. The v1.15 contract is adapter-neutral: `sessionId` is the control-plane identifier and `sessionRefType/sessionRef` identify a host-thread, provider-session, manual-reference, or local-session reference. A normal thread ID is accepted only when it is currently operable and project/role/task ownership plus all seven evidence categories are verified. A bare taskId, title, filename, or history summary cannot bind a role; incomplete evidence cannot become ready or executionEligible.
|
|
8
8
|
|
|
9
9
|
## v1.13.0 host adapter and manual recovery
|
|
10
10
|
|
|
11
11
|
Run host adapter preflight before large CodeGraph analysis. Unsupported or unverifiable host capability blocks role sessions and emits a five-role manual recovery guide. Initialization change reports must separate newly created control files from pre-existing user changes.
|
|
12
12
|
|
|
13
|
+
## v1.16 capability and efficiency
|
|
14
|
+
|
|
15
|
+
v1.16 adds runtime Skill routing, incremental CodeGraph reuse and a derived local query index. JSON/Markdown control-plane files remain authoritative; SQLite is optional cache only. Stage metrics record reads, cache hits, incremental files, queue time, retries and degradation. Missing real v1.16 behavior evidence keeps readiness at `partial`, `blocked` or `manual-required`.
|
|
16
|
+
|
|
13
17
|
## v1.10 接管门禁
|
|
14
18
|
|
|
15
19
|
当前项目必须先完成 `preflight-report.json` 和 `onboarding-report.json`,再进入业务代码开发。`project-status.json` 只有在项目身份、CodeGraph、基线、团队职责、五个真实角色会话、本地控制面、旧沉淀、宿主能力和敏感扫描全部通过时才可为 `ready`;缺失真实角色会话必须为 `blocked + required-role-session-not-created`。CLI 只创建 `xinyun-ai-init/`,AI 获得授权后才创建项目控制面。
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"agentId": "xinyun-ai-agent",
|
|
4
4
|
"name": "欣芸技术开发 Agent",
|
|
5
|
-
"version": "1.
|
|
6
|
-
"packageVersion": "1.
|
|
5
|
+
"version": "1.16.0",
|
|
6
|
+
"packageVersion": "1.16.0",
|
|
7
7
|
"projectIdentity": {
|
|
8
8
|
"projectRootHash": null,
|
|
9
9
|
"workspaceScope": "xinyun-ai-control",
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"recordId": "codegraph-incremental-template",
|
|
4
|
+
"projectRootHash": null,
|
|
5
|
+
"indexIdentity": null,
|
|
6
|
+
"indexVersion": null,
|
|
7
|
+
"sourceHash": null,
|
|
8
|
+
"baseRecordId": null,
|
|
9
|
+
"updateMode": "unknown",
|
|
10
|
+
"status": "unknown",
|
|
11
|
+
"statusEnum": ["unchanged-reused", "incremental-updated", "full-rebuild-required", "unknown", "partial", "failed"],
|
|
12
|
+
"changedFiles": [],
|
|
13
|
+
"unchangedFiles": [],
|
|
14
|
+
"failedFiles": [],
|
|
15
|
+
"unverifiedScope": [],
|
|
16
|
+
"failureReason": null,
|
|
17
|
+
"oldHealthyIndexPreserved": true,
|
|
18
|
+
"gitReadOnlyEvidence": null,
|
|
19
|
+
"updatedAt": null,
|
|
20
|
+
"evidence": []
|
|
21
|
+
}
|
|
@@ -629,6 +629,10 @@ Skill 分配使用 `assignmentStatus`,使用记录使用 `usageStatus`。固
|
|
|
629
629
|
- 会话展示名使用 `项目名|角色|职责或工作流`;provider 模式的发现和复用必须验证项目身份、职责、任务范围、cwd、占用、幂等键和 canonical `providerSessionId`。local-degraded 模式只能使用 `localSessionId` 做控制面关联,不能进行真实宿主复用,历史不得覆盖或删除。
|
|
630
630
|
- 最终交付必须列出已完成、未完成、阻塞任务、实际修改文件、业务代码变更、测试、审查、风险和下一步;所有接管门禁、会话证据、共享事实、冲突检查和敏感扫描通过后才可 ready。
|
|
631
631
|
|
|
632
|
+
## v1.15 adapter-neutral session binding
|
|
633
|
+
|
|
634
|
+
v1.14.0 的 `providerSessionId` 规则保留为历史兼容契约。v1.15.0 使用 `sessionId`、`sessionRefType`、`sessionRef`、`hostId/provider`、项目身份、角色/任务范围、`identityEvidence` 和 `interactionEvidence`。`sessionRefType` 可为 `host-thread`、`provider-session`、`manual-reference` 或 `local-session`;字段名称本身不能决定会话是否有效。ready 必须验证引用可操作、项目/角色/任务匹配、占用无冲突,并具备 create/reuse、send、receive、query-status、recover、close、control-file read/write 七类证据。旧 `providerSessionId` 只能作为兼容映射,不得单独触发 ready。
|
|
635
|
+
|
|
632
636
|
## 自我学习
|
|
633
637
|
|
|
634
638
|
发现可复用经验时,先记录为候选经验。候选经验必须标注来源、适用范围、可信度、状态和最后验证时间。用户确认后,才能合并进正式规则。
|
|
@@ -313,3 +313,12 @@
|
|
|
313
313
|
- packet 失效原因:packet-stale / 待填写
|
|
314
314
|
- databaseAccessMode:local-files-read-only(legacyDatabaseAccessMode=sql-only;sqlExecutionMode=generate-only)
|
|
315
315
|
- 数据库连接、查询、结构变更、数据修改授权状态:待填写
|
|
316
|
+
|
|
317
|
+
## v1.15 session binding
|
|
318
|
+
|
|
319
|
+
- sessionId:控制面角色会话标识
|
|
320
|
+
- sessionRefType:host-thread / provider-session / manual-reference / local-session
|
|
321
|
+
- sessionRef:宿主实际可操作引用;不能仅由 taskId、文件名、标题或历史摘要推断
|
|
322
|
+
- providerSessionId:历史兼容字段,可为空;不再作为唯一 ready 门禁
|
|
323
|
+
- identityEvidence / interactionEvidence:必须覆盖项目、角色、任务、cwd 和七类宿主操作
|
|
324
|
+
- bindingStatus:pending / blocked / manual-required / bound / conflict
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
"statusEnum": ["pending", "initializing", "completed", "partial", "blocked", "unknown", "failed", "cancelled"],
|
|
10
10
|
"statusSource": "xinyun-ai/current-task.md",
|
|
11
11
|
"currentVersion": null,
|
|
12
|
-
"targetVersion": "1.
|
|
12
|
+
"targetVersion": "1.16.0",
|
|
13
13
|
"agentCore": {
|
|
14
|
-
"version": "1.
|
|
14
|
+
"version": "1.16.0",
|
|
15
15
|
"profilePath": "xinyun-ai/agent-profile.json",
|
|
16
16
|
"capabilitiesPath": "xinyun-ai/agent-capabilities.json",
|
|
17
17
|
"takeoverGatePath": "xinyun-ai/takeover-gate.json",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"finalDeliveryPath": "xinyun-ai/final-delivery.json",
|
|
21
21
|
"agentStatus": "manual-required",
|
|
22
22
|
"takeoverStatus": "blocked",
|
|
23
|
-
"taskStatusLabelMapVersion": "1.
|
|
23
|
+
"taskStatusLabelMapVersion": "1.16.0"
|
|
24
24
|
},
|
|
25
25
|
"idempotencyKey": null,
|
|
26
26
|
"createdFiles": [],
|
|
@@ -146,6 +146,25 @@
|
|
|
146
146
|
"readyRequiresAllGates": true,
|
|
147
147
|
"realProviderEvidenceRequired": true
|
|
148
148
|
},
|
|
149
|
+
"v115": {
|
|
150
|
+
"status": "released",
|
|
151
|
+
"sessionBindingPath": "xinyun-ai/sessions/session-bindings.json",
|
|
152
|
+
"sessionBindingTemplate": "xinyun-ai-init/templates/session-binding.template.json",
|
|
153
|
+
"sessionIdentityMode": "adapter-neutral",
|
|
154
|
+
"canonicalControlPlaneId": "sessionId",
|
|
155
|
+
"requiredEvidenceCategories": ["create-or-reuse", "send", "receive", "query-status", "recover", "close", "control-file-read-write"],
|
|
156
|
+
"providerSessionIdPolicy": "compatibility-only; not the sole identity or ready gate",
|
|
157
|
+
"batchStatus": {"v1.15-A": "released", "v1.15-B": "released", "v1.15-C": "released"}
|
|
158
|
+
},
|
|
159
|
+
"v116": {
|
|
160
|
+
"status": "candidate",
|
|
161
|
+
"skillRoutePath": "xinyun-ai/skills/runtime-routes.json",
|
|
162
|
+
"skillRunRecordsPath": "xinyun-ai/skills/runs/",
|
|
163
|
+
"incrementalCodeGraphPath": "xinyun-ai/index/codegraph-incremental.json",
|
|
164
|
+
"localQueryIndexPath": "xinyun-ai/index/local-query-index.json",
|
|
165
|
+
"performanceMetricsPath": "xinyun-ai/index/performance-metrics.json",
|
|
166
|
+
"batchStatus": {"v1.16-A": "candidate", "v1.16-B": "candidate", "v1.16-C": "candidate"}
|
|
167
|
+
},
|
|
149
168
|
"v19": {
|
|
150
169
|
"projectIdentityPath": "xinyun-ai/project-identity.json",
|
|
151
170
|
"technicalLandscapePath": "xinyun-ai/technical-landscape.json",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"indexId": "local-query-index-template",
|
|
4
|
+
"indexVersion": "1.16.0",
|
|
5
|
+
"sourcePaths": [],
|
|
6
|
+
"sourceHash": null,
|
|
7
|
+
"builtAt": null,
|
|
8
|
+
"coverage": {"percent": 0, "domains": [], "unverifiedScope": []},
|
|
9
|
+
"stale": true,
|
|
10
|
+
"factSourcePolicy": "JSON/Markdown control-plane files are authoritative",
|
|
11
|
+
"sqlitePolicy": "optional-derived-cache-only",
|
|
12
|
+
"entries": [],
|
|
13
|
+
"rebuildPolicy": "rebuild-from-control-plane-files",
|
|
14
|
+
"queryBudget": {"maxReads": null, "maxMs": null, "onExceeded": "partial-or-unknown"}
|
|
15
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"projectName": "",
|
|
3
|
-
"xinyunAiVersion": "1.
|
|
4
|
-
"scriptVersion": "2026.07.
|
|
3
|
+
"xinyunAiVersion": "1.16.0",
|
|
4
|
+
"scriptVersion": "2026.07.31",
|
|
5
5
|
"schemaVersion": "1",
|
|
6
6
|
"initializationMode": "fast",
|
|
7
7
|
"expansionMode": "triggered",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"codegraph": { "enabled": false, "status": "unknown" },
|
|
17
17
|
"agentCore": {
|
|
18
|
-
"version": "1.
|
|
18
|
+
"version": "1.16.0",
|
|
19
19
|
"profile": "xinyun-ai/agent-profile.json",
|
|
20
20
|
"capabilities": "xinyun-ai/agent-capabilities.json",
|
|
21
21
|
"takeoverGate": "xinyun-ai/takeover-gate.json",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"providerSessionBindingTemplate": "xinyun-ai-init/templates/provider-session-binding.template.json",
|
|
120
120
|
"providerSessionBindings": "xinyun-ai/sessions/provider-session-bindings.json",
|
|
121
121
|
"parentSessionId": null,
|
|
122
|
-
"targetVersion": "1.
|
|
122
|
+
"targetVersion": "1.16.0",
|
|
123
123
|
"requiredRoleCount": 5,
|
|
124
124
|
"statusEnum": [
|
|
125
125
|
"pending",
|
|
@@ -361,6 +361,30 @@
|
|
|
361
361
|
"taskStatusLabelMap": {"captured": "待分析", "pending": "待分配", "executing": "执行中", "waiting-review": "待审查", "awaiting-confirmation": "待确认", "completed": "已完成", "blocked": "阻塞", "cancelled": "已取消"},
|
|
362
362
|
"readyRequires": ["controlPlane", "mainTask", "roleTasks", "teamResponsibility", "codeGraph", "roleSessions", "orchestrator", "recovery", "indexes", "sharedFacts", "conflicts", "sensitiveScan"]
|
|
363
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"
|
|
387
|
+
},
|
|
364
388
|
"v111": {
|
|
365
389
|
"status": "implemented-in-package",
|
|
366
390
|
"capability": "initializationAcceleration",
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
"roleId": null,
|
|
7
7
|
"sessionId": null,
|
|
8
8
|
"providerSessionId": null,
|
|
9
|
+
"sessionBindingContract": "adapter-neutral-v1.15",
|
|
10
|
+
"sessionRefType": "manual-reference",
|
|
11
|
+
"sessionRef": null,
|
|
12
|
+
"hostId": null,
|
|
13
|
+
"adapterNeutralRequiredEvidence": ["create-or-reuse", "send", "receive", "query-status", "recover", "close", "control-file-read-write"],
|
|
9
14
|
"projectRootHash": null,
|
|
10
15
|
"workspaceScope": null,
|
|
11
16
|
"title": null,
|
|
@@ -31,6 +36,7 @@
|
|
|
31
36
|
"bindingStatusEnum": ["pending", "bound", "rejected", "blocked", "released"],
|
|
32
37
|
"executionEligible": false,
|
|
33
38
|
"eligibilityRule": "bound + verified providerSessionId + all requiredHostEvidence + identity evidence + interaction evidence + role onboarding ready",
|
|
39
|
+
"v115EligibilityRule": "bound + operable sessionRef + project/role/task identity + seven evidence categories + role onboarding ready; providerSessionId is compatibility-only",
|
|
34
40
|
"fakeSessionIdProhibited": true,
|
|
35
41
|
"rejectionReason": null,
|
|
36
42
|
"audit": [],
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"recoveryId": "manual-session-recovery-template",
|
|
4
4
|
"provider": "codex",
|
|
5
|
+
"sessionBindingContract": "adapter-neutral-v1.15",
|
|
6
|
+
"sessionRefTypeEnum": ["host-thread", "provider-session", "manual-reference", "local-session"],
|
|
7
|
+
"requiredEvidenceCategories": ["create-or-reuse", "send", "receive", "query-status", "recover", "close", "control-file-read-write"],
|
|
5
8
|
"status": "not-started",
|
|
6
9
|
"statusEnum": ["not-started", "guided", "awaiting-user", "validating", "recovered", "blocked", "failed"],
|
|
7
10
|
"userDecisionEnum": ["manual-create", "defer", "redetect"],
|
|
@@ -42,6 +45,7 @@
|
|
|
42
45
|
"decisionEvidence": [],
|
|
43
46
|
"noChoicePolicy": "remain-blocked-without-repeat-prompt",
|
|
44
47
|
"bindingRequiredFields": ["provider", "providerSessionId", "projectRootHash", "workspaceScope", "roleId", "taskId", "title", "cwd", "boundBy", "boundAt", "identityEvidence", "interactionEvidence"],
|
|
48
|
+
"v115BindingRequiredFields": ["sessionId", "sessionRefType", "sessionRef", "hostId", "provider", "projectRootHash", "workspaceScope", "roleId", "taskId", "title", "cwd", "identityEvidence", "interactionEvidence", "bindingStatus", "bindingMode"],
|
|
45
49
|
"decisionEvidenceSchema": ["decisionId", "userDecision", "actor", "source", "decidedAt", "inputHash", "evidenceHash"],
|
|
46
50
|
"fakeProviderSessionIdProhibited": true,
|
|
47
51
|
"createdAt": null,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"metricsId": "performance-metrics-template",
|
|
4
|
+
"taskId": null,
|
|
5
|
+
"attempt": 1,
|
|
6
|
+
"baselineId": null,
|
|
7
|
+
"status": "not-started",
|
|
8
|
+
"stages": [],
|
|
9
|
+
"stageRequiredFields": ["stageId", "durationMs", "reads", "cacheHit", "queueMs", "retries", "failureReason", "degradationReason"],
|
|
10
|
+
"metrics": {"preflightMs": null, "controlPlaneReads": 0, "codeGraphCacheHit": false, "incrementalFiles": 0, "skillRouteMs": null, "queryIndexBuildMs": null, "queryMs": null, "roleConcurrency": 0, "queueMs": 0, "retryCount": 0, "cacheHitRate": 0},
|
|
11
|
+
"relativeBaseline": {"compared": false, "result": "unknown", "reason": null},
|
|
12
|
+
"fixedMaterializationTargetMs": 5000,
|
|
13
|
+
"failures": [],
|
|
14
|
+
"degradations": [],
|
|
15
|
+
"createdAt": null,
|
|
16
|
+
"updatedAt": null
|
|
17
|
+
}
|
|
@@ -189,3 +189,10 @@
|
|
|
189
189
|
- 数据库是否为 `local-files-read-only`(`sql-only` 仅兼容标识,SQL 仅生成):待填写
|
|
190
190
|
- connectionStatus、queryAuthorization、schemaChangeAuthorization、dataMutationAuthorization 是否独立:待填写
|
|
191
191
|
- statementHash、targetEnvironment、executionStatus 和 audit 是否完整:待填写
|
|
192
|
+
|
|
193
|
+
## v1.15 会话门禁检查
|
|
194
|
+
|
|
195
|
+
- sessionRefType/sessionRef 是否来自可识别且可操作的宿主引用:待填写
|
|
196
|
+
- 项目身份、角色、任务、cwd、占用和跨文件 sessionId 是否一致:待填写
|
|
197
|
+
- create/reuse、send、receive、query-status、recover、close、control-file read/write 七类证据是否完整:待填写
|
|
198
|
+
- providerSessionId 是否仅作为兼容字段而非唯一 ready 条件:待填写
|
|
@@ -258,3 +258,7 @@
|
|
|
258
258
|
- 技术全景:`xinyun-ai/technical-landscape.json`;只有 full coverage、空 unverifiedScope 和核心证据完整才可 ready。
|
|
259
259
|
- packet:`requirement-packet.json` + `technical-impact-packet.json`;使用 RFC8785 JCS-SHA-256,失效时为 `packet-stale`。
|
|
260
260
|
- 数据库默认 `local-files-read-only`,`sql-only` 仅为兼容标识;数据库相关任务只读本地 SQL/schema/migration/model 文本,连接、查询、结构变更和数据修改均禁止,SQL 仅生成供审阅,执行前校验 statementHash、目标环境和 audit。
|
|
261
|
+
|
|
262
|
+
## v1.15 adapter-neutral session binding
|
|
263
|
+
|
|
264
|
+
新任务按 `sessionId + sessionRefType + sessionRef` 记录会话。providerSessionId 仅保留历史兼容;host-thread 必须有可操作性、项目归属、角色/任务匹配和七类交互证据,缺失时保持 pending/blocked/manual-required。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"projectSummary": "",
|
|
3
3
|
"agentCore": {
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.16.0",
|
|
5
5
|
"profile": "xinyun-ai/agent-profile.json",
|
|
6
6
|
"capabilities": "xinyun-ai/agent-capabilities.json",
|
|
7
7
|
"takeoverGate": "xinyun-ai/takeover-gate.json",
|
|
@@ -362,6 +362,29 @@
|
|
|
362
362
|
"taskStatusLabelMap": {"captured": "待分析", "pending": "待分配", "executing": "执行中", "waiting-review": "待审查", "awaiting-confirmation": "待确认", "completed": "已完成", "blocked": "阻塞", "cancelled": "已取消"},
|
|
363
363
|
"readyRequires": ["controlPlane", "mainTask", "roleTasks", "teamResponsibility", "codeGraph", "roleSessions", "orchestrator", "recovery", "indexes", "sharedFacts", "conflicts", "sensitiveScan"]
|
|
364
364
|
},
|
|
365
|
+
"v115": {
|
|
366
|
+
"status": "released",
|
|
367
|
+
"sessionBindingTemplate": "xinyun-ai-init/templates/session-binding.template.json",
|
|
368
|
+
"sessionBindingPath": "xinyun-ai/sessions/session-bindings.json",
|
|
369
|
+
"sessionIdentityMode": "adapter-neutral",
|
|
370
|
+
"sessionIdentityFields": ["sessionId", "sessionRefType", "sessionRef", "hostId", "provider", "projectRootHash", "workspaceScope", "repositoryScope", "workstream", "roleId", "taskId", "title", "cwd", "identityEvidence", "interactionEvidence", "bindingStatus", "bindingMode", "createdAt", "updatedAt"],
|
|
371
|
+
"sessionRefTypeEnum": ["host-thread", "provider-session", "manual-reference", "local-session"],
|
|
372
|
+
"requiredEvidenceCategories": ["create-or-reuse", "send", "receive", "query-status", "recover", "close", "control-file-read-write"],
|
|
373
|
+
"canonicalControlPlaneId": "sessionId",
|
|
374
|
+
"providerSessionIdPolicy": "compatibility-only; not the sole identity or ready gate",
|
|
375
|
+
"batchStatus": {"v1.15-A": "released", "v1.15-B": "released", "v1.15-C": "released"}
|
|
376
|
+
},
|
|
377
|
+
"v116": {
|
|
378
|
+
"status": "candidate",
|
|
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
|
+
"factSourcePolicy": "json-markdown-primary; local index derived",
|
|
385
|
+
"sqlitePolicy": "optional-derived-cache-only",
|
|
386
|
+
"batchStatus": {"v1.16-A": "candidate", "v1.16-B": "candidate", "v1.16-C": "candidate"}
|
|
387
|
+
},
|
|
365
388
|
"v111": {
|
|
366
389
|
"status": "implemented-in-package",
|
|
367
390
|
"capability": "initializationAcceleration",
|
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"adapterId": "provider-adapter-template",
|
|
4
4
|
"provider": "codex",
|
|
5
|
-
"adapterVersion": "1.
|
|
5
|
+
"adapterVersion": "1.16.0",
|
|
6
|
+
"sessionBindingContract": "provider-specific-v1.13-compatible; adapter-neutral-v1.15-extension",
|
|
7
|
+
"adapterNeutralSessionRefTypeEnum": ["host-thread", "provider-session", "manual-reference", "local-session"],
|
|
8
|
+
"adapterNeutralControlPlaneSessionIdField": "sessionId",
|
|
9
|
+
"adapterNeutralSessionReferenceFields": ["sessionRefType", "sessionRef", "hostId", "provider"],
|
|
6
10
|
"status": "not-checked",
|
|
7
11
|
"statusEnum": ["not-checked", "checking", "available", "available-with-dependency", "unavailable", "permission-denied", "unknown", "failed", "not-verified"],
|
|
8
12
|
"canonicalSessionIdField": "providerSessionId",
|
|
@@ -28,5 +32,7 @@
|
|
|
28
32
|
"checkedAt": null,
|
|
29
33
|
"fakeSessionIdProhibited": true,
|
|
30
34
|
"ordinaryThreadIdProhibited": true,
|
|
31
|
-
"
|
|
35
|
+
"ordinaryThreadIdRule": "v1.13 compatibility path rejects bare thread IDs; v1.15 adapter-neutral path accepts host-thread only with operability and ownership evidence",
|
|
36
|
+
"legacyProviderSessionIdPolicy": "providerSessionId is required only by the historical v1.13 compatibility path; it is not the v1.15 sole ready gate",
|
|
37
|
+
"readyGate": "v1.13 compatibility: all required operations available plus provider identity and interaction evidence; v1.15: see session-binding.template.json"
|
|
32
38
|
}
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
"roleId": "project-owner",
|
|
7
7
|
"sessionId": null,
|
|
8
8
|
"sessionIdSemantics": "project compatibility alias; null until providerSessionId is verified",
|
|
9
|
+
"adapterNeutralContract": "v1.15.0 uses sessionId as the control-plane ID and sessionRefType/sessionRef as the host reference; providerSessionId is compatibility-only",
|
|
10
|
+
"sessionRefType": "host-thread",
|
|
11
|
+
"sessionRef": null,
|
|
12
|
+
"sessionRefTypeEnum": ["host-thread", "provider-session", "manual-reference", "local-session"],
|
|
13
|
+
"hostId": null,
|
|
9
14
|
"localSessionId": null,
|
|
10
15
|
"sessionIdentityMode": "provider-canonical",
|
|
11
16
|
"sessionIdentityModeEnum": ["provider-canonical", "local-degraded"],
|
|
@@ -42,7 +47,7 @@
|
|
|
42
47
|
"creationEvidence": [],
|
|
43
48
|
"requiredHostEvidence": ["create-or-reuse", "send", "receive", "query-status", "recover", "close"]
|
|
44
49
|
},
|
|
45
|
-
"targetVersion": "1.
|
|
50
|
+
"targetVersion": "1.16.0",
|
|
46
51
|
"projectRootHash": null,
|
|
47
52
|
"workspaceScope": {"scopeType": "project-root", "scopePathHashes": [], "scopeRevision": null},
|
|
48
53
|
"repositoryScopeHash": null,
|
|
@@ -91,9 +96,10 @@
|
|
|
91
96
|
"renameAudit": null,
|
|
92
97
|
"displayName": null,
|
|
93
98
|
"displayNamePattern": "项目名|角色|职责或工作流",
|
|
99
|
+
"v115ReadyGate": "operable sessionRef + project/role/task identity + seven evidence categories + no conflict",
|
|
94
100
|
"projectDisplayName": null,
|
|
95
101
|
"roleDisplayName": null,
|
|
96
102
|
"responsibilityLabel": null,
|
|
97
103
|
"titleSource": "role-contract",
|
|
98
|
-
"titleVersion": "1.
|
|
104
|
+
"titleVersion": "1.15.0"
|
|
99
105
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"contractVersion": "1.15.0",
|
|
4
|
+
"bindingId": "session-binding-template",
|
|
5
|
+
"sessionId": null,
|
|
6
|
+
"sessionRefType": "host-thread",
|
|
7
|
+
"sessionRef": null,
|
|
8
|
+
"sessionRefTypeEnum": ["host-thread", "provider-session", "manual-reference", "local-session"],
|
|
9
|
+
"hostId": null,
|
|
10
|
+
"provider": null,
|
|
11
|
+
"projectRootHash": null,
|
|
12
|
+
"workspaceScope": {"scopeType": "project-root", "scopePathHashes": [], "scopeRevision": null},
|
|
13
|
+
"repositoryScope": [],
|
|
14
|
+
"workstream": null,
|
|
15
|
+
"roleId": null,
|
|
16
|
+
"taskId": null,
|
|
17
|
+
"title": null,
|
|
18
|
+
"cwd": null,
|
|
19
|
+
"identityEvidence": [],
|
|
20
|
+
"interactionEvidence": [],
|
|
21
|
+
"requiredEvidenceCategories": ["create-or-reuse", "send", "receive", "query-status", "recover", "close", "control-file-read-write"],
|
|
22
|
+
"bindingStatus": "pending",
|
|
23
|
+
"bindingStatusEnum": ["pending", "validating", "bound", "blocked", "manual-required", "conflict", "released", "recovery-required"],
|
|
24
|
+
"bindingMode": "auto-created",
|
|
25
|
+
"bindingModeEnum": ["auto-created", "auto-reused", "manual", "recovery", "local-degraded"],
|
|
26
|
+
"executionEligible": false,
|
|
27
|
+
"readyGate": "operable reference + project/role/task identity + seven evidence categories + no conflict",
|
|
28
|
+
"legacyProviderSessionId": null,
|
|
29
|
+
"legacyProviderCompatibility": "providerSessionId is retained only when sessionRefType=provider-session; it is not the v1.15 canonical field",
|
|
30
|
+
"idempotencyKey": null,
|
|
31
|
+
"attempt": 1,
|
|
32
|
+
"createdAt": "2026-07-31T00:00:00.000Z",
|
|
33
|
+
"updatedAt": "2026-07-31T00:00:00.000Z",
|
|
34
|
+
"audit": []
|
|
35
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"skillRunId": "skill-run-template",
|
|
4
|
+
"skillId": null,
|
|
5
|
+
"roleId": null,
|
|
6
|
+
"taskId": null,
|
|
7
|
+
"routeReason": [],
|
|
8
|
+
"selectedAt": null,
|
|
9
|
+
"status": "pending",
|
|
10
|
+
"statusEnum": ["pending", "selected", "running", "completed", "failed", "fallback", "blocked", "skipped"],
|
|
11
|
+
"usedTools": [],
|
|
12
|
+
"unusedTools": [],
|
|
13
|
+
"fallbackReason": null,
|
|
14
|
+
"evidence": [],
|
|
15
|
+
"unverifiedScope": [],
|
|
16
|
+
"startedAt": null,
|
|
17
|
+
"finishedAt": null,
|
|
18
|
+
"skillSource": null,
|
|
19
|
+
"skillVersion": null,
|
|
20
|
+
"skillDigest": null,
|
|
21
|
+
"trustStatus": "unknown",
|
|
22
|
+
"dependencyStatus": "unknown",
|
|
23
|
+
"permissionStatus": "unknown"
|
|
24
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"routeId": "skill-route-template",
|
|
4
|
+
"taskId": null,
|
|
5
|
+
"roleId": null,
|
|
6
|
+
"routeFingerprint": null,
|
|
7
|
+
"routeReason": [],
|
|
8
|
+
"candidateSkills": [],
|
|
9
|
+
"selected": [],
|
|
10
|
+
"rejected": [],
|
|
11
|
+
"fallback": [],
|
|
12
|
+
"blocked": [],
|
|
13
|
+
"selectionOrder": ["project-binding", "framework-specific", "generic", "fallback"],
|
|
14
|
+
"registrySource": "xinyun-ai/skills/registry.json",
|
|
15
|
+
"registryVersion": null,
|
|
16
|
+
"registryDigest": null,
|
|
17
|
+
"reusePolicy": "reuse-until-task-scope-stack-or-skill-version-changes",
|
|
18
|
+
"createdAt": null,
|
|
19
|
+
"updatedAt": null
|
|
20
|
+
}
|