82 lines
3.2 KiB
JavaScript
82 lines
3.2 KiB
JavaScript
#!/usr/bin/env node
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
|
|
const root = path.resolve(import.meta.dirname, "..");
|
|
const registry = JSON.parse(fs.readFileSync(path.join(root, "parts/registry.json"), "utf8"));
|
|
|
|
const phase0 = new Set([
|
|
"HLP-PART-TCS-LANG-0001",
|
|
"HLP-PART-TCS-SELFHOST-0001",
|
|
"HLP-PART-TCS-STAGE0-0001",
|
|
"HLP-PART-GIR-0001",
|
|
"HLP-PART-REG-0001",
|
|
"HLP-PART-NQG-0001",
|
|
"HLP-PART-QA-0001",
|
|
]);
|
|
const phase2Prefixes = ["HLP-PART-AFF", "HLP-PART-MEM", "HLP-PART-REL", "HLP-PART-CX"];
|
|
const verifiedSlices = new Map([
|
|
["HLP-PART-TCS-LANG-0001", ["build/self-host/compiler-B.gir.json", "receipts/TCS-ZERO-CORE-EXECUTION-20260821.json"]],
|
|
["HLP-PART-TCS-SELFHOST-0001", ["build/self-host/compiler-A.gir.json", "build/self-host/compiler-B.gir.json"]],
|
|
["HLP-PART-TCS-TRANS-0001", ["receipts/TCS-DUAL-HOST-BINARY-ACCEPTANCE-20260821.json", "receipts/JD-TCS-AGENT-ACCEPTANCE-20260821.json"]],
|
|
["HLP-PART-TCS-HOST-0001", ["receipts/TCS-HOST-PERSONA-PROBE.json", "receipts/jd/TCS-HOST-PERSONA-PROBE.json"]],
|
|
]);
|
|
|
|
function phase(part) {
|
|
if (phase0.has(part.id)) return "P0_LANGUAGE_RUNTIME_AND_QUALITY";
|
|
if (part.id === "HLP-PART-0090") return "P3_SHARED_WORLD_PROJECTOR_LAST";
|
|
if (phase2Prefixes.some((prefix) => part.id.startsWith(prefix))) {
|
|
return "P2_PERSONA_MEMORY_RELATION_AND_AFFECT";
|
|
}
|
|
return "P1_NUMBER_CHANNEL_AGENT_KNOWLEDGE_AND_MARKET";
|
|
}
|
|
|
|
const entries = registry.parts.map((part, index) => {
|
|
const alreadyTcs = [
|
|
"HLP-PART-TCS-LANG-0001",
|
|
"HLP-PART-TCS-SELFHOST-0001",
|
|
"HLP-PART-TCS-STAGE0-0001",
|
|
].includes(part.id);
|
|
const verifiedEvidence = verifiedSlices.get(part.id);
|
|
return {
|
|
order: index + 1,
|
|
part_id: part.id,
|
|
display_name_zh: part.displayName,
|
|
donor_source: part.source,
|
|
donor_state: part.status,
|
|
native_acceptance_before_migration: part.nativeAcceptance,
|
|
migration_phase: phase(part),
|
|
target_module_id: `TCS-MOD-${part.id.replace(/^HLP-PART-/, "")}`,
|
|
rewrite_rule: alreadyTcs
|
|
? "CONTINUE_NATIVE_TCS_IMPLEMENTATION"
|
|
: "REWRITE_SEMANTICS_STATE_MACHINE_AUTHORITY_FAILURE_AND_RECEIPTS_IN_TCS",
|
|
host_adapter_rule: "KEEP_ONLY_MINIMUM_OS_ABI_DRIVER_OUTSIDE_TCS_MODULE",
|
|
migration_state: verifiedEvidence ? "ACTIVE_VERIFIED_100" : alreadyTcs ? "ACTIVE" : "QUEUED",
|
|
verified_evidence: verifiedEvidence || [],
|
|
acceptance_required: [
|
|
"TCS_SOURCE_COMPILES_WITH_COMPILER_B",
|
|
"GIR_HAS_NO_UNRESOLVED_NATURAL_LANGUAGE",
|
|
"NEGATIVE_AUTHORITY_AND_PATH_TESTS_FAIL_CLOSED",
|
|
"TARGET_RUNTIME_READBACK",
|
|
"DONOR_PARITY_OR_EXPLICIT_REJECTION_RECEIPT",
|
|
],
|
|
};
|
|
});
|
|
|
|
const output = {
|
|
schema: "hololake.tcs-module-migration-registry/v1",
|
|
registry_id: "HLP-TCS-MIGRATION-REGISTRY-0001",
|
|
source_parts_registry: "parts/registry.json",
|
|
source_part_count: registry.parts.length,
|
|
rule: "NO_WHOLESALE_TRANSLITERATION_FROM_RUST_OR_TYPESCRIPT",
|
|
compiler: "TCS-COMPILER-STAGE1-0001",
|
|
target_abi: "GIR/1",
|
|
registration_is_rewrite: false,
|
|
rewrite_is_acceptance: false,
|
|
entries,
|
|
};
|
|
|
|
const target = path.join(root, "migration/tcs-module-migration-registry.json");
|
|
fs.mkdirSync(path.dirname(target), { recursive: true });
|
|
fs.writeFileSync(target, `${JSON.stringify(output, null, 2)}\n`);
|
|
console.log(`WROTE ${target} entries=${entries.length}`);
|