gitworld / tools /verify-phase2.mjs
SNAPKITTYWEST's picture
push from SNAPKITTYWEST/gitworld
6281708 verified
Raw
History Blame Contribute Delete
4.54 kB
import assert from 'node:assert/strict';
import { access, readFile } from 'node:fs/promises';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
const root = join(dirname(fileURLToPath(import.meta.url)), '..', 'phase2-unreal');
const requiredFiles = [
'GitWorldUnreal.uproject',
'Config/DefaultEngine.ini',
'Source/GitWorldUnreal/GitWorldUnreal.Build.cs',
'Source/GitWorldUnreal/Public/GitWorldData.h',
'Source/GitWorldUnreal/Public/GitWorldRepoWorld.h',
'Source/GitWorldUnreal/Public/GitWorldRepoPortal.h',
'Source/GitWorldUnreal/Public/GitWorldWorldSubsystem.h',
'Source/GitWorldUnreal/Public/GitWorldCudaBridge.h',
'Source/GitWorldUnreal/Public/GitWorldOpeningScene.h',
'Source/GitWorldUnreal/Public/GitWorldVRPawn.h',
'RealityCapture/Tools/reconstruct.ps1',
'Content/RealityScene/README.md',
'ReferenceSource/manifest.json',
'EditorScripts/import_gitworld_reference_scene.py',
'EditorScripts/import_gitworld_opening.py',
'Content/VR/README.md',
'Compute/CMakeLists.txt',
'Compute/GitWorldBuildPass.cu'
];
for (const file of requiredFiles) {
await access(join(root, file));
}
const project = JSON.parse(await readFile(join(root, 'GitWorldUnreal.uproject'), 'utf8'));
assert.equal(project.Modules[0].Name, 'GitWorldUnreal');
assert.equal(project.Plugins.some((plugin) => plugin.Name === 'OpenXR' && plugin.Enabled === true), true);
const buildRules = await readFile(join(root, 'Source', 'GitWorldUnreal', 'GitWorldUnreal.Build.cs'), 'utf8');
assert.match(buildRules, /RuntimeDependencies\.Add/);
assert.match(buildRules, /3099\.mp4/);
const engine = await readFile(join(root, 'Config', 'DefaultEngine.ini'), 'utf8');
assert.match(engine, /r\.Nanite\.ProjectEnabled=(?:1|True)/);
assert.match(engine, /r\.Lumen\.HardwareRayTracing=(?:1|True)/);
assert.match(engine, /ResolutionSizeX=7680/);
assert.match(engine, /ResolutionSizeY=4320/);
const sourceFiles = [
'Source/GitWorldUnreal/Public/GitWorldRepoWorld.h',
'Source/GitWorldUnreal/Private/GitWorldSimulation.cpp',
'Source/GitWorldUnreal/Private/GitWorldRepoWorld.cpp',
'Source/GitWorldUnreal/Private/GitWorldRepoPortal.cpp',
'Source/GitWorldUnreal/Private/GitWorldWorldSubsystem.cpp',
'Source/GitWorldUnreal/Private/GitWorldCudaBridge.cpp',
'Source/GitWorldUnreal/Private/GitWorldGameMode.cpp',
'Source/GitWorldUnreal/Private/GitWorldOpeningScene.cpp',
'Source/GitWorldUnreal/Private/GitWorldVRPawn.cpp'
];
const source = (await Promise.all(sourceFiles.map((file) => readFile(join(root, file), 'utf8')))).join('\n');
for (const required of ['AdvanceSnapshot', 'ActivateRepository', 'SpawnDemoRepositoryWorld', 'GW_CudaBuildPass', 'TerminalTranscript', 'RealityCaptureMesh', 'ReferenceSetId', 'ReferenceImages', 'OpenUrl', 'OnEndReached', 'SetTrackingOrigin', 'InteractWithWorld', 'CompleteTeleport']) {
assert.match(source, new RegExp(required));
}
assert.doesNotMatch(source, /ironic-mirror|shadow-orchestrator/i);
const captureScript = await readFile(join(root, 'RealityCapture', 'Tools', 'reconstruct.ps1'), 'utf8');
for (const required of ['-addFolder', '-align', '-selectMaximalComponent', '-calculateTexture', '-exportSelectedModel']) {
assert.match(captureScript, new RegExp(required.replace('-', '\\-')));
}
const referenceManifest = JSON.parse(await readFile(join(root, 'ReferenceSource', 'manifest.json'), 'utf8'));
assert.equal(referenceManifest.photogrammetryReady, false);
assert.equal(referenceManifest.assets.length, 4);
assert.equal(referenceManifest.openingScene.file, 'Opening/3099.mp4');
const editorScript = await readFile(join(root, 'EditorScripts', 'import_gitworld_reference_scene.py'), 'utf8');
for (const required of ['AssetImportTask', 'create_material_expression', 'reference_images', 'save_current_level']) {
assert.match(editorScript, new RegExp(required));
}
const openingScript = await readFile(join(root, 'EditorScripts', 'import_gitworld_opening.py'), 'utf8');
for (const required of ['3099.mp4', 'FileMediaSourceFactoryNew', 'MediaPlayerFactoryNew', 'MediaTextureFactoryNew', 'GitWorldOpeningScene']) {
assert.match(openingScript, new RegExp(required));
}
const openingVideo = await readFile(join(root, 'ReferenceSource', 'Opening', '3099.mp4'));
assert.ok(openingVideo.length > 0);
console.log(`Phase 3 contract PASS: ${requiredFiles.length} files present; reference plates and opening video wired; Unreal execution still requires the local editor.`);