audit-model-objective-completion.mjs 2.9 KB

1234567891011121314
  1. import {readFileSync,writeFileSync} from 'node:fs'
  2. import {createHash} from 'node:crypto'
  3. const pkg=JSON.parse(readFileSync('.scratch/cockpit-shell-panel-layout/verify/artifacts/t35/integration-decision-package.json')),cfg=JSON.parse(readFileSync('public/cockpit/config.json')),hash=b=>createHash('sha256').update(b).digest('hex'),runtime=cfg.map.tilesets[0]
  4. const rows=[
  5. {id:'gis-footprints-and-seating',status:'evidence-complete',evidence:['existing CAD/JMD footprints','seated-plan DEM fields','pilot footprintsPreserved=true','pilot seatingPreserved=true'],remaining:'No new GIS footprint edit is required for current candidates.'},
  6. {id:'closed-roofs-and-lod',status:'evidence-complete-offline',evidence:['export-v3 shellClosed=true','LOD0 triangles > LOD1','verify-lod-district passed'],remaining:'Formal Cesium render still unverified.'},
  7. {id:'satellite-roof-provenance',status:'evidence-complete-offline',evidence:['local z19 TMS','source hashes','2 candidate raster overrides','source URI existence audit'],remaining:'Orthophoto date/license and visual seam acceptance remain.'},
  8. {id:'estate-buildings',status:'offline-candidate-ready',evidence:['4 whitelist IDs','2 cells/4 GLBs','697184 decoded estimate','doors/windows and closed shells'],remaining:'Not in runtime; whole-estate visual relationship needs human acceptance.'},
  9. {id:'progressive-loading-budget',status:'preserved-by-candidate-checks',evidence:['2-region/180-content/96MiB pair checks','pipelineRegions=0','runtime v7 progressiveRefinement=true'],remaining:'Real hardware FPS/cache behavior unmeasured.'},
  10. {id:'near-model-style-baseline',status:'offline-evidence-only',evidence:['offline rendered pilot windows/storey lines/doors','positive sample imagery baseline recorded'],remaining:'Formal cockpit side-by-side acceptance pending.'},
  11. {id:'runtime-visual-and-performance',status:'not-verified',evidence:[],remaining:'Browser, FPS, CPU/GPU and final visual acceptance are required.'}
  12. ]
  13. const result={version:1,generatedAt:'2026-10-15',objectiveState:'active-not-complete',formalRuntime:{url:runtime.url,regionManifest:runtime.regionManifest,progressiveRefinement:runtime.progressiveRefinement,sse:runtime.maximumScreenSpaceError,maximumDistance:runtime.maximumDistance,loadDistance:runtime.loadDistance,configSha256:hash(readFileSync('public/cockpit/config.json'))},candidatePackageSha256:hash(readFileSync('.scratch/cockpit-shell-panel-layout/verify/artifacts/t35/integration-decision-package.json')),rows,completionRule:'Do not mark complete until runtime-visual-and-performance and all four manualAcceptanceChecklist gates are accepted by maintainer.',noConfigChange:true}
  14. writeFileSync('.scratch/cockpit-shell-panel-layout/verify/artifacts/t35/round34-completion-audit.json',JSON.stringify(result,null,2));console.log(JSON.stringify({passed:true,state:result.objectiveState,rows:rows.length,formalManifest:runtime.regionManifest,noConfigChange:true,manualGates:pkg.manualAcceptanceChecklist.length}))