@tiangong-lca/cli 0.0.21 → 0.0.22
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 +53 -4
- package/dist/src/cli.js +331 -21
- package/dist/src/cli.js.map +1 -1
- package/dist/src/lib/dataset-maintenance-alias-rewrite.js +541 -0
- package/dist/src/lib/dataset-maintenance-alias-rewrite.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-apply.js +1537 -0
- package/dist/src/lib/dataset-maintenance-apply.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-contract.js +836 -0
- package/dist/src/lib/dataset-maintenance-contract.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-plan.js +485 -0
- package/dist/src/lib/dataset-maintenance-plan.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-remote.js +272 -0
- package/dist/src/lib/dataset-maintenance-remote.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-support-validation.js +18 -0
- package/dist/src/lib/dataset-maintenance-support-validation.js.map +1 -0
- package/dist/src/lib/dataset-maintenance-verify.js +690 -0
- package/dist/src/lib/dataset-maintenance-verify.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset-maintenance-apply.js","sourceRoot":"","sources":["../../../src/lib/dataset-maintenance-apply.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync } from 'node:fs';\nimport path from 'node:path';\nimport { writeJsonArtifact } from './artifacts.js';\nimport { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\nimport { withStateFileLock } from './state-lock.js';\nimport {\n appendStableJsonLine,\n isJsonObject,\n maintenanceRowKey,\n parseMaintenancePlan,\n readJsonFile,\n readJsonLinesIfPresent,\n resolveMaintenancePlanArtifactPath,\n sha256Json,\n snapshotRemoteRow,\n writeImmutableJson,\n type DatasetMaintenancePlan,\n type DatasetMaintenanceAliasBatchPlan,\n type DatasetMaintenancePlanAction,\n type DatasetMaintenanceProgressEntry,\n type DatasetMaintenanceMutableTable,\n type DatasetMaintenanceRemoteRow,\n type JsonObject,\n} from './dataset-maintenance-contract.js';\nimport { maintenanceProjectedReferenceFingerprint } from './dataset-maintenance-plan.js';\nimport {\n applyMaintenanceAliasPlan,\n deleteMaintenanceRow,\n fetchMaintenanceAccountRows,\n fetchMaintenanceExactRows,\n resolveMaintenanceRemoteContext,\n saveDraftMaintenanceRow,\n type DatasetMaintenanceRemoteContext,\n} from './dataset-maintenance-remote.js';\n\nexport type DatasetMaintenanceApplyReport = {\n schema_version: 1;\n generated_at_utc: string;\n status: 'completed' | 'completed_with_failures';\n task_id: string;\n operation: DatasetMaintenancePlan['operation'];\n operation_id: string;\n target_mode: DatasetMaintenancePlan['target_mode'];\n plan_sha256: string;\n actor: { user_id: string; email: string };\n summary: {\n actions: number;\n success: number;\n failed: number;\n pending: number;\n resumed_successes: number;\n };\n actions: Array<{\n action_id: string;\n action: DatasetMaintenancePlanAction['action'];\n table: DatasetMaintenancePlanAction['table'];\n id: string;\n version: string;\n status: 'success' | 'failed' | 'pending';\n error: string | null;\n }>;\n artifacts: {\n approval_record: string;\n apply_progress: string;\n commit_report: string;\n attempt_report: string;\n alias_plan_progress?: string;\n alias_batch_progress?: string;\n alias_exchange_progress?: string;\n };\n database_audit: {\n rpc_transaction_log: 'public.command_audit_log';\n source: 'tiangong-lca dataset maintenance apply';\n correlation_fields: string[];\n };\n alias_plan_proof?: {\n plan_request_sha256: string;\n summary_audit_id: string;\n batch_count: 2;\n row_count: 52;\n exchange_count: 59;\n idempotent_replay: boolean;\n };\n};\n\nexport type RunDatasetMaintenanceApplyOptions = {\n planPath: string;\n commit: boolean;\n approvePlan: string;\n confirm: string;\n timeoutMs?: number;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n now?: Date;\n};\n\ntype ProgressState = {\n entries: DatasetMaintenanceProgressEntry[];\n successes: Map<string, DatasetMaintenanceProgressEntry>;\n latestFailures: Map<string, DatasetMaintenanceProgressEntry>;\n};\n\ntype AliasBatchProgressEntry = {\n schema_version: 1;\n plan_sha256: string;\n operation_id: string;\n batch_id: string;\n target_mode: 'owner_draft';\n dimension: DatasetMaintenanceAliasBatchPlan['dimension'];\n factor: string;\n actor: { user_id: string; email: string };\n started_at_utc: string;\n ended_at_utc: string;\n batch_request_sha256: string;\n idempotent_replay: boolean;\n row_count: number;\n exchange_count: number;\n summary_audit_id: string;\n plan_request_sha256: string;\n plan_summary_audit_id: string;\n result: 'success';\n error: null;\n};\n\ntype AliasPlanBatchProof = {\n batch_id: string;\n dimension: DatasetMaintenanceAliasBatchPlan['dimension'];\n batch_request_sha256: string;\n summary_audit_id: string;\n};\n\ntype AliasPlanProgressEntry = {\n schema_version: 1;\n plan_sha256: string;\n operation_id: string;\n target_mode: 'owner_draft';\n actor: { user_id: string; email: string };\n started_at_utc: string;\n ended_at_utc: string;\n plan_request_sha256: string | null;\n idempotent_replay: boolean | null;\n batch_count: 2;\n row_count: 52;\n exchange_count: 59;\n summary_audit_id: string | null;\n batches: AliasPlanBatchProof[];\n result: 'success' | 'failed';\n error: string | null;\n};\n\ntype AliasPlanProgressState = {\n entries: AliasPlanProgressEntry[];\n success: AliasPlanProgressEntry | null;\n latestFailure: AliasPlanProgressEntry | null;\n};\n\ntype AliasBatchProgressState = {\n entries: AliasBatchProgressEntry[];\n successes: Map<string, AliasBatchProgressEntry>;\n};\n\ntype AliasRpcAuditProof = {\n action_id: string;\n table: DatasetMaintenancePlanAction['table'];\n id: string;\n version: string;\n audit_id: string;\n};\n\ntype AliasRpcResult = {\n target_visibility: 'owner_draft';\n batch_request_sha256: string;\n idempotent_replay: boolean;\n exchange_count: number;\n summary_audit_id: string;\n audits: Map<string, AliasRpcAuditProof>;\n raw: JsonObject;\n};\n\ntype AliasPlanRpcResult = {\n target_visibility: 'owner_draft';\n plan_request_sha256: string;\n idempotent_replay: boolean;\n batch_count: 2;\n row_count: 52;\n exchange_count: 59;\n summary_audit_id: string;\n batches: Map<DatasetMaintenanceAliasBatchPlan['dimension'], AliasRpcResult>;\n raw: JsonObject;\n};\n\nconst POSITIVE_INTEGER_TEXT = /^[1-9]\\d*$/u;\n\nfunction clock(options: RunDatasetMaintenanceApplyOptions): string {\n return (options.now ?? new Date()).toISOString();\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction loadDesiredPayload(planDir: string, action: DatasetMaintenancePlanAction): JsonObject {\n if (!action.desired_payload) {\n throw new CliError(`save_draft action lacks desired payload: ${action.action_id}`, {\n code: 'DATASET_MAINTENANCE_PLAN_INVALID',\n exitCode: 2,\n });\n }\n const payloadPath = resolveMaintenancePlanArtifactPath(\n planDir,\n action.desired_payload.path,\n 'Maintenance desired payload path',\n );\n const payload = readJsonFile(payloadPath, 'Maintenance desired payload');\n if (!isJsonObject(payload) || sha256Json(payload) !== action.desired_payload.sha256) {\n throw new CliError(`Desired payload hash mismatch for action ${action.action_id}.`, {\n code: 'DATASET_MAINTENANCE_DESIRED_PAYLOAD_HASH_MISMATCH',\n exitCode: 1,\n });\n }\n return payload;\n}\n\nfunction parseProgress(plan: DatasetMaintenancePlan, progressPath: string): ProgressState {\n const rawEntries = readJsonLinesIfPresent(progressPath);\n const entries: DatasetMaintenanceProgressEntry[] = [];\n const actionsById = new Map(plan.actions.map((action) => [action.action_id, action]));\n for (const value of rawEntries) {\n const action =\n isJsonObject(value) && typeof value.action_id === 'string'\n ? actionsById.get(value.action_id)\n : null;\n if (\n !isJsonObject(value) ||\n value.schema_version !== 1 ||\n value.plan_sha256 !== plan.plan_sha256 ||\n value.operation_id !== plan.operation_id ||\n typeof value.action_id !== 'string' ||\n !action ||\n value.action !== action.action ||\n value.reason_code !== action.reason_code ||\n typeof value.before_sha256 !== 'string' ||\n !isJsonObject(value.audit_context) ||\n value.audit_context.plan_sha256 !== plan.plan_sha256 ||\n value.audit_context.operation_id !== plan.operation_id ||\n value.audit_context.action_id !== action.action_id ||\n value.audit_context.reason_code !== action.reason_code ||\n value.audit_context.source !== 'tiangong-lca dataset maintenance apply' ||\n (action.action === 'update_json_ordered' &&\n (value.target_mode !== 'owner_draft' ||\n value.audit_context.target_mode !== 'owner_draft' ||\n value.batch_id !== action.batch_id ||\n typeof value.batch_request_sha256 !== 'string' ||\n !/^[a-f0-9]{64}$/u.test(value.batch_request_sha256) ||\n typeof value.database_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.database_audit_id) ||\n typeof value.summary_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.summary_audit_id) ||\n typeof value.plan_request_sha256 !== 'string' ||\n !/^[a-f0-9]{64}$/u.test(value.plan_request_sha256) ||\n typeof value.plan_summary_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.plan_summary_audit_id))) ||\n (action.action !== 'update_json_ordered' &&\n ('target_mode' in value ||\n 'target_mode' in value.audit_context ||\n 'batch_id' in value ||\n 'batch_request_sha256' in value ||\n 'database_audit_id' in value ||\n 'summary_audit_id' in value ||\n 'plan_request_sha256' in value ||\n 'plan_summary_audit_id' in value)) ||\n !['success', 'failed'].includes(String(value.result)) ||\n (value.result === 'success' && typeof value.remote_result_sha256 !== 'string') ||\n (value.result === 'failed' && value.remote_result_sha256 !== null)\n ) {\n throw new CliError('Apply progress contains an invalid or foreign entry.', {\n code: 'DATASET_MAINTENANCE_PROGRESS_INVALID',\n exitCode: 1,\n details: value,\n });\n }\n entries.push(value as DatasetMaintenanceProgressEntry);\n }\n const successes = new Map<string, DatasetMaintenanceProgressEntry>();\n const latestFailures = new Map<string, DatasetMaintenanceProgressEntry>();\n for (const entry of entries) {\n if (entry.result === 'success') {\n successes.set(entry.action_id, entry);\n latestFailures.delete(entry.action_id);\n } else if (!successes.has(entry.action_id)) {\n latestFailures.set(entry.action_id, entry);\n }\n }\n return { entries, successes, latestFailures };\n}\n\nfunction parseAliasBatchProgress(\n plan: DatasetMaintenancePlan,\n progressPath: string,\n): AliasBatchProgressState {\n const batches = new Map(plan.alias_batches!.map((batch) => [batch.batch_id, batch]));\n const entries = readJsonLinesIfPresent(progressPath).map((value) => {\n const batch =\n isJsonObject(value) && typeof value.batch_id === 'string'\n ? batches.get(value.batch_id)\n : null;\n if (\n !isJsonObject(value) ||\n value.schema_version !== 1 ||\n value.plan_sha256 !== plan.plan_sha256 ||\n value.operation_id !== plan.operation_id ||\n !batch ||\n value.target_mode !== 'owner_draft' ||\n value.dimension !== batch.dimension ||\n value.factor !== batch.factor ||\n !isJsonObject(value.actor) ||\n value.actor.user_id !== plan.account.user_id ||\n value.actor.email !== plan.account.email ||\n typeof value.started_at_utc !== 'string' ||\n typeof value.ended_at_utc !== 'string' ||\n value.row_count !== batch.summary.rows ||\n value.exchange_count !== batch.summary.exchanges ||\n value.result !== 'success' ||\n typeof value.batch_request_sha256 !== 'string' ||\n !/^[a-f0-9]{64}$/u.test(value.batch_request_sha256) ||\n typeof value.idempotent_replay !== 'boolean' ||\n typeof value.summary_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.summary_audit_id) ||\n typeof value.plan_request_sha256 !== 'string' ||\n !/^[a-f0-9]{64}$/u.test(value.plan_request_sha256) ||\n typeof value.plan_summary_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.plan_summary_audit_id) ||\n value.error !== null\n ) {\n throw new CliError('Alias batch progress contains an invalid or foreign entry.', {\n code: 'DATASET_MAINTENANCE_ALIAS_PROGRESS_INVALID',\n exitCode: 1,\n details: value,\n });\n }\n return value as AliasBatchProgressEntry;\n });\n const successes = new Map<string, AliasBatchProgressEntry>();\n for (const entry of entries) {\n if (successes.has(entry.batch_id)) {\n throw new CliError('Alias batch progress contains duplicate success proof.', {\n code: 'DATASET_MAINTENANCE_ALIAS_PROGRESS_INVALID',\n exitCode: 1,\n details: { batch_id: entry.batch_id },\n });\n }\n successes.set(entry.batch_id, entry);\n }\n return { entries, successes };\n}\n\nfunction parseAliasPlanProgress(\n plan: DatasetMaintenancePlan,\n progressPath: string,\n): AliasPlanProgressState {\n const expectedBatches = orderedAliasBatches(plan);\n const entries = readJsonLinesIfPresent(progressPath).map((value) => {\n const batchProofs = isJsonObject(value) && Array.isArray(value.batches) ? value.batches : [];\n const validBatchProofs =\n batchProofs.length === expectedBatches.length &&\n batchProofs.every((proof, index) => {\n const batch = expectedBatches[index]!;\n return Boolean(\n isJsonObject(proof) &&\n proof.batch_id === batch.batch_id &&\n proof.dimension === batch.dimension &&\n typeof proof.batch_request_sha256 === 'string' &&\n /^[a-f0-9]{64}$/u.test(proof.batch_request_sha256) &&\n typeof proof.summary_audit_id === 'string' &&\n POSITIVE_INTEGER_TEXT.test(proof.summary_audit_id),\n );\n });\n const batchRequestHashes = batchProofs\n .filter(isJsonObject)\n .map((proof) => proof.batch_request_sha256);\n const batchSummaryAuditIds = batchProofs\n .filter(isJsonObject)\n .map((proof) => proof.summary_audit_id);\n if (\n !isJsonObject(value) ||\n value.schema_version !== 1 ||\n value.plan_sha256 !== plan.plan_sha256 ||\n value.operation_id !== plan.operation_id ||\n value.target_mode !== 'owner_draft' ||\n !isJsonObject(value.actor) ||\n value.actor.user_id !== plan.account.user_id ||\n value.actor.email !== plan.account.email ||\n typeof value.started_at_utc !== 'string' ||\n typeof value.ended_at_utc !== 'string' ||\n value.batch_count !== 2 ||\n value.row_count !== 52 ||\n value.exchange_count !== 59 ||\n !['success', 'failed'].includes(String(value.result)) ||\n (value.result === 'success' &&\n (typeof value.plan_request_sha256 !== 'string' ||\n !/^[a-f0-9]{64}$/u.test(value.plan_request_sha256) ||\n typeof value.idempotent_replay !== 'boolean' ||\n typeof value.summary_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.summary_audit_id) ||\n !validBatchProofs ||\n new Set(batchRequestHashes).size !== 2 ||\n new Set(batchSummaryAuditIds).size !== 2 ||\n batchSummaryAuditIds.includes(value.summary_audit_id) ||\n value.error !== null)) ||\n (value.result === 'failed' &&\n (value.plan_request_sha256 !== null ||\n value.idempotent_replay !== null ||\n value.summary_audit_id !== null ||\n batchProofs.length !== 0 ||\n typeof value.error !== 'string'))\n ) {\n throw new CliError('Alias plan progress contains an invalid or foreign entry.', {\n code: 'DATASET_MAINTENANCE_ALIAS_PLAN_PROGRESS_INVALID',\n exitCode: 1,\n details: value,\n });\n }\n return value as AliasPlanProgressEntry;\n });\n let success: AliasPlanProgressEntry | null = null;\n let latestFailure: AliasPlanProgressEntry | null = null;\n for (const entry of entries) {\n if (entry.result === 'success') {\n if (success) {\n throw new CliError('Alias plan progress contains duplicate success proof.', {\n code: 'DATASET_MAINTENANCE_ALIAS_PLAN_PROGRESS_INVALID',\n exitCode: 1,\n });\n }\n success = entry;\n latestFailure = null;\n } else if (!success) {\n latestFailure = entry;\n }\n }\n return { entries, success, latestFailure };\n}\n\nfunction finalProjectedRows(options: {\n rows: DatasetMaintenanceRemoteRow[];\n plan: DatasetMaintenancePlan;\n planDir: string;\n}): DatasetMaintenanceRemoteRow[] {\n const projected = new Map(options.rows.map((row) => [maintenanceRowKey(row), { ...row }]));\n for (const action of options.plan.actions.filter((entry) =>\n ['save_draft', 'update_json_ordered'].includes(entry.action),\n )) {\n const row = projected.get(maintenanceRowKey(action));\n if (row) {\n projected.set(maintenanceRowKey(action), {\n ...row,\n json_ordered: loadDesiredPayload(options.planDir, action),\n });\n }\n }\n for (const action of options.plan.actions.filter((entry) => entry.action === 'delete')) {\n projected.delete(maintenanceRowKey(action));\n }\n return [...projected.values()].sort((left, right) =>\n maintenanceRowKey(left).localeCompare(maintenanceRowKey(right)),\n );\n}\n\nfunction assertApplyPreconditions(options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n currentRows: DatasetMaintenanceRemoteRow[];\n progress: ProgressState;\n aliasPlanProgress?: AliasPlanProgressState;\n}): void {\n const current = new Map(options.currentRows.map((row) => [maintenanceRowKey(row), row]));\n const aliasBatchStates = new Map<string, 'before' | 'desired'>();\n for (const batch of options.plan.alias_batches ?? []) {\n const states = batch.action_ids.map((actionId) => {\n const action = options.plan.actions.find((entry) => entry.action_id === actionId)!;\n const row = current.get(maintenanceRowKey(action));\n const snapshot = row ? snapshotRemoteRow(row) : null;\n if (\n row?.state_code === 0 &&\n row.user_id === action.expected_user_id &&\n snapshot?.row_sha256 === action.before?.row_sha256\n ) {\n return 'before' as const;\n }\n if (\n row?.state_code === 0 &&\n row.user_id === action.expected_user_id &&\n snapshot?.payload_sha256 === action.desired_payload?.sha256 &&\n row.model_id === action.before?.model_id &&\n row.rule_verification === action.before?.rule_verification\n ) {\n return 'desired' as const;\n }\n return 'invalid' as const;\n });\n const unique = new Set(states);\n if (unique.size !== 1 || unique.has('invalid')) {\n throw new CliError(`Atomic alias batch row state drifted: ${batch.batch_id}`, {\n code: 'DATASET_MAINTENANCE_ALIAS_BATCH_DRIFT',\n exitCode: 1,\n details: { batch_id: batch.batch_id, states },\n });\n }\n aliasBatchStates.set(batch.batch_id, states[0] as 'before' | 'desired');\n }\n if (aliasBatchStates.size) {\n const planStates = new Set(aliasBatchStates.values());\n if (\n planStates.size !== 1 ||\n (Boolean(options.aliasPlanProgress?.success) && !planStates.has('desired'))\n ) {\n throw new CliError('Atomic alias plan rows are split across dimension states.', {\n code: 'DATASET_MAINTENANCE_ALIAS_PLAN_DRIFT',\n exitCode: 1,\n details: { batches: Object.fromEntries(aliasBatchStates) },\n });\n }\n }\n const baselineKeys = new Set([\n ...options.plan.protected_rows.map(maintenanceRowKey),\n ...options.plan.actions.filter((action) => action.before).map(maintenanceRowKey),\n ]);\n for (const row of options.currentRows) {\n if (!baselineKeys.has(maintenanceRowKey(row))) {\n throw new CliError(`Unexpected current-account row appeared after planning: ${row.id}`, {\n code: 'DATASET_MAINTENANCE_PREFLIGHT_DRIFT',\n exitCode: 1,\n details: { table: row.table, id: row.id, version: row.version },\n });\n }\n }\n for (const protectedRow of options.plan.protected_rows) {\n const currentRow = current.get(maintenanceRowKey(protectedRow));\n if (!currentRow || snapshotRemoteRow(currentRow).row_sha256 !== protectedRow.row_sha256) {\n throw new CliError(`Protected row drifted after planning: ${protectedRow.id}`, {\n code: 'DATASET_MAINTENANCE_PROTECTED_ROW_DRIFT',\n exitCode: 1,\n details: protectedRow,\n });\n }\n }\n for (const action of options.plan.actions) {\n if (!action.before) {\n throw new CliError(`Ready plan action lacks before snapshot: ${action.action_id}`, {\n code: 'DATASET_MAINTENANCE_PLAN_INVALID',\n exitCode: 2,\n });\n }\n const currentRow = current.get(maintenanceRowKey(action));\n const alreadySucceeded = options.progress.successes.has(action.action_id);\n if (alreadySucceeded && action.action === 'delete') {\n if (currentRow) {\n throw new CliError(`Previously deleted row is visible again: ${action.action_id}`, {\n code: 'DATASET_MAINTENANCE_RESUME_DRIFT',\n exitCode: 1,\n });\n }\n continue;\n }\n if (!currentRow || currentRow.user_id !== action.expected_user_id) {\n throw new CliError(`Action row is missing, non-draft, or not owned: ${action.action_id}`, {\n code: 'DATASET_MAINTENANCE_ACTION_ROW_DRIFT',\n exitCode: 1,\n });\n }\n const currentSnapshot = snapshotRemoteRow(currentRow);\n if (action.action === 'update_json_ordered') {\n aliasBatchStates.get(action.batch_id!)!;\n continue;\n }\n if (alreadySucceeded) {\n const expectedPayloadSha256 = sha256Json(loadDesiredPayload(options.planDir, action));\n if (\n currentRow.state_code !== 0 ||\n currentSnapshot.payload_sha256 !== expectedPayloadSha256 ||\n currentRow.model_id !== action.before.model_id ||\n currentRow.rule_verification !== action.before.rule_verification\n ) {\n throw new CliError(`Previously saved row payload drifted: ${action.action_id}`, {\n code: 'DATASET_MAINTENANCE_RESUME_DRIFT',\n exitCode: 1,\n });\n }\n } else if (\n currentRow.state_code !== 0 ||\n currentSnapshot.row_sha256 !== action.before.row_sha256\n ) {\n throw new CliError(`Pending action row drifted after planning: ${action.action_id}`, {\n code: 'DATASET_MAINTENANCE_ACTION_ROW_DRIFT',\n exitCode: 1,\n });\n }\n }\n const projected = finalProjectedRows({\n rows: options.currentRows,\n plan: options.plan,\n planDir: options.planDir,\n });\n const projectedReferenceSha256 = sha256Json(maintenanceProjectedReferenceFingerprint(projected));\n if (projectedReferenceSha256 !== options.plan.projected_reference_sha256) {\n throw new CliError('Projected reference closure drifted after planning.', {\n code: 'DATASET_MAINTENANCE_REFERENCE_PREFLIGHT_DRIFT',\n exitCode: 1,\n details: {\n expected: options.plan.projected_reference_sha256,\n actual: projectedReferenceSha256,\n },\n });\n }\n}\n\nfunction validateApprovalRecord(options: {\n path: string;\n plan: DatasetMaintenancePlan;\n context: DatasetMaintenanceRemoteContext;\n}): void {\n if (!existsSync(options.path)) {\n return;\n }\n const record = readJsonFile(options.path, 'Maintenance approval record');\n if (\n !isJsonObject(record) ||\n record.plan_sha256 !== options.plan.plan_sha256 ||\n record.target_mode !== options.plan.target_mode ||\n !isJsonObject(record.account) ||\n record.account.user_id !== options.context.account.user_id ||\n record.account.email !== options.context.account.email\n ) {\n throw new CliError('Existing approval record does not match this plan and actor.', {\n code: 'DATASET_MAINTENANCE_APPROVAL_RECORD_MISMATCH',\n exitCode: 1,\n });\n }\n}\n\nasync function assertAliasSupportSnapshots(options: {\n plan: DatasetMaintenancePlan;\n context: DatasetMaintenanceRemoteContext;\n}): Promise<void> {\n if (options.plan.target_mode !== 'owner_draft') {\n throw new CliError('Alias apply requires target_mode=owner_draft.', {\n code: 'DATASET_MAINTENANCE_TARGET_MODE_INVALID',\n exitCode: 2,\n });\n }\n for (const batch of options.plan.alias_batches!) {\n const snapshots = [\n batch.target_snapshots.unitgroup!,\n batch.target_snapshots.flowproperty!,\n batch.target_snapshots.source_unitgroup!,\n ];\n for (const snapshot of snapshots) {\n const exact = await fetchMaintenanceExactRows({\n context: options.context,\n table: snapshot.table,\n id: snapshot.id,\n version: snapshot.version,\n });\n const current =\n exact.rows.length === 1 && exact.rows[0] ? snapshotRemoteRow(exact.rows[0]) : null;\n if (\n !current ||\n current.user_id !== options.plan.account.user_id ||\n current.state_code !== 0 ||\n current.row_sha256 !== snapshot.row_sha256\n ) {\n throw new CliError(`Alias support row drifted for batch ${batch.batch_id}.`, {\n code: 'DATASET_MAINTENANCE_ALIAS_SUPPORT_DRIFT',\n exitCode: 1,\n details: { table: snapshot.table, id: snapshot.id, version: snapshot.version },\n });\n }\n }\n }\n}\n\nfunction buildAliasBatchRequest(options: {\n plan: DatasetMaintenancePlan;\n batch: DatasetMaintenanceAliasBatchPlan;\n planDir: string;\n}): JsonObject {\n if (options.plan.target_mode !== 'owner_draft') {\n throw new CliError('Alias batch request requires target_mode=owner_draft.', {\n code: 'DATASET_MAINTENANCE_TARGET_MODE_INVALID',\n exitCode: 2,\n });\n }\n const targetSnapshot = (\n snapshot: NonNullable<DatasetMaintenanceAliasBatchPlan['target_snapshots']['unitgroup']>,\n ): JsonObject => {\n return {\n id: snapshot.id,\n version: snapshot.version,\n expected_modified_at: snapshot.modified_at!,\n expected_json_ordered: snapshot.json_ordered!,\n };\n };\n const actions = options.batch.action_ids.map((actionId) => {\n const action = options.plan.actions.find((entry) => entry.action_id === actionId)!;\n return {\n action_id: action.action_id,\n action: 'update_json_ordered',\n table: action.table,\n id: action.id,\n version: action.version,\n expected_state_code: 0,\n expected_modified_at: action.before!.modified_at!,\n expected_json_ordered: action.before!.json_ordered!,\n desired_json_ordered: loadDesiredPayload(options.planDir, action),\n mutation: action.alias_mutation!,\n };\n });\n return {\n schema_version: 'dataset-alias-batch.v1',\n target_visibility: 'owner_draft',\n plan_sha256: options.plan.plan_sha256,\n operation_id: options.plan.operation_id,\n batch_id: options.batch.batch_id,\n dimension: options.batch.dimension,\n factor: options.batch.factor,\n target: {\n flowproperty: targetSnapshot(options.batch.target_snapshots.flowproperty!),\n unitgroup: targetSnapshot(options.batch.target_snapshots.unitgroup!),\n source_unitgroup: targetSnapshot(options.batch.target_snapshots.source_unitgroup!),\n },\n actions,\n };\n}\n\nfunction orderedAliasBatches(plan: DatasetMaintenancePlan): DatasetMaintenanceAliasBatchPlan[] {\n const time = plan.alias_batches!.find((batch) => batch.dimension === 'time');\n const lengthTime = plan.alias_batches!.find((batch) => batch.dimension === 'length_time');\n return [time, lengthTime].filter(\n (batch): batch is DatasetMaintenanceAliasBatchPlan => batch !== undefined,\n );\n}\n\nfunction buildAliasPlanRequest(options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n}): JsonObject {\n if (options.plan.target_mode !== 'owner_draft') {\n throw new CliError('Alias plan request requires target_mode=owner_draft.', {\n code: 'DATASET_MAINTENANCE_TARGET_MODE_INVALID',\n exitCode: 2,\n });\n }\n const batches = orderedAliasBatches(options.plan);\n if (\n batches.length !== 2 ||\n batches[0]?.dimension !== 'time' ||\n batches[1]?.dimension !== 'length_time'\n ) {\n throw new CliError('Alias plan request requires time followed by length_time exactly once.', {\n code: 'DATASET_MAINTENANCE_ALIAS_PLAN_INVALID',\n exitCode: 2,\n });\n }\n return {\n schema_version: 'dataset-alias-plan.v1',\n plan_sha256: options.plan.plan_sha256,\n operation_id: options.plan.operation_id,\n target_visibility: 'owner_draft',\n batches: batches.map((batch) =>\n buildAliasBatchRequest({ plan: options.plan, batch, planDir: options.planDir }),\n ),\n };\n}\n\nfunction validateAliasRpcResult(\n value: JsonObject,\n batch: DatasetMaintenanceAliasBatchPlan,\n plan: DatasetMaintenancePlan,\n): AliasRpcResult {\n const audit = Array.isArray(value.audit) ? value.audit : [];\n const proofs = audit.filter(isJsonObject).map((entry) => ({\n action_id: entry.action_id,\n table: entry.table,\n id: entry.id,\n version: entry.version,\n audit_id: entry.audit_id,\n }));\n const proofByAction = new Map(\n proofs\n .filter(\n (entry): entry is AliasRpcAuditProof =>\n typeof entry.action_id === 'string' &&\n typeof entry.table === 'string' &&\n typeof entry.id === 'string' &&\n typeof entry.version === 'string' &&\n typeof entry.audit_id === 'string' &&\n POSITIVE_INTEGER_TEXT.test(entry.audit_id),\n )\n .map((entry) => [entry.action_id, entry]),\n );\n const actionsById = new Map(plan.actions.map((action) => [action.action_id, action]));\n const validProofs =\n proofByAction.size === batch.action_ids.length &&\n batch.action_ids.every((actionId) => {\n const action = actionsById.get(actionId);\n const proof = proofByAction.get(actionId);\n return Boolean(\n action &&\n proof &&\n proof.table === action.table &&\n proof.id === action.id &&\n proof.version === action.version,\n );\n });\n if (\n plan.target_mode !== 'owner_draft' ||\n value.ok !== true ||\n value.command !== 'cmd_dataset_alias_batch_guarded' ||\n value.target_visibility !== 'owner_draft' ||\n value.dimension !== batch.dimension ||\n value.batch_id !== batch.batch_id ||\n value.row_count !== batch.summary.rows ||\n value.exchange_count !== batch.summary.exchanges ||\n typeof value.summary_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.summary_audit_id) ||\n typeof value.batch_request_sha256 !== 'string' ||\n !/^[a-f0-9]{64}$/u.test(value.batch_request_sha256) ||\n typeof value.idempotent_replay !== 'boolean' ||\n audit.length !== batch.action_ids.length ||\n !validProofs\n ) {\n throw new CliError(`Alias batch RPC returned invalid proof for ${batch.batch_id}.`, {\n code: 'DATASET_MAINTENANCE_ALIAS_RPC_PROOF_INVALID',\n exitCode: 1,\n details: value,\n });\n }\n return {\n target_visibility: 'owner_draft',\n batch_request_sha256: value.batch_request_sha256,\n idempotent_replay: value.idempotent_replay,\n exchange_count: value.exchange_count,\n summary_audit_id: value.summary_audit_id,\n audits: proofByAction,\n raw: value,\n };\n}\n\nfunction validateAliasPlanRpcResult(\n value: JsonObject,\n plan: DatasetMaintenancePlan,\n): AliasPlanRpcResult {\n const batches = orderedAliasBatches(plan);\n const rawBatchResults = Array.isArray(value.batches) ? value.batches : [];\n const parsedBatchResults = rawBatchResults.map((entry, index) =>\n isJsonObject(entry) && batches[index]\n ? validateAliasRpcResult(entry, batches[index], plan)\n : null,\n );\n const validBatchResults = parsedBatchResults.every(\n (entry): entry is AliasRpcResult => entry !== null,\n );\n const batchSummaryAuditIds = validBatchResults\n ? parsedBatchResults.map((entry) => entry.summary_audit_id)\n : [];\n const rowAuditIds = validBatchResults\n ? parsedBatchResults.flatMap((entry) =>\n [...entry.audits.values()].map((proof) => proof.audit_id),\n )\n : [];\n if (\n plan.target_mode !== 'owner_draft' ||\n value.ok !== true ||\n value.command !== 'cmd_dataset_alias_plan_guarded' ||\n value.schema_version !== 'dataset-alias-plan.v1' ||\n value.plan_sha256 !== plan.plan_sha256 ||\n value.operation_id !== plan.operation_id ||\n value.target_visibility !== 'owner_draft' ||\n typeof value.plan_request_sha256 !== 'string' ||\n !/^[a-f0-9]{64}$/u.test(value.plan_request_sha256) ||\n value.batch_count !== 2 ||\n value.row_count !== 52 ||\n value.exchange_count !== 59 ||\n typeof value.summary_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.summary_audit_id) ||\n typeof value.idempotent_replay !== 'boolean' ||\n rawBatchResults.length !== 2 ||\n !validBatchResults ||\n parsedBatchResults.some(\n (entry, index) =>\n entry.idempotent_replay !== value.idempotent_replay ||\n entry.exchange_count !== batches[index]!.summary.exchanges,\n ) ||\n new Set(batchSummaryAuditIds).size !== 2 ||\n new Set(rowAuditIds).size !== 52 ||\n batchSummaryAuditIds.includes(value.summary_audit_id) ||\n rowAuditIds.includes(value.summary_audit_id) ||\n rowAuditIds.some((auditId) => batchSummaryAuditIds.includes(auditId))\n ) {\n throw new CliError('Alias plan RPC returned invalid whole-plan proof.', {\n code: 'DATASET_MAINTENANCE_ALIAS_PLAN_RPC_PROOF_INVALID',\n exitCode: 1,\n details: value,\n });\n }\n return {\n target_visibility: 'owner_draft',\n plan_request_sha256: value.plan_request_sha256,\n idempotent_replay: value.idempotent_replay,\n batch_count: 2,\n row_count: 52,\n exchange_count: 59,\n summary_audit_id: value.summary_audit_id,\n batches: new Map(\n batches.map((batch, index) => [batch.dimension, parsedBatchResults[index]!] as const),\n ),\n raw: value,\n };\n}\n\nasync function executeAliasPlan(options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n context: DatasetMaintenanceRemoteContext;\n}): Promise<{\n rpc: AliasPlanRpcResult;\n after_by_action: Map<string, string>;\n}> {\n const request = buildAliasPlanRequest(options);\n const remoteResult = await applyMaintenanceAliasPlan({\n context: options.context,\n plan: request,\n });\n const rpc = validateAliasPlanRpcResult(remoteResult, options.plan);\n const afterByAction = new Map<string, string>();\n for (const action of options.plan.actions) {\n const exact = await fetchMaintenanceExactRows({\n context: options.context,\n table: action.table,\n id: action.id,\n version: action.version,\n });\n const row = exact.rows.length === 1 ? exact.rows[0] : null;\n const snapshot = row ? snapshotRemoteRow(row) : null;\n if (\n !row ||\n row.user_id !== action.expected_user_id ||\n row.state_code !== 0 ||\n snapshot?.payload_sha256 !== action.desired_payload?.sha256 ||\n row.model_id !== action.before?.model_id ||\n row.rule_verification !== action.before?.rule_verification\n ) {\n throw new CliError(`Alias plan readback failed for action ${action.action_id}.`, {\n code: 'DATASET_MAINTENANCE_ALIAS_READBACK_FAILED',\n exitCode: 1,\n });\n }\n afterByAction.set(action.action_id, snapshot!.row_sha256);\n }\n await assertAliasSupportSnapshots({ plan: options.plan, context: options.context });\n return { rpc, after_by_action: afterByAction };\n}\n\nfunction aliasExchangeProgressKey(value: {\n batch_id: string;\n action_id: string;\n exchange_index: number;\n data_set_internal_id: string;\n}): string {\n return `${value.batch_id}\\u0000${value.action_id}\\u0000${value.exchange_index}\\u0000${value.data_set_internal_id}`;\n}\n\nfunction aliasBatchDerivedLogsComplete(options: {\n plan: DatasetMaintenancePlan;\n batch: DatasetMaintenanceAliasBatchPlan;\n planSuccess: AliasPlanProgressEntry;\n batchSuccess: AliasBatchProgressEntry;\n progress: ProgressState;\n exchangeProgressPath: string;\n}): boolean {\n const planBatchProof = options.planSuccess.batches.find(\n (proof) => proof.batch_id === options.batch.batch_id,\n );\n if (\n !planBatchProof ||\n planBatchProof.dimension !== options.batch.dimension ||\n planBatchProof.batch_request_sha256 !== options.batchSuccess.batch_request_sha256 ||\n planBatchProof.summary_audit_id !== options.batchSuccess.summary_audit_id ||\n options.batchSuccess.plan_request_sha256 !== options.planSuccess.plan_request_sha256 ||\n options.batchSuccess.plan_summary_audit_id !== options.planSuccess.summary_audit_id ||\n !options.batch.action_ids.every(\n (actionId) =>\n options.progress.successes.get(actionId)?.batch_request_sha256 ===\n options.batchSuccess.batch_request_sha256 &&\n options.progress.successes.get(actionId)?.summary_audit_id ===\n options.batchSuccess.summary_audit_id &&\n options.progress.successes.get(actionId)?.plan_request_sha256 ===\n options.planSuccess.plan_request_sha256 &&\n options.progress.successes.get(actionId)?.plan_summary_audit_id ===\n options.planSuccess.summary_audit_id,\n )\n ) {\n return false;\n }\n const expected = new Map(\n options.batch.exchange_rewrites.map((rewrite) => [\n aliasExchangeProgressKey({ batch_id: options.batch.batch_id, ...rewrite }),\n rewrite,\n ]),\n );\n const exchangeKeys = new Set<string>();\n for (const value of readJsonLinesIfPresent(options.exchangeProgressPath)) {\n if (!isJsonObject(value) || value.batch_id !== options.batch.batch_id) continue;\n const key =\n typeof value.action_id === 'string' &&\n typeof value.exchange_index === 'number' &&\n typeof value.data_set_internal_id === 'string'\n ? aliasExchangeProgressKey({\n batch_id: options.batch.batch_id,\n action_id: value.action_id,\n exchange_index: value.exchange_index,\n data_set_internal_id: value.data_set_internal_id,\n })\n : '';\n const rewrite = expected.get(key);\n const rowProof = rewrite ? options.progress.successes.get(rewrite.action_id) : null;\n if (\n !rewrite ||\n !rowProof ||\n value.schema_version !== 1 ||\n value.plan_sha256 !== options.plan.plan_sha256 ||\n value.operation_id !== options.plan.operation_id ||\n value.target_mode !== 'owner_draft' ||\n value.batch_request_sha256 !== options.batchSuccess.batch_request_sha256 ||\n value.batch_request_sha256 !== rowProof.batch_request_sha256 ||\n value.summary_audit_id !== options.batchSuccess.summary_audit_id ||\n value.summary_audit_id !== rowProof.summary_audit_id ||\n value.plan_request_sha256 !== options.planSuccess.plan_request_sha256 ||\n value.plan_request_sha256 !== rowProof.plan_request_sha256 ||\n value.plan_summary_audit_id !== options.planSuccess.summary_audit_id ||\n value.plan_summary_audit_id !== rowProof.plan_summary_audit_id ||\n value.factor !== options.batch.factor ||\n value.result !== 'success' ||\n !isJsonObject(value.actor) ||\n value.actor.user_id !== options.plan.account.user_id ||\n value.actor.email !== options.plan.account.email ||\n typeof value.logged_at_utc !== 'string' ||\n typeof value.database_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.database_audit_id) ||\n value.database_audit_id !== rowProof.database_audit_id ||\n typeof value.summary_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.summary_audit_id) ||\n sha256Json({\n action_id: value.action_id,\n process_id: value.process_id,\n process_version: value.process_version,\n exchange_index: value.exchange_index,\n data_set_internal_id: value.data_set_internal_id,\n flow_id: value.flow_id,\n flow_version: value.flow_version,\n direction: value.direction,\n before_exchange_sha256: value.before_exchange_sha256,\n before_mean_amount: value.before_mean_amount,\n before_resulting_amount: value.before_resulting_amount,\n after_mean_amount: value.after_mean_amount,\n after_resulting_amount: value.after_resulting_amount,\n after_exchange_sha256: value.after_exchange_sha256,\n }) !== sha256Json(rewrite) ||\n exchangeKeys.has(key)\n ) {\n return false;\n }\n exchangeKeys.add(key);\n }\n return options.batch.exchange_rewrites.every((rewrite) =>\n exchangeKeys.has(aliasExchangeProgressKey({ batch_id: options.batch.batch_id, ...rewrite })),\n );\n}\n\nfunction aliasPlanDerivedLogsComplete(options: {\n plan: DatasetMaintenancePlan;\n planSuccess: AliasPlanProgressEntry;\n batchProgress: AliasBatchProgressState;\n progress: ProgressState;\n exchangeProgressPath: string;\n}): boolean {\n return orderedAliasBatches(options.plan).every((batch) => {\n const batchSuccess = options.batchProgress.successes.get(batch.batch_id);\n return Boolean(\n batchSuccess &&\n aliasBatchDerivedLogsComplete({\n plan: options.plan,\n batch,\n planSuccess: options.planSuccess,\n batchSuccess,\n progress: options.progress,\n exchangeProgressPath: options.exchangeProgressPath,\n }),\n );\n });\n}\n\nfunction appendAliasSuccessLogs(options: {\n plan: DatasetMaintenancePlan;\n batch: DatasetMaintenanceAliasBatchPlan;\n execution: Awaited<ReturnType<typeof executeAliasPlan>>;\n progress: ProgressState;\n progressPath: string;\n exchangeProgressPath: string;\n context: DatasetMaintenanceRemoteContext;\n startedAt: string;\n endedAt: string;\n}): void {\n const batchRpc = options.execution.rpc.batches.get(options.batch.dimension)!;\n for (const actionId of options.batch.action_ids) {\n const action = options.plan.actions.find((entry) => entry.action_id === actionId)!;\n const proof = batchRpc.audits.get(actionId)!;\n const existingSuccess = options.progress.successes.get(actionId);\n if (existingSuccess) {\n if (\n existingSuccess.target_mode !== 'owner_draft' ||\n existingSuccess.batch_id !== options.batch.batch_id ||\n existingSuccess.batch_request_sha256 !== batchRpc.batch_request_sha256 ||\n existingSuccess.database_audit_id !== proof.audit_id ||\n existingSuccess.summary_audit_id !== batchRpc.summary_audit_id ||\n existingSuccess.plan_request_sha256 !== options.execution.rpc.plan_request_sha256 ||\n existingSuccess.plan_summary_audit_id !== options.execution.rpc.summary_audit_id ||\n existingSuccess.after_sha256 !== options.execution.after_by_action.get(actionId)\n ) {\n throw new CliError('Existing alias row progress does not match replay audit proof.', {\n code: 'DATASET_MAINTENANCE_ALIAS_PROGRESS_INVALID',\n exitCode: 1,\n details: { action_id: actionId },\n });\n }\n continue;\n }\n const entry: DatasetMaintenanceProgressEntry = {\n schema_version: 1,\n plan_sha256: options.plan.plan_sha256,\n operation_id: options.plan.operation_id,\n action_id: action.action_id,\n action: action.action,\n table: action.table,\n id: action.id,\n version: action.version,\n reason_code: action.reason_code,\n audit_context: {\n plan_sha256: options.plan.plan_sha256,\n operation_id: options.plan.operation_id,\n action_id: action.action_id,\n reason_code: action.reason_code,\n source: 'tiangong-lca dataset maintenance apply',\n target_mode: 'owner_draft',\n },\n actor: { user_id: options.context.account.user_id, email: options.context.account.email },\n started_at_utc: options.startedAt,\n ended_at_utc: options.endedAt,\n before_sha256: action.before!.row_sha256,\n after_sha256: options.execution.after_by_action.get(actionId)!,\n remote_result_sha256: sha256Json({\n plan_response: options.execution.rpc.raw,\n batch_response: batchRpc.raw,\n audit: proof,\n }),\n result: 'success',\n error: null,\n rollback: action.rollback,\n batch_id: options.batch.batch_id,\n target_mode: 'owner_draft',\n batch_request_sha256: batchRpc.batch_request_sha256,\n database_audit_id: proof.audit_id,\n summary_audit_id: batchRpc.summary_audit_id,\n plan_request_sha256: options.execution.rpc.plan_request_sha256,\n plan_summary_audit_id: options.execution.rpc.summary_audit_id,\n };\n appendStableJsonLine(options.progressPath, entry);\n options.progress.entries.push(entry);\n options.progress.successes.set(actionId, entry);\n options.progress.latestFailures.delete(actionId);\n }\n\n const existing = readJsonLinesIfPresent(options.exchangeProgressPath);\n const existingKeys = new Set<string>();\n const expectedRewrites = new Map(\n options.plan.alias_batches!.flatMap((batch) =>\n batch.exchange_rewrites.map(\n (rewrite) =>\n [\n aliasExchangeProgressKey({ batch_id: batch.batch_id, ...rewrite }),\n { batch, rewrite },\n ] as const,\n ),\n ),\n );\n for (const value of existing) {\n const key =\n isJsonObject(value) &&\n typeof value.batch_id === 'string' &&\n typeof value.action_id === 'string' &&\n typeof value.exchange_index === 'number' &&\n typeof value.data_set_internal_id === 'string'\n ? aliasExchangeProgressKey({\n batch_id: value.batch_id,\n action_id: value.action_id,\n exchange_index: value.exchange_index,\n data_set_internal_id: value.data_set_internal_id,\n })\n : '';\n const expected = expectedRewrites.get(key);\n const rowProof = expected ? options.progress.successes.get(expected.rewrite.action_id) : null;\n if (\n !isJsonObject(value) ||\n !expected ||\n !rowProof ||\n value.schema_version !== 1 ||\n value.plan_sha256 !== options.plan.plan_sha256 ||\n value.operation_id !== options.plan.operation_id ||\n value.target_mode !== 'owner_draft' ||\n value.factor !== expected.batch.factor ||\n value.result !== 'success' ||\n !isJsonObject(value.actor) ||\n value.actor.user_id !== options.plan.account.user_id ||\n value.actor.email !== options.plan.account.email ||\n typeof value.logged_at_utc !== 'string' ||\n typeof value.batch_request_sha256 !== 'string' ||\n !/^[a-f0-9]{64}$/u.test(value.batch_request_sha256) ||\n value.batch_request_sha256 !== rowProof.batch_request_sha256 ||\n typeof value.database_audit_id !== 'string' ||\n POSITIVE_INTEGER_TEXT.test(value.database_audit_id) === false ||\n value.database_audit_id !== rowProof.database_audit_id ||\n typeof value.summary_audit_id !== 'string' ||\n POSITIVE_INTEGER_TEXT.test(value.summary_audit_id) === false ||\n value.summary_audit_id !== rowProof.summary_audit_id ||\n typeof value.plan_request_sha256 !== 'string' ||\n !/^[a-f0-9]{64}$/u.test(value.plan_request_sha256) ||\n value.plan_request_sha256 !== rowProof.plan_request_sha256 ||\n typeof value.plan_summary_audit_id !== 'string' ||\n !POSITIVE_INTEGER_TEXT.test(value.plan_summary_audit_id) ||\n value.plan_summary_audit_id !== rowProof.plan_summary_audit_id ||\n sha256Json({\n action_id: value.action_id,\n process_id: value.process_id,\n process_version: value.process_version,\n exchange_index: value.exchange_index,\n data_set_internal_id: value.data_set_internal_id,\n flow_id: value.flow_id,\n flow_version: value.flow_version,\n direction: value.direction,\n before_exchange_sha256: value.before_exchange_sha256,\n before_mean_amount: value.before_mean_amount,\n before_resulting_amount: value.before_resulting_amount,\n after_mean_amount: value.after_mean_amount,\n after_resulting_amount: value.after_resulting_amount,\n after_exchange_sha256: value.after_exchange_sha256,\n }) !== sha256Json(expected.rewrite) ||\n existingKeys.has(key)\n ) {\n throw new CliError('Alias exchange progress contains an invalid or foreign entry.', {\n code: 'DATASET_MAINTENANCE_ALIAS_EXCHANGE_PROGRESS_INVALID',\n exitCode: 1,\n details: value,\n });\n }\n existingKeys.add(key);\n }\n for (const rewrite of options.batch.exchange_rewrites) {\n const key = aliasExchangeProgressKey({ batch_id: options.batch.batch_id, ...rewrite });\n if (existingKeys.has(key)) continue;\n const proof = batchRpc.audits.get(rewrite.action_id)!;\n appendStableJsonLine(options.exchangeProgressPath, {\n schema_version: 1,\n plan_sha256: options.plan.plan_sha256,\n operation_id: options.plan.operation_id,\n batch_id: options.batch.batch_id,\n target_mode: 'owner_draft',\n batch_request_sha256: batchRpc.batch_request_sha256,\n factor: options.batch.factor,\n actor: { user_id: options.context.account.user_id, email: options.context.account.email },\n logged_at_utc: options.endedAt,\n database_audit_id: proof.audit_id,\n summary_audit_id: batchRpc.summary_audit_id,\n plan_request_sha256: options.execution.rpc.plan_request_sha256,\n plan_summary_audit_id: options.execution.rpc.summary_audit_id,\n result: 'success',\n ...rewrite,\n });\n existingKeys.add(key);\n }\n}\n\nfunction appendAliasProofProgress(options: {\n plan: DatasetMaintenancePlan;\n execution: Awaited<ReturnType<typeof executeAliasPlan>>;\n planProgress: AliasPlanProgressState;\n batchProgress: AliasBatchProgressState;\n planProgressPath: string;\n batchProgressPath: string;\n context: DatasetMaintenanceRemoteContext;\n startedAt: string;\n endedAt: string;\n}): AliasPlanProgressEntry {\n const batchProofs: AliasPlanBatchProof[] = [];\n for (const batch of orderedAliasBatches(options.plan)) {\n const rpc = options.execution.rpc.batches.get(batch.dimension)!;\n const existing = options.batchProgress.successes.get(batch.batch_id);\n if (\n existing &&\n (existing.batch_request_sha256 !== rpc.batch_request_sha256 ||\n existing.summary_audit_id !== rpc.summary_audit_id ||\n existing.plan_request_sha256 !== options.execution.rpc.plan_request_sha256 ||\n existing.plan_summary_audit_id !== options.execution.rpc.summary_audit_id)\n ) {\n throw new CliError('Existing alias batch proof does not match whole-plan replay.', {\n code: 'DATASET_MAINTENANCE_ALIAS_PROGRESS_INVALID',\n exitCode: 1,\n details: { batch_id: batch.batch_id },\n });\n }\n const proof: AliasPlanBatchProof = {\n batch_id: batch.batch_id,\n dimension: batch.dimension,\n batch_request_sha256: rpc.batch_request_sha256,\n summary_audit_id: rpc.summary_audit_id,\n };\n batchProofs.push(proof);\n if (!existing) {\n const entry: AliasBatchProgressEntry = {\n schema_version: 1,\n plan_sha256: options.plan.plan_sha256,\n operation_id: options.plan.operation_id,\n batch_id: batch.batch_id,\n target_mode: 'owner_draft',\n dimension: batch.dimension,\n factor: batch.factor,\n actor: {\n user_id: options.context.account.user_id,\n email: options.context.account.email,\n },\n started_at_utc: options.startedAt,\n ended_at_utc: options.endedAt,\n batch_request_sha256: rpc.batch_request_sha256,\n idempotent_replay: rpc.idempotent_replay,\n row_count: batch.summary.rows,\n exchange_count: rpc.exchange_count,\n summary_audit_id: rpc.summary_audit_id,\n plan_request_sha256: options.execution.rpc.plan_request_sha256,\n plan_summary_audit_id: options.execution.rpc.summary_audit_id,\n result: 'success',\n error: null,\n };\n appendStableJsonLine(options.batchProgressPath, entry);\n options.batchProgress.entries.push(entry);\n options.batchProgress.successes.set(batch.batch_id, entry);\n }\n }\n const entry: AliasPlanProgressEntry = {\n schema_version: 1,\n plan_sha256: options.plan.plan_sha256,\n operation_id: options.plan.operation_id,\n target_mode: 'owner_draft',\n actor: { user_id: options.context.account.user_id, email: options.context.account.email },\n started_at_utc: options.startedAt,\n ended_at_utc: options.endedAt,\n plan_request_sha256: options.execution.rpc.plan_request_sha256,\n idempotent_replay: options.execution.rpc.idempotent_replay,\n batch_count: 2,\n row_count: 52,\n exchange_count: 59,\n summary_audit_id: options.execution.rpc.summary_audit_id,\n batches: batchProofs,\n result: 'success',\n error: null,\n };\n if (options.planProgress.success) {\n if (\n options.planProgress.success.plan_request_sha256 !== entry.plan_request_sha256 ||\n options.planProgress.success.summary_audit_id !== entry.summary_audit_id ||\n sha256Json(options.planProgress.success.batches) !== sha256Json(entry.batches)\n ) {\n throw new CliError('Existing alias plan proof does not match whole-plan replay.', {\n code: 'DATASET_MAINTENANCE_ALIAS_PLAN_PROGRESS_INVALID',\n exitCode: 1,\n });\n }\n return options.planProgress.success;\n }\n appendStableJsonLine(options.planProgressPath, entry);\n options.planProgress.entries.push(entry);\n options.planProgress.success = entry;\n options.planProgress.latestFailure = null;\n return entry;\n}\n\nfunction appendAliasPlanFailure(options: {\n plan: DatasetMaintenancePlan;\n planProgress: AliasPlanProgressState;\n progressPath: string;\n context: DatasetMaintenanceRemoteContext;\n startedAt: string;\n endedAt: string;\n error: unknown;\n}): AliasPlanProgressEntry {\n const entry: AliasPlanProgressEntry = {\n schema_version: 1,\n plan_sha256: options.plan.plan_sha256,\n operation_id: options.plan.operation_id,\n target_mode: 'owner_draft',\n actor: { user_id: options.context.account.user_id, email: options.context.account.email },\n started_at_utc: options.startedAt,\n ended_at_utc: options.endedAt,\n plan_request_sha256: null,\n idempotent_replay: null,\n batch_count: 2,\n row_count: 52,\n exchange_count: 59,\n summary_audit_id: null,\n batches: [],\n result: 'failed',\n error: errorMessage(options.error),\n };\n appendStableJsonLine(options.progressPath, entry);\n options.planProgress.entries.push(entry);\n if (!options.planProgress.success) {\n options.planProgress.latestFailure = entry;\n }\n return entry;\n}\n\nasync function executeAction(options: {\n action: DatasetMaintenancePlanAction;\n plan: DatasetMaintenancePlan;\n planDir: string;\n context: DatasetMaintenanceRemoteContext;\n}): Promise<{ afterSha256: string | null; remoteResultSha256: string }> {\n if (!options.action.before) {\n throw new CliError(`Action lacks a before snapshot: ${options.action.action_id}`, {\n code: 'DATASET_MAINTENANCE_PLAN_INVALID',\n exitCode: 2,\n });\n }\n const justInTime = await fetchMaintenanceExactRows({\n context: options.context,\n table: options.action.table,\n id: options.action.id,\n version: options.action.version,\n });\n const pendingRow = justInTime.rows.length === 1 ? justInTime.rows[0] : null;\n const pendingSnapshot = pendingRow ? snapshotRemoteRow(pendingRow) : null;\n const exactDraft = Boolean(\n pendingRow &&\n pendingRow.state_code === 0 &&\n pendingSnapshot?.row_sha256 === options.action.before.row_sha256,\n );\n if (!pendingRow || pendingRow.user_id !== options.action.expected_user_id || !exactDraft) {\n throw new CliError(`Action row drifted immediately before write: ${options.action.action_id}`, {\n code: 'DATASET_MAINTENANCE_ACTION_JUST_IN_TIME_DRIFT',\n exitCode: 1,\n });\n }\n const audit = {\n plan_sha256: options.plan.plan_sha256,\n operation_id: options.plan.operation_id,\n action_id: options.action.action_id,\n reason_code: options.action.reason_code,\n source: 'tiangong-lca dataset maintenance apply' as const,\n };\n if (options.action.action === 'save_draft') {\n const remoteResult = await saveDraftMaintenanceRow({\n context: options.context,\n table: options.action.table as DatasetMaintenanceMutableTable,\n id: options.action.id,\n version: options.action.version,\n payload: loadDesiredPayload(options.planDir, options.action),\n modelId: options.action.before?.model_id ?? null,\n ruleVerification: options.action.before?.rule_verification ?? null,\n audit,\n });\n const readback = await fetchMaintenanceExactRows({\n context: options.context,\n table: options.action.table,\n id: options.action.id,\n version: options.action.version,\n });\n const row = readback.rows[0];\n if (readback.rows.length !== 1 || !row) {\n throw new CliError(`save_draft readback failed for ${options.action.action_id}.`, {\n code: 'DATASET_MAINTENANCE_ACTION_READBACK_FAILED',\n exitCode: 1,\n });\n }\n const expectedPayload = options.action.desired_payload?.sha256;\n const readbackSnapshot = snapshotRemoteRow(row);\n if (\n readbackSnapshot.payload_sha256 !== expectedPayload ||\n row.user_id !== options.action.expected_user_id ||\n row.state_code !== 0\n ) {\n throw new CliError(`save_draft readback mismatch for ${options.action.action_id}.`, {\n code: 'DATASET_MAINTENANCE_ACTION_READBACK_FAILED',\n exitCode: 1,\n });\n }\n return {\n afterSha256: readbackSnapshot.row_sha256,\n remoteResultSha256: sha256Json(remoteResult),\n };\n }\n if (options.action.action === 'update_json_ordered') {\n throw new CliError('Atomic alias actions must execute through the whole-plan RPC.', {\n code: 'DATASET_MAINTENANCE_ALIAS_SEQUENTIAL_WRITE_FORBIDDEN',\n exitCode: 1,\n });\n }\n const remoteResult = await deleteMaintenanceRow({\n context: options.context,\n table: options.action.table as DatasetMaintenanceMutableTable,\n id: options.action.id,\n version: options.action.version,\n audit,\n });\n const readback = await fetchMaintenanceExactRows({\n context: options.context,\n table: options.action.table,\n id: options.action.id,\n version: options.action.version,\n });\n if (readback.rows.length !== 0) {\n throw new CliError(`delete readback failed for ${options.action.action_id}.`, {\n code: 'DATASET_MAINTENANCE_ACTION_READBACK_FAILED',\n exitCode: 1,\n });\n }\n return { afterSha256: null, remoteResultSha256: sha256Json(remoteResult) };\n}\n\nfunction nextAttemptPath(planDir: string): string {\n let attempt = 1;\n while (\n existsSync(path.join(planDir, `commit-report.attempt-${String(attempt).padStart(4, '0')}.json`))\n ) {\n attempt += 1;\n }\n return path.join(planDir, `commit-report.attempt-${String(attempt).padStart(4, '0')}.json`);\n}\n\nexport async function runDatasetMaintenanceApply(\n options: RunDatasetMaintenanceApplyOptions,\n): Promise<DatasetMaintenanceApplyReport> {\n if (!options.commit) {\n throw new CliError('Dataset maintenance apply requires commit=true.', {\n code: 'DATASET_MAINTENANCE_COMMIT_REQUIRED',\n exitCode: 2,\n });\n }\n const planPath = path.resolve(options.planPath);\n const planDir = path.dirname(planPath);\n const plan = parseMaintenancePlan(readJsonFile(planPath, 'Maintenance plan'));\n if (options.approvePlan !== plan.plan_sha256) {\n throw new CliError('approvePlan must exactly match the canonical maintenance plan hash.', {\n code: 'DATASET_MAINTENANCE_PLAN_APPROVAL_REQUIRED',\n exitCode: 2,\n });\n }\n if (plan.status !== 'ready' || plan.blockers.length > 0) {\n throw new CliError('Blocked maintenance plan cannot be applied.', {\n code: 'DATASET_MAINTENANCE_PLAN_BLOCKED',\n exitCode: 1,\n details: plan.blockers,\n });\n }\n if (\n plan.operation === 'redo-import' &&\n !plan.source_import_run_id &&\n plan.source_lineage === null\n ) {\n throw new CliError('redo-import apply requires frozen redo source/import lineage.', {\n code: 'DATASET_MAINTENANCE_REDO_NOT_READY',\n exitCode: 1,\n });\n }\n\n const progressPath = path.join(planDir, 'apply-progress.jsonl');\n const aliasPlanProgressPath = path.join(planDir, 'alias-plan-progress.jsonl');\n const aliasBatchProgressPath = path.join(planDir, 'alias-batch-progress.jsonl');\n const aliasExchangeProgressPath = path.join(planDir, 'alias-exchange-progress.jsonl');\n return withStateFileLock(\n progressPath,\n { reason: `dataset_maintenance_apply_${plan.operation_id}` },\n async () => {\n const context = await resolveMaintenanceRemoteContext({\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n now: options.now,\n });\n if (\n context.account.user_id !== plan.account.user_id ||\n context.account.email !== plan.account.email\n ) {\n throw new CliError('Current authenticated account does not match the maintenance plan.', {\n code: 'DATASET_MAINTENANCE_ACCOUNT_MISMATCH',\n exitCode: 1,\n });\n }\n if (options.confirm !== context.account.email) {\n throw new CliError('confirm must exactly match the current authenticated account email.', {\n code: 'DATASET_MAINTENANCE_CONFIRMATION_REQUIRED',\n exitCode: 2,\n });\n }\n const progress = parseProgress(plan, progressPath);\n let resumedSuccesses = progress.successes.size;\n const aliasPlanProgress: AliasPlanProgressState =\n plan.operation === 'merge-support-aliases'\n ? parseAliasPlanProgress(plan, aliasPlanProgressPath)\n : { entries: [], success: null, latestFailure: null };\n const aliasBatchProgress: AliasBatchProgressState =\n plan.operation === 'merge-support-aliases'\n ? parseAliasBatchProgress(plan, aliasBatchProgressPath)\n : { entries: [], successes: new Map() };\n const current = await fetchMaintenanceAccountRows({\n context,\n userId: plan.account.user_id,\n });\n assertApplyPreconditions({\n plan,\n planDir,\n currentRows: current.rows,\n progress,\n aliasPlanProgress,\n });\n if (plan.operation === 'merge-support-aliases') {\n await assertAliasSupportSnapshots({ plan, context });\n }\n\n const approvalPath = path.join(planDir, 'approval-record.json');\n validateApprovalRecord({ path: approvalPath, plan, context });\n if (!existsSync(approvalPath)) {\n writeImmutableJson(approvalPath, {\n schema_version: 1,\n approved_at_utc: clock(options),\n plan_path: planPath,\n plan_sha256: plan.plan_sha256,\n task_id: plan.task_id,\n operation: plan.operation,\n target_mode: plan.target_mode,\n operation_id: plan.operation_id,\n account: {\n user_id: context.account.user_id,\n email: context.account.email,\n },\n confirmed_email: options.confirm,\n row_counts: plan.summary,\n redo_rows_ready:\n plan.operation === 'redo-import'\n ? Boolean(plan.source_import_run_id || plan.source_lineage !== null)\n : null,\n });\n }\n\n if (plan.operation === 'merge-support-aliases') {\n const alreadyComplete = Boolean(\n aliasPlanProgress.success &&\n aliasPlanDerivedLogsComplete({\n plan,\n planSuccess: aliasPlanProgress.success,\n batchProgress: aliasBatchProgress,\n progress,\n exchangeProgressPath: aliasExchangeProgressPath,\n }),\n );\n resumedSuccesses = alreadyComplete ? plan.actions.length : 0;\n let planSuccess = alreadyComplete ? aliasPlanProgress.success : null;\n let planFailure: AliasPlanProgressEntry | null = null;\n if (!alreadyComplete) {\n const startedAt = clock(options);\n try {\n const execution = await executeAliasPlan({ plan, planDir, context });\n const endedAt = clock(options);\n for (const batch of orderedAliasBatches(plan)) {\n appendAliasSuccessLogs({\n plan,\n batch,\n execution,\n progress,\n progressPath,\n exchangeProgressPath: aliasExchangeProgressPath,\n context,\n startedAt,\n endedAt,\n });\n }\n planSuccess = appendAliasProofProgress({\n plan,\n execution,\n planProgress: aliasPlanProgress,\n batchProgress: aliasBatchProgress,\n planProgressPath: aliasPlanProgressPath,\n batchProgressPath: aliasBatchProgressPath,\n context,\n startedAt,\n endedAt,\n });\n } catch (error) {\n planFailure = appendAliasPlanFailure({\n plan,\n planProgress: aliasPlanProgress,\n progressPath: aliasPlanProgressPath,\n context,\n startedAt,\n endedAt: clock(options),\n error,\n });\n }\n }\n const fullyProven = Boolean(\n planSuccess &&\n aliasPlanDerivedLogsComplete({\n plan,\n planSuccess,\n batchProgress: aliasBatchProgress,\n progress,\n exchangeProgressPath: aliasExchangeProgressPath,\n }),\n );\n const failureError = planFailure?.error ?? 'Whole-plan proof is incomplete.';\n const actions = plan.actions.map((action) => {\n return {\n action_id: action.action_id,\n action: action.action,\n table: action.table,\n id: action.id,\n version: action.version,\n status: fullyProven ? ('success' as const) : ('failed' as const),\n error: fullyProven ? null : failureError,\n };\n });\n const successCount = fullyProven ? actions.length : 0;\n const failureCount = fullyProven ? 0 : actions.length;\n const attemptPath = nextAttemptPath(planDir);\n const report: DatasetMaintenanceApplyReport = {\n schema_version: 1,\n generated_at_utc: clock(options),\n status: successCount === actions.length ? 'completed' : 'completed_with_failures',\n task_id: plan.task_id,\n operation: plan.operation,\n operation_id: plan.operation_id,\n target_mode: plan.target_mode,\n plan_sha256: plan.plan_sha256,\n actor: { user_id: context.account.user_id, email: context.account.email },\n summary: {\n actions: actions.length,\n success: successCount,\n failed: failureCount,\n pending: actions.length - successCount - failureCount,\n resumed_successes: resumedSuccesses,\n },\n actions,\n artifacts: {\n approval_record: approvalPath,\n apply_progress: progressPath,\n commit_report: path.join(planDir, 'commit-report.json'),\n attempt_report: attemptPath,\n alias_plan_progress: aliasPlanProgressPath,\n alias_batch_progress: aliasBatchProgressPath,\n alias_exchange_progress: aliasExchangeProgressPath,\n },\n database_audit: {\n rpc_transaction_log: 'public.command_audit_log',\n source: 'tiangong-lca dataset maintenance apply',\n correlation_fields: [\n 'plan_sha256',\n 'operation_id',\n 'target_visibility',\n 'plan_request_sha256',\n 'batch_id',\n 'action_id',\n 'batch_request_sha256',\n ],\n },\n ...(fullyProven && planSuccess\n ? {\n alias_plan_proof: {\n plan_request_sha256: planSuccess.plan_request_sha256!,\n summary_audit_id: planSuccess.summary_audit_id!,\n batch_count: 2 as const,\n row_count: 52 as const,\n exchange_count: 59 as const,\n idempotent_replay: planSuccess.idempotent_replay!,\n },\n }\n : {}),\n };\n writeImmutableJson(attemptPath, report);\n writeJsonArtifact(report.artifacts.commit_report, report);\n return report;\n }\n\n const ordered = [...plan.actions].sort((left, right) => {\n const rank = {\n save_draft: 0,\n update_json_ordered: 0,\n delete: 1,\n } as const;\n const actionOrder = rank[left.action] - rank[right.action];\n return actionOrder || left.ordinal - right.ordinal;\n });\n for (const action of ordered) {\n if (progress.successes.has(action.action_id)) {\n continue;\n }\n const startedAt = clock(options);\n try {\n const actionResult = await executeAction({ action, plan, planDir, context });\n const entry: DatasetMaintenanceProgressEntry = {\n schema_version: 1,\n plan_sha256: plan.plan_sha256,\n operation_id: plan.operation_id,\n action_id: action.action_id,\n action: action.action,\n table: action.table,\n id: action.id,\n version: action.version,\n reason_code: action.reason_code,\n audit_context: {\n plan_sha256: plan.plan_sha256,\n operation_id: plan.operation_id,\n action_id: action.action_id,\n reason_code: action.reason_code,\n source: 'tiangong-lca dataset maintenance apply',\n },\n actor: { user_id: context.account.user_id, email: context.account.email },\n started_at_utc: startedAt,\n ended_at_utc: clock(options),\n before_sha256: action.before!.row_sha256,\n after_sha256: actionResult.afterSha256,\n remote_result_sha256: actionResult.remoteResultSha256,\n result: 'success',\n error: null,\n rollback: action.rollback,\n };\n appendStableJsonLine(progressPath, entry);\n progress.entries.push(entry);\n progress.successes.set(action.action_id, entry);\n progress.latestFailures.delete(action.action_id);\n } catch (error) {\n const entry: DatasetMaintenanceProgressEntry = {\n schema_version: 1,\n plan_sha256: plan.plan_sha256,\n operation_id: plan.operation_id,\n action_id: action.action_id,\n action: action.action,\n table: action.table,\n id: action.id,\n version: action.version,\n reason_code: action.reason_code,\n audit_context: {\n plan_sha256: plan.plan_sha256,\n operation_id: plan.operation_id,\n action_id: action.action_id,\n reason_code: action.reason_code,\n source: 'tiangong-lca dataset maintenance apply',\n },\n actor: { user_id: context.account.user_id, email: context.account.email },\n started_at_utc: startedAt,\n ended_at_utc: clock(options),\n before_sha256: action.before!.row_sha256,\n after_sha256: null,\n remote_result_sha256: null,\n result: 'failed',\n error: errorMessage(error),\n rollback: action.rollback,\n };\n appendStableJsonLine(progressPath, entry);\n progress.entries.push(entry);\n progress.latestFailures.set(action.action_id, entry);\n break;\n }\n }\n\n const actions = plan.actions.map((action) => {\n const success = progress.successes.get(action.action_id);\n const failure = progress.latestFailures.get(action.action_id);\n return {\n action_id: action.action_id,\n action: action.action,\n table: action.table,\n id: action.id,\n version: action.version,\n status: success\n ? ('success' as const)\n : failure\n ? ('failed' as const)\n : ('pending' as const),\n error: failure?.error ?? null,\n };\n });\n const successCount = actions.filter((action) => action.status === 'success').length;\n const failureCount = actions.filter((action) => action.status === 'failed').length;\n const attemptPath = nextAttemptPath(planDir);\n const report: DatasetMaintenanceApplyReport = {\n schema_version: 1,\n generated_at_utc: clock(options),\n status: successCount === actions.length ? 'completed' : 'completed_with_failures',\n task_id: plan.task_id,\n operation: plan.operation,\n operation_id: plan.operation_id,\n target_mode: plan.target_mode,\n plan_sha256: plan.plan_sha256,\n actor: { user_id: context.account.user_id, email: context.account.email },\n summary: {\n actions: actions.length,\n success: successCount,\n failed: failureCount,\n pending: actions.length - successCount - failureCount,\n resumed_successes: resumedSuccesses,\n },\n actions,\n artifacts: {\n approval_record: approvalPath,\n apply_progress: progressPath,\n commit_report: path.join(planDir, 'commit-report.json'),\n attempt_report: attemptPath,\n },\n database_audit: {\n rpc_transaction_log: 'public.command_audit_log',\n source: 'tiangong-lca dataset maintenance apply',\n correlation_fields: ['plan_sha256', 'operation_id', 'action_id', 'reason_code'],\n },\n };\n writeImmutableJson(attemptPath, report);\n writeJsonArtifact(report.artifacts.commit_report, report);\n return report;\n },\n );\n}\n\nexport const __testInternals = {\n aliasBatchDerivedLogsComplete,\n aliasPlanDerivedLogsComplete,\n aliasExchangeProgressKey,\n appendAliasSuccessLogs,\n assertApplyPreconditions,\n assertAliasSupportSnapshots,\n buildAliasBatchRequest,\n buildAliasPlanRequest,\n clock,\n errorMessage,\n executeAliasPlan,\n executeAction,\n finalProjectedRows,\n loadDesiredPayload,\n nextAttemptPath,\n parseAliasBatchProgress,\n parseAliasPlanProgress,\n parseProgress,\n validateAliasRpcResult,\n validateAliasPlanRpcResult,\n validateApprovalRecord,\n};\n"]}
|