@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,61 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const fs = require("fs");
|
|
4
|
-
const path = require("path");
|
|
5
|
-
|
|
6
|
-
const root = path.resolve(__dirname, "..");
|
|
7
|
-
const checks = [];
|
|
8
|
-
|
|
9
|
-
function read(relativePath) {
|
|
10
|
-
return fs.readFileSync(path.join(root, relativePath), "utf8");
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function json(relativePath) {
|
|
14
|
-
return JSON.parse(read(relativePath));
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function check(name, ok, detail = "") {
|
|
18
|
-
checks.push({ name, ok: Boolean(ok), detail });
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function main() {
|
|
22
|
-
const model = "shared-project-multi-conversation-runtime";
|
|
23
|
-
const manifest = json("init/xinyun-ai-init/templates/manifest.template.json");
|
|
24
|
-
const context = json("init/xinyun-ai-init/templates/project-context.template.json");
|
|
25
|
-
const registry = json("init/xinyun-ai-init/templates/conversation-registry.template.json");
|
|
26
|
-
const binding = json("init/xinyun-ai-init/templates/conversation-binding.template.json");
|
|
27
|
-
const head = json("init/xinyun-ai-init/templates/conversation-stream-head.template.json");
|
|
28
|
-
const event = json("init/xinyun-ai-init/templates/conversation-event.template.json");
|
|
29
|
-
const cursor = json("init/xinyun-ai-init/templates/conversation-sync-cursor.template.json");
|
|
30
|
-
const sync = json("init/xinyun-ai-init/templates/sync-check.template.json");
|
|
31
|
-
const lease = json("init/xinyun-ai-init/templates/task-lease.template.json");
|
|
32
|
-
const ledger = json("init/xinyun-ai-init/templates/coordination-change-ledger.template.json");
|
|
33
|
-
const skillRun = json("init/xinyun-ai-init/templates/skill-run-record.template.json");
|
|
34
|
-
const evidence = json("test-scenarios/multi-conversation-evidence.json");
|
|
35
|
-
const rule = read("init/xinyun-ai-init/rules/v2.0.0-shared-project-conversations.md");
|
|
36
|
-
|
|
37
|
-
check("execution-model", [manifest, context, registry, binding, head, event, cursor, sync, lease, ledger, skillRun].every((item) => item.executionModel === model));
|
|
38
|
-
check("one-project-context", manifest.projectContextPath === "xinyun-ai/project-context.json" && context.projectContextId === null);
|
|
39
|
-
check("multi-conversation", manifest.conversations.activeConversationLimit === null && registry.conversationLimit === null && Array.isArray(registry.activeConversationIds));
|
|
40
|
-
check("conversation-identity", Object.prototype.hasOwnProperty.call(binding, "conversationBindingId") && !Object.prototype.hasOwnProperty.call(binding, "sessionId") && binding.sessionRefType === "host-thread");
|
|
41
|
-
check("thread-not-provider", binding.legacyCompatibility.includes("never converted into a provider session id"));
|
|
42
|
-
check("single-writer-stream", head.writeMode === "single-writer-atomic-replace" && manifest.coordination.eventWriteMode === "per-conversation-single-writer");
|
|
43
|
-
check("immutable-event-chain", ["streamSequence", "previousEventHash", "eventHash", "affectedDomains", "affectedPaths"].every((field) => Object.prototype.hasOwnProperty.call(event, field)));
|
|
44
|
-
check("vector-cursor", cursor.streamPositions && typeof cursor.streamPositions === "object" && cursor.statusEnum.includes("recovery-required"));
|
|
45
|
-
check("interaction-triggers", ["user-message-received", "before-plan", "before-write", "before-verification", "before-delivery"].every((trigger) => sync.triggerEnum.includes(trigger) && manifest.coordination.syncTriggers.includes(trigger)));
|
|
46
|
-
check("silent-no-change", sync.silentWhenNoChanges === true && sync.userNotificationRequired === false && sync.result === "no-changes");
|
|
47
|
-
check("incremental-refresh", ["headObservations", "cursorBefore", "cursorAfter", "newEventIds", "affectedTaskIds", "affectedDomains", "affectedPaths"].every((field) => Object.prototype.hasOwnProperty.call(sync, field)));
|
|
48
|
-
check("task-lease", lease.statusEnum.includes("conflict") && Array.isArray(lease.targetKeys) && lease.baselineHashes && Object.prototype.hasOwnProperty.call(lease, "ownerConversationId"));
|
|
49
|
-
check("ledger-role-free", !ledger.recordContract.requiredFields.includes("role") && ledger.recordContract.requiredFields.includes("conversationBindingId") && ledger.recordContract.requiredFields.includes("leaseId"));
|
|
50
|
-
check("skill-run-trace", Object.prototype.hasOwnProperty.call(skillRun, "conversationBindingId") && Object.prototype.hasOwnProperty.call(skillRun, "syncCheckIdBeforeRun"));
|
|
51
|
-
check("rule-contract", rule.includes("每次用户交互") && rule.includes("每个对话只能写自己的") && rule.includes("没有变化时静默继续"));
|
|
52
|
-
check("evidence", evidence.executionModel === model && evidence.scenarios.length === 12 && evidence.scenarios.every((item, index) => item.scenarioId === 601 + index && item.result === "contract-passed"));
|
|
53
|
-
check("evidence-honest", evidence.realCrossConversationVerified === false && evidence.readyEligible === false && evidence.publishBlocked === true && evidence.sensitiveScan.status === "pass");
|
|
54
|
-
|
|
55
|
-
for (const item of checks) console.log(`[${item.ok ? "PASS" : "FAIL"}] ${item.name}${item.ok || !item.detail ? "" : `: ${item.detail}`}`);
|
|
56
|
-
const failed = checks.filter((item) => !item.ok);
|
|
57
|
-
console.log(`[multi-conversation contract] ${checks.length - failed.length}/${checks.length} checks passed`);
|
|
58
|
-
if (failed.length > 0) process.exitCode = 1;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
main();
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const fs = require("fs");
|
|
4
|
-
const path = require("path");
|
|
5
|
-
|
|
6
|
-
const root = path.resolve(__dirname, "..");
|
|
7
|
-
const checks = [];
|
|
8
|
-
|
|
9
|
-
function read(relativePath) {
|
|
10
|
-
return fs.readFileSync(path.join(root, relativePath), "utf8");
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function json(relativePath) {
|
|
14
|
-
return JSON.parse(read(relativePath));
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function check(name, ok, detail = "") {
|
|
18
|
-
checks.push({ name, ok: Boolean(ok), detail });
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function main() {
|
|
22
|
-
const manifest = json("init/xinyun-ai-init/templates/manifest.template.json");
|
|
23
|
-
const projectIndex = json("init/xinyun-ai-init/templates/project-index.template.json");
|
|
24
|
-
const controlPlane = json("init/xinyun-ai-init/templates/control-plane-index.template.json");
|
|
25
|
-
const snapshot = json("init/xinyun-ai-init/templates/bootstrap-snapshot.template.json");
|
|
26
|
-
const record = json("init/xinyun-ai-init/templates/re-takeover-record.template.json");
|
|
27
|
-
const onboarding = json("init/xinyun-ai-init/templates/onboarding-report.template.json");
|
|
28
|
-
const gate = json("init/xinyun-ai-init/templates/takeover-gate.template.json");
|
|
29
|
-
const evidence = json("test-scenarios/re-takeover-evidence.json");
|
|
30
|
-
const readme = read("init/xinyun-ai-init/README.md");
|
|
31
|
-
const rules = read("init/xinyun-ai-init/rules/v2.0.0-shared-project-conversations.md");
|
|
32
|
-
const agents = read("init/xinyun-ai-init/templates/AGENTS.template.md");
|
|
33
|
-
const targetReadme = read("init/xinyun-ai-init/templates/README.template.md");
|
|
34
|
-
|
|
35
|
-
check("manifest-re-takeover", manifest.reTakeover && manifest.reTakeover.incrementalBySourceHash === true && manifest.reTakeover.executionRequiresConversationBindingEvidence === true);
|
|
36
|
-
check("manifest-thread-policy", manifest.reTakeover.threadIdPolicy === "host-thread-candidate-only");
|
|
37
|
-
check("project-index-architecture", Array.isArray(projectIndex.architecture.entrypoints) && Array.isArray(projectIndex.architecture.modules) && Array.isArray(projectIndex.architecture.riskAreas));
|
|
38
|
-
check("control-plane-bootstrap-order", Array.isArray(controlPlane.authoritativeBootstrapOrder) && controlPlane.authoritativeBootstrapOrder.length >= 5 && controlPlane.authoritativeBootstrapOrder.includes("xinyun-ai/index/re-takeover-record.json"));
|
|
39
|
-
check("snapshot-v2-hashes", snapshot.schemaVersion === 2 && snapshot.executionModel === "shared-project-multi-conversation-runtime" && Array.isArray(snapshot.sourceFiles) && snapshot.sourceHashes && Object.prototype.hasOwnProperty.call(snapshot, "lastSuccessfulTakeoverId"));
|
|
40
|
-
check("record-state-contract", record.contextStatusEnum.includes("context-ready") && record.contextStatusEnum.includes("blocked") && record.conversationBindingDecisionEnum.includes("register-new") && record.executionEligible === false);
|
|
41
|
-
check("onboarding-separation", onboarding.contextStatus === "unknown" && onboarding.understandingStatus === "unknown" && onboarding.reTakeover.recordPath.endsWith("re-takeover-record.json"));
|
|
42
|
-
check("gate-separation", gate.contextStatus === "blocked" && gate.contextGate && gate.contextGate.requiredFiles.includes("AGENTS.md") && gate.executionEligible === false);
|
|
43
|
-
check("docs-describe-re-takeover", readme.includes("重新接管同一项目") && rules.includes("交互触发的增量同步") && agents.includes("重新接管同一个项目") && targetReadme.includes("新对话重新接管"));
|
|
44
|
-
check("evidence-contract", evidence.version === "2.0.0" && evidence.evidenceType === "re-takeover-contract" && evidence.contextAndExecutionSeparated === true && evidence.threadIdNeverProviderSessionId === true);
|
|
45
|
-
check("evidence-scenarios", evidence.scenarios.length === 8 && evidence.scenarios.every((item, index) => item.scenarioId === 501 + index && item.result === "contract-passed"));
|
|
46
|
-
check("evidence-honest", evidence.realHostVerified === false && evidence.unverifiedScope.length >= 1 && evidence.sensitiveScan.status === "pass" && evidence.sensitiveScan.matches.length === 0);
|
|
47
|
-
|
|
48
|
-
for (const item of checks) console.log(`[${item.ok ? "PASS" : "FAIL"}] ${item.name}${item.ok || !item.detail ? "" : `: ${item.detail}`}`);
|
|
49
|
-
const failed = checks.filter((item) => !item.ok);
|
|
50
|
-
console.log(`[re-takeover contract] ${checks.length - failed.length}/${checks.length} checks passed`);
|
|
51
|
-
if (failed.length > 0) process.exitCode = 1;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
main();
|