@tiangong-lca/cli 0.0.28 → 0.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -2
- package/dist/src/cli.js +544 -3
- package/dist/src/cli.js.map +1 -1
- package/dist/src/lib/dataset-maintenance-contract.js.map +1 -1
- package/dist/src/lib/dataset-maintenance-flow-identity-approval-claim.js +175 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-approval-claim.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-capture.js +511 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-capture.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-command.js +26 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-command.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-contract.js +784 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-contract.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-execution-contract.js +1317 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-execution-contract.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-freeze.js +342 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-freeze.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-plan.js +900 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-plan.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-recovery.js +688 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-recovery.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-run.js +1369 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-run.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-seal.js +144 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-seal.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-verify.js +377 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-verify.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-wire.js +178 -0
- package/dist/src/lib/dataset-maintenance-flow-identity-wire.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-remote.js +156 -10
- package/dist/src/lib/dataset-maintenance-remote.js.map +1 -1
- package/dist/src/lib/http.js.map +1 -1
- package/dist/src/lib/lca-release.js +683 -0
- package/dist/src/lib/lca-release.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset-maintenance-flow-identity-plan.js","sourceRoot":"","sources":["../../../src/lib/dataset-maintenance-flow-identity-plan.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'node:path';\nimport {\n computeFlowIdentityCaptureSha256,\n computeFlowIdentityMappingId,\n computeFlowIdentityPlanSha256,\n computeFlowIdentityProcessTemplateSha256,\n extractFlowIdentityReference,\n parseFlowIdentityCapture,\n parseFlowIdentityPolicy,\n parseFlowIdentityReference,\n parseFlowIdentityReviewLedger,\n type FlowIdentityCollisionEntry,\n type FlowIdentityCollisionLedger,\n type FlowIdentityCompatibilityPolicy,\n type FlowIdentityCaptureRequest,\n type FlowIdentityDirection,\n type FlowIdentityLiveCapture,\n type FlowIdentityMapping,\n type FlowIdentityMappingEndpoint,\n type FlowIdentityOccurrence,\n type FlowIdentityPlan,\n type FlowIdentityPlanBundle,\n type FlowIdentityProcessManifest,\n type FlowIdentityProcessTemplate,\n type FlowIdentityProtectedClosure,\n type FlowIdentityProtectedReferenceEntry,\n type FlowIdentityReference,\n type FlowIdentityReviewEntry,\n type FlowIdentityReviewLedger,\n type FlowIdentityRewrite,\n type FlowIdentitySupportSnapshot,\n} from './dataset-maintenance-flow-identity-contract.js';\nimport { flowIdentityRestrictedSha256 } from './dataset-maintenance-flow-identity-wire.js';\nimport {\n ensurePrivateArtifactDirectory,\n writePrivateImmutableJson,\n writePrivateImmutableText,\n} from './dataset-maintenance-protected-artifacts.js';\nimport {\n isJsonObject,\n maintenanceRowKey,\n sha256Json,\n snapshotRemoteRow,\n stableJsonText,\n type DatasetMaintenanceRemoteRow,\n type DatasetMaintenanceRowSnapshot,\n type JsonObject,\n} from './dataset-maintenance-contract.js';\nimport { CliError } from './errors.js';\nimport {\n validateFlowPayload,\n type FlowPayloadValidationResult,\n} from './flow-payload-validation.js';\nimport {\n validateProcessPayload,\n type ProcessPayloadValidationResult,\n} from './process-payload-validation.js';\n\nexport type ValidationDeps = {\n validateFlow: (payload: JsonObject) => FlowPayloadValidationResult;\n validateProcess: (payload: JsonObject) => ProcessPayloadValidationResult;\n};\n\nexport type BuildFlowIdentityPlanOptions = {\n policy: unknown;\n reviewLedger: unknown;\n liveCapture: unknown;\n now?: Date;\n validation?: Partial<ValidationDeps>;\n};\n\nexport type RunFlowIdentityPlanOptions = BuildFlowIdentityPlanOptions & { outDir: string };\n\nconst POSTGREST_UTC_TIMESTAMP_PATTERN =\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,6})?\\+00:00$/u;\n\nfunction fail(\n message: string,\n code = 'DATASET_FLOW_IDENTITY_PLAN_INVALID',\n details?: unknown,\n): never {\n throw new CliError(message, { code, exitCode: 1, ...(details === undefined ? {} : { details }) });\n}\n\nfunction rowKey(id: string, version: string): string {\n return `${id}\\u0000${version}`;\n}\n\nfunction requireSnapshotIntegrity(row: DatasetMaintenanceRowSnapshot): void {\n const remote: DatasetMaintenanceRemoteRow = {\n table: row.table,\n id: row.id,\n version: row.version,\n user_id: row.user_id,\n state_code: row.state_code,\n modified_at: row.modified_at,\n json_ordered: row.json_ordered,\n model_id: row.model_id,\n rule_verification: row.rule_verification,\n };\n const expected = snapshotRemoteRow(remote);\n if (expected.row_sha256 !== row.row_sha256 || expected.payload_sha256 !== row.payload_sha256) {\n fail('Live capture contains a row whose canonical snapshot hash is invalid.', undefined, {\n table: row.table,\n id: row.id,\n version: row.version,\n });\n }\n}\n\nfunction indexRows(\n rows: DatasetMaintenanceRowSnapshot[],\n table: DatasetMaintenanceRowSnapshot['table'],\n): Map<string, DatasetMaintenanceRowSnapshot> {\n const selected = rows.filter((row) => row.table === table);\n selected.forEach(requireSnapshotIntegrity);\n const index = new Map(selected.map((row) => [rowKey(row.id, row.version), row]));\n if (index.size !== selected.length) fail(`Live capture contains duplicate ${table} rows.`);\n return index;\n}\n\nfunction arrayOfObjects(value: unknown): JsonObject[] | null {\n const rows = Array.isArray(value) ? value : isJsonObject(value) ? [value] : null;\n return rows?.every(isJsonObject) ? rows : null;\n}\n\nfunction flowRoot(payload: JsonObject): JsonObject | null {\n return isJsonObject(payload.flowDataSet) ? payload.flowDataSet : null;\n}\n\nfunction processRoot(payload: JsonObject): JsonObject | null {\n return isJsonObject(payload.processDataSet) ? payload.processDataSet : null;\n}\n\nfunction flowIdentity(payload: JsonObject): { id: string; version: string } | null {\n const root = flowRoot(payload);\n const information = isJsonObject(root?.flowInformation) ? root.flowInformation : null;\n const dataset = isJsonObject(information?.dataSetInformation)\n ? information.dataSetInformation\n : null;\n const admin = isJsonObject(root?.administrativeInformation)\n ? root.administrativeInformation\n : null;\n const publication = isJsonObject(admin?.publicationAndOwnership)\n ? admin.publicationAndOwnership\n : null;\n const id = dataset?.['common:UUID'];\n const version = publication?.['common:dataSetVersion'];\n return typeof id === 'string' && typeof version === 'string' ? { id, version } : null;\n}\n\nexport function flowType(payload: JsonObject): string | null {\n const root = flowRoot(payload);\n const modelling = isJsonObject(root?.modellingAndValidation) ? root.modellingAndValidation : null;\n const method = isJsonObject(modelling?.LCIMethod) ? modelling.LCIMethod : null;\n return typeof method?.typeOfDataSet === 'string' ? method.typeOfDataSet : null;\n}\n\nfunction flowClassificationInformation(payload: JsonObject): unknown {\n const root = flowRoot(payload);\n const information = isJsonObject(root?.flowInformation) ? root.flowInformation : null;\n const dataset = isJsonObject(information?.dataSetInformation)\n ? information.dataSetInformation\n : null;\n return dataset?.classificationInformation ?? null;\n}\n\nfunction textValues(value: unknown): string[] {\n const values = Array.isArray(value) ? value : [value];\n return [\n ...new Set(\n values.flatMap((entry) => {\n const candidate =\n typeof entry === 'string'\n ? entry\n : isJsonObject(entry) && typeof entry['#text'] === 'string'\n ? entry['#text']\n : null;\n return candidate?.trim() ? [candidate] : [];\n }),\n ),\n ].sort();\n}\n\nfunction targetReferenceMatches(payload: JsonObject, reference: FlowIdentityReference): boolean {\n const root = flowRoot(payload);\n const information = isJsonObject(root?.flowInformation) ? root.flowInformation : null;\n const dataset = isJsonObject(information?.dataSetInformation)\n ? information.dataSetInformation\n : null;\n const name = isJsonObject(dataset?.name) ? dataset.name : null;\n const referenceNames = textValues(reference['common:shortDescription']);\n const baseNames = textValues(name?.baseName);\n return referenceNames.some((entry) => baseNames.includes(entry));\n}\n\nfunction referenceIdentity(value: unknown): { id: string; version: string | null } | null {\n if (!isJsonObject(value) || typeof value['@refObjectId'] !== 'string') return null;\n return {\n id: value['@refObjectId'],\n version: typeof value['@version'] === 'string' ? value['@version'] : null,\n };\n}\n\nfunction flowSupportFacts(\n row: DatasetMaintenanceRowSnapshot,\n supportRows: DatasetMaintenanceRowSnapshot[],\n actorUserId: string,\n): Omit<\n FlowIdentityMappingEndpoint,\n 'user_id' | 'state_code' | 'modified_at' | 'payload_sha256' | 'row_sha256'\n> | null {\n const payload = row.json_ordered;\n const root = payload ? flowRoot(payload) : null;\n const information = isJsonObject(root?.flowInformation) ? root.flowInformation : null;\n const quantitative = isJsonObject(information?.quantitativeReference)\n ? information.quantitativeReference\n : null;\n const referenceInternalId = quantitative?.referenceToReferenceFlowProperty;\n const properties = isJsonObject(root?.flowProperties) ? root.flowProperties : null;\n const entries = arrayOfObjects(properties?.flowProperty);\n const property = entries?.find((entry) => entry['@dataSetInternalID'] === referenceInternalId);\n const propertyRef = referenceIdentity(property?.referenceToFlowPropertyDataSet);\n if (!payload || !propertyRef) return null;\n const flowPropertyVersion = propertyRef.version;\n if (!flowPropertyVersion) return null;\n const fp = supportRows.find(\n (entry) =>\n entry.table === 'flowproperties' &&\n entry.id === propertyRef.id &&\n entry.version === flowPropertyVersion,\n );\n if (!fp || !(fp.state_code === 100 || (fp.user_id === actorUserId && fp.state_code === 0))) {\n return null;\n }\n const fpRoot = isJsonObject(fp?.json_ordered?.flowPropertyDataSet)\n ? fp.json_ordered.flowPropertyDataSet\n : null;\n const fpInformation = isJsonObject(fpRoot?.flowPropertiesInformation)\n ? fpRoot.flowPropertiesInformation\n : null;\n const fpDataset = isJsonObject(fpInformation?.dataSetInformation)\n ? fpInformation.dataSetInformation\n : null;\n const fpQuantitative = isJsonObject(fpInformation?.quantitativeReference)\n ? fpInformation.quantitativeReference\n : null;\n const fpAdmin = isJsonObject(fpRoot?.administrativeInformation)\n ? fpRoot.administrativeInformation\n : null;\n const fpPublication = isJsonObject(fpAdmin?.publicationAndOwnership)\n ? fpAdmin.publicationAndOwnership\n : null;\n const unitGroupRef = referenceIdentity(fpQuantitative?.referenceToReferenceUnitGroup);\n if (\n !unitGroupRef ||\n fpDataset?.['common:UUID'] !== fp.id ||\n fpPublication?.['common:dataSetVersion'] !== fp.version\n )\n return null;\n const unitGroupVersion = unitGroupRef.version;\n const identity = flowIdentity(payload);\n const type = flowType(payload);\n const unitGroup = supportRows.find(\n (entry) =>\n entry.table === 'unitgroups' &&\n entry.id === unitGroupRef.id &&\n entry.version === unitGroupVersion,\n );\n const unitGroupRoot = isJsonObject(unitGroup?.json_ordered?.unitGroupDataSet)\n ? unitGroup.json_ordered.unitGroupDataSet\n : null;\n const unitGroupInformation = isJsonObject(unitGroupRoot?.unitGroupInformation)\n ? unitGroupRoot.unitGroupInformation\n : null;\n const unitGroupDataset = isJsonObject(unitGroupInformation?.dataSetInformation)\n ? unitGroupInformation.dataSetInformation\n : null;\n const unitGroupQuantitative = isJsonObject(unitGroupInformation?.quantitativeReference)\n ? unitGroupInformation.quantitativeReference\n : null;\n const referenceUnit = unitGroupQuantitative?.referenceToReferenceUnit;\n const unitsRoot = isJsonObject(unitGroupRoot?.units) ? unitGroupRoot.units : null;\n const units = arrayOfObjects(unitsRoot?.unit);\n const referenceUnitRow = units?.find((entry) => entry['@dataSetInternalID'] === referenceUnit);\n const unitGroupAdmin = isJsonObject(unitGroupRoot?.administrativeInformation)\n ? unitGroupRoot.administrativeInformation\n : null;\n const unitGroupPublication = isJsonObject(unitGroupAdmin?.publicationAndOwnership)\n ? unitGroupAdmin.publicationAndOwnership\n : null;\n if (\n !identity ||\n identity.id !== row.id ||\n identity.version !== row.version ||\n type !== 'Elementary flow' ||\n !unitGroupVersion ||\n !unitGroup ||\n !(\n unitGroup.state_code === 100 ||\n (unitGroup.user_id === actorUserId && unitGroup.state_code === 0)\n ) ||\n unitGroupDataset?.['common:UUID'] !== unitGroup.id ||\n unitGroupPublication?.['common:dataSetVersion'] !== unitGroup.version ||\n !referenceUnitRow ||\n Number(referenceUnitRow.meanValue) !== 1\n ) {\n return null;\n }\n return {\n id: row.id,\n version: row.version,\n flow_type: 'Elementary flow',\n flow_property_id: propertyRef.id,\n flow_property_version: flowPropertyVersion,\n unit_group_id: unitGroupRef.id,\n unit_group_version: unitGroupVersion,\n category_path_sha256: sha256Json(flowClassificationInformation(payload)),\n };\n}\n\nfunction flowGuardRowSha256(row: DatasetMaintenanceRowSnapshot): string | null {\n if (\n !row.user_id ||\n row.state_code === null ||\n !row.modified_at ||\n !POSTGREST_UTC_TIMESTAMP_PATTERN.test(row.modified_at) ||\n !row.payload_sha256\n ) {\n return null;\n }\n return sha256Json({\n id: row.id,\n version: row.version,\n user_id: row.user_id,\n state_code: row.state_code,\n modified_at: row.modified_at,\n payload_sha256: row.payload_sha256,\n });\n}\n\nfunction buildSupportSnapshots(options: {\n mappings: FlowIdentityMapping[];\n capture: FlowIdentityLiveCapture;\n}): FlowIdentitySupportSnapshot[] {\n const claimed = new Map<\n string,\n { table: FlowIdentitySupportSnapshot['table']; id: string; version: string }\n >();\n for (const mapping of options.mappings) {\n for (const endpoint of [mapping.source, mapping.target]) {\n const identities = [\n {\n table: 'flowproperties' as const,\n id: endpoint.flow_property_id,\n version: endpoint.flow_property_version,\n },\n {\n table: 'unitgroups' as const,\n id: endpoint.unit_group_id,\n version: endpoint.unit_group_version,\n },\n ];\n for (const identity of identities) {\n claimed.set(`${identity.table}\\u0000${identity.id}\\u0000${identity.version}`, identity);\n }\n }\n }\n const captureRows = new Map<string, DatasetMaintenanceRowSnapshot>();\n for (const row of options.capture.support_rows) {\n if (row.table !== 'flowproperties' && row.table !== 'unitgroups') continue;\n requireSnapshotIntegrity(row);\n const key = `${row.table}\\u0000${row.id}\\u0000${row.version}`;\n if (captureRows.has(key)) fail('Live capture contains duplicate support rows.');\n captureRows.set(key, row);\n }\n return [...claimed.values()]\n .sort((left, right) =>\n `${left.table}\\u0000${left.id}\\u0000${left.version}`.localeCompare(\n `${right.table}\\u0000${right.id}\\u0000${right.version}`,\n ),\n )\n .map((identity, index) => {\n const row = captureRows.get(`${identity.table}\\u0000${identity.id}\\u0000${identity.version}`);\n const rowSha256 = row ? flowGuardRowSha256(row) : null;\n if (\n !row ||\n !row.user_id ||\n !row.modified_at ||\n !row.payload_sha256 ||\n (row.state_code !== 0 && row.state_code !== 100) ||\n (row.state_code === 0 && row.user_id !== options.capture.account.user_id) ||\n !rowSha256\n ) {\n fail('A claimed FP/UG support row cannot produce an exact database guard.', undefined, {\n ...identity,\n });\n }\n return {\n ordinal: index + 1,\n ...identity,\n user_id: row.user_id,\n state_code: row.state_code,\n modified_at: row.modified_at,\n payload_sha256: row.payload_sha256,\n row_sha256: rowSha256,\n };\n });\n}\n\nfunction processGuardRowSha256(row: DatasetMaintenanceRowSnapshot): string | null {\n if (\n !row.user_id ||\n row.state_code === null ||\n !row.modified_at ||\n !POSTGREST_UTC_TIMESTAMP_PATTERN.test(row.modified_at) ||\n !row.payload_sha256\n ) {\n return null;\n }\n return sha256Json({\n id: row.id,\n version: row.version,\n user_id: row.user_id,\n state_code: row.state_code,\n modified_at: row.modified_at,\n model_id: row.model_id,\n rule_verification: row.rule_verification,\n payload_sha256: row.payload_sha256,\n });\n}\n\nfunction endpoint(\n row: DatasetMaintenanceRowSnapshot,\n supportRows: DatasetMaintenanceRowSnapshot[],\n actorUserId: string,\n): FlowIdentityMappingEndpoint | null {\n const facts = flowSupportFacts(row, supportRows, actorUserId);\n const rowSha256 = flowGuardRowSha256(row);\n return facts &&\n row.user_id &&\n row.modified_at &&\n row.payload_sha256 &&\n typeof row.state_code === 'number' &&\n rowSha256\n ? {\n ...facts,\n user_id: row.user_id,\n state_code: row.state_code,\n modified_at: row.modified_at,\n payload_sha256: row.payload_sha256,\n row_sha256: rowSha256,\n }\n : null;\n}\n\nfunction processExchanges(payload: JsonObject): JsonObject[] | null {\n const root = processRoot(payload);\n const exchanges = isJsonObject(root?.exchanges) ? root.exchanges : null;\n return arrayOfObjects(exchanges?.exchange);\n}\n\nfunction exchangeReference(exchange: JsonObject): FlowIdentityReference | null {\n try {\n return extractFlowIdentityReference(exchange.referenceToFlowDataSet, 'exchange reference');\n } catch {\n return null;\n }\n}\n\nfunction exchangeDirection(exchange: JsonObject): FlowIdentityDirection | null {\n return exchange.exchangeDirection === 'Input' || exchange.exchangeDirection === 'Output'\n ? exchange.exchangeDirection\n : null;\n}\n\nfunction exchangeInternalId(exchange: JsonObject): string | null {\n return typeof exchange['@dataSetInternalID'] === 'string' ? exchange['@dataSetInternalID'] : null;\n}\n\nfunction patchReference(reference: JsonObject, target: FlowIdentityReference): void {\n for (const field of [\n '@refObjectId',\n '@type',\n '@uri',\n '@version',\n 'common:shortDescription',\n ] as const) {\n reference[field] = structuredClone(target[field]);\n }\n}\n\nfunction occurrence(options: {\n process: DatasetMaintenanceRowSnapshot;\n exchange: JsonObject;\n exchangeIndex: number;\n reference: FlowIdentityReference;\n}): FlowIdentityOccurrence {\n const internalId = exchangeInternalId(options.exchange);\n const direction = exchangeDirection(options.exchange);\n if (!internalId || !direction) fail('Process exchange identity or direction is malformed.');\n return {\n process_id: options.process.id,\n process_version: options.process.version,\n exchange_index: options.exchangeIndex,\n internal_id: internalId,\n direction,\n reference_sha256: sha256Json(options.reference),\n };\n}\n\nfunction collectOccurrences(\n processes: DatasetMaintenanceRowSnapshot[],\n): Map<string, FlowIdentityOccurrence[]> {\n const result = new Map<string, FlowIdentityOccurrence[]>();\n for (const process of [...processes].sort((left, right) =>\n rowKey(left.id, left.version).localeCompare(rowKey(right.id, right.version)),\n )) {\n if (!process.json_ordered) fail('Process capture row has no json_ordered payload.');\n const exchanges = processExchanges(process.json_ordered);\n if (!exchanges) fail('Process capture row has a malformed exchange collection.');\n exchanges.forEach((exchange, exchangeIndex) => {\n const reference = exchangeReference(exchange);\n if (!reference) fail('Process exchange has a malformed flow reference.');\n const key = rowKey(reference['@refObjectId'], reference['@version']);\n const rows = result.get(key) ?? [];\n rows.push(occurrence({ process, exchange, exchangeIndex, reference }));\n result.set(key, rows);\n });\n }\n return result;\n}\n\nfunction protectedReferenceEntry(\n review: FlowIdentityReviewEntry,\n occurrences: FlowIdentityOccurrence[],\n): FlowIdentityProtectedReferenceEntry {\n return {\n source_id: review.source.id,\n source_version: review.source.version,\n expected_reference_count: occurrences.length,\n occurrences,\n occurrence_set_sha256: sha256Json(occurrences),\n evidence_sha256: review.decision_evidence_sha256,\n };\n}\n\nfunction buildProtectedClosure(\n review: FlowIdentityReviewLedger,\n occurrenceIndex: Map<string, FlowIdentityOccurrence[]>,\n): FlowIdentityProtectedClosure {\n const pending: FlowIdentityProtectedReferenceEntry[] = [];\n const blockers: FlowIdentityProtectedReferenceEntry[] = [];\n const orphans: FlowIdentityProtectedClosure['orphans'] = [];\n for (const entry of review.entries) {\n const occurrences = occurrenceIndex.get(rowKey(entry.source.id, entry.source.version)) ?? [];\n if (entry.disposition === 'pending') pending.push(protectedReferenceEntry(entry, occurrences));\n if (entry.disposition === 'blocker') blockers.push(protectedReferenceEntry(entry, occurrences));\n if (entry.disposition === 'orphan') {\n if (occurrences.length)\n fail('A reviewed orphan has live process references.', undefined, entry.source);\n orphans.push({\n source_id: entry.source.id,\n source_version: entry.source.version,\n evidence_sha256: entry.decision_evidence_sha256,\n });\n }\n }\n return {\n schema_version: 'dataset-flow-identity-protected-closure.v1',\n pending,\n blockers,\n orphans,\n pending_set_sha256: sha256Json(pending),\n blocker_set_sha256: sha256Json(blockers),\n orphan_set_sha256: sha256Json(orphans),\n total_expected_reference_count: [...pending, ...blockers].reduce(\n (sum, entry) => sum + entry.expected_reference_count,\n 0,\n ),\n };\n}\n\nfunction flowSchemaProof(\n validation: FlowPayloadValidationResult,\n): FlowIdentityMapping['compatibility']['flow_schema'] {\n return {\n status: validation.ok ? 'pass' : 'legacy_warning',\n warning_set_sha256: sha256Json(validation.ok ? [] : validation.issues),\n };\n}\n\nfunction buildMappings(options: {\n policy: FlowIdentityCompatibilityPolicy;\n review: FlowIdentityReviewLedger;\n capture: FlowIdentityLiveCapture;\n validateFlow: ValidationDeps['validateFlow'];\n occurrenceIndex: Map<string, FlowIdentityOccurrence[]>;\n}): FlowIdentityMapping[] {\n const sources = indexRows(options.capture.source_rows, 'flows');\n const targets = indexRows(options.capture.target_rows, 'flows');\n options.capture.support_rows.forEach(requireSnapshotIntegrity);\n const reviewedSourceKeys = new Set(\n options.review.entries.map((entry) => rowKey(entry.source.id, entry.source.version)),\n );\n const approvedTargetKeys = new Set(\n options.review.entries\n .filter((entry) => entry.disposition === 'map_public')\n .map((entry) => rowKey(entry.target!.id, entry.target!.version)),\n );\n if (\n sources.size !== options.review.entries.length ||\n [...sources.keys()].some((key) => !reviewedSourceKeys.has(key)) ||\n [...reviewedSourceKeys].some((key) => !sources.has(key)) ||\n targets.size !== approvedTargetKeys.size ||\n [...targets.keys()].some((key) => !approvedTargetKeys.has(key))\n ) {\n fail('Fresh capture must contain exactly the 305 reviewed source flow rows.');\n }\n for (const row of sources.values()) {\n if (\n row.user_id !== options.capture.account.user_id ||\n row.state_code !== 0 ||\n !endpoint(row, options.capture.support_rows, options.capture.account.user_id)\n ) {\n fail('Every reviewed source must remain an exact current-owner state-0 Elementary flow.');\n }\n }\n return options.review.entries\n .filter((entry) => entry.disposition === 'map_public')\n .map((entry, index) => {\n const sourceRow = sources.get(rowKey(entry.source.id, entry.source.version));\n const target = entry.target!;\n const targetRow = targets.get(rowKey(target.id, target.version));\n if (!sourceRow || !targetRow)\n fail('Approved mapping source or target is absent from fresh capture.');\n const source = endpoint(\n sourceRow,\n options.capture.support_rows,\n options.capture.account.user_id,\n );\n const targetEndpoint = endpoint(\n targetRow,\n options.capture.support_rows,\n options.capture.account.user_id,\n );\n const targetReference = parseFlowIdentityReference(\n target.reference,\n 'review target reference',\n );\n const occurrences =\n options.occurrenceIndex.get(rowKey(entry.source.id, entry.source.version)) ?? [];\n if (\n !source ||\n !targetEndpoint ||\n source.user_id !== options.capture.account.user_id ||\n source.state_code !== 0 ||\n targetEndpoint.user_id === options.capture.account.user_id ||\n targetEndpoint.state_code !== 100 ||\n targetReference['@refObjectId'] !== targetEndpoint.id ||\n targetReference['@version'] !== targetEndpoint.version ||\n !targetReferenceMatches(targetRow.json_ordered!, targetReference) ||\n source.flow_property_id !== targetEndpoint.flow_property_id ||\n source.flow_property_version !== targetEndpoint.flow_property_version ||\n source.unit_group_id !== targetEndpoint.unit_group_id ||\n source.unit_group_version !== targetEndpoint.unit_group_version ||\n occurrences.some((occurrence) => !entry.allowed_directions.includes(occurrence.direction))\n ) {\n fail(\n 'Approved mapping failed a fresh owner/public/type/support/direction compatibility guard.',\n undefined,\n {\n source: entry.source,\n target: entry.target,\n },\n );\n }\n const targetValidation = options.validateFlow(targetRow.json_ordered!);\n const compatibilityEvidence = sha256Json({\n decision_evidence_sha256: entry.decision_evidence_sha256,\n compartment_evidence_sha256: entry.compartment_evidence_sha256,\n source_trace_sha256: entry.source_trace_sha256,\n source,\n target: targetEndpoint,\n allowed_directions: entry.allowed_directions,\n });\n const withoutId: Omit<FlowIdentityMapping, 'mapping_id'> = {\n ordinal: index + 1,\n source: { ...source, source_trace_sha256: entry.source_trace_sha256 },\n target: { ...targetEndpoint, reference: targetReference },\n compatibility: {\n policy_sha256: options.policy.policy_sha256,\n mode: 'identity',\n confidence: 'approved',\n flow_property_compatible: true,\n unit_group_compatible: true,\n direction_compatible: true,\n compartment_compatible: true,\n conversion_factor: '1',\n evidence_sha256: compatibilityEvidence,\n flow_schema: flowSchemaProof(targetValidation),\n process_schema_required: 'pass',\n },\n };\n return { ...withoutId, mapping_id: computeFlowIdentityMappingId(withoutId) };\n });\n}\n\nfunction collisionLedger(options: {\n desiredExchanges: JsonObject[];\n rewrites: FlowIdentityRewrite[];\n}): FlowIdentityCollisionLedger {\n const touchedTargets = new Set(\n options.rewrites.map(\n (rewrite) =>\n `${rewrite.target_reference['@refObjectId']}\\u0000${rewrite.target_reference['@version']}`,\n ),\n );\n const mappingByIndex = new Map(\n options.rewrites.map((rewrite) => [rewrite.exchange_index, rewrite.mapping_id]),\n );\n const entries: FlowIdentityCollisionEntry[] = [];\n for (const targetKey of [...touchedTargets].sort()) {\n const matches = options.desiredExchanges\n .map((exchange, exchangeIndex) => ({\n exchange,\n exchangeIndex,\n reference: exchangeReference(exchange),\n }))\n .filter(\n (entry) =>\n entry.reference &&\n rowKey(entry.reference['@refObjectId'], entry.reference['@version']) === targetKey,\n );\n if (matches.length <= 1) continue;\n const first = matches[0]!.reference!;\n entries.push({\n target_id: first['@refObjectId'],\n target_version: first['@version'],\n exchange_indexes: matches.map((entry) => entry.exchangeIndex),\n internal_ids: matches.map((entry) => exchangeInternalId(entry.exchange)),\n mapping_ids: matches.map((entry) => mappingByIndex.get(entry.exchangeIndex) ?? null),\n preserve_rows: true,\n });\n }\n return { schema_version: 'dataset-flow-identity-collision-ledger.v1', entries };\n}\n\nfunction buildProcessTemplate(options: {\n ordinal: number;\n row: DatasetMaintenanceRowSnapshot;\n mappingsBySource: Map<string, FlowIdentityMapping>;\n pendingBlockerClosureSha256: string;\n validateProcess: ValidationDeps['validateProcess'];\n}): FlowIdentityProcessTemplate | null {\n if (!options.row.json_ordered || !options.row.payload_sha256 || !options.row.modified_at) {\n fail('Affected process row lacks a complete fresh snapshot.');\n }\n const beforeExchanges = processExchanges(options.row.json_ordered);\n if (!beforeExchanges) fail('Affected process exchange collection is malformed.');\n const desired = structuredClone(options.row.json_ordered);\n const desiredExchanges = processExchanges(desired)!;\n const rewrites: FlowIdentityRewrite[] = [];\n beforeExchanges.forEach((exchange, exchangeIndex) => {\n const sourceReference = exchangeReference(exchange);\n if (!sourceReference) fail('Affected process contains a malformed source reference.');\n const mapping = options.mappingsBySource.get(\n rowKey(sourceReference['@refObjectId'], sourceReference['@version']),\n );\n if (!mapping) return;\n const direction = exchangeDirection(exchange);\n const internalId = exchangeInternalId(exchange);\n const desiredReference = desiredExchanges[exchangeIndex]!.referenceToFlowDataSet;\n if (!direction || !internalId || !isJsonObject(desiredReference)) {\n fail('Affected exchange identity, direction, or reference object is malformed.');\n }\n patchReference(desiredReference, mapping.target.reference);\n rewrites.push({\n ordinal: rewrites.length + 1,\n exchange_index: exchangeIndex,\n internal_id: internalId,\n direction,\n mapping_id: mapping.mapping_id,\n source_reference: sourceReference,\n target_reference: structuredClone(mapping.target.reference),\n before_reference_sha256: sha256Json(sourceReference),\n after_reference_sha256: sha256Json(mapping.target.reference),\n });\n });\n if (!rewrites.length) return null;\n const validation = options.validateProcess(desired);\n if (!validation.ok) {\n fail('Desired process failed ProcessSchema and cannot enter an executable plan.', undefined, {\n id: options.row.id,\n version: options.row.version,\n issues: validation.issues,\n });\n }\n const collision = collisionLedger({ desiredExchanges, rewrites });\n const processSchemaEvidence = sha256Json({\n validator: validation.validator,\n status: 'pass',\n desired_payload_sha256: sha256Json(desired),\n });\n const beforeRowSha256 = processGuardRowSha256(options.row);\n if (!beforeRowSha256) fail('Affected process row cannot produce the database guard hash.');\n const manifestWithoutHash: FlowIdentityProcessManifest = {\n ordinal: options.ordinal,\n id: options.row.id,\n version: options.row.version,\n user_id: options.row.user_id!,\n state_code: 0,\n modified_at: options.row.modified_at,\n model_id: options.row.model_id,\n rule_verification: options.row.rule_verification,\n before_row_sha256: beforeRowSha256,\n before_payload_sha256: options.row.payload_sha256,\n before_exchange_set_sha256: sha256Json(beforeExchanges),\n before_exchange_count: beforeExchanges.length,\n desired_payload_sha256: sha256Json(desired),\n desired_exchange_set_sha256: sha256Json(desiredExchanges),\n rewrite_count: rewrites.length,\n process_template_sha256: '',\n rewrite_set_sha256: sha256Json(rewrites),\n collision_ledger_sha256: sha256Json(collision),\n process_schema: { status: 'pass', evidence_sha256: processSchemaEvidence },\n pending_blocker_closure_sha256: options.pendingBlockerClosureSha256,\n };\n const process = {\n ...manifestWithoutHash,\n process_template_sha256: computeFlowIdentityProcessTemplateSha256(manifestWithoutHash),\n };\n return { process, rewrites, collision_ledger: collision, desired_payload: desired };\n}\n\nfunction buildProcessTemplates(options: {\n capture: FlowIdentityLiveCapture;\n mappings: FlowIdentityMapping[];\n closure: FlowIdentityProtectedClosure;\n validateProcess: ValidationDeps['validateProcess'];\n}): FlowIdentityProcessTemplate[] {\n const mappingsBySource = new Map(\n options.mappings.map((mapping) => [rowKey(mapping.source.id, mapping.source.version), mapping]),\n );\n const rows = options.capture.process_rows\n .filter((row) => row.table === 'processes')\n .sort((left, right) => maintenanceRowKey(left).localeCompare(maintenanceRowKey(right)));\n rows.forEach(requireSnapshotIntegrity);\n const templates: FlowIdentityProcessTemplate[] = [];\n for (const row of rows) {\n if (row.user_id !== options.capture.account.user_id || row.state_code !== 0) {\n fail('Process capture contains a foreign-owner or non-draft row.');\n }\n const template = buildProcessTemplate({\n ordinal: templates.length + 1,\n row,\n mappingsBySource,\n pendingBlockerClosureSha256: sha256Json(options.closure),\n validateProcess: options.validateProcess,\n });\n if (!template) continue;\n templates.push(template);\n }\n return templates;\n}\n\nexport function buildFlowIdentityCaptureRequest(options: {\n requestId: string;\n operationId: string;\n policy: FlowIdentityCompatibilityPolicy;\n capture: FlowIdentityLiveCapture;\n mappings: FlowIdentityMapping[];\n processTemplates: FlowIdentityProcessTemplate[];\n protectedClosure: FlowIdentityProtectedClosure;\n}): FlowIdentityCaptureRequest {\n const mappingOrdinalById = new Map(\n options.mappings.map((mapping) => [mapping.mapping_id, mapping.ordinal]),\n );\n const mappings = options.mappings.map((mapping) => ({\n ordinal: mapping.ordinal,\n source: {\n id: mapping.source.id,\n version: mapping.source.version,\n source_trace_sha256: mapping.source.source_trace_sha256,\n },\n target: {\n id: mapping.target.id,\n version: mapping.target.version,\n reference: mapping.target.reference,\n },\n compatibility: mapping.compatibility,\n })) as JsonObject[];\n const processIntents = options.processTemplates.map((template) => ({\n ordinal: template.process.ordinal,\n id: template.process.id,\n version: template.process.version,\n rewrites: template.rewrites.map((rewrite) => {\n const mappingOrdinal = mappingOrdinalById.get(rewrite.mapping_id);\n if (!mappingOrdinal) fail('A process rewrite refers to a foreign mapping.');\n return {\n ordinal: rewrite.ordinal,\n exchange_index: rewrite.exchange_index,\n internal_id: rewrite.internal_id,\n direction: rewrite.direction,\n mapping_ordinal: mappingOrdinal,\n };\n }),\n process_schema: template.process.process_schema,\n })) as JsonObject[];\n const occurrenceIntent = (entry: FlowIdentityProtectedReferenceEntry): JsonObject => ({\n source_id: entry.source_id,\n source_version: entry.source_version,\n expected_reference_count: entry.expected_reference_count,\n occurrences: entry.occurrences.map((occurrence) => ({\n process_id: occurrence.process_id,\n process_version: occurrence.process_version,\n exchange_index: occurrence.exchange_index,\n internal_id: occurrence.internal_id,\n direction: occurrence.direction,\n })),\n evidence_sha256: entry.evidence_sha256,\n });\n return {\n schema_version: 'dataset-flow-identity-capture-attest.v2',\n request_id: options.requestId,\n environment: options.capture.environment,\n project_ref: options.capture.project_ref,\n actor: options.capture.account,\n target_visibility: 'owner_draft',\n operation_id: options.operationId,\n compatibility_policy: options.policy,\n artifact_evidence: options.capture.artifact_evidence,\n mappings,\n process_intents: processIntents,\n protected_closure: {\n schema_version: 'dataset-flow-identity-protected-intent.v2',\n pending: options.protectedClosure.pending.map(occurrenceIntent),\n blockers: options.protectedClosure.blockers.map(occurrenceIntent),\n orphans: options.protectedClosure.orphans.map((entry) => ({\n source_id: entry.source_id,\n source_version: entry.source_version,\n evidence_sha256: entry.evidence_sha256,\n })),\n },\n };\n}\n\nexport function buildFlowIdentitySemantics(options: {\n policy: FlowIdentityCompatibilityPolicy;\n review: FlowIdentityReviewLedger;\n capture: FlowIdentityLiveCapture;\n validation: ValidationDeps;\n}): {\n protectedClosure: FlowIdentityProtectedClosure;\n mappings: FlowIdentityMapping[];\n supportSnapshots: FlowIdentitySupportSnapshot[];\n processTemplates: FlowIdentityProcessTemplate[];\n} {\n const occurrenceIndex = collectOccurrences(options.capture.process_rows);\n const protectedClosure = buildProtectedClosure(options.review, occurrenceIndex);\n const mappings = buildMappings({\n policy: options.policy,\n review: options.review,\n capture: options.capture,\n validateFlow: options.validation.validateFlow,\n occurrenceIndex,\n });\n const supportSnapshots = buildSupportSnapshots({\n mappings,\n capture: options.capture,\n });\n const processTemplates = buildProcessTemplates({\n capture: options.capture,\n mappings,\n closure: protectedClosure,\n validateProcess: options.validation.validateProcess,\n });\n return { protectedClosure, mappings, supportSnapshots, processTemplates };\n}\n\nexport function buildFlowIdentityPlan(\n options: BuildFlowIdentityPlanOptions,\n): FlowIdentityPlanBundle {\n const policy = parseFlowIdentityPolicy(options.policy);\n const review = parseFlowIdentityReviewLedger(options.reviewLedger);\n const capture = parseFlowIdentityCapture(options.liveCapture);\n if (policy.evidence_resolution_sha256 !== review.review_evidence_sha256) {\n fail('Approved policy does not bind the supplied v3 evidence resolution ledger.');\n }\n if (\n capture.artifact_evidence.review_ledger_sha256 !== review.ledger_sha256 ||\n Date.parse(capture.attestation.expires_at) <= (options.now ?? new Date()).getTime()\n ) {\n fail('The v2 capture receipt is foreign, expired, or does not bind the review ledger.');\n }\n const validation: ValidationDeps = {\n validateFlow: options.validation?.validateFlow ?? validateFlowPayload,\n validateProcess: options.validation?.validateProcess ?? validateProcessPayload,\n };\n const { protectedClosure, mappings, supportSnapshots, processTemplates } =\n buildFlowIdentitySemantics({ policy, review, capture, validation });\n const expectedCaptureRequest = buildFlowIdentityCaptureRequest({\n requestId: capture.capture_request.request_id,\n operationId: capture.attestation.operation_id,\n policy,\n capture,\n mappings,\n processTemplates,\n protectedClosure,\n });\n const expectedCaptureRequestSha256 = flowIdentityRestrictedSha256(\n expectedCaptureRequest as unknown as JsonObject,\n );\n if (\n expectedCaptureRequestSha256 !== capture.attestation.capture_request_sha256 ||\n expectedCaptureRequestSha256 !==\n flowIdentityRestrictedSha256(capture.capture_request as unknown as JsonObject)\n ) {\n fail(\n 'The authenticated v2 receipt does not bind the exact local mapping, locator, process, and protected-closure semantics.',\n );\n }\n const processes = processTemplates.map((template) => template.process);\n const collisionCount = processTemplates.reduce(\n (sum, template) => sum + template.collision_ledger.entries.length,\n 0,\n );\n const sourceUniverse = review.entries\n .map((entry) => ({\n id: entry.source.id,\n version: entry.source.version,\n user_id: capture.account.user_id,\n state_code: 0,\n flow_type: 'Elementary flow',\n }))\n .sort((left, right) =>\n rowKey(left.id, left.version).localeCompare(rowKey(right.id, right.version)),\n );\n const body: FlowIdentityPlan = {\n schema_version: 'dataset-flow-identity-plan.v2',\n generated_at_utc: (options.now ?? new Date()).toISOString(),\n environment: capture.environment,\n project_ref: capture.project_ref,\n account: capture.account,\n operation_id: capture.attestation.operation_id,\n status: 'ready',\n target_visibility: 'owner_draft',\n review_ledger_sha256: review.ledger_sha256,\n capture_artifact_sha256: computeFlowIdentityCaptureSha256(capture),\n receipt_id: capture.attestation.receipt_id,\n receipt_proof_sha256: capture.attestation.receipt_proof_sha256,\n capture_request_sha256: capture.attestation.capture_request_sha256,\n source_guard_set_sha256: capture.attestation.source_guard_set_sha256,\n support_guard_set_sha256: capture.attestation.support_guard_set_sha256,\n target_guard_set_sha256: capture.attestation.target_guard_set_sha256,\n mapping_guard_set_sha256: capture.attestation.mapping_guard_set_sha256,\n process_intent_set_sha256: capture.attestation.process_intent_set_sha256,\n receipt_protected_closure_sha256: capture.attestation.protected_closure_sha256,\n capture_whole_scope_proof_sha256: capture.attestation.whole_scope_proof_sha256,\n source_universe_artifact_sha256: sha256Json(sourceUniverse),\n compatibility_policy: policy,\n support_snapshot_artifact_sha256: sha256Json(supportSnapshots),\n mapping_artifact_sha256: sha256Json(mappings),\n process_manifest_artifact_sha256: sha256Json(processes),\n protected_closure_artifact_sha256: sha256Json(protectedClosure),\n support_snapshots: supportSnapshots,\n mappings,\n processes,\n protected_closure: protectedClosure,\n summary: {\n semantic_sources: 305,\n mappings: mappings.length,\n processes: processes.length,\n rewrites: processes.reduce((sum, process) => sum + process.rewrite_count, 0),\n collision_entries: collisionCount,\n pending: protectedClosure.pending.length,\n blockers: protectedClosure.blockers.length,\n orphans: protectedClosure.orphans.length,\n protected_references: protectedClosure.total_expected_reference_count,\n },\n artifacts: {\n plan: 'flow-identity-plan.json',\n live_capture: 'flow-identity-live-capture.json',\n process_manifest: 'flow-identity-process-manifest.jsonl',\n collision_ledger: 'flow-identity-collision-ledger.jsonl',\n protected_closure: 'flow-identity-protected-closure.json',\n desired_payload_dir: 'desired-processes',\n process_request_dir: 'process-requests',\n },\n plan_sha256: '',\n };\n if (\n capture.attestation.mapping_count !== mappings.length ||\n capture.attestation.process_count !== processes.length ||\n capture.attestation.rewrite_count !== body.summary.rewrites\n ) {\n fail('The v2 database receipt counts do not match the deterministic semantic plan.');\n }\n body.plan_sha256 = computeFlowIdentityPlanSha256(body);\n return { plan: body, process_templates: processTemplates };\n}\n\nexport function runFlowIdentityPlan(options: RunFlowIdentityPlanOptions): FlowIdentityPlan {\n const bundle = buildFlowIdentityPlan(options);\n const outDir = ensurePrivateArtifactDirectory(path.resolve(options.outDir));\n writePrivateImmutableJson(path.join(outDir, bundle.plan.artifacts.plan), bundle.plan);\n writePrivateImmutableJson(\n path.join(outDir, bundle.plan.artifacts.live_capture),\n parseFlowIdentityCapture(options.liveCapture),\n );\n writePrivateImmutableText(\n path.join(outDir, bundle.plan.artifacts.process_manifest),\n bundle.plan.processes.length ? `${bundle.plan.processes.map(stableJsonText).join('\\n')}\\n` : '',\n );\n const collisionRows = bundle.process_templates.map((template) => ({\n ordinal: template.process.ordinal,\n process_id: template.process.id,\n process_version: template.process.version,\n ledger: template.collision_ledger,\n }));\n writePrivateImmutableText(\n path.join(outDir, bundle.plan.artifacts.collision_ledger),\n collisionRows.length ? `${collisionRows.map(stableJsonText).join('\\n')}\\n` : '',\n );\n writePrivateImmutableJson(\n path.join(outDir, bundle.plan.artifacts.protected_closure),\n bundle.plan.protected_closure,\n );\n for (const template of bundle.process_templates) {\n const stem = `${String(template.process.ordinal).padStart(6, '0')}-${template.process.id}-${template.process.version}`;\n writePrivateImmutableJson(\n path.join(outDir, bundle.plan.artifacts.desired_payload_dir, `${stem}.json`),\n template.desired_payload,\n );\n writePrivateImmutableJson(\n path.join(outDir, bundle.plan.artifacts.process_request_dir, `${stem}.json`),\n {\n process: template.process,\n rewrites: template.rewrites,\n collision_ledger: template.collision_ledger,\n },\n );\n }\n return bundle.plan;\n}\n\nexport const __testInternals = {\n arrayOfObjects,\n buildProtectedClosure,\n collectOccurrences,\n collisionLedger,\n endpoint,\n exchangeDirection,\n exchangeInternalId,\n exchangeReference,\n flowClassificationInformation,\n flowIdentity,\n flowGuardRowSha256,\n flowSupportFacts,\n flowType,\n indexRows,\n patchReference,\n processGuardRowSha256,\n processExchanges,\n rowKey,\n};\n"]}
|