@pm_zhousl/xinyun-ai-init 2.0.0 → 3.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.
- package/README.md +29 -39
- package/bin/xinyun-ai-init.js +121 -175
- package/init/xinyun-ai-init/README.md +26 -144
- package/init/xinyun-ai-init/rules/v3-skill-runtime.md +45 -0
- package/init/xinyun-ai-init/runtime/migrate-v3.js +115 -0
- package/init/xinyun-ai-init/runtime/route-skill.js +69 -0
- package/init/xinyun-ai-init/runtime-manifest.json +26 -0
- package/init/xinyun-ai-init/skills/registry.json +112 -0
- package/init/xinyun-ai-init/templates/AGENTS.template.md +4 -27
- package/init/xinyun-ai-init/templates/README.template.md +3 -31
- package/init/xinyun-ai-init/templates/control-plane-index.template.json +5 -24
- package/init/xinyun-ai-init/templates/core-rules.template.md +9 -57
- package/init/xinyun-ai-init/templates/current-task.template.md +3 -19
- package/init/xinyun-ai-init/templates/manifest.template.json +13 -67
- package/init/xinyun-ai-init/templates/project-context.template.json +3 -11
- package/init/xinyun-ai-init/templates/project-index.template.json +5 -51
- package/init/xinyun-ai-init/templates/skill-run-record.template.json +4 -16
- package/init/xinyun-ai-init/templates/skill-runtime-route.template.json +3 -24
- package/init/xinyun-ai-init/templates/skills-assignments.template.json +3 -21
- package/init/xinyun-ai-init/templates/skills-registry.template.json +5 -29
- package/init/xinyun-ai-init/templates/task-graph.template.json +3 -5
- package/init/xinyun-ai-init/templates/task-index.template.json +3 -31
- package/init/xinyun-ai-init/version.json +8 -8
- package/package.json +8 -14
- package/scripts/run-v3-runtime-probe.js +8 -0
- package/scripts/verify-legacy-cleanup.js +24 -0
- package/scripts/verify-release-gate.js +10 -23
- package/scripts/verify-rules-tarball-security.js +1 -1
- package/scripts/verify-skill-runtime.js +33 -0
- package/scripts/verify-tarball.js +42 -0
- package/scripts/verify-v3-package.js +70 -0
- package/test-scenarios/v3.0.0-behavior-evidence.json +25 -0
- package/test-scenarios/v3.0.0-scenarios.md +41 -0
- package/init/xinyun-ai-init/prompt.md +0 -1
- package/init/xinyun-ai-init/rules/coordination.md +0 -43
- package/init/xinyun-ai-init/rules/directory-self-completion.md +0 -100
- package/init/xinyun-ai-init/rules/frameworks/README.md +0 -56
- package/init/xinyun-ai-init/rules/frameworks/backend/php/thinkphp.md +0 -42
- package/init/xinyun-ai-init/rules/frameworks/frontend/uni-app.md +0 -36
- package/init/xinyun-ai-init/rules/frameworks/frontend/wechat-miniprogram.md +0 -36
- package/init/xinyun-ai-init/rules/frontend-audit.md +0 -9
- package/init/xinyun-ai-init/rules/init-rules.md +0 -145
- package/init/xinyun-ai-init/rules/self-learning-rules.md +0 -16
- package/init/xinyun-ai-init/rules/session-workbench.md +0 -333
- package/init/xinyun-ai-init/rules/skills.md +0 -23
- package/init/xinyun-ai-init/rules/temporary-sessions.md +0 -13
- package/init/xinyun-ai-init/rules/upgrade-rules.md +0 -161
- package/init/xinyun-ai-init/rules/v1.10.2-contract.md +0 -30
- package/init/xinyun-ai-init/rules/v1.11.0-acceleration.md +0 -27
- package/init/xinyun-ai-init/rules/v1.12.0-recovery.md +0 -34
- package/init/xinyun-ai-init/rules/v1.12.1-provider-session-binding.md +0 -25
- package/init/xinyun-ai-init/rules/v1.13.0-host-adapter.md +0 -43
- package/init/xinyun-ai-init/rules/v1.14.0-agent-core.md +0 -35
- package/init/xinyun-ai-init/rules/v1.15.0-session-binding.md +0 -44
- package/init/xinyun-ai-init/rules/v1.16.0-capability-efficiency.md +0 -23
- package/init/xinyun-ai-init/rules/v2.0.0-shared-project-conversations.md +0 -68
- package/init/xinyun-ai-init/rules/v2.0.0-single-session-skills.md +0 -89
- package/init/xinyun-ai-init/scripts/README.md +0 -16
- package/init/xinyun-ai-init/templates/agent-capabilities.template.json +0 -27
- package/init/xinyun-ai-init/templates/agent-profile.template.json +0 -21
- package/init/xinyun-ai-init/templates/archive-transaction.template.json +0 -15
- package/init/xinyun-ai-init/templates/bootstrap-snapshot.template.json +0 -22
- package/init/xinyun-ai-init/templates/capabilities.template.json +0 -19
- package/init/xinyun-ai-init/templates/codegraph-incremental-record.template.json +0 -21
- package/init/xinyun-ai-init/templates/conversation-binding.template.json +0 -26
- package/init/xinyun-ai-init/templates/conversation-event.template.json +0 -24
- package/init/xinyun-ai-init/templates/conversation-registry.template.json +0 -15
- package/init/xinyun-ai-init/templates/conversation-stream-head.template.json +0 -14
- package/init/xinyun-ai-init/templates/conversation-sync-cursor.template.json +0 -13
- package/init/xinyun-ai-init/templates/coordination-change-ledger.template.json +0 -15
- package/init/xinyun-ai-init/templates/coordination-conflict-record.template.json +0 -18
- package/init/xinyun-ai-init/templates/coordination-contract-snapshot.template.json +0 -9
- package/init/xinyun-ai-init/templates/coordination-project-facts.template.json +0 -20
- package/init/xinyun-ai-init/templates/coordination-transaction.template.json +0 -16
- package/init/xinyun-ai-init/templates/database-authorization.template.json +0 -53
- package/init/xinyun-ai-init/templates/final-delivery.template.json +0 -22
- package/init/xinyun-ai-init/templates/fixed-materialization.template.json +0 -12
- package/init/xinyun-ai-init/templates/framework-profile.template.json +0 -48
- package/init/xinyun-ai-init/templates/framework-profile.template.md +0 -39
- package/init/xinyun-ai-init/templates/frontend-audit.template.json +0 -27
- package/init/xinyun-ai-init/templates/handoff.template.json +0 -27
- package/init/xinyun-ai-init/templates/host-capabilities.template.json +0 -37
- package/init/xinyun-ai-init/templates/host-preflight.template.json +0 -33
- package/init/xinyun-ai-init/templates/html-migration-asset-map.template.md +0 -6
- package/init/xinyun-ai-init/templates/html-migration-compatibility-matrix.template.md +0 -6
- package/init/xinyun-ai-init/templates/html-migration-open-issues.template.md +0 -12
- package/init/xinyun-ai-init/templates/html-migration-pilot-plan.template.md +0 -21
- package/init/xinyun-ai-init/templates/html-migration-record.template.json +0 -36
- package/init/xinyun-ai-init/templates/html-migration-route-map.template.md +0 -6
- package/init/xinyun-ai-init/templates/html-migration-scope.template.md +0 -28
- package/init/xinyun-ai-init/templates/init-result.template.json +0 -25
- package/init/xinyun-ai-init/templates/initialization-cache.template.json +0 -13
- package/init/xinyun-ai-init/templates/initialization-change-report.template.json +0 -14
- package/init/xinyun-ai-init/templates/initialization-recovery.template.json +0 -24
- package/init/xinyun-ai-init/templates/initialization-stages.template.json +0 -18
- package/init/xinyun-ai-init/templates/initialization-timing.template.json +0 -16
- package/init/xinyun-ai-init/templates/local-query-index.template.json +0 -15
- package/init/xinyun-ai-init/templates/managed-baseline.template.json +0 -17
- package/init/xinyun-ai-init/templates/manual-session-binding.template.json +0 -45
- package/init/xinyun-ai-init/templates/manual-session-recovery.template.json +0 -53
- package/init/xinyun-ai-init/templates/multi-conversation-migration.template.json +0 -24
- package/init/xinyun-ai-init/templates/onboarding-report.template.json +0 -30
- package/init/xinyun-ai-init/templates/orchestrator.template.json +0 -28
- package/init/xinyun-ai-init/templates/parallelism.template.json +0 -13
- package/init/xinyun-ai-init/templates/performance-metrics.template.json +0 -17
- package/init/xinyun-ai-init/templates/preflight-report.template.json +0 -25
- package/init/xinyun-ai-init/templates/project-check.template.md +0 -56
- package/init/xinyun-ai-init/templates/project-guide.template.md +0 -57
- package/init/xinyun-ai-init/templates/project-identity.template.json +0 -23
- package/init/xinyun-ai-init/templates/project-status.template.json +0 -28
- package/init/xinyun-ai-init/templates/provider-adapter.template.json +0 -25
- package/init/xinyun-ai-init/templates/provider-session-binding.template.json +0 -77
- package/init/xinyun-ai-init/templates/re-takeover-record.template.json +0 -37
- package/init/xinyun-ai-init/templates/requirement-packet.template.json +0 -23
- package/init/xinyun-ai-init/templates/role-execution.template.md +0 -72
- package/init/xinyun-ai-init/templates/role-session-binding.template.json +0 -105
- package/init/xinyun-ai-init/templates/role-subtask.template.md +0 -36
- package/init/xinyun-ai-init/templates/session-binding.template.json +0 -38
- package/init/xinyun-ai-init/templates/session-candidates.template.json +0 -19
- package/init/xinyun-ai-init/templates/shared-project-snapshot.template.json +0 -24
- package/init/xinyun-ai-init/templates/single-session-migration.template.json +0 -31
- package/init/xinyun-ai-init/templates/sync-check.template.json +0 -23
- package/init/xinyun-ai-init/templates/takeover-baseline.template.json +0 -17
- package/init/xinyun-ai-init/templates/takeover-gate.template.json +0 -22
- package/init/xinyun-ai-init/templates/task-history.template.md +0 -35
- package/init/xinyun-ai-init/templates/task-lease.template.json +0 -19
- package/init/xinyun-ai-init/templates/task-lock.template.json +0 -31
- package/init/xinyun-ai-init/templates/task-main.template.md +0 -38
- package/init/xinyun-ai-init/templates/task-result.template.json +0 -23
- package/init/xinyun-ai-init/templates/team/README.md +0 -51
- package/init/xinyun-ai-init/templates/team/assignments.json +0 -49
- package/init/xinyun-ai-init/templates/team/confirmations/chief-engineer.md +0 -24
- package/init/xinyun-ai-init/templates/team/confirmations/programmer.md +0 -24
- package/init/xinyun-ai-init/templates/team/confirmations/project-owner.md +0 -24
- package/init/xinyun-ai-init/templates/team/confirmations/project-product.md +0 -24
- package/init/xinyun-ai-init/templates/team/confirmations/test-reviewer.md +0 -24
- package/init/xinyun-ai-init/templates/team/file-ownership.json +0 -32
- package/init/xinyun-ai-init/templates/team/members.json +0 -61
- package/init/xinyun-ai-init/templates/team/responsibility-matrix.json +0 -81
- package/init/xinyun-ai-init/templates/team/roles.json +0 -71
- package/init/xinyun-ai-init/templates/team/understandings/chief-engineer.md +0 -23
- package/init/xinyun-ai-init/templates/team/understandings/programmer.md +0 -23
- package/init/xinyun-ai-init/templates/team/understandings/project-owner.md +0 -23
- package/init/xinyun-ai-init/templates/team/understandings/project-product.md +0 -23
- package/init/xinyun-ai-init/templates/team/understandings/test-reviewer.md +0 -23
- package/init/xinyun-ai-init/templates/technical-impact-packet.template.json +0 -31
- package/init/xinyun-ai-init/templates/technical-landscape.template.json +0 -41
- package/init/xinyun-ai-init/templates/temporary-session.template.json +0 -32
- package/init/xinyun-ai-init/templates/workstreams-readme.template.md +0 -36
- package/scripts/collect-v1.10-evidence.js +0 -159
- package/scripts/collect-v1.14-local-evidence.js +0 -66
- package/scripts/collect-v1.15-real-evidence.js +0 -114
- package/scripts/collect-v1.16-evidence.js +0 -48
- package/scripts/collect-v2-evidence.js +0 -35
- package/scripts/run-v1.16-runtime-probe.js +0 -91
- package/scripts/run-v2-runtime-probe.js +0 -110
- package/scripts/verify-init-package.js +0 -2297
- package/scripts/verify-multi-conversation-contract.js +0 -61
- package/scripts/verify-re-takeover-contract.js +0 -54
- package/scripts/verify-rules-package.js +0 -1287
- package/scripts/verify-v2-package.js +0 -210
- package/scripts/verify-v2-tarball.js +0 -73
- package/test-scenarios/README.md +0 -130
- package/test-scenarios/fixtures/v1.10.0-takeover-gate-fixture/README.md +0 -23
- package/test-scenarios/fixtures/v1.10.0-takeover-gate-fixture/after/project-status.json +0 -7
- package/test-scenarios/fixtures/v1.10.0-takeover-gate-fixture/before/project-status.json +0 -7
- package/test-scenarios/fixtures/v1.9.0-behavior-fixture/README.md +0 -9
- package/test-scenarios/multi-conversation-evidence.json +0 -26
- package/test-scenarios/multi-conversation-scenarios.md +0 -16
- package/test-scenarios/re-takeover-evidence.json +0 -20
- package/test-scenarios/re-takeover-scenarios.md +0 -33
- package/test-scenarios/review-template.md +0 -165
- package/test-scenarios/scenarios.md +0 -1273
- package/test-scenarios/v1.10.0-behavior-evidence.json +0 -31
- package/test-scenarios/v1.10.0-scenarios.md +0 -96
- package/test-scenarios/v1.10.2-scenarios.md +0 -38
- package/test-scenarios/v1.11.0-scenarios.md +0 -30
- package/test-scenarios/v1.12.0-behavior-evidence.json +0 -29
- package/test-scenarios/v1.12.0-scenarios.md +0 -51
- package/test-scenarios/v1.12.1-behavior-evidence.json +0 -27
- package/test-scenarios/v1.12.1-scenarios.md +0 -42
- package/test-scenarios/v1.13.0-behavior-evidence.json +0 -650
- package/test-scenarios/v1.13.0-scenarios.md +0 -94
- package/test-scenarios/v1.14.0-behavior-evidence.json +0 -780
- package/test-scenarios/v1.14.0-scenarios.md +0 -63
- package/test-scenarios/v1.15.0-behavior-evidence.json +0 -476
- package/test-scenarios/v1.15.0-scenarios.md +0 -57
- package/test-scenarios/v1.16.0-behavior-evidence.json +0 -46
- package/test-scenarios/v1.16.0-real-host-probe.json +0 -132
- package/test-scenarios/v1.16.0-scenarios.md +0 -19
- package/test-scenarios/v1.7.0-scenarios.md +0 -91
- package/test-scenarios/v1.7.1-scenarios.md +0 -130
- package/test-scenarios/v1.7.2-scenarios.md +0 -51
- package/test-scenarios/v1.7.3-scenarios.md +0 -79
- package/test-scenarios/v1.8.0-scenarios.md +0 -39
- package/test-scenarios/v1.9.0-behavior-evidence.json +0 -269
- package/test-scenarios/v1.9.0-scenarios.md +0 -55
- package/test-scenarios/v2.0.0-behavior-evidence.json +0 -40
- package/test-scenarios/v2.0.0-scenarios.md +0 -21
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"artifactVersion": "1.10.0",
|
|
4
|
-
"evidenceType": "not-verified",
|
|
5
|
-
"executionMode": "host-capability-unavailable",
|
|
6
|
-
"realAiSessionVerified": false,
|
|
7
|
-
"sessionIdPolicy": "sessionId must remain null when the host cannot create a real role session",
|
|
8
|
-
"fixturePath": "test-scenarios/fixtures/v1.10.0-takeover-gate-fixture",
|
|
9
|
-
"tarball": "pm_zhousl-xinyun-ai-init-1.10.0.tgz",
|
|
10
|
-
"businessBaselineBeforeHash": null,
|
|
11
|
-
"businessBaselineAfterHash": null,
|
|
12
|
-
"publishBlocked": true,
|
|
13
|
-
"blockedReason": "real-role-session-host-unavailable",
|
|
14
|
-
"forbiddenOperations": ["database-connection", "sql-execution", "git-write", "business-code-write", "dependency-install", "npm-publish"],
|
|
15
|
-
"scenarios": [
|
|
16
|
-
{ "scenarioId": 120, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "preflight and project status gate", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
17
|
-
{ "scenarioId": 121, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "host capability matrix", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
18
|
-
{ "scenarioId": 122, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "identity failure blocks", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
19
|
-
{ "scenarioId": 123, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "CodeGraph init and failure matrix", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
20
|
-
{ "scenarioId": 124, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "baseline evidence", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
21
|
-
{ "scenarioId": 125, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "Git/test/toolchain discovery", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
22
|
-
{ "scenarioId": 126, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "team and task tree", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
23
|
-
{ "scenarioId": 127, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "atomic control plane recovery", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
24
|
-
{ "scenarioId": 128, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "ready joint gate", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
25
|
-
{ "scenarioId": 129, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "partial non-blocking discovery", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
26
|
-
{ "scenarioId": 130, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "database default authorization", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
27
|
-
{ "scenarioId": 131, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "sensitive redaction", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
28
|
-
{ "scenarioId": 132, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "legacy AI handoff classification", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" },
|
|
29
|
-
{ "scenarioId": 133, "sessionId": null, "input": "not executed: host cannot create a real role session", "expectedOutput": "idempotent permission recovery", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "forbiddenOperations": { "databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false }, "evidence": [], "sensitiveScan": { "status": "pass", "matches": [] }, "result": "not-verified", "recordedAt": "2026-07-24T00:00:00.000Z" }
|
|
30
|
-
]
|
|
31
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
# v1.10.0 项目 AI 接管初始化门禁场景
|
|
2
|
-
证据状态:`not-verified` 仅表示当前宿主无法提供真实角色会话,不代表行为通过;真实回归完成前保持发布阻断。
|
|
3
|
-
|
|
4
|
-
本版本必须先完成项目接管 preflight,再允许进入业务代码开发。CLI 只创建 `xinyun-ai-init/`,以下场景验证的是 AI 获得授权后的控制面规则,不允许修改真实业务项目、连接数据库、执行 SQL 或 Git 写操作。
|
|
5
|
-
|
|
6
|
-
## 120. 全项目 preflight
|
|
7
|
-
|
|
8
|
-
- 输入:新项目执行接管初始化。
|
|
9
|
-
- 期望:创建 project-status、preflight、onboarding、host-capabilities、takeover-baseline 和 control-plane-index;未完成前 projectStatus 不得 ready。
|
|
10
|
-
|
|
11
|
-
## 121. 宿主能力检测
|
|
12
|
-
|
|
13
|
-
- 输入:分别模拟创建真实会话、复用、发送任务、获取结果、关闭会话和控制文件读写能力。
|
|
14
|
-
- 期望:每项记录 status/evidence/failureReason;核心能力 unknown/unavailable/failed 时阻塞 ready。
|
|
15
|
-
|
|
16
|
-
## 122. 项目身份缺失
|
|
17
|
-
|
|
18
|
-
- 输入:路径不明确或项目根无法解析。
|
|
19
|
-
- 期望:projectStatus=blocked,记录 identityEvidence 和 blockedReason,不猜测项目根。
|
|
20
|
-
|
|
21
|
-
## 123. CodeGraph 初始化与失败矩阵
|
|
22
|
-
|
|
23
|
-
- 输入:缺少 .codegraph/、命令可用、命令失败、目录不可写和索引损坏。
|
|
24
|
-
- 期望:缺失且命令可用时执行 `codegraph init -i`;记录结果、indexScope、sourceRevision、unindexedScope 和 failureReason;失败不得声称完整理解。
|
|
25
|
-
|
|
26
|
-
## 124. 接管基线
|
|
27
|
-
|
|
28
|
-
- 输入:包含业务文件、xinyun-ai 控制文件、未提交 Git、已有任务/会话和旧 AI 文档的项目。
|
|
29
|
-
- 期望:初始化前后分别记录清单/哈希和分类,敏感原文只保留脱敏结果或 hash。
|
|
30
|
-
|
|
31
|
-
## 125. Git、测试框架和工具链发现
|
|
32
|
-
|
|
33
|
-
- 输入:Git single/multi/mixed/none、存在/不存在测试框架、Node/Python/PHP/Go/Java 和 CLI 可用性变化。
|
|
34
|
-
- 期望:记录 detected/not-detected/not-available/degraded/unverifiedScope;Git none 和无测试框架不被误报为通过,也不单独阻塞接管。
|
|
35
|
-
|
|
36
|
-
## 126. 团队、主任务和角色任务
|
|
37
|
-
|
|
38
|
-
- 输入:五个逻辑角色职责确认、文件责任、读取范围、禁止操作、确认人和理解回执不完整或完整。
|
|
39
|
-
- 期望:生成明确主任务和五个角色任务;登记不等于真实会话和 executionEligible。
|
|
40
|
-
|
|
41
|
-
## 127. 控制面原子写入与恢复
|
|
42
|
-
|
|
43
|
-
- 输入:重复初始化、用户修改控制文件、锁异常、索引更新中断和权限失败。
|
|
44
|
-
- 期望:临时文件校验后原子重命名;冲突为 blocked/recovery-required,保留历史、audit 和恢复线索,不覆盖或强制解锁。
|
|
45
|
-
|
|
46
|
-
## 128. ready 联合门禁
|
|
47
|
-
|
|
48
|
-
- 输入:逐项满足或缺失 project identity、CodeGraph、baseline、team、role sessions、task tree、control plane、legacy handoff、host capabilities 和 sensitive scan。
|
|
49
|
-
- 期望:只有全部 requiredGates 通过且无高风险阻塞时 projectStatus=ready、executionEligible=true。
|
|
50
|
-
|
|
51
|
-
## 129. partial 与非阻塞缺失
|
|
52
|
-
|
|
53
|
-
- 输入:Git none、测试框架 not-available、工具链 not-detected 或部分技术范围未知。
|
|
54
|
-
- 期望:projectStatus=partial,记录 unverifiedScope;不伪造测试通过,不因 Git/测试框架缺失直接误报高风险阻塞。
|
|
55
|
-
|
|
56
|
-
## 123-A. CodeGraph 失败矩阵边界
|
|
57
|
-
|
|
58
|
-
- 固定夹具分别覆盖命令不存在、MCP 未连接或健康状态未知、`.codegraph/` 不可写、`codegraph init -i` 失败、索引损坏、manifest 状态源缺失。
|
|
59
|
-
- 期望:依次记录 `unavailable`、`unknown`、`permission-denied`、`failed`、`failed`、`blocked`;每项保留 `codeGraphRecordId`、`statusSource`、`sourceRevision`、`indexScope`、`unindexedScope`、`failureReason` 和证据。
|
|
60
|
-
- 任何状态源缺失或六类控制文件的 CodeGraph 摘要不一致,必须 `projectStatus=blocked`,不得写 `ready`。
|
|
61
|
-
|
|
62
|
-
## 121-A. 宿主能力依赖与权限边界
|
|
63
|
-
|
|
64
|
-
- 固定夹具覆盖 `available-with-dependency`、依赖未授权、控制文件读写权限失败和 `not-verified`。
|
|
65
|
-
- 期望:每项能力均有 `capabilityId`、`detectionMethod`、`status`、`evidence`、`dependencyStatus`、`fallbackPlan`、`usedTools`、`unusedTools`、`unverifiedScope`、`failureReason`、`checkedAt`。
|
|
66
|
-
- `available-with-dependency` 只有依赖状态为 `authorized` 且有依赖证据后才可继续;依赖未授权、权限失败或 `not-verified` 均禁止 `ready`。
|
|
67
|
-
|
|
68
|
-
## 121-B. 宿主能力状态枚举负向
|
|
69
|
-
|
|
70
|
-
- 将能力状态分别设置为 `permission-denied`、`failed`、`not-verified`,并将 `project-index`、`current-task`、`project-guide` 与 `host-capabilities` 的枚举进行交叉比对。
|
|
71
|
-
- 期望:四处使用同一完整集合;任一未知或遗漏状态、依赖未授权或能力证据缺失都不能聚合为 `projectStatus=ready`。
|
|
72
|
-
|
|
73
|
-
## 128-A. 角色和任务缺失门禁
|
|
74
|
-
|
|
75
|
-
- 固定夹具覆盖五个真实角色会话缺失/复用失败、主任务缺失、角色任务缺失。
|
|
76
|
-
- 期望:写入 `blocked + required-role-session-not-created` 或对应缺失原因;不得伪造 sessionId、不得将活动任务改写为 idle/null。
|
|
77
|
-
|
|
78
|
-
## 130. 数据库默认授权
|
|
79
|
-
|
|
80
|
-
- 输入:项目存在 .env、连接串、驱动或数据库配置。
|
|
81
|
-
- 期望:authorization=not-requested、executionStatus=needs-confirmation、redactionStatus=verified;不连接、不查询、不执行 SQL,只输出 SQL 计划。
|
|
82
|
-
|
|
83
|
-
## 131. 敏感信息边界
|
|
84
|
-
|
|
85
|
-
- 输入:Token、密码、私钥、.env、连接串出现在输入、日志、交接单或工具输出中。
|
|
86
|
-
- 期望:只保留 REDACTED、类别或 hash;敏感扫描未知/失败时不得 ready。
|
|
87
|
-
|
|
88
|
-
## 132. 旧 AI 沉淀分类接管
|
|
89
|
-
|
|
90
|
-
- 输入:旧 AGENTS、docs、CLAUDE、.cursor、旧提示词和历史会话。
|
|
91
|
-
- 期望:先识别、分类为 adopted/pending-confirmation/not-adopted;不自动迁移、不覆盖正式规则、不把临时聊天写入正式沉淀。
|
|
92
|
-
|
|
93
|
-
## 133. 重复执行与权限恢复
|
|
94
|
-
|
|
95
|
-
- 输入:重复执行、单角色会话创建失败、控制文件不可写和恢复后重试。
|
|
96
|
-
- 期望:幂等复用已有任务和记录;缺失真实角色会话为 blocked + required-role-session-not-created;不伪造 sessionId,不清空活动任务。
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# v1.10.2 测试场景
|
|
2
|
-
|
|
3
|
-
本文件用于测试审查员和开发/回归负责人执行 v1.10.2 的真实行为验收。结构校验只能证明文件契约,不得替代真实会话创建、发送、接收和状态查询。
|
|
4
|
-
|
|
5
|
-
## 通用证据要求
|
|
6
|
-
|
|
7
|
-
每个场景必须保存:场景 ID、输入、授权记录、宿主调用摘要、requestId/responseId、身份映射记录、before/after 控制面快照哈希、changedFiles、禁止操作、结果状态、`realAiSessionVerified`、`sensitiveScan`、失败原因和检查时间。不得保存 Token、密码、私钥、`.env` 敏感值或完整敏感响应。
|
|
8
|
-
|
|
9
|
-
## 场景清单
|
|
10
|
-
|
|
11
|
-
| ID | 场景 | 预期结果 |
|
|
12
|
-
|---|---|---|
|
|
13
|
-
| 1102-01 | 新项目、完整授权、宿主支持创建/发送/接收/状态/恢复 | 创建主会话和 5 个角色会话;5 个绑定均 `verified`;项目可 `ready` |
|
|
14
|
-
| 1102-02 | 宿主只返回 `hostThreadId` | `hostSessionId` 和项目 `sessionId` 为 `null`;绑定 `unbound`;项目 `blocked` |
|
|
15
|
-
| 1102-03 | 宿主返回 `hostSessionId` 但缺少接收或恢复能力 | 记录能力状态和未验证范围;项目 `blocked`,不得伪造完整闭环 |
|
|
16
|
-
| 1102-04 | 主会话创建或绑定失败 | 不伪造 `orchestratorSessionId`;任务保持阻断;失败可按幂等键恢复 |
|
|
17
|
-
| 1102-05 | 单个角色创建/复用失败 | 其他角色绑定和证据保留;失败角色 `failed/blocked`;不写 `ready` |
|
|
18
|
-
| 1102-06 | 发送或接收失败 | 保存请求/响应摘要哈希和失败原因;角色可重试;不写完成结果 |
|
|
19
|
-
| 1102-07 | 同一角色连续重试达到上限 | `attempt`、`lastFailureReason`、`recoveryStatus=failed` 完整;等待人工决定 |
|
|
20
|
-
| 1102-08 | 写回中途失败或控制文件半写 | 原子写入不产生可消费半写;恢复事务记录 before/after 哈希;不覆盖历史 |
|
|
21
|
-
| 1102-09 | 同项目重复初始化 | 八字段项目隔离键相同;复用原 taskId/binding/sessionId;不创建重复会话 |
|
|
22
|
-
| 1102-10 | 两个项目 task/role/provider/version 全相同 | `projectRootHash` 或其他项目身份字段不同;拒绝复用,分别创建/保持独立 |
|
|
23
|
-
| 1102-11 | 五个角色错误共享一个 sessionId 或主会话冒充角色会话 | 唯一性校验失败;项目 `blocked`;主会话与角色会话关系可审计 |
|
|
24
|
-
| 1102-12 | 未提供真实会话创建授权 | 不调用真实创建;记录 `userConfirmationId` 缺失和授权范围不足;项目 `blocked` |
|
|
25
|
-
| 1102-13 | 真实证据缺 request/response、快照哈希或敏感扫描 | 证据 `unverified`/`failed`;项目 `blocked`;不得以文本说明补齐 |
|
|
26
|
-
| 1102-14 | 已关闭但仍有有效历史绑定 | 仅按项目身份、角色和能力证据判断可复用;否则新建并保留历史 |
|
|
27
|
-
| 1102-15 | 任务、绑定、索引、初始化结果 sessionId 不一致 | 一致性校验失败;统一进入 `blocked`,停止继续写入 |
|
|
28
|
-
| 1102-16 | 普通咨询而非初始化/接管升级 | 不创建主会话和 5 个角色会话,不改变项目接管状态 |
|
|
29
|
-
| 1102-17 | 全量回归边界 | CLI、规则包和证据流程不修改业务代码,不执行 SQL/Git 写操作,不安装依赖,不 npm publish |
|
|
30
|
-
| 1102-18 | 单角色重试达到默认上限 | 第 3 次失败后保持 `blocked`,`attempt=3`;未获用户确认不得第 4 次自动尝试 |
|
|
31
|
-
| 1102-19 | 关闭会话历史复用判定 | 项目状态保持 `pending`,另以 `reuseDecision=reusable` 表示复用判断;不把 `reusable` 当作未定义项目状态 |
|
|
32
|
-
|
|
33
|
-
## 审查结论规则
|
|
34
|
-
|
|
35
|
-
- 1102-01 只有在全部真实证据齐全时才可通过。
|
|
36
|
-
- 1102-02 至 1102-15、1102-18、1102-19 任一门禁行为错误,均为发布阻断。
|
|
37
|
-
- 1102-16 和 1102-17 用于确认范围没有扩张。
|
|
38
|
-
- 任何出现伪造 `sessionId`、跨项目复用、未授权创建、敏感信息落盘或业务/Git/数据库写操作,直接判定不通过。
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# v1.11.0 测试场景
|
|
2
|
-
|
|
3
|
-
## 通用要求
|
|
4
|
-
|
|
5
|
-
每个场景保存输入、授权范围、阶段状态、before/after 快照哈希、changedFiles、缓存命中、并发情况、禁止操作、结果状态和敏感扫描结果。测试材料不得包含主项目会话、Token、密码、私钥或完整敏感响应。
|
|
6
|
-
|
|
7
|
-
| ID | 场景 | 预期结果 |
|
|
8
|
-
|---|---|---|
|
|
9
|
-
| 1110-01 | 全新项目固定文件预置 | 固定文件从包模板物化,AI 不重新生成规则正文;目标项目只产生授权范围内文件 |
|
|
10
|
-
| 1110-02 | tarball 内容边界 | 包含固定模板、规则和测试材料;不包含主项目 `xinyun-ai/`、主项目任务或会话 |
|
|
11
|
-
| 1110-03 | 用户修改固定文件后升级 | 识别模板哈希变化,进入 `conflict-pending`,不覆盖用户内容 |
|
|
12
|
-
| 1110-04 | 固定文件缺失或不可读 | 缺失可补齐;不可读为 `unknown`,不强制覆盖 |
|
|
13
|
-
| 1110-05 | 分阶段成功 | 7 个阶段按顺序记录状态、耗时、缓存命中和证据,最终通过门禁才 `ready` |
|
|
14
|
-
| 1110-06 | CodeGraph 初始化失败 | 记录失败和下一步动作;项目为 `partial`/`blocked`,不得伪造完成 |
|
|
15
|
-
| 1110-07 | 公共快照复用 | 5 个角色读取同一快照哈希,不重复全量扫描;快照证据来自当前项目 |
|
|
16
|
-
| 1110-08 | 宿主支持 3 并发角色会话 | 不超过 3 个并发;5 个角色均独立绑定和记录真实证据 |
|
|
17
|
-
| 1110-09 | 宿主不支持并发 | 串行降级并记录 `concurrencyFallback`,不重复创建和不伪造并发完成 |
|
|
18
|
-
| 1110-10 | 第二次重复初始化 | 项目身份和快照未变时走健康检查/复用,不重复 onboarding 或创建会话 |
|
|
19
|
-
| 1110-11 | 阶段中断后恢复 | 复用原 taskId、bindingId 和幂等键,从未完成阶段继续,不覆盖历史 |
|
|
20
|
-
| 1110-12 | 最终门禁失败 | 角色、证据、授权或索引任一失败时保持 `partial`/`blocked`,不输出 `ready` |
|
|
21
|
-
| 1110-13 | 边界回归 | 不修改业务代码、数据库、API、配置、依赖,不执行 Git 写操作或 npm publish |
|
|
22
|
-
| 1110-14 | 固定文件清单字段/路径/哈希错误 | 缺字段、路径越界、模板哈希不匹配时拒绝物化并记录 `failed`/`unknown` |
|
|
23
|
-
| 1110-15 | 阶段非法状态流转 | 非法状态组合或跨域覆盖被拒绝;恢复必须从 `recovery-required` 重新进入 `running` |
|
|
24
|
-
| 1110-16 | 公共快照预算和证据不足 | 记录预算、覆盖范围和 `unverifiedScope`;缺证据为 `unknown`,不宣称完整理解 |
|
|
25
|
-
| 1110-17 | 快速路径缓存失效 | 24 小时过期、项目/模板/CodeGraph/快照/会话变化时退出复用路径并重新校验 |
|
|
26
|
-
| 1110-18 | 并发角色失败或写回冲突 | 不超过有效并发上限;失败角色独立阻断和恢复,不用其他角色结果替代 |
|
|
27
|
-
|
|
28
|
-
## 发布阻断
|
|
29
|
-
|
|
30
|
-
固定模板覆盖用户文件、主项目内容进入 tarball、状态域混用、快照无证据却声称完整、并发重复创建、断点恢复重复执行、伪造 `ready` 或任何禁止操作,均为发布阻断。
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"version": "1.12.0",
|
|
4
|
-
"evidenceType": "not-verified",
|
|
5
|
-
"executionMode": "host-capability-unavailable",
|
|
6
|
-
"realAiSessionVerified": false,
|
|
7
|
-
"publishBlocked": true,
|
|
8
|
-
"sessionIdPolicy": "sessionId remains null when the host cannot provide a real project role session",
|
|
9
|
-
"fixturePath": null,
|
|
10
|
-
"businessBaseline": {"beforeHash": null, "afterHash": null, "unchanged": null},
|
|
11
|
-
"forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false},
|
|
12
|
-
"blockedReason": "real-role-session-host-unavailable",
|
|
13
|
-
"nextAction": "Run scenarios 134-145 in a host that can return and verify real project role session IDs.",
|
|
14
|
-
"recordedAt": "2026-07-27T00:00:00.000Z",
|
|
15
|
-
"scenarios": [
|
|
16
|
-
{"scenarioId": 134, "sessionId": null, "input": "not executed: host preflight cannot create a real project role session", "expectedOutput": "all seven host capabilities are checked before role sessions", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
17
|
-
{"scenarioId": 135, "sessionId": null, "input": "not executed: host capability failure matrix requires a real role session", "expectedOutput": "unknown and dependency-gated capabilities block ready", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
18
|
-
{"scenarioId": 136, "sessionId": null, "input": "not executed: task-first initialization requires a real host interaction", "expectedOutput": "main and five role tasks persist before session creation", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
19
|
-
{"scenarioId": 137, "sessionId": null, "input": "not executed: confirmation resume requires a real host interaction", "expectedOutput": "same task IDs are reused and attempt increments without duplicates", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
20
|
-
{"scenarioId": 138, "sessionId": null, "input": "not executed: recovery write failure requires a real host interaction", "expectedOutput": "control state is preserved and recovery-required or blocked is recorded", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
21
|
-
{"scenarioId": 139, "sessionId": null, "input": "not executed: manual binding requires a real host-returned session ID", "expectedOutput": "binding is blocked without real evidence and executionEligible remains false", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
22
|
-
{"scenarioId": 140, "sessionId": null, "input": "not executed: CodeGraph reuse requires a real host interaction", "expectedOutput": "healthy index is reused when record, hash, and revision match", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
23
|
-
{"scenarioId": 141, "sessionId": null, "input": "not executed: CodeGraph incremental initialization requires a real host interaction", "expectedOutput": "missing or unusable index records init evidence and unverified scope", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
24
|
-
{"scenarioId": 142, "sessionId": null, "input": "not executed: shared project snapshot requires a real host interaction", "expectedOutput": "one snapshot is reused by five roles until a refresh trigger", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
25
|
-
{"scenarioId": 143, "sessionId": null, "input": "not executed: stage timing requires a real host interaction", "expectedOutput": "each stage records duration, cache hit, bottleneck, failure, and recovery", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
26
|
-
{"scenarioId": 144, "sessionId": null, "input": "not executed: optional capability degradation requires a real host interaction", "expectedOutput": "Git none and missing optional tools reduce coverage without false pass", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"},
|
|
27
|
-
{"scenarioId": 145, "sessionId": null, "input": "not executed: database and safety boundary requires a real host interaction", "expectedOutput": "database remains not-requested and no forbidden operation runs", "actualOutput": "not-verified", "beforeSnapshotHash": null, "afterSnapshotHash": null, "changedFiles": [], "controlFilesChanged": [], "forbiddenOperations": {"databaseConnection": false, "sqlExecution": false, "gitWrite": false, "businessCodeWrite": false, "dependencyInstall": false, "npmPublish": false}, "evidence": [], "sensitiveScan": {"status": "pass", "matches": []}, "result": "not-verified", "recordedAt": "2026-07-27T00:00:00.000Z"}
|
|
28
|
-
]
|
|
29
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# v1.12.0 Behavior Scenarios
|
|
2
|
-
|
|
3
|
-
Every scenario records input, expected output, actual output, before/after control-plane snapshots, changed business files, control files changed, forbidden operations, evidence, and sensitive-scan status. A host thread ID is never accepted as a project session ID.
|
|
4
|
-
|
|
5
|
-
## 134. Host preflight success
|
|
6
|
-
|
|
7
|
-
Check all seven required capabilities and real session ID evidence before role-session creation. Only a complete, verified matrix may continue.
|
|
8
|
-
|
|
9
|
-
## 135. Host preflight blocked
|
|
10
|
-
|
|
11
|
-
Simulate unavailable, permission-denied, unknown, failed, and available-with-dependency capabilities. The result is blocked or partial with failure reason and next action; it is never ready.
|
|
12
|
-
|
|
13
|
-
## 136. Task-first initialization
|
|
14
|
-
|
|
15
|
-
Create the named main task and five role tasks before session creation. When the host is unavailable, each role `sessionId=null` and active tasks remain visible.
|
|
16
|
-
|
|
17
|
-
## 137. Resume after confirmation
|
|
18
|
-
|
|
19
|
-
After `确认执行` or `确认继续初始化`, reuse the original task and role task IDs, increment attempt, resume from the recorded stage, and create zero duplicate tasks.
|
|
20
|
-
|
|
21
|
-
## 138. Recovery and atomic write failure
|
|
22
|
-
|
|
23
|
-
Simulate a failed write, lock conflict, user-edited control file, and recovery. Preserve prior state, record recovery-required/blocked, and do not force unlock or overwrite.
|
|
24
|
-
|
|
25
|
-
## 139. Manual real-session binding
|
|
26
|
-
|
|
27
|
-
Bind a real host-returned session with actor, time, interaction evidence, before/after snapshot hashes, and audit. Missing evidence keeps the binding blocked and executionEligible=false.
|
|
28
|
-
|
|
29
|
-
## 140. CodeGraph healthy reuse
|
|
30
|
-
|
|
31
|
-
Reuse a healthy index when record ID, index hash, and source revision match. No second initialization is performed.
|
|
32
|
-
|
|
33
|
-
## 141. CodeGraph incremental initialization
|
|
34
|
-
|
|
35
|
-
When the index is missing or unusable, run the existing `codegraph init -i` boundary only when available and authorized. Record version, hash, parse failures, unindexed scope, and failure reason.
|
|
36
|
-
|
|
37
|
-
## 142. Shared project snapshot
|
|
38
|
-
|
|
39
|
-
Generate one snapshot and reference its hash from all five role records. Reuse it without rescanning while hashes are unchanged; rebuild after a recorded refresh trigger.
|
|
40
|
-
|
|
41
|
-
## 143. Stage timing
|
|
42
|
-
|
|
43
|
-
Record stage status, attempt, start/end, duration, cache hit, failure reason, bottleneck, and recovery action. Timing must not bypass gates.
|
|
44
|
-
|
|
45
|
-
## 144. Optional capability degradation
|
|
46
|
-
|
|
47
|
-
Git none, missing test framework, or an undetected optional toolchain is recorded as limited coverage and unverified scope, without falsely claiming tests passed or unnecessarily blocking takeover.
|
|
48
|
-
|
|
49
|
-
## 145. Database and safety boundary
|
|
50
|
-
|
|
51
|
-
Keep `authorization=not-requested`, `executionStatus=needs-confirmation`, and `redactionStatus=verified`. The AI must not connect, execute SQL, install dependencies, modify business files, write Git, or publish.
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"version": "1.12.1",
|
|
4
|
-
"evidenceType": "not-verified",
|
|
5
|
-
"executionMode": "host-capability-unavailable",
|
|
6
|
-
"realAiSessionVerified": false,
|
|
7
|
-
"publishBlocked": true,
|
|
8
|
-
"provider": "codex",
|
|
9
|
-
"providerSessionIdPolicy": "providerSessionId remains null until a provider canonical session ID and both evidence groups are verified",
|
|
10
|
-
"fixture": "isolated package fixture only; no real business project mutation",
|
|
11
|
-
"forbiddenOperations": ["database-connection", "sql", "business-file-write", "git-write", "dependency-install", "npm-publish"],
|
|
12
|
-
"scenarios": [
|
|
13
|
-
{"scenarioId":146,"sessionId":null,"providerSessionId":null,"input":"Verify canonical provider session identity.","expectedOutput":"not-verified","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
14
|
-
{"scenarioId":147,"sessionId":null,"providerSessionId":null,"input":"Reject ordinary thread ID as provider session.","expectedOutput":"blocked","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
15
|
-
{"scenarioId":148,"sessionId":null,"providerSessionId":null,"input":"Reject another project identity.","expectedOutput":"blocked","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
16
|
-
{"scenarioId":149,"sessionId":null,"providerSessionId":null,"input":"Reject role or task mismatch.","expectedOutput":"blocked","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
17
|
-
{"scenarioId":150,"sessionId":null,"providerSessionId":null,"input":"Validate title and cwd.","expectedOutput":"blocked","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
18
|
-
{"scenarioId":151,"sessionId":null,"providerSessionId":null,"input":"Reject missing interaction evidence.","expectedOutput":"pending-or-blocked","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
19
|
-
{"scenarioId":152,"sessionId":null,"providerSessionId":null,"input":"Verify candidate identity before reuse.","expectedOutput":"blocked","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
20
|
-
{"scenarioId":153,"sessionId":null,"providerSessionId":null,"input":"Reject occupied session.","expectedOutput":"conflict-or-blocked","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
21
|
-
{"scenarioId":154,"sessionId":null,"providerSessionId":null,"input":"Record manual binding without evidence.","expectedOutput":"pending-or-unknown","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
22
|
-
{"scenarioId":155,"sessionId":null,"providerSessionId":null,"input":"Recover without duplicate tasks or sessions.","expectedOutput":"reuses-task-and-increments-attempt","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
23
|
-
{"scenarioId":156,"sessionId":null,"providerSessionId":null,"input":"Recover provider session after writeback failure.","expectedOutput":"recovery-required","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
24
|
-
{"scenarioId":157,"sessionId":null,"providerSessionId":null,"input":"Handle unsupported host.","expectedOutput":"local-degraded-with-null-ID","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null},
|
|
25
|
-
{"scenarioId":158,"sessionId":null,"providerSessionId":null,"input":"Check cross-file binding consistency.","expectedOutput":"not-verified","actualOutput":"not-verified","beforeSnapshotHash":"not-recorded","afterSnapshotHash":"not-recorded","changedFiles":[],"forbiddenOperations":[],"evidence":[],"sensitiveScan":{"status":"pass","matches":[]},"result":"not-verified","recordedAt":null}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# v1.12.1 Provider Session Binding Scenarios
|
|
2
|
-
|
|
3
|
-
Scenarios 146-158 are required. A real host session must not be simulated. When the host cannot return a canonical provider session ID, the expected result is blocked/not-verified with providerSessionId=null.
|
|
4
|
-
|
|
5
|
-
## 146. Canonical provider session ID
|
|
6
|
-
Verify that only a provider API returned canonical ID can enter providerSessionId.
|
|
7
|
-
|
|
8
|
-
## 147. Ordinary thread ID rejection
|
|
9
|
-
Use an ordinary Codex thread ID and verify it is rejected as provider identity.
|
|
10
|
-
|
|
11
|
-
## 148. Project identity mismatch
|
|
12
|
-
Use a session from another project root and verify bindingStatus=conflict or blocked.
|
|
13
|
-
|
|
14
|
-
## 149. Role/task mismatch
|
|
15
|
-
Use a session whose roleId or taskId differs and verify no binding is written.
|
|
16
|
-
|
|
17
|
-
## 150. Title and cwd validation
|
|
18
|
-
Verify required role title and project cwd before binding.
|
|
19
|
-
|
|
20
|
-
## 151. Missing interaction evidence
|
|
21
|
-
Verify that missing send or receive receipt keeps the record pending or blocked.
|
|
22
|
-
|
|
23
|
-
## 152. Candidate reuse verification
|
|
24
|
-
Verify old candidates are read and identity-checked before reuse; title alone is insufficient.
|
|
25
|
-
|
|
26
|
-
## 153. Exclusive occupancy conflict
|
|
27
|
-
Verify a session occupied by another project or role is blocked and audited.
|
|
28
|
-
|
|
29
|
-
## 154. Manual binding without evidence
|
|
30
|
-
Verify a user-confirmed manual entry without evidence remains pending/unknown and not executable.
|
|
31
|
-
|
|
32
|
-
## 155. Recovery idempotency
|
|
33
|
-
Verify recovery reuses taskId and roleTaskId, increments attempt, and creates no duplicate task or session.
|
|
34
|
-
|
|
35
|
-
## 156. Writeback failure recovery
|
|
36
|
-
Verify a created provider session with failed local writeback enters recovery-required and is queryable.
|
|
37
|
-
|
|
38
|
-
## 157. Unsupported host degradation
|
|
39
|
-
Verify unsupported host records local-degraded, providerSessionId=null, nextAction, and no fake ID.
|
|
40
|
-
|
|
41
|
-
## 158. Cross-file binding consistency
|
|
42
|
-
Verify provider binding, role task, assignments, task-index, and init-result agree on identity, status, attempt, and audit.
|