feat: close ordered pairs and property codec batches
This commit is contained in:
@@ -15,11 +15,11 @@ const runtime = source.runtimeObjects
|
||||
if (!runtime?.available || runtime.candidateCount !== 352 || runtime.availableCount !== 348 || runtime.unavailableCount !== 4 || !Array.isArray(runtime.types)) fail('runtime Document.supportedTypes inventory is incomplete')
|
||||
|
||||
const editableTypes = new Set([
|
||||
'App::PropertyAngle', 'App::PropertyBool', 'App::PropertyDistance', 'App::PropertyEnumeration',
|
||||
'App::PropertyAcceleration', 'App::PropertyAngle', 'App::PropertyArea', 'App::PropertyBool', 'App::PropertyBoolList', 'App::PropertyColor', 'App::PropertyColorList', 'App::PropertyDistance', 'App::PropertyEnumeration',
|
||||
'App::PropertyFloat', 'App::PropertyFloatConstraint', 'App::PropertyFloatList', 'App::PropertyInteger', 'App::PropertyIntegerConstraint',
|
||||
'App::PropertyIntegerList', 'App::PropertyLength', 'App::PropertyLink', 'App::PropertyLinkHidden', 'App::PropertyLinkList',
|
||||
'App::PropertyLinkSub', 'App::PropertyLinkSubList', 'App::PropertyPlacement', 'App::PropertyString',
|
||||
'App::PropertyPrecision', 'App::PropertyQuantityConstraint', 'App::PropertyStringList', 'App::PropertyVector',
|
||||
'App::PropertyPrecision', 'App::PropertyQuantityConstraint', 'App::PropertyStringList', 'App::PropertyVector', 'App::PropertyDirection', 'App::PropertyFile', 'App::PropertyFileIncluded',
|
||||
])
|
||||
const specializedTypes = new Set([
|
||||
'App::PropertyExpressionEngine', 'Part::PropertyGeometryList', 'Part::PropertyPartShape',
|
||||
@@ -62,6 +62,9 @@ const preservedOnlyStatusNames = observedStatuses.filter((status) => !facadeBeha
|
||||
const preservedOnlyStatusRecordCount = properties.filter((property) => property.status.some((status) => preservedOnlyStatusNames.includes(status))).length
|
||||
const unavailableObjects = runtime.types.filter(({ available }) => !available).map(({ typeId, error }) => ({ typeId, error }))
|
||||
const harnessContent = await readFile(harnessPath)
|
||||
const opaqueSupport = supportSummary['opaque-fcstd-proxy']
|
||||
const exactPromotionReady = opaqueSupport.typeCount === 0 && opaqueSupport.recordCount === 0
|
||||
const exactBlocker = exactPromotionReady ? null : `${opaqueSupport.typeCount} runtime property types and ${opaqueSupport.recordCount} records remain opaque-only; complete native document and property semantics`
|
||||
const report = {
|
||||
schemaVersion: 1,
|
||||
status: 'pass',
|
||||
@@ -81,9 +84,9 @@ const report = {
|
||||
unknownNumericBits: observedStatuses.filter((status) => status.startsWith('UnknownBit')),
|
||||
},
|
||||
harness: { path: 'scripts/run-freecad-native-property-semantics.mjs', bytes: (await stat(harnessPath)).size, sha256: createHash('sha256').update(harnessContent).digest('hex') },
|
||||
exactPromotionReady: false,
|
||||
exactBlocker: '58 runtime property types and 523 records remain opaque-only; complete native document and property semantics',
|
||||
exactPromotionReady,
|
||||
exactBlocker,
|
||||
generatedAt: new Date().toISOString(),
|
||||
}
|
||||
await writeFile(outputPath, `${JSON.stringify(report, null, 2)}\n`)
|
||||
console.log(JSON.stringify({ status: report.status, runtime: report.runtime, supportSummary, propertyStatus: report.propertyStatus, exactPromotionReady: false }, null, 2))
|
||||
console.log(JSON.stringify({ status: report.status, runtime: report.runtime, supportSummary, propertyStatus: report.propertyStatus, exactPromotionReady, exactBlocker }, null, 2))
|
||||
|
||||
Reference in New Issue
Block a user