meerkat-machine-schema 0.5.0

Formal machine schemas and transition definitions for Meerkat
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
use indexmap::IndexMap;

use crate::{
    EffectDisposition, EffectDispositionRule, EffectEmit, EnumSchema, Expr, FieldInit, FieldSchema,
    Guard, HelperSchema, InitSchema, InputMatch, InvariantSchema, MachineSchema, Quantifier,
    RustBinding, StateSchema, TransitionSchema, TypeRef, Update, VariantSchema,
};

pub fn external_tool_surface_machine() -> MachineSchema {
    MachineSchema {
        machine: "ExternalToolSurfaceMachine".into(),
        version: 2,
        rust: RustBinding {
            crate_name: "meerkat-mcp".into(),
            module: "generated::external_tool_surface".into(),
        },
        state: StateSchema {
            phase: EnumSchema {
                name: "ExternalToolSurfacePhase".into(),
                variants: vec![variant("Operating"), variant("Shutdown")],
            },
            fields: vec![
                field("known_surfaces", TypeRef::Set(Box::new(named("SurfaceId")))),
                field(
                    "visible_surfaces",
                    TypeRef::Set(Box::new(named("SurfaceId"))),
                ),
                field(
                    "base_state",
                    TypeRef::Map(
                        Box::new(named("SurfaceId")),
                        Box::new(named("SurfaceBaseState")),
                    ),
                ),
                field(
                    "pending_op",
                    TypeRef::Map(
                        Box::new(named("SurfaceId")),
                        Box::new(named("PendingSurfaceOp")),
                    ),
                ),
                field(
                    "staged_op",
                    TypeRef::Map(
                        Box::new(named("SurfaceId")),
                        Box::new(named("StagedSurfaceOp")),
                    ),
                ),
                field(
                    "staged_intent_sequence",
                    TypeRef::Map(Box::new(named("SurfaceId")), Box::new(TypeRef::U64)),
                ),
                field("next_staged_intent_sequence", TypeRef::U64),
                field(
                    "pending_task_sequence",
                    TypeRef::Map(Box::new(named("SurfaceId")), Box::new(TypeRef::U64)),
                ),
                field(
                    "pending_lineage_sequence",
                    TypeRef::Map(Box::new(named("SurfaceId")), Box::new(TypeRef::U64)),
                ),
                field("next_pending_task_sequence", TypeRef::U64),
                field(
                    "inflight_calls",
                    TypeRef::Map(Box::new(named("SurfaceId")), Box::new(TypeRef::U64)),
                ),
                field(
                    "last_delta_operation",
                    TypeRef::Map(
                        Box::new(named("SurfaceId")),
                        Box::new(named("SurfaceDeltaOperation")),
                    ),
                ),
                field(
                    "last_delta_phase",
                    TypeRef::Map(
                        Box::new(named("SurfaceId")),
                        Box::new(named("SurfaceDeltaPhase")),
                    ),
                ),
                field("snapshot_epoch", TypeRef::U64),
                field("snapshot_aligned_epoch", TypeRef::U64),
            ],
            init: InitSchema {
                phase: "Operating".into(),
                fields: vec![
                    init("known_surfaces", Expr::EmptySet),
                    init("visible_surfaces", Expr::EmptySet),
                    init("base_state", Expr::EmptyMap),
                    init("pending_op", Expr::EmptyMap),
                    init("staged_op", Expr::EmptyMap),
                    init("staged_intent_sequence", Expr::EmptyMap),
                    init("next_staged_intent_sequence", Expr::U64(1)),
                    init("pending_task_sequence", Expr::EmptyMap),
                    init("pending_lineage_sequence", Expr::EmptyMap),
                    init("next_pending_task_sequence", Expr::U64(1)),
                    init("inflight_calls", Expr::EmptyMap),
                    init("last_delta_operation", Expr::EmptyMap),
                    init("last_delta_phase", Expr::EmptyMap),
                    init("snapshot_epoch", Expr::U64(0)),
                    init("snapshot_aligned_epoch", Expr::U64(0)),
                ],
            },
            terminal_phases: vec!["Shutdown".into()],
        },
        inputs: EnumSchema {
            name: "ExternalToolSurfaceInput".into(),
            variants: vec![
                VariantSchema {
                    name: "StageAdd".into(),
                    fields: vec![field("surface_id", named("SurfaceId"))],
                },
                VariantSchema {
                    name: "StageRemove".into(),
                    fields: vec![field("surface_id", named("SurfaceId"))],
                },
                VariantSchema {
                    name: "StageReload".into(),
                    fields: vec![field("surface_id", named("SurfaceId"))],
                },
                VariantSchema {
                    name: "ApplyBoundary".into(),
                    fields: vec![
                        field("surface_id", named("SurfaceId")),
                        field("applied_at_turn", named("TurnNumber")),
                    ],
                },
                VariantSchema {
                    name: "PendingSucceeded".into(),
                    fields: vec![
                        field("surface_id", named("SurfaceId")),
                        field("operation", named("SurfaceDeltaOperation")),
                        field("pending_task_sequence", TypeRef::U64),
                        field("staged_intent_sequence", TypeRef::U64),
                        field("applied_at_turn", named("TurnNumber")),
                    ],
                },
                VariantSchema {
                    name: "PendingFailed".into(),
                    fields: vec![
                        field("surface_id", named("SurfaceId")),
                        field("operation", named("SurfaceDeltaOperation")),
                        field("pending_task_sequence", TypeRef::U64),
                        field("staged_intent_sequence", TypeRef::U64),
                        field("applied_at_turn", named("TurnNumber")),
                    ],
                },
                VariantSchema {
                    name: "CallStarted".into(),
                    fields: vec![field("surface_id", named("SurfaceId"))],
                },
                VariantSchema {
                    name: "CallFinished".into(),
                    fields: vec![field("surface_id", named("SurfaceId"))],
                },
                VariantSchema {
                    name: "FinalizeRemovalClean".into(),
                    fields: vec![
                        field("surface_id", named("SurfaceId")),
                        field("applied_at_turn", named("TurnNumber")),
                    ],
                },
                VariantSchema {
                    name: "FinalizeRemovalForced".into(),
                    fields: vec![
                        field("surface_id", named("SurfaceId")),
                        field("applied_at_turn", named("TurnNumber")),
                    ],
                },
                VariantSchema {
                    name: "SnapshotAligned".into(),
                    fields: vec![field("snapshot_epoch", TypeRef::U64)],
                },
                variant("Shutdown"),
            ],
        },
        effects: EnumSchema {
            name: "ExternalToolSurfaceEffect".into(),
            variants: vec![
                VariantSchema {
                    name: "ScheduleSurfaceCompletion".into(),
                    fields: vec![
                        field("surface_id", named("SurfaceId")),
                        field("operation", named("SurfaceDeltaOperation")),
                        field("pending_task_sequence", TypeRef::U64),
                        field("staged_intent_sequence", TypeRef::U64),
                        field("applied_at_turn", named("TurnNumber")),
                    ],
                },
                VariantSchema {
                    name: "RefreshVisibleSurfaceSet".into(),
                    fields: vec![field("snapshot_epoch", TypeRef::U64)],
                },
                VariantSchema {
                    name: "EmitExternalToolDelta".into(),
                    fields: vec![
                        field("surface_id", named("SurfaceId")),
                        field("operation", named("SurfaceDeltaOperation")),
                        field("phase", named("SurfaceDeltaPhase")),
                        field("persisted", TypeRef::Bool),
                        field("applied_at_turn", named("TurnNumber")),
                    ],
                },
                VariantSchema {
                    name: "CloseSurfaceConnection".into(),
                    fields: vec![field("surface_id", named("SurfaceId"))],
                },
                VariantSchema {
                    name: "RejectSurfaceCall".into(),
                    fields: vec![
                        field("surface_id", named("SurfaceId")),
                        field("reason", TypeRef::String),
                    ],
                },
            ],
        },
        helpers: vec![
            lookup_string_helper("SurfaceBase", "base_state", "Absent", "SurfaceBaseState"),
            lookup_string_helper("PendingOp", "pending_op", "None", "PendingSurfaceOp"),
            lookup_string_helper("StagedOp", "staged_op", "None", "StagedSurfaceOp"),
            lookup_u64_helper("StagedIntentSequence", "staged_intent_sequence"),
            lookup_u64_helper("PendingTaskSequence", "pending_task_sequence"),
            lookup_u64_helper("PendingLineageSequence", "pending_lineage_sequence"),
            lookup_u64_helper("InflightCallCount", "inflight_calls"),
            lookup_string_helper(
                "LastDeltaOperation",
                "last_delta_operation",
                "None",
                "SurfaceDeltaOperation",
            ),
            lookup_string_helper(
                "LastDeltaPhase",
                "last_delta_phase",
                "None",
                "SurfaceDeltaPhase",
            ),
            HelperSchema {
                name: "IsVisible".into(),
                params: vec![field("surface_id", named("SurfaceId"))],
                returns: TypeRef::Bool,
                body: Expr::Contains {
                    collection: Box::new(Expr::Field("visible_surfaces".into())),
                    value: Box::new(binding("surface_id")),
                },
            },
        ],
        derived: vec![],
        invariants: vec![
            set_subset_known_invariant(
                "visible_surfaces_subset_of_known_surfaces",
                "visible_surfaces",
            ),
            map_keys_subset_known_invariant(
                "base_state_keys_subset_of_known_surfaces",
                "base_state",
            ),
            map_keys_subset_known_invariant(
                "pending_op_keys_subset_of_known_surfaces",
                "pending_op",
            ),
            map_keys_subset_known_invariant("staged_op_keys_subset_of_known_surfaces", "staged_op"),
            map_keys_subset_known_invariant(
                "staged_intent_sequence_keys_subset_of_known_surfaces",
                "staged_intent_sequence",
            ),
            map_keys_subset_known_invariant(
                "pending_task_sequence_keys_subset_of_known_surfaces",
                "pending_task_sequence",
            ),
            map_keys_subset_known_invariant(
                "pending_lineage_sequence_keys_subset_of_known_surfaces",
                "pending_lineage_sequence",
            ),
            map_keys_subset_known_invariant(
                "inflight_calls_keys_subset_of_known_surfaces",
                "inflight_calls",
            ),
            map_keys_subset_known_invariant(
                "last_delta_operation_keys_subset_of_known_surfaces",
                "last_delta_operation",
            ),
            map_keys_subset_known_invariant(
                "last_delta_phase_keys_subset_of_known_surfaces",
                "last_delta_phase",
            ),
            quantified_surface_invariant(
                "removing_or_removed_surfaces_are_not_visible",
                Expr::Or(vec![
                    Expr::And(vec![
                        eq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Removing"),
                        ),
                        Expr::Not(Box::new(call("IsVisible", vec![binding("surface_id")]))),
                    ]),
                    Expr::And(vec![
                        eq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Removed"),
                        ),
                        Expr::Not(Box::new(call("IsVisible", vec![binding("surface_id")]))),
                    ]),
                    Expr::And(vec![
                        neq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Removing"),
                        ),
                        neq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Removed"),
                        ),
                    ]),
                ]),
            ),
            quantified_surface_invariant(
                "visible_membership_matches_active_base_state",
                eq(
                    call("IsVisible", vec![binding("surface_id")]),
                    eq(
                        call("SurfaceBase", vec![binding("surface_id")]),
                        string("Active"),
                    ),
                ),
            ),
            quantified_surface_invariant(
                "removing_surfaces_have_no_pending_add_or_reload",
                Expr::Or(vec![
                    neq(
                        call("SurfaceBase", vec![binding("surface_id")]),
                        string("Removing"),
                    ),
                    eq(
                        call("PendingOp", vec![binding("surface_id")]),
                        string("None"),
                    ),
                ]),
            ),
            quantified_surface_invariant(
                "removed_surfaces_only_allow_pending_none_or_add",
                Expr::Or(vec![
                    neq(
                        call("SurfaceBase", vec![binding("surface_id")]),
                        string("Removed"),
                    ),
                    Expr::Or(vec![
                        eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            string("None"),
                        ),
                        eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            string("Add"),
                        ),
                    ]),
                ]),
            ),
            quantified_surface_invariant(
                "inflight_calls_only_exist_for_active_or_removing_surfaces",
                Expr::Or(vec![
                    eq(
                        call("InflightCallCount", vec![binding("surface_id")]),
                        Expr::U64(0),
                    ),
                    Expr::Or(vec![
                        eq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Active"),
                        ),
                        eq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Removing"),
                        ),
                    ]),
                ]),
            ),
            quantified_surface_invariant(
                "reload_pending_requires_active_base_state",
                Expr::Or(vec![
                    neq(
                        call("PendingOp", vec![binding("surface_id")]),
                        string("Reload"),
                    ),
                    eq(
                        call("SurfaceBase", vec![binding("surface_id")]),
                        string("Active"),
                    ),
                ]),
            ),
            quantified_surface_invariant(
                "removed_surfaces_have_zero_inflight_calls",
                Expr::Or(vec![
                    neq(
                        call("SurfaceBase", vec![binding("surface_id")]),
                        string("Removed"),
                    ),
                    eq(
                        call("InflightCallCount", vec![binding("surface_id")]),
                        Expr::U64(0),
                    ),
                ]),
            ),
            quantified_surface_invariant(
                "forced_delta_phase_is_always_a_remove_delta",
                Expr::Or(vec![
                    neq(
                        call("LastDeltaPhase", vec![binding("surface_id")]),
                        string("Forced"),
                    ),
                    eq(
                        call("LastDeltaOperation", vec![binding("surface_id")]),
                        string("Remove"),
                    ),
                ]),
            ),
            quantified_surface_invariant(
                "staged_sequence_matches_staged_presence",
                Expr::Or(vec![
                    Expr::And(vec![
                        eq(
                            call("StagedOp", vec![binding("surface_id")]),
                            string("None"),
                        ),
                        eq(
                            call("StagedIntentSequence", vec![binding("surface_id")]),
                            Expr::U64(0),
                        ),
                    ]),
                    Expr::And(vec![
                        neq(
                            call("StagedOp", vec![binding("surface_id")]),
                            string("None"),
                        ),
                        Expr::Gt(
                            Box::new(call("StagedIntentSequence", vec![binding("surface_id")])),
                            Box::new(Expr::U64(0)),
                        ),
                    ]),
                ]),
            ),
            quantified_surface_invariant(
                "pending_lineage_matches_pending_presence",
                Expr::Or(vec![
                    Expr::And(vec![
                        eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            string("None"),
                        ),
                        eq(
                            call("PendingTaskSequence", vec![binding("surface_id")]),
                            Expr::U64(0),
                        ),
                        eq(
                            call("PendingLineageSequence", vec![binding("surface_id")]),
                            Expr::U64(0),
                        ),
                    ]),
                    Expr::And(vec![
                        neq(
                            call("PendingOp", vec![binding("surface_id")]),
                            string("None"),
                        ),
                        Expr::Gt(
                            Box::new(call("PendingTaskSequence", vec![binding("surface_id")])),
                            Box::new(Expr::U64(0)),
                        ),
                        Expr::Gt(
                            Box::new(call("PendingLineageSequence", vec![binding("surface_id")])),
                            Box::new(Expr::U64(0)),
                        ),
                    ]),
                ]),
            ),
            InvariantSchema {
                name: "snapshot_alignment_epoch_not_ahead".into(),
                expr: Expr::Lte(
                    Box::new(Expr::Field("snapshot_aligned_epoch".into())),
                    Box::new(Expr::Field("snapshot_epoch".into())),
                ),
            },
        ],
        transitions: vec![
            stage_transition("StageAdd", "Add"),
            stage_transition("StageRemove", "Remove"),
            TransitionSchema {
                name: "StageReload".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "StageReload".into(),
                    bindings: vec!["surface_id".into()],
                },
                guards: vec![Guard {
                    name: "surface_is_active".into(),
                    expr: eq(
                        call("SurfaceBase", vec![binding("surface_id")]),
                        string("Active"),
                    ),
                }],
                updates: vec![
                    track_surface("surface_id"),
                    Update::MapInsert {
                        field: "staged_op".into(),
                        key: binding("surface_id"),
                        value: string("Reload"),
                    },
                    set_map(
                        "staged_intent_sequence",
                        "surface_id",
                        Expr::Field("next_staged_intent_sequence".into()),
                    ),
                    Update::Assign {
                        field: "next_staged_intent_sequence".into(),
                        expr: Expr::Add(
                            Box::new(Expr::Field("next_staged_intent_sequence".into())),
                            Box::new(Expr::U64(1)),
                        ),
                    },
                ],
                to: "Operating".into(),
                emit: vec![],
            },
            TransitionSchema {
                name: "ApplyBoundaryAdd".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "ApplyBoundary".into(),
                    bindings: vec!["surface_id".into(), "applied_at_turn".into()],
                },
                guards: vec![
                    Guard {
                        name: "staged_add_present".into(),
                        expr: eq(call("StagedOp", vec![binding("surface_id")]), string("Add")),
                    },
                    Guard {
                        name: "no_pending_operation".into(),
                        expr: eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            string("None"),
                        ),
                    },
                    Guard {
                        name: "base_state_accepts_add".into(),
                        expr: Expr::Or(vec![
                            eq(
                                call("SurfaceBase", vec![binding("surface_id")]),
                                string("Absent"),
                            ),
                            eq(
                                call("SurfaceBase", vec![binding("surface_id")]),
                                string("Active"),
                            ),
                            eq(
                                call("SurfaceBase", vec![binding("surface_id")]),
                                string("Removed"),
                            ),
                        ]),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map("pending_op", "surface_id", string("Add")),
                    set_map(
                        "pending_task_sequence",
                        "surface_id",
                        Expr::Field("next_pending_task_sequence".into()),
                    ),
                    set_map(
                        "pending_lineage_sequence",
                        "surface_id",
                        call("StagedIntentSequence", vec![binding("surface_id")]),
                    ),
                    set_map("staged_op", "surface_id", string("None")),
                    set_map("staged_intent_sequence", "surface_id", Expr::U64(0)),
                    set_map("last_delta_operation", "surface_id", string("Add")),
                    set_map("last_delta_phase", "surface_id", string("Pending")),
                    Update::Assign {
                        field: "next_pending_task_sequence".into(),
                        expr: Expr::Add(
                            Box::new(Expr::Field("next_pending_task_sequence".into())),
                            Box::new(Expr::U64(1)),
                        ),
                    },
                ],
                to: "Operating".into(),
                emit: vec![
                    schedule_completion("surface_id", "Add"),
                    emit_delta("surface_id", "Add", "Pending", false),
                ],
            },
            TransitionSchema {
                name: "ApplyBoundaryReload".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "ApplyBoundary".into(),
                    bindings: vec!["surface_id".into(), "applied_at_turn".into()],
                },
                guards: vec![
                    Guard {
                        name: "staged_reload_present".into(),
                        expr: eq(
                            call("StagedOp", vec![binding("surface_id")]),
                            string("Reload"),
                        ),
                    },
                    Guard {
                        name: "no_pending_operation".into(),
                        expr: eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            string("None"),
                        ),
                    },
                    Guard {
                        name: "reload_requires_active_base".into(),
                        expr: eq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Active"),
                        ),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map("pending_op", "surface_id", string("Reload")),
                    set_map(
                        "pending_task_sequence",
                        "surface_id",
                        Expr::Field("next_pending_task_sequence".into()),
                    ),
                    set_map(
                        "pending_lineage_sequence",
                        "surface_id",
                        call("StagedIntentSequence", vec![binding("surface_id")]),
                    ),
                    set_map("staged_op", "surface_id", string("None")),
                    set_map("staged_intent_sequence", "surface_id", Expr::U64(0)),
                    set_map("last_delta_operation", "surface_id", string("Reload")),
                    set_map("last_delta_phase", "surface_id", string("Pending")),
                    Update::Assign {
                        field: "next_pending_task_sequence".into(),
                        expr: Expr::Add(
                            Box::new(Expr::Field("next_pending_task_sequence".into())),
                            Box::new(Expr::U64(1)),
                        ),
                    },
                ],
                to: "Operating".into(),
                emit: vec![
                    schedule_completion("surface_id", "Reload"),
                    emit_delta("surface_id", "Reload", "Pending", false),
                ],
            },
            TransitionSchema {
                name: "ApplyBoundaryRemoveDraining".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "ApplyBoundary".into(),
                    bindings: vec!["surface_id".into(), "applied_at_turn".into()],
                },
                guards: vec![
                    Guard {
                        name: "staged_remove_present".into(),
                        expr: eq(
                            call("StagedOp", vec![binding("surface_id")]),
                            string("Remove"),
                        ),
                    },
                    Guard {
                        name: "no_pending_operation".into(),
                        expr: eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            string("None"),
                        ),
                    },
                    Guard {
                        name: "remove_begins_from_active".into(),
                        expr: eq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Active"),
                        ),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map("staged_op", "surface_id", string("None")),
                    set_map("staged_intent_sequence", "surface_id", Expr::U64(0)),
                    set_map("pending_op", "surface_id", string("None")),
                    set_map("pending_task_sequence", "surface_id", Expr::U64(0)),
                    set_map("pending_lineage_sequence", "surface_id", Expr::U64(0)),
                    set_map("base_state", "surface_id", string("Removing")),
                    set_map("last_delta_operation", "surface_id", string("Remove")),
                    set_map("last_delta_phase", "surface_id", string("Draining")),
                    advance_snapshot_epoch(),
                    Update::SetRemove {
                        field: "visible_surfaces".into(),
                        value: binding("surface_id"),
                    },
                ],
                to: "Operating".into(),
                emit: vec![
                    emit_snapshot_refresh(),
                    emit_delta("surface_id", "Remove", "Draining", false),
                ],
            },
            TransitionSchema {
                name: "ApplyBoundaryRemoveNoop".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "ApplyBoundary".into(),
                    bindings: vec!["surface_id".into(), "applied_at_turn".into()],
                },
                guards: vec![
                    Guard {
                        name: "staged_remove_present".into(),
                        expr: eq(
                            call("StagedOp", vec![binding("surface_id")]),
                            string("Remove"),
                        ),
                    },
                    Guard {
                        name: "no_pending_operation".into(),
                        expr: eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            string("None"),
                        ),
                    },
                    Guard {
                        name: "remove_not_starting_from_active".into(),
                        expr: neq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Active"),
                        ),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map("staged_op", "surface_id", string("None")),
                    set_map("staged_intent_sequence", "surface_id", Expr::U64(0)),
                    set_map("pending_op", "surface_id", string("None")),
                    set_map("pending_task_sequence", "surface_id", Expr::U64(0)),
                    set_map("pending_lineage_sequence", "surface_id", Expr::U64(0)),
                ],
                to: "Operating".into(),
                emit: vec![],
            },
            TransitionSchema {
                name: "PendingSucceededAdd".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "PendingSucceeded".into(),
                    bindings: vec![
                        "surface_id".into(),
                        "operation".into(),
                        "pending_task_sequence".into(),
                        "staged_intent_sequence".into(),
                        "applied_at_turn".into(),
                    ],
                },
                guards: vec![
                    Guard {
                        name: "operation_is_add".into(),
                        expr: eq(binding("operation"), string("Add")),
                    },
                    Guard {
                        name: "pending_operation_matches".into(),
                        expr: eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            binding("operation"),
                        ),
                    },
                    Guard {
                        name: "pending_task_sequence_matches".into(),
                        expr: eq(
                            call("PendingTaskSequence", vec![binding("surface_id")]),
                            binding("pending_task_sequence"),
                        ),
                    },
                    Guard {
                        name: "pending_lineage_sequence_matches".into(),
                        expr: eq(
                            call("PendingLineageSequence", vec![binding("surface_id")]),
                            binding("staged_intent_sequence"),
                        ),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map("pending_op", "surface_id", string("None")),
                    set_map("pending_task_sequence", "surface_id", Expr::U64(0)),
                    set_map("pending_lineage_sequence", "surface_id", Expr::U64(0)),
                    set_map("base_state", "surface_id", string("Active")),
                    set_map("last_delta_operation", "surface_id", string("Add")),
                    set_map("last_delta_phase", "surface_id", string("Applied")),
                    advance_snapshot_epoch(),
                    Update::SetInsert {
                        field: "visible_surfaces".into(),
                        value: binding("surface_id"),
                    },
                ],
                to: "Operating".into(),
                emit: vec![
                    emit_snapshot_refresh(),
                    emit_delta("surface_id", "Add", "Applied", true),
                ],
            },
            TransitionSchema {
                name: "PendingSucceededReload".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "PendingSucceeded".into(),
                    bindings: vec![
                        "surface_id".into(),
                        "operation".into(),
                        "pending_task_sequence".into(),
                        "staged_intent_sequence".into(),
                        "applied_at_turn".into(),
                    ],
                },
                guards: vec![
                    Guard {
                        name: "operation_is_reload".into(),
                        expr: eq(binding("operation"), string("Reload")),
                    },
                    Guard {
                        name: "pending_operation_matches".into(),
                        expr: eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            binding("operation"),
                        ),
                    },
                    Guard {
                        name: "pending_task_sequence_matches".into(),
                        expr: eq(
                            call("PendingTaskSequence", vec![binding("surface_id")]),
                            binding("pending_task_sequence"),
                        ),
                    },
                    Guard {
                        name: "pending_lineage_sequence_matches".into(),
                        expr: eq(
                            call("PendingLineageSequence", vec![binding("surface_id")]),
                            binding("staged_intent_sequence"),
                        ),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map("pending_op", "surface_id", string("None")),
                    set_map("pending_task_sequence", "surface_id", Expr::U64(0)),
                    set_map("pending_lineage_sequence", "surface_id", Expr::U64(0)),
                    set_map("base_state", "surface_id", string("Active")),
                    set_map("last_delta_operation", "surface_id", string("Reload")),
                    set_map("last_delta_phase", "surface_id", string("Applied")),
                    advance_snapshot_epoch(),
                    Update::SetInsert {
                        field: "visible_surfaces".into(),
                        value: binding("surface_id"),
                    },
                ],
                to: "Operating".into(),
                emit: vec![
                    emit_snapshot_refresh(),
                    emit_delta("surface_id", "Reload", "Applied", true),
                ],
            },
            TransitionSchema {
                name: "PendingFailedAdd".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "PendingFailed".into(),
                    bindings: vec![
                        "surface_id".into(),
                        "operation".into(),
                        "pending_task_sequence".into(),
                        "staged_intent_sequence".into(),
                        "applied_at_turn".into(),
                    ],
                },
                guards: vec![
                    Guard {
                        name: "operation_is_add".into(),
                        expr: eq(binding("operation"), string("Add")),
                    },
                    Guard {
                        name: "pending_operation_matches".into(),
                        expr: eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            binding("operation"),
                        ),
                    },
                    Guard {
                        name: "pending_task_sequence_matches".into(),
                        expr: eq(
                            call("PendingTaskSequence", vec![binding("surface_id")]),
                            binding("pending_task_sequence"),
                        ),
                    },
                    Guard {
                        name: "pending_lineage_sequence_matches".into(),
                        expr: eq(
                            call("PendingLineageSequence", vec![binding("surface_id")]),
                            binding("staged_intent_sequence"),
                        ),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map("pending_op", "surface_id", string("None")),
                    set_map("pending_task_sequence", "surface_id", Expr::U64(0)),
                    set_map("pending_lineage_sequence", "surface_id", Expr::U64(0)),
                    set_map("last_delta_operation", "surface_id", string("Add")),
                    set_map("last_delta_phase", "surface_id", string("Failed")),
                ],
                to: "Operating".into(),
                emit: vec![emit_delta("surface_id", "Add", "Failed", true)],
            },
            TransitionSchema {
                name: "PendingFailedReload".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "PendingFailed".into(),
                    bindings: vec![
                        "surface_id".into(),
                        "operation".into(),
                        "pending_task_sequence".into(),
                        "staged_intent_sequence".into(),
                        "applied_at_turn".into(),
                    ],
                },
                guards: vec![
                    Guard {
                        name: "operation_is_reload".into(),
                        expr: eq(binding("operation"), string("Reload")),
                    },
                    Guard {
                        name: "pending_operation_matches".into(),
                        expr: eq(
                            call("PendingOp", vec![binding("surface_id")]),
                            binding("operation"),
                        ),
                    },
                    Guard {
                        name: "pending_task_sequence_matches".into(),
                        expr: eq(
                            call("PendingTaskSequence", vec![binding("surface_id")]),
                            binding("pending_task_sequence"),
                        ),
                    },
                    Guard {
                        name: "pending_lineage_sequence_matches".into(),
                        expr: eq(
                            call("PendingLineageSequence", vec![binding("surface_id")]),
                            binding("staged_intent_sequence"),
                        ),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map("pending_op", "surface_id", string("None")),
                    set_map("pending_task_sequence", "surface_id", Expr::U64(0)),
                    set_map("pending_lineage_sequence", "surface_id", Expr::U64(0)),
                    set_map("last_delta_operation", "surface_id", string("Reload")),
                    set_map("last_delta_phase", "surface_id", string("Failed")),
                ],
                to: "Operating".into(),
                emit: vec![emit_delta("surface_id", "Reload", "Failed", true)],
            },
            TransitionSchema {
                name: "CallStartedActive".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "CallStarted".into(),
                    bindings: vec!["surface_id".into()],
                },
                guards: vec![Guard {
                    name: "surface_is_active".into(),
                    expr: eq(
                        call("SurfaceBase", vec![binding("surface_id")]),
                        string("Active"),
                    ),
                }],
                updates: vec![
                    track_surface("surface_id"),
                    set_map(
                        "inflight_calls",
                        "surface_id",
                        Expr::Add(
                            Box::new(call("InflightCallCount", vec![binding("surface_id")])),
                            Box::new(Expr::U64(1)),
                        ),
                    ),
                ],
                to: "Operating".into(),
                emit: vec![],
            },
            TransitionSchema {
                name: "CallStartedRejectWhileRemoving".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "CallStarted".into(),
                    bindings: vec!["surface_id".into()],
                },
                guards: vec![Guard {
                    name: "surface_is_removing".into(),
                    expr: eq(
                        call("SurfaceBase", vec![binding("surface_id")]),
                        string("Removing"),
                    ),
                }],
                updates: vec![track_surface("surface_id")],
                to: "Operating".into(),
                emit: vec![reject_call("surface_id", "surface_draining")],
            },
            TransitionSchema {
                name: "CallStartedRejectWhileUnavailable".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "CallStarted".into(),
                    bindings: vec!["surface_id".into()],
                },
                guards: vec![Guard {
                    name: "surface_is_not_dispatchable".into(),
                    expr: Expr::And(vec![
                        neq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Active"),
                        ),
                        neq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Removing"),
                        ),
                    ]),
                }],
                updates: vec![track_surface("surface_id")],
                to: "Operating".into(),
                emit: vec![reject_call("surface_id", "surface_unavailable")],
            },
            TransitionSchema {
                name: "CallFinishedActive".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "CallFinished".into(),
                    bindings: vec!["surface_id".into()],
                },
                guards: vec![
                    Guard {
                        name: "surface_is_active".into(),
                        expr: eq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Active"),
                        ),
                    },
                    Guard {
                        name: "has_inflight_calls".into(),
                        expr: Expr::Gt(
                            Box::new(call("InflightCallCount", vec![binding("surface_id")])),
                            Box::new(Expr::U64(0)),
                        ),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map(
                        "inflight_calls",
                        "surface_id",
                        Expr::Sub(
                            Box::new(call("InflightCallCount", vec![binding("surface_id")])),
                            Box::new(Expr::U64(1)),
                        ),
                    ),
                ],
                to: "Operating".into(),
                emit: vec![],
            },
            TransitionSchema {
                name: "CallFinishedRemoving".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "CallFinished".into(),
                    bindings: vec!["surface_id".into()],
                },
                guards: vec![
                    Guard {
                        name: "surface_is_removing".into(),
                        expr: eq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Removing"),
                        ),
                    },
                    Guard {
                        name: "has_inflight_calls".into(),
                        expr: Expr::Gt(
                            Box::new(call("InflightCallCount", vec![binding("surface_id")])),
                            Box::new(Expr::U64(0)),
                        ),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map(
                        "inflight_calls",
                        "surface_id",
                        Expr::Sub(
                            Box::new(call("InflightCallCount", vec![binding("surface_id")])),
                            Box::new(Expr::U64(1)),
                        ),
                    ),
                ],
                to: "Operating".into(),
                emit: vec![],
            },
            TransitionSchema {
                name: "FinalizeRemovalClean".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "FinalizeRemovalClean".into(),
                    bindings: vec!["surface_id".into(), "applied_at_turn".into()],
                },
                guards: vec![
                    Guard {
                        name: "surface_is_removing".into(),
                        expr: eq(
                            call("SurfaceBase", vec![binding("surface_id")]),
                            string("Removing"),
                        ),
                    },
                    Guard {
                        name: "no_inflight_calls_remain".into(),
                        expr: eq(
                            call("InflightCallCount", vec![binding("surface_id")]),
                            Expr::U64(0),
                        ),
                    },
                ],
                updates: vec![
                    track_surface("surface_id"),
                    set_map("base_state", "surface_id", string("Removed")),
                    set_map("pending_op", "surface_id", string("None")),
                    set_map("pending_task_sequence", "surface_id", Expr::U64(0)),
                    set_map("pending_lineage_sequence", "surface_id", Expr::U64(0)),
                    set_map("last_delta_operation", "surface_id", string("Remove")),
                    set_map("last_delta_phase", "surface_id", string("Applied")),
                    advance_snapshot_epoch(),
                    Update::SetRemove {
                        field: "visible_surfaces".into(),
                        value: binding("surface_id"),
                    },
                ],
                to: "Operating".into(),
                emit: vec![
                    close_surface("surface_id"),
                    emit_snapshot_refresh(),
                    emit_delta("surface_id", "Remove", "Applied", true),
                ],
            },
            TransitionSchema {
                name: "FinalizeRemovalForced".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "FinalizeRemovalForced".into(),
                    bindings: vec!["surface_id".into(), "applied_at_turn".into()],
                },
                guards: vec![Guard {
                    name: "surface_is_removing".into(),
                    expr: eq(
                        call("SurfaceBase", vec![binding("surface_id")]),
                        string("Removing"),
                    ),
                }],
                updates: vec![
                    track_surface("surface_id"),
                    set_map("base_state", "surface_id", string("Removed")),
                    set_map("pending_op", "surface_id", string("None")),
                    set_map("pending_task_sequence", "surface_id", Expr::U64(0)),
                    set_map("pending_lineage_sequence", "surface_id", Expr::U64(0)),
                    set_map("inflight_calls", "surface_id", Expr::U64(0)),
                    set_map("last_delta_operation", "surface_id", string("Remove")),
                    set_map("last_delta_phase", "surface_id", string("Forced")),
                    advance_snapshot_epoch(),
                    Update::SetRemove {
                        field: "visible_surfaces".into(),
                        value: binding("surface_id"),
                    },
                ],
                to: "Operating".into(),
                emit: vec![
                    close_surface("surface_id"),
                    emit_snapshot_refresh(),
                    emit_delta("surface_id", "Remove", "Forced", true),
                ],
            },
            TransitionSchema {
                name: "SnapshotAligned".into(),
                from: vec!["Operating".into()],
                on: InputMatch {
                    variant: "SnapshotAligned".into(),
                    bindings: vec!["snapshot_epoch".into()],
                },
                guards: vec![
                    Guard {
                        name: "snapshot_epoch_matches_current".into(),
                        expr: eq(
                            binding("snapshot_epoch"),
                            Expr::Field("snapshot_epoch".into()),
                        ),
                    },
                    Guard {
                        name: "snapshot_alignment_was_pending".into(),
                        expr: Expr::Gt(
                            Box::new(Expr::Field("snapshot_epoch".into())),
                            Box::new(Expr::Field("snapshot_aligned_epoch".into())),
                        ),
                    },
                ],
                updates: vec![Update::Assign {
                    field: "snapshot_aligned_epoch".into(),
                    expr: binding("snapshot_epoch"),
                }],
                to: "Operating".into(),
                emit: vec![],
            },
            TransitionSchema {
                name: "Shutdown".into(),
                from: vec!["Operating".into(), "Shutdown".into()],
                on: InputMatch {
                    variant: "Shutdown".into(),
                    bindings: vec![],
                },
                guards: vec![],
                updates: vec![
                    Update::Assign {
                        field: "known_surfaces".into(),
                        expr: Expr::EmptySet,
                    },
                    Update::Assign {
                        field: "visible_surfaces".into(),
                        expr: Expr::EmptySet,
                    },
                    Update::Assign {
                        field: "base_state".into(),
                        expr: Expr::EmptyMap,
                    },
                    Update::Assign {
                        field: "pending_op".into(),
                        expr: Expr::EmptyMap,
                    },
                    Update::Assign {
                        field: "staged_op".into(),
                        expr: Expr::EmptyMap,
                    },
                    Update::Assign {
                        field: "staged_intent_sequence".into(),
                        expr: Expr::EmptyMap,
                    },
                    Update::Assign {
                        field: "next_staged_intent_sequence".into(),
                        expr: Expr::U64(1),
                    },
                    Update::Assign {
                        field: "pending_task_sequence".into(),
                        expr: Expr::EmptyMap,
                    },
                    Update::Assign {
                        field: "pending_lineage_sequence".into(),
                        expr: Expr::EmptyMap,
                    },
                    Update::Assign {
                        field: "next_pending_task_sequence".into(),
                        expr: Expr::U64(1),
                    },
                    Update::Assign {
                        field: "inflight_calls".into(),
                        expr: Expr::EmptyMap,
                    },
                    Update::Assign {
                        field: "last_delta_operation".into(),
                        expr: Expr::EmptyMap,
                    },
                    Update::Assign {
                        field: "last_delta_phase".into(),
                        expr: Expr::EmptyMap,
                    },
                    Update::Assign {
                        field: "snapshot_epoch".into(),
                        expr: Expr::U64(0),
                    },
                    Update::Assign {
                        field: "snapshot_aligned_epoch".into(),
                        expr: Expr::U64(0),
                    },
                ],
                to: "Shutdown".into(),
                emit: vec![],
            },
        ],
        effect_dispositions: vec![
            EffectDispositionRule {
                effect_variant: "ScheduleSurfaceCompletion".into(),
                disposition: EffectDisposition::Local,
                handoff_protocol: Some("surface_completion".into()),
            },
            EffectDispositionRule {
                effect_variant: "RefreshVisibleSurfaceSet".into(),
                disposition: EffectDisposition::Local,
                handoff_protocol: Some("surface_snapshot_alignment".into()),
            },
            disposition("EmitExternalToolDelta", EffectDisposition::External),
            disposition("CloseSurfaceConnection", EffectDisposition::External),
            disposition("RejectSurfaceCall", EffectDisposition::External),
        ],
    }
}

fn disposition(name: &str, d: EffectDisposition) -> EffectDispositionRule {
    EffectDispositionRule {
        effect_variant: name.into(),
        disposition: d,
        handoff_protocol: None,
    }
}

fn stage_transition(name: &str, op: &str) -> TransitionSchema {
    TransitionSchema {
        name: name.into(),
        from: vec!["Operating".into()],
        on: InputMatch {
            variant: name.into(),
            bindings: vec!["surface_id".into()],
        },
        guards: vec![],
        updates: vec![
            track_surface("surface_id"),
            set_map("staged_op", "surface_id", string(op)),
            set_map(
                "staged_intent_sequence",
                "surface_id",
                Expr::Field("next_staged_intent_sequence".into()),
            ),
            Update::Assign {
                field: "next_staged_intent_sequence".into(),
                expr: Expr::Add(
                    Box::new(Expr::Field("next_staged_intent_sequence".into())),
                    Box::new(Expr::U64(1)),
                ),
            },
        ],
        to: "Operating".into(),
        emit: vec![],
    }
}

fn quantified_surface_invariant(name: &str, body: Expr) -> InvariantSchema {
    InvariantSchema {
        name: name.into(),
        expr: Expr::Quantified {
            quantifier: Quantifier::All,
            binding: "surface_id".into(),
            over: Box::new(Expr::Field("known_surfaces".into())),
            body: Box::new(body),
        },
    }
}

fn set_subset_known_invariant(name: &str, set_field: &str) -> InvariantSchema {
    InvariantSchema {
        name: name.into(),
        expr: Expr::Quantified {
            quantifier: Quantifier::All,
            binding: "surface_id".into(),
            over: Box::new(Expr::Field(set_field.into())),
            body: Box::new(Expr::Contains {
                collection: Box::new(Expr::Field("known_surfaces".into())),
                value: Box::new(binding("surface_id")),
            }),
        },
    }
}

fn map_keys_subset_known_invariant(name: &str, map_field: &str) -> InvariantSchema {
    InvariantSchema {
        name: name.into(),
        expr: Expr::Quantified {
            quantifier: Quantifier::All,
            binding: "surface_id".into(),
            over: Box::new(Expr::MapKeys(Box::new(Expr::Field(map_field.into())))),
            body: Box::new(Expr::Contains {
                collection: Box::new(Expr::Field("known_surfaces".into())),
                value: Box::new(binding("surface_id")),
            }),
        },
    }
}

fn lookup_string_helper(
    name: &str,
    map_field: &str,
    default_value: &str,
    return_type: &str,
) -> HelperSchema {
    let key = binding("surface_id");
    let has_key = Expr::Contains {
        collection: Box::new(Expr::MapKeys(Box::new(Expr::Field(map_field.into())))),
        value: Box::new(key.clone()),
    };
    let lookup = Expr::MapGet {
        map: Box::new(Expr::Field(map_field.into())),
        key: Box::new(key),
    };
    HelperSchema {
        name: name.into(),
        params: vec![field("surface_id", named("SurfaceId"))],
        returns: named(return_type),
        body: Expr::IfElse {
            condition: Box::new(Expr::Not(Box::new(has_key))),
            then_expr: Box::new(string(default_value)),
            else_expr: Box::new(lookup),
        },
    }
}

fn lookup_u64_helper(name: &str, map_field: &str) -> HelperSchema {
    let key = binding("surface_id");
    let has_key = Expr::Contains {
        collection: Box::new(Expr::MapKeys(Box::new(Expr::Field(map_field.into())))),
        value: Box::new(key.clone()),
    };
    let lookup = Expr::MapGet {
        map: Box::new(Expr::Field(map_field.into())),
        key: Box::new(key),
    };
    HelperSchema {
        name: name.into(),
        params: vec![field("surface_id", named("SurfaceId"))],
        returns: TypeRef::U64,
        body: Expr::IfElse {
            condition: Box::new(Expr::Not(Box::new(has_key))),
            then_expr: Box::new(Expr::U64(0)),
            else_expr: Box::new(lookup),
        },
    }
}

fn schedule_completion(surface_binding: &str, operation: &str) -> EffectEmit {
    EffectEmit {
        variant: "ScheduleSurfaceCompletion".into(),
        fields: IndexMap::from([
            ("surface_id".into(), binding(surface_binding)),
            ("operation".into(), string(operation)),
            (
                "pending_task_sequence".into(),
                call("PendingTaskSequence", vec![binding(surface_binding)]),
            ),
            (
                "staged_intent_sequence".into(),
                call("PendingLineageSequence", vec![binding(surface_binding)]),
            ),
            ("applied_at_turn".into(), binding("applied_at_turn")),
        ]),
    }
}

fn advance_snapshot_epoch() -> Update {
    Update::Assign {
        field: "snapshot_epoch".into(),
        expr: Expr::IfElse {
            condition: Box::new(eq(
                Expr::Field("snapshot_epoch".into()),
                Expr::Field("snapshot_aligned_epoch".into()),
            )),
            then_expr: Box::new(Expr::Add(
                Box::new(Expr::Field("snapshot_epoch".into())),
                Box::new(Expr::U64(1)),
            )),
            else_expr: Box::new(Expr::Field("snapshot_epoch".into())),
        },
    }
}

fn emit_snapshot_refresh() -> EffectEmit {
    EffectEmit {
        variant: "RefreshVisibleSurfaceSet".into(),
        fields: IndexMap::from([(
            "snapshot_epoch".into(),
            Expr::Field("snapshot_epoch".into()),
        )]),
    }
}

fn emit_delta(surface_binding: &str, operation: &str, phase: &str, persisted: bool) -> EffectEmit {
    EffectEmit {
        variant: "EmitExternalToolDelta".into(),
        fields: IndexMap::from([
            ("surface_id".into(), binding(surface_binding)),
            ("operation".into(), string(operation)),
            ("phase".into(), string(phase)),
            ("persisted".into(), Expr::Bool(persisted)),
            ("applied_at_turn".into(), binding("applied_at_turn")),
        ]),
    }
}

fn reject_call(surface_binding: &str, reason: &str) -> EffectEmit {
    EffectEmit {
        variant: "RejectSurfaceCall".into(),
        fields: IndexMap::from([
            ("surface_id".into(), binding(surface_binding)),
            ("reason".into(), string(reason)),
        ]),
    }
}

fn close_surface(surface_binding: &str) -> EffectEmit {
    EffectEmit {
        variant: "CloseSurfaceConnection".into(),
        fields: IndexMap::from([("surface_id".into(), binding(surface_binding))]),
    }
}

fn track_surface(binding_name: &str) -> Update {
    Update::SetInsert {
        field: "known_surfaces".into(),
        value: binding(binding_name),
    }
}

fn set_map(field_name: &str, key_binding: &str, value: Expr) -> Update {
    Update::MapInsert {
        field: field_name.into(),
        key: binding(key_binding),
        value,
    }
}

fn named(name: &str) -> TypeRef {
    TypeRef::Named(name.into())
}

fn field(name: &str, ty: TypeRef) -> FieldSchema {
    FieldSchema {
        name: name.into(),
        ty,
    }
}

fn init(field: &str, expr: Expr) -> FieldInit {
    FieldInit {
        field: field.into(),
        expr,
    }
}

fn variant(name: &str) -> VariantSchema {
    VariantSchema {
        name: name.into(),
        fields: vec![],
    }
}

fn call(helper: &str, args: Vec<Expr>) -> Expr {
    Expr::Call {
        helper: helper.into(),
        args,
    }
}

fn binding(name: &str) -> Expr {
    Expr::Binding(name.into())
}

fn string(value: &str) -> Expr {
    Expr::String(value.into())
}

fn eq(left: Expr, right: Expr) -> Expr {
    Expr::Eq(Box::new(left), Box::new(right))
}

fn neq(left: Expr, right: Expr) -> Expr {
    Expr::Neq(Box::new(left), Box::new(right))
}