feat: close ordered pairs and property codec batches
This commit is contained in:
@@ -146,10 +146,17 @@ const makeCapabilityTasks = (prefix, capabilities, firstDependency) => {
|
||||
}
|
||||
return tasks
|
||||
}
|
||||
if (followUpProgress.schemaVersion !== 1 || followUpProgress.baseline?.freecadVersion !== '1.1.1' || followUpProgress.baseline?.commit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || !Array.isArray(followUpProgress.completedTasks)) throw new Error('Follow-up task progress ledger is invalid.')
|
||||
const recordedFollowUpIds = new Set()
|
||||
for (const entry of followUpProgress.completedTasks) {
|
||||
if (typeof entry.id !== 'string' || recordedFollowUpIds.has(entry.id) || !Array.isArray(entry.evidence) || entry.evidence.length === 0) throw new Error(`Follow-up progress entry ${entry.id} is invalid.`)
|
||||
recordedFollowUpIds.add(entry.id)
|
||||
}
|
||||
const propertyCapabilities = propertySemantics.types
|
||||
.filter(({ support }) => support === 'opaque-fcstd-proxy')
|
||||
.filter(({ typeId, support }) => support === 'opaque-fcstd-proxy' || [...recordedFollowUpIds].some((id) => id.startsWith(`PROP-${slug(typeId)}-`)))
|
||||
.map(({ typeId, recordCount }) => ({ id: typeId, title: typeId, recordCount }))
|
||||
if (propertyCapabilities.length !== propertySemantics.supportSummary?.['opaque-fcstd-proxy']?.typeCount) throw new Error('Opaque Property capability inventory is inconsistent.')
|
||||
const carriedPromotedPropertyTypes = propertyCapabilities.filter(({ id }) => propertySemantics.types.find(({ typeId }) => typeId === id)?.support !== 'opaque-fcstd-proxy')
|
||||
if (propertyCapabilities.length !== propertySemantics.supportSummary?.['opaque-fcstd-proxy']?.typeCount + carriedPromotedPropertyTypes.length) throw new Error('Opaque Property capability inventory is inconsistent.')
|
||||
|
||||
const followUpMilestoneDefinitions = [
|
||||
{
|
||||
@@ -220,7 +227,6 @@ const followUpMilestones = followUpMilestoneDefinitions.map((definition) => {
|
||||
return { id: definition.id, title: definition.title, exactTasks: definition.exactTasks, status: 'pending', tasks }
|
||||
})
|
||||
const followUpTasks = followUpMilestones.flatMap(({ tasks }) => tasks)
|
||||
if (followUpProgress.schemaVersion !== 1 || followUpProgress.baseline?.freecadVersion !== '1.1.1' || followUpProgress.baseline?.commit !== '0108fd4b4850cc46e625b60e53cea7a7bbe69f8d' || !Array.isArray(followUpProgress.completedTasks)) throw new Error('Follow-up task progress ledger is invalid.')
|
||||
const followUpTaskIds = new Set(followUpTasks.map(({ id }) => id))
|
||||
const completedFollowUpIds = new Set()
|
||||
for (const entry of followUpProgress.completedTasks) {
|
||||
|
||||
Reference in New Issue
Block a user