@tiangong-lca/cli 0.0.26 → 0.0.28
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/dist/src/lib/dataset-maintenance-protected-contract.js +25 -3
- package/dist/src/lib/dataset-maintenance-protected-contract.js.map +1 -1
- package/dist/src/lib/dataset-maintenance-protected-verify.js +76 -1
- package/dist/src/lib/dataset-maintenance-protected-verify.js.map +1 -1
- package/package.json +1 -1
|
@@ -32,10 +32,13 @@ export const PROTECTED_EXECUTION_COUNTS = {
|
|
|
32
32
|
const SHA256 = /^[a-f0-9]{64}$/u;
|
|
33
33
|
const 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;
|
|
34
34
|
const VERSION = /^[0-9]{2}\.[0-9]{2}\.[0-9]{3}$/u;
|
|
35
|
-
|
|
35
|
+
const PROTECTED_PREFLIGHT_MAX_WINDOW_MS = 180_000;
|
|
36
|
+
const PROTECTED_SERVER_CLOCK_SKEW_TOLERANCE_MS = 5_000;
|
|
37
|
+
function fail(message, details) {
|
|
36
38
|
throw new CliError(message, {
|
|
37
39
|
code: 'DATASET_MAINTENANCE_PROTECTED_CONTRACT_INVALID',
|
|
38
40
|
exitCode: 2,
|
|
41
|
+
details,
|
|
39
42
|
});
|
|
40
43
|
}
|
|
41
44
|
function token(value, label) {
|
|
@@ -489,8 +492,27 @@ export function parseProtectedPreflightProof(value, identity, now = new Date())
|
|
|
489
492
|
}
|
|
490
493
|
const issued = Date.parse(proof.completed_at);
|
|
491
494
|
const expires = Date.parse(proof.expires_at);
|
|
492
|
-
|
|
493
|
-
|
|
495
|
+
const nowMs = now.getTime();
|
|
496
|
+
const windowMs = expires - issued;
|
|
497
|
+
const timingDetails = {
|
|
498
|
+
completed_at: proof.completed_at,
|
|
499
|
+
expires_at: proof.expires_at,
|
|
500
|
+
observed_at: now.toISOString(),
|
|
501
|
+
window_ms: windowMs,
|
|
502
|
+
future_skew_ms: issued - nowMs,
|
|
503
|
+
allowed_future_skew_ms: PROTECTED_SERVER_CLOCK_SKEW_TOLERANCE_MS,
|
|
504
|
+
};
|
|
505
|
+
if (windowMs <= 0) {
|
|
506
|
+
fail('Preflight token expiry must be later than its completion time.', timingDetails);
|
|
507
|
+
}
|
|
508
|
+
if (windowMs > PROTECTED_PREFLIGHT_MAX_WINDOW_MS) {
|
|
509
|
+
fail('Preflight token exceeds the 180-second admission window.', timingDetails);
|
|
510
|
+
}
|
|
511
|
+
if (issued - nowMs > PROTECTED_SERVER_CLOCK_SKEW_TOLERANCE_MS) {
|
|
512
|
+
fail('Preflight token is future-issued beyond the 5-second clock-skew allowance.', timingDetails);
|
|
513
|
+
}
|
|
514
|
+
if (expires <= nowMs) {
|
|
515
|
+
fail('Preflight token is stale.', timingDetails);
|
|
494
516
|
}
|
|
495
517
|
return proof;
|
|
496
518
|
}
|
|
@@ -1 +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"]}
|
|
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;\nconst PROTECTED_PREFLIGHT_MAX_WINDOW_MS = 180_000;\nconst PROTECTED_SERVER_CLOCK_SKEW_TOLERANCE_MS = 5_000;\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, details?: unknown): never {\n throw new CliError(message, {\n code: 'DATASET_MAINTENANCE_PROTECTED_CONTRACT_INVALID',\n exitCode: 2,\n details,\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 const nowMs = now.getTime();\n const windowMs = expires - issued;\n const timingDetails = {\n completed_at: proof.completed_at,\n expires_at: proof.expires_at,\n observed_at: now.toISOString(),\n window_ms: windowMs,\n future_skew_ms: issued - nowMs,\n allowed_future_skew_ms: PROTECTED_SERVER_CLOCK_SKEW_TOLERANCE_MS,\n };\n if (windowMs <= 0) {\n fail('Preflight token expiry must be later than its completion time.', timingDetails);\n }\n if (windowMs > PROTECTED_PREFLIGHT_MAX_WINDOW_MS) {\n fail('Preflight token exceeds the 180-second admission window.', timingDetails);\n }\n if (issued - nowMs > PROTECTED_SERVER_CLOCK_SKEW_TOLERANCE_MS) {\n fail(\n 'Preflight token is future-issued beyond the 5-second clock-skew allowance.',\n timingDetails,\n );\n }\n if (expires <= nowMs) {\n fail('Preflight token is stale.', timingDetails);\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"]}
|
|
@@ -11,6 +11,72 @@ function issue(code, message, details) {
|
|
|
11
11
|
function requiredString(value) {
|
|
12
12
|
return typeof value === 'string' && value.trim() ? value : null;
|
|
13
13
|
}
|
|
14
|
+
function parsePrimaryActionEvidence(value) {
|
|
15
|
+
if (!isJsonObject(value))
|
|
16
|
+
return null;
|
|
17
|
+
const actionId = requiredString(value.action_id);
|
|
18
|
+
const id = requiredString(value.id);
|
|
19
|
+
const version = requiredString(value.version);
|
|
20
|
+
const desiredJsonOrderedSha256 = requiredString(value.desired_json_ordered_sha256);
|
|
21
|
+
const liveJsonSha256 = requiredString(value.live_json_sha256);
|
|
22
|
+
const liveJsonOrderedSha256 = requiredString(value.live_json_ordered_sha256);
|
|
23
|
+
if (!actionId ||
|
|
24
|
+
(value.table !== 'flowproperties' && value.table !== 'flows' && value.table !== 'processes') ||
|
|
25
|
+
!id ||
|
|
26
|
+
!version ||
|
|
27
|
+
value.row_found !== true ||
|
|
28
|
+
value.owner_matches !== true ||
|
|
29
|
+
value.state_code_matches !== true ||
|
|
30
|
+
value.json_matches !== true ||
|
|
31
|
+
value.json_ordered_matches !== true ||
|
|
32
|
+
!desiredJsonOrderedSha256 ||
|
|
33
|
+
!SHA256.test(desiredJsonOrderedSha256) ||
|
|
34
|
+
!liveJsonSha256 ||
|
|
35
|
+
!SHA256.test(liveJsonSha256) ||
|
|
36
|
+
!liveJsonOrderedSha256 ||
|
|
37
|
+
!SHA256.test(liveJsonOrderedSha256) ||
|
|
38
|
+
value.valid !== true) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
action_id: actionId,
|
|
43
|
+
table: value.table,
|
|
44
|
+
id,
|
|
45
|
+
version,
|
|
46
|
+
row_found: true,
|
|
47
|
+
owner_matches: true,
|
|
48
|
+
state_code_matches: true,
|
|
49
|
+
json_matches: true,
|
|
50
|
+
json_ordered_matches: true,
|
|
51
|
+
desired_json_ordered_sha256: desiredJsonOrderedSha256,
|
|
52
|
+
live_json_sha256: liveJsonSha256,
|
|
53
|
+
live_json_ordered_sha256: liveJsonOrderedSha256,
|
|
54
|
+
valid: true,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function indexPrimaryActionEvidence(options) {
|
|
58
|
+
if (!isJsonObject(options.closure) || !Array.isArray(options.closure.action_evidence)) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (options.closure.action_evidence.length !== options.plan.actions.length)
|
|
62
|
+
return null;
|
|
63
|
+
const byKey = new Map();
|
|
64
|
+
const actionIds = new Set();
|
|
65
|
+
for (const raw of options.closure.action_evidence) {
|
|
66
|
+
const evidence = parsePrimaryActionEvidence(raw);
|
|
67
|
+
if (!evidence)
|
|
68
|
+
return null;
|
|
69
|
+
const key = maintenanceRowKey(evidence);
|
|
70
|
+
if (byKey.has(key) || actionIds.has(evidence.action_id))
|
|
71
|
+
return null;
|
|
72
|
+
byKey.set(key, evidence);
|
|
73
|
+
actionIds.add(evidence.action_id);
|
|
74
|
+
}
|
|
75
|
+
if (options.plan.actions.some((action) => byKey.get(maintenanceRowKey(action))?.action_id !== action.action_id)) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
return byKey;
|
|
79
|
+
}
|
|
14
80
|
export function inspectProtectedLiveDerivative(row) {
|
|
15
81
|
const raw = row.raw;
|
|
16
82
|
const jsonOrdered = isJsonObject(raw.json_ordered) ? raw.json_ordered : null;
|
|
@@ -254,6 +320,10 @@ function matchLiveTargets(options) {
|
|
|
254
320
|
const snapshots = new Map(options.snapshots.map((snapshot) => [terminalTargetKey(snapshot), snapshot]));
|
|
255
321
|
const live = new Map(options.live.map((row) => [terminalTargetKey(row), row]));
|
|
256
322
|
const actions = new Map(options.plan.actions.map((action) => [maintenanceRowKey(action), action]));
|
|
323
|
+
const primaryEvidence = indexPrimaryActionEvidence({
|
|
324
|
+
closure: options.primaryClosure,
|
|
325
|
+
plan: options.plan,
|
|
326
|
+
});
|
|
257
327
|
const issues = [];
|
|
258
328
|
const expectedKeys = new Set(options.identity.derivative_targets.map(terminalTargetKey));
|
|
259
329
|
const liveKeys = options.live.map(terminalTargetKey);
|
|
@@ -271,16 +341,20 @@ function matchLiveTargets(options) {
|
|
|
271
341
|
const proof = proofs.get(key);
|
|
272
342
|
const snapshot = snapshots.get(key);
|
|
273
343
|
const action = actions.get(key);
|
|
344
|
+
const evidence = primaryEvidence?.get(key);
|
|
274
345
|
if (!row ||
|
|
275
346
|
!proof ||
|
|
276
347
|
!snapshot ||
|
|
277
348
|
!action?.desired_payload ||
|
|
349
|
+
!evidence ||
|
|
278
350
|
row.user_id !== options.identity.actor.user_id ||
|
|
279
351
|
row.state_code !== 0 ||
|
|
280
352
|
snapshot.user_id !== options.identity.actor.user_id ||
|
|
281
353
|
snapshot.state_code !== 0 ||
|
|
282
354
|
row.json_ordered_sha256 !== action.desired_payload.sha256 ||
|
|
283
|
-
|
|
355
|
+
evidence.live_json_sha256 !== evidence.desired_json_ordered_sha256 ||
|
|
356
|
+
evidence.live_json_ordered_sha256 !== evidence.desired_json_ordered_sha256 ||
|
|
357
|
+
snapshot.json_ordered_sha256 !== evidence.desired_json_ordered_sha256 ||
|
|
284
358
|
snapshot.snapshot_sha256 !== proof.completed_snapshot_sha256 ||
|
|
285
359
|
!snapshot.extracted_md_sha256 ||
|
|
286
360
|
!snapshot.embedding_ft_sha256 ||
|
|
@@ -395,6 +469,7 @@ async function verifyProtectedExecutionWithDependencies(options, dependencies) {
|
|
|
395
469
|
proofs: terminalProofs,
|
|
396
470
|
live: validLive,
|
|
397
471
|
snapshots,
|
|
472
|
+
primaryClosure: options.proof.primary_readback?.closure,
|
|
398
473
|
plan: options.plan,
|
|
399
474
|
identity: options.identity,
|
|
400
475
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-maintenance-protected-verify.js","sourceRoot":"","sources":["../../../src/lib/dataset-maintenance-protected-verify.ts"],"names":[],"mappings":"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","sourcesContent":["import { loadMaintenanceDesiredPayload } from './dataset-maintenance-alias-request.js';\nimport {\n isJsonObject,\n maintenanceRowKey,\n sha256Json,\n snapshotRemoteRow,\n type DatasetMaintenancePlan,\n type DatasetMaintenanceRemoteRow,\n} from './dataset-maintenance-contract.js';\nimport {\n PROTECTED_EXECUTION_COUNTS,\n parseProtectedDerivativeSnapshot,\n type ProtectedDerivativeSnapshot,\n type ProtectedExecutionIdentity,\n type ProtectedExecutionStatusProof,\n type ProtectedReportStatus,\n type ProtectedTerminalTargetProof,\n} from './dataset-maintenance-protected-contract.js';\nimport { maintenanceProjectedReferenceFingerprint } from './dataset-maintenance-plan.js';\nimport { isSnapshotCompletenessCompatible } from './dataset-maintenance-pagination.js';\nimport {\n fetchMaintenanceAccountRows,\n fetchMaintenanceDerivativeSnapshot,\n fetchMaintenanceDerivativeTargetRows,\n type DatasetMaintenanceDerivativeRemoteRow,\n type DatasetMaintenanceRemoteContext,\n} from './dataset-maintenance-remote.js';\n\nconst SHA256 = /^[a-f0-9]{64}$/u;\n\nexport type ProtectedVerificationIssue = {\n code: string;\n message: string;\n details?: unknown;\n};\n\nexport type ProtectedLiveDerivativeReadback = {\n table: 'flows' | 'processes';\n id: string;\n version: string;\n user_id: string;\n state_code: 0;\n json_ordered_sha256: string;\n extracted_text_present: true;\n extracted_md_present: true;\n embedding_ft_present: true;\n embedding_ft_at: string;\n};\n\nexport type ProtectedVerificationResult = {\n status: ProtectedReportStatus;\n issues: ProtectedVerificationIssue[];\n account_readback: {\n rows: DatasetMaintenanceRemoteRow[];\n source_urls: string[];\n completeness: unknown;\n } | null;\n derivative_readback: {\n rows: ProtectedLiveDerivativeReadback[];\n snapshots: ProtectedDerivativeSnapshot[];\n source_urls: string[];\n } | null;\n};\n\nfunction issue(code: string, message: string, details?: unknown): ProtectedVerificationIssue {\n return { code, message, ...(details === undefined ? {} : { details }) };\n}\n\nfunction requiredString(value: unknown): string | null {\n return typeof value === 'string' && value.trim() ? value : null;\n}\n\nexport function inspectProtectedLiveDerivative(\n row: DatasetMaintenanceDerivativeRemoteRow,\n): ProtectedLiveDerivativeReadback | null {\n const raw = row.raw;\n const jsonOrdered = isJsonObject(raw.json_ordered) ? raw.json_ordered : null;\n const extractedText = requiredString(raw.extracted_text);\n const extractedMd = requiredString(raw.extracted_md);\n const embeddingAt = requiredString(raw.embedding_ft_at);\n if (\n row.state_code !== 0 ||\n !jsonOrdered ||\n !extractedText ||\n !extractedMd ||\n raw.embedding_ft === null ||\n raw.embedding_ft === undefined ||\n !embeddingAt ||\n !Number.isFinite(Date.parse(embeddingAt))\n ) {\n return null;\n }\n return {\n table: row.table,\n id: row.id,\n version: row.version,\n user_id: row.user_id,\n state_code: 0 as const,\n json_ordered_sha256: sha256Json(jsonOrdered),\n extracted_text_present: true,\n extracted_md_present: true,\n embedding_ft_present: true,\n embedding_ft_at: embeddingAt,\n };\n}\n\nfunction expectedFinalRows(options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n rows: DatasetMaintenanceRemoteRow[];\n}): DatasetMaintenanceRemoteRow[] {\n const rows = new Map(options.rows.map((row) => [maintenanceRowKey(row), { ...row }]));\n for (const action of options.plan.actions) {\n const current = rows.get(maintenanceRowKey(action));\n if (current) {\n rows.set(maintenanceRowKey(action), {\n ...current,\n json_ordered: loadMaintenanceDesiredPayload(options.planDir, action),\n });\n }\n }\n return [...rows.values()].sort((left, right) =>\n maintenanceRowKey(left).localeCompare(maintenanceRowKey(right)),\n );\n}\n\nfunction verifyStatusStructure(options: {\n identity: ProtectedExecutionIdentity;\n proof: ProtectedExecutionStatusProof;\n}): ProtectedVerificationIssue[] {\n const { identity, proof } = options;\n const issues: ProtectedVerificationIssue[] = [];\n const notAdmitted = proof.execution_status === 'not_admitted';\n const dispatchCountValid =\n proof.dispatch_count === 1 ||\n (proof.dispatch_count === 0 &&\n (proof.execution_status === 'failed' || proof.execution_status === 'indeterminate'));\n if (\n (notAdmitted && (proof.attempt_count !== 0 || proof.dispatch_count !== 0)) ||\n (!notAdmitted && (proof.attempt_count !== 1 || !dispatchCountValid))\n ) {\n issues.push(\n issue(\n 'PROTECTED_ATTEMPT_DISPATCH_COUNT_INVALID',\n 'Database did not prove the one-attempt, at-most-one-dispatch execution policy.',\n { attempt_count: proof.attempt_count, dispatch_count: proof.dispatch_count },\n ),\n );\n }\n if (proof.plan_sha256 !== identity.plan_sha256 || proof.operation_id !== identity.operation_id) {\n issues.push(\n issue(\n 'PROTECTED_EXECUTION_IDENTITY_MISMATCH',\n 'Database status does not round-trip the sealed plan identity.',\n ),\n );\n }\n const categoryMatches =\n (proof.status === 'passed' && proof.execution_status === 'completed') ||\n (proof.status === 'failed' &&\n (proof.execution_status === 'failed' || proof.execution_status === 'completed')) ||\n (proof.status === 'indeterminate' &&\n (proof.execution_status === 'not_admitted' || proof.execution_status === 'indeterminate')) ||\n (proof.status === 'pending' &&\n ['dispatching', 'dispatched', 'running', 'derivatives_pending'].includes(\n proof.execution_status,\n ));\n if (!categoryMatches) {\n issues.push(\n issue(\n 'PROTECTED_STATUS_CATEGORY_INVALID',\n 'Database status category is inconsistent with its execution ledger state.',\n { status: proof.status, execution_status: proof.execution_status },\n ),\n );\n }\n if (!notAdmitted) {\n const gateNames = proof.gates.map((gate) => gate.gate);\n const receiptHashes = proof.gates.map((gate) => gate.receipt_sha256);\n const gateClosureValid =\n proof.gate_count === 3 &&\n proof.gates.length === 3 &&\n new Set(gateNames).size === 3 &&\n new Set(receiptHashes).size === 3 &&\n proof.gates.every(\n (gate) => gate.observed_sha256 === gate.expected_sha256 && gate.status === 'passed',\n );\n if (!gateClosureValid) {\n issues.push(\n issue(\n 'PROTECTED_GATE_CLOSURE_INVALID',\n 'Database did not round-trip three unique server-captured gate receipts.',\n proof.gates,\n ),\n );\n }\n }\n return issues;\n}\n\nfunction verifyAuditClosure(proof: ProtectedExecutionStatusProof): ProtectedVerificationIssue[] {\n const audit = proof.primary_readback;\n const closure = audit?.closure;\n let closureHashMatches = false;\n if (isJsonObject(closure) && typeof closure.live_closure_proof_sha256 === 'string') {\n const proofMaterial = { ...closure };\n const closureSha256 = String(proofMaterial.live_closure_proof_sha256);\n delete proofMaterial.ok;\n delete proofMaterial.row_count;\n delete proofMaterial.exchange_count;\n delete proofMaterial.live_closure_proof_sha256;\n closureHashMatches = sha256Json(proofMaterial) === closureSha256;\n }\n if (\n !audit ||\n audit.row_count !== PROTECTED_EXECUTION_COUNTS.action_count ||\n audit.exchange_count !== PROTECTED_EXECUTION_COUNTS.exchange_count ||\n audit.alias_audit_count !== PROTECTED_EXECUTION_COUNTS.audit_count ||\n audit.live_closure_proof !== true ||\n !isJsonObject(closure) ||\n closure.schema_version !== 'dataset-alias-primary-closure.v1' ||\n closure.ok !== true ||\n closure.actor_user_id !== proof.actor_user_id ||\n closure.batch_count !== PROTECTED_EXECUTION_COUNTS.batch_count ||\n closure.action_count !== PROTECTED_EXECUTION_COUNTS.action_count ||\n closure.distinct_action_count !== PROTECTED_EXECUTION_COUNTS.action_count ||\n closure.flowproperty_count !== PROTECTED_EXECUTION_COUNTS.flowproperty_count ||\n closure.flow_count !== PROTECTED_EXECUTION_COUNTS.flow_count ||\n closure.process_count !== PROTECTED_EXECUTION_COUNTS.process_count ||\n closure.support_reference_count !== 6 ||\n closure.flowproperty_support_count !== 2 ||\n closure.unitgroup_support_count !== 2 ||\n closure.source_unitgroup_support_count !== 2 ||\n closure.invalid_action_count !== 0 ||\n closure.invalid_support_count !== 0 ||\n !Array.isArray(closure.action_evidence) ||\n closure.action_evidence.length !== PROTECTED_EXECUTION_COUNTS.action_count ||\n closure.action_evidence.some((entry) => !isJsonObject(entry)) ||\n !Array.isArray(closure.support_evidence) ||\n closure.support_evidence.length !== 6 ||\n closure.support_evidence.some((entry) => !isJsonObject(entry)) ||\n closure.row_count !== PROTECTED_EXECUTION_COUNTS.action_count ||\n closure.exchange_count !== PROTECTED_EXECUTION_COUNTS.exchange_count ||\n closure.live_closure_proof !== true ||\n !closureHashMatches\n ) {\n return [\n issue(\n 'PROTECTED_AUDIT_CLOSURE_INVALID',\n 'Terminal execution did not prove the exact 52-row, 59-exchange, 55-audit primary closure.',\n audit,\n ),\n ];\n }\n return [];\n}\n\nfunction terminalTargetKey(target: { table: string; id: string; version: string }): string {\n return `${target.table}\\u0000${target.id}\\u0000${target.version}`;\n}\n\nfunction verifyTerminalTargets(options: {\n identity: ProtectedExecutionIdentity;\n proof: ProtectedExecutionStatusProof;\n}): ProtectedVerificationIssue[] {\n const issues: ProtectedVerificationIssue[] = [];\n const batch = options.proof.derivative_readback;\n if (batch.proof_level !== 'causal_terminal' || batch.proof_deferred !== false) {\n return [\n issue(\n 'PROTECTED_DERIVATIVE_TARGET_CLOSURE_INVALID',\n 'Terminal proof must use the full causal-terminal evidence level.',\n ),\n ];\n }\n const targets = batch.targets;\n const keys = targets.map(terminalTargetKey);\n if (\n batch.schema_version !== 'dataset-derivative-rebuild-batch-status.v1' ||\n batch.batch_id !== options.identity.request_id ||\n batch.status !== 'completed' ||\n batch.code !== 'DERIVATIVE_BATCH_COMPLETED' ||\n batch.causal_terminal_proof !== true ||\n batch.target_count !== PROTECTED_EXECUTION_COUNTS.derivative_target_count ||\n batch.flow_count !== PROTECTED_EXECUTION_COUNTS.flow_count ||\n batch.process_count !== PROTECTED_EXECUTION_COUNTS.process_count ||\n batch.completed_count !== PROTECTED_EXECUTION_COUNTS.derivative_target_count ||\n batch.nonterminal_count !== 0 ||\n batch.failed_count !== 0 ||\n batch.invalid_proof_count !== 0 ||\n targets.length !== PROTECTED_EXECUTION_COUNTS.derivative_target_count ||\n new Set(keys).size !== PROTECTED_EXECUTION_COUNTS.derivative_target_count ||\n new Set(targets.map((target) => target.ordinal)).size !==\n PROTECTED_EXECUTION_COUNTS.derivative_target_count\n ) {\n return [\n issue(\n 'PROTECTED_DERIVATIVE_TARGET_CLOSURE_INVALID',\n 'Terminal proof must contain exactly 50 unique derivative targets.',\n ),\n ];\n }\n const frozen = new Map(\n options.identity.derivative_targets.map((target) => [terminalTargetKey(target), target]),\n );\n for (const [index, target] of targets.entries()) {\n const expected = frozen.get(terminalTargetKey(target));\n if (\n !expected ||\n target.ordinal !== index + 1 ||\n target.request_id === options.identity.request_id ||\n target.source_baseline_snapshot_sha256 !== expected.baseline_snapshot_sha256\n ) {\n issues.push(\n issue(\n 'PROTECTED_DERIVATIVE_TARGET_IDENTITY_MISMATCH',\n 'Terminal derivative proof contains a foreign or changed target.',\n { table: target.table, id: target.id, version: target.version },\n ),\n );\n continue;\n }\n if (\n target.status !== 'completed' ||\n !target.phase ||\n !target.completed_snapshot_sha256 ||\n !SHA256.test(target.expected_snapshot_sha256) ||\n !SHA256.test(target.completed_snapshot_sha256) ||\n target.completed_snapshot_sha256 === target.expected_snapshot_sha256 ||\n !target.primary_matches ||\n !target.terminal_snapshot_matches ||\n !target.proposals_committed ||\n !target.derivative_fresh ||\n !target.lifecycle_complete ||\n !target.terminal_audit_present ||\n Object.values(target.residue).some((count) => count !== 0) ||\n !target.causal_terminal_proof\n ) {\n issues.push(\n issue(\n 'PROTECTED_DERIVATIVE_TARGET_NOT_TERMINAL',\n 'Derivative target lacks causal completed/live equality or retains queue, failure, or fence state.',\n { table: target.table, id: target.id, version: target.version },\n ),\n );\n }\n }\n return issues;\n}\n\nfunction verifyFinalAccountRows(options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n rows: DatasetMaintenanceRemoteRow[];\n completeness: unknown;\n}): ProtectedVerificationIssue[] {\n const issues: ProtectedVerificationIssue[] = [];\n if (\n !options.plan.snapshot_completeness ||\n !isSnapshotCompletenessCompatible(\n options.completeness,\n options.plan.snapshot_completeness,\n Object.keys(options.plan.snapshot_completeness.entity_counts),\n )\n ) {\n issues.push(\n issue(\n 'PROTECTED_FINAL_SNAPSHOT_INCOMPLETE',\n 'Final RLS account scan does not prove the same complete table census as the plan.',\n ),\n );\n return issues;\n }\n const expectedKeys = new Set([\n ...options.plan.actions.map(maintenanceRowKey),\n ...options.plan.protected_rows.map(maintenanceRowKey),\n ]);\n const actualKeys = new Set(options.rows.map(maintenanceRowKey));\n if (\n expectedKeys.size !== actualKeys.size ||\n [...expectedKeys].some((key) => !actualKeys.has(key))\n ) {\n issues.push(\n issue(\n 'PROTECTED_FINAL_ACCOUNT_CENSUS_DRIFT',\n 'Final RLS account rows contain missing or unexpected entities.',\n ),\n );\n }\n const current = new Map(options.rows.map((row) => [maintenanceRowKey(row), row]));\n for (const protectedRow of options.plan.protected_rows) {\n const row = current.get(maintenanceRowKey(protectedRow));\n if (!row || snapshotRemoteRow(row).row_sha256 !== protectedRow.row_sha256) {\n issues.push(\n issue('PROTECTED_ROW_DRIFT', 'A protected non-action row changed.', protectedRow),\n );\n }\n }\n for (const action of options.plan.actions) {\n const row = current.get(maintenanceRowKey(action));\n const desired = loadMaintenanceDesiredPayload(options.planDir, action);\n if (\n !row ||\n row.user_id !== action.expected_user_id ||\n row.state_code !== 0 ||\n sha256Json(row.json_ordered) !== sha256Json(desired) ||\n row.model_id !== action.before?.model_id ||\n row.rule_verification !== action.before?.rule_verification\n ) {\n issues.push(\n issue(\n 'PROTECTED_ACTION_READBACK_MISMATCH',\n 'An action row does not match the desired owner-draft payload.',\n { action_id: action.action_id },\n ),\n );\n }\n }\n const projected = expectedFinalRows({\n plan: options.plan,\n planDir: options.planDir,\n rows: options.rows,\n });\n if (\n sha256Json(maintenanceProjectedReferenceFingerprint(projected)) !==\n options.plan.projected_reference_sha256\n ) {\n issues.push(\n issue(\n 'PROTECTED_REFERENCE_CLOSURE_MISMATCH',\n 'Final reference closure does not match the frozen projected closure.',\n ),\n );\n }\n return issues;\n}\n\nfunction matchLiveTargets(options: {\n proofs: ProtectedTerminalTargetProof[];\n live: ProtectedLiveDerivativeReadback[];\n snapshots: ProtectedDerivativeSnapshot[];\n plan: DatasetMaintenancePlan;\n identity: ProtectedExecutionIdentity;\n}): ProtectedVerificationIssue[] {\n const proofs = new Map(options.proofs.map((proof) => [terminalTargetKey(proof), proof]));\n const snapshots = new Map(\n options.snapshots.map((snapshot) => [terminalTargetKey(snapshot), snapshot]),\n );\n const live = new Map(options.live.map((row) => [terminalTargetKey(row), row]));\n const actions = new Map(\n options.plan.actions.map((action) => [maintenanceRowKey(action), action]),\n );\n const issues: ProtectedVerificationIssue[] = [];\n const expectedKeys = new Set(options.identity.derivative_targets.map(terminalTargetKey));\n const liveKeys = options.live.map(terminalTargetKey);\n const snapshotKeys = options.snapshots.map(terminalTargetKey);\n if (\n liveKeys.length !== expectedKeys.size ||\n new Set(liveKeys).size !== expectedKeys.size ||\n snapshotKeys.length !== expectedKeys.size ||\n new Set(snapshotKeys).size !== expectedKeys.size ||\n [...expectedKeys].some((key) => !live.has(key) || !snapshots.has(key))\n ) {\n issues.push(\n issue(\n 'PROTECTED_DERIVATIVE_LIVE_SET_MISMATCH',\n 'Independent derivative rows and snapshots must be unique and exactly match all 50 frozen targets.',\n ),\n );\n }\n for (const target of options.identity.derivative_targets) {\n const key = terminalTargetKey(target);\n const row = live.get(key);\n const proof = proofs.get(key);\n const snapshot = snapshots.get(key);\n const action = actions.get(key);\n if (\n !row ||\n !proof ||\n !snapshot ||\n !action?.desired_payload ||\n row.user_id !== options.identity.actor.user_id ||\n row.state_code !== 0 ||\n snapshot.user_id !== options.identity.actor.user_id ||\n snapshot.state_code !== 0 ||\n row.json_ordered_sha256 !== action.desired_payload.sha256 ||\n snapshot.json_ordered_sha256 !== row.json_ordered_sha256 ||\n snapshot.snapshot_sha256 !== proof.completed_snapshot_sha256 ||\n !snapshot.extracted_md_sha256 ||\n !snapshot.embedding_ft_sha256 ||\n !snapshot.embedding_ft_at\n ) {\n issues.push(\n issue(\n 'PROTECTED_DERIVATIVE_LIVE_MISMATCH',\n 'Independent RLS derivative readback does not match the terminal database proof.',\n { table: target.table, id: target.id, version: target.version },\n ),\n );\n }\n }\n return issues;\n}\n\nasync function fetchProtectedDerivativeSnapshots(options: {\n context: DatasetMaintenanceRemoteContext;\n identity: ProtectedExecutionIdentity;\n}): Promise<ProtectedDerivativeSnapshot[]> {\n const snapshots: ProtectedDerivativeSnapshot[] = [];\n const targets = options.identity.derivative_targets;\n for (let offset = 0; offset < targets.length; offset += 5) {\n const chunk = targets.slice(offset, offset + 5);\n snapshots.push(\n ...(await Promise.all(\n chunk.map(async (target) =>\n parseProtectedDerivativeSnapshot(\n await fetchMaintenanceDerivativeSnapshot({\n context: options.context,\n table: target.table,\n id: target.id,\n version: target.version,\n }),\n {\n table: target.table,\n id: target.id,\n version: target.version,\n userId: target.user_id,\n },\n ),\n ),\n )),\n );\n }\n return snapshots;\n}\n\ntype ProtectedVerificationDependencies = {\n fetchAccountRows: typeof fetchMaintenanceAccountRows;\n fetchDerivativeRows: typeof fetchMaintenanceDerivativeTargetRows;\n fetchSnapshots: typeof fetchProtectedDerivativeSnapshots;\n};\n\nasync function verifyProtectedExecutionWithDependencies(\n options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n identity: ProtectedExecutionIdentity;\n proof: ProtectedExecutionStatusProof;\n context: DatasetMaintenanceRemoteContext;\n pageSize?: number;\n },\n dependencies: ProtectedVerificationDependencies,\n): Promise<ProtectedVerificationResult> {\n const { fetchAccountRows, fetchDerivativeRows, fetchSnapshots } = dependencies;\n const structuralIssues = verifyStatusStructure({\n identity: options.identity,\n proof: options.proof,\n });\n if (structuralIssues.length) {\n return {\n status: options.proof.status === 'indeterminate' ? 'indeterminate' : 'failed',\n issues: structuralIssues,\n account_readback: null,\n derivative_readback: null,\n };\n }\n if (options.proof.execution_status === 'not_admitted') {\n return {\n status: 'indeterminate',\n issues: [\n issue(\n 'PROTECTED_EXECUTION_NOT_FOUND',\n 'The server has a protected preflight but no admitted execution; admission must not be retried.',\n ),\n ],\n account_readback: null,\n derivative_readback: null,\n };\n }\n if (options.proof.status === 'pending') {\n return { status: 'pending', issues: [], account_readback: null, derivative_readback: null };\n }\n if (options.proof.status === 'indeterminate') {\n return {\n status: 'indeterminate',\n issues: [\n issue(\n 'PROTECTED_EXECUTION_INDETERMINATE',\n 'Database reported an indeterminate terminal execution; admission must not be retried.',\n options.proof.failure,\n ),\n ],\n account_readback: null,\n derivative_readback: null,\n };\n }\n if (options.proof.status === 'failed') {\n return {\n status: 'failed',\n issues: [\n issue(\n 'PROTECTED_EXECUTION_FAILED',\n 'Database reported a definitive protected execution failure.',\n options.proof.failure,\n ),\n ],\n account_readback: null,\n derivative_readback: null,\n };\n }\n\n const issues = [\n ...verifyAuditClosure(options.proof),\n ...verifyTerminalTargets({ identity: options.identity, proof: options.proof }),\n ];\n if (issues.length) {\n return { status: 'failed', issues, account_readback: null, derivative_readback: null };\n }\n const account = await fetchAccountRows({\n context: options.context,\n userId: options.identity.actor.user_id,\n pageSize: options.pageSize,\n });\n issues.push(\n ...verifyFinalAccountRows({\n plan: options.plan,\n planDir: options.planDir,\n rows: account.rows,\n completeness: account.completeness,\n }),\n );\n const derivative = await fetchDerivativeRows({\n context: options.context,\n targets: options.identity.derivative_targets,\n });\n const live = derivative.rows.map(inspectProtectedLiveDerivative);\n if (live.some((row) => row === null)) {\n issues.push(\n issue(\n 'PROTECTED_DERIVATIVE_LIVE_INVALID',\n 'A live derivative row lacks primary JSON, extracted markdown, embedding, or timestamps.',\n ),\n );\n }\n const validLive = live.filter((row): row is ProtectedLiveDerivativeReadback => row !== null);\n const snapshots = await fetchSnapshots({\n context: options.context,\n identity: options.identity,\n });\n if (validLive.length === PROTECTED_EXECUTION_COUNTS.derivative_target_count) {\n const terminalProofs =\n options.proof.derivative_readback.proof_level === 'causal_terminal'\n ? options.proof.derivative_readback.targets\n : [];\n issues.push(\n ...matchLiveTargets({\n proofs: terminalProofs,\n live: validLive,\n snapshots,\n plan: options.plan,\n identity: options.identity,\n }),\n );\n }\n return {\n status: issues.length ? 'failed' : 'passed',\n issues,\n account_readback: {\n rows: account.rows,\n source_urls: account.source_urls,\n completeness: account.completeness,\n },\n derivative_readback: {\n rows: validLive,\n snapshots,\n source_urls: derivative.source_urls,\n },\n };\n}\n\nexport async function verifyProtectedExecution(options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n identity: ProtectedExecutionIdentity;\n proof: ProtectedExecutionStatusProof;\n context: DatasetMaintenanceRemoteContext;\n pageSize?: number;\n}): Promise<ProtectedVerificationResult> {\n return verifyProtectedExecutionWithDependencies(options, {\n fetchAccountRows: fetchMaintenanceAccountRows,\n fetchDerivativeRows: fetchMaintenanceDerivativeTargetRows,\n fetchSnapshots: fetchProtectedDerivativeSnapshots,\n });\n}\n\nexport const __testInternals = {\n expectedFinalRows,\n fetchProtectedDerivativeSnapshots,\n inspectProtectedLiveDerivative,\n matchLiveTargets,\n verifyAuditClosure,\n verifyFinalAccountRows,\n verifyStatusStructure,\n verifyTerminalTargets,\n verifyProtectedExecutionWithDependencies,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"dataset-maintenance-protected-verify.js","sourceRoot":"","sources":["../../../src/lib/dataset-maintenance-protected-verify.ts"],"names":[],"mappings":"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","sourcesContent":["import { loadMaintenanceDesiredPayload } from './dataset-maintenance-alias-request.js';\nimport {\n isJsonObject,\n maintenanceRowKey,\n sha256Json,\n snapshotRemoteRow,\n type DatasetMaintenancePlan,\n type DatasetMaintenanceRemoteRow,\n} from './dataset-maintenance-contract.js';\nimport {\n PROTECTED_EXECUTION_COUNTS,\n parseProtectedDerivativeSnapshot,\n type ProtectedDerivativeSnapshot,\n type ProtectedExecutionIdentity,\n type ProtectedExecutionStatusProof,\n type ProtectedReportStatus,\n type ProtectedTerminalTargetProof,\n} from './dataset-maintenance-protected-contract.js';\nimport { maintenanceProjectedReferenceFingerprint } from './dataset-maintenance-plan.js';\nimport { isSnapshotCompletenessCompatible } from './dataset-maintenance-pagination.js';\nimport {\n fetchMaintenanceAccountRows,\n fetchMaintenanceDerivativeSnapshot,\n fetchMaintenanceDerivativeTargetRows,\n type DatasetMaintenanceDerivativeRemoteRow,\n type DatasetMaintenanceRemoteContext,\n} from './dataset-maintenance-remote.js';\n\nconst SHA256 = /^[a-f0-9]{64}$/u;\n\nexport type ProtectedVerificationIssue = {\n code: string;\n message: string;\n details?: unknown;\n};\n\nexport type ProtectedLiveDerivativeReadback = {\n table: 'flows' | 'processes';\n id: string;\n version: string;\n user_id: string;\n state_code: 0;\n json_ordered_sha256: string;\n extracted_text_present: true;\n extracted_md_present: true;\n embedding_ft_present: true;\n embedding_ft_at: string;\n};\n\ntype ProtectedPrimaryActionEvidence = {\n action_id: string;\n table: 'flowproperties' | 'flows' | 'processes';\n id: string;\n version: string;\n row_found: true;\n owner_matches: true;\n state_code_matches: true;\n json_matches: true;\n json_ordered_matches: true;\n desired_json_ordered_sha256: string;\n live_json_sha256: string;\n live_json_ordered_sha256: string;\n valid: true;\n};\n\nexport type ProtectedVerificationResult = {\n status: ProtectedReportStatus;\n issues: ProtectedVerificationIssue[];\n account_readback: {\n rows: DatasetMaintenanceRemoteRow[];\n source_urls: string[];\n completeness: unknown;\n } | null;\n derivative_readback: {\n rows: ProtectedLiveDerivativeReadback[];\n snapshots: ProtectedDerivativeSnapshot[];\n source_urls: string[];\n } | null;\n};\n\nfunction issue(code: string, message: string, details?: unknown): ProtectedVerificationIssue {\n return { code, message, ...(details === undefined ? {} : { details }) };\n}\n\nfunction requiredString(value: unknown): string | null {\n return typeof value === 'string' && value.trim() ? value : null;\n}\n\nfunction parsePrimaryActionEvidence(value: unknown): ProtectedPrimaryActionEvidence | null {\n if (!isJsonObject(value)) return null;\n const actionId = requiredString(value.action_id);\n const id = requiredString(value.id);\n const version = requiredString(value.version);\n const desiredJsonOrderedSha256 = requiredString(value.desired_json_ordered_sha256);\n const liveJsonSha256 = requiredString(value.live_json_sha256);\n const liveJsonOrderedSha256 = requiredString(value.live_json_ordered_sha256);\n if (\n !actionId ||\n (value.table !== 'flowproperties' && value.table !== 'flows' && value.table !== 'processes') ||\n !id ||\n !version ||\n value.row_found !== true ||\n value.owner_matches !== true ||\n value.state_code_matches !== true ||\n value.json_matches !== true ||\n value.json_ordered_matches !== true ||\n !desiredJsonOrderedSha256 ||\n !SHA256.test(desiredJsonOrderedSha256) ||\n !liveJsonSha256 ||\n !SHA256.test(liveJsonSha256) ||\n !liveJsonOrderedSha256 ||\n !SHA256.test(liveJsonOrderedSha256) ||\n value.valid !== true\n ) {\n return null;\n }\n return {\n action_id: actionId,\n table: value.table,\n id,\n version,\n row_found: true,\n owner_matches: true,\n state_code_matches: true,\n json_matches: true,\n json_ordered_matches: true,\n desired_json_ordered_sha256: desiredJsonOrderedSha256,\n live_json_sha256: liveJsonSha256,\n live_json_ordered_sha256: liveJsonOrderedSha256,\n valid: true,\n };\n}\n\nfunction indexPrimaryActionEvidence(options: {\n closure: unknown;\n plan: DatasetMaintenancePlan;\n}): Map<string, ProtectedPrimaryActionEvidence> | null {\n if (!isJsonObject(options.closure) || !Array.isArray(options.closure.action_evidence)) {\n return null;\n }\n if (options.closure.action_evidence.length !== options.plan.actions.length) return null;\n const byKey = new Map<string, ProtectedPrimaryActionEvidence>();\n const actionIds = new Set<string>();\n for (const raw of options.closure.action_evidence) {\n const evidence = parsePrimaryActionEvidence(raw);\n if (!evidence) return null;\n const key = maintenanceRowKey(evidence);\n if (byKey.has(key) || actionIds.has(evidence.action_id)) return null;\n byKey.set(key, evidence);\n actionIds.add(evidence.action_id);\n }\n if (\n options.plan.actions.some(\n (action) => byKey.get(maintenanceRowKey(action))?.action_id !== action.action_id,\n )\n ) {\n return null;\n }\n return byKey;\n}\n\nexport function inspectProtectedLiveDerivative(\n row: DatasetMaintenanceDerivativeRemoteRow,\n): ProtectedLiveDerivativeReadback | null {\n const raw = row.raw;\n const jsonOrdered = isJsonObject(raw.json_ordered) ? raw.json_ordered : null;\n const extractedText = requiredString(raw.extracted_text);\n const extractedMd = requiredString(raw.extracted_md);\n const embeddingAt = requiredString(raw.embedding_ft_at);\n if (\n row.state_code !== 0 ||\n !jsonOrdered ||\n !extractedText ||\n !extractedMd ||\n raw.embedding_ft === null ||\n raw.embedding_ft === undefined ||\n !embeddingAt ||\n !Number.isFinite(Date.parse(embeddingAt))\n ) {\n return null;\n }\n return {\n table: row.table,\n id: row.id,\n version: row.version,\n user_id: row.user_id,\n state_code: 0 as const,\n json_ordered_sha256: sha256Json(jsonOrdered),\n extracted_text_present: true,\n extracted_md_present: true,\n embedding_ft_present: true,\n embedding_ft_at: embeddingAt,\n };\n}\n\nfunction expectedFinalRows(options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n rows: DatasetMaintenanceRemoteRow[];\n}): DatasetMaintenanceRemoteRow[] {\n const rows = new Map(options.rows.map((row) => [maintenanceRowKey(row), { ...row }]));\n for (const action of options.plan.actions) {\n const current = rows.get(maintenanceRowKey(action));\n if (current) {\n rows.set(maintenanceRowKey(action), {\n ...current,\n json_ordered: loadMaintenanceDesiredPayload(options.planDir, action),\n });\n }\n }\n return [...rows.values()].sort((left, right) =>\n maintenanceRowKey(left).localeCompare(maintenanceRowKey(right)),\n );\n}\n\nfunction verifyStatusStructure(options: {\n identity: ProtectedExecutionIdentity;\n proof: ProtectedExecutionStatusProof;\n}): ProtectedVerificationIssue[] {\n const { identity, proof } = options;\n const issues: ProtectedVerificationIssue[] = [];\n const notAdmitted = proof.execution_status === 'not_admitted';\n const dispatchCountValid =\n proof.dispatch_count === 1 ||\n (proof.dispatch_count === 0 &&\n (proof.execution_status === 'failed' || proof.execution_status === 'indeterminate'));\n if (\n (notAdmitted && (proof.attempt_count !== 0 || proof.dispatch_count !== 0)) ||\n (!notAdmitted && (proof.attempt_count !== 1 || !dispatchCountValid))\n ) {\n issues.push(\n issue(\n 'PROTECTED_ATTEMPT_DISPATCH_COUNT_INVALID',\n 'Database did not prove the one-attempt, at-most-one-dispatch execution policy.',\n { attempt_count: proof.attempt_count, dispatch_count: proof.dispatch_count },\n ),\n );\n }\n if (proof.plan_sha256 !== identity.plan_sha256 || proof.operation_id !== identity.operation_id) {\n issues.push(\n issue(\n 'PROTECTED_EXECUTION_IDENTITY_MISMATCH',\n 'Database status does not round-trip the sealed plan identity.',\n ),\n );\n }\n const categoryMatches =\n (proof.status === 'passed' && proof.execution_status === 'completed') ||\n (proof.status === 'failed' &&\n (proof.execution_status === 'failed' || proof.execution_status === 'completed')) ||\n (proof.status === 'indeterminate' &&\n (proof.execution_status === 'not_admitted' || proof.execution_status === 'indeterminate')) ||\n (proof.status === 'pending' &&\n ['dispatching', 'dispatched', 'running', 'derivatives_pending'].includes(\n proof.execution_status,\n ));\n if (!categoryMatches) {\n issues.push(\n issue(\n 'PROTECTED_STATUS_CATEGORY_INVALID',\n 'Database status category is inconsistent with its execution ledger state.',\n { status: proof.status, execution_status: proof.execution_status },\n ),\n );\n }\n if (!notAdmitted) {\n const gateNames = proof.gates.map((gate) => gate.gate);\n const receiptHashes = proof.gates.map((gate) => gate.receipt_sha256);\n const gateClosureValid =\n proof.gate_count === 3 &&\n proof.gates.length === 3 &&\n new Set(gateNames).size === 3 &&\n new Set(receiptHashes).size === 3 &&\n proof.gates.every(\n (gate) => gate.observed_sha256 === gate.expected_sha256 && gate.status === 'passed',\n );\n if (!gateClosureValid) {\n issues.push(\n issue(\n 'PROTECTED_GATE_CLOSURE_INVALID',\n 'Database did not round-trip three unique server-captured gate receipts.',\n proof.gates,\n ),\n );\n }\n }\n return issues;\n}\n\nfunction verifyAuditClosure(proof: ProtectedExecutionStatusProof): ProtectedVerificationIssue[] {\n const audit = proof.primary_readback;\n const closure = audit?.closure;\n let closureHashMatches = false;\n if (isJsonObject(closure) && typeof closure.live_closure_proof_sha256 === 'string') {\n const proofMaterial = { ...closure };\n const closureSha256 = String(proofMaterial.live_closure_proof_sha256);\n delete proofMaterial.ok;\n delete proofMaterial.row_count;\n delete proofMaterial.exchange_count;\n delete proofMaterial.live_closure_proof_sha256;\n closureHashMatches = sha256Json(proofMaterial) === closureSha256;\n }\n if (\n !audit ||\n audit.row_count !== PROTECTED_EXECUTION_COUNTS.action_count ||\n audit.exchange_count !== PROTECTED_EXECUTION_COUNTS.exchange_count ||\n audit.alias_audit_count !== PROTECTED_EXECUTION_COUNTS.audit_count ||\n audit.live_closure_proof !== true ||\n !isJsonObject(closure) ||\n closure.schema_version !== 'dataset-alias-primary-closure.v1' ||\n closure.ok !== true ||\n closure.actor_user_id !== proof.actor_user_id ||\n closure.batch_count !== PROTECTED_EXECUTION_COUNTS.batch_count ||\n closure.action_count !== PROTECTED_EXECUTION_COUNTS.action_count ||\n closure.distinct_action_count !== PROTECTED_EXECUTION_COUNTS.action_count ||\n closure.flowproperty_count !== PROTECTED_EXECUTION_COUNTS.flowproperty_count ||\n closure.flow_count !== PROTECTED_EXECUTION_COUNTS.flow_count ||\n closure.process_count !== PROTECTED_EXECUTION_COUNTS.process_count ||\n closure.support_reference_count !== 6 ||\n closure.flowproperty_support_count !== 2 ||\n closure.unitgroup_support_count !== 2 ||\n closure.source_unitgroup_support_count !== 2 ||\n closure.invalid_action_count !== 0 ||\n closure.invalid_support_count !== 0 ||\n !Array.isArray(closure.action_evidence) ||\n closure.action_evidence.length !== PROTECTED_EXECUTION_COUNTS.action_count ||\n closure.action_evidence.some((entry) => !isJsonObject(entry)) ||\n !Array.isArray(closure.support_evidence) ||\n closure.support_evidence.length !== 6 ||\n closure.support_evidence.some((entry) => !isJsonObject(entry)) ||\n closure.row_count !== PROTECTED_EXECUTION_COUNTS.action_count ||\n closure.exchange_count !== PROTECTED_EXECUTION_COUNTS.exchange_count ||\n closure.live_closure_proof !== true ||\n !closureHashMatches\n ) {\n return [\n issue(\n 'PROTECTED_AUDIT_CLOSURE_INVALID',\n 'Terminal execution did not prove the exact 52-row, 59-exchange, 55-audit primary closure.',\n audit,\n ),\n ];\n }\n return [];\n}\n\nfunction terminalTargetKey(target: { table: string; id: string; version: string }): string {\n return `${target.table}\\u0000${target.id}\\u0000${target.version}`;\n}\n\nfunction verifyTerminalTargets(options: {\n identity: ProtectedExecutionIdentity;\n proof: ProtectedExecutionStatusProof;\n}): ProtectedVerificationIssue[] {\n const issues: ProtectedVerificationIssue[] = [];\n const batch = options.proof.derivative_readback;\n if (batch.proof_level !== 'causal_terminal' || batch.proof_deferred !== false) {\n return [\n issue(\n 'PROTECTED_DERIVATIVE_TARGET_CLOSURE_INVALID',\n 'Terminal proof must use the full causal-terminal evidence level.',\n ),\n ];\n }\n const targets = batch.targets;\n const keys = targets.map(terminalTargetKey);\n if (\n batch.schema_version !== 'dataset-derivative-rebuild-batch-status.v1' ||\n batch.batch_id !== options.identity.request_id ||\n batch.status !== 'completed' ||\n batch.code !== 'DERIVATIVE_BATCH_COMPLETED' ||\n batch.causal_terminal_proof !== true ||\n batch.target_count !== PROTECTED_EXECUTION_COUNTS.derivative_target_count ||\n batch.flow_count !== PROTECTED_EXECUTION_COUNTS.flow_count ||\n batch.process_count !== PROTECTED_EXECUTION_COUNTS.process_count ||\n batch.completed_count !== PROTECTED_EXECUTION_COUNTS.derivative_target_count ||\n batch.nonterminal_count !== 0 ||\n batch.failed_count !== 0 ||\n batch.invalid_proof_count !== 0 ||\n targets.length !== PROTECTED_EXECUTION_COUNTS.derivative_target_count ||\n new Set(keys).size !== PROTECTED_EXECUTION_COUNTS.derivative_target_count ||\n new Set(targets.map((target) => target.ordinal)).size !==\n PROTECTED_EXECUTION_COUNTS.derivative_target_count\n ) {\n return [\n issue(\n 'PROTECTED_DERIVATIVE_TARGET_CLOSURE_INVALID',\n 'Terminal proof must contain exactly 50 unique derivative targets.',\n ),\n ];\n }\n const frozen = new Map(\n options.identity.derivative_targets.map((target) => [terminalTargetKey(target), target]),\n );\n for (const [index, target] of targets.entries()) {\n const expected = frozen.get(terminalTargetKey(target));\n if (\n !expected ||\n target.ordinal !== index + 1 ||\n target.request_id === options.identity.request_id ||\n target.source_baseline_snapshot_sha256 !== expected.baseline_snapshot_sha256\n ) {\n issues.push(\n issue(\n 'PROTECTED_DERIVATIVE_TARGET_IDENTITY_MISMATCH',\n 'Terminal derivative proof contains a foreign or changed target.',\n { table: target.table, id: target.id, version: target.version },\n ),\n );\n continue;\n }\n if (\n target.status !== 'completed' ||\n !target.phase ||\n !target.completed_snapshot_sha256 ||\n !SHA256.test(target.expected_snapshot_sha256) ||\n !SHA256.test(target.completed_snapshot_sha256) ||\n target.completed_snapshot_sha256 === target.expected_snapshot_sha256 ||\n !target.primary_matches ||\n !target.terminal_snapshot_matches ||\n !target.proposals_committed ||\n !target.derivative_fresh ||\n !target.lifecycle_complete ||\n !target.terminal_audit_present ||\n Object.values(target.residue).some((count) => count !== 0) ||\n !target.causal_terminal_proof\n ) {\n issues.push(\n issue(\n 'PROTECTED_DERIVATIVE_TARGET_NOT_TERMINAL',\n 'Derivative target lacks causal completed/live equality or retains queue, failure, or fence state.',\n { table: target.table, id: target.id, version: target.version },\n ),\n );\n }\n }\n return issues;\n}\n\nfunction verifyFinalAccountRows(options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n rows: DatasetMaintenanceRemoteRow[];\n completeness: unknown;\n}): ProtectedVerificationIssue[] {\n const issues: ProtectedVerificationIssue[] = [];\n if (\n !options.plan.snapshot_completeness ||\n !isSnapshotCompletenessCompatible(\n options.completeness,\n options.plan.snapshot_completeness,\n Object.keys(options.plan.snapshot_completeness.entity_counts),\n )\n ) {\n issues.push(\n issue(\n 'PROTECTED_FINAL_SNAPSHOT_INCOMPLETE',\n 'Final RLS account scan does not prove the same complete table census as the plan.',\n ),\n );\n return issues;\n }\n const expectedKeys = new Set([\n ...options.plan.actions.map(maintenanceRowKey),\n ...options.plan.protected_rows.map(maintenanceRowKey),\n ]);\n const actualKeys = new Set(options.rows.map(maintenanceRowKey));\n if (\n expectedKeys.size !== actualKeys.size ||\n [...expectedKeys].some((key) => !actualKeys.has(key))\n ) {\n issues.push(\n issue(\n 'PROTECTED_FINAL_ACCOUNT_CENSUS_DRIFT',\n 'Final RLS account rows contain missing or unexpected entities.',\n ),\n );\n }\n const current = new Map(options.rows.map((row) => [maintenanceRowKey(row), row]));\n for (const protectedRow of options.plan.protected_rows) {\n const row = current.get(maintenanceRowKey(protectedRow));\n if (!row || snapshotRemoteRow(row).row_sha256 !== protectedRow.row_sha256) {\n issues.push(\n issue('PROTECTED_ROW_DRIFT', 'A protected non-action row changed.', protectedRow),\n );\n }\n }\n for (const action of options.plan.actions) {\n const row = current.get(maintenanceRowKey(action));\n const desired = loadMaintenanceDesiredPayload(options.planDir, action);\n if (\n !row ||\n row.user_id !== action.expected_user_id ||\n row.state_code !== 0 ||\n sha256Json(row.json_ordered) !== sha256Json(desired) ||\n row.model_id !== action.before?.model_id ||\n row.rule_verification !== action.before?.rule_verification\n ) {\n issues.push(\n issue(\n 'PROTECTED_ACTION_READBACK_MISMATCH',\n 'An action row does not match the desired owner-draft payload.',\n { action_id: action.action_id },\n ),\n );\n }\n }\n const projected = expectedFinalRows({\n plan: options.plan,\n planDir: options.planDir,\n rows: options.rows,\n });\n if (\n sha256Json(maintenanceProjectedReferenceFingerprint(projected)) !==\n options.plan.projected_reference_sha256\n ) {\n issues.push(\n issue(\n 'PROTECTED_REFERENCE_CLOSURE_MISMATCH',\n 'Final reference closure does not match the frozen projected closure.',\n ),\n );\n }\n return issues;\n}\n\nfunction matchLiveTargets(options: {\n proofs: ProtectedTerminalTargetProof[];\n live: ProtectedLiveDerivativeReadback[];\n snapshots: ProtectedDerivativeSnapshot[];\n primaryClosure: unknown;\n plan: DatasetMaintenancePlan;\n identity: ProtectedExecutionIdentity;\n}): ProtectedVerificationIssue[] {\n const proofs = new Map(options.proofs.map((proof) => [terminalTargetKey(proof), proof]));\n const snapshots = new Map(\n options.snapshots.map((snapshot) => [terminalTargetKey(snapshot), snapshot]),\n );\n const live = new Map(options.live.map((row) => [terminalTargetKey(row), row]));\n const actions = new Map(\n options.plan.actions.map((action) => [maintenanceRowKey(action), action]),\n );\n const primaryEvidence = indexPrimaryActionEvidence({\n closure: options.primaryClosure,\n plan: options.plan,\n });\n const issues: ProtectedVerificationIssue[] = [];\n const expectedKeys = new Set(options.identity.derivative_targets.map(terminalTargetKey));\n const liveKeys = options.live.map(terminalTargetKey);\n const snapshotKeys = options.snapshots.map(terminalTargetKey);\n if (\n liveKeys.length !== expectedKeys.size ||\n new Set(liveKeys).size !== expectedKeys.size ||\n snapshotKeys.length !== expectedKeys.size ||\n new Set(snapshotKeys).size !== expectedKeys.size ||\n [...expectedKeys].some((key) => !live.has(key) || !snapshots.has(key))\n ) {\n issues.push(\n issue(\n 'PROTECTED_DERIVATIVE_LIVE_SET_MISMATCH',\n 'Independent derivative rows and snapshots must be unique and exactly match all 50 frozen targets.',\n ),\n );\n }\n for (const target of options.identity.derivative_targets) {\n const key = terminalTargetKey(target);\n const row = live.get(key);\n const proof = proofs.get(key);\n const snapshot = snapshots.get(key);\n const action = actions.get(key);\n const evidence = primaryEvidence?.get(key);\n if (\n !row ||\n !proof ||\n !snapshot ||\n !action?.desired_payload ||\n !evidence ||\n row.user_id !== options.identity.actor.user_id ||\n row.state_code !== 0 ||\n snapshot.user_id !== options.identity.actor.user_id ||\n snapshot.state_code !== 0 ||\n row.json_ordered_sha256 !== action.desired_payload.sha256 ||\n evidence.live_json_sha256 !== evidence.desired_json_ordered_sha256 ||\n evidence.live_json_ordered_sha256 !== evidence.desired_json_ordered_sha256 ||\n snapshot.json_ordered_sha256 !== evidence.desired_json_ordered_sha256 ||\n snapshot.snapshot_sha256 !== proof.completed_snapshot_sha256 ||\n !snapshot.extracted_md_sha256 ||\n !snapshot.embedding_ft_sha256 ||\n !snapshot.embedding_ft_at\n ) {\n issues.push(\n issue(\n 'PROTECTED_DERIVATIVE_LIVE_MISMATCH',\n 'Independent RLS derivative readback does not match the terminal database proof.',\n { table: target.table, id: target.id, version: target.version },\n ),\n );\n }\n }\n return issues;\n}\n\nasync function fetchProtectedDerivativeSnapshots(options: {\n context: DatasetMaintenanceRemoteContext;\n identity: ProtectedExecutionIdentity;\n}): Promise<ProtectedDerivativeSnapshot[]> {\n const snapshots: ProtectedDerivativeSnapshot[] = [];\n const targets = options.identity.derivative_targets;\n for (let offset = 0; offset < targets.length; offset += 5) {\n const chunk = targets.slice(offset, offset + 5);\n snapshots.push(\n ...(await Promise.all(\n chunk.map(async (target) =>\n parseProtectedDerivativeSnapshot(\n await fetchMaintenanceDerivativeSnapshot({\n context: options.context,\n table: target.table,\n id: target.id,\n version: target.version,\n }),\n {\n table: target.table,\n id: target.id,\n version: target.version,\n userId: target.user_id,\n },\n ),\n ),\n )),\n );\n }\n return snapshots;\n}\n\ntype ProtectedVerificationDependencies = {\n fetchAccountRows: typeof fetchMaintenanceAccountRows;\n fetchDerivativeRows: typeof fetchMaintenanceDerivativeTargetRows;\n fetchSnapshots: typeof fetchProtectedDerivativeSnapshots;\n};\n\nasync function verifyProtectedExecutionWithDependencies(\n options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n identity: ProtectedExecutionIdentity;\n proof: ProtectedExecutionStatusProof;\n context: DatasetMaintenanceRemoteContext;\n pageSize?: number;\n },\n dependencies: ProtectedVerificationDependencies,\n): Promise<ProtectedVerificationResult> {\n const { fetchAccountRows, fetchDerivativeRows, fetchSnapshots } = dependencies;\n const structuralIssues = verifyStatusStructure({\n identity: options.identity,\n proof: options.proof,\n });\n if (structuralIssues.length) {\n return {\n status: options.proof.status === 'indeterminate' ? 'indeterminate' : 'failed',\n issues: structuralIssues,\n account_readback: null,\n derivative_readback: null,\n };\n }\n if (options.proof.execution_status === 'not_admitted') {\n return {\n status: 'indeterminate',\n issues: [\n issue(\n 'PROTECTED_EXECUTION_NOT_FOUND',\n 'The server has a protected preflight but no admitted execution; admission must not be retried.',\n ),\n ],\n account_readback: null,\n derivative_readback: null,\n };\n }\n if (options.proof.status === 'pending') {\n return { status: 'pending', issues: [], account_readback: null, derivative_readback: null };\n }\n if (options.proof.status === 'indeterminate') {\n return {\n status: 'indeterminate',\n issues: [\n issue(\n 'PROTECTED_EXECUTION_INDETERMINATE',\n 'Database reported an indeterminate terminal execution; admission must not be retried.',\n options.proof.failure,\n ),\n ],\n account_readback: null,\n derivative_readback: null,\n };\n }\n if (options.proof.status === 'failed') {\n return {\n status: 'failed',\n issues: [\n issue(\n 'PROTECTED_EXECUTION_FAILED',\n 'Database reported a definitive protected execution failure.',\n options.proof.failure,\n ),\n ],\n account_readback: null,\n derivative_readback: null,\n };\n }\n\n const issues = [\n ...verifyAuditClosure(options.proof),\n ...verifyTerminalTargets({ identity: options.identity, proof: options.proof }),\n ];\n if (issues.length) {\n return { status: 'failed', issues, account_readback: null, derivative_readback: null };\n }\n const account = await fetchAccountRows({\n context: options.context,\n userId: options.identity.actor.user_id,\n pageSize: options.pageSize,\n });\n issues.push(\n ...verifyFinalAccountRows({\n plan: options.plan,\n planDir: options.planDir,\n rows: account.rows,\n completeness: account.completeness,\n }),\n );\n const derivative = await fetchDerivativeRows({\n context: options.context,\n targets: options.identity.derivative_targets,\n });\n const live = derivative.rows.map(inspectProtectedLiveDerivative);\n if (live.some((row) => row === null)) {\n issues.push(\n issue(\n 'PROTECTED_DERIVATIVE_LIVE_INVALID',\n 'A live derivative row lacks primary JSON, extracted markdown, embedding, or timestamps.',\n ),\n );\n }\n const validLive = live.filter((row): row is ProtectedLiveDerivativeReadback => row !== null);\n const snapshots = await fetchSnapshots({\n context: options.context,\n identity: options.identity,\n });\n if (validLive.length === PROTECTED_EXECUTION_COUNTS.derivative_target_count) {\n const terminalProofs =\n options.proof.derivative_readback.proof_level === 'causal_terminal'\n ? options.proof.derivative_readback.targets\n : [];\n issues.push(\n ...matchLiveTargets({\n proofs: terminalProofs,\n live: validLive,\n snapshots,\n primaryClosure: options.proof.primary_readback?.closure,\n plan: options.plan,\n identity: options.identity,\n }),\n );\n }\n return {\n status: issues.length ? 'failed' : 'passed',\n issues,\n account_readback: {\n rows: account.rows,\n source_urls: account.source_urls,\n completeness: account.completeness,\n },\n derivative_readback: {\n rows: validLive,\n snapshots,\n source_urls: derivative.source_urls,\n },\n };\n}\n\nexport async function verifyProtectedExecution(options: {\n plan: DatasetMaintenancePlan;\n planDir: string;\n identity: ProtectedExecutionIdentity;\n proof: ProtectedExecutionStatusProof;\n context: DatasetMaintenanceRemoteContext;\n pageSize?: number;\n}): Promise<ProtectedVerificationResult> {\n return verifyProtectedExecutionWithDependencies(options, {\n fetchAccountRows: fetchMaintenanceAccountRows,\n fetchDerivativeRows: fetchMaintenanceDerivativeTargetRows,\n fetchSnapshots: fetchProtectedDerivativeSnapshots,\n });\n}\n\nexport const __testInternals = {\n expectedFinalRows,\n fetchProtectedDerivativeSnapshots,\n inspectProtectedLiveDerivative,\n matchLiveTargets,\n verifyAuditClosure,\n verifyFinalAccountRows,\n verifyStatusStructure,\n verifyTerminalTargets,\n verifyProtectedExecutionWithDependencies,\n};\n"]}
|