diff --git a/tests/Fixtures/contracts/mysql-json-text/README.md b/tests/Fixtures/contracts/mysql-json-text/README.md new file mode 100644 index 000000000..e6f165957 --- /dev/null +++ b/tests/Fixtures/contracts/mysql-json-text/README.md @@ -0,0 +1,39 @@ +# MySQL JSON text upgrade source plan + +These files compile the selected planning step for Server #1016. They do not +implement an upgrader, assign a schema version, execute SQL, or qualify a target +catalog. The source is the exact post-#1032 main commit `c9a75838`. + +`upgrade-plan.v1.json` pins the version-8 inputs and describes all 75 JSON +columns in 36 tables. Each table has one candidate ALTER, preserved column +attributes/positions, 75 unique enforced-check names, and a derived candidate +CREATE definition. The other 24 relations remain byte-identical. The complete +candidate catalog hash composes the source catalog with those 36 replacements. + +The candidate CREATE strings are source-review inputs, not SHOW CREATE output +captured from MySQL. The implementation must qualify actual presentation and +check enforcement before adopting exact target catalog bytes. Catalog ordering +is an identity order; a fresh bootstrap still needs a valid foreign-key creation +order. It must create target definitions directly, without an old-JSON bootstrap +followed by ALTERs. Historical migration/catalog bytes remain unchanged. + +`upgrade-vectors.v1.json` binds the exact plan hash. Its 22 required-observation +families include every before/after table interruption (72 cells), every column's +validation/null boundary, and the future precision/read/export/replay controls. +Seven numeric carriers retain raw JSON as strings and expected binary64/int64 +identities; they are requirements, not observed database results. Existing +`json-doubles.json` bytes and published-PHP exceptions remain unchanged. Actual +typed error-code/envelope bindings are still required with the implementation. + +MySQL >=8.0.16 and proven enforced checks are prerequisites before schema writes. +MariaDB stays on its existing independent catalog/version. Writers must be +stopped/fenced, every resumed table must be exactly old or exactly target, and +final ownership/ledger advancement follows complete target verification. A +post-cutover old backup restore requires its own write-reconciliation/RPO +review; no lossy down conversion is proposed. + +The 24 pinned production query sites are a static review inventory. They do not +prove all document readers, preserved plans, or text-column behavior. Later +source changes must be reconciled. The actual bootstrap/flavor/version/catalog, +resumption, query/reader implementation, exact source/backend qualification, +Security review and General's invocation/release gates remain outstanding. diff --git a/tests/Fixtures/contracts/mysql-json-text/upgrade-plan.v1.json b/tests/Fixtures/contracts/mysql-json-text/upgrade-plan.v1.json new file mode 100644 index 000000000..fb129a610 --- /dev/null +++ b/tests/Fixtures/contracts/mysql-json-text/upgrade-plan.v1.json @@ -0,0 +1,2063 @@ +{ + "schema": "durable-workflow.mysql-json-text-upgrade-plan.v1", + "status": "unexecuted source-planning candidate; no schema/DDL/catalog qualification", + "runtime_enabled": false, + "issue": "https://github.com/durable-workflow/server/issues/1016", + "decisions": [ + "https://github.com/durable-workflow/server/issues/1016#issuecomment-6644575285", + "https://github.com/durable-workflow/server/issues/1016#issuecomment-6645839849" + ], + "source_commit": "c9a75838f0d70fd5237f4cbcf70f9f046f1e5d42", + "source_inputs": [ + { + "path": "rust/migrations/mysql/0003_full_schema.sql", + "blob": "9da46d65dd3daf7706623569e0cdf49e10f6220b", + "sha256": "10d026be9afb028df84196ab5ce7bd7fd759775d3ca1db913a8eb17e3786bde4", + "bytes": 74607 + }, + { + "path": "rust/migrations/mysql/0004_worker_incarnations.sql", + "blob": "3de9d1248976daa59e64336c65aa19b3f6d3a9d3", + "sha256": "c7e5b41f063b46ebcf29d2fe7043097a9fc745b69d0a231393861a6407088e1d", + "bytes": 1146 + }, + { + "path": "rust/migrations/mysql/0005_worker_session_holders.sql", + "blob": "ad3089f47ad94b4516ad6944fa1f5719b8662aa5", + "sha256": "142d09810f73f39cb77c528a476d0a364bbad1e2bf78371736fb94308ddc7348", + "bytes": 559 + }, + { + "path": "rust/migrations/mysql/0006_stream_reclaims.sql", + "blob": "2adaf3ba0313ab5b9a76cead9f2f3ed0432117a4", + "sha256": "e7a0d59fb1af8200b514747b56fa5b2bfb3afb1d40b58e7aa176465c4fea887f", + "bytes": 804 + }, + { + "path": "rust/migrations/mysql/0007_service_calls.sql", + "blob": "6cd5af9287c0edf468134b901ba3dc6cc88eb144", + "sha256": "8879fb144019a004438b13d1a2afd05abd9ec7c6b94ceb72230c8eb48e682fad", + "bytes": 1401 + }, + { + "path": "rust/migrations/mysql/0008_external_payload_deletions.sql", + "blob": "2d7f3b61dc15a15f31f16f7a5aa77b53264ec613", + "sha256": "8a8048db6782d9640d3af66994c17432646d53cbb2a9f3e7fe720b4b295b3fe4", + "bytes": 1361 + }, + { + "path": "rust/migrations/mysql/0008_catalog.json", + "blob": "aefe05c8cae38590e49c873e612a60aaf8e431ae", + "sha256": "6f1794272e0672400016a49aa3601530e46ff001d86a11741815329d935d4d4f", + "bytes": 95181 + }, + { + "path": "rust/migrations/mariadb/0008_catalog.json", + "blob": "fb1eae657f070c8e2d2c7424a3433b110fd85ccf", + "sha256": "4b4a712a152cd64039566f9ef6ce09c0d0273dd27e8f18d88819c1ef54f06cc7", + "bytes": 89116 + }, + { + "path": "rust/src/runtime/mysql.rs", + "blob": "25193b22e718c5d2a692abca06a969c046df0ed8", + "sha256": "6190c76ffebcaa451c3451dc0e45c0020bb054412ff4db8002591a09635ae200", + "bytes": 104545 + }, + { + "path": "rust/src/runtime/schema_upgrade.rs", + "blob": "64dd8903d87dbec42d27ac67a475cb289795e5fe", + "sha256": "6db083e371abbe019c3e7706f7d6b0228153290fdf2704a4d998d929e485ef2f", + "bytes": 6692 + }, + { + "path": "rust/src/runtime/backend.rs", + "blob": "02735d708e45d503b326d78bb287f986f0c1dc08", + "sha256": "dec995e2297142dd6dc24538cc5c0dfd2def4ea73522c49aca05b9a0a9dee60e", + "bytes": 69056 + }, + { + "path": "rust/src/runtime/schedule_list.rs", + "blob": "ee4f90577f0df65577f29d3931eb060cadf5e40c", + "sha256": "ed848e7690eef57f35043d640e25abdae00e1722dbf31d841a6be4f44c29179e", + "bytes": 33874 + }, + { + "path": "rust/src/runtime/operator_metrics.rs", + "blob": "0529e229262521ebcfcef63b139834f560f29722", + "sha256": "1af2707884400ba30ff35870dbbf97fd08e14815735f7d3924c142825c6c56cb", + "bytes": 97412 + }, + { + "path": "rust/src/runtime/run_diagnostics.rs", + "blob": "03c4bca78b364d7eaee49a0414bcb1d52177386e", + "sha256": "6ab065a96bf026fbdb2d455ca9640ce9f30576c3411016a9955b7b5b8787fefc", + "bytes": 63024 + }, + { + "path": "rust/src/runtime/upgrade/fingerprint.rs", + "blob": "df82bb3b845616dbb97a4e68159c639c1d83080a", + "sha256": "064a15780932e5fd567f9c99e6d6ef9146d3ad11f8a43d653a01dea6692d1a19", + "bytes": 12641 + }, + { + "path": "rust/vendor/sqlx-mysql/src/types/json.rs", + "blob": "b47baa3554b02454c216f791f466e3b9f77e314a", + "sha256": "bda8b6b7b8718b3fb9b0f50925249ad8dda41728044c75b174b6d6f09d64bd36", + "bytes": 2658 + }, + { + "path": "tests/Fixtures/ServerParity/json-doubles.json", + "blob": "f75ab7a295c70b27b61c3115aff5a7ade1c9627a", + "sha256": "997dfc9058be312e698fbd56724341b7cdb8ecf94094cbb75e19587628650f07", + "bytes": 2974 + } + ], + "source_schema_version": 8, + "target_schema_version": null, + "target_migration_checksum": null, + "source_cumulative_migration_sha384": "990d2732d4fe7b5a34ad79e21c2f3dc8c9130dd4d9d3fe97c37f8bad2b2c4b48cedec8613ce4d15b9b852afcadf701fd", + "source_checksum_derivation": "SHA-384 of the six exact migration inputs joined by one LF, matching the MySQL migrator concat include_str separators", + "counts": { + "source_catalog_tables": 60, + "affected_tables": 36, + "affected_json_columns": 75, + "nullable_columns": 67, + "not_null_columns": 8, + "unchanged_tables": 24 + }, + "engine_contract": { + "vendor": "MySQL", + "minimum_version": [ + 8, + 0, + 16 + ], + "recognized_supported_line_and_enforced_check_preflight_required": true, + "preflight_before_any_schema_write": true, + "throwaway_support_probe_in_operator_database": false, + "mariadb_apply_this_plan": false, + "mariadb_source_schema_version_unchanged": 8, + "target_version_requires_separate_flavor_specific_assignment": true + }, + "catalog_contract": { + "source_catalog": "rust/migrations/mysql/0008_catalog.json", + "target_composition": "replace only the 36 exact source relations with candidate_canonical_create; retain all other 24 relations byte-identically", + "candidate_catalog_sha256": "4396886a2273c22d37aee3754a0398b4104021a2a8b5d83c7517c950794fc902", + "candidate_hash_encoding": "UTF-8 compact JSON array of [table, canonical-create] pairs in source catalog order; no trailing newline", + "candidate_create_is": "derived expected presentation for source review, not captured SHOW CREATE or accepted backend evidence", + "required_before_target_adoption": "Verify actual SHOW CREATE/canonicalization and information_schema check enforcement on selected MySQL endpoints; amend candidate bytes explicitly if presentation differs. Do not weaken exact old/new matching.", + "constraint_name_derivation": "dw_json_text_ plus first 20 lowercase SHA-256 hex characters of UTF-8 table + NUL + column; 75 schema-wide unique bounded ASCII names", + "enforcement_authority": "require matching CHECK clause and TABLE_CONSTRAINTS.ENFORCED=YES; CREATE text alone does not establish enforcement", + "preserve": [ + "column ordinal, NULL/NOT NULL/default/comment", + "all unaffected columns, table options, indexes and foreign keys", + "SQL NULL versus JSON null", + "all task/receipt identifiers and existing bounded/index-led readers" + ] + }, + "fresh_bootstrap": { + "strategy": "create complete target relations directly, then verify complete target catalog and mark target identity last", + "create_old_json_then_alter": false, + "create_order": "must be separately compiled in valid FK dependency order; catalog sort order is an identity, not an execution order", + "partial_bootstrap": "accept only absent or exact complete target relations under existing initialization ownership; refuse occupied/foreign/partial definitions", + "historical_migrations_rewritten": false + }, + "upgrade_authority": { + "recognized_source_version": 8, + "writer_state": "all writers stopped or fenced", + "owner": "existing dedicated initialization connection and bounded GET_LOCK", + "before_first_ddl": [ + "recognized engine/version and enforced-CHECK surface", + "exact source marker and successful SQLx ledger/checksum", + "exact source catalog or recognized exact old/new table mixture under own rust-upgrading fence", + "own initialization lock and fence" + ], + "table_order": "the exact steps array, one atomic ALTER per table", + "unaffected_relations": "must remain exact source definitions on entry/resume/final verification", + "resume": "inspect every complete table; old executes once, target skips, third state refuses; lost DDL acknowledgement is resolved by fresh catalog inspection", + "final_identity": "only after every table, check clause and enforcement verifies, atomically advance the target SQLx ledger and ownership marker", + "old_binary": "must refuse new marker/catalog before writes", + "lost_final_commit": "resolve ledger/marker and full target by readback; never infer rollback or blindly repeat DDL" + }, + "representation": { + "single_authoritative_document": true, + "shadow_or_dual_write": false, + "writes": "bind application-produced JSON text without a MySQL JSON cast", + "precision_reads": "select complete preserved text and decode with the precision-preserving application JSON/typed codec", + "sql_json_function_numeric_projection_is_authoritative": false, + "legacy_rounded_rows": "retain exactly the numeric representation still available before upgrade; missing digits are not reconstructed", + "sql_null": "SQL NULL remains distinct from the literal JSON text null; nullable JSON_VALID checks accept SQL UNKNOWN, NOT NULL remains separately enforced" + }, + "query_review": { + "status": "pinned static production-site classification; actual text-column/backend/plan qualification remains required", + "files": [ + { + "path": "rust/src/runtime/backend.rs", + "blob": "02735d708e45d503b326d78bb287f986f0c1dc08", + "sha256": "dec995e2297142dd6dc24538cc5c0dfd2def4ea73522c49aca05b9a0a9dee60e", + "bytes": 69056 + }, + { + "path": "rust/src/runtime/schedule_list.rs", + "blob": "ee4f90577f0df65577f29d3931eb060cadf5e40c", + "sha256": "ed848e7690eef57f35043d640e25abdae00e1722dbf31d841a6be4f44c29179e", + "bytes": 33874 + }, + { + "path": "rust/src/runtime/operator_metrics.rs", + "blob": "0529e229262521ebcfcef63b139834f560f29722", + "sha256": "1af2707884400ba30ff35870dbbf97fd08e14815735f7d3924c142825c6c56cb", + "bytes": 97412 + }, + { + "path": "rust/src/runtime/run_diagnostics.rs", + "blob": "03c4bca78b364d7eaee49a0414bcb1d52177386e", + "sha256": "6ab065a96bf026fbdb2d455ca9640ce9f30576c3411016a9955b7b5b8787fefc", + "bytes": 63024 + }, + { + "path": "rust/src/runtime/upgrade/fingerprint.rs", + "blob": "df82bb3b845616dbb97a4e68159c639c1d83080a", + "sha256": "064a15780932e5fd567f9c99e6d6ef9146d3ad11f8a43d653a01dea6692d1a19", + "bytes": 12641 + } + ], + "sites": [ + { + "path": "rust/src/runtime/backend.rs", + "line": 542, + "source_line_sha256": "626602ff25ee7e040b5780a8439593bf1e079f6309618fdeec297626d02c14bd", + "symbol": "ACTIVITY_METADATA_HISTORY", + "review_classification": "full-document-read-or-byte-bound; decode preserved text in application", + "source_fragment": "const ACTIVITY_METADATA_HISTORY: &str = \"SELECT h.sequence,h.event_type,CASE WHEN page.projection_bytes<=8388608 THEN h.payload ELSE NULL END AS payload,h.workflow_task_id,h.recorded_at,page.projection_count FROM (SELECT id,sequence,COUNT(*) OVER () AS projection_count,SUM(payload_bytes) OVER (ORDER BY sequence) AS projection_bytes FROM (SELECT id,sequence,octet_length(CAST(payload AS CHAR CHARACTER SET utf8mb4)) AS payload_bytes FROM workflow_history_events FORCE INDEX (workflow_history_events_workflow_run_id_sequence_unique) WHERE workflow_run_id=$1 AND event_type IN ('ActivityScheduled','ActivityStarted','ActivityHeartbeatRecorded','ActivityRetryScheduled','ActivityCompleted','ActivityFailed','ActivityTimedOut','ActivityCancelled')) AS sizes ORDER BY sequence LIMIT 10001) AS page JOIN workflow_history_events h ON h.id=page.id ORDER BY page.sequence\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 548, + "source_line_sha256": "7336e3a3afa6ee55a06545c440e4d6b3e6d0cb2b3d29151aaecbf543dd998d82", + "symbol": "SUMMARY_HISTORY_SQL", + "review_classification": "full-document-read-or-byte-bound; decode preserved text in application", + "source_fragment": "const SUMMARY_HISTORY_SQL: &str = \"SELECT id,sequence,event_type,CAST(payload AS CHAR) AS payload_json FROM workflow_history_events FORCE INDEX (workflow_history_events_workflow_run_id_sequence_unique) WHERE workflow_run_id=$1 AND sequence>$2 ORDER BY sequence LIMIT 16\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 549, + "source_line_sha256": "e3dc6f9612817872a54cdcea5dd4aecfd779636301ab2a3892eb3f94c7c8d396", + "symbol": "OBSERVATION_FAILURE_EVENT", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const OBSERVATION_FAILURE_EVENT: &str = \"SELECT id,sequence,event_type,recorded_at FROM workflow_history_events WHERE workflow_run_id=? AND CAST(JSON_UNQUOTE(JSON_EXTRACT(payload,'$.failure_id')) AS BINARY)=CAST(? AS BINARY) AND event_type IN ('ActivityFailed','ActivityTimedOut','ChildRunFailed','ChildRunCancelled','ChildRunTerminated','WorkflowFailed','WorkflowTimedOut','WorkflowCancelled','WorkflowTerminated','UpdateCompleted') ORDER BY sequence DESC LIMIT 1\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 554, + "source_line_sha256": "adb968fc1395aebb3545ac54f5cfd96dd517e640482b9c041c28f10c1a429edb", + "symbol": "ACTIVITY_RESULT_EVENT_SQL", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const ACTIVITY_RESULT_EVENT_SQL: &str = \"SELECT sequence,event_type,payload FROM workflow_history_events WHERE CAST(workflow_run_id AS BINARY)=CAST(? AS BINARY) AND event_type IN ('ActivityScheduled','ActivityStarted','ActivityHeartbeatRecorded','ActivityRetryScheduled','ActivityCompleted','ActivityFailed','ActivityTimedOut','ActivityCancelled') AND (CAST(JSON_UNQUOTE(JSON_EXTRACT(payload,'$.activity_execution_id')) AS BINARY)=CAST(? AS BINARY) OR CAST(JSON_UNQUOTE(JSON_EXTRACT(payload,'$.activity.id')) AS BINARY)=CAST(? AS BINARY)) ORDER BY sequence DESC LIMIT 1\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 555, + "source_line_sha256": "44d202e8d233d4155f89312e0aea9e523d1379cc0d1e6b73b7b00d183e85762b", + "symbol": "QUERY_CACHE_SCAN", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const QUERY_CACHE_SCAN: &str = \"SELECT `key`,value,expiration FROM dw_query_cache WHERE `key` LIKE 'dw-native-query:%' AND BINARY JSON_UNQUOTE(JSON_EXTRACT(value,'$.namespace'))=BINARY ? ORDER BY `key` LIMIT 65\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 563, + "source_line_sha256": "1c7d8fc4a7128380a9fce41b7839b2b1da56f4cfd479161ea6ee5a9dd0f41735", + "symbol": "SELECTION_RESOLUTION_SQL", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const SELECTION_RESOLUTION_SQL: &str = \"SELECT id,payload FROM workflow_history_events WHERE workflow_run_id=? AND event_type='SelectionResolved' AND JSON_UNQUOTE(JSON_EXTRACT(payload,'$.selection_group_id'))=? ORDER BY sequence LIMIT 1\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 564, + "source_line_sha256": "3aa52c1ae290f6e849e3a371b9e108c72f3b4c002ba90df05cb07e40410e1438", + "symbol": "BRIDGE_COMMAND", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const BRIDGE_COMMAND: &str = \"SELECT workflow_run_id,resolved_workflow_run_id FROM workflow_commands WHERE workflow_instance_id=? AND command_type=? AND status='accepted' AND BINARY JSON_UNQUOTE(JSON_EXTRACT(context,'$.server.metadata.adapter'))=BINARY ? AND BINARY JSON_UNQUOTE(JSON_EXTRACT(context,'$.server.metadata.action'))=BINARY ? AND BINARY JSON_UNQUOTE(JSON_EXTRACT(context,'$.server.metadata.idempotency_key'))=BINARY ? AND BINARY JSON_UNQUOTE(JSON_EXTRACT(context,CONCAT('$.server.metadata.',?)))=BINARY ? AND (request_id IS NULL OR BINARY request_id=BINARY ?) ORDER BY accepted_at DESC,command_sequence DESC LIMIT 1\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 566, + "source_line_sha256": "89c43534454eeaa18cf9667c6f0dd2d4933626b59584ee04a2a47343f4a4b591", + "symbol": "RANGE_REPAIR_TASK_SQL", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const RANGE_REPAIR_TASK_SQL: &str = \"SELECT * FROM workflow_tasks WHERE workflow_run_id=? AND namespace=? AND task_type='workflow' AND status='failed' AND JSON_UNQUOTE(JSON_EXTRACT(payload,'$.replay_blocked'))='true' ORDER BY CASE WHEN available_at IS NULL THEN 1 ELSE 0 END,available_at,created_at,id LIMIT 1\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 567, + "source_line_sha256": "6238073a4d6f5fdfaf659b62feef0bbcdfc852cc01c31920a5b10cb5662bcdd1", + "symbol": "ACTIVITY_OPEN_TASK_SQL", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const ACTIVITY_OPEN_TASK_SQL: &str = \"SELECT * FROM workflow_tasks WHERE workflow_run_id=? AND task_type='activity' AND status IN ('ready','leased') AND JSON_UNQUOTE(JSON_EXTRACT(payload,'$.activity_execution_id'))=? ORDER BY id LIMIT 1\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 568, + "source_line_sha256": "af5d8a18ada8aeb807213af29fd3bb5571447943c7eebf3cae9b180e40903d42", + "symbol": "LOCAL_ACTIVITY_EXECUTIONS", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const LOCAL_ACTIVITY_EXECUTIONS: &str = \"SELECT status FROM activity_executions WHERE workflow_run_id IN (SELECT id FROM workflow_runs WHERE namespace=?) AND JSON_UNQUOTE(JSON_EXTRACT(activity_options,'$.execution_mode'))='local'\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 569, + "source_line_sha256": "110f96e5f2ba2f534fba2b20ca58e286604a14a7397e1f480387a9818c3d3682", + "symbol": "LOCAL_ACTIVITY_ATTEMPTS", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const LOCAL_ACTIVITY_ATTEMPTS: &str = \"SELECT p.status FROM activity_attempts p JOIN activity_executions a ON a.id=p.activity_execution_id WHERE p.workflow_run_id IN (SELECT id FROM workflow_runs WHERE namespace=?) AND JSON_UNQUOTE(JSON_EXTRACT(a.activity_options,'$.execution_mode'))='local'\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 585, + "source_line_sha256": "22154725837e8ef03bcb86c59ea4888baafd57c8d06d57d14dccb4c174196ec1", + "symbol": "SESSION_RUNNING_ATTEMPTS", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const SESSION_RUNNING_ATTEMPTS: &str = \"SELECT COUNT(*) FROM activity_attempts p JOIN activity_executions e ON e.id=p.activity_execution_id JOIN workflow_tasks t ON t.id=p.workflow_task_id WHERE t.namespace=? AND p.status='running' AND p.lease_expires_at>? AND p.lease_owner=? AND JSON_UNQUOTE(JSON_EXTRACT(e.activity_options,'$.worker_session.session_id'))=? AND p.workflow_task_id<>?\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 587, + "source_line_sha256": "455e6344f595dd08de2820c3a19c074f5acb821a00845c116afba4e2d2c0d2f9", + "symbol": "TIMER_TASK_SQL", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const TIMER_TASK_SQL: &str = \"SELECT id,payload FROM workflow_tasks WHERE workflow_run_id=? AND task_type='timer' AND status='ready' AND JSON_UNQUOTE(JSON_EXTRACT(payload,'$.timer_id'))=? AND BINARY namespace=BINARY ?\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 588, + "source_line_sha256": "8c6a86be850233a4d695c138d2ffdbb5d7c8c92a68ba9f18293dc3ad7f8115dc", + "symbol": "TIMER_SCHEDULE_SQL", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const TIMER_SCHEDULE_SQL: &str = \"SELECT payload FROM workflow_history_events WHERE workflow_run_id=? AND event_type='TimerScheduled' AND JSON_UNQUOTE(JSON_EXTRACT(payload,'$.timer_id'))=? ORDER BY sequence DESC LIMIT 1\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 589, + "source_line_sha256": "7a77fa64c8bd70ae059c90bb5f66c75f09a02f7aa6797c18bda7c5e3b5e3a726", + "symbol": "SIGNAL_RECEIVED_SEQUENCE_SQL", + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "const SIGNAL_RECEIVED_SEQUENCE_SQL: &str = \"SELECT sequence FROM workflow_history_events WHERE workflow_run_id=? AND event_type='SignalReceived' AND JSON_UNQUOTE(JSON_EXTRACT(payload,'$.signal_id'))=? ORDER BY sequence LIMIT 1\";" + }, + { + "path": "rust/src/runtime/backend.rs", + "line": 600, + "source_line_sha256": "4f3b03142a6f42248ae3de6a710f5de1a0a80aaaf46aba0aaaae6d6151ccfb09", + "symbol": "HISTORY_PAGE", + "review_classification": "full-document-read-or-byte-bound; decode preserved text in application", + "source_fragment": "const HISTORY_PAGE: &str = \"SELECT h.* FROM (SELECT id,sequence,SUM(payload_bytes) OVER (ORDER BY sequence) AS page_bytes FROM (SELECT id,sequence,LENGTH(CAST(payload AS CHAR CHARACTER SET utf8mb4)) AS payload_bytes FROM workflow_history_events FORCE INDEX (workflow_history_events_workflow_run_id_sequence_unique) WHERE workflow_run_id=? AND sequence>? ORDER BY sequence LIMIT ?) AS sizes) AS page JOIN workflow_history_events h ON h.id=page.id WHERE page.page_bytes<=8388608 ORDER BY page.sequence\";" + }, + { + "path": "rust/src/runtime/schedule_list.rs", + "line": 69, + "source_line_sha256": "aa097e6af95ae6c4ec3d550bb624d71c284014c94d0191ff404911346808620c", + "symbol": null, + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "(Self::WorkflowType, _) => \"JSON_UNQUOTE(JSON_EXTRACT(action,'$.\\\"workflow_type\\\"'))\"," + }, + { + "path": "rust/src/runtime/schedule_list.rs", + "line": 70, + "source_line_sha256": "77c5c9e537e665e755611b9b1cf8fb5ba081e75e582d294e3b29d1f67d604349", + "symbol": null, + "review_classification": "JSON-string-or-boolean-predicate; no precision-authoritative numeric projection", + "source_fragment": "(Self::TaskQueue, _) => \"JSON_UNQUOTE(JSON_EXTRACT(action,'$.\\\"task_queue\\\"'))\"," + }, + { + "path": "rust/src/runtime/operator_metrics.rs", + "line": 97, + "source_line_sha256": "999f7531cb3ab3e6aed748ce0642a269cb002a43fd28e63cb1fe3f8e8f272f70", + "symbol": null, + "review_classification": "bound-input-workflow-type-filter", + "source_fragment": "mysql: concat!($($head)+, \" AND \", $column, \" IN (SELECT jt.t FROM JSON_TABLE(\", $n," + }, + { + "path": "rust/src/runtime/run_diagnostics.rs", + "line": 626, + "source_line_sha256": "33bd81a927cb89229477049a57a3b480ec4b07f3cdf84f7c4e4eefda8284df18", + "symbol": null, + "review_classification": "full-document-read-or-byte-bound; decode preserved text in application", + "source_fragment": "\"MySQL\" => \"SELECT sequence,event_type,recorded_at,CAST(payload AS CHAR) AS payload_text FROM workflow_history_events WHERE workflow_run_id=$1 ORDER BY sequence DESC LIMIT 1\"," + }, + { + "path": "rust/src/runtime/upgrade/fingerprint.rs", + "line": 267, + "source_line_sha256": "e3751f909c9bca23983bf840d6335f3a39ffbfb812238b210a5fa994655798cf", + "symbol": null, + "review_classification": "source-fingerprint-or-metadata-string-rendering", + "source_fragment": "let columns: Vec<(String, String)> = sqlx::query_as(\"SELECT CAST(COLUMN_NAME AS CHAR),CAST(DATA_TYPE AS CHAR) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? ORDER BY ORDINAL_POSITION\")" + }, + { + "path": "rust/src/runtime/upgrade/fingerprint.rs", + "line": 269, + "source_line_sha256": "4a4e8d13da384df5aa978fe602af6eba7c2fa84ad4c4bce91a63870b4b003db7", + "symbol": null, + "review_classification": "source-fingerprint-or-metadata-string-rendering", + "source_fragment": "let key: Vec = sqlx::query_scalar(\"SELECT CAST(COLUMN_NAME AS CHAR) FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? AND CONSTRAINT_NAME='PRIMARY' ORDER BY ORDINAL_POSITION\")" + }, + { + "path": "rust/src/runtime/upgrade/fingerprint.rs", + "line": 278, + "source_line_sha256": "042c8da1537a663962e61d61a640f9f262a7dfb17de0ff9dbc5fc3d0dd74c6c9", + "symbol": null, + "review_classification": "source-fingerprint-or-metadata-string-rendering", + "source_fragment": "\"CAST(IF(`{c}` IS NULL,'NULL',CONCAT('X''',HEX(`{c}`),'''')) AS CHAR CHARACTER SET utf8mb4)\"" + }, + { + "path": "rust/src/runtime/upgrade/fingerprint.rs", + "line": 280, + "source_line_sha256": "9da7b5cb2ded4b9d213356d0fefb366dcc68b95094c8789168327902496da2c7", + "symbol": null, + "review_classification": "source-fingerprint-or-metadata-string-rendering", + "source_fragment": "_ => format!(\"CAST(QUOTE(`{c}`) AS CHAR CHARACTER SET utf8mb4)\")," + } + ], + "all_document_readers": "Future source qualification must cover application reads/writes/copies, HTTP history/metadata/diagnostics, receipts, export/import and cold replay across every affected document column. This SQL-function inventory alone is not that proof.", + "source_change_rule": "any changed source/workflow/fixture must be reconciled; later schedule-summary source is not assumed included" + }, + "rollback": { + "before_cutover_new_writes": "verified quiescent pre-upgrade restore may be separately admitted", + "after_new_text_writes": "compatible target-schema binary or forward repair", + "automatic_lossy_down_conversion": false, + "preupgrade_restore_after_cutover": "separate disaster-recovery decision with post-cutover write reconciliation and explicit RPO" + }, + "steps": [ + { + "id": "table-01-activity_executions", + "table": "activity_executions", + "source_create_sha256": "46f1c055ec5e11fd75a39f5228e7b71b65be03f46d65661a043bc6ce2c2c738b", + "columns": [ + { + "name": "retry_policy", + "ordinal_position": 15, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_da40cddf645f92a0f5d3", + "check_clause": "json_valid(`retry_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `retry_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_da40cddf645f92a0f5d3` CHECK (json_valid(`retry_policy`)) ENFORCED" + }, + { + "name": "parallel_group_path", + "ordinal_position": 16, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_b0ad277df9011ce8dcd8", + "check_clause": "json_valid(`parallel_group_path`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `parallel_group_path` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_b0ad277df9011ce8dcd8` CHECK (json_valid(`parallel_group_path`)) ENFORCED" + }, + { + "name": "activity_options", + "ordinal_position": 17, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_5f011f3fc9ed1cbf3798", + "check_clause": "json_valid(`activity_options`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `activity_options` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_5f011f3fc9ed1cbf3798` CHECK (json_valid(`activity_options`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `activity_executions` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `sequence` int unsigned NOT NULL,\n `activity_class` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `activity_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `payload_codec` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `arguments` longtext COLLATE utf8mb4_unicode_ci,\n `result` longtext COLLATE utf8mb4_unicode_ci,\n `exception` longtext COLLATE utf8mb4_unicode_ci,\n `connection` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `queue` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `attempt_count` int unsigned NOT NULL DEFAULT '1',\n `current_attempt_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `retry_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `parallel_group_path` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `activity_options` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `schedule_deadline_at` timestamp(6) NULL DEFAULT NULL,\n `close_deadline_at` timestamp(6) NULL DEFAULT NULL,\n `schedule_to_close_deadline_at` timestamp(6) NULL DEFAULT NULL,\n `heartbeat_deadline_at` timestamp(6) NULL DEFAULT NULL,\n `started_at` timestamp(6) NULL DEFAULT NULL,\n `closed_at` timestamp(6) NULL DEFAULT NULL,\n `last_heartbeat_at` timestamp(6) NULL DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `activity_executions_workflow_run_id_sequence_unique` (`workflow_run_id`,`sequence`),\n KEY `activity_executions_workflow_run_id_index` (`workflow_run_id`),\n KEY `activity_exec_prom_metrics_series_idx` (`workflow_run_id`,`queue`,`activity_type`),\n CONSTRAINT `dw_json_text_da40cddf645f92a0f5d3` CHECK (json_valid(`retry_policy`)),\n CONSTRAINT `dw_json_text_b0ad277df9011ce8dcd8` CHECK (json_valid(`parallel_group_path`)),\n CONSTRAINT `dw_json_text_5f011f3fc9ed1cbf3798` CHECK (json_valid(`activity_options`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "cf64b2491364c4f79763c3e8293e447ab62ba49ff3517585136e95b013b5055d", + "candidate_alter_sql": "ALTER TABLE `activity_executions` MODIFY COLUMN `retry_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `parallel_group_path` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `activity_options` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_da40cddf645f92a0f5d3` CHECK (json_valid(`retry_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_b0ad277df9011ce8dcd8` CHECK (json_valid(`parallel_group_path`)) ENFORCED, ADD CONSTRAINT `dw_json_text_5f011f3fc9ed1cbf3798` CHECK (json_valid(`activity_options`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-02-dw_poll_receipts", + "table": "dw_poll_receipts", + "source_create_sha256": "42f5b39dade290d423d5b5c1bb1446972d08931b8af6ddd00f759fcff2103a69", + "columns": [ + { + "name": "response", + "ordinal_position": 7, + "source_attributes_sql": " NOT NULL", + "sql_nullable": false, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_b5a74d059c497aac89e1", + "check_clause": "json_valid(`response`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `response` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_b5a74d059c497aac89e1` CHECK (json_valid(`response`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `dw_poll_receipts` (\n `namespace` varchar(255) COLLATE utf8mb4_0900_bin NOT NULL,\n `worker_id` varchar(255) COLLATE utf8mb4_0900_bin NOT NULL,\n `kind` varchar(8) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,\n `request_id` varchar(255) COLLATE utf8mb4_0900_bin NOT NULL,\n `task_id` varchar(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n `attempt` bigint NOT NULL,\n `response` longtext COLLATE utf8mb4_bin NOT NULL,\n `expires_at` timestamp(6) NOT NULL,\n PRIMARY KEY (`namespace`,`worker_id`,`kind`,`request_id`),\n KEY `dw_poll_receipts_task` (`task_id`),\n CONSTRAINT `dw_poll_receipts_task` FOREIGN KEY (`task_id`) REFERENCES `workflow_tasks` (`id`) ON DELETE CASCADE,\n CONSTRAINT `dw_json_text_b5a74d059c497aac89e1` CHECK (json_valid(`response`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_bin", + "candidate_create_sha256": "df379920f149f843f965218850200244f6dd9805519ce2c8202d17b2964cbd70", + "candidate_alter_sql": "ALTER TABLE `dw_poll_receipts` MODIFY COLUMN `response` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, ADD CONSTRAINT `dw_json_text_b5a74d059c497aac89e1` CHECK (json_valid(`response`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-03-dw_task_completions", + "table": "dw_task_completions", + "source_create_sha256": "9dc5e3069810dfdb106835162f218f9fad0df0794a4712a8a22353c07c8f6ed6", + "columns": [ + { + "name": "receipt", + "ordinal_position": 2, + "source_attributes_sql": " NOT NULL", + "sql_nullable": false, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_49816cb4519d3d981518", + "check_clause": "json_valid(`receipt`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `receipt` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_49816cb4519d3d981518` CHECK (json_valid(`receipt`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `dw_task_completions` (\n `task_id` varchar(26) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,\n `receipt` longtext COLLATE utf8mb4_bin NOT NULL,\n PRIMARY KEY (`task_id`),\n CONSTRAINT `dw_task_completions_task` FOREIGN KEY (`task_id`) REFERENCES `workflow_tasks` (`id`) ON DELETE CASCADE,\n CONSTRAINT `dw_json_text_49816cb4519d3d981518` CHECK (json_valid(`receipt`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "8be9273ef5fcfc54fb2c72189d629aad83f98b6b7dc3c73d05c8b5dd43815cc2", + "candidate_alter_sql": "ALTER TABLE `dw_task_completions` MODIFY COLUMN `receipt` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, ADD CONSTRAINT `dw_json_text_49816cb4519d3d981518` CHECK (json_valid(`receipt`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-04-runtime_credentials", + "table": "runtime_credentials", + "source_create_sha256": "8158144ee5d0ec8c20b6a34de732ebfe4730af4162addcaec3e5165be2824b15", + "columns": [ + { + "name": "roles", + "ordinal_position": 4, + "source_attributes_sql": " NOT NULL", + "sql_nullable": false, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_075fecde0a757510fdf7", + "check_clause": "json_valid(`roles`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `roles` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_075fecde0a757510fdf7` CHECK (json_valid(`roles`)) ENFORCED" + }, + { + "name": "claims", + "ordinal_position": 6, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_5f7fdbad00226a90f331", + "check_clause": "json_valid(`claims`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `claims` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_5f7fdbad00226a90f331` CHECK (json_valid(`claims`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `runtime_credentials` (\n `id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `subject` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `roles` longtext COLLATE utf8mb4_bin NOT NULL,\n `tenant` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,\n `claims` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `token_prefix` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL,\n `token_hash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `expires_at` timestamp NULL DEFAULT NULL,\n `revoked_at` timestamp NULL DEFAULT NULL,\n `rotated_at` timestamp NULL DEFAULT NULL,\n `created_at` timestamp NULL DEFAULT NULL,\n `updated_at` timestamp NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `runtime_credentials_token_hash_unique` (`token_hash`),\n KEY `runtime_credentials_tenant_index` (`tenant`),\n KEY `runtime_credentials_expires_at_index` (`expires_at`),\n KEY `runtime_credentials_revoked_at_index` (`revoked_at`),\n CONSTRAINT `dw_json_text_075fecde0a757510fdf7` CHECK (json_valid(`roles`)),\n CONSTRAINT `dw_json_text_5f7fdbad00226a90f331` CHECK (json_valid(`claims`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "4374c16cbe8d5abab31d2d6a08b29c00e63a3cdb569ef27bde0a4e0477c15b5a", + "candidate_alter_sql": "ALTER TABLE `runtime_credentials` MODIFY COLUMN `roles` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, MODIFY COLUMN `claims` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_075fecde0a757510fdf7` CHECK (json_valid(`roles`)) ENFORCED, ADD CONSTRAINT `dw_json_text_5f7fdbad00226a90f331` CHECK (json_valid(`claims`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-05-runtime_payload_completion_budgets", + "table": "runtime_payload_completion_budgets", + "source_create_sha256": "50e98a3b6364aecaaa3b5f84637cde5045ac6674a546ccf51d70e2caf2776a02", + "columns": [ + { + "name": "context", + "ordinal_position": 3, + "source_attributes_sql": " NOT NULL", + "sql_nullable": false, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_d1bf52994d698d7d04ed", + "check_clause": "json_valid(`context`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `context` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_d1bf52994d698d7d04ed` CHECK (json_valid(`context`)) ENFORCED" + }, + { + "name": "slots", + "ordinal_position": 4, + "source_attributes_sql": " NOT NULL", + "sql_nullable": false, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_4077efaae491546bebc7", + "check_clause": "json_valid(`slots`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `slots` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_4077efaae491546bebc7` CHECK (json_valid(`slots`)) ENFORCED" + }, + { + "name": "objects", + "ordinal_position": 5, + "source_attributes_sql": " NOT NULL", + "sql_nullable": false, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_c185060f2dbee09c5a6a", + "check_clause": "json_valid(`objects`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `objects` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_c185060f2dbee09c5a6a` CHECK (json_valid(`objects`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `runtime_payload_completion_budgets` (\n `id` char(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,\n `context` longtext COLLATE utf8mb4_bin NOT NULL,\n `slots` longtext COLLATE utf8mb4_bin NOT NULL,\n `objects` longtext COLLATE utf8mb4_bin NOT NULL,\n `expires_at` timestamp NOT NULL,\n `created_at` timestamp NULL DEFAULT NULL,\n `updated_at` timestamp NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n KEY `runtime_payload_completion_budgets_namespace_index` (`namespace`),\n KEY `runtime_payload_completion_budgets_expires_at_index` (`expires_at`),\n CONSTRAINT `dw_json_text_d1bf52994d698d7d04ed` CHECK (json_valid(`context`)),\n CONSTRAINT `dw_json_text_4077efaae491546bebc7` CHECK (json_valid(`slots`)),\n CONSTRAINT `dw_json_text_c185060f2dbee09c5a6a` CHECK (json_valid(`objects`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "e7ef36545dac0951dcd847f738cc76d034252a47ef75de2288a5f4177418358f", + "candidate_alter_sql": "ALTER TABLE `runtime_payload_completion_budgets` MODIFY COLUMN `context` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, MODIFY COLUMN `slots` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, MODIFY COLUMN `objects` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, ADD CONSTRAINT `dw_json_text_d1bf52994d698d7d04ed` CHECK (json_valid(`context`)) ENFORCED, ADD CONSTRAINT `dw_json_text_4077efaae491546bebc7` CHECK (json_valid(`slots`)) ENFORCED, ADD CONSTRAINT `dw_json_text_c185060f2dbee09c5a6a` CHECK (json_valid(`objects`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-06-workflow_child_calls", + "table": "workflow_child_calls", + "source_create_sha256": "d84f447a313c51774fe8db27c3a0173cc62baa1c3b495ebfdfc3fefc7c959cb6", + "columns": [ + { + "name": "retry_policy", + "ordinal_position": 14, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_55a3cac14b0a3feca840", + "check_clause": "json_valid(`retry_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `retry_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_55a3cac14b0a3feca840` CHECK (json_valid(`retry_policy`)) ENFORCED" + }, + { + "name": "timeout_policy", + "ordinal_position": 15, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_40e45e4f94944c511ab5", + "check_clause": "json_valid(`timeout_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `timeout_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_40e45e4f94944c511ab5` CHECK (json_valid(`timeout_policy`)) ENFORCED" + }, + { + "name": "arguments", + "ordinal_position": 24, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_9c078ba0f6c256bb7d9c", + "check_clause": "json_valid(`arguments`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `arguments` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_9c078ba0f6c256bb7d9c` CHECK (json_valid(`arguments`)) ENFORCED" + }, + { + "name": "metadata", + "ordinal_position": 25, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_016208f3b76c51671353", + "check_clause": "json_valid(`metadata`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_016208f3b76c51671353` CHECK (json_valid(`metadata`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_child_calls` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `parent_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `parent_workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `sequence` int unsigned NOT NULL,\n `child_workflow_type` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `child_workflow_class` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `requested_child_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `resolved_child_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `resolved_child_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `parent_close_policy` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'abandon',\n `connection` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `queue` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `compatibility` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `retry_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `timeout_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `cancellation_propagation` tinyint(1) NOT NULL DEFAULT '0',\n `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'scheduled',\n `result_payload_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `failure_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `closed_reason` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `scheduled_at` timestamp(6) NOT NULL,\n `started_at` timestamp(6) NULL DEFAULT NULL,\n `closed_at` timestamp(6) NULL DEFAULT NULL,\n `arguments` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `metadata` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n KEY `child_calls_parent_seq` (`parent_workflow_run_id`,`sequence`),\n KEY `child_calls_parent_status` (`parent_workflow_run_id`,`status`),\n KEY `child_calls_child_parent` (`resolved_child_instance_id`,`parent_workflow_run_id`),\n KEY `workflow_child_calls_parent_workflow_run_id_index` (`parent_workflow_run_id`),\n KEY `workflow_child_calls_parent_workflow_instance_id_index` (`parent_workflow_instance_id`),\n KEY `workflow_child_calls_sequence_index` (`sequence`),\n KEY `workflow_child_calls_resolved_child_instance_id_index` (`resolved_child_instance_id`),\n KEY `workflow_child_calls_resolved_child_run_id_index` (`resolved_child_run_id`),\n KEY `workflow_child_calls_status_index` (`status`),\n CONSTRAINT `workflow_child_calls_parent_workflow_run_id_foreign` FOREIGN KEY (`parent_workflow_run_id`) REFERENCES `workflow_runs` (`id`) ON DELETE CASCADE,\n CONSTRAINT `dw_json_text_55a3cac14b0a3feca840` CHECK (json_valid(`retry_policy`)),\n CONSTRAINT `dw_json_text_40e45e4f94944c511ab5` CHECK (json_valid(`timeout_policy`)),\n CONSTRAINT `dw_json_text_9c078ba0f6c256bb7d9c` CHECK (json_valid(`arguments`)),\n CONSTRAINT `dw_json_text_016208f3b76c51671353` CHECK (json_valid(`metadata`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "58671b1fb04130536f81c44c38e6eeeb8bf480e6bc54baed79d9d8d89c936107", + "candidate_alter_sql": "ALTER TABLE `workflow_child_calls` MODIFY COLUMN `retry_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `timeout_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `arguments` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_55a3cac14b0a3feca840` CHECK (json_valid(`retry_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_40e45e4f94944c511ab5` CHECK (json_valid(`timeout_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_9c078ba0f6c256bb7d9c` CHECK (json_valid(`arguments`)) ENFORCED, ADD CONSTRAINT `dw_json_text_016208f3b76c51671353` CHECK (json_valid(`metadata`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-07-workflow_commands", + "table": "workflow_commands", + "source_create_sha256": "936378b3a946e0246200570b32294fca8cfaccd75fa7498ed7a9764d8449a569", + "columns": [ + { + "name": "context", + "ordinal_position": 9, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_1365410084c0cd12ed37", + "check_clause": "json_valid(`context`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `context` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_1365410084c0cd12ed37` CHECK (json_valid(`context`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_commands` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `requested_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `resolved_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `command_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `target_scope` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'instance',\n `source` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'php',\n `context` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `request_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `outcome` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_class` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload_codec` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload` longtext COLLATE utf8mb4_unicode_ci,\n `rejection_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `command_sequence` int unsigned DEFAULT NULL,\n `message_sequence` int unsigned DEFAULT NULL,\n `accepted_at` timestamp(6) NULL DEFAULT NULL,\n `applied_at` timestamp(6) NULL DEFAULT NULL,\n `rejected_at` timestamp(6) NULL DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_commands_request_lookup` (`workflow_instance_id`,`command_type`,`request_id`),\n KEY `workflow_commands_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_commands_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_commands_requested_workflow_run_id_index` (`requested_workflow_run_id`),\n KEY `workflow_commands_resolved_workflow_run_id_index` (`resolved_workflow_run_id`),\n KEY `workflow_commands_command_type_index` (`command_type`),\n KEY `workflow_commands_source_index` (`source`),\n KEY `workflow_commands_status_index` (`status`),\n KEY `workflow_commands_command_sequence_index` (`command_sequence`),\n CONSTRAINT `dw_json_text_1365410084c0cd12ed37` CHECK (json_valid(`context`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "f5972cb0adff6aea7f70356947eb4914b18c4da350866e69bec212f9f27f0e14", + "candidate_alter_sql": "ALTER TABLE `workflow_commands` MODIFY COLUMN `context` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_1365410084c0cd12ed37` CHECK (json_valid(`context`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-08-workflow_durable_stream_items", + "table": "workflow_durable_stream_items", + "source_create_sha256": "7db94dcc15f8e12e317343c49c35bf3000c81a091817940387b50e145675a0d1", + "columns": [ + { + "name": "payload", + "ordinal_position": 10, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_9d624f24054e91d9250f", + "check_clause": "json_valid(`payload`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_9d624f24054e91d9250f` CHECK (json_valid(`payload`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_durable_stream_items` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `stream_id` bigint unsigned NOT NULL,\n `namespace` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `stream_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `offset` bigint NOT NULL,\n `idempotency_key` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `origin` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'workflow_command',\n `origin_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `payload_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload_codec` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `item_type` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `content_type` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `emitted_at` timestamp(6) NOT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `wf_durable_stream_items_stream_offset_unique` (`stream_id`,`offset`),\n UNIQUE KEY `wf_durable_stream_items_idempotency_unique` (`stream_id`,`idempotency_key`),\n KEY `wf_durable_stream_items_run_name_offset_idx` (`workflow_run_id`,`stream_name`,`offset`),\n KEY `workflow_durable_stream_items_namespace_index` (`namespace`),\n KEY `workflow_durable_stream_items_workflow_run_id_index` (`workflow_run_id`),\n CONSTRAINT `workflow_durable_stream_items_stream_id_foreign` FOREIGN KEY (`stream_id`) REFERENCES `workflow_durable_streams` (`id`) ON DELETE CASCADE,\n CONSTRAINT `dw_json_text_9d624f24054e91d9250f` CHECK (json_valid(`payload`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "7194845fd90efa0e92a61fd28d49be685f460dfbeae064812f328b3ecc408c4e", + "candidate_alter_sql": "ALTER TABLE `workflow_durable_stream_items` MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_9d624f24054e91d9250f` CHECK (json_valid(`payload`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-09-workflow_durable_streams", + "table": "workflow_durable_streams", + "source_create_sha256": "82afe5edca17f4a37a6c1dde42439f590c223e3a7542771fd63a093ec646dba1", + "columns": [ + { + "name": "metadata", + "ordinal_position": 15, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_da0f067f234347705b1c", + "check_clause": "json_valid(`metadata`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_da0f067f234347705b1c` CHECK (json_valid(`metadata`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_durable_streams` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `namespace` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `stream_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'open',\n `last_offset` bigint NOT NULL DEFAULT '-1',\n `total_items` bigint unsigned NOT NULL DEFAULT '0',\n `retention_seconds` int unsigned DEFAULT NULL,\n `opened_at` timestamp(6) NULL DEFAULT NULL,\n `last_appended_at` timestamp(6) NULL DEFAULT NULL,\n `closed_at` timestamp(6) NULL DEFAULT NULL,\n `error_reason` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `pending_items` bigint unsigned NOT NULL DEFAULT '0',\n `metadata` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `wf_durable_streams_run_name_unique` (`workflow_run_id`,`stream_name`),\n KEY `wf_durable_streams_ns_instance_name_idx` (`namespace`,`workflow_instance_id`,`stream_name`),\n KEY `wf_durable_streams_ns_status_idx` (`namespace`,`status`),\n KEY `workflow_durable_streams_namespace_index` (`namespace`),\n KEY `workflow_durable_streams_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_durable_streams_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_durable_streams_status_index` (`status`),\n CONSTRAINT `dw_json_text_da0f067f234347705b1c` CHECK (json_valid(`metadata`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "a5cdd0b27255d58825e790e5f67c7a6925a844058d388c87f563d481872b1201", + "candidate_alter_sql": "ALTER TABLE `workflow_durable_streams` MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_da0f067f234347705b1c` CHECK (json_valid(`metadata`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-10-workflow_history_events", + "table": "workflow_history_events", + "source_create_sha256": "3d74735331219fdacc0f25eb23bd4cf3be6216f732448327840fa32e995eda43", + "columns": [ + { + "name": "payload", + "ordinal_position": 5, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_186a93a5a54b983f2444", + "check_clause": "json_valid(`payload`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_186a93a5a54b983f2444` CHECK (json_valid(`payload`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_history_events` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `sequence` int unsigned NOT NULL,\n `event_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `payload` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `workflow_task_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_command_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `recorded_at` timestamp(6) NULL DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n `recorded_at_utc` datetime(6) DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_history_events_workflow_run_id_sequence_unique` (`workflow_run_id`,`sequence`),\n KEY `workflow_history_events_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_history_events_workflow_task_id_index` (`workflow_task_id`),\n KEY `workflow_history_events_workflow_command_id_index` (`workflow_command_id`),\n CONSTRAINT `dw_json_text_186a93a5a54b983f2444` CHECK (json_valid(`payload`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "262ddd379c72f0874a2358823a2344c5ea9e65bfda67d71d9c97eae6f3960b6b", + "candidate_alter_sql": "ALTER TABLE `workflow_history_events` MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_186a93a5a54b983f2444` CHECK (json_valid(`payload`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-11-workflow_instances", + "table": "workflow_instances", + "source_create_sha256": "49c67474f3d1c1180827cadcd4936d65b046a5437d872c7731495696bf425ada", + "columns": [ + { + "name": "visibility_labels", + "ordinal_position": 6, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_5dec5cdd6359edc700f2", + "check_clause": "json_valid(`visibility_labels`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `visibility_labels` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_5dec5cdd6359edc700f2` CHECK (json_valid(`visibility_labels`)) ENFORCED" + }, + { + "name": "memo", + "ordinal_position": 7, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_4d686a7e3879bc8d7c6c", + "check_clause": "json_valid(`memo`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `memo` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_4d686a7e3879bc8d7c6c` CHECK (json_valid(`memo`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_instances` (\n `id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_class` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `business_key` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `visibility_labels` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `memo` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `execution_timeout_seconds` int unsigned DEFAULT NULL,\n `current_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `run_count` int unsigned NOT NULL DEFAULT '0',\n `last_message_sequence` int unsigned NOT NULL DEFAULT '0',\n `reserved_at` timestamp(6) NULL DEFAULT NULL,\n `started_at` timestamp(6) NULL DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n KEY `workflow_instances_namespace_index` (`namespace`),\n KEY `workflow_instances_business_key_index` (`business_key`),\n KEY `workflow_instances_current_run_id_index` (`current_run_id`),\n CONSTRAINT `dw_json_text_5dec5cdd6359edc700f2` CHECK (json_valid(`visibility_labels`)),\n CONSTRAINT `dw_json_text_4d686a7e3879bc8d7c6c` CHECK (json_valid(`memo`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "5bcaf98ba5168aed5d90766632fc1905c936a1cbde4a02905914f51e4840892c", + "candidate_alter_sql": "ALTER TABLE `workflow_instances` MODIFY COLUMN `visibility_labels` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `memo` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_5dec5cdd6359edc700f2` CHECK (json_valid(`visibility_labels`)) ENFORCED, ADD CONSTRAINT `dw_json_text_4d686a7e3879bc8d7c6c` CHECK (json_valid(`memo`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-12-workflow_links", + "table": "workflow_links", + "source_create_sha256": "7164fd09e8a7ec592fb3c8d02f47730a943c0d5f0213f170363c267a2d177898", + "columns": [ + { + "name": "parallel_group_path", + "ordinal_position": 4, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_c6fec96f4176ab012436", + "check_clause": "json_valid(`parallel_group_path`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `parallel_group_path` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_c6fec96f4176ab012436` CHECK (json_valid(`parallel_group_path`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_links` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `link_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `sequence` int unsigned DEFAULT NULL,\n `parallel_group_path` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `parent_workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `parent_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `child_workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `child_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `is_primary_parent` tinyint(1) NOT NULL DEFAULT '0',\n `parent_close_policy` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'abandon',\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_links_parent_child_type_unique` (`parent_workflow_run_id`,`child_workflow_run_id`,`link_type`),\n KEY `workflow_links_parent_sequence_type_index` (`parent_workflow_run_id`,`sequence`,`link_type`),\n KEY `workflow_links_parent_workflow_instance_id_index` (`parent_workflow_instance_id`),\n KEY `workflow_links_parent_workflow_run_id_index` (`parent_workflow_run_id`),\n KEY `workflow_links_child_workflow_instance_id_index` (`child_workflow_instance_id`),\n KEY `workflow_links_child_workflow_run_id_index` (`child_workflow_run_id`),\n CONSTRAINT `dw_json_text_c6fec96f4176ab012436` CHECK (json_valid(`parallel_group_path`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "1f427fa8bbff9724abc0b10bd6f412065bf7c565ee3428138d26a8e3362c80f0", + "candidate_alter_sql": "ALTER TABLE `workflow_links` MODIFY COLUMN `parallel_group_path` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_c6fec96f4176ab012436` CHECK (json_valid(`parallel_group_path`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-13-workflow_memos", + "table": "workflow_memos", + "source_create_sha256": "53a9b47f743c4795be3b3f948e1a08e2d8db36f863df6ed987785ed399839eb8", + "columns": [ + { + "name": "value", + "ordinal_position": 5, + "source_attributes_sql": " NOT NULL", + "sql_nullable": false, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_fcdcfa03c1ad3583628c", + "check_clause": "json_valid(`value`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `value` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_fcdcfa03c1ad3583628c` CHECK (json_valid(`value`)) ENFORCED" + }, + { + "name": "portable_value", + "ordinal_position": 10, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_71688955589bdaf8f5c4", + "check_clause": "json_valid(`portable_value`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `portable_value` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_71688955589bdaf8f5c4` CHECK (json_valid(`portable_value`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_memos` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `key` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `value` longtext COLLATE utf8mb4_bin NOT NULL,\n `upserted_at_sequence` int unsigned NOT NULL,\n `inherited_from_parent` tinyint(1) NOT NULL DEFAULT '0',\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n `portable_value` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `portable_value_sequence` int unsigned DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_memos_run_key_unique` (`workflow_run_id`,`key`),\n KEY `workflow_memos_instance_key` (`workflow_instance_id`,`key`),\n CONSTRAINT `workflow_memos_workflow_run_id_foreign` FOREIGN KEY (`workflow_run_id`) REFERENCES `workflow_runs` (`id`) ON DELETE CASCADE,\n CONSTRAINT `dw_json_text_fcdcfa03c1ad3583628c` CHECK (json_valid(`value`)),\n CONSTRAINT `dw_json_text_71688955589bdaf8f5c4` CHECK (json_valid(`portable_value`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "90ecb5f691f36ba24c5f11be627c9a2608008f269a0785cbcaf2952689ed5b33", + "candidate_alter_sql": "ALTER TABLE `workflow_memos` MODIFY COLUMN `value` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, MODIFY COLUMN `portable_value` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_fcdcfa03c1ad3583628c` CHECK (json_valid(`value`)) ENFORCED, ADD CONSTRAINT `dw_json_text_71688955589bdaf8f5c4` CHECK (json_valid(`portable_value`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-14-workflow_messages", + "table": "workflow_messages", + "source_create_sha256": "1991e3ff9258a85831acae9088489c386b96aad06cfb5dbaace709fcc75264ea", + "columns": [ + { + "name": "metadata", + "ordinal_position": 22, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_b0a2ae51e86f4f80b9fb", + "check_clause": "json_valid(`metadata`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_b0a2ae51e86f4f80b9fb` CHECK (json_valid(`metadata`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_messages` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `direction` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL,\n `channel` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `stream_key` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `sequence` bigint unsigned NOT NULL,\n `source_workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `source_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `target_workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `target_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `correlation_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `idempotency_key` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `consume_state` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending',\n `consumed_at` timestamp(6) NULL DEFAULT NULL,\n `consumed_by_sequence` int unsigned DEFAULT NULL,\n `expires_at` timestamp(6) NULL DEFAULT NULL,\n `delivery_attempt_count` int unsigned NOT NULL DEFAULT '0',\n `last_delivery_attempt_at` timestamp(6) NULL DEFAULT NULL,\n `last_delivery_error` text COLLATE utf8mb4_unicode_ci,\n `metadata` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `wf_msgs_stream_seq_unique` (`workflow_instance_id`,`stream_key`,`sequence`),\n KEY `wf_msgs_instance_stream_seq` (`workflow_instance_id`,`stream_key`,`sequence`),\n KEY `wf_msgs_run_dir_state` (`workflow_run_id`,`direction`,`consume_state`),\n KEY `wf_msgs_stream_seq_state` (`stream_key`,`sequence`,`consume_state`),\n KEY `wf_msgs_target_state` (`target_workflow_instance_id`,`consume_state`),\n KEY `workflow_messages_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_messages_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_messages_direction_index` (`direction`),\n KEY `workflow_messages_channel_index` (`channel`),\n KEY `workflow_messages_stream_key_index` (`stream_key`),\n KEY `workflow_messages_sequence_index` (`sequence`),\n KEY `workflow_messages_source_workflow_instance_id_index` (`source_workflow_instance_id`),\n KEY `workflow_messages_target_workflow_instance_id_index` (`target_workflow_instance_id`),\n KEY `workflow_messages_correlation_id_index` (`correlation_id`),\n KEY `workflow_messages_idempotency_key_index` (`idempotency_key`),\n KEY `workflow_messages_consume_state_index` (`consume_state`),\n CONSTRAINT `workflow_messages_workflow_run_id_foreign` FOREIGN KEY (`workflow_run_id`) REFERENCES `workflow_runs` (`id`) ON DELETE CASCADE,\n CONSTRAINT `dw_json_text_b0a2ae51e86f4f80b9fb` CHECK (json_valid(`metadata`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "ca8af5c84dc4973555a40e484b55222db1111835941aed00fa2e8922d4f10f83", + "candidate_alter_sql": "ALTER TABLE `workflow_messages` MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_b0a2ae51e86f4f80b9fb` CHECK (json_valid(`metadata`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-15-workflow_namespaces", + "table": "workflow_namespaces", + "source_create_sha256": "9185e749e7a5ac127ca690f9db2057e1665bea506a064e10c93eb1aeb5f39dfe", + "columns": [ + { + "name": "external_payload_storage", + "ordinal_position": 7, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_4281ef3e52494643312f", + "check_clause": "json_valid(`external_payload_storage`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `external_payload_storage` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_4281ef3e52494643312f` CHECK (json_valid(`external_payload_storage`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_namespaces` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,\n `description` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `retention_mode` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'bounded',\n `retention_days` int unsigned DEFAULT '30',\n `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'active',\n `external_payload_storage` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp NULL DEFAULT NULL,\n `updated_at` timestamp NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_namespaces_name_unique` (`name`),\n CONSTRAINT `dw_json_text_4281ef3e52494643312f` CHECK (json_valid(`external_payload_storage`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "f3f43a04c1169c7182d5c9ab72997bdce527cf71f95ec7e838f71d3eff3349c7", + "candidate_alter_sql": "ALTER TABLE `workflow_namespaces` MODIFY COLUMN `external_payload_storage` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_4281ef3e52494643312f` CHECK (json_valid(`external_payload_storage`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-16-workflow_run_lineage_entries", + "table": "workflow_run_lineage_entries", + "source_create_sha256": "c79e8d94380b0bb7bf3a3459a23f316d3a61032286950761a7bdb3b5a656c009", + "columns": [ + { + "name": "payload", + "ordinal_position": 20, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_1874a82e6e4c5698bc68", + "check_clause": "json_valid(`payload`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_1874a82e6e4c5698bc68` CHECK (json_valid(`payload`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_run_lineage_entries` (\n `id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `direction` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `lineage_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `position` int unsigned NOT NULL,\n `link_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `child_call_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `sequence` int unsigned DEFAULT NULL,\n `is_primary_parent` tinyint(1) NOT NULL DEFAULT '0',\n `related_workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `related_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `related_run_number` int unsigned DEFAULT NULL,\n `related_workflow_type` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `related_workflow_class` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `status_bucket` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `closed_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `linked_at` timestamp(6) NULL DEFAULT NULL,\n `payload` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_run_lineage_run_direction_lineage_unique` (`workflow_run_id`,`direction`,`lineage_id`),\n KEY `workflow_run_lineage_run_direction_position_index` (`workflow_run_id`,`direction`,`position`),\n KEY `workflow_run_lineage_instance_direction_type_index` (`workflow_instance_id`,`direction`,`link_type`),\n KEY `workflow_run_lineage_entries_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_run_lineage_entries_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_run_lineage_entries_direction_index` (`direction`),\n KEY `workflow_run_lineage_entries_link_type_index` (`link_type`),\n KEY `workflow_run_lineage_entries_child_call_id_index` (`child_call_id`),\n KEY `workflow_run_lineage_entries_sequence_index` (`sequence`),\n KEY `workflow_run_lineage_entries_is_primary_parent_index` (`is_primary_parent`),\n KEY `workflow_run_lineage_entries_related_workflow_instance_id_index` (`related_workflow_instance_id`),\n KEY `workflow_run_lineage_entries_related_workflow_run_id_index` (`related_workflow_run_id`),\n KEY `workflow_run_lineage_entries_related_workflow_type_index` (`related_workflow_type`),\n KEY `workflow_run_lineage_entries_status_index` (`status`),\n KEY `workflow_run_lineage_entries_status_bucket_index` (`status_bucket`),\n KEY `workflow_run_lineage_entries_closed_reason_index` (`closed_reason`),\n KEY `workflow_run_lineage_entries_linked_at_index` (`linked_at`),\n CONSTRAINT `dw_json_text_1874a82e6e4c5698bc68` CHECK (json_valid(`payload`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "864d1f3a1ea518ef652853102b14d44c040bc39886f7f78c2ab63d7f88fdfe2b", + "candidate_alter_sql": "ALTER TABLE `workflow_run_lineage_entries` MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_1874a82e6e4c5698bc68` CHECK (json_valid(`payload`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-17-workflow_run_summaries", + "table": "workflow_run_summaries", + "source_create_sha256": "e4d7109156e22c059fd9aceb3882e41008ce000f8c70c2601b55b78719a7d3de", + "columns": [ + { + "name": "visibility_labels", + "ordinal_position": 14, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_accf32ee2c1a832ab845", + "check_clause": "json_valid(`visibility_labels`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `visibility_labels` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_accf32ee2c1a832ab845` CHECK (json_valid(`visibility_labels`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_run_summaries` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `run_number` int unsigned NOT NULL,\n `is_current_run` tinyint(1) NOT NULL DEFAULT '0',\n `engine_source` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'v2',\n `projection_schema_version` smallint unsigned DEFAULT NULL,\n `class` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `compatibility` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `declared_entry_mode` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `declared_contract_source` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `business_key` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `visibility_labels` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `status_bucket` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `closed_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `connection` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `queue` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `started_at` timestamp(6) NULL DEFAULT NULL,\n `sort_timestamp` timestamp(6) NULL DEFAULT NULL,\n `sort_key` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `closed_at` timestamp(6) NULL DEFAULT NULL,\n `archived_at` timestamp(6) NULL DEFAULT NULL,\n `archive_command_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `archive_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `duration_ms` bigint DEFAULT NULL,\n `wait_kind` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `wait_reason` text COLLATE utf8mb4_unicode_ci,\n `wait_started_at` timestamp(6) NULL DEFAULT NULL,\n `wait_deadline_at` timestamp(6) NULL DEFAULT NULL,\n `open_wait_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `resume_source_kind` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `resume_source_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `next_task_at` timestamp(6) NULL DEFAULT NULL,\n `liveness_state` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `liveness_reason` text COLLATE utf8mb4_unicode_ci,\n `repair_blocked_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `repair_attention` tinyint(1) NOT NULL DEFAULT '0',\n `task_problem` tinyint(1) NOT NULL DEFAULT '0',\n `next_task_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `next_task_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `next_task_status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `next_task_lease_expires_at` timestamp(6) NULL DEFAULT NULL,\n `exception_count` int unsigned NOT NULL DEFAULT '0',\n `history_event_count` int unsigned NOT NULL DEFAULT '0',\n `history_size_bytes` bigint unsigned NOT NULL DEFAULT '0',\n `history_fan_out` int unsigned NOT NULL DEFAULT '0',\n `continue_as_new_recommended` tinyint(1) NOT NULL DEFAULT '0',\n `history_budget_pressure` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'ok',\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n KEY `workflow_run_summaries_status_bucket_started_at_index` (`status_bucket`,`started_at`),\n KEY `workflow_run_summaries_sort_order_index` (`sort_timestamp`,`id`),\n KEY `wfrs_namespace_sort_idx` (`namespace`,`sort_timestamp`,`id`),\n KEY `wfrs_namespace_type_sort_idx` (`namespace`,`workflow_type`,`sort_timestamp`,`id`),\n KEY `wfrs_namespace_status_sort_idx` (`namespace`,`status_bucket`,`sort_timestamp`,`id`),\n KEY `workflow_run_summaries_sort_key_index` (`sort_key`),\n KEY `workflow_run_summaries_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_run_summaries_is_current_run_index` (`is_current_run`),\n KEY `workflow_run_summaries_projection_schema_version_index` (`projection_schema_version`),\n KEY `workflow_run_summaries_namespace_index` (`namespace`),\n KEY `wfrs_decl_entry_mode_idx` (`declared_entry_mode`),\n KEY `wfrs_decl_contract_source_idx` (`declared_contract_source`),\n KEY `workflow_run_summaries_business_key_index` (`business_key`),\n KEY `workflow_run_summaries_status_index` (`status`),\n KEY `workflow_run_summaries_status_bucket_index` (`status_bucket`),\n KEY `workflow_run_summaries_archived_at_index` (`archived_at`),\n KEY `workflow_run_summaries_archive_command_id_index` (`archive_command_id`),\n KEY `workflow_run_summaries_repair_blocked_reason_index` (`repair_blocked_reason`),\n KEY `workflow_run_summaries_repair_attention_index` (`repair_attention`),\n KEY `workflow_run_summaries_continue_as_new_recommended_index` (`continue_as_new_recommended`),\n KEY `workflow_run_summaries_history_budget_pressure_index` (`history_budget_pressure`),\n KEY `wfrs_prom_metrics_series_idx` (`namespace`,`queue`,`workflow_type`),\n CONSTRAINT `dw_json_text_accf32ee2c1a832ab845` CHECK (json_valid(`visibility_labels`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "95d4705cc6a07948ea121cb8d8f71c7bda0625836b484f878991f84a742e1140", + "candidate_alter_sql": "ALTER TABLE `workflow_run_summaries` MODIFY COLUMN `visibility_labels` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_accf32ee2c1a832ab845` CHECK (json_valid(`visibility_labels`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-18-workflow_run_timeline_entries", + "table": "workflow_run_timeline_entries", + "source_create_sha256": "714c755b7b5eb438c8349ddb143b08ed948567d159c37aa1db495c682aa8823a", + "columns": [ + { + "name": "payload", + "ordinal_position": 19, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_4a34bf0686f5464d6b56", + "check_clause": "json_valid(`payload`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_4a34bf0686f5464d6b56` CHECK (json_valid(`payload`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_run_timeline_entries` (\n `id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `history_event_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `sequence` int unsigned NOT NULL,\n `type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `kind` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `entry_kind` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'point',\n `source_kind` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `source_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `summary` text COLLATE utf8mb4_unicode_ci,\n `recorded_at` timestamp(6) NULL DEFAULT NULL,\n `command_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `command_sequence` int unsigned DEFAULT NULL,\n `task_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `activity_execution_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `timer_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `failure_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_run_timeline_run_event_unique` (`workflow_run_id`,`history_event_id`),\n KEY `workflow_run_timeline_run_sequence_index` (`workflow_run_id`,`sequence`),\n KEY `workflow_run_timeline_instance_kind_recorded_index` (`workflow_instance_id`,`kind`,`recorded_at`),\n KEY `workflow_run_timeline_entries_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_run_timeline_entries_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_run_timeline_entries_history_event_id_index` (`history_event_id`),\n KEY `workflow_run_timeline_entries_sequence_index` (`sequence`),\n KEY `workflow_run_timeline_entries_type_index` (`type`),\n KEY `workflow_run_timeline_entries_kind_index` (`kind`),\n KEY `workflow_run_timeline_entries_source_kind_index` (`source_kind`),\n KEY `workflow_run_timeline_entries_source_id_index` (`source_id`),\n KEY `workflow_run_timeline_entries_recorded_at_index` (`recorded_at`),\n KEY `workflow_run_timeline_entries_command_id_index` (`command_id`),\n KEY `workflow_run_timeline_entries_command_sequence_index` (`command_sequence`),\n KEY `workflow_run_timeline_entries_task_id_index` (`task_id`),\n KEY `workflow_run_timeline_entries_activity_execution_id_index` (`activity_execution_id`),\n KEY `workflow_run_timeline_entries_timer_id_index` (`timer_id`),\n KEY `workflow_run_timeline_entries_failure_id_index` (`failure_id`),\n CONSTRAINT `dw_json_text_4a34bf0686f5464d6b56` CHECK (json_valid(`payload`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "3675731572c6003d15499ca18b3206babdc979284b94d6ceeb3786474be3749d", + "candidate_alter_sql": "ALTER TABLE `workflow_run_timeline_entries` MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_4a34bf0686f5464d6b56` CHECK (json_valid(`payload`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-19-workflow_run_timer_entries", + "table": "workflow_run_timer_entries", + "source_create_sha256": "8bb6bac55b82de1e388a4a88dd91774db403b77b5eea27f720fd8271c7ace672", + "columns": [ + { + "name": "payload", + "ordinal_position": 20, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_cb1a9145e9dc22308d3d", + "check_clause": "json_valid(`payload`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_cb1a9145e9dc22308d3d` CHECK (json_valid(`payload`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_run_timer_entries` (\n `id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `timer_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `schema_version` smallint unsigned NOT NULL DEFAULT '1',\n `position` int unsigned NOT NULL,\n `sequence` int unsigned DEFAULT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `source_status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `delay_seconds` int DEFAULT NULL,\n `fire_at` timestamp(6) NULL DEFAULT NULL,\n `fired_at` timestamp(6) NULL DEFAULT NULL,\n `cancelled_at` timestamp(6) NULL DEFAULT NULL,\n `timer_kind` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `condition_wait_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `condition_key` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `condition_definition_fingerprint` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `history_authority` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `history_unsupported_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_run_timer_entries_run_timer_unique` (`workflow_run_id`,`timer_id`),\n KEY `workflow_run_timer_entries_run_status_position_index` (`workflow_run_id`,`status`,`position`),\n KEY `workflow_run_timer_entries_instance_kind_status_index` (`workflow_instance_id`,`timer_kind`,`status`),\n KEY `workflow_run_timer_entries_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_run_timer_entries_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_run_timer_entries_sequence_index` (`sequence`),\n KEY `workflow_run_timer_entries_status_index` (`status`),\n KEY `workflow_run_timer_entries_source_status_index` (`source_status`),\n KEY `workflow_run_timer_entries_timer_kind_index` (`timer_kind`),\n KEY `workflow_run_timer_entries_condition_wait_id_index` (`condition_wait_id`),\n KEY `workflow_run_timer_entries_condition_key_index` (`condition_key`),\n KEY `workflow_run_timer_entries_history_authority_index` (`history_authority`),\n CONSTRAINT `dw_json_text_cb1a9145e9dc22308d3d` CHECK (json_valid(`payload`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "c24a2c3b0901e4ceb665978eba7bce5db81233bae769213b73c7551ded06fa0a", + "candidate_alter_sql": "ALTER TABLE `workflow_run_timer_entries` MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_cb1a9145e9dc22308d3d` CHECK (json_valid(`payload`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-20-workflow_run_waits", + "table": "workflow_run_waits", + "source_create_sha256": "179f6f2ece872ec7dab12a99fcf2a8ba9aa68255394c3fcc25f77dd1c4300846", + "columns": [ + { + "name": "payload", + "ordinal_position": 29, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_e331c14bcddf551ccfdd", + "check_clause": "json_valid(`payload`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_e331c14bcddf551ccfdd` CHECK (json_valid(`payload`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_run_waits` (\n `id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `wait_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `position` int unsigned NOT NULL,\n `kind` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `sequence` int unsigned DEFAULT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `source_status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `summary` text COLLATE utf8mb4_unicode_ci,\n `opened_at` timestamp(6) NULL DEFAULT NULL,\n `deadline_at` timestamp(6) NULL DEFAULT NULL,\n `resolved_at` timestamp(6) NULL DEFAULT NULL,\n `target_name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `target_type` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `task_backed` tinyint(1) NOT NULL DEFAULT '0',\n `external_only` tinyint(1) NOT NULL DEFAULT '0',\n `resume_source_kind` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `resume_source_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `task_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `task_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `task_status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `command_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `command_sequence` int unsigned DEFAULT NULL,\n `command_status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `command_outcome` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `history_authority` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `history_unsupported_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_run_waits_run_wait_unique` (`workflow_run_id`,`wait_id`),\n KEY `workflow_run_waits_run_status_position_index` (`workflow_run_id`,`status`,`position`),\n KEY `workflow_run_waits_instance_kind_status_index` (`workflow_instance_id`,`kind`,`status`),\n KEY `workflow_run_waits_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_run_waits_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_run_waits_kind_index` (`kind`),\n KEY `workflow_run_waits_sequence_index` (`sequence`),\n KEY `workflow_run_waits_status_index` (`status`),\n KEY `workflow_run_waits_source_status_index` (`source_status`),\n KEY `workflow_run_waits_target_name_index` (`target_name`),\n KEY `workflow_run_waits_task_backed_index` (`task_backed`),\n KEY `workflow_run_waits_resume_source_kind_index` (`resume_source_kind`),\n KEY `workflow_run_waits_resume_source_id_index` (`resume_source_id`),\n KEY `workflow_run_waits_task_id_index` (`task_id`),\n KEY `workflow_run_waits_command_id_index` (`command_id`),\n KEY `workflow_run_waits_history_authority_index` (`history_authority`),\n CONSTRAINT `dw_json_text_e331c14bcddf551ccfdd` CHECK (json_valid(`payload`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "4e286751092c801e02f59017ba5274b1a7be9cb61c7c6968aa960a12194fcfd6", + "candidate_alter_sql": "ALTER TABLE `workflow_run_waits` MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_e331c14bcddf551ccfdd` CHECK (json_valid(`payload`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-21-workflow_runs", + "table": "workflow_runs", + "source_create_sha256": "a1eb5a27217122ebc825d0c30f7e71799b731675aee576de2b3f44e455316b80", + "columns": [ + { + "name": "visibility_labels", + "ordinal_position": 8, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_0cabe9701a2ae7cb549e", + "check_clause": "json_valid(`visibility_labels`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `visibility_labels` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_0cabe9701a2ae7cb549e` CHECK (json_valid(`visibility_labels`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_runs` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `run_number` int unsigned NOT NULL,\n `workflow_class` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `business_key` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `visibility_labels` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `closed_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `compatibility` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload_codec` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `arguments` longtext COLLATE utf8mb4_unicode_ci,\n `output` longtext COLLATE utf8mb4_unicode_ci,\n `output_payload_codec` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `connection` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `queue` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `priority` tinyint unsigned NOT NULL DEFAULT '5',\n `fairness_key` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `fairness_weight` smallint unsigned NOT NULL DEFAULT '1',\n `sticky_worker_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `sticky_until` timestamp(6) NULL DEFAULT NULL,\n `last_history_sequence` int unsigned NOT NULL DEFAULT '0',\n `last_command_sequence` int unsigned NOT NULL DEFAULT '0',\n `message_cursor_position` int unsigned NOT NULL DEFAULT '0',\n `run_timeout_seconds` int unsigned DEFAULT NULL,\n `execution_deadline_at` timestamp(6) NULL DEFAULT NULL,\n `run_deadline_at` timestamp(6) NULL DEFAULT NULL,\n `started_at` timestamp(6) NULL DEFAULT NULL,\n `closed_at` timestamp(6) NULL DEFAULT NULL,\n `archived_at` timestamp(6) NULL DEFAULT NULL,\n `archive_command_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `archive_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `last_progress_at` timestamp(6) NULL DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n `import_source` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `import_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `import_dedupe_key` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `import_contract_version` smallint unsigned DEFAULT NULL,\n `imported_at` timestamp(6) NULL DEFAULT NULL,\n `cancellation_request_command_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `cancellation_requested_at` timestamp(6) NULL DEFAULT NULL,\n `cancellation_deadline_at` timestamp(6) NULL DEFAULT NULL,\n `cancellation_delivery_sequence` int unsigned DEFAULT NULL,\n `cancellation_delivered_at` timestamp(6) NULL DEFAULT NULL,\n `details_pruned_at` timestamp(6) NULL DEFAULT NULL,\n `cancellation_scope_recovery_until` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_runs_workflow_instance_id_run_number_unique` (`workflow_instance_id`,`run_number`),\n KEY `workflow_runs_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_runs_namespace_index` (`namespace`),\n KEY `workflow_runs_business_key_index` (`business_key`),\n KEY `workflow_runs_sticky_worker_id_index` (`sticky_worker_id`),\n KEY `workflow_runs_sticky_until_index` (`sticky_until`),\n KEY `workflow_runs_archived_at_index` (`archived_at`),\n KEY `workflow_runs_archive_command_id_index` (`archive_command_id`),\n KEY `workflow_runs_import_source_index` (`import_source`),\n KEY `workflow_runs_import_id_index` (`import_id`),\n KEY `workflow_runs_import_dedupe_key_index` (`import_dedupe_key`),\n KEY `workflow_runs_imported_at_index` (`imported_at`),\n KEY `workflow_runs_prom_metrics_queue_idx` (`namespace`,`queue`),\n KEY `workflow_runs_namespace_status_quota_idx` (`namespace`,`status`),\n KEY `workflow_runs_cancellation_request_command_id_index` (`cancellation_request_command_id`),\n CONSTRAINT `dw_json_text_0cabe9701a2ae7cb549e` CHECK (json_valid(`visibility_labels`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "98c337b23fafc23dc899bc84003489679886936a186c7038c73f357fdd70a43f", + "candidate_alter_sql": "ALTER TABLE `workflow_runs` MODIFY COLUMN `visibility_labels` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_0cabe9701a2ae7cb549e` CHECK (json_valid(`visibility_labels`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-22-workflow_schedule_history_events", + "table": "workflow_schedule_history_events", + "source_create_sha256": "5a836601cd50e9f9d394e474f9a4ba00a6b95d9245dd0f058fc4b9f976813bca", + "columns": [ + { + "name": "payload", + "ordinal_position": 7, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_5c5faf594e8d31ebe991", + "check_clause": "json_valid(`payload`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_5c5faf594e8d31ebe991` CHECK (json_valid(`payload`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_schedule_history_events` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_schedule_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `schedule_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `sequence` int unsigned NOT NULL,\n `event_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `payload` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `recorded_at` timestamp(6) NULL DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n `occurrence_at_utc` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `wf_schedule_history_schedule_sequence_unique` (`workflow_schedule_id`,`sequence`),\n KEY `wf_schedule_history_namespace_schedule_idx` (`namespace`,`schedule_id`),\n KEY `wf_schedule_history_event_recorded_idx` (`event_type`,`recorded_at`),\n KEY `wf_schedule_history_workflow_schedule_idx` (`workflow_schedule_id`),\n KEY `wf_schedule_history_schedule_idx` (`schedule_id`),\n KEY `wf_schedule_history_namespace_idx` (`namespace`),\n KEY `wf_schedule_history_instance_idx` (`workflow_instance_id`),\n KEY `wf_schedule_history_run_idx` (`workflow_run_id`),\n KEY `wf_schedule_history_occurrence_idx` (`workflow_schedule_id`,`event_type`,`occurrence_at_utc`),\n CONSTRAINT `dw_json_text_5c5faf594e8d31ebe991` CHECK (json_valid(`payload`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "2dace232d3cba05f652c6adc19a3f409404f3ff4a8c12852878b98fd89150c5d", + "candidate_alter_sql": "ALTER TABLE `workflow_schedule_history_events` MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_5c5faf594e8d31ebe991` CHECK (json_valid(`payload`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-23-workflow_schedules", + "table": "workflow_schedules", + "source_create_sha256": "1e3ab415837da65eef3214180058676847773a63523e9635b5fb561b39fb854e", + "columns": [ + { + "name": "spec", + "ordinal_position": 4, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_d7aa273e112ccdb9bce4", + "check_clause": "json_valid(`spec`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `spec` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_d7aa273e112ccdb9bce4` CHECK (json_valid(`spec`)) ENFORCED" + }, + { + "name": "action", + "ordinal_position": 5, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_0779e5110faa8bb3a1ce", + "check_clause": "json_valid(`action`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `action` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_0779e5110faa8bb3a1ce` CHECK (json_valid(`action`)) ENFORCED" + }, + { + "name": "memo", + "ordinal_position": 9, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_127f3a5484eae46b4296", + "check_clause": "json_valid(`memo`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `memo` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_127f3a5484eae46b4296` CHECK (json_valid(`memo`)) ENFORCED" + }, + { + "name": "search_attributes", + "ordinal_position": 10, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_348ceaaa72578f94b30d", + "check_clause": "json_valid(`search_attributes`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `search_attributes` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_348ceaaa72578f94b30d` CHECK (json_valid(`search_attributes`)) ENFORCED" + }, + { + "name": "visibility_labels", + "ordinal_position": 11, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_260b502951aabe6967a2", + "check_clause": "json_valid(`visibility_labels`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `visibility_labels` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_260b502951aabe6967a2` CHECK (json_valid(`visibility_labels`)) ENFORCED" + }, + { + "name": "recent_actions", + "ordinal_position": 17, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_023daf97483a6925003e", + "check_clause": "json_valid(`recent_actions`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `recent_actions` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_023daf97483a6925003e` CHECK (json_valid(`recent_actions`)) ENFORCED" + }, + { + "name": "buffered_actions", + "ordinal_position": 18, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_fcbf8efdd61dbed85da4", + "check_clause": "json_valid(`buffered_actions`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `buffered_actions` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_fcbf8efdd61dbed85da4` CHECK (json_valid(`buffered_actions`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_schedules` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `schedule_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `spec` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `action` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `status` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'active',\n `overlap_policy` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'skip',\n `note` text COLLATE utf8mb4_unicode_ci,\n `memo` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `search_attributes` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `visibility_labels` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `jitter_seconds` int unsigned NOT NULL DEFAULT '0',\n `max_runs` bigint unsigned DEFAULT NULL,\n `remaining_actions` bigint unsigned DEFAULT NULL,\n `fires_count` bigint unsigned NOT NULL DEFAULT '0',\n `failures_count` bigint unsigned NOT NULL DEFAULT '0',\n `recent_actions` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `buffered_actions` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `last_fired_at` timestamp(6) NULL DEFAULT NULL,\n `next_fire_at` timestamp(6) NULL DEFAULT NULL,\n `latest_workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `connection` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `queue` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `paused_at` timestamp(6) NULL DEFAULT NULL,\n `deleted_at` timestamp(6) NULL DEFAULT NULL,\n `last_skip_reason` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `last_skipped_at` timestamp(6) NULL DEFAULT NULL,\n `skipped_trigger_count` bigint unsigned NOT NULL DEFAULT '0',\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_schedules_namespace_schedule_id_unique` (`namespace`,`schedule_id`),\n KEY `workflow_schedules_status_next_fire_at_index` (`status`,`next_fire_at`),\n KEY `workflow_schedules_namespace_index` (`namespace`),\n KEY `workflow_schedules_latest_workflow_instance_id_index` (`latest_workflow_instance_id`),\n CONSTRAINT `dw_json_text_d7aa273e112ccdb9bce4` CHECK (json_valid(`spec`)),\n CONSTRAINT `dw_json_text_0779e5110faa8bb3a1ce` CHECK (json_valid(`action`)),\n CONSTRAINT `dw_json_text_127f3a5484eae46b4296` CHECK (json_valid(`memo`)),\n CONSTRAINT `dw_json_text_348ceaaa72578f94b30d` CHECK (json_valid(`search_attributes`)),\n CONSTRAINT `dw_json_text_260b502951aabe6967a2` CHECK (json_valid(`visibility_labels`)),\n CONSTRAINT `dw_json_text_023daf97483a6925003e` CHECK (json_valid(`recent_actions`)),\n CONSTRAINT `dw_json_text_fcbf8efdd61dbed85da4` CHECK (json_valid(`buffered_actions`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "1126348e9f0c1271af705b7c248cca33e1c11bd9938e8292ad4f2e94a60b94b4", + "candidate_alter_sql": "ALTER TABLE `workflow_schedules` MODIFY COLUMN `spec` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `action` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `memo` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `search_attributes` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `visibility_labels` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `recent_actions` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `buffered_actions` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_d7aa273e112ccdb9bce4` CHECK (json_valid(`spec`)) ENFORCED, ADD CONSTRAINT `dw_json_text_0779e5110faa8bb3a1ce` CHECK (json_valid(`action`)) ENFORCED, ADD CONSTRAINT `dw_json_text_127f3a5484eae46b4296` CHECK (json_valid(`memo`)) ENFORCED, ADD CONSTRAINT `dw_json_text_348ceaaa72578f94b30d` CHECK (json_valid(`search_attributes`)) ENFORCED, ADD CONSTRAINT `dw_json_text_260b502951aabe6967a2` CHECK (json_valid(`visibility_labels`)) ENFORCED, ADD CONSTRAINT `dw_json_text_023daf97483a6925003e` CHECK (json_valid(`recent_actions`)) ENFORCED, ADD CONSTRAINT `dw_json_text_fcbf8efdd61dbed85da4` CHECK (json_valid(`buffered_actions`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-24-workflow_search_attributes", + "table": "workflow_search_attributes", + "source_create_sha256": "0bd337eb24dbdf5a4d110151be4eb14a47285eb27d5deabb492535d95aa8407f", + "columns": [ + { + "name": "value_keyword_list", + "ordinal_position": 8, + "source_attributes_sql": " DEFAULT NULL COMMENT 'For type=keyword_list (ordered exact-match values)'", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_df0541f7f01fef92919f", + "check_clause": "json_valid(`value_keyword_list`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `value_keyword_list` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'For type=keyword_list (ordered exact-match values)'", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_df0541f7f01fef92919f` CHECK (json_valid(`value_keyword_list`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_search_attributes` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `key` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Attribute name (e.g., \"customer_id\", \"priority\", \"region\")',\n `type` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Type: string, keyword, int, float, bool, datetime',\n `value_string` text COLLATE utf8mb4_unicode_ci COMMENT 'For type=string (max 2048 chars enforced at app level)',\n `value_keyword` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'For type=keyword (exact match, indexed)',\n `value_keyword_list` longtext COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'For type=keyword_list (ordered exact-match values)',\n `value_int` bigint DEFAULT NULL COMMENT 'For type=int',\n `value_float` double DEFAULT NULL COMMENT 'For type=float',\n `value_bool` tinyint(1) DEFAULT NULL COMMENT 'For type=bool',\n `value_datetime` timestamp(6) NULL DEFAULT NULL COMMENT 'For type=datetime (microsecond precision)',\n `upserted_at_sequence` int unsigned NOT NULL COMMENT 'History sequence when this attribute was last upserted',\n `inherited_from_parent` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'True if inherited via continue-as-new',\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_search_attrs_run_key_unique` (`workflow_run_id`,`key`),\n KEY `workflow_search_attrs_instance_key_type` (`workflow_instance_id`,`key`,`type`),\n KEY `workflow_search_attrs_key_keyword` (`key`,`value_keyword`),\n KEY `workflow_search_attrs_key_int` (`key`,`value_int`),\n KEY `workflow_search_attrs_key_float` (`key`,`value_float`),\n KEY `workflow_search_attrs_key_bool` (`key`,`value_bool`),\n KEY `workflow_search_attrs_key_datetime` (`key`,`value_datetime`),\n KEY `workflow_search_attributes_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_search_attributes_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_search_attributes_value_keyword_index` (`value_keyword`),\n KEY `workflow_search_attributes_value_int_index` (`value_int`),\n KEY `workflow_search_attributes_value_float_index` (`value_float`),\n KEY `workflow_search_attributes_value_bool_index` (`value_bool`),\n KEY `workflow_search_attributes_value_datetime_index` (`value_datetime`),\n CONSTRAINT `workflow_search_attributes_workflow_run_id_foreign` FOREIGN KEY (`workflow_run_id`) REFERENCES `workflow_runs` (`id`) ON DELETE CASCADE,\n CONSTRAINT `dw_json_text_df0541f7f01fef92919f` CHECK (json_valid(`value_keyword_list`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "4287cfbda6f32981afb44b6079be295bf5063083c4d8ab7fdb3650a49f162679", + "candidate_alter_sql": "ALTER TABLE `workflow_search_attributes` MODIFY COLUMN `value_keyword_list` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'For type=keyword_list (ordered exact-match values)', ADD CONSTRAINT `dw_json_text_df0541f7f01fef92919f` CHECK (json_valid(`value_keyword_list`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-25-workflow_service_calls", + "table": "workflow_service_calls", + "source_create_sha256": "c54c9ac03d643267f984a56dbe78d91c3049a42c1a55290b21db5c0e0a18a7d9", + "columns": [ + { + "name": "deadline_policy", + "ordinal_position": 27, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_718533c1e82804b31504", + "check_clause": "json_valid(`deadline_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `deadline_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_718533c1e82804b31504` CHECK (json_valid(`deadline_policy`)) ENFORCED" + }, + { + "name": "idempotency_policy", + "ordinal_position": 28, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_89af2bddb6216607276e", + "check_clause": "json_valid(`idempotency_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `idempotency_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_89af2bddb6216607276e` CHECK (json_valid(`idempotency_policy`)) ENFORCED" + }, + { + "name": "cancellation_policy", + "ordinal_position": 29, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_77a64a96c9d03d965701", + "check_clause": "json_valid(`cancellation_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `cancellation_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_77a64a96c9d03d965701` CHECK (json_valid(`cancellation_policy`)) ENFORCED" + }, + { + "name": "retry_policy", + "ordinal_position": 30, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_89f01ea9712aa07575bf", + "check_clause": "json_valid(`retry_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `retry_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_89f01ea9712aa07575bf` CHECK (json_valid(`retry_policy`)) ENFORCED" + }, + { + "name": "boundary_policy", + "ordinal_position": 31, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_e06e9f587b4efc8ce3e9", + "check_clause": "json_valid(`boundary_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `boundary_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_e06e9f587b4efc8ce3e9` CHECK (json_valid(`boundary_policy`)) ENFORCED" + }, + { + "name": "metadata", + "ordinal_position": 32, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_4a6c5e40752d4ed0bdb4", + "check_clause": "json_valid(`metadata`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_4a6c5e40752d4ed0bdb4` CHECK (json_valid(`metadata`)) ENFORCED" + }, + { + "name": "outcome_metadata", + "ordinal_position": 36, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_b4ffcdd589152c314969", + "check_clause": "json_valid(`outcome_metadata`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `outcome_metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_b4ffcdd589152c314969` CHECK (json_valid(`outcome_metadata`)) ENFORCED" + }, + { + "name": "caller_principal_roles", + "ordinal_position": 41, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_5a480bd9165f2eb68e43", + "check_clause": "json_valid(`caller_principal_roles`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `caller_principal_roles` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_5a480bd9165f2eb68e43` CHECK (json_valid(`caller_principal_roles`)) ENFORCED" + }, + { + "name": "caller_principal_claims", + "ordinal_position": 43, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_cb4fc45f46fe05d68f99", + "check_clause": "json_valid(`caller_principal_claims`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `caller_principal_claims` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_cb4fc45f46fe05d68f99` CHECK (json_valid(`caller_principal_claims`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_service_calls` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_service_endpoint_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_service_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_service_operation_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `endpoint_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `service_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `operation_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `caller_namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `caller_workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `caller_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `target_namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `linked_workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `linked_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `linked_workflow_update_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,\n `outcome` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `operation_mode` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,\n `resolved_binding_kind` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `resolved_target_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload_codec` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `input_payload_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `output_payload_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `failure_payload_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `failure_message` text COLLATE utf8mb4_unicode_ci,\n `idempotency_key` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `deadline_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `idempotency_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `cancellation_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `retry_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `boundary_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `metadata` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `outcome_category` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `outcome_reason` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `outcome_message` text COLLATE utf8mb4_unicode_ci,\n `outcome_metadata` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `policy_name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `retry_after_seconds` int unsigned DEFAULT NULL,\n `caller_principal_subject` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `caller_principal_method` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `caller_principal_roles` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `caller_principal_tenant` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `caller_principal_claims` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `accepted_at` timestamp(6) NULL DEFAULT NULL,\n `started_at` timestamp(6) NULL DEFAULT NULL,\n `completed_at` timestamp(6) NULL DEFAULT NULL,\n `failed_at` timestamp(6) NULL DEFAULT NULL,\n `cancelled_at` timestamp(6) NULL DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n KEY `wf_service_calls_namespace_status_idx` (`namespace`,`status`),\n KEY `wf_service_calls_caller_status_idx` (`caller_namespace`,`status`),\n KEY `wf_service_calls_target_status_idx` (`target_namespace`,`status`),\n KEY `wf_service_calls_namespace_outcome_idx` (`namespace`,`outcome`),\n KEY `wf_service_calls_caller_outcome_idx` (`caller_namespace`,`outcome`),\n KEY `wf_service_calls_target_outcome_idx` (`target_namespace`,`outcome`),\n KEY `wf_service_calls_endpoint_idx` (`workflow_service_endpoint_id`),\n KEY `wf_service_calls_service_idx` (`workflow_service_id`),\n KEY `wf_service_calls_operation_idx` (`workflow_service_operation_id`),\n KEY `wf_service_calls_namespace_idx` (`namespace`),\n KEY `wf_service_calls_caller_namespace_idx` (`caller_namespace`),\n KEY `wf_service_calls_caller_instance_idx` (`caller_workflow_instance_id`),\n KEY `wf_service_calls_caller_run_idx` (`caller_workflow_run_id`),\n KEY `wf_service_calls_target_namespace_idx` (`target_namespace`),\n KEY `wf_service_calls_linked_instance_idx` (`linked_workflow_instance_id`),\n KEY `wf_service_calls_linked_run_idx` (`linked_workflow_run_id`),\n KEY `wf_service_calls_linked_update_idx` (`linked_workflow_update_id`),\n KEY `wf_service_calls_status_idx` (`status`),\n KEY `wf_service_calls_outcome_idx` (`outcome`),\n KEY `wf_service_calls_mode_idx` (`operation_mode`),\n KEY `wf_service_calls_binding_kind_idx` (`resolved_binding_kind`),\n KEY `wf_service_calls_idempotency_idx` (`idempotency_key`),\n KEY `wf_service_calls_outcome_category_idx` (`outcome_category`),\n KEY `wf_service_calls_policy_idx` (`policy_name`),\n KEY `wf_service_calls_principal_subject_idx` (`caller_principal_subject`),\n KEY `wf_service_calls_accepted_at_idx` (`accepted_at`),\n CONSTRAINT `dw_json_text_718533c1e82804b31504` CHECK (json_valid(`deadline_policy`)),\n CONSTRAINT `dw_json_text_89af2bddb6216607276e` CHECK (json_valid(`idempotency_policy`)),\n CONSTRAINT `dw_json_text_77a64a96c9d03d965701` CHECK (json_valid(`cancellation_policy`)),\n CONSTRAINT `dw_json_text_89f01ea9712aa07575bf` CHECK (json_valid(`retry_policy`)),\n CONSTRAINT `dw_json_text_e06e9f587b4efc8ce3e9` CHECK (json_valid(`boundary_policy`)),\n CONSTRAINT `dw_json_text_4a6c5e40752d4ed0bdb4` CHECK (json_valid(`metadata`)),\n CONSTRAINT `dw_json_text_b4ffcdd589152c314969` CHECK (json_valid(`outcome_metadata`)),\n CONSTRAINT `dw_json_text_5a480bd9165f2eb68e43` CHECK (json_valid(`caller_principal_roles`)),\n CONSTRAINT `dw_json_text_cb4fc45f46fe05d68f99` CHECK (json_valid(`caller_principal_claims`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "15b17269e3dfe83f213110543de41f08ae5375b7bff98831454fbc2946fb2371", + "candidate_alter_sql": "ALTER TABLE `workflow_service_calls` MODIFY COLUMN `deadline_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `idempotency_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `cancellation_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `retry_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `boundary_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `outcome_metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `caller_principal_roles` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `caller_principal_claims` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_718533c1e82804b31504` CHECK (json_valid(`deadline_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_89af2bddb6216607276e` CHECK (json_valid(`idempotency_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_77a64a96c9d03d965701` CHECK (json_valid(`cancellation_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_89f01ea9712aa07575bf` CHECK (json_valid(`retry_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_e06e9f587b4efc8ce3e9` CHECK (json_valid(`boundary_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_4a6c5e40752d4ed0bdb4` CHECK (json_valid(`metadata`)) ENFORCED, ADD CONSTRAINT `dw_json_text_b4ffcdd589152c314969` CHECK (json_valid(`outcome_metadata`)) ENFORCED, ADD CONSTRAINT `dw_json_text_5a480bd9165f2eb68e43` CHECK (json_valid(`caller_principal_roles`)) ENFORCED, ADD CONSTRAINT `dw_json_text_cb4fc45f46fe05d68f99` CHECK (json_valid(`caller_principal_claims`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-26-workflow_service_endpoints", + "table": "workflow_service_endpoints", + "source_create_sha256": "905323b25e7885bbef6d11c731b3f23aa8cf8a9c64754ed1275d88ec3d328769", + "columns": [ + { + "name": "boundary_policy", + "ordinal_position": 5, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_6e65cde38938c5bf2752", + "check_clause": "json_valid(`boundary_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `boundary_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_6e65cde38938c5bf2752` CHECK (json_valid(`boundary_policy`)) ENFORCED" + }, + { + "name": "metadata", + "ordinal_position": 6, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_3c3c6c7139ec6ffc9fd5", + "check_clause": "json_valid(`metadata`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_3c3c6c7139ec6ffc9fd5` CHECK (json_valid(`metadata`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_service_endpoints` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `endpoint_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `description` text COLLATE utf8mb4_unicode_ci,\n `boundary_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `metadata` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `wf_service_endpoints_namespace_name_unique` (`namespace`,`endpoint_name`),\n KEY `wf_service_endpoints_namespace_idx` (`namespace`),\n KEY `wf_service_endpoints_name_idx` (`endpoint_name`),\n CONSTRAINT `dw_json_text_6e65cde38938c5bf2752` CHECK (json_valid(`boundary_policy`)),\n CONSTRAINT `dw_json_text_3c3c6c7139ec6ffc9fd5` CHECK (json_valid(`metadata`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "4965289f6f7b3b409172885fbc4ab50a4e60df43d35924508204a478325ff598", + "candidate_alter_sql": "ALTER TABLE `workflow_service_endpoints` MODIFY COLUMN `boundary_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_6e65cde38938c5bf2752` CHECK (json_valid(`boundary_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_3c3c6c7139ec6ffc9fd5` CHECK (json_valid(`metadata`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-27-workflow_service_operations", + "table": "workflow_service_operations", + "source_create_sha256": "154a8e054328fa41b48a59d5d4060ad285486a919d9d04ed872a65f439141f45", + "columns": [ + { + "name": "handler_binding", + "ordinal_position": 10, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_e844533982a5ba5f974a", + "check_clause": "json_valid(`handler_binding`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `handler_binding` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_e844533982a5ba5f974a` CHECK (json_valid(`handler_binding`)) ENFORCED" + }, + { + "name": "deadline_policy", + "ordinal_position": 11, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_aaf235f8970ff7618e0c", + "check_clause": "json_valid(`deadline_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `deadline_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_aaf235f8970ff7618e0c` CHECK (json_valid(`deadline_policy`)) ENFORCED" + }, + { + "name": "idempotency_policy", + "ordinal_position": 12, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_e9b84c12c63f3f05d4f8", + "check_clause": "json_valid(`idempotency_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `idempotency_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_e9b84c12c63f3f05d4f8` CHECK (json_valid(`idempotency_policy`)) ENFORCED" + }, + { + "name": "cancellation_policy", + "ordinal_position": 13, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_13e161b371e6bd18c390", + "check_clause": "json_valid(`cancellation_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `cancellation_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_13e161b371e6bd18c390` CHECK (json_valid(`cancellation_policy`)) ENFORCED" + }, + { + "name": "retry_policy", + "ordinal_position": 14, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_2409229a6279aa76321a", + "check_clause": "json_valid(`retry_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `retry_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_2409229a6279aa76321a` CHECK (json_valid(`retry_policy`)) ENFORCED" + }, + { + "name": "boundary_policy", + "ordinal_position": 15, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_05dd84f339d72c2ea677", + "check_clause": "json_valid(`boundary_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `boundary_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_05dd84f339d72c2ea677` CHECK (json_valid(`boundary_policy`)) ENFORCED" + }, + { + "name": "metadata", + "ordinal_position": 16, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_818561935c015a8f258c", + "check_clause": "json_valid(`metadata`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_818561935c015a8f258c` CHECK (json_valid(`metadata`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_service_operations` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_service_endpoint_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_service_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `operation_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `description` text COLLATE utf8mb4_unicode_ci,\n `operation_mode` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,\n `handler_binding_kind` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `handler_target_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `handler_binding` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `deadline_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `idempotency_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `cancellation_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `retry_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `boundary_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `metadata` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `wf_service_ops_namespace_service_name_unique` (`namespace`,`workflow_service_id`,`operation_name`),\n KEY `wf_service_ops_namespace_name_idx` (`namespace`,`operation_name`),\n KEY `wf_service_ops_endpoint_idx` (`workflow_service_endpoint_id`),\n KEY `wf_service_ops_service_idx` (`workflow_service_id`),\n KEY `wf_service_ops_namespace_idx` (`namespace`),\n KEY `wf_service_ops_name_idx` (`operation_name`),\n KEY `wf_service_ops_mode_idx` (`operation_mode`),\n KEY `wf_service_ops_binding_kind_idx` (`handler_binding_kind`),\n CONSTRAINT `dw_json_text_e844533982a5ba5f974a` CHECK (json_valid(`handler_binding`)),\n CONSTRAINT `dw_json_text_aaf235f8970ff7618e0c` CHECK (json_valid(`deadline_policy`)),\n CONSTRAINT `dw_json_text_e9b84c12c63f3f05d4f8` CHECK (json_valid(`idempotency_policy`)),\n CONSTRAINT `dw_json_text_13e161b371e6bd18c390` CHECK (json_valid(`cancellation_policy`)),\n CONSTRAINT `dw_json_text_2409229a6279aa76321a` CHECK (json_valid(`retry_policy`)),\n CONSTRAINT `dw_json_text_05dd84f339d72c2ea677` CHECK (json_valid(`boundary_policy`)),\n CONSTRAINT `dw_json_text_818561935c015a8f258c` CHECK (json_valid(`metadata`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "753bbe8456773a6bd077ba585bfea0de879dfca4ca2103831c9e9e1cd7f68e72", + "candidate_alter_sql": "ALTER TABLE `workflow_service_operations` MODIFY COLUMN `handler_binding` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `deadline_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `idempotency_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `cancellation_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `retry_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `boundary_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_e844533982a5ba5f974a` CHECK (json_valid(`handler_binding`)) ENFORCED, ADD CONSTRAINT `dw_json_text_aaf235f8970ff7618e0c` CHECK (json_valid(`deadline_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_e9b84c12c63f3f05d4f8` CHECK (json_valid(`idempotency_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_13e161b371e6bd18c390` CHECK (json_valid(`cancellation_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_2409229a6279aa76321a` CHECK (json_valid(`retry_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_05dd84f339d72c2ea677` CHECK (json_valid(`boundary_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_818561935c015a8f258c` CHECK (json_valid(`metadata`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-28-workflow_services", + "table": "workflow_services", + "source_create_sha256": "3721d4e60fc3d7d7d9de72c6e21a752e838b8b391876c113e5ebbb8ffa2256f3", + "columns": [ + { + "name": "boundary_policy", + "ordinal_position": 6, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_1af5bae7acfe0b9d3f11", + "check_clause": "json_valid(`boundary_policy`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `boundary_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_1af5bae7acfe0b9d3f11` CHECK (json_valid(`boundary_policy`)) ENFORCED" + }, + { + "name": "metadata", + "ordinal_position": 7, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_4e612803d0ef9c0cfcaa", + "check_clause": "json_valid(`metadata`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_4e612803d0ef9c0cfcaa` CHECK (json_valid(`metadata`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_services` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_service_endpoint_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `service_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `description` text COLLATE utf8mb4_unicode_ci,\n `boundary_policy` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `metadata` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `wf_services_namespace_endpoint_name_unique` (`namespace`,`workflow_service_endpoint_id`,`service_name`),\n KEY `wf_services_namespace_name_idx` (`namespace`,`service_name`),\n KEY `wf_services_endpoint_idx` (`workflow_service_endpoint_id`),\n KEY `wf_services_namespace_idx` (`namespace`),\n KEY `wf_services_name_idx` (`service_name`),\n CONSTRAINT `dw_json_text_1af5bae7acfe0b9d3f11` CHECK (json_valid(`boundary_policy`)),\n CONSTRAINT `dw_json_text_4e612803d0ef9c0cfcaa` CHECK (json_valid(`metadata`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "ac6260dcbeaee3bd79d50d7bc73bd5d5c737c542aa9b558d377a86f2b7999e40", + "candidate_alter_sql": "ALTER TABLE `workflow_services` MODIFY COLUMN `boundary_policy` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `metadata` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_1af5bae7acfe0b9d3f11` CHECK (json_valid(`boundary_policy`)) ENFORCED, ADD CONSTRAINT `dw_json_text_4e612803d0ef9c0cfcaa` CHECK (json_valid(`metadata`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-29-workflow_signal_records", + "table": "workflow_signal_records", + "source_create_sha256": "73614edfd44682f99b3a53aea2e1cef511a79c8282a193de491548d23b15f4b6", + "columns": [ + { + "name": "validation_errors", + "ordinal_position": 16, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_87990e1e6c171fd7edb3", + "check_clause": "json_valid(`validation_errors`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `validation_errors` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_87990e1e6c171fd7edb3` CHECK (json_valid(`validation_errors`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_signal_records` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_command_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `target_scope` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'instance',\n `requested_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `resolved_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `signal_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `signal_wait_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `outcome` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `command_sequence` int unsigned DEFAULT NULL,\n `workflow_sequence` int unsigned DEFAULT NULL,\n `payload_codec` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `arguments` longtext COLLATE utf8mb4_unicode_ci,\n `validation_errors` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `rejection_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `received_at` timestamp(6) NULL DEFAULT NULL,\n `applied_at` timestamp(6) NULL DEFAULT NULL,\n `rejected_at` timestamp(6) NULL DEFAULT NULL,\n `closed_at` timestamp(6) NULL DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_signal_records_workflow_command_id_unique` (`workflow_command_id`),\n KEY `workflow_signal_records_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_signal_records_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_signal_records_requested_workflow_run_id_index` (`requested_workflow_run_id`),\n KEY `workflow_signal_records_resolved_workflow_run_id_index` (`resolved_workflow_run_id`),\n KEY `workflow_signal_records_signal_name_index` (`signal_name`),\n KEY `workflow_signal_records_signal_wait_id_index` (`signal_wait_id`),\n KEY `workflow_signal_records_status_index` (`status`),\n KEY `workflow_signal_records_outcome_index` (`outcome`),\n KEY `workflow_signal_records_command_sequence_index` (`command_sequence`),\n KEY `workflow_signal_records_workflow_sequence_index` (`workflow_sequence`),\n CONSTRAINT `dw_json_text_87990e1e6c171fd7edb3` CHECK (json_valid(`validation_errors`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "e7446c7747ba3e3fbb7b55efc567e43f2b6f2265b37660002c6e2d61ebadd8cc", + "candidate_alter_sql": "ALTER TABLE `workflow_signal_records` MODIFY COLUMN `validation_errors` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_87990e1e6c171fd7edb3` CHECK (json_valid(`validation_errors`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-30-workflow_tasks", + "table": "workflow_tasks", + "source_create_sha256": "a4d99fbaa7f567b376dad174d9d0580e8217b113b99716e39f1c293b22b566b8", + "columns": [ + { + "name": "payload", + "ordinal_position": 7, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_edce43b6b7b815300bd1", + "check_clause": "json_valid(`payload`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_edce43b6b7b815300bd1` CHECK (json_valid(`payload`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_tasks` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `task_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `compatibility` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `payload` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `connection` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `queue` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `priority` tinyint unsigned NOT NULL DEFAULT '5',\n `fairness_key` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `fairness_weight` smallint unsigned NOT NULL DEFAULT '1',\n `sticky_worker_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `sticky_until` timestamp(6) NULL DEFAULT NULL,\n `sticky_replay_mode` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `sticky_claimed_at` timestamp(6) NULL DEFAULT NULL,\n `available_at` timestamp(6) NULL DEFAULT NULL,\n `leased_at` timestamp(6) NULL DEFAULT NULL,\n `lease_owner` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `lease_expires_at` timestamp(6) NULL DEFAULT NULL,\n `attempt_count` int unsigned NOT NULL DEFAULT '0',\n `last_dispatch_attempt_at` timestamp(6) NULL DEFAULT NULL,\n `last_dispatched_at` timestamp(6) NULL DEFAULT NULL,\n `last_dispatch_error` text COLLATE utf8mb4_unicode_ci,\n `last_claim_failed_at` timestamp(6) NULL DEFAULT NULL,\n `last_claim_error` text COLLATE utf8mb4_unicode_ci,\n `repair_count` int unsigned NOT NULL DEFAULT '0',\n `repair_available_at` timestamp(6) NULL DEFAULT NULL,\n `last_error` text COLLATE utf8mb4_unicode_ci,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n KEY `workflow_tasks_status_available_at_index` (`status`,`available_at`),\n KEY `workflow_tasks_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_tasks_namespace_index` (`namespace`),\n KEY `workflow_tasks_sticky_worker_id_index` (`sticky_worker_id`),\n KEY `workflow_tasks_sticky_until_index` (`sticky_until`),\n KEY `workflow_tasks_sticky_replay_mode_index` (`sticky_replay_mode`),\n KEY `workflow_tasks_sticky_claimed_at_index` (`sticky_claimed_at`),\n KEY `workflow_tasks_dispatch_order_index` (`queue`,`status`,`priority`,`available_at`),\n KEY `workflow_tasks_namespace_queue_status_idx` (`namespace`,`queue`,`status`),\n KEY `workflow_tasks_fairness_class_index` (`queue`,`status`,`fairness_key`),\n KEY `workflow_tasks_prom_metrics_queue_idx` (`namespace`,`queue`),\n KEY `dw_workflow_tasks_poll` (`namespace`(64),`queue`(64),`task_type`(16),`status`(16),`available_at`),\n CONSTRAINT `dw_json_text_edce43b6b7b815300bd1` CHECK (json_valid(`payload`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "1b3c84d54209bb8a4acae05f560b833774547d9728cc1db2e7ff37be7af3987d", + "candidate_alter_sql": "ALTER TABLE `workflow_tasks` MODIFY COLUMN `payload` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_edce43b6b7b815300bd1` CHECK (json_valid(`payload`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-31-workflow_update_validation_tasks", + "table": "workflow_update_validation_tasks", + "source_create_sha256": "aed6c8cf0c6ef5f04fd0e358fca12e30b8546d0ec0da82690ae1eaf210591e7f", + "columns": [ + { + "name": "command_context", + "ordinal_position": 15, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_8648c83f3febc7faec99", + "check_clause": "json_valid(`command_context`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `command_context` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_8648c83f3febc7faec99` CHECK (json_valid(`command_context`)) ENFORCED" + }, + { + "name": "validation_errors", + "ordinal_position": 23, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_fc8e8804602cda328168", + "check_clause": "json_valid(`validation_errors`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `validation_errors` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_fc8e8804602cda328168` CHECK (json_valid(`validation_errors`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_update_validation_tasks` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `idempotency_key` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `task_queue` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `compatibility` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_definition_fingerprint` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `update_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `request_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `input_hash` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `payload_codec` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `arguments` longtext COLLATE utf8mb4_unicode_ci NOT NULL,\n `command_context` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `attempt_count` int unsigned NOT NULL DEFAULT '0',\n `lease_owner` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `lease_expires_at` timestamp(6) NULL DEFAULT NULL,\n `rejection_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `rejection_message` text COLLATE utf8mb4_unicode_ci,\n `failure_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `validation_errors` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `approved_at` timestamp(6) NULL DEFAULT NULL,\n `rejected_at` timestamp(6) NULL DEFAULT NULL,\n `failed_at` timestamp(6) NULL DEFAULT NULL,\n `timed_out_at` timestamp(6) NULL DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_update_validation_tasks_idempotency_key_unique` (`idempotency_key`),\n KEY `workflow_update_validation_poll_index` (`namespace`,`task_queue`,`status`,`created_at`),\n KEY `workflow_update_validation_tasks_namespace_index` (`namespace`),\n KEY `workflow_update_validation_tasks_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_update_validation_tasks_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_update_validation_tasks_workflow_type_index` (`workflow_type`),\n KEY `workflow_update_validation_tasks_task_queue_index` (`task_queue`),\n KEY `workflow_update_validation_tasks_compatibility_index` (`compatibility`),\n KEY `workflow_update_validation_tasks_update_name_index` (`update_name`),\n KEY `workflow_update_validation_tasks_status_index` (`status`),\n KEY `workflow_update_validation_tasks_lease_owner_index` (`lease_owner`),\n KEY `workflow_update_validation_tasks_lease_expires_at_index` (`lease_expires_at`),\n CONSTRAINT `dw_json_text_8648c83f3febc7faec99` CHECK (json_valid(`command_context`)),\n CONSTRAINT `dw_json_text_fc8e8804602cda328168` CHECK (json_valid(`validation_errors`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "4faf16a887d1f9ca94170a87c5d8bf47112f4a627a18e29413030e916d6423cd", + "candidate_alter_sql": "ALTER TABLE `workflow_update_validation_tasks` MODIFY COLUMN `command_context` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `validation_errors` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_8648c83f3febc7faec99` CHECK (json_valid(`command_context`)) ENFORCED, ADD CONSTRAINT `dw_json_text_fc8e8804602cda328168` CHECK (json_valid(`validation_errors`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-32-workflow_updates", + "table": "workflow_updates", + "source_create_sha256": "277260bc8b930f99da4b479af0a85c1b80cb62d615c76f5d54c5cc006ac0da20", + "columns": [ + { + "name": "validation_errors", + "ordinal_position": 16, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_efe19529950144852322", + "check_clause": "json_valid(`validation_errors`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `validation_errors` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_efe19529950144852322` CHECK (json_valid(`validation_errors`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_updates` (\n `id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_command_id` varchar(26) COLLATE utf8mb4_unicode_ci NOT NULL,\n `workflow_instance_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `target_scope` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'instance',\n `requested_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `resolved_workflow_run_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `update_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `outcome` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `command_sequence` int unsigned DEFAULT NULL,\n `workflow_sequence` int unsigned DEFAULT NULL,\n `payload_codec` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `arguments` longtext COLLATE utf8mb4_unicode_ci,\n `result` longtext COLLATE utf8mb4_unicode_ci,\n `validation_errors` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `rejection_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `failure_id` varchar(26) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `failure_message` text COLLATE utf8mb4_unicode_ci,\n `accepted_at` timestamp(6) NULL DEFAULT NULL,\n `applied_at` timestamp(6) NULL DEFAULT NULL,\n `rejected_at` timestamp(6) NULL DEFAULT NULL,\n `closed_at` timestamp(6) NULL DEFAULT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_updates_workflow_command_id_unique` (`workflow_command_id`),\n KEY `workflow_updates_workflow_instance_id_index` (`workflow_instance_id`),\n KEY `workflow_updates_workflow_run_id_index` (`workflow_run_id`),\n KEY `workflow_updates_requested_workflow_run_id_index` (`requested_workflow_run_id`),\n KEY `workflow_updates_resolved_workflow_run_id_index` (`resolved_workflow_run_id`),\n KEY `workflow_updates_update_name_index` (`update_name`),\n KEY `workflow_updates_status_index` (`status`),\n KEY `workflow_updates_outcome_index` (`outcome`),\n KEY `workflow_updates_command_sequence_index` (`command_sequence`),\n KEY `workflow_updates_workflow_sequence_index` (`workflow_sequence`),\n KEY `workflow_updates_failure_id_index` (`failure_id`),\n CONSTRAINT `dw_json_text_efe19529950144852322` CHECK (json_valid(`validation_errors`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "1b644480ad3f1131cd251451723d528f1256d4b93596b99e00f311f1faa58748", + "candidate_alter_sql": "ALTER TABLE `workflow_updates` MODIFY COLUMN `validation_errors` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_efe19529950144852322` CHECK (json_valid(`validation_errors`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-33-workflow_worker_build_id_rollouts", + "table": "workflow_worker_build_id_rollouts", + "source_create_sha256": "574af7b312143abb5b91fe5fc299b79483a580dc22afca6a281de465afa9c735", + "columns": [ + { + "name": "workflow_types", + "ordinal_position": 14, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_19de9b23ee283257b769", + "check_clause": "json_valid(`workflow_types`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `workflow_types` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_19de9b23ee283257b769` CHECK (json_valid(`workflow_types`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_worker_build_id_rollouts` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `namespace` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,\n `task_queue` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `build_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',\n `drain_intent` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'active',\n `drained_at` timestamp NULL DEFAULT NULL,\n `created_at` timestamp NULL DEFAULT NULL,\n `updated_at` timestamp NULL DEFAULT NULL,\n `promoted_at` timestamp NULL DEFAULT NULL,\n `rolled_back_at` timestamp NULL DEFAULT NULL,\n `required_compatibility` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `recorded_fingerprint` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `compatibility_policy` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `workflow_types` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_build_id_rollouts_scope_unique` (`namespace`,`task_queue`,`build_id`),\n CONSTRAINT `dw_json_text_19de9b23ee283257b769` CHECK (json_valid(`workflow_types`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "059b7063dc6687671d3bc575b75be5b38a2b2941d698dc5cea66c44f86a6b1e9", + "candidate_alter_sql": "ALTER TABLE `workflow_worker_build_id_rollouts` MODIFY COLUMN `workflow_types` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_19de9b23ee283257b769` CHECK (json_valid(`workflow_types`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-34-workflow_worker_compatibility_heartbeats", + "table": "workflow_worker_compatibility_heartbeats", + "source_create_sha256": "aef6a3f6724b0fbad83f8436fbddcfaf15df0c44c8c60d7f21da13feb0768cb0", + "columns": [ + { + "name": "supported", + "ordinal_position": 9, + "source_attributes_sql": " NOT NULL", + "sql_nullable": false, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_c9c8573bb83f23ce864d", + "check_clause": "json_valid(`supported`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `supported` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_c9c8573bb83f23ce864d` CHECK (json_valid(`supported`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_worker_compatibility_heartbeats` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `worker_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `scope_key` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `host` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `process_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `connection` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `queue` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `supported` longtext COLLATE utf8mb4_bin NOT NULL,\n `recorded_at` datetime(6) NOT NULL,\n `expires_at` datetime(6) NOT NULL,\n `created_at` timestamp(6) NULL DEFAULT NULL,\n `updated_at` timestamp(6) NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_worker_compatibility_heartbeats_scope_unique` (`worker_id`,`scope_key`),\n KEY `workflow_worker_compatibility_heartbeats_namespace_index` (`namespace`),\n KEY `workflow_worker_compatibility_heartbeats_connection_index` (`connection`),\n KEY `workflow_worker_compatibility_heartbeats_queue_index` (`queue`),\n KEY `workflow_worker_compatibility_heartbeats_expires_at_index` (`expires_at`),\n CONSTRAINT `dw_json_text_c9c8573bb83f23ce864d` CHECK (json_valid(`supported`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "d03944d9c298e0d69fdf1d84cacd6df7f85e6b93106654c4d5afbc2a283749d9", + "candidate_alter_sql": "ALTER TABLE `workflow_worker_compatibility_heartbeats` MODIFY COLUMN `supported` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, ADD CONSTRAINT `dw_json_text_c9c8573bb83f23ce864d` CHECK (json_valid(`supported`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-35-workflow_worker_registrations", + "table": "workflow_worker_registrations", + "source_create_sha256": "176ee909133378b0688939a760e8e98c7cf7a3ae38b2f95f3b5d325347360180", + "columns": [ + { + "name": "supported_workflow_types", + "ordinal_position": 8, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_9e5445d614888bb3661c", + "check_clause": "json_valid(`supported_workflow_types`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `supported_workflow_types` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_9e5445d614888bb3661c` CHECK (json_valid(`supported_workflow_types`)) ENFORCED" + }, + { + "name": "workflow_definition_fingerprints", + "ordinal_position": 9, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_4f49aa63cb080bc75d50", + "check_clause": "json_valid(`workflow_definition_fingerprints`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `workflow_definition_fingerprints` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_4f49aa63cb080bc75d50` CHECK (json_valid(`workflow_definition_fingerprints`)) ENFORCED" + }, + { + "name": "workflow_command_contracts", + "ordinal_position": 10, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_5ff38312fcf7d855445d", + "check_clause": "json_valid(`workflow_command_contracts`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `workflow_command_contracts` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_5ff38312fcf7d855445d` CHECK (json_valid(`workflow_command_contracts`)) ENFORCED" + }, + { + "name": "supported_activity_types", + "ordinal_position": 11, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_4d23abbe7d6f10d67024", + "check_clause": "json_valid(`supported_activity_types`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `supported_activity_types` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_4d23abbe7d6f10d67024` CHECK (json_valid(`supported_activity_types`)) ENFORCED" + }, + { + "name": "capabilities", + "ordinal_position": 12, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_5db648194e26be45f445", + "check_clause": "json_valid(`capabilities`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `capabilities` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_5db648194e26be45f445` CHECK (json_valid(`capabilities`)) ENFORCED" + }, + { + "name": "capability_manifest", + "ordinal_position": 13, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_d1357dfe1fe52c7b2691", + "check_clause": "json_valid(`capability_manifest`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `capability_manifest` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_d1357dfe1fe52c7b2691` CHECK (json_valid(`capability_manifest`)) ENFORCED" + }, + { + "name": "process_metrics", + "ordinal_position": 20, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_34d29bf4c212ababa706", + "check_clause": "json_valid(`process_metrics`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `process_metrics` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_34d29bf4c212ababa706` CHECK (json_valid(`process_metrics`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_worker_registrations` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `worker_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `namespace` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,\n `task_queue` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `runtime` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,\n `sdk_version` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `build_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `supported_workflow_types` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `workflow_definition_fingerprints` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `workflow_command_contracts` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `supported_activity_types` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `capabilities` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `capability_manifest` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `max_concurrent_workflow_tasks` int unsigned NOT NULL DEFAULT '100',\n `max_concurrent_activity_tasks` int unsigned NOT NULL DEFAULT '100',\n `max_concurrent_worker_sessions` int unsigned NOT NULL DEFAULT '10',\n `available_workflow_slots` int unsigned DEFAULT NULL,\n `available_activity_slots` int unsigned DEFAULT NULL,\n `available_session_slots` int unsigned DEFAULT NULL,\n `process_metrics` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `heartbeat_interval_seconds` int unsigned DEFAULT NULL,\n `last_heartbeat_at` timestamp NULL DEFAULT NULL,\n `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'active',\n `created_at` timestamp NULL DEFAULT NULL,\n `updated_at` timestamp NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_worker_registrations_worker_id_namespace_unique` (`worker_id`,`namespace`),\n KEY `workflow_worker_registrations_namespace_task_queue_status_index` (`namespace`,`task_queue`,`status`),\n CONSTRAINT `dw_json_text_9e5445d614888bb3661c` CHECK (json_valid(`supported_workflow_types`)),\n CONSTRAINT `dw_json_text_4f49aa63cb080bc75d50` CHECK (json_valid(`workflow_definition_fingerprints`)),\n CONSTRAINT `dw_json_text_5ff38312fcf7d855445d` CHECK (json_valid(`workflow_command_contracts`)),\n CONSTRAINT `dw_json_text_4d23abbe7d6f10d67024` CHECK (json_valid(`supported_activity_types`)),\n CONSTRAINT `dw_json_text_5db648194e26be45f445` CHECK (json_valid(`capabilities`)),\n CONSTRAINT `dw_json_text_d1357dfe1fe52c7b2691` CHECK (json_valid(`capability_manifest`)),\n CONSTRAINT `dw_json_text_34d29bf4c212ababa706` CHECK (json_valid(`process_metrics`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "7bdac9fe7d1a74b1876b6d8e3b328d52046194b4a14508a71df896eedaa744b2", + "candidate_alter_sql": "ALTER TABLE `workflow_worker_registrations` MODIFY COLUMN `supported_workflow_types` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `workflow_definition_fingerprints` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `workflow_command_contracts` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `supported_activity_types` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `capabilities` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `capability_manifest` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, MODIFY COLUMN `process_metrics` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_9e5445d614888bb3661c` CHECK (json_valid(`supported_workflow_types`)) ENFORCED, ADD CONSTRAINT `dw_json_text_4f49aa63cb080bc75d50` CHECK (json_valid(`workflow_definition_fingerprints`)) ENFORCED, ADD CONSTRAINT `dw_json_text_5ff38312fcf7d855445d` CHECK (json_valid(`workflow_command_contracts`)) ENFORCED, ADD CONSTRAINT `dw_json_text_4d23abbe7d6f10d67024` CHECK (json_valid(`supported_activity_types`)) ENFORCED, ADD CONSTRAINT `dw_json_text_5db648194e26be45f445` CHECK (json_valid(`capabilities`)) ENFORCED, ADD CONSTRAINT `dw_json_text_d1357dfe1fe52c7b2691` CHECK (json_valid(`capability_manifest`)) ENFORCED, ADD CONSTRAINT `dw_json_text_34d29bf4c212ababa706` CHECK (json_valid(`process_metrics`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + }, + { + "id": "table-36-workflow_worker_sessions", + "table": "workflow_worker_sessions", + "source_create_sha256": "942bc2b397d93fdebcc38718f8f8548ef99b2eacd22fbf8767e51c45a665742a", + "columns": [ + { + "name": "requirements", + "ordinal_position": 6, + "source_attributes_sql": " DEFAULT NULL", + "sql_nullable": true, + "target_type": "longtext", + "target_character_set": "utf8mb4", + "target_collation": "utf8mb4_bin", + "check_name": "dw_json_text_177d4c6e72d9b9fdebda", + "check_clause": "json_valid(`requirements`)", + "check_enforced": "YES", + "modify_clause": "MODIFY COLUMN `requirements` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL", + "add_check_clause": "ADD CONSTRAINT `dw_json_text_177d4c6e72d9b9fdebda` CHECK (json_valid(`requirements`)) ENFORCED" + } + ], + "candidate_canonical_create": "CREATE TABLE `workflow_worker_sessions` (\n `id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `namespace` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,\n `session_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n `connection` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `queue` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `requirements` longtext COLLATE utf8mb4_bin DEFAULT NULL,\n `status` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'active',\n `lease_owner` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `lease_expires_at` timestamp NULL DEFAULT NULL,\n `ttl_expires_at` timestamp NULL DEFAULT NULL,\n `closed_at` timestamp NULL DEFAULT NULL,\n `failure_reason` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n `lease_seconds` int unsigned NOT NULL DEFAULT '120',\n `ttl_seconds` int unsigned NOT NULL DEFAULT '1800',\n `max_concurrent_activities` int unsigned NOT NULL DEFAULT '1',\n `create_if_missing` tinyint(1) NOT NULL DEFAULT '1',\n `allow_reacquire_after_failure` tinyint(1) NOT NULL DEFAULT '1',\n `last_heartbeat_at` timestamp NULL DEFAULT NULL,\n `created_at` timestamp NULL DEFAULT NULL,\n `updated_at` timestamp NULL DEFAULT NULL,\n PRIMARY KEY (`id`),\n UNIQUE KEY `workflow_worker_sessions_namespace_session_id_unique` (`namespace`,`session_id`),\n KEY `workflow_worker_sessions_namespace_status_index` (`namespace`,`status`),\n KEY `workflow_worker_sessions_namespace_lease_owner_status_index` (`namespace`,`lease_owner`,`status`),\n KEY `workflow_worker_sessions_namespace_queue_status_index` (`namespace`,`queue`,`status`),\n CONSTRAINT `dw_json_text_177d4c6e72d9b9fdebda` CHECK (json_valid(`requirements`))\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + "candidate_create_sha256": "0564a34e691e100b1e2f7250f89450881ed6dda0096ac77e5405dab2a594bbad", + "candidate_alter_sql": "ALTER TABLE `workflow_worker_sessions` MODIFY COLUMN `requirements` LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, ADD CONSTRAINT `dw_json_text_177d4c6e72d9b9fdebda` CHECK (json_valid(`requirements`)) ENFORCED;", + "ddl_atomic_unit": "this complete table only; no whole-upgrade transaction", + "resume_allowed_states": [ + "exact-complete-source-table", + "exact-complete-target-table" + ], + "any_other_definition": "typed catalog refusal before this table step" + } + ], + "execution_gates": [ + "target version/checksum and actual bootstrap/upgrade/catalog/query source", + "exact backend source qualification and independent Security review", + "final release support/prerequisite documentation", + "General exact invocation/capacity/deadline/cleanup admission for any upgrade experiment or artifact" + ], + "execution_admitted": false +} diff --git a/tests/Fixtures/contracts/mysql-json-text/upgrade-vectors.v1.json b/tests/Fixtures/contracts/mysql-json-text/upgrade-vectors.v1.json new file mode 100644 index 000000000..196609e07 --- /dev/null +++ b/tests/Fixtures/contracts/mysql-json-text/upgrade-vectors.v1.json @@ -0,0 +1,593 @@ +{ + "schema": "durable-workflow.mysql-json-text-upgrade-vectors.v1", + "status": "required future observations; no executor or result", + "plan": { + "path": "tests/Fixtures/contracts/mysql-json-text/upgrade-plan.v1.json", + "sha256": "5c76fbd8d1340e2339f045c75e1c63957dc9fd00f4175c4c5c7db2ec5e644ca5" + }, + "execution_admitted": false, + "typed_error_code_bindings": "must be returned by the actual versioned implementation before executing/adopting these observations; this planning inventory invents no current CLI/HTTP error code", + "parameter_expansion": "each declared matrix element is a distinct mandatory cell; never count one representative table/column as the complete inventory", + "table_interruption_cells": 72, + "scope": "fixture-only isolated future source/backend qualification; zero production writes", + "cases": [ + { + "id": "fresh_direct_target", + "setup": "fresh isolated database, recognized MySQL and exclusive initialization owner", + "required_observation": { + "complete_target_relations_created_directly": true, + "native_json_intermediate_bootstrap": false, + "complete_catalog_and_enforcement_verified_before_target_identity": true + } + }, + { + "id": "fresh_bootstrap_interruption", + "setup": "stop between target CREATE relation steps", + "required_observation": { + "present_relations": "exact complete target only", + "missing_relations": "may create under initialization lock", + "foreign_or_partial_definition": "refuse", + "target_identity_advanced_early": false + }, + "parameters": { + "target_relation_names": [ + "_sqlx_migrations", + "activity_attempts", + "activity_executions", + "dw_external_payload_deletions", + "dw_poll_receipts", + "dw_query_cache", + "dw_server_schema", + "dw_service_admission_counters", + "dw_service_call_deadlines", + "dw_stream_reclaims", + "dw_task_completions", + "dw_worker_registration_incarnations", + "dw_worker_session_holders", + "failed_jobs", + "jobs", + "migrations", + "runtime_credentials", + "runtime_external_payload_backup_hold", + "runtime_external_payload_cleanup_stats", + "runtime_external_payload_object_locks", + "runtime_external_payloads", + "runtime_payload_completion_budgets", + "search_attribute_definitions", + "workflow_child_calls", + "workflow_child_projection_repairs", + "workflow_commands", + "workflow_durable_stream_items", + "workflow_durable_streams", + "workflow_failures", + "workflow_history_events", + "workflow_inbound_stream_items", + "workflow_inbound_streams", + "workflow_instances", + "workflow_links", + "workflow_memos", + "workflow_messages", + "workflow_namespaces", + "workflow_run_lineage_entries", + "workflow_run_summaries", + "workflow_run_timeline_entries", + "workflow_run_timer_entries", + "workflow_run_timers", + "workflow_run_waits", + "workflow_runs", + "workflow_schedule_history_events", + "workflow_schedules", + "workflow_search_attributes", + "workflow_service_calls", + "workflow_service_endpoints", + "workflow_service_operations", + "workflow_services", + "workflow_signal_records", + "workflow_task_poll_cursors", + "workflow_tasks", + "workflow_update_validation_tasks", + "workflow_updates", + "workflow_worker_build_id_rollouts", + "workflow_worker_compatibility_heartbeats", + "workflow_worker_registrations", + "workflow_worker_sessions" + ] + } + }, + { + "id": "exact_version_8_upgrade", + "setup": "exact source marker, ledger/checksum/catalog, recognized engine, stopped writers", + "required_observation": { + "table_alter_count": 36, + "modified_columns": 75, + "added_enforced_checks": 75, + "complete_target_verification_before_final_ledger_and_marker": true + } + }, + { + "id": "unsupported_engine_before_any_schema_write", + "setup": "old MySQL patch, unrecognized vendor/version or no proven enforced-CHECK surface", + "required_observation": { + "typed_unsupported_upgrade_refusal": true, + "schema_write_count": 0, + "throwaway_database_probe_count": 0 + }, + "parameters": { + "mysql_versions": [ + "8.0.0", + "8.0.15" + ], + "other": [ + "unrecognized-version", + "non-MySQL-vendor", + "missing-enforcement-metadata" + ] + } + }, + { + "id": "source_identity_refusal", + "setup": "wrong version, marker, failed ledger or checksum", + "required_observation": { + "typed_source_refusal": true, + "schema_write_count": 0 + }, + "parameters": { + "mutations": [ + "version", + "marker-owner", + "ledger-success", + "ledger-checksum" + ] + } + }, + { + "id": "missing_or_contended_owner", + "setup": "another initialization owner holds the named lock, or fence is not owned", + "required_observation": { + "upgrade_refused_or_bounded_wait": true, + "nonowner_schema_write_count": 0, + "nonowner_target_marker_write_count": 0 + } + }, + { + "id": "loss_before_upgrade_fence", + "setup": "connection/owner ends before fence commit", + "required_observation": { + "no_ddl_started": true, + "original_ownership_reconciles_by_readback": true + } + }, + { + "id": "loss_after_upgrade_fence", + "setup": "stop after owned rust-upgrading fence and before the first ALTER", + "required_observation": { + "writers_refused": true, + "resume_requires_exact_source_and_owned_fence": true, + "blind_bootstrap_replay": false + } + }, + { + "id": "recognized_table_interruption", + "setup": "stop immediately before or after the complete table ALTER", + "required_observation": { + "completed_tables": "exact target; skip", + "uncompleted_tables": "exact source; execute once", + "any_third_definition": "typed refusal", + "whole_upgrade_transaction_claim": false + }, + "parameters": { + "step_ids": [ + "table-01-activity_executions", + "table-02-dw_poll_receipts", + "table-03-dw_task_completions", + "table-04-runtime_credentials", + "table-05-runtime_payload_completion_budgets", + "table-06-workflow_child_calls", + "table-07-workflow_commands", + "table-08-workflow_durable_stream_items", + "table-09-workflow_durable_streams", + "table-10-workflow_history_events", + "table-11-workflow_instances", + "table-12-workflow_links", + "table-13-workflow_memos", + "table-14-workflow_messages", + "table-15-workflow_namespaces", + "table-16-workflow_run_lineage_entries", + "table-17-workflow_run_summaries", + "table-18-workflow_run_timeline_entries", + "table-19-workflow_run_timer_entries", + "table-20-workflow_run_waits", + "table-21-workflow_runs", + "table-22-workflow_schedule_history_events", + "table-23-workflow_schedules", + "table-24-workflow_search_attributes", + "table-25-workflow_service_calls", + "table-26-workflow_service_endpoints", + "table-27-workflow_service_operations", + "table-28-workflow_services", + "table-29-workflow_signal_records", + "table-30-workflow_tasks", + "table-31-workflow_update_validation_tasks", + "table-32-workflow_updates", + "table-33-workflow_worker_build_id_rollouts", + "table-34-workflow_worker_compatibility_heartbeats", + "table-35-workflow_worker_registrations", + "table-36-workflow_worker_sessions" + ], + "cut_points": [ + "before-alter", + "after-alter-before-ack" + ] + } + }, + { + "id": "lost_ddl_connection", + "setup": "table ALTER may have committed before connection loss", + "required_observation": { + "new_connection_catalog_readback_required": true, + "complete_source": "execute the one table step under re-established ownership", + "complete_target": "skip", + "unknown_or_mixed_definition": "refuse", + "assume_rollback_or_blind_add_check": false + } + }, + { + "id": "foreign_or_partial_table_drift", + "setup": "seed manual catalog drift distinct from an atomic-ALTER crash state", + "required_observation": { + "typed_catalog_refusal": true, + "repair_or_normalize_foreign_definition": false + }, + "parameters": { + "mutations": [ + "one-of-several-columns-converted", + "missing-check", + "extra-check", + "wrong-check-clause", + "not-enforced-check", + "nullability", + "default", + "comment", + "column-order", + "collation", + "index", + "foreign-key", + "table-options", + "unaffected-table" + ] + } + }, + { + "id": "final_verification_failure", + "setup": "all expected table ALTERs finished but one final catalog/check/enforcement read fails or mismatches", + "required_observation": { + "writers_stay_fenced": true, + "target_ledger_and_marker_advance_count": 0, + "missing_information_is_success": false + } + }, + { + "id": "lost_final_identity_commit", + "setup": "connection lost after the final marker/ledger transaction may have committed", + "required_observation": { + "readback_of_marker_ledger_complete_target_required": true, + "target_complete": "ordinary target verification; zero repeated ALTERs", + "fenced_incomplete": "resume only after exact catalog/ownership reconciliation", + "unknown_or_split_identity": "refuse" + } + }, + { + "id": "older_binary_refuses_target", + "setup": "use the prior supported source against the new target ownership/catalog", + "required_observation": { + "refusal_before_data_writes": true, + "automatic_downconversion": false + } + }, + { + "id": "mariadb_unchanged", + "setup": "recognized MariaDB with exact current catalog/marker", + "required_observation": { + "this_mysql_upgrade_step_count": 0, + "schema_version": 8, + "catalog_bytes_unchanged": true, + "new_mysql_patch_floor_applied": false + } + }, + { + "id": "invalid_json_refused_by_database", + "setup": "isolated source fixture attempts a malformed text write, independently of HTTP parser refusal", + "required_observation": { + "enforced_database_check_refuses": true, + "retained_original_value_unchanged": true, + "generic_setup_failure_is_validation_pass": false + }, + "parameters": { + "column_refs": [ + "activity_executions.retry_policy", + "activity_executions.parallel_group_path", + "activity_executions.activity_options", + "dw_poll_receipts.response", + "dw_task_completions.receipt", + "runtime_credentials.roles", + "runtime_credentials.claims", + "runtime_payload_completion_budgets.context", + "runtime_payload_completion_budgets.slots", + "runtime_payload_completion_budgets.objects", + "workflow_child_calls.retry_policy", + "workflow_child_calls.timeout_policy", + "workflow_child_calls.arguments", + "workflow_child_calls.metadata", + "workflow_commands.context", + "workflow_durable_stream_items.payload", + "workflow_durable_streams.metadata", + "workflow_history_events.payload", + "workflow_instances.visibility_labels", + "workflow_instances.memo", + "workflow_links.parallel_group_path", + "workflow_memos.value", + "workflow_memos.portable_value", + "workflow_messages.metadata", + "workflow_namespaces.external_payload_storage", + "workflow_run_lineage_entries.payload", + "workflow_run_summaries.visibility_labels", + "workflow_run_timeline_entries.payload", + "workflow_run_timer_entries.payload", + "workflow_run_waits.payload", + "workflow_runs.visibility_labels", + "workflow_schedule_history_events.payload", + "workflow_schedules.spec", + "workflow_schedules.action", + "workflow_schedules.memo", + "workflow_schedules.search_attributes", + "workflow_schedules.visibility_labels", + "workflow_schedules.recent_actions", + "workflow_schedules.buffered_actions", + "workflow_search_attributes.value_keyword_list", + "workflow_service_calls.deadline_policy", + "workflow_service_calls.idempotency_policy", + "workflow_service_calls.cancellation_policy", + "workflow_service_calls.retry_policy", + "workflow_service_calls.boundary_policy", + "workflow_service_calls.metadata", + "workflow_service_calls.outcome_metadata", + "workflow_service_calls.caller_principal_roles", + "workflow_service_calls.caller_principal_claims", + "workflow_service_endpoints.boundary_policy", + "workflow_service_endpoints.metadata", + "workflow_service_operations.handler_binding", + "workflow_service_operations.deadline_policy", + "workflow_service_operations.idempotency_policy", + "workflow_service_operations.cancellation_policy", + "workflow_service_operations.retry_policy", + "workflow_service_operations.boundary_policy", + "workflow_service_operations.metadata", + "workflow_services.boundary_policy", + "workflow_services.metadata", + "workflow_signal_records.validation_errors", + "workflow_tasks.payload", + "workflow_update_validation_tasks.command_context", + "workflow_update_validation_tasks.validation_errors", + "workflow_updates.validation_errors", + "workflow_worker_build_id_rollouts.workflow_types", + "workflow_worker_compatibility_heartbeats.supported", + "workflow_worker_registrations.supported_workflow_types", + "workflow_worker_registrations.workflow_definition_fingerprints", + "workflow_worker_registrations.workflow_command_contracts", + "workflow_worker_registrations.supported_activity_types", + "workflow_worker_registrations.capabilities", + "workflow_worker_registrations.capability_manifest", + "workflow_worker_registrations.process_metrics", + "workflow_worker_sessions.requirements" + ], + "raw_texts": [ + "{", + "{\"x\":NaN}", + "{\"x\":}" + ] + } + }, + { + "id": "sql_null_and_json_null_distinct", + "setup": "use the actual source binder and database readback", + "required_observation": { + "sql_null": "accepted on exactly 67 nullable columns; refused on eight NOT NULL columns", + "json_null_text": "valid JSON document distinct from SQL NULL", + "default_and_comment_contracts_preserved": true + }, + "parameters": { + "column_refs": [ + "activity_executions.retry_policy", + "activity_executions.parallel_group_path", + "activity_executions.activity_options", + "dw_poll_receipts.response", + "dw_task_completions.receipt", + "runtime_credentials.roles", + "runtime_credentials.claims", + "runtime_payload_completion_budgets.context", + "runtime_payload_completion_budgets.slots", + "runtime_payload_completion_budgets.objects", + "workflow_child_calls.retry_policy", + "workflow_child_calls.timeout_policy", + "workflow_child_calls.arguments", + "workflow_child_calls.metadata", + "workflow_commands.context", + "workflow_durable_stream_items.payload", + "workflow_durable_streams.metadata", + "workflow_history_events.payload", + "workflow_instances.visibility_labels", + "workflow_instances.memo", + "workflow_links.parallel_group_path", + "workflow_memos.value", + "workflow_memos.portable_value", + "workflow_messages.metadata", + "workflow_namespaces.external_payload_storage", + "workflow_run_lineage_entries.payload", + "workflow_run_summaries.visibility_labels", + "workflow_run_timeline_entries.payload", + "workflow_run_timer_entries.payload", + "workflow_run_waits.payload", + "workflow_runs.visibility_labels", + "workflow_schedule_history_events.payload", + "workflow_schedules.spec", + "workflow_schedules.action", + "workflow_schedules.memo", + "workflow_schedules.search_attributes", + "workflow_schedules.visibility_labels", + "workflow_schedules.recent_actions", + "workflow_schedules.buffered_actions", + "workflow_search_attributes.value_keyword_list", + "workflow_service_calls.deadline_policy", + "workflow_service_calls.idempotency_policy", + "workflow_service_calls.cancellation_policy", + "workflow_service_calls.retry_policy", + "workflow_service_calls.boundary_policy", + "workflow_service_calls.metadata", + "workflow_service_calls.outcome_metadata", + "workflow_service_calls.caller_principal_roles", + "workflow_service_calls.caller_principal_claims", + "workflow_service_endpoints.boundary_policy", + "workflow_service_endpoints.metadata", + "workflow_service_operations.handler_binding", + "workflow_service_operations.deadline_policy", + "workflow_service_operations.idempotency_policy", + "workflow_service_operations.cancellation_policy", + "workflow_service_operations.retry_policy", + "workflow_service_operations.boundary_policy", + "workflow_service_operations.metadata", + "workflow_services.boundary_policy", + "workflow_services.metadata", + "workflow_signal_records.validation_errors", + "workflow_tasks.payload", + "workflow_update_validation_tasks.command_context", + "workflow_update_validation_tasks.validation_errors", + "workflow_updates.validation_errors", + "workflow_worker_build_id_rollouts.workflow_types", + "workflow_worker_compatibility_heartbeats.supported", + "workflow_worker_registrations.supported_workflow_types", + "workflow_worker_registrations.workflow_definition_fingerprints", + "workflow_worker_registrations.workflow_command_contracts", + "workflow_worker_registrations.supported_activity_types", + "workflow_worker_registrations.capabilities", + "workflow_worker_registrations.capability_manifest", + "workflow_worker_registrations.process_metrics", + "workflow_worker_sessions.requirements" + ] + } + }, + { + "id": "precision_new_write_read_paths", + "setup": "write through actual native application text/codec path after target adoption", + "required_observation": { + "application_produced_document_text_preserved_in_storage": true, + "binary64_and_int64_identity_preserved": true, + "mysql_json_numeric_projection_used_as_recovered_authority": false, + "all_required_readers_must_pass": true + }, + "parameters": { + "readers": [ + "direct-column", + "HTTP-history", + "activity-metadata", + "run-diagnostics", + "memo-and-search", + "continuation", + "immutable-task-and-poll-receipts", + "export/import", + "cold-replay" + ] + } + }, + { + "id": "legacy_rounded_rows_remain_honest", + "setup": "capture exactly what the old native JSON column currently returns before fenced upgrade", + "required_observation": { + "postupgrade_text_matches_that_legacy_representation": true, + "lost_original_digits_reconstructed": false, + "old_published_php_exception_removed": false + } + }, + { + "id": "bounded_reads_and_query_plans", + "setup": "execute exact existing bounded/index-led readers on selected target MySQL endpoints", + "required_observation": { + "history_and_metadata_byte_caps_preserved": true, + "plus_one_pages_and_scalar_limits_preserved": true, + "index_led_namespace_and_identity_predicates_preserved": true, + "query_site_source_inventory_is_backend_pass": false + } + }, + { + "id": "rollback_boundary", + "setup": "stop before cutover, then separately consider new target writes", + "required_observation": { + "before_new_writes": "only separately admitted verified quiescent pre-upgrade restore", + "after_new_writes": "qualified compatible target binary or forward repair", + "preupgrade_restore_after_cutover": "separate disaster-recovery and post-cutover reconciliation/RPO decision", + "lossy_downconversion_or_auto_restore": false + } + }, + { + "id": "native_exception_retirement", + "setup": "successful exact source and selected endpoint qualification after implementation", + "required_observation": { + "native_mysql_json_doubles_exception": "remove only for exact newly qualified native subject", + "published_php_exception": "retain", + "frozen_or_older_native_artifact_carry": false + } + } + ], + "numeric_cases": [ + { + "id": "reported_ulp_case_1", + "raw_json_document": "{\"x\":1.4820142857142857}", + "expected_binary64_x_big_endian_hex": "3ff7b6549c959001", + "required": "actual application-produced numeric text and typed binary64 readback; JSON_VALID parser refusal is a source/product failure to resolve, never a skipped pass" + }, + { + "id": "reported_ulp_case_2", + "raw_json_document": "{\"x\":124435.71428571429}", + "expected_binary64_x_big_endian_hex": "40fe613b6db6db6e", + "required": "actual application-produced numeric text and typed binary64 readback; JSON_VALID parser refusal is a source/product failure to resolve, never a skipped pass" + }, + { + "id": "negative_zero", + "raw_json_document": "{\"x\":-0.0}", + "expected_binary64_x_big_endian_hex": "8000000000000000", + "required": "actual application-produced numeric text and typed binary64 readback; JSON_VALID parser refusal is a source/product failure to resolve, never a skipped pass" + }, + { + "id": "smallest_positive_binary64", + "raw_json_document": "{\"x\":5e-324}", + "expected_binary64_x_big_endian_hex": "0000000000000001", + "required": "actual application-produced numeric text and typed binary64 readback; JSON_VALID parser refusal is a source/product failure to resolve, never a skipped pass" + }, + { + "id": "largest_finite_binary64", + "raw_json_document": "{\"x\":1.7976931348623157e308}", + "expected_binary64_x_big_endian_hex": "7fefffffffffffff", + "required": "actual application-produced numeric text and typed binary64 readback; JSON_VALID parser refusal is a source/product failure to resolve, never a skipped pass" + }, + { + "id": "signed_int64_min", + "raw_json_document": "{\"x\":-9223372036854775808}", + "expected_signed_int64_x_decimal": "-9223372036854775808" + }, + { + "id": "signed_int64_max", + "raw_json_document": "{\"x\":9223372036854775807}", + "expected_signed_int64_x_decimal": "9223372036854775807" + } + ], + "existing_float_authority": { + "path": "tests/Fixtures/ServerParity/json-doubles.json", + "sha256": "997dfc9058be312e698fbd56724341b7cdb8ecf94094cbb75e19587628650f07", + "mutated": false + }, + "remaining_gates": [ + "actual bootstrap/flavor/version/catalog/resume/query implementation", + "independent exact source review and typed-refusal bindings", + "selected backend/endpoint and capacity/deadline/cleanup admission", + "all actual source/backend/read/export/replay controls; no data-integrity substitution" + ] +}