@tiangong-lca/cli 0.0.24 → 0.0.26

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.
Files changed (28) hide show
  1. package/README.md +66 -5
  2. package/dist/src/cli.js +484 -5
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/lib/dataset-maintenance-alias-request.js +99 -0
  5. package/dist/src/lib/dataset-maintenance-alias-request.js.map +1 -0
  6. package/dist/src/lib/dataset-maintenance-apply.js +12 -367
  7. package/dist/src/lib/dataset-maintenance-apply.js.map +1 -1
  8. package/dist/src/lib/dataset-maintenance-protected-artifacts.js +100 -0
  9. package/dist/src/lib/dataset-maintenance-protected-artifacts.js.map +1 -0
  10. package/dist/src/lib/dataset-maintenance-protected-before.js +284 -0
  11. package/dist/src/lib/dataset-maintenance-protected-before.js.map +1 -0
  12. package/dist/src/lib/dataset-maintenance-protected-contract.js +918 -0
  13. package/dist/src/lib/dataset-maintenance-protected-contract.js.map +1 -0
  14. package/dist/src/lib/dataset-maintenance-protected-freeze.js +230 -0
  15. package/dist/src/lib/dataset-maintenance-protected-freeze.js.map +1 -0
  16. package/dist/src/lib/dataset-maintenance-protected-preparation.js +524 -0
  17. package/dist/src/lib/dataset-maintenance-protected-preparation.js.map +1 -0
  18. package/dist/src/lib/dataset-maintenance-protected-run.js +667 -0
  19. package/dist/src/lib/dataset-maintenance-protected-run.js.map +1 -0
  20. package/dist/src/lib/dataset-maintenance-protected-seal.js +160 -0
  21. package/dist/src/lib/dataset-maintenance-protected-seal.js.map +1 -0
  22. package/dist/src/lib/dataset-maintenance-protected-toolchain.js +86 -0
  23. package/dist/src/lib/dataset-maintenance-protected-toolchain.js.map +1 -0
  24. package/dist/src/lib/dataset-maintenance-protected-verify.js +435 -0
  25. package/dist/src/lib/dataset-maintenance-protected-verify.js.map +1 -0
  26. package/dist/src/lib/dataset-maintenance-remote.js +116 -2
  27. package/dist/src/lib/dataset-maintenance-remote.js.map +1 -1
  28. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataset-maintenance-protected-contract.js","sourceRoot":"","sources":["../../../src/lib/dataset-maintenance-protected-contract.ts"],"names":[],"mappings":"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","sourcesContent":["import { CliError } from './errors.js';\nimport {\n isJsonObject,\n sha256Json,\n sha256Text,\n type DatasetMaintenancePlan,\n type JsonObject,\n} from './dataset-maintenance-contract.js';\n\nexport const PROTECTED_EXECUTION_CONTRACT = {\n freeze_schema: 'dataset-alias-execution-freeze.v1',\n approval_schema: 'dataset-alias-execution-approval.v1',\n preflight_request_schema: 'dataset-alias-execution-preflight.v1',\n preflight_response_schema: 'dataset-alias-execution-preflight-proof.v1',\n gate_response_schema: 'dataset-alias-execution-gate-receipt.v1',\n admit_request_schema: 'dataset-alias-execution-admit.v1',\n admit_response_schema: 'dataset-alias-execution-admit.v1',\n status_response_schema: 'dataset-alias-execution-status.v1',\n terminal_proof_schema: 'dataset-alias-execution-terminal-proof.v1',\n marker_schema: 'dataset-alias-execution-attempt.v1',\n report_schema: 'dataset-alias-execution-report.v1',\n preflight_command: 'cmd_dataset_alias_execution_preflight_guarded',\n gate_command: 'cmd_dataset_alias_execution_gate_guarded',\n admit_command: 'cmd_dataset_alias_execution_admit_guarded',\n read_command: 'cmd_dataset_alias_execution_read',\n} as const;\n\nexport const PROTECTED_EXECUTION_COUNTS = {\n action_count: 52,\n batch_count: 2,\n exchange_count: 59,\n amount_field_count: 118,\n unrelated_exchange_count: 309,\n audit_count: 55,\n flowproperty_count: 2,\n flow_count: 23,\n process_count: 27,\n derivative_target_count: 50,\n} as const;\n\nconst SHA256 = /^[a-f0-9]{64}$/u;\nconst UUID = /^[a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/iu;\nconst VERSION = /^[0-9]{2}\\.[0-9]{2}\\.[0-9]{3}$/u;\n\nexport type ProtectedExecutionStatus =\n | 'not_admitted'\n | 'dispatching'\n | 'dispatched'\n | 'running'\n | 'derivatives_pending'\n | 'completed'\n | 'failed'\n | 'indeterminate';\n\nexport type ProtectedReportStatus = 'pending' | 'passed' | 'failed' | 'indeterminate';\n\nexport type ProtectedDerivativeTargetTable = 'flows' | 'processes';\n\nexport type ProtectedDerivativeTarget = {\n table: ProtectedDerivativeTargetTable;\n id: string;\n version: string;\n user_id: string;\n state_code: 0;\n baseline_snapshot_sha256: string;\n};\n\nexport type ProtectedDerivativeSnapshot = {\n schema_version: 'dataset-derivative-snapshot.v1';\n table: ProtectedDerivativeTargetTable;\n id: string;\n version: string;\n user_id: string;\n state_code: 0;\n modified_at: string;\n json_sha256: string;\n json_ordered_sha256: string;\n extracted_text_sha256: string;\n extracted_md_sha256: string | null;\n embedding_ft_sha256: string | null;\n embedding_ft_at: string | null;\n snapshot_sha256: string;\n};\n\nexport type ProtectedExecutionBindings = {\n plan_file_sha256: string;\n freeze_file_sha256: string;\n freeze_sha256: string;\n approval_file_sha256: string;\n approval_identity_sha256: string;\n approval_text_sha256: string;\n alias_plan_request_sha256: string;\n before_hash_set_sha256: string;\n desired_hash_set_sha256: string;\n exchange_rewrite_set_sha256: string;\n support_snapshot_set_sha256: string;\n derivative_baseline_set_sha256: string;\n derivative_target_set_sha256: string;\n toolchain_evidence_sha256: string;\n};\n\nexport type ProtectedGateExpectations = {\n primary_support_plan_sha256: string;\n execution_unused_sha256: string;\n derivative_quiescence_sha256: string;\n};\n\nexport type DatasetMaintenanceProtectedFreeze = {\n schema_version: typeof PROTECTED_EXECUTION_CONTRACT.freeze_schema;\n environment: 'production';\n project_ref: string;\n account: { user_id: string; email: string };\n target_visibility: 'owner_draft';\n plan: {\n plan_file_sha256: string;\n plan_sha256: string;\n operation_id: string;\n };\n sets: Omit<\n ProtectedExecutionBindings,\n | 'plan_file_sha256'\n | 'freeze_file_sha256'\n | 'freeze_sha256'\n | 'approval_file_sha256'\n | 'approval_identity_sha256'\n | 'approval_text_sha256'\n >;\n expected: typeof PROTECTED_EXECUTION_COUNTS;\n derivative_targets: ProtectedDerivativeTarget[];\n policy: {\n state_code_changes: 0;\n save_draft: 0;\n deletes: 0;\n rebuild_derivatives: 0;\n unitgroup_actions: 0;\n person_distance_actions: 0;\n max_admit_posts: 1;\n automatic_retry: false;\n };\n freeze_sha256: string;\n};\n\nexport type DatasetMaintenanceProtectedApproval = {\n schema_version: typeof PROTECTED_EXECUTION_CONTRACT.approval_schema;\n approved_at_utc: string;\n environment: 'production';\n project_ref: string;\n account: { user_id: string; email: string };\n target_visibility: 'owner_draft';\n plan_sha256: string;\n operation_id: string;\n plan_file_sha256: string;\n freeze_file_sha256: string;\n freeze_sha256: string;\n approval_text_sha256: string;\n max_admit_posts: 1;\n automatic_retry: false;\n approval_identity_sha256: string;\n};\n\nexport type ProtectedExecutionIdentity = {\n request_id: string;\n identity_sha256: string;\n environment: 'production';\n project_ref: string;\n actor: { user_id: string; email: string };\n target_visibility: 'owner_draft';\n plan_sha256: string;\n operation_id: string;\n bindings: ProtectedExecutionBindings;\n expected: typeof PROTECTED_EXECUTION_COUNTS;\n derivative_targets: ProtectedDerivativeTarget[];\n};\n\nexport type ProtectedPreflightProof = {\n schema_version: typeof PROTECTED_EXECUTION_CONTRACT.preflight_response_schema;\n command: typeof PROTECTED_EXECUTION_CONTRACT.preflight_command;\n request_id: string;\n actor_user_id: string;\n environment: 'production';\n project_ref: string;\n server_context_sha256: string;\n plan_sha256: string;\n operation_id: string;\n alias_plan_request_sha256: string;\n freeze_sha256: string;\n approval_identity_sha256: string;\n plan_request_sha256: string;\n bindings_sha256: string;\n expected_sha256: string;\n derivative_targets_sha256: string;\n gate_expectations: ProtectedGateExpectations;\n gate_expectations_sha256: string;\n failure_baseline_sha256: string;\n preflight_request_sha256: string;\n preflight_token: string;\n preflight_proof_sha256: string;\n completed_at: string;\n expires_at: string;\n simulation: {\n plan_rows: 52;\n plan_exchanges: 59;\n alias_audits: 55;\n derivative_targets: 50;\n rolled_back: true;\n };\n};\n\nexport type ProtectedGateResult = {\n expected_sha256: string;\n observed_sha256: string;\n status: 'passed';\n captured_at: string;\n};\n\nexport type ProtectedGateProof = {\n schema_version: typeof PROTECTED_EXECUTION_CONTRACT.gate_response_schema;\n command: typeof PROTECTED_EXECUTION_CONTRACT.gate_command;\n request_id: string;\n actor_user_id: string;\n preflight_proof_sha256: string;\n gate: 'primary_support_plan' | 'execution_unused' | 'derivative_quiescence';\n result: ProtectedGateResult;\n receipt_sha256: string;\n};\n\nexport type ProtectedAdmissionProof = {\n schema_version: typeof PROTECTED_EXECUTION_CONTRACT.admit_response_schema;\n command: typeof PROTECTED_EXECUTION_CONTRACT.admit_command;\n request_id: string;\n plan_sha256: string;\n operation_id: string;\n plan_request_sha256: string;\n preflight_proof_sha256: string;\n admission_request_sha256: string;\n gate_results_sha256: string;\n status: 'dispatched';\n attempt_count: 1;\n dispatch_count: 1;\n net_request_id: string;\n attempt_consumed: true;\n retry_allowed: false;\n};\n\nexport type ProtectedTerminalTargetProof = {\n ordinal: number;\n request_id: string;\n table: ProtectedDerivativeTargetTable;\n id: string;\n version: string;\n status: string;\n phase: string;\n source_baseline_snapshot_sha256: string;\n expected_snapshot_sha256: string;\n completed_snapshot_sha256: string | null;\n primary_matches: boolean;\n terminal_snapshot_matches: boolean;\n proposals_committed: boolean;\n derivative_fresh: boolean;\n lifecycle_complete: boolean;\n terminal_audit_present: boolean;\n residue: {\n http_requests: number;\n embedding_jobs: number;\n pending_jobs: number;\n failure_rows: number;\n other_active_fences: number;\n };\n causal_terminal_proof: boolean;\n};\n\nexport type ProtectedStatusTargetProof = {\n ordinal: number;\n request_id: string;\n table: ProtectedDerivativeTargetTable;\n id: string;\n version: string;\n status: string;\n phase: string;\n error: JsonObject | null;\n causal_terminal_proof: false;\n};\n\ntype ProtectedDerivativeReadbackCommon = {\n schema_version: 'dataset-derivative-rebuild-batch-status.v1';\n batch_id: string;\n code: string | null;\n causal_terminal_proof: boolean;\n target_count: number;\n flow_count: number;\n process_count: number;\n completed_count: number;\n nonterminal_count: number;\n failed_count: number;\n};\n\nexport type ProtectedDerivativeReadback = ProtectedDerivativeReadbackCommon &\n (\n | {\n status: 'not_started';\n proof_level: 'none';\n proof_deferred: false;\n invalid_proof_count: null;\n targets: [];\n }\n | {\n status: 'pending' | 'failed';\n proof_level: 'status_only';\n proof_deferred: boolean;\n invalid_proof_count: null;\n targets: ProtectedStatusTargetProof[];\n }\n | {\n status: 'completed' | 'failed';\n proof_level: 'causal_terminal';\n proof_deferred: false;\n invalid_proof_count: number;\n targets: ProtectedTerminalTargetProof[];\n }\n );\n\nexport type ProtectedExecutionStatusProof = {\n schema_version: typeof PROTECTED_EXECUTION_CONTRACT.status_response_schema;\n command: typeof PROTECTED_EXECUTION_CONTRACT.read_command;\n request_id: string;\n status: ProtectedReportStatus;\n execution_status: ProtectedExecutionStatus;\n retry_allowed: false;\n actor_user_id: string;\n environment: 'production';\n project_ref: string;\n target_visibility: 'owner_draft' | null;\n plan_sha256: string;\n operation_id: string;\n plan_request_sha256: string;\n freeze_sha256: string | null;\n approval_identity_sha256: string | null;\n approval_text_sha256: string | null;\n derivative_target_set_sha256: string | null;\n preflight_proof_sha256: string;\n admission_request_sha256: string | null;\n gate_results_sha256: string | null;\n attempt_count: number;\n dispatch_count: number;\n gate_count: number;\n gates: Array<ProtectedGateResult & { gate: ProtectedGateProof['gate']; receipt_sha256: string }>;\n primary_readback: {\n row_count: number | null;\n exchange_count: number | null;\n alias_audit_count: number;\n live_closure_proof: boolean;\n closure: JsonObject;\n } | null;\n derivative_readback: ProtectedDerivativeReadback;\n failure: JsonObject | null;\n};\n\nfunction fail(message: string): never {\n throw new CliError(message, {\n code: 'DATASET_MAINTENANCE_PROTECTED_CONTRACT_INVALID',\n exitCode: 2,\n });\n}\n\nfunction token(value: unknown, label: string): string {\n if (typeof value !== 'string' || !value.trim()) fail(`${label} must be a non-empty string.`);\n return value.trim();\n}\n\nfunction hash(value: unknown, label: string): string {\n const result = token(value, label);\n if (!SHA256.test(result)) fail(`${label} must be a lowercase SHA-256 digest.`);\n return result;\n}\n\nfunction timestamp(value: unknown, label: string): string {\n const result = token(value, label);\n if (!Number.isFinite(Date.parse(result))) fail(`${label} must be an ISO timestamp.`);\n return result;\n}\n\nfunction nullableHash(value: unknown, label: string): string | null {\n return value === null ? null : hash(value, label);\n}\n\nfunction nullableTimestamp(value: unknown, label: string): string | null {\n return value === null ? null : timestamp(value, label);\n}\n\nfunction parseAccount(value: unknown, label: string): { user_id: string; email: string } {\n if (!isJsonObject(value)) fail(`${label} must be an object.`);\n return {\n user_id: token(value.user_id, `${label}.user_id`),\n email: token(value.email, `${label}.email`),\n };\n}\n\nfunction parseExpected(value: unknown): typeof PROTECTED_EXECUTION_COUNTS {\n if (!isJsonObject(value)) fail('expected must be an object.');\n for (const [key, expected] of Object.entries(PROTECTED_EXECUTION_COUNTS)) {\n if (value[key] !== expected) fail(`expected.${key} must equal ${expected}.`);\n }\n return PROTECTED_EXECUTION_COUNTS;\n}\n\nfunction parseGateExpectations(value: unknown): ProtectedGateExpectations {\n if (!isJsonObject(value)) fail('gate_expectations must be an object.');\n return {\n primary_support_plan_sha256: hash(\n value.primary_support_plan_sha256,\n 'gate_expectations.primary_support_plan_sha256',\n ),\n execution_unused_sha256: hash(\n value.execution_unused_sha256,\n 'gate_expectations.execution_unused_sha256',\n ),\n derivative_quiescence_sha256: hash(\n value.derivative_quiescence_sha256,\n 'gate_expectations.derivative_quiescence_sha256',\n ),\n };\n}\n\nfunction parseDerivativeTarget(value: unknown, index: number): ProtectedDerivativeTarget {\n const label = `derivative_targets[${index}]`;\n if (!isJsonObject(value)) fail(`${label} must be an object.`);\n if (value.table !== 'flows' && value.table !== 'processes') {\n fail(`${label}.table must be flows or processes.`);\n }\n if (value.state_code !== 0) fail(`${label}.state_code must equal 0.`);\n const id = token(value.id, `${label}.id`);\n const version = token(value.version, `${label}.version`);\n if (!UUID.test(id) || !VERSION.test(version)) {\n fail(`${label} must contain a UUID id and canonical version.`);\n }\n return {\n table: value.table,\n id,\n version,\n user_id: token(value.user_id, `${label}.user_id`),\n state_code: 0 as const,\n baseline_snapshot_sha256: hash(\n value.baseline_snapshot_sha256,\n `${label}.baseline_snapshot_sha256`,\n ),\n };\n}\n\nfunction parseDerivativeTargets(value: unknown): ProtectedDerivativeTarget[] {\n if (!Array.isArray(value)) fail('derivative_targets must be an array.');\n const targets = value.map(parseDerivativeTarget);\n const keys = targets.map((target) => `${target.table}\\u0000${target.id}\\u0000${target.version}`);\n if (\n targets.length !== PROTECTED_EXECUTION_COUNTS.derivative_target_count ||\n new Set(keys).size !== targets.length ||\n targets.filter((target) => target.table === 'flows').length !==\n PROTECTED_EXECUTION_COUNTS.flow_count ||\n targets.filter((target) => target.table === 'processes').length !==\n PROTECTED_EXECUTION_COUNTS.process_count\n ) {\n fail('derivative_targets must contain exactly 23 flows and 27 processes with no duplicates.');\n }\n const sorted = [...targets].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 if (sorted.some((target, index) => target !== targets[index])) {\n fail('derivative_targets must use stable table/id/version order.');\n }\n return targets;\n}\n\nexport function parseProtectedDerivativeSnapshot(\n value: unknown,\n expected: {\n table: ProtectedDerivativeTargetTable;\n id: string;\n version: string;\n userId: string;\n },\n): ProtectedDerivativeSnapshot {\n if (\n !isJsonObject(value) ||\n value.ok !== true ||\n value.command !== 'cmd_dataset_derivative_rebuild_snapshot' ||\n value.schema_version !== 'dataset-derivative-snapshot.v1' ||\n value.table !== expected.table ||\n value.id !== expected.id ||\n value.version !== expected.version ||\n value.user_id !== expected.userId ||\n value.state_code !== 0\n ) {\n fail('Derivative snapshot RPC returned a foreign or unsupported snapshot.');\n }\n const snapshot: ProtectedDerivativeSnapshot = {\n schema_version: 'dataset-derivative-snapshot.v1',\n table: expected.table,\n id: expected.id,\n version: expected.version,\n user_id: expected.userId,\n state_code: 0,\n modified_at: timestamp(value.modified_at, 'derivative_snapshot.modified_at'),\n json_sha256: hash(value.json_sha256, 'derivative_snapshot.json_sha256'),\n json_ordered_sha256: hash(value.json_ordered_sha256, 'derivative_snapshot.json_ordered_sha256'),\n extracted_text_sha256: hash(\n value.extracted_text_sha256,\n 'derivative_snapshot.extracted_text_sha256',\n ),\n extracted_md_sha256: nullableHash(\n value.extracted_md_sha256,\n 'derivative_snapshot.extracted_md_sha256',\n ),\n embedding_ft_sha256: nullableHash(\n value.embedding_ft_sha256,\n 'derivative_snapshot.embedding_ft_sha256',\n ),\n embedding_ft_at: nullableTimestamp(\n value.embedding_ft_at,\n 'derivative_snapshot.embedding_ft_at',\n ),\n snapshot_sha256: hash(value.snapshot_sha256, 'derivative_snapshot.snapshot_sha256'),\n };\n if (snapshot.json_sha256 !== snapshot.json_ordered_sha256) {\n fail('Derivative snapshot json and json_ordered hashes are inconsistent.');\n }\n return snapshot;\n}\n\nfunction parseFreezeSets(value: unknown): DatasetMaintenanceProtectedFreeze['sets'] {\n if (!isJsonObject(value)) fail('sets must be an object.');\n return {\n alias_plan_request_sha256: hash(\n value.alias_plan_request_sha256,\n 'sets.alias_plan_request_sha256',\n ),\n before_hash_set_sha256: hash(value.before_hash_set_sha256, 'sets.before_hash_set_sha256'),\n desired_hash_set_sha256: hash(value.desired_hash_set_sha256, 'sets.desired_hash_set_sha256'),\n exchange_rewrite_set_sha256: hash(\n value.exchange_rewrite_set_sha256,\n 'sets.exchange_rewrite_set_sha256',\n ),\n support_snapshot_set_sha256: hash(\n value.support_snapshot_set_sha256,\n 'sets.support_snapshot_set_sha256',\n ),\n derivative_baseline_set_sha256: hash(\n value.derivative_baseline_set_sha256,\n 'sets.derivative_baseline_set_sha256',\n ),\n derivative_target_set_sha256: hash(\n value.derivative_target_set_sha256,\n 'sets.derivative_target_set_sha256',\n ),\n toolchain_evidence_sha256: hash(\n value.toolchain_evidence_sha256,\n 'sets.toolchain_evidence_sha256',\n ),\n };\n}\n\nexport function computeProtectedFreezeSha256(freeze: DatasetMaintenanceProtectedFreeze): string {\n return sha256Json({ ...freeze, freeze_sha256: '' });\n}\n\nexport function parseProtectedFreeze(value: unknown): DatasetMaintenanceProtectedFreeze {\n if (\n !isJsonObject(value) ||\n value.schema_version !== PROTECTED_EXECUTION_CONTRACT.freeze_schema ||\n value.environment !== 'production' ||\n value.target_visibility !== 'owner_draft' ||\n !isJsonObject(value.plan) ||\n !isJsonObject(value.policy)\n ) {\n fail(\n `Freeze must use ${PROTECTED_EXECUTION_CONTRACT.freeze_schema} for production owner_draft.`,\n );\n }\n const targets = parseDerivativeTargets(value.derivative_targets);\n const account = parseAccount(value.account, 'account');\n if (targets.some((target) => target.user_id !== account.user_id)) {\n fail('Every derivative target must belong to the frozen account.');\n }\n const freeze: DatasetMaintenanceProtectedFreeze = {\n schema_version: PROTECTED_EXECUTION_CONTRACT.freeze_schema,\n environment: 'production',\n project_ref: token(value.project_ref, 'project_ref'),\n account,\n target_visibility: 'owner_draft',\n plan: {\n plan_file_sha256: hash(value.plan.plan_file_sha256, 'plan.plan_file_sha256'),\n plan_sha256: hash(value.plan.plan_sha256, 'plan.plan_sha256'),\n operation_id: token(value.plan.operation_id, 'plan.operation_id'),\n },\n sets: parseFreezeSets(value.sets),\n expected: parseExpected(value.expected),\n derivative_targets: targets,\n policy: {\n state_code_changes: value.policy.state_code_changes as 0,\n save_draft: value.policy.save_draft as 0,\n deletes: value.policy.deletes as 0,\n rebuild_derivatives: value.policy.rebuild_derivatives as 0,\n unitgroup_actions: value.policy.unitgroup_actions as 0,\n person_distance_actions: value.policy.person_distance_actions as 0,\n max_admit_posts: value.policy.max_admit_posts as 1,\n automatic_retry: value.policy.automatic_retry as false,\n },\n freeze_sha256: hash(value.freeze_sha256, 'freeze_sha256'),\n };\n if (\n freeze.policy.state_code_changes !== 0 ||\n freeze.policy.save_draft !== 0 ||\n freeze.policy.deletes !== 0 ||\n freeze.policy.rebuild_derivatives !== 0 ||\n freeze.policy.unitgroup_actions !== 0 ||\n freeze.policy.person_distance_actions !== 0 ||\n freeze.policy.max_admit_posts !== 1 ||\n freeze.policy.automatic_retry !== false\n ) {\n fail('Freeze policy permits an operation outside the one-shot owner-draft alias execution.');\n }\n if (computeProtectedFreezeSha256(freeze) !== freeze.freeze_sha256) {\n fail('freeze_sha256 does not match the canonical freeze contents.');\n }\n return freeze;\n}\n\nexport function computeProtectedApprovalIdentitySha256(\n approval: DatasetMaintenanceProtectedApproval,\n): string {\n return sha256Json({ ...approval, approval_identity_sha256: '' });\n}\n\nexport function parseProtectedApproval(value: unknown): DatasetMaintenanceProtectedApproval {\n if (\n !isJsonObject(value) ||\n value.schema_version !== PROTECTED_EXECUTION_CONTRACT.approval_schema ||\n value.environment !== 'production' ||\n value.target_visibility !== 'owner_draft'\n ) {\n fail(\n `Approval must use ${PROTECTED_EXECUTION_CONTRACT.approval_schema} for production owner_draft.`,\n );\n }\n const approval: DatasetMaintenanceProtectedApproval = {\n schema_version: PROTECTED_EXECUTION_CONTRACT.approval_schema,\n approved_at_utc: timestamp(value.approved_at_utc, 'approved_at_utc'),\n environment: 'production',\n project_ref: token(value.project_ref, 'project_ref'),\n account: parseAccount(value.account, 'account'),\n target_visibility: 'owner_draft',\n plan_sha256: hash(value.plan_sha256, 'plan_sha256'),\n operation_id: token(value.operation_id, 'operation_id'),\n plan_file_sha256: hash(value.plan_file_sha256, 'plan_file_sha256'),\n freeze_file_sha256: hash(value.freeze_file_sha256, 'freeze_file_sha256'),\n freeze_sha256: hash(value.freeze_sha256, 'freeze_sha256'),\n approval_text_sha256: hash(value.approval_text_sha256, 'approval_text_sha256'),\n max_admit_posts: value.max_admit_posts as 1,\n automatic_retry: value.automatic_retry as false,\n approval_identity_sha256: hash(value.approval_identity_sha256, 'approval_identity_sha256'),\n };\n if (approval.max_admit_posts !== 1 || approval.automatic_retry !== false) {\n fail('Approval must authorize exactly one admit POST with no automatic retry.');\n }\n if (computeProtectedApprovalIdentitySha256(approval) !== approval.approval_identity_sha256) {\n fail('approval_identity_sha256 does not match the canonical approval contents.');\n }\n return approval;\n}\n\nexport function protectedPlanSetHashes(plan: DatasetMaintenancePlan): {\n before_hash_set_sha256: string;\n desired_hash_set_sha256: string;\n exchange_rewrite_set_sha256: string;\n support_snapshot_set_sha256: string;\n derivative_target_set_sha256: string;\n} {\n const orderedActions = [...plan.actions].sort((left, right) =>\n left.action_id.localeCompare(right.action_id),\n );\n const derivativeTargets = plan.actions\n .filter((action) => action.table === 'flows' || action.table === 'processes')\n .sort(\n (left, right) =>\n left.table.localeCompare(right.table) ||\n left.id.localeCompare(right.id) ||\n left.version.localeCompare(right.version),\n )\n .map((action) => ({\n table: action.table,\n id: action.id,\n version: action.version,\n user_id: action.expected_user_id,\n state_code: action.expected_state_code,\n }));\n return {\n before_hash_set_sha256: sha256Json(\n orderedActions.map((action) => ({\n action_id: action.action_id,\n table: action.table,\n id: action.id,\n version: action.version,\n row_sha256: action.before?.row_sha256 ?? null,\n })),\n ),\n desired_hash_set_sha256: sha256Json(\n orderedActions.map((action) => ({\n action_id: action.action_id,\n table: action.table,\n id: action.id,\n version: action.version,\n payload_sha256: action.desired_payload?.sha256 ?? null,\n })),\n ),\n exchange_rewrite_set_sha256: sha256Json(\n (plan.alias_batches ?? []).flatMap((batch) => batch.exchange_rewrites),\n ),\n support_snapshot_set_sha256: sha256Json(\n (plan.alias_batches ?? []).map((batch) => ({\n batch_id: batch.batch_id,\n target_snapshots: batch.target_snapshots,\n })),\n ),\n derivative_target_set_sha256: sha256Json(derivativeTargets),\n };\n}\n\nexport function protectedDerivativeBaselineSetSha256(targets: ProtectedDerivativeTarget[]): string {\n return sha256Json(\n targets.map((target) => ({\n table: target.table,\n id: target.id,\n version: target.version,\n baseline_snapshot_sha256: target.baseline_snapshot_sha256,\n })),\n );\n}\n\nexport function assertProtectedFreezeMatchesPlan(options: {\n plan: DatasetMaintenancePlan;\n planFileSha256: string;\n aliasPlanRequestSha256: string;\n freeze: DatasetMaintenanceProtectedFreeze;\n}): void {\n const { plan, planFileSha256, freeze } = options;\n if (\n plan.operation !== 'merge-support-aliases' ||\n plan.status !== 'ready' ||\n plan.target_mode !== 'owner_draft' ||\n plan.blockers.length !== 0 ||\n plan.account.user_id !== freeze.account.user_id ||\n plan.account.email !== freeze.account.email ||\n plan.plan_sha256 !== freeze.plan.plan_sha256 ||\n plan.operation_id !== freeze.plan.operation_id ||\n planFileSha256 !== freeze.plan.plan_file_sha256\n ) {\n fail('Protected freeze does not bind the ready owner-draft alias plan and account exactly.');\n }\n const actionCounts = {\n flowproperties: plan.actions.filter((action) => action.table === 'flowproperties').length,\n flows: plan.actions.filter((action) => action.table === 'flows').length,\n processes: plan.actions.filter((action) => action.table === 'processes').length,\n };\n if (\n plan.actions.length !== PROTECTED_EXECUTION_COUNTS.action_count ||\n plan.alias_batches?.length !== PROTECTED_EXECUTION_COUNTS.batch_count ||\n actionCounts.flowproperties !== PROTECTED_EXECUTION_COUNTS.flowproperty_count ||\n actionCounts.flows !== PROTECTED_EXECUTION_COUNTS.flow_count ||\n actionCounts.processes !== PROTECTED_EXECUTION_COUNTS.process_count ||\n (plan.summary.scaled_exchanges ?? 0) !== PROTECTED_EXECUTION_COUNTS.exchange_count ||\n (plan.summary.scaled_amount_fields ?? 0) !== PROTECTED_EXECUTION_COUNTS.amount_field_count ||\n (plan.summary.unrelated_exchanges_preserved ?? 0) !==\n PROTECTED_EXECUTION_COUNTS.unrelated_exchange_count\n ) {\n fail('Protected plan counts do not match the Step 2 execution contract.');\n }\n const sets = protectedPlanSetHashes(plan);\n for (const [key, actual] of Object.entries(sets)) {\n if (freeze.sets[key as keyof typeof sets] !== actual) fail(`Freeze set hash mismatch: ${key}.`);\n }\n if (freeze.sets.alias_plan_request_sha256 !== options.aliasPlanRequestSha256) {\n fail('Freeze alias request hash does not match the exact serialized database plan.');\n }\n if (\n freeze.sets.derivative_baseline_set_sha256 !==\n protectedDerivativeBaselineSetSha256(freeze.derivative_targets)\n ) {\n fail('Freeze derivative baseline set hash does not match the 50 targets.');\n }\n const targetByKey = new Map(\n freeze.derivative_targets.map((target) => [\n `${target.table}\\u0000${target.id}\\u0000${target.version}`,\n target,\n ]),\n );\n for (const action of plan.actions.filter(\n (entry) => entry.table === 'flows' || entry.table === 'processes',\n )) {\n const target = targetByKey.get(`${action.table}\\u0000${action.id}\\u0000${action.version}`);\n if (!target || target.user_id !== action.expected_user_id) {\n fail(`Derivative baseline does not bind action ${action.action_id}.`);\n }\n }\n}\n\nexport function assertProtectedApprovalBindings(options: {\n approval: DatasetMaintenanceProtectedApproval;\n freeze: DatasetMaintenanceProtectedFreeze;\n freezeFileSha256: string;\n approvalFileSha256: string;\n approveExecution?: string;\n}): void {\n const { approval, freeze } = options;\n if (\n approval.environment !== freeze.environment ||\n approval.project_ref !== freeze.project_ref ||\n approval.account.user_id !== freeze.account.user_id ||\n approval.account.email !== freeze.account.email ||\n approval.plan_sha256 !== freeze.plan.plan_sha256 ||\n approval.operation_id !== freeze.plan.operation_id ||\n approval.plan_file_sha256 !== freeze.plan.plan_file_sha256 ||\n approval.freeze_file_sha256 !== options.freezeFileSha256 ||\n approval.freeze_sha256 !== freeze.freeze_sha256 ||\n approval.approval_identity_sha256 !== options.approveExecution\n ) {\n fail('Approval does not bind this exact production freeze, plan, actor, and CLI confirmation.');\n }\n hash(options.approvalFileSha256, 'approval_file_sha256');\n}\n\nfunction deterministicUuidFromSha256(digest: string): string {\n const chars = digest.slice(0, 32).split('');\n chars[12] = '5';\n chars[16] = ((Number.parseInt(chars[16]!, 16) & 0x3) | 0x8).toString(16);\n const hex = chars.join('');\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n}\n\nexport function buildProtectedExecutionIdentity(options: {\n freeze: DatasetMaintenanceProtectedFreeze;\n approval: DatasetMaintenanceProtectedApproval;\n freezeFileSha256: string;\n approvalFileSha256: string;\n}): ProtectedExecutionIdentity {\n const bindings: ProtectedExecutionBindings = {\n plan_file_sha256: options.freeze.plan.plan_file_sha256,\n freeze_file_sha256: options.freezeFileSha256,\n freeze_sha256: options.freeze.freeze_sha256,\n approval_file_sha256: options.approvalFileSha256,\n approval_identity_sha256: options.approval.approval_identity_sha256,\n approval_text_sha256: options.approval.approval_text_sha256,\n ...options.freeze.sets,\n };\n const body = {\n environment: 'production' as const,\n project_ref: options.freeze.project_ref,\n actor: options.freeze.account,\n target_visibility: 'owner_draft' as const,\n plan_sha256: options.freeze.plan.plan_sha256,\n operation_id: options.freeze.plan.operation_id,\n bindings,\n expected: PROTECTED_EXECUTION_COUNTS,\n derivative_targets: options.freeze.derivative_targets,\n };\n const identitySha256 = sha256Json(body);\n const requestId = deterministicUuidFromSha256(\n sha256Text(`dataset-alias-protected-request.v1\\u0000${identitySha256}`),\n );\n return { request_id: requestId, identity_sha256: identitySha256, ...body };\n}\n\nexport function buildProtectedPreflightRequest(options: {\n identity: ProtectedExecutionIdentity;\n plan: JsonObject;\n freeze: DatasetMaintenanceProtectedFreeze;\n approval: DatasetMaintenanceProtectedApproval;\n}): JsonObject {\n return {\n schema_version: PROTECTED_EXECUTION_CONTRACT.preflight_request_schema,\n request_id: options.identity.request_id,\n environment: options.identity.environment,\n project_ref: options.identity.project_ref,\n actor: options.identity.actor,\n target_visibility: options.identity.target_visibility,\n plan: options.plan,\n freeze: options.freeze,\n approval: options.approval,\n bindings: options.identity.bindings,\n expected: options.identity.expected,\n derivative_targets: options.identity.derivative_targets,\n };\n}\n\nexport function parseProtectedPreflightProof(\n value: unknown,\n identity: ProtectedExecutionIdentity,\n now = new Date(),\n): ProtectedPreflightProof {\n if (\n !isJsonObject(value) ||\n value.ok !== true ||\n value.schema_version !== PROTECTED_EXECUTION_CONTRACT.preflight_response_schema ||\n value.command !== PROTECTED_EXECUTION_CONTRACT.preflight_command ||\n value.request_id !== identity.request_id ||\n value.actor_user_id !== identity.actor.user_id ||\n value.environment !== identity.environment ||\n value.project_ref !== identity.project_ref ||\n value.plan_sha256 !== identity.plan_sha256 ||\n value.operation_id !== identity.operation_id ||\n !isJsonObject(value.simulation)\n ) {\n fail('Preflight RPC returned a foreign or unsupported proof envelope.');\n }\n const proof: ProtectedPreflightProof = {\n schema_version: PROTECTED_EXECUTION_CONTRACT.preflight_response_schema,\n command: PROTECTED_EXECUTION_CONTRACT.preflight_command,\n request_id: identity.request_id,\n actor_user_id: identity.actor.user_id,\n environment: 'production',\n project_ref: identity.project_ref,\n server_context_sha256: hash(value.server_context_sha256, 'server_context_sha256'),\n plan_sha256: identity.plan_sha256,\n operation_id: identity.operation_id,\n alias_plan_request_sha256: hash(value.alias_plan_request_sha256, 'alias_plan_request_sha256'),\n freeze_sha256: hash(value.freeze_sha256, 'freeze_sha256'),\n approval_identity_sha256: hash(value.approval_identity_sha256, 'approval_identity_sha256'),\n plan_request_sha256: hash(value.plan_request_sha256, 'plan_request_sha256'),\n bindings_sha256: hash(value.bindings_sha256, 'bindings_sha256'),\n expected_sha256: hash(value.expected_sha256, 'expected_sha256'),\n derivative_targets_sha256: hash(value.derivative_targets_sha256, 'derivative_targets_sha256'),\n gate_expectations: parseGateExpectations(value.gate_expectations),\n gate_expectations_sha256: hash(value.gate_expectations_sha256, 'gate_expectations_sha256'),\n failure_baseline_sha256: hash(value.failure_baseline_sha256, 'failure_baseline_sha256'),\n preflight_request_sha256: hash(value.preflight_request_sha256, 'preflight_request_sha256'),\n preflight_token: token(value.preflight_token, 'preflight_token'),\n preflight_proof_sha256: hash(value.preflight_proof_sha256, 'preflight_proof_sha256'),\n completed_at: timestamp(value.completed_at, 'completed_at'),\n expires_at: timestamp(value.expires_at, 'expires_at'),\n simulation: {\n plan_rows: value.simulation.plan_rows as 52,\n plan_exchanges: value.simulation.plan_exchanges as 59,\n alias_audits: value.simulation.alias_audits as 55,\n derivative_targets: value.simulation.derivative_targets as 50,\n rolled_back: value.simulation.rolled_back as true,\n },\n };\n if (\n proof.alias_plan_request_sha256 !== identity.bindings.alias_plan_request_sha256 ||\n proof.freeze_sha256 !== identity.bindings.freeze_sha256 ||\n proof.approval_identity_sha256 !== identity.bindings.approval_identity_sha256 ||\n proof.simulation.plan_rows !== PROTECTED_EXECUTION_COUNTS.action_count ||\n proof.simulation.plan_exchanges !== PROTECTED_EXECUTION_COUNTS.exchange_count ||\n proof.simulation.alias_audits !== PROTECTED_EXECUTION_COUNTS.audit_count ||\n proof.simulation.derivative_targets !== PROTECTED_EXECUTION_COUNTS.derivative_target_count ||\n proof.simulation.rolled_back !== true\n ) {\n fail('Preflight simulation did not prove the exact protected profile and rollback.');\n }\n const issued = Date.parse(proof.completed_at);\n const expires = Date.parse(proof.expires_at);\n if (issued > now.getTime() || expires <= now.getTime() || expires - issued > 180_000) {\n fail('Preflight token is stale, future-issued, or exceeds the 180-second admission window.');\n }\n return proof;\n}\n\nexport function parseProtectedGateProof(\n value: unknown,\n options: {\n identity: ProtectedExecutionIdentity;\n preflight: ProtectedPreflightProof;\n gate: ProtectedGateProof['gate'];\n },\n): ProtectedGateProof {\n if (\n !isJsonObject(value) ||\n value.ok !== true ||\n value.schema_version !== PROTECTED_EXECUTION_CONTRACT.gate_response_schema ||\n value.command !== PROTECTED_EXECUTION_CONTRACT.gate_command ||\n value.request_id !== options.identity.request_id ||\n value.actor_user_id !== options.identity.actor.user_id ||\n value.preflight_proof_sha256 !== options.preflight.preflight_proof_sha256 ||\n value.gate !== options.gate ||\n value.status !== 'passed'\n ) {\n fail('Gate RPC returned a foreign, failed, or unsupported receipt.');\n }\n const expectedName = `${options.gate}_sha256` as keyof ProtectedGateExpectations;\n const expectedSha256 = hash(value.expected_sha256, 'gate.expected_sha256');\n const observedSha256 = hash(value.observed_sha256, 'gate.observed_sha256');\n const capturedAt = timestamp(value.captured_at, 'gate.captured_at');\n if (\n expectedSha256 !== options.preflight.gate_expectations[expectedName] ||\n observedSha256 !== expectedSha256 ||\n Date.parse(capturedAt) < Date.parse(options.preflight.completed_at) ||\n Date.parse(capturedAt) > Date.parse(options.preflight.expires_at)\n ) {\n fail('Gate receipt does not match the frozen digest or server preflight window.');\n }\n return {\n schema_version: PROTECTED_EXECUTION_CONTRACT.gate_response_schema,\n command: PROTECTED_EXECUTION_CONTRACT.gate_command,\n request_id: options.identity.request_id,\n actor_user_id: options.identity.actor.user_id,\n preflight_proof_sha256: options.preflight.preflight_proof_sha256,\n gate: options.gate,\n result: {\n expected_sha256: expectedSha256,\n observed_sha256: observedSha256,\n status: 'passed',\n captured_at: capturedAt,\n },\n receipt_sha256: hash(value.receipt_sha256, 'gate.receipt_sha256'),\n };\n}\n\nexport function buildProtectedAdmitRequest(options: {\n preflight: ProtectedPreflightProof;\n gateResults: {\n primary_support_plan: ProtectedGateResult;\n execution_unused: ProtectedGateResult;\n derivative_quiescence: ProtectedGateResult;\n };\n}): JsonObject {\n return {\n schema_version: PROTECTED_EXECUTION_CONTRACT.admit_request_schema,\n request_id: options.preflight.request_id,\n preflight_token: options.preflight.preflight_token,\n preflight_proof_sha256: options.preflight.preflight_proof_sha256,\n gate_results: options.gateResults,\n };\n}\n\nexport function parseProtectedAdmissionProof(\n value: unknown,\n identity: ProtectedExecutionIdentity,\n preflight: ProtectedPreflightProof,\n): ProtectedAdmissionProof {\n if (\n !isJsonObject(value) ||\n value.ok !== true ||\n value.schema_version !== PROTECTED_EXECUTION_CONTRACT.admit_response_schema ||\n value.command !== PROTECTED_EXECUTION_CONTRACT.admit_command ||\n value.request_id !== identity.request_id ||\n value.plan_sha256 !== identity.plan_sha256 ||\n value.operation_id !== identity.operation_id ||\n value.plan_request_sha256 !== preflight.plan_request_sha256 ||\n value.preflight_proof_sha256 !== preflight.preflight_proof_sha256 ||\n value.status !== 'dispatched' ||\n value.attempt_count !== 1 ||\n value.dispatch_count !== 1 ||\n value.attempt_consumed !== true ||\n value.retry_allowed !== false\n ) {\n fail('Admission RPC returned a foreign, duplicate, or unsupported proof envelope.');\n }\n return {\n schema_version: PROTECTED_EXECUTION_CONTRACT.admit_response_schema,\n command: PROTECTED_EXECUTION_CONTRACT.admit_command,\n request_id: identity.request_id,\n plan_sha256: identity.plan_sha256,\n operation_id: identity.operation_id,\n plan_request_sha256: preflight.plan_request_sha256,\n preflight_proof_sha256: preflight.preflight_proof_sha256,\n admission_request_sha256: hash(value.admission_request_sha256, 'admission_request_sha256'),\n gate_results_sha256: hash(value.gate_results_sha256, 'gate_results_sha256'),\n status: 'dispatched',\n attempt_count: 1,\n dispatch_count: 1,\n net_request_id: token(value.net_request_id, 'net_request_id'),\n attempt_consumed: true,\n retry_allowed: false,\n };\n}\n\nfunction parseBindings(value: unknown): ProtectedExecutionBindings {\n if (!isJsonObject(value)) fail('bindings must be an object.');\n return Object.fromEntries(\n [\n 'plan_file_sha256',\n 'freeze_file_sha256',\n 'freeze_sha256',\n 'approval_file_sha256',\n 'approval_identity_sha256',\n 'approval_text_sha256',\n 'alias_plan_request_sha256',\n 'before_hash_set_sha256',\n 'desired_hash_set_sha256',\n 'exchange_rewrite_set_sha256',\n 'support_snapshot_set_sha256',\n 'derivative_baseline_set_sha256',\n 'derivative_target_set_sha256',\n 'toolchain_evidence_sha256',\n ].map((key) => [key, hash(value[key], `bindings.${key}`)]),\n ) as ProtectedExecutionBindings;\n}\n\nfunction nonNegativeInteger(value: unknown, label: string): number {\n if (!Number.isInteger(value) || Number(value) < 0)\n fail(`${label} must be a non-negative integer.`);\n return Number(value);\n}\n\nfunction requiredBoolean(value: unknown, label: string): boolean {\n return typeof value === 'boolean' ? value : fail(`${label} must be boolean.`);\n}\n\nfunction parseTerminalTarget(value: unknown, index: number): ProtectedTerminalTargetProof {\n const label = `derivative_readback.targets[${index}]`;\n if (!isJsonObject(value) || !isJsonObject(value.residue)) {\n fail(`${label} must be an object with residue counts.`);\n }\n if (value.table !== 'flows' && value.table !== 'processes') {\n fail(`${label}.table must be flows or processes.`);\n }\n const ordinal = nonNegativeInteger(value.ordinal, `${label}.ordinal`);\n if (ordinal < 1 || ordinal > PROTECTED_EXECUTION_COUNTS.derivative_target_count) {\n fail(`${label}.ordinal is outside the exact 50-target range.`);\n }\n return {\n ordinal,\n request_id: token(value.request_id, `${label}.request_id`),\n table: value.table,\n id: token(value.id, `${label}.id`),\n version: token(value.version, `${label}.version`),\n status: token(value.status, `${label}.status`),\n phase: token(value.phase, `${label}.phase`),\n source_baseline_snapshot_sha256: hash(\n value.source_baseline_snapshot_sha256,\n `${label}.source_baseline_snapshot_sha256`,\n ),\n expected_snapshot_sha256: hash(\n value.expected_snapshot_sha256,\n `${label}.expected_snapshot_sha256`,\n ),\n completed_snapshot_sha256: nullableHash(\n value.completed_snapshot_sha256,\n `${label}.completed_snapshot_sha256`,\n ),\n primary_matches: requiredBoolean(value.primary_matches, `${label}.primary_matches`),\n terminal_snapshot_matches: requiredBoolean(\n value.terminal_snapshot_matches,\n `${label}.terminal_snapshot_matches`,\n ),\n proposals_committed: requiredBoolean(value.proposals_committed, `${label}.proposals_committed`),\n derivative_fresh: requiredBoolean(value.derivative_fresh, `${label}.derivative_fresh`),\n lifecycle_complete: requiredBoolean(value.lifecycle_complete, `${label}.lifecycle_complete`),\n terminal_audit_present: requiredBoolean(\n value.terminal_audit_present,\n `${label}.terminal_audit_present`,\n ),\n residue: {\n http_requests: nonNegativeInteger(\n value.residue.http_requests,\n `${label}.residue.http_requests`,\n ),\n embedding_jobs: nonNegativeInteger(\n value.residue.embedding_jobs,\n `${label}.residue.embedding_jobs`,\n ),\n pending_jobs: nonNegativeInteger(value.residue.pending_jobs, `${label}.residue.pending_jobs`),\n failure_rows: nonNegativeInteger(value.residue.failure_rows, `${label}.residue.failure_rows`),\n other_active_fences: nonNegativeInteger(\n value.residue.other_active_fences,\n `${label}.residue.other_active_fences`,\n ),\n },\n causal_terminal_proof: requiredBoolean(\n value.causal_terminal_proof,\n `${label}.causal_terminal_proof`,\n ),\n };\n}\n\nfunction parseStatusTarget(value: unknown, index: number): ProtectedStatusTargetProof {\n const label = `derivative_readback.targets[${index}]`;\n if (!isJsonObject(value) || (value.table !== 'flows' && value.table !== 'processes')) {\n fail(`${label} must be a lightweight flow/process status proof.`);\n }\n const ordinal = nonNegativeInteger(value.ordinal, `${label}.ordinal`);\n if (ordinal < 1 || ordinal > PROTECTED_EXECUTION_COUNTS.derivative_target_count) {\n fail(`${label}.ordinal is outside the exact 50-target range.`);\n }\n if (value.causal_terminal_proof !== false) {\n fail(`${label}.causal_terminal_proof must be false while proof is deferred.`);\n }\n return {\n ordinal,\n request_id: token(value.request_id, `${label}.request_id`),\n table: value.table,\n id: token(value.id, `${label}.id`),\n version: token(value.version, `${label}.version`),\n status: token(value.status, `${label}.status`),\n phase: token(value.phase, `${label}.phase`),\n error:\n value.error === null\n ? null\n : isJsonObject(value.error)\n ? value.error\n : fail(`${label}.error must be an object or null.`),\n causal_terminal_proof: false,\n };\n}\n\nfunction parseReadGates(value: unknown): ProtectedExecutionStatusProof['gates'] {\n if (!Array.isArray(value)) fail('gates must be an array.');\n return value.map((entry, index) => {\n if (\n !isJsonObject(entry) ||\n !['primary_support_plan', 'execution_unused', 'derivative_quiescence'].includes(\n String(entry.gate),\n ) ||\n entry.status !== 'passed'\n ) {\n fail(`gates[${index}] is invalid.`);\n }\n return {\n gate: entry.gate as ProtectedGateProof['gate'],\n expected_sha256: hash(entry.expected_sha256, `gates[${index}].expected_sha256`),\n observed_sha256: hash(entry.observed_sha256, `gates[${index}].observed_sha256`),\n status: 'passed' as const,\n captured_at: timestamp(entry.captured_at, `gates[${index}].captured_at`),\n receipt_sha256: hash(entry.receipt_sha256, `gates[${index}].receipt_sha256`),\n };\n });\n}\n\nfunction parseDerivativeReadback(\n value: unknown,\n requestId: string,\n): ProtectedExecutionStatusProof['derivative_readback'] {\n if (\n !isJsonObject(value) ||\n value.schema_version !== 'dataset-derivative-rebuild-batch-status.v1' ||\n value.batch_id !== requestId ||\n !['not_started', 'pending', 'completed', 'failed'].includes(String(value.status))\n ) {\n fail('derivative_readback is invalid.');\n }\n const notStarted = value.status === 'not_started';\n const common = {\n schema_version: 'dataset-derivative-rebuild-batch-status.v1',\n batch_id: requestId,\n code:\n value.code === undefined || value.code === null\n ? null\n : token(value.code, 'derivative_readback.code'),\n causal_terminal_proof: requiredBoolean(\n value.causal_terminal_proof,\n 'derivative_readback.causal_terminal_proof',\n ),\n target_count: nonNegativeInteger(value.target_count, 'derivative_readback.target_count'),\n flow_count: nonNegativeInteger(value.flow_count, 'derivative_readback.flow_count'),\n process_count: nonNegativeInteger(value.process_count, 'derivative_readback.process_count'),\n completed_count: nonNegativeInteger(\n value.completed_count,\n 'derivative_readback.completed_count',\n ),\n nonterminal_count: nonNegativeInteger(\n value.nonterminal_count,\n 'derivative_readback.nonterminal_count',\n ),\n failed_count: nonNegativeInteger(value.failed_count, 'derivative_readback.failed_count'),\n } as const;\n if (notStarted) {\n if (\n value.code !== 'DERIVATIVE_BATCH_NOT_STARTED' ||\n value.proof_level !== 'none' ||\n value.proof_deferred !== false ||\n value.invalid_proof_count !== null ||\n !Array.isArray(value.targets) ||\n value.targets.length !== 0 ||\n common.causal_terminal_proof !== false ||\n common.target_count !== 0 ||\n common.flow_count !== 0 ||\n common.process_count !== 0 ||\n common.completed_count !== 0 ||\n common.nonterminal_count !== 0 ||\n common.failed_count !== 0\n ) {\n fail('Not-started derivative readback must carry the exact zero-count proof envelope.');\n }\n return {\n ...common,\n status: 'not_started',\n proof_level: 'none',\n proof_deferred: false,\n invalid_proof_count: null,\n targets: [],\n };\n }\n if (!Array.isArray(value.targets)) {\n fail('derivative_readback.targets must be an array.');\n }\n if (value.proof_level === 'status_only') {\n if (\n (value.status !== 'pending' && value.status !== 'failed') ||\n typeof value.proof_deferred !== 'boolean' ||\n value.invalid_proof_count !== null ||\n common.causal_terminal_proof !== false\n ) {\n fail('Status-only derivative readback has inconsistent proof metadata.');\n }\n return {\n ...common,\n status: value.status,\n proof_level: 'status_only',\n proof_deferred: value.proof_deferred,\n invalid_proof_count: null,\n targets: value.targets.map(parseStatusTarget),\n };\n }\n if (\n value.proof_level !== 'causal_terminal' ||\n value.proof_deferred !== false ||\n (value.status !== 'completed' && value.status !== 'failed')\n ) {\n fail('Terminal derivative readback must carry a causal proof envelope.');\n }\n return {\n ...common,\n status: value.status,\n proof_level: 'causal_terminal',\n proof_deferred: false,\n invalid_proof_count: nonNegativeInteger(\n value.invalid_proof_count,\n 'derivative_readback.invalid_proof_count',\n ),\n targets: value.targets.map(parseTerminalTarget),\n };\n}\n\nexport function parseProtectedStatusProof(\n value: unknown,\n identity: ProtectedExecutionIdentity,\n): ProtectedExecutionStatusProof {\n if (\n !isJsonObject(value) ||\n value.ok !== true ||\n value.schema_version !== PROTECTED_EXECUTION_CONTRACT.status_response_schema ||\n value.command !== PROTECTED_EXECUTION_CONTRACT.read_command ||\n value.request_id !== identity.request_id ||\n !['pending', 'passed', 'failed', 'indeterminate'].includes(String(value.status)) ||\n ![\n 'not_admitted',\n 'dispatching',\n 'dispatched',\n 'running',\n 'derivatives_pending',\n 'completed',\n 'failed',\n 'indeterminate',\n ].includes(String(value.execution_status)) ||\n value.retry_allowed !== false ||\n value.actor_user_id !== identity.actor.user_id ||\n value.environment !== identity.environment ||\n value.project_ref !== identity.project_ref ||\n value.plan_sha256 !== identity.plan_sha256 ||\n value.operation_id !== identity.operation_id\n ) {\n fail('Read RPC returned a foreign or unsupported status envelope.');\n }\n const executionStatus = value.execution_status as ProtectedExecutionStatus;\n const gates = parseReadGates(value.gates);\n if (executionStatus === 'not_admitted') {\n if (value.status !== 'indeterminate' || gates.length > 3) {\n fail('A not-admitted read must be indeterminate and contain at most three gate receipts.');\n }\n return {\n schema_version: PROTECTED_EXECUTION_CONTRACT.status_response_schema,\n command: PROTECTED_EXECUTION_CONTRACT.read_command,\n request_id: identity.request_id,\n status: 'indeterminate',\n execution_status: 'not_admitted',\n retry_allowed: false,\n actor_user_id: identity.actor.user_id,\n environment: 'production',\n project_ref: identity.project_ref,\n target_visibility: null,\n plan_sha256: identity.plan_sha256,\n operation_id: identity.operation_id,\n plan_request_sha256: hash(value.plan_request_sha256, 'plan_request_sha256'),\n freeze_sha256: null,\n approval_identity_sha256: null,\n approval_text_sha256: null,\n derivative_target_set_sha256: null,\n preflight_proof_sha256: hash(value.preflight_proof_sha256, 'preflight_proof_sha256'),\n admission_request_sha256: null,\n gate_results_sha256: null,\n attempt_count: 0,\n dispatch_count: 0,\n gate_count: nonNegativeInteger(value.gate_count, 'gate_count'),\n gates,\n primary_readback: null,\n derivative_readback: {\n schema_version: 'dataset-derivative-rebuild-batch-status.v1',\n batch_id: identity.request_id,\n status: 'not_started',\n proof_level: 'none',\n proof_deferred: false,\n code: 'ALIAS_EXECUTION_NOT_ADMITTED',\n causal_terminal_proof: false,\n target_count: 0,\n flow_count: 0,\n process_count: 0,\n completed_count: 0,\n nonterminal_count: 0,\n failed_count: 0,\n invalid_proof_count: null,\n targets: [],\n },\n failure: null,\n };\n }\n if (\n value.target_visibility !== 'owner_draft' ||\n value.freeze_sha256 !== identity.bindings.freeze_sha256 ||\n value.approval_identity_sha256 !== identity.bindings.approval_identity_sha256 ||\n value.approval_text_sha256 !== identity.bindings.approval_text_sha256 ||\n value.derivative_target_set_sha256 !== identity.bindings.derivative_target_set_sha256 ||\n !isJsonObject(value.primary_readback)\n ) {\n fail('Read RPC did not round-trip the sealed owner-draft execution bindings.');\n }\n const derivativeReadback = parseDerivativeReadback(\n value.derivative_readback,\n identity.request_id,\n );\n if (\n derivativeReadback.status === 'not_started' &&\n !['dispatching', 'dispatched', 'running', 'failed', 'indeterminate'].includes(executionStatus)\n ) {\n fail(\n 'A not-started derivative readback is only valid before derivative dispatch or after a zero-child terminal failure.',\n );\n }\n return {\n schema_version: PROTECTED_EXECUTION_CONTRACT.status_response_schema,\n command: PROTECTED_EXECUTION_CONTRACT.read_command,\n request_id: identity.request_id,\n status: value.status as ProtectedReportStatus,\n execution_status: executionStatus,\n retry_allowed: false,\n actor_user_id: identity.actor.user_id,\n environment: 'production',\n project_ref: identity.project_ref,\n target_visibility: 'owner_draft',\n plan_sha256: identity.plan_sha256,\n operation_id: identity.operation_id,\n plan_request_sha256: hash(value.plan_request_sha256, 'plan_request_sha256'),\n freeze_sha256: identity.bindings.freeze_sha256,\n approval_identity_sha256: identity.bindings.approval_identity_sha256,\n approval_text_sha256: identity.bindings.approval_text_sha256,\n derivative_target_set_sha256: identity.bindings.derivative_target_set_sha256,\n preflight_proof_sha256: hash(value.preflight_proof_sha256, 'preflight_proof_sha256'),\n admission_request_sha256: hash(value.admission_request_sha256, 'admission_request_sha256'),\n gate_results_sha256: hash(value.gate_results_sha256, 'gate_results_sha256'),\n attempt_count: nonNegativeInteger(value.attempt_count, 'attempt_count'),\n dispatch_count: nonNegativeInteger(value.dispatch_count, 'dispatch_count'),\n gate_count: nonNegativeInteger(value.gate_count, 'gate_count'),\n gates,\n primary_readback: {\n row_count:\n value.primary_readback.row_count === null\n ? null\n : nonNegativeInteger(value.primary_readback.row_count, 'primary_readback.row_count'),\n exchange_count:\n value.primary_readback.exchange_count === null\n ? null\n : nonNegativeInteger(\n value.primary_readback.exchange_count,\n 'primary_readback.exchange_count',\n ),\n alias_audit_count: nonNegativeInteger(\n value.primary_readback.alias_audit_count,\n 'primary_readback.alias_audit_count',\n ),\n live_closure_proof: requiredBoolean(\n value.primary_readback.live_closure_proof,\n 'primary_readback.live_closure_proof',\n ),\n closure: isJsonObject(value.primary_readback.closure)\n ? value.primary_readback.closure\n : fail('primary_readback.closure must be an object.'),\n },\n derivative_readback: derivativeReadback,\n failure:\n value.error === null\n ? null\n : isJsonObject(value.error)\n ? value.error\n : fail('error must be an object or null.'),\n };\n}\n\nexport function isUuid(value: string): boolean {\n return UUID.test(value);\n}\n\nexport const __testInternals = {\n deterministicUuidFromSha256,\n parseBindings,\n parseDerivativeTarget,\n parseExpected,\n};\n"]}
@@ -0,0 +1,230 @@
1
+ import path from 'node:path';
2
+ import { buildAliasPlanRequest } from './dataset-maintenance-alias-request.js';
3
+ import { readProtectedJsonArtifact, materializePrivateArtifactDirectoryAtomically, writePrivateImmutableJson, writePrivateImmutableText, } from './dataset-maintenance-protected-artifacts.js';
4
+ import { validateProtectedBeforeState, } from './dataset-maintenance-protected-before.js';
5
+ import { parseMaintenancePlan, sha256Json, sha256Text, stableJsonText, } from './dataset-maintenance-contract.js';
6
+ import { PROTECTED_EXECUTION_COUNTS, } from './dataset-maintenance-protected-contract.js';
7
+ import { assertProtectedPreparationPlanSha256, assertProtectedProductionProjectRef, buildProtectedApprovalRequest, buildProtectedFreeze, deriveProtectedDerivativeSnapshotTargets, } from './dataset-maintenance-protected-preparation.js';
8
+ import { fetchMaintenanceAccountRows, resolveMaintenanceRemoteContext, } from './dataset-maintenance-remote.js';
9
+ import { parseProtectedToolchainEvidence, } from './dataset-maintenance-protected-toolchain.js';
10
+ import { CliError } from './errors.js';
11
+ export const PROTECTED_FREEZE_ARTIFACTS = {
12
+ alias_plan_request: 'protected-alias-plan-request.json',
13
+ derivative_baselines: 'protected-derivative-baselines.json',
14
+ freeze: 'protected-execution-freeze.json',
15
+ approval_request: 'protected-approval-request.json',
16
+ approval_text: 'protected-approval-request.txt',
17
+ report: 'protected-freeze-report.json',
18
+ };
19
+ const DEFAULT_FREEZE_DEPENDENCIES = {
20
+ readArtifact: readProtectedJsonArtifact,
21
+ parsePlan: parseMaintenancePlan,
22
+ buildAliasPlan: buildAliasPlanRequest,
23
+ resolveContext: resolveMaintenanceRemoteContext,
24
+ fetchAccountRows: fetchMaintenanceAccountRows,
25
+ parseToolchain: parseProtectedToolchainEvidence,
26
+ deriveTargets: deriveProtectedDerivativeSnapshotTargets,
27
+ validateBefore: validateProtectedBeforeState,
28
+ buildFreeze: buildProtectedFreeze,
29
+ buildApprovalRequest: buildProtectedApprovalRequest,
30
+ writeJson: writePrivateImmutableJson,
31
+ writeText: writePrivateImmutableText,
32
+ materializeArtifacts: materializePrivateArtifactDirectoryAtomically,
33
+ };
34
+ function requiredToken(value, label) {
35
+ if (!value || value.trim() !== value) {
36
+ throw new CliError(`${label} must be a non-empty canonical string.`, {
37
+ code: 'DATASET_MAINTENANCE_PROTECTED_FREEZE_INPUT_INVALID',
38
+ exitCode: 2,
39
+ });
40
+ }
41
+ return value;
42
+ }
43
+ function assertContext(options) {
44
+ const account = options.context.account;
45
+ if (options.context.project_ref !== options.expectedProjectRef ||
46
+ account.user_id !== options.plan.account.user_id ||
47
+ account.email !== options.plan.account.email ||
48
+ account.email !== options.confirm) {
49
+ throw new CliError('Authenticated context does not match the explicitly confirmed production project and plan account.', {
50
+ code: 'DATASET_MAINTENANCE_PROTECTED_FREEZE_CONTEXT_MISMATCH',
51
+ exitCode: 1,
52
+ details: {
53
+ expected_project_ref: options.expectedProjectRef,
54
+ observed_project_ref: options.context.project_ref,
55
+ expected_user_id: options.plan.account.user_id,
56
+ observed_user_id: account.user_id,
57
+ },
58
+ });
59
+ }
60
+ return { user_id: account.user_id, email: account.email };
61
+ }
62
+ function assertCanonicalToolchainArtifact(options) {
63
+ if (options.artifactText !== `${stableJsonText(options.evidence)}\n`) {
64
+ throw new CliError('Toolchain evidence must be canonical JSON with exactly one final newline.', {
65
+ code: 'DATASET_MAINTENANCE_PROTECTED_TOOLCHAIN_NONCANONICAL',
66
+ exitCode: 2,
67
+ });
68
+ }
69
+ }
70
+ function artifactPaths(outDir) {
71
+ const resolved = path.resolve(outDir);
72
+ return Object.fromEntries(Object.entries(PROTECTED_FREEZE_ARTIFACTS).map(([key, name]) => [
73
+ key,
74
+ path.join(resolved, name),
75
+ ]));
76
+ }
77
+ function buildBaselineManifest(options) {
78
+ const snapshots = options.validation.derivative_snapshots;
79
+ return {
80
+ schema_version: 'dataset-alias-derivative-baselines.v1',
81
+ environment: 'production',
82
+ project_ref: options.context.project_ref,
83
+ account: options.account,
84
+ plan: {
85
+ plan_sha256: options.plan.plan_sha256,
86
+ operation_id: options.plan.operation_id,
87
+ },
88
+ target_count: 50,
89
+ flow_count: 23,
90
+ process_count: 27,
91
+ derivative_baseline_set_sha256: options.derivativeBaselineSetSha256,
92
+ derivative_snapshot_set_sha256: sha256Json(snapshots),
93
+ snapshots,
94
+ };
95
+ }
96
+ export async function freezeDatasetMaintenanceProtected(options, dependencies = DEFAULT_FREEZE_DEPENDENCIES) {
97
+ const planPath = requiredToken(options.planPath, 'planPath');
98
+ const toolchainEvidencePath = requiredToken(options.toolchainEvidencePath, 'toolchainEvidencePath');
99
+ const outDir = requiredToken(options.outDir, 'outDir');
100
+ const expectedProjectRef = requiredToken(options.expectedProjectRef, 'expectedProjectRef');
101
+ assertProtectedProductionProjectRef(expectedProjectRef);
102
+ const confirm = requiredToken(options.confirm, 'confirm');
103
+ const cliVersion = requiredToken(options.cliVersion, 'cliVersion');
104
+ const generatedAtUtc = (options.now ?? new Date()).toISOString();
105
+ const planArtifact = dependencies.readArtifact({
106
+ filePath: planPath,
107
+ label: 'Protected maintenance plan',
108
+ });
109
+ const plan = dependencies.parsePlan(planArtifact.value);
110
+ assertProtectedPreparationPlanSha256(plan.plan_sha256, 'plan.plan_sha256');
111
+ const planDir = path.dirname(planArtifact.resolved);
112
+ const aliasPlanRequest = dependencies.buildAliasPlan({ plan, planDir });
113
+ const toolchainArtifact = dependencies.readArtifact({
114
+ filePath: toolchainEvidencePath,
115
+ label: 'Protected toolchain evidence',
116
+ });
117
+ const toolchainEvidence = dependencies.parseToolchain(toolchainArtifact.value, {
118
+ projectRef: expectedProjectRef,
119
+ cliVersion,
120
+ });
121
+ assertCanonicalToolchainArtifact({
122
+ artifactText: toolchainArtifact.text,
123
+ evidence: toolchainEvidence,
124
+ });
125
+ const context = await dependencies.resolveContext({
126
+ env: options.env,
127
+ fetchImpl: options.fetchImpl,
128
+ timeoutMs: options.timeoutMs,
129
+ now: options.now,
130
+ });
131
+ const account = assertContext({ context, plan, expectedProjectRef, confirm });
132
+ const current = await dependencies.fetchAccountRows({
133
+ context,
134
+ userId: account.user_id,
135
+ pageSize: options.pageSize,
136
+ });
137
+ const derivativeTargets = dependencies.deriveTargets(plan, account);
138
+ const validation = await dependencies.validateBefore({
139
+ plan,
140
+ planDir,
141
+ actorUserId: account.user_id,
142
+ currentRows: current.rows,
143
+ completeness: current.completeness,
144
+ context,
145
+ derivativeMode: 'capture',
146
+ derivativeTargets,
147
+ });
148
+ const builtFreeze = dependencies.buildFreeze({
149
+ plan,
150
+ planFileSha256: planArtifact.file_sha256,
151
+ aliasPlanRequest,
152
+ projectRef: context.project_ref,
153
+ account,
154
+ toolchainEvidenceSha256: toolchainArtifact.file_sha256,
155
+ derivativeSnapshots: validation.derivative_snapshots,
156
+ });
157
+ const approvalRequest = dependencies.buildApprovalRequest({
158
+ freeze: builtFreeze.value,
159
+ freezeFileSha256: builtFreeze.file_sha256,
160
+ approvedAtUtc: generatedAtUtc,
161
+ });
162
+ const baselineManifest = buildBaselineManifest({
163
+ context,
164
+ plan,
165
+ account,
166
+ validation,
167
+ derivativeBaselineSetSha256: builtFreeze.value.sets.derivative_baseline_set_sha256,
168
+ });
169
+ const paths = artifactPaths(outDir);
170
+ const aliasPlanText = `${stableJsonText(aliasPlanRequest)}\n`;
171
+ const baselineText = `${stableJsonText(baselineManifest)}\n`;
172
+ const report = {
173
+ schema_version: 'dataset-alias-protected-freeze-report.v1',
174
+ generated_at_utc: generatedAtUtc,
175
+ status: 'ready_for_human_approval',
176
+ remote_write_mode: 'read_only',
177
+ environment: 'production',
178
+ project_ref: context.project_ref,
179
+ account,
180
+ plan_sha256: plan.plan_sha256,
181
+ operation_id: plan.operation_id,
182
+ freeze_sha256: builtFreeze.value.freeze_sha256,
183
+ approval_request_sha256: approvalRequest.value.request_sha256,
184
+ approval_text_sha256: approvalRequest.value.approval_text_sha256,
185
+ toolchain_evidence_sha256: toolchainArtifact.file_sha256,
186
+ derivative_baseline_set_sha256: builtFreeze.value.sets.derivative_baseline_set_sha256,
187
+ derivative_snapshot_set_sha256: baselineManifest.derivative_snapshot_set_sha256,
188
+ counts: PROTECTED_EXECUTION_COUNTS,
189
+ assertions: {
190
+ account_census_complete: true,
191
+ strict_before_state: true,
192
+ projected_reference_closure: true,
193
+ support_snapshots: 6,
194
+ derivative_snapshots: 50,
195
+ preflight_calls: 0,
196
+ gate_calls: 0,
197
+ admission_calls: 0,
198
+ mutation_calls: 0,
199
+ approval_artifacts: 0,
200
+ },
201
+ artifacts: paths,
202
+ artifact_sha256: {
203
+ alias_plan_request: sha256Text(aliasPlanText),
204
+ derivative_baselines: sha256Text(baselineText),
205
+ freeze: builtFreeze.file_sha256,
206
+ approval_request: approvalRequest.file_sha256,
207
+ approval_text: approvalRequest.value.approval_text_sha256,
208
+ report: null,
209
+ },
210
+ };
211
+ dependencies.materializeArtifacts(outDir, (stagingDirectory) => {
212
+ const staging = artifactPaths(stagingDirectory);
213
+ dependencies.writeText(staging.alias_plan_request, aliasPlanText);
214
+ dependencies.writeText(staging.derivative_baselines, baselineText);
215
+ dependencies.writeText(staging.freeze, builtFreeze.canonical_file_text);
216
+ dependencies.writeText(staging.approval_request, approvalRequest.canonical_file_text);
217
+ dependencies.writeText(staging.approval_text, approvalRequest.value.approval_text);
218
+ dependencies.writeJson(staging.report, report);
219
+ });
220
+ return report;
221
+ }
222
+ export const __testInternals = {
223
+ artifactPaths,
224
+ assertCanonicalToolchainArtifact,
225
+ assertContext,
226
+ buildBaselineManifest,
227
+ DEFAULT_FREEZE_DEPENDENCIES,
228
+ requiredToken,
229
+ };
230
+ //# sourceMappingURL=dataset-maintenance-protected-freeze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataset-maintenance-protected-freeze.js","sourceRoot":"","sources":["../../../src/lib/dataset-maintenance-protected-freeze.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'node:path';\nimport { buildAliasPlanRequest } from './dataset-maintenance-alias-request.js';\nimport {\n readProtectedJsonArtifact,\n materializePrivateArtifactDirectoryAtomically,\n writePrivateImmutableJson,\n writePrivateImmutableText,\n} from './dataset-maintenance-protected-artifacts.js';\nimport {\n validateProtectedBeforeState,\n type ProtectedBeforeValidationResult,\n} from './dataset-maintenance-protected-before.js';\nimport {\n parseMaintenancePlan,\n sha256Json,\n sha256Text,\n stableJsonText,\n type DatasetMaintenancePlan,\n} from './dataset-maintenance-contract.js';\nimport {\n PROTECTED_EXECUTION_COUNTS,\n type ProtectedDerivativeSnapshot,\n} from './dataset-maintenance-protected-contract.js';\nimport {\n assertProtectedPreparationPlanSha256,\n assertProtectedProductionProjectRef,\n buildProtectedApprovalRequest,\n buildProtectedFreeze,\n deriveProtectedDerivativeSnapshotTargets,\n} from './dataset-maintenance-protected-preparation.js';\nimport {\n fetchMaintenanceAccountRows,\n resolveMaintenanceRemoteContext,\n type DatasetMaintenanceRemoteContext,\n} from './dataset-maintenance-remote.js';\nimport {\n parseProtectedToolchainEvidence,\n type DatasetMaintenanceProtectedToolchainEvidence,\n} from './dataset-maintenance-protected-toolchain.js';\nimport { CliError } from './errors.js';\nimport type { FetchLike } from './http.js';\n\nexport const PROTECTED_FREEZE_ARTIFACTS = {\n alias_plan_request: 'protected-alias-plan-request.json',\n derivative_baselines: 'protected-derivative-baselines.json',\n freeze: 'protected-execution-freeze.json',\n approval_request: 'protected-approval-request.json',\n approval_text: 'protected-approval-request.txt',\n report: 'protected-freeze-report.json',\n} as const;\n\nexport type FreezeDatasetMaintenanceProtectedOptions = {\n planPath: string;\n toolchainEvidencePath: string;\n outDir: string;\n expectedProjectRef: string;\n confirm: string;\n cliVersion: string;\n pageSize?: number;\n timeoutMs?: number;\n env: NodeJS.ProcessEnv;\n fetchImpl: FetchLike;\n now?: Date;\n};\n\nexport type DatasetMaintenanceProtectedBaselineManifest = {\n schema_version: 'dataset-alias-derivative-baselines.v1';\n environment: 'production';\n project_ref: string;\n account: { user_id: string; email: string };\n plan: { plan_sha256: string; operation_id: string };\n target_count: 50;\n flow_count: 23;\n process_count: 27;\n derivative_baseline_set_sha256: string;\n derivative_snapshot_set_sha256: string;\n snapshots: ProtectedDerivativeSnapshot[];\n};\n\nexport type DatasetMaintenanceProtectedFreezeReport = {\n schema_version: 'dataset-alias-protected-freeze-report.v1';\n generated_at_utc: string;\n status: 'ready_for_human_approval';\n remote_write_mode: 'read_only';\n environment: 'production';\n project_ref: string;\n account: { user_id: string; email: string };\n plan_sha256: string;\n operation_id: string;\n freeze_sha256: string;\n approval_request_sha256: string;\n approval_text_sha256: string;\n toolchain_evidence_sha256: string;\n derivative_baseline_set_sha256: string;\n derivative_snapshot_set_sha256: string;\n counts: typeof PROTECTED_EXECUTION_COUNTS;\n assertions: {\n account_census_complete: true;\n strict_before_state: true;\n projected_reference_closure: true;\n support_snapshots: 6;\n derivative_snapshots: 50;\n preflight_calls: 0;\n gate_calls: 0;\n admission_calls: 0;\n mutation_calls: 0;\n approval_artifacts: 0;\n };\n artifacts: {\n alias_plan_request: string;\n derivative_baselines: string;\n freeze: string;\n approval_request: string;\n approval_text: string;\n report: string;\n };\n artifact_sha256: {\n alias_plan_request: string;\n derivative_baselines: string;\n freeze: string;\n approval_request: string;\n approval_text: string;\n report: null;\n };\n};\n\ntype FreezeProtectedDependencies = {\n readArtifact: typeof readProtectedJsonArtifact;\n parsePlan: typeof parseMaintenancePlan;\n buildAliasPlan: typeof buildAliasPlanRequest;\n resolveContext: typeof resolveMaintenanceRemoteContext;\n fetchAccountRows: typeof fetchMaintenanceAccountRows;\n parseToolchain: typeof parseProtectedToolchainEvidence;\n deriveTargets: typeof deriveProtectedDerivativeSnapshotTargets;\n validateBefore: typeof validateProtectedBeforeState;\n buildFreeze: typeof buildProtectedFreeze;\n buildApprovalRequest: typeof buildProtectedApprovalRequest;\n writeJson: typeof writePrivateImmutableJson;\n writeText: typeof writePrivateImmutableText;\n materializeArtifacts: typeof materializePrivateArtifactDirectoryAtomically;\n};\n\nconst DEFAULT_FREEZE_DEPENDENCIES: FreezeProtectedDependencies = {\n readArtifact: readProtectedJsonArtifact,\n parsePlan: parseMaintenancePlan,\n buildAliasPlan: buildAliasPlanRequest,\n resolveContext: resolveMaintenanceRemoteContext,\n fetchAccountRows: fetchMaintenanceAccountRows,\n parseToolchain: parseProtectedToolchainEvidence,\n deriveTargets: deriveProtectedDerivativeSnapshotTargets,\n validateBefore: validateProtectedBeforeState,\n buildFreeze: buildProtectedFreeze,\n buildApprovalRequest: buildProtectedApprovalRequest,\n writeJson: writePrivateImmutableJson,\n writeText: writePrivateImmutableText,\n materializeArtifacts: materializePrivateArtifactDirectoryAtomically,\n};\n\nfunction requiredToken(value: string, label: string): string {\n if (!value || value.trim() !== value) {\n throw new CliError(`${label} must be a non-empty canonical string.`, {\n code: 'DATASET_MAINTENANCE_PROTECTED_FREEZE_INPUT_INVALID',\n exitCode: 2,\n });\n }\n return value;\n}\n\nfunction assertContext(options: {\n context: DatasetMaintenanceRemoteContext;\n plan: DatasetMaintenancePlan;\n expectedProjectRef: string;\n confirm: string;\n}): { user_id: string; email: string } {\n const account = options.context.account;\n if (\n options.context.project_ref !== options.expectedProjectRef ||\n account.user_id !== options.plan.account.user_id ||\n account.email !== options.plan.account.email ||\n account.email !== options.confirm\n ) {\n throw new CliError(\n 'Authenticated context does not match the explicitly confirmed production project and plan account.',\n {\n code: 'DATASET_MAINTENANCE_PROTECTED_FREEZE_CONTEXT_MISMATCH',\n exitCode: 1,\n details: {\n expected_project_ref: options.expectedProjectRef,\n observed_project_ref: options.context.project_ref,\n expected_user_id: options.plan.account.user_id,\n observed_user_id: account.user_id,\n },\n },\n );\n }\n return { user_id: account.user_id, email: account.email };\n}\n\nfunction assertCanonicalToolchainArtifact(options: {\n artifactText: string;\n evidence: DatasetMaintenanceProtectedToolchainEvidence;\n}): void {\n if (options.artifactText !== `${stableJsonText(options.evidence)}\\n`) {\n throw new CliError(\n 'Toolchain evidence must be canonical JSON with exactly one final newline.',\n {\n code: 'DATASET_MAINTENANCE_PROTECTED_TOOLCHAIN_NONCANONICAL',\n exitCode: 2,\n },\n );\n }\n}\n\nfunction artifactPaths(outDir: string): DatasetMaintenanceProtectedFreezeReport['artifacts'] {\n const resolved = path.resolve(outDir);\n return Object.fromEntries(\n Object.entries(PROTECTED_FREEZE_ARTIFACTS).map(([key, name]) => [\n key,\n path.join(resolved, name),\n ]),\n ) as DatasetMaintenanceProtectedFreezeReport['artifacts'];\n}\n\nfunction buildBaselineManifest(options: {\n context: DatasetMaintenanceRemoteContext;\n plan: DatasetMaintenancePlan;\n account: { user_id: string; email: string };\n validation: ProtectedBeforeValidationResult;\n derivativeBaselineSetSha256: string;\n}): DatasetMaintenanceProtectedBaselineManifest {\n const snapshots = options.validation.derivative_snapshots;\n return {\n schema_version: 'dataset-alias-derivative-baselines.v1',\n environment: 'production',\n project_ref: options.context.project_ref,\n account: options.account,\n plan: {\n plan_sha256: options.plan.plan_sha256,\n operation_id: options.plan.operation_id,\n },\n target_count: 50,\n flow_count: 23,\n process_count: 27,\n derivative_baseline_set_sha256: options.derivativeBaselineSetSha256,\n derivative_snapshot_set_sha256: sha256Json(snapshots),\n snapshots,\n };\n}\n\nexport async function freezeDatasetMaintenanceProtected(\n options: FreezeDatasetMaintenanceProtectedOptions,\n dependencies: FreezeProtectedDependencies = DEFAULT_FREEZE_DEPENDENCIES,\n): Promise<DatasetMaintenanceProtectedFreezeReport> {\n const planPath = requiredToken(options.planPath, 'planPath');\n const toolchainEvidencePath = requiredToken(\n options.toolchainEvidencePath,\n 'toolchainEvidencePath',\n );\n const outDir = requiredToken(options.outDir, 'outDir');\n const expectedProjectRef = requiredToken(options.expectedProjectRef, 'expectedProjectRef');\n assertProtectedProductionProjectRef(expectedProjectRef);\n const confirm = requiredToken(options.confirm, 'confirm');\n const cliVersion = requiredToken(options.cliVersion, 'cliVersion');\n const generatedAtUtc = (options.now ?? new Date()).toISOString();\n\n const planArtifact = dependencies.readArtifact({\n filePath: planPath,\n label: 'Protected maintenance plan',\n });\n const plan = dependencies.parsePlan(planArtifact.value);\n assertProtectedPreparationPlanSha256(plan.plan_sha256, 'plan.plan_sha256');\n const planDir = path.dirname(planArtifact.resolved);\n const aliasPlanRequest = dependencies.buildAliasPlan({ plan, planDir });\n\n const toolchainArtifact = dependencies.readArtifact({\n filePath: toolchainEvidencePath,\n label: 'Protected toolchain evidence',\n });\n const toolchainEvidence = dependencies.parseToolchain(toolchainArtifact.value, {\n projectRef: expectedProjectRef,\n cliVersion,\n });\n assertCanonicalToolchainArtifact({\n artifactText: toolchainArtifact.text,\n evidence: toolchainEvidence,\n });\n\n const context = await dependencies.resolveContext({\n env: options.env,\n fetchImpl: options.fetchImpl,\n timeoutMs: options.timeoutMs,\n now: options.now,\n });\n const account = assertContext({ context, plan, expectedProjectRef, confirm });\n\n const current = await dependencies.fetchAccountRows({\n context,\n userId: account.user_id,\n pageSize: options.pageSize,\n });\n const derivativeTargets = dependencies.deriveTargets(plan, account);\n const validation = await dependencies.validateBefore({\n plan,\n planDir,\n actorUserId: account.user_id,\n currentRows: current.rows,\n completeness: current.completeness,\n context,\n derivativeMode: 'capture',\n derivativeTargets,\n });\n const builtFreeze = dependencies.buildFreeze({\n plan,\n planFileSha256: planArtifact.file_sha256,\n aliasPlanRequest,\n projectRef: context.project_ref,\n account,\n toolchainEvidenceSha256: toolchainArtifact.file_sha256,\n derivativeSnapshots: validation.derivative_snapshots,\n });\n const approvalRequest = dependencies.buildApprovalRequest({\n freeze: builtFreeze.value,\n freezeFileSha256: builtFreeze.file_sha256,\n approvedAtUtc: generatedAtUtc,\n });\n const baselineManifest = buildBaselineManifest({\n context,\n plan,\n account,\n validation,\n derivativeBaselineSetSha256: builtFreeze.value.sets.derivative_baseline_set_sha256,\n });\n const paths = artifactPaths(outDir);\n const aliasPlanText = `${stableJsonText(aliasPlanRequest)}\\n`;\n const baselineText = `${stableJsonText(baselineManifest)}\\n`;\n const report: DatasetMaintenanceProtectedFreezeReport = {\n schema_version: 'dataset-alias-protected-freeze-report.v1',\n generated_at_utc: generatedAtUtc,\n status: 'ready_for_human_approval',\n remote_write_mode: 'read_only',\n environment: 'production',\n project_ref: context.project_ref,\n account,\n plan_sha256: plan.plan_sha256,\n operation_id: plan.operation_id,\n freeze_sha256: builtFreeze.value.freeze_sha256,\n approval_request_sha256: approvalRequest.value.request_sha256,\n approval_text_sha256: approvalRequest.value.approval_text_sha256,\n toolchain_evidence_sha256: toolchainArtifact.file_sha256,\n derivative_baseline_set_sha256: builtFreeze.value.sets.derivative_baseline_set_sha256,\n derivative_snapshot_set_sha256: baselineManifest.derivative_snapshot_set_sha256,\n counts: PROTECTED_EXECUTION_COUNTS,\n assertions: {\n account_census_complete: true,\n strict_before_state: true,\n projected_reference_closure: true,\n support_snapshots: 6,\n derivative_snapshots: 50,\n preflight_calls: 0,\n gate_calls: 0,\n admission_calls: 0,\n mutation_calls: 0,\n approval_artifacts: 0,\n },\n artifacts: paths,\n artifact_sha256: {\n alias_plan_request: sha256Text(aliasPlanText),\n derivative_baselines: sha256Text(baselineText),\n freeze: builtFreeze.file_sha256,\n approval_request: approvalRequest.file_sha256,\n approval_text: approvalRequest.value.approval_text_sha256,\n report: null,\n },\n };\n\n dependencies.materializeArtifacts(outDir, (stagingDirectory) => {\n const staging = artifactPaths(stagingDirectory);\n dependencies.writeText(staging.alias_plan_request, aliasPlanText);\n dependencies.writeText(staging.derivative_baselines, baselineText);\n dependencies.writeText(staging.freeze, builtFreeze.canonical_file_text);\n dependencies.writeText(staging.approval_request, approvalRequest.canonical_file_text);\n dependencies.writeText(staging.approval_text, approvalRequest.value.approval_text);\n dependencies.writeJson(staging.report, report);\n });\n return report;\n}\n\nexport const __testInternals = {\n artifactPaths,\n assertCanonicalToolchainArtifact,\n assertContext,\n buildBaselineManifest,\n DEFAULT_FREEZE_DEPENDENCIES,\n requiredToken,\n};\n"]}