<?php
require __DIR__.'/../execute.php';
function f27r_reference(){return json_decode(<<<'F27R_JSON'
{
  "status": "ROOT_APPROVAL_REQUIRED_B_TAIL_ONLY",
  "source_plan_sha256": "d79532c0ffd0032a8369ff7c143b230e600a389020bef97d0e310b3411d6568d",
  "source_execute_sha256": "53414d2ecc6eacbd16f65e4251e0a32db0bbd013d31c513cecbae4cd493a8af6",
  "source_core_sha256": "c4e7e71840e70432f2cfa54823225e02620096d9338beb79e98cda2801fe4123",
  "source_raw_sha256": "6b6489fbadd049abd3f906d228a371efc3e13721f7c7e1aee01b2d9f9ef817e3",
  "source_raw_path": "/tmp/cdx-prepay-full27-B-20261011/events.jsonl",
  "source_cursor_retained": 105,
  "source_completed_prefix": 106,
  "source_actual_counts": {
    "read": 86,
    "DML": 19,
    "DDL": 1
  },
  "runtime": "/tmp/cdx-prepay-full27-B-tail-recovery-20261011",
  "budget": {
    "read": 19,
    "DML": 0,
    "DDL": 1,
    "cumulative_read": 105,
    "cumulative_DML": 19,
    "cumulative_DDL": 2
  },
  "steps": [
    {
      "ordinal": 1,
      "kind": "read",
      "label": "fresh.identity",
      "role": "fresh_identity",
      "SQL": "SELECT VERSION() AS VERSION,DATABASE() AS DB,@@session.sql_mode AS SQL_MODE,@@session.time_zone AS TIME_ZONE,@@session.character_set_connection AS CONNECTION_CHARSET",
      "binds": [],
      "PDO_types": [],
      "read_query": "identity"
    },
    {
      "ordinal": 2,
      "kind": "read",
      "label": "fresh.snapshot",
      "role": "fresh_snapshot",
      "SQL": "SELECT T.*,CURRENT_TIMESTAMP(0) AS CLOCK0,CURRENT_TIMESTAMP(6) AS CLOCK6,DATE_FORMAT(EXPIRE_TIME,'%Y-%m-%d %H:%i:%s.%f') AS F_EXPIRE_TIME,DATE_FORMAT(PAY_TIME,'%Y-%m-%d %H:%i:%s.%f') AS F_PAY_TIME,DATE_FORMAT(SHIP_TIME,'%Y-%m-%d %H:%i:%s.%f') AS F_SHIP_TIME,DATE_FORMAT(CREATE_TIME,'%Y-%m-%d %H:%i:%s.%f') AS F_CREATE_TIME,DATE_FORMAT(UPDATE_TIME,'%Y-%m-%d %H:%i:%s.%f') AS F_UPDATE_TIME FROM cdx_ppfull261011_s2 T ORDER BY ID",
      "binds": [],
      "PDO_types": [],
      "read_query": "snapshot"
    },
    {
      "ordinal": 3,
      "kind": "read",
      "label": "fresh.table",
      "role": "fresh_schema",
      "SQL": "SELECT TABLE_NAME,ENGINE,ROW_FORMAT,TABLE_COLLATION,CREATE_OPTIONS FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=?",
      "binds": [
        "cdx_ppfull261011_s2"
      ],
      "PDO_types": [
        2
      ],
      "read_query": "table"
    },
    {
      "ordinal": 4,
      "kind": "read",
      "label": "fresh.columns",
      "role": "fresh_schema",
      "SQL": "SELECT COLUMN_NAME,COLUMN_TYPE,IS_NULLABLE,COLUMN_DEFAULT,EXTRA,CHARACTER_SET_NAME,COLLATION_NAME,CHARACTER_MAXIMUM_LENGTH,CHARACTER_OCTET_LENGTH,DATETIME_PRECISION,ORDINAL_POSITION FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? ORDER BY ORDINAL_POSITION",
      "binds": [
        "cdx_ppfull261011_s2"
      ],
      "PDO_types": [
        2
      ],
      "read_query": "columns"
    },
    {
      "ordinal": 5,
      "kind": "read",
      "label": "fresh.indexes",
      "role": "fresh_schema",
      "SQL": "SELECT INDEX_NAME,NON_UNIQUE,COLUMN_NAME,SEQ_IN_INDEX,SUB_PART,COLLATION,INDEX_TYPE FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? ORDER BY INDEX_NAME,SEQ_IN_INDEX",
      "binds": [
        "cdx_ppfull261011_s2"
      ],
      "PDO_types": [
        2
      ],
      "read_query": "indexes"
    },
    {
      "ordinal": 6,
      "kind": "read",
      "label": "fresh.constraints",
      "role": "fresh_schema",
      "SQL": "SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA=DATABASE() AND (TABLE_NAME=? OR CONSTRAINT_NAME=?) ORDER BY TABLE_NAME,CONSTRAINT_NAME",
      "binds": [
        "cdx_ppfull261011_s2",
        "PK_cdx_ppfull261011_s2"
      ],
      "PDO_types": [
        2,
        2
      ],
      "read_query": "constraints"
    },
    {
      "ordinal": 7,
      "kind": "read",
      "label": "fresh.keys",
      "role": "fresh_schema",
      "SQL": "SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA=DATABASE() AND (TABLE_NAME=? OR REFERENCED_TABLE_NAME=?) ORDER BY TABLE_NAME,CONSTRAINT_NAME,ORDINAL_POSITION",
      "binds": [
        "cdx_ppfull261011_s2",
        "cdx_ppfull261011_s2"
      ],
      "PDO_types": [
        2,
        2
      ],
      "read_query": "keys"
    },
    {
      "ordinal": 8,
      "kind": "read",
      "label": "fresh.triggers",
      "role": "fresh_schema",
      "SQL": "SELECT * FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA=DATABASE() AND (EVENT_OBJECT_TABLE=? OR ACTION_STATEMENT LIKE ?) ORDER BY TRIGGER_NAME",
      "binds": [
        "cdx_ppfull261011_s2",
        "%cdx_ppfull261011_s2%"
      ],
      "PDO_types": [
        2,
        2
      ],
      "read_query": "triggers"
    },
    {
      "ordinal": 9,
      "kind": "read",
      "label": "fresh.views",
      "role": "fresh_schema",
      "SQL": "SELECT TABLE_NAME,VIEW_DEFINITION FROM information_schema.VIEWS WHERE TABLE_SCHEMA=DATABASE() AND VIEW_DEFINITION LIKE ? ORDER BY TABLE_NAME",
      "binds": [
        "%cdx_ppfull261011_s2%"
      ],
      "PDO_types": [
        2
      ],
      "read_query": "views"
    },
    {
      "ordinal": 10,
      "kind": "read",
      "label": "fresh.routines",
      "role": "fresh_schema",
      "SQL": "SELECT ROUTINE_NAME,ROUTINE_TYPE,ROUTINE_DEFINITION FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA=DATABASE() AND ROUTINE_DEFINITION LIKE ? ORDER BY ROUTINE_NAME,ROUTINE_TYPE",
      "binds": [
        "%cdx_ppfull261011_s2%"
      ],
      "PDO_types": [
        2
      ],
      "read_query": "routines"
    },
    {
      "ordinal": 11,
      "kind": "read",
      "label": "fresh.ddl",
      "role": "fresh_schema",
      "SQL": "SHOW CREATE TABLE cdx_ppfull261011_s2",
      "binds": [],
      "PDO_types": [],
      "read_query": "ddl"
    },
    {
      "ordinal": 12,
      "kind": "DDL",
      "label": "drop_table",
      "role": "drop_table",
      "SQL": "DROP TABLE cdx_ppfull261011_s2",
      "binds": [],
      "PDO_types": [],
      "source_ordinal": 107
    },
    {
      "ordinal": 13,
      "kind": "read",
      "label": "drop_table.warnings",
      "role": "warnings",
      "SQL": "SHOW WARNINGS",
      "binds": [],
      "PDO_types": [],
      "read_query": "warnings",
      "source_ordinal": 108
    },
    {
      "ordinal": 14,
      "kind": "read",
      "label": "post.table",
      "role": "zero",
      "SQL": "SELECT TABLE_NAME,ENGINE,ROW_FORMAT,TABLE_COLLATION,CREATE_OPTIONS FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=?",
      "binds": [
        "cdx_ppfull261011_s2"
      ],
      "PDO_types": [
        2
      ],
      "read_query": "table",
      "source_ordinal": 109
    },
    {
      "ordinal": 15,
      "kind": "read",
      "label": "post.indexes",
      "role": "zero",
      "SQL": "SELECT INDEX_NAME,NON_UNIQUE,COLUMN_NAME,SEQ_IN_INDEX,SUB_PART,COLLATION,INDEX_TYPE FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? ORDER BY INDEX_NAME,SEQ_IN_INDEX",
      "binds": [
        "cdx_ppfull261011_s2"
      ],
      "PDO_types": [
        2
      ],
      "read_query": "indexes",
      "source_ordinal": 110
    },
    {
      "ordinal": 16,
      "kind": "read",
      "label": "post.constraints",
      "role": "zero",
      "SQL": "SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA=DATABASE() AND (TABLE_NAME=? OR CONSTRAINT_NAME=?) ORDER BY TABLE_NAME,CONSTRAINT_NAME",
      "binds": [
        "cdx_ppfull261011_s2",
        "PK_cdx_ppfull261011_s2"
      ],
      "PDO_types": [
        2,
        2
      ],
      "read_query": "constraints",
      "source_ordinal": 111
    },
    {
      "ordinal": 17,
      "kind": "read",
      "label": "post.keys",
      "role": "zero",
      "SQL": "SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA=DATABASE() AND (TABLE_NAME=? OR REFERENCED_TABLE_NAME=?) ORDER BY TABLE_NAME,CONSTRAINT_NAME,ORDINAL_POSITION",
      "binds": [
        "cdx_ppfull261011_s2",
        "cdx_ppfull261011_s2"
      ],
      "PDO_types": [
        2,
        2
      ],
      "read_query": "keys",
      "source_ordinal": 112
    },
    {
      "ordinal": 18,
      "kind": "read",
      "label": "post.triggers",
      "role": "zero",
      "SQL": "SELECT * FROM information_schema.TRIGGERS WHERE TRIGGER_SCHEMA=DATABASE() AND (EVENT_OBJECT_TABLE=? OR ACTION_STATEMENT LIKE ?) ORDER BY TRIGGER_NAME",
      "binds": [
        "cdx_ppfull261011_s2",
        "%cdx_ppfull261011_s2%"
      ],
      "PDO_types": [
        2,
        2
      ],
      "read_query": "triggers",
      "source_ordinal": 113
    },
    {
      "ordinal": 19,
      "kind": "read",
      "label": "post.views",
      "role": "zero",
      "SQL": "SELECT TABLE_NAME,VIEW_DEFINITION FROM information_schema.VIEWS WHERE TABLE_SCHEMA=DATABASE() AND VIEW_DEFINITION LIKE ? ORDER BY TABLE_NAME",
      "binds": [
        "%cdx_ppfull261011_s2%"
      ],
      "PDO_types": [
        2
      ],
      "read_query": "views",
      "source_ordinal": 114
    },
    {
      "ordinal": 20,
      "kind": "read",
      "label": "post.routines",
      "role": "zero",
      "SQL": "SELECT ROUTINE_NAME,ROUTINE_TYPE,ROUTINE_DEFINITION FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA=DATABASE() AND ROUTINE_DEFINITION LIKE ? ORDER BY ROUTINE_NAME,ROUTINE_TYPE",
      "binds": [
        "%cdx_ppfull261011_s2%"
      ],
      "PDO_types": [
        2
      ],
      "read_query": "routines",
      "source_ordinal": 115
    }
  ]
}
F27R_JSON
,true);}
function f27r_gate($p){f27_assert($p===f27r_reference(),'Exact B tail literal source hash/budget/SQL/bind/type');$n=['read'=>0,'DML'=>0,'DDL'=>0];foreach($p['steps']as $i=>$s){f27_assert($s['ordinal']===$i+1&&isset($n[$s['kind']]),'Exact known order');$n[$s['kind']]++;f27_assert(substr_count($s['SQL'],'?')===count($s['binds'])&&count($s['binds'])===count($s['PDO_types']),'Exact typed arity');}f27_assert($n===['read'=>19,'DML'=>0,'DDL'=>1],'Only19read/1DROP no DML');return $n;}
function f27r_compare($created,$cleanup,$p){f27_schema($created,$p,false);f27_schema($cleanup,$p,false);$a=f27_fingerprint($created,$p);$b=f27_fingerprint($cleanup,$p);$old=$created['ddl'][0]['create table'];$new=$cleanup['ddl'][0]['create table'];f27_assert(strpos($old,' AUTO_INCREMENT=')===false&&substr_count($new,') ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=')===1,'Only known generated nextID2 from explicit ID1');f27_assert(str_replace(') ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=',') ENGINE=InnoDB DEFAULT CHARSET=',$new)===$old,'Every full DDL byte except exact known generated option');unset($a['ddl'],$b['ddl']);f27_assert($a===$b,'Every other original metadata byte exact');return true;}
function f27r_source($r,$p){f27_assert(hash_file('sha256',$r['source_raw_path'])===$r['source_raw_sha256'],'Preserved original stopped raw SHA');$h=fopen($r['source_raw_path'],'r');$sent=[];$results=[];$meta=[];$row=null;$identity=null;$writes=[];$outcomes=[];$last=null;while(($line=fgets($h))!==false){$e=json_decode($line,true);f27_assert(is_array($e),'Original line JSON');$last=$e;if($e['event']==='append-before')$sent[]=$e['statement'];elseif($e['event']==='original-read-result'){$results[]=$e['statement'];if(in_array($e['statement']['role'],['created_schema','cleanup_schema'],true))$meta[$e['statement']['role']][$e['statement']['read_query']]=$e['rows'];if($e['statement']['role']==='cleanup_snapshot')$row=$e;if($e['statement']['role']==='identity')$identity=$e['rows'];}elseif($e['event']==='original-write-result'){$writes[]=$e['statement'];$results[]=$e['statement'];}elseif($e['event']==='protected-outcome')$outcomes[]=$e;}fclose($h);f27_assert($sent===array_slice($p['steps'],0,106)&&$results===$sent,'Exact completed106 ordinal prefix, no hidden/replayed/unknown result');f27_assert(count($writes)===20&&count($outcomes)===19&&$last['event']==='stopped_no_retry_no_automatic_cleanup'&&$last['state']['cursor']===105&&$last['state']['read']===86&&$last['state']['DML']===19&&$last['state']['DDL']===1&&$last['state']['created']===true,'Original successful CREATE+19DML preserved; failed cursor not rewritten');f27r_compare($meta['created_schema'],$meta['cleanup_schema'],$p);f27_assert($row!==null&&$identity!==null,'Original exact cleanup row/identity');return ['meta'=>$meta,'row'=>$row,'identity'=>$identity];}
