Repository navigation
Expand file tree
/
Copy pathValueLineOrigins.lean
More file actions
1454 lines (1390 loc) · 142 KB
/
Copy pathValueLineOrigins.lean
File metadata and controls
1454 lines (1390 loc) · 142 KB
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
/-
Copyright (c) 2026 L4YAML contributors. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
-/
import Tests.Guards.Proofs.ValueLinePacks
/-!
# Where the value-line packs are born: every writer row's chain resolved to its origins, and the tail there (DOCS item 262)
Item 261 read, at each of the value-line packs' writer positions, what the
writer holds toward a `SCompactMapTail` at the level it writes, and found
the tail in hand at eleven of the sixty-nine that build, re-wrap or
transport a pack. A re-wrap holds what its caller handed it: whether a
`none` row is a real absence depends on where its chain is BORN — the
position that first builds the pack from a route or a frames face — and on
whether the tail is in hand THERE. This module resolves every row to its
origins.
**§0** finds the pack positions as item 261 did, by shape, and one
unfolding deeper: a parameter or field whose type carries the value closure
inside an L4YAML `Prop` definition or single-constructor `Prop` structure
(`ImplicitKeyPack`, `PropsKeyPack`) is a position too, listed `packaged`;
every position gets the PATH from its type to the closure (through the
option's arm, the existentials, the conjunctions, the guards and the
unfolding). **§1** re-runs item 261's walk over the extended positions and,
at every row, reads the argument's BOTTOMS structurally: the hypotheses the
pack's closure is built from, navigating the term along the position's
path, through matches, casts, transports (lemmas whose conclusion carries
the stream, a frames face or a pack) and constructors. **§2** follows each
bottom inside its lemma: a pack parameter's or park field's label is an
edge to that POSITION; a route, frames or tail hypothesis is an ORIGIN at
the row; a `let` is followed into its value; a local function's parameter
is resolved through the function's applications; a match's pattern variable
through its discriminant. **§3** resolves positions by the least fixpoint
over the producer relation (the rows whose target is the position), so a
family whose producers are only punts and relays of each other resolves to
NOTHING: its honest arms are `unborn`. At every origin the tail reading is
item 261's at the origin row, and for a route origin also at the route's own
level.
The pins hold the positions, the origins, every row's resolution, the
per-position summary, the unborn positions and the line.
-/
open Lean Lean.Meta Lean.Elab
open L4YAML
open L4YAML.Surface
open L4YAML.Scanner
open L4YAML.Proofs.StreamAccum
open Tests.Guards.DropDependents (sorted)
open Tests.Guards.RouteShapes
open Tests.Guards.StreamCompositions
open Tests.Guards.CloseSplitFrames
open Tests.Guards.CloseStackCover
open Tests.Guards.PuntCoverInputs
open Tests.Guards.ValueLinePacks
namespace Tests.Guards.ValueLineOrigins
/-! ## §0 Packaged packs and the path to the closure -/
/-- The environment with the constants that package a value closure: every
L4YAML `Prop` definition whose body carries it outside a `ResumeFrames`
(`ImplicitKeyPack`, `PropsKeyPack`). A `Prop` structure's fields are not
unfolded: the flow base's routes (`FlowBaseRoutes`) travel in the
flow-stack invariant, which this census does not follow. -/
structure PackEnv where
env : Environment
packConsts : Std.HashSet Name
-- Item 304: a stack is `ResumeFrames` or `KeyFrames` (item 302's value-line stack); `keyN` is `PuntCoverInputs`'.
def mkPackEnv (env : Environment) : PackEnv := Id.run do
let mut s : Std.HashSet Name := {}
for (c, ci) in env.constants.toList do
if c.getRoot != `L4YAML || (c == resumeN || c == keyN) || c == evlN then continue
match ci with
| .defnInfo di => if (piConcl di.type).isProp && vcOutside di.value then s := s.insert c
| _ => pure ()
return { env, packConsts := s }
/-- A structure's constructor telescope with its conclusion (the structure
itself, applied) cut to `True`, so an unfolding never re-enters it. -/
partial def cutConcl (t : Expr) : Expr :=
match t with
| .forallE n ty b bi => .forallE n ty (cutConcl b) bi
| _ => mkConst ``True
/-- One unfolding of a packaging constant applied to arguments: the body the
arguments instantiate (a structure's fields, their conclusion cut). -/
def unfoldPack (pe : PackEnv) (e : Expr) : Option Expr :=
let e := e.consumeMData
match e.getAppFn with
| .const c _ =>
if !pe.packConsts.contains c then none
else match pe.env.find? c with
| some (.defnInfo di) => some (di.value.beta e.getAppArgs)
| some (.inductInfo iv) =>
if iv.numParams ≤ e.getAppNumArgs then
match pe.env.find? iv.ctors[0]! with
| some (.ctorInfo cv) => Id.run do
let mut ty := cv.type
let args := e.getAppArgs
for i in [0:cv.numParams] do
match ty with
| .forallE _ _ b _ => ty := b.instantiate1 args[i]!
| _ => break
return some (cutConcl ty)
| _ => none
else none
| _ => none
| _ => none
/-- The value closure, directly or inside a packaging constant, outside any
`ResumeFrames`. -/
partial def vcDeep (pe : PackEnv) (e : Expr) : Bool :=
let e := e.consumeMData
if isValueClosure e || e.isAppOf evlN then true
else if (e.isAppOf resumeN || e.isAppOf keyN) then false
else match e with
| .const c _ => pe.packConsts.contains c
| .app f a => vcDeep pe f || vcDeep pe a
| .forallE _ t b _ => vcDeep pe t || vcDeep pe b
| .lam _ t b _ => vcDeep pe t || vcDeep pe b
| .letE _ t v b _ => vcDeep pe t || vcDeep pe v || vcDeep pe b
| .proj _ _ b => vcDeep pe b
| _ => false
inductive VStep | orL | orR | ex | andL | andR | unfold | imp
deriving BEq, Repr, Inhabited, Hashable
def VStep.render : VStep → String
| .orL => "∨L" | .orR => "∨R" | .ex => "∃" | .andL => "∧L" | .andR => "∧R" | .unfold => "δ" | .imp => "→"
def renderVPath (p : List VStep) : String := String.intercalate "" (p.map VStep.render)
/-- The path from a position's type to its value closure: the option's arm,
the existentials, the conjunctions (the right side first, as item 261
read them), the closure's own binders as `→`, and an unfolding. -/
partial def vcPath (pe : PackEnv) (t : Expr) (fuel : Nat := 96) : List VStep :=
let t := t.consumeMData
if fuel == 0 then []
else if isValueClosure t || t.isAppOf evlN then []
else if t.isAppOfArity ``Or 2 then
if vcDeep pe (t.getArg! 0) then .orL :: vcPath pe (t.getArg! 0) (fuel - 1) else .orR :: vcPath pe (t.getArg! 1) (fuel - 1)
else if t.isAppOfArity ``Exists 2 then
match (t.getArg! 1).consumeMData with
| .lam _ _ b _ => .ex :: vcPath pe b (fuel - 1)
| _ => []
else if t.isAppOfArity ``And 2 then
if vcDeep pe (t.getArg! 1) then .andR :: vcPath pe (t.getArg! 1) (fuel - 1) else .andL :: vcPath pe (t.getArg! 0) (fuel - 1)
else match t with
| .forallE _ _ b _ => .imp :: vcPath pe b (fuel - 1)
| _ => match unfoldPack pe t with
| some b => .unfold :: vcPath pe b (fuel - 1)
| none => []
/-- Item 261's `peelToClosure` through packaged definitions: the stack at
the closure, the closure, and the level binding read on the way. -/
partial def peelD (pe : PackEnv) (st : Stack) (t : Expr) (lvl : Array String) (fuel : Nat := 96) : Stack × Expr × Array String :=
let t := t.consumeMData
if fuel == 0 then (st, t, lvl)
else if vcOutside t then
let (st', cl, lvl') := peelToClosure st t #[]
(st', cl, lvl ++ lvl')
else if t.isAppOfArity ``Or 2 then
if vcDeep pe (t.getArg! 0) then peelD pe st (t.getArg! 0) lvl (fuel - 1) else peelD pe st (t.getArg! 1) lvl (fuel - 1)
else if t.isAppOfArity ``Exists 2 then
match (t.getArg! 1).consumeMData with
| .lam n ty b _ => peelD pe (st.push { name := n, ty, prov := none }) b (lvl.push s!"∃{bname n}") (fuel - 1)
| _ => (st, t, lvl)
else if t.isAppOfArity ``And 2 then
if vcDeep pe (t.getArg! 1) then peelD pe st (t.getArg! 1) (lvl.push s!"({propTok st (t.getArg! 0)})") (fuel - 1)
else peelD pe st (t.getArg! 0) (lvl.push s!"({propTok st (t.getArg! 1)})") (fuel - 1)
else match t with
| .forallE n ty b _ => peelD pe (st.push { name := n, ty, prov := none }) b (lvl.push s!"({propTok st ty})→") (fuel - 1)
| _ => match unfoldPack pe t with
| some b => peelD pe st b (lvl.push s!"δ{short t.getAppFn.constName!}") (fuel - 1)
| none => (st, t, lvl)
/-- Which arm carries the closure (packaging seen through), and whether the
other arm is `True`. -/
def sideOfD (pe : PackEnv) (t : Expr) : Bool × Bool :=
let t := t.consumeMData
if t.isAppOfArity ``Or 2 then
let vcLeft := vcDeep pe (t.getArg! 0)
let other := (if vcLeft then t.getArg! 1 else t.getArg! 0).consumeMData
(vcLeft, (other.isConstOf ``True || other.isAppOf ``L4YAML.Proofs.StreamAccum.PackAlt || other.isAppOf ``L4YAML.Proofs.StreamAccum.PackAltG)) -- item 311: the named alternative reads as `True`
else (true, true)
structure Position where
key : String
kind : String
owner : Name
idx : Nat
name : Name
path : List VStep
vcLeft : Bool
otherTrue : Bool
packaged : Bool
line : String
deriving Inhabited
structure Cands where
cd : PCand := {}
positions : Array Position := #[]
thms : Array Name := #[]
/-- A position's shape line: its level binding, premise chain and where the
tail stands (after the value, before it, or nowhere). -/
def shapeLine (pe : PackEnv) (stk : Stack) (t : Expr) : String :=
let (st', cl, lvl) := peelD pe stk t #[]
let (prems, concl, tail) := premisesOf pe.env st' cl #[] false false
let before := prems.any (·.startsWith "SCompactMapTail")
s!"lvl={String.intercalate "" lvl.toList} premises=[{String.intercalate "," prems.toList}] ⊢ {concl} tail={if tail then "after" else if before then "before" else "no"}"
def mkPosition (pe : PackEnv) (kind : String) (owner : Name) (idx : Nat) (n : Name) (stk : Stack) (t : Expr) : Position :=
let (vcLeft, otherTrue) := sideOfD pe t
let packaged := !vcOutside t
let path := vcPath pe t
let key := s!"{kind}:{short owner}.{n}"
{ key, kind, owner, idx, name := n, path, vcLeft, otherTrue, packaged,
line := s!"{key}{if packaged then " packaged" else ""} arm={if vcLeft then "l" else "r"}{if otherTrue then "" else "/stamp"} path={renderVPath path} {shapeLine pe stk t}" }
/-- The positions: the park fields and the lemma parameters that carry the
value closure, directly or packaged. -/
def collect (pe : PackEnv) : MetaM Cands := do
let env := pe.env
let some (.inductInfo iv) := env.find? ``PendingNode | throwError "PendingNode: not an inductive"
let mut cs : Cands := {}
for c in iv.ctors do
let some (.ctorInfo cv) := env.find? c | throwError "{c}: not a constructor"
let mut ty := cv.type
let mut i := 0
let mut stk : Stack := #[]
let mut names : Array Name := #[]
let mut packs : Array Pos := #[]
while true do
match ty with
| .forallE n t b _ =>
if i ≥ cv.numParams then
names := names.push n
if vcDeep pe t then
let p := mkPosition pe "ctor" c i n stk t
packs := packs.push (i, n, p.vcLeft, p.otherTrue)
cs := { cs with positions := cs.positions.push p }
stk := stk.push { name := n, ty := t, prov := none }
ty := b; i := i + 1
| _ => break
cs := { cs with cd := { cs.cd with ctors := cs.cd.ctors.insert c, fieldNames := cs.cd.fieldNames.insert c names, packs := cs.cd.packs.insert c packs, consts := cs.cd.consts.insert c } }
cs := { cs with cd := { cs.cd with consts := cs.cd.consts.insert ``PendingNode.casesOn } }
let mut paramPos : Array Position := #[]
for (n, ci) in env.constants.toList do
if n.getRoot != `L4YAML then continue
unless ci matches .thmInfo _ do continue
cs := { cs with thms := cs.thms.push n }
let mut ty := ci.type
let mut i := 0
let mut stk : Stack := #[]
let mut ps : Array Pos := #[]
while true do
match ty with
| .forallE pn t b _ =>
if vcDeep pe t then
let p := mkPosition pe "param" n i pn stk t
ps := ps.push (i, pn, p.vcLeft, p.otherTrue)
paramPos := paramPos.push p
stk := stk.push { name := pn, ty := t, prov := none }
ty := b; i := i + 1
| _ => break
if !ps.isEmpty then cs := { cs with cd := { cs.cd with lemParams := cs.cd.lemParams.insert n ps, consts := cs.cd.consts.insert n } }
paramPos := paramPos.qsort (·.key < ·.key)
return { cs with positions := cs.positions ++ paramPos }
/-! ## §1 The bottoms of a pack argument -/
/-- A hypothesis the pack's closure bottoms in (with the stack it stands
in, the arguments it is applied to and the path left to the closure), or
a terminal. -/
inductive Bot
| bind (b : Bind) (depth : Nat) (st : Stack) (args : Array Expr) (rest : List VStep)
| term (s : String)
deriving Inhabited
def isPuntTerm (e : Expr) : Bool :=
let e := e.consumeMData
e.isConstOf ``trivial || e.isConstOf ``True.intro
/-- The name of the `j`-th leading lambda binder. -/
partial def lamName (e : Expr) (j : Nat) : Option Name :=
match e.consumeMData with
| .lam n _ b _ => if j == 0 then some n else lamName b (j - 1)
| _ => none
/-- The type of the `j`-th leading lambda binder. -/
partial def lamTy (e : Expr) (j : Nat) : Option Expr :=
match e.consumeMData with
| .lam _ t b _ => if j == 0 then some t else lamTy b (j - 1)
| _ => none
/-- The kind of a hypothesis, packaging seen through. -/
def kindOf (pe : PackEnv) (b : Bind) : String :=
if vcDeep pe b.ty then "chain" else bindKind (some b)
/-- The level named by the first surface premise of a hypothesis. -/
partial def lvlOf (env : Environment) (st : Stack) (t : Expr) : Option String :=
let t := t.consumeMData
let own : Option String := match t.getAppFn with
| .const h _ => if (`L4YAML.Surface).isPrefixOf h && t.getAppNumArgs ≥ 1 && levelFirst env h then some (ppc st (t.getArg! 0)) else none
| _ => none
match t with
| .forallE n ty b _ =>
(lvlOf env st ty).orElse fun _ => lvlOf env (st.push { name := n, ty, prov := none }) b
| .app .. =>
if t.isAppOfArity ``Or 2 || t.isAppOfArity ``And 2 || t.isAppOfArity ``Exists 2 then
t.getAppArgs.findSome? fun a => lvlOf env st a
else own
| .lam n ty b _ => lvlOf env (st.push { name := n, ty, prov := none }) b
| _ => none
/-- A lemma whose conclusion carries the stream, a frames face or a pack, or
a predicate it is polymorphic in (`frameChainOne`'s `P x`): one a pack's
closure can be built through. -/
def isTransport (pe : PackEnv) (m : Name) : Bool :=
match pe.env.find? m with
| some (.thmInfo ti) =>
let c := piConcl ti.type
hasHead c streamN || (hasHead c resumeN || hasHead c keyN) || vcDeep pe c || (c.find? fun s => s.isApp && s.getAppFn.isBVar).isSome
| _ => false
-- Keyed by the whole stack, not its depth: a depth-keyed hit from another binder context returned
-- that context's bottoms (item 349 — `question_open_map`'s `h_resV_land` frames origin vanished).
def stackKey (st : Stack) : Array (Name × Option String) := st.map fun b => (b.name, b.prov)
abbrev BMemo := IO.Ref (Std.HashMap (Expr × Array (Name × Option String) × List VStep) (Array Bot))
/-- The matches the bottoms reader enters (their alternative binders are
labeled from the discriminants), for the follower to resolve. -/
abbrev DynAlts := IO.Ref (Array AltRec)
/-- A visit budget per row: the reader stops with a `budget` terminal past it. -/
abbrev Budget := IO.Ref Nat
/-- Every hypothesis the argument's closure is built from, navigating the
term along the position's path. -/
partial def bottomsOf (pe : PackEnv) (memo : BMemo) (budget : Budget) (dyn : DynAlts) (st : Stack) (e : Expr) (path : List VStep) (fuel : Nat := 40) : MetaM (Array Bot) := do
if fuel == 0 then return #[.term "fuel"]
if (← budget.get) == 0 then return #[.term "budget"]
budget.modify (· - 1)
let e := peelSafe e
if let some r := (← memo.get)[(e, stackKey st, path)]? then return r
let r ← go e
memo.modify (·.insert (e, stackKey st, path) r)
return r
where
go (e : Expr) : MetaM (Array Bot) := do
let env := pe.env
match e with
| .lam n t b _ =>
let path' := match path with | .imp :: r => r | p => p
bottomsOf pe memo budget dyn (st.push { name := n, ty := t, prov := none }) b path' fuel
| .bvar i =>
if i < st.size then return #[.bind st[st.size - 1 - i]! (st.size - 1 - i) st #[] path] else return #[.term "#?"]
| .const c _ => if isPuntTerm e then return #[.term "punt"] else return #[.term s!"?{short c}"]
| .proj _ _ b => bottomsOf pe memo budget dyn st b path (fuel - 1)
| .app .. =>
let f := e.getAppFn
let args := e.getAppArgs
match f with
| .bvar i =>
if i < st.size then return #[.bind st[st.size - 1 - i]! (st.size - 1 - i) st args path] else return #[.term "#?"]
| .const c _ =>
if let some (_, discrs, brs) ← branchesOf c args then
dyn.modify (·.push { lem := .anonymous, st, discrs })
let lab ← altLabeler st discrs
let mut out : Array Bot := #[]
for b in brs do
let (st', body) := enterAllF st lab args[b]!
out := out ++ (← bottomsOf pe memo budget dyn st' body path (fuel - 1))
return out
if deadEnd c then return #[.term "absurd"]
let other (x : Expr) : Array Bot := #[.term (if isPuntTerm x then "punt" else "stamp")]
if c == ``Or.inl && args.size ≥ 3 then
match path with
| .orL :: r => return ← bottomsOf pe memo budget dyn st args[2]! r (fuel - 1)
| .orR :: _ => return other args[2]!
| _ => return ← bottomsOf pe memo budget dyn st args[2]! path (fuel - 1)
if c == ``Or.inr && args.size ≥ 3 then
match path with
| .orR :: r => return ← bottomsOf pe memo budget dyn st args[2]! r (fuel - 1)
| .orL :: _ => return other args[2]!
| _ => return ← bottomsOf pe memo budget dyn st args[2]! path (fuel - 1)
if c == ``Exists.intro && args.size ≥ 4 then
let r := match path with | .ex :: r => r | p => p
return ← bottomsOf pe memo budget dyn st args[3]! r (fuel - 1)
if c == ``And.intro && args.size ≥ 4 then
match path with
| .andL :: r => return ← bottomsOf pe memo budget dyn st args[2]! r (fuel - 1)
| .andR :: r => return ← bottomsOf pe memo budget dyn st args[3]! r (fuel - 1)
| _ => return ← bottomsOf pe memo budget dyn st args[3]! path (fuel - 1)
if c == ``Or.imp && args.size ≥ 7 then return ← bottomsOf pe memo budget dyn st args[6]! path (fuel - 1)
if (c == ``Or.imp_left || c == ``Or.imp_right) && args.size ≥ 5 then return ← bottomsOf pe memo budget dyn st args[4]! path (fuel - 1)
if (c == ``And.left || c == ``And.right) && args.size ≥ 3 then return ← bottomsOf pe memo budget dyn st args[2]! path (fuel - 1)
if (← getProjectionFnInfo? c).isSome && args.size ≥ 1 then return ← bottomsOf pe memo budget dyn st args[args.size - 1]! path (fuel - 1)
if c.getRoot == `L4YAML && (isTransport pe c || (isCtorN env c && !(`L4YAML.Surface).isPrefixOf c)) then
let mut out : Array Bot := #[]
for a in args do
let a' := peelSafe a
let cand := match a' with
| .lam .. => !isPredLam a'
| .bvar .. => (match bindOf st a' with
| some b => !isDataTy b.ty && (kindOf pe b != "other" || hasHead b.ty streamN || (hasHead b.ty resumeN || hasHead b.ty keyN) || hasHead b.ty tailN)
| none => false)
| .app .. => (match a'.getAppFn with
| .bvar _ => true
| .const m _ => (m.getRoot == `L4YAML && (isTransport pe m || (isCtorN env m && !(`L4YAML.Surface).isPrefixOf m))) || m == ``Or.inl || m == ``Or.inr ||
m == ``Exists.intro || m == ``And.intro || m == ``And.left || m == ``And.right || m == ``Or.imp ||
(Lean.Meta.Match.Extension.getMatcherInfo? env m).isSome || isCasesOnRecursor env m ||
m == ``dite || m == ``ite || m == ``Or.elim || m == ``Exists.elim || m == ``Or.rec || m == ``Decidable.byCases
| _ => false)
| .proj .. => true
| _ => false
if cand then out := out ++ (← bottomsOf pe memo budget dyn st a' [] (fuel - 1))
let live := out.filter fun
| .term s => !(s == "absurd" || s == "punt" || s == "stamp" || s.startsWith "?" || s == "#?")
| _ => true
if live.isEmpty then return #[.term s!"{if isCtorN env c then "ctor" else "concl"}:{short c}"]
return live
-- a lemma whose conclusion carries no stream and no pack proves a side
-- fact (a guard, a scanner predicate): not a source
if c.getRoot == `L4YAML && isThmN env c then return #[.term s!"fact:{short c}"]
return #[.term s!"?{short c}"]
| _ => return #[.term "?"]
| _ => return #[.term "?"]
/-! ## §2 Following a bottom inside its lemma -/
/-- Where a bottom leads: a position (another producer's row set), an
origin at this row, a dead end the follower cannot read, or nothing
(a punt, a stamp, an absurd branch). -/
inductive Src
| pos (key : String)
| origin (kind : String) (label : String) (lvl : Option String)
| dead (why : String)
/-- No source: a punt, a stamp, an absurd branch, a side fact. -/
| none (why : String)
deriving Inhabited, BEq
abbrev FMemo := IO.Ref (Std.HashMap (Name × Nat × String × List VStep × Array Expr) (Array Src))
structure FCx where
pe : PackEnv
memo : BMemo
budget : Budget
dyn : DynAlts
fmemo : FMemo
lem : Name
posKeys : Std.HashSet String
lets : Array LetRec
lapps : Array LApp
alts : Array AltRec
def dedupSrc (xs : Array Src) : Array Src := xs.foldl (fun acc x => if acc.contains x then acc else acc.push x) #[]
mutual
partial def followBot (cx : FCx) (bot : Bot) (fuel : Nat := 8) : MetaM (Array Src) := do
match bot with
| .term s =>
if s == "punt" || s == "stamp" || s == "absurd" then return #[.none s]
if s.startsWith "fact:" then return #[.none "fact"]
if s.startsWith "concl:" || s.startsWith "ctor:" then return #[.origin "concl" s none]
return #[.dead s]
| .bind b depth st args rest =>
let key := (cx.lem, depth, b.prov.getD "", rest, args)
if let some r := (← cx.fmemo.get)[key]? then return r
let r ← followBind cx b depth st args rest fuel
let r := dedupSrc r
cx.fmemo.modify (·.insert key r)
return r
partial def followBind (cx : FCx) (b : Bind) (depth : Nat) (st : Stack) (args : Array Expr) (rest : List VStep) (fuel : Nat) : MetaM (Array Src) := do
let kind := kindOf cx.pe b
let lvl := lvlOf cx.pe.env (st.extract 0 depth) b.ty
-- a relational invariant (an L4YAML inductive: the flow stack's interior,
-- a pending node) is an origin of its own kind; a side fact (a column,
-- an equation, a scanner predicate) is not a source
let invHead : Option Name := match (piConcl b.ty).getAppFn with
| .const h _ => (match cx.pe.env.find? h with
| some (.inductInfo _) => if h.getRoot == `L4YAML && !(`L4YAML.Surface).isPrefixOf h then some h else none
| _ => none)
| _ => none
if kind == "other" && !(hasHead b.ty streamN || (hasHead b.ty resumeN || hasHead b.ty keyN) || hasHead b.ty tailN || vcDeep cx.pe b.ty) then
if let some h := invHead then return #[.origin "invariant" s!"{short h}@{b.prov.getD (bname b.name)}" lvl]
return #[.none "fact"]
match b.prov with
| none => return #[.dead s!"own:{bname b.name}"]
| some p =>
if fuel == 0 then return #[.dead s!"fuel@{p}"]
if p.startsWith "param:" then
if kind == "chain" && cx.posKeys.contains p then return #[.pos p] else return #[.origin kind p lvl]
if p.startsWith "door:" then
let key := "ctor:" ++ (p.drop 5).toString
if kind == "chain" && cx.posKeys.contains key then return #[.pos key] else return #[.origin kind p lvl]
if p.startsWith "let:" then
let ls := cx.lets.filter fun l => l.label == p
if ls.isEmpty then return #[.dead s!"let?{p}"]
let mut out : Array Src := #[]
for l in ls do out := out ++ (← followLet cx l st args (fuel - 1))
return out
if p.startsWith "λ:" then
let mut out : Array Src := #[]
let mut found := false
for l in cx.lets do
unless l.st.size ≤ depth do continue
let j := depth - l.st.size
if lamName l.val j == some b.name then
found := true
let path := match lamTy l.val j with | some t => vcPath cx.pe t | none => rest
for a in cx.lapps do
unless a.head.name == l.name && a.head.prov == some l.label do continue
if j < a.args.size then
for bt in (← bottomsOf cx.pe cx.memo cx.budget cx.dyn a.st a.args[j]! path) do out := out ++ (← followBot cx bt (fuel - 1))
else out := out.push (.dead s!"{p} partial")
if found then return out else return #[.dead p]
let mut out : Array Src := #[]
let mut found := false
for a in cx.alts ++ (← cx.dyn.get) do
unless a.st.size ≤ depth do continue
for d in a.discrs do
if (← sourceOf a.st d) == some p then
found := true
-- a discriminant that is itself a lemma's conclusion: the pack
-- is built by that lemma, an origin here
if p.startsWith "ret:" && !(d.consumeMData.isBVar) then
let bots ← bottomsOf cx.pe cx.memo cx.budget cx.dyn a.st d rest
let live := bots.filter fun | .term t => !(t.startsWith "?") | _ => true
if live.isEmpty then out := out.push (.origin "concl" p lvl)
else for bt in live do out := out ++ (← followBot cx bt (fuel - 1))
else
let path := match bindOf a.st d with | some db => vcPath cx.pe db.ty | none => rest
for bt in (← bottomsOf cx.pe cx.memo cx.budget cx.dyn a.st d path) do out := out ++ (← followBot cx bt (fuel - 1))
if found then return out
if p.startsWith "ret:" then return #[.origin "concl" p lvl]
return #[.dead p]
/-- Into a `let`'s value: its bottoms, a local function's parameters
mapped to the arguments at the application the bottom came from. -/
partial def followLet (cx : FCx) (l : LetRec) (appSt : Stack) (args : Array Expr) (fuel : Nat) : MetaM (Array Src) := do
let bots ← bottomsOf cx.pe cx.memo cx.budget cx.dyn l.st l.val (vcPath cx.pe l.ty)
let mut out : Array Src := #[]
for bt in bots do
match bt with
| .bind b d _ _ _ =>
if b.prov.isNone && d ≥ l.st.size && d - l.st.size < args.size then
let path := match lamTy l.val (d - l.st.size) with | some t => vcPath cx.pe t | none => []
for b2 in (← bottomsOf cx.pe cx.memo cx.budget cx.dyn appSt args[d - l.st.size]! path) do out := out ++ (← followBot cx b2 (fuel - 1))
else out := out ++ (← followBot cx bt (fuel - 1))
| _ => out := out ++ (← followBot cx bt (fuel - 1))
return out
end
/-! ## §3 The pins -/
def pinned : Bool := true
-- 2026-10-20 (item 309): the two generic premises (`explFrameValueLine.h_kslot`, `flowVPack_of_close.h_vslot`)
-- read `arm=l/stamp` — a right disjunct other than `True`, here the generic alternative `alt`.
-- 2026-10-24 (item 350): `h_explUp`'s alternative reads as the stamp `NotQuestionPark sc` (was `PackAlt`).
-- Item 288: the field's other disjunct is the stamp, not `True`.
-- Item 287: `h_vslot`'s other disjunct is not `True` (`ValueLinePacks`' `/stamp`).
-- item 311: `colon_open_map_implicit` states the alternative generically (`{alt : Prop}`), so its premise reads
-- `arm=l/stamp` (a right disjunct other than `True`), as the three generic helpers do since item 309.
-- Item 288: the field's other disjunct is the stamp, not `True`.
-- Item 287: `h_vslot`'s other disjunct is not `True` (`ValueLinePacks`' `/stamp`).
-- item 311: `colon_open_map_implicit` states the alternative generically (`{alt : Prop}`), so its premise reads
-- `arm=l/stamp` (a right disjunct other than `True`), as the three generic helpers do since item 309.
-- 2026-10-24 (B3 [66] col-0 threading): follows CloseLandingWidth — the content/block parks close from `sp_gram` (run + gate).
-- 2026-10-24 (B3 [66] col-0 threading): re-read on the item-354 base.
-- 2026-10-24 (B3 [66] col-0 threading): re-read on the #98/#100 base.
-- 2026-10-30 (item 405): the `?`-park field, its content twin and `h_explUp` read the head-form chain / the `MarkedColsIn` conjunct (ruling "405 a").
-- 2026-10-30 (item 405, Rule 8 fix): the five `h_kslot` positions read `path=∨L→…` / `lvl=∀nv∈markedCols(…)` — the chain re-indexed by the projection, no `∃∃∧`.
-- 2026-10-30 (item 408): `flowKeyPack_of_close.h_key` / `flowKeyRoute_of_open.h_compact_pair` paths lose their `∃`
-- — the value-line pair is `∀ nv ∈ markedCols _, …`, a scanner-state projection (Rule 8), no binder.
def expectedPositions : List String :=
["ctor:pendingMapValue.h_ivl arm=r/stamp path=∨R∧R lvl=(sp_scan.col=n + 1) premises=[SBlockIndented(n)] ⊢ SLYamlStream tail=no",
"ctor:pendingContent.h_key packaged arm=l path=→→∨Lδ∃∃∃∧R∧R∧R∧R∧L∨L∃∧R→→→→→→→→→→ lvl=(possible(…)=true)→(line(…)=line(…))→δImplicitKeyPack∃k∃sp_key∃sp_gram(Or)(ImplicitKeyHead)(GStar)(col(…)=k)(And)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SCompactMapTail(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=before",
"ctor:pendingProps.h_key packaged arm=l/stamp path=∨Lδ∧L∃∧R∧R∧L∨L∃∧R→→→→→→→→→→ lvl=δPropsKeyPack(And)∃k(?)(col(…)=k)(And)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SCompactMapTail(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=before",
"ctor:pendingBlockContent.h_key packaged arm=l path=→→∨Lδ∃∃∃∧R∧R∧R∧R∧L∨L∃∧R→→→→→→→→→→ lvl=(possible(…)=true)→(line(…)=line(…))→δImplicitKeyPack∃k∃sp_key∃sp_gram(Or)(ImplicitKeyHead)(GStar)(col(…)=k)(And)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SCompactMapTail(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=before",
"param:accum_block_on_pendingBlockContent.h_key packaged arm=l path=→→∨Lδ∃∃∃∧R∧R∧R∧R∧L∨L∃∧R→→→→→→→→→→ lvl=(possible(…)=true)→(line(…)=line(…))→δImplicitKeyPack∃k∃sp_key∃sp_gram(Or)(ImplicitKeyHead)(GStar)(col(…)=k)(And)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SCompactMapTail(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=before",
"param:accum_block_on_pendingContent.h_key packaged arm=l path=→→∨Lδ∃∃∃∧R∧R∧R∧R∧L∨L∃∧R→→→→→→→→→→ lvl=(possible(…)=true)→(line(…)=line(…))→δImplicitKeyPack∃k∃sp_key∃sp_gram(Or)(ImplicitKeyHead)(GStar)(col(…)=k)(And)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SCompactMapTail(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=before",
"param:colon_fires_implicit_key.h_key packaged arm=l path=→→∨Lδ∃∃∃∧R∧R∧R∧R∧L∨L∃∧R→→→→→→→→→→ lvl=(possible(…)=true)→(line(…)=line(…))→δImplicitKeyPack∃k∃sp_key∃sp_gram(Or)(ImplicitKeyHead)(GStar)(col(…)=k)(And)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SCompactMapTail(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=before",
"param:colon_fires_props_key.h_key packaged arm=l/stamp path=∨Lδ∧L∃∧R∧R∧L∨L∃∧R→→→→→→→→→→ lvl=δPropsKeyPack(And)∃k(?)(col(…)=k)(And)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SCompactMapTail(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=before",
"param:entryKeyPack_of_dispatch.h_compact arm=l path=∨L∧R∧R∨L∃∧R→→→→→→→→ lvl=(?)(sp_scan.col=n + 1)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockIndented(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:entryKeyPack_of_dispatch.h_ivl arm=r/stamp path=∨R∧R∧R∨L∃∧R→→→→→→→→ lvl=(?)(sp_scan.col=n + 1)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockIndented(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:entryKeyPack_of_dispatch.h_nodeV arm=l path=∨L∃∧R→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockNode(n + 1),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:entryPropsKeyPack_of_dispatch.h_compact arm=l path=∨L∧R∧R∨L∃∧R→→→→→→→→ lvl=(?)(sp_scan.col=n + 1)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockIndented(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:entryPropsKeyPack_of_dispatch.h_ivl arm=r/stamp path=∨R∧R∧R∨L∃∧R→→→→→→→→ lvl=(?)(sp_scan.col=n + 1)∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockIndented(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:entryPropsKeyPack_of_dispatch.h_nodeV arm=l path=∨L∃∧R→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockNode(n + 1),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"ctor:pendingMapValue.h_vslot arm=l/stamp path=∨L∧R∧R lvl=(sc.currentIndent≤n)(sp_scan.col=n + 1) premises=[SBlockIndented(n)] ⊢ SLYamlStream tail=no",
"param:accum_content_on_pendingMapValue_indented.h_ivl_mv arm=r/stamp path=∨R∧R lvl=(sp_scan.col=n + 1) premises=[SBlockIndented(n)] ⊢ SLYamlStream tail=no",
"param:accum_content_on_pendingMapValue_indented.h_vslot arm=l path=∨L∧R lvl=(sp_scan.col=n + 1) premises=[SBlockIndented(n)] ⊢ SLYamlStream tail=no",
"param:entryChainMap.up arm=l path=→→→→→→ lvl=∀nvX∈ns premises=[SBlockIndented(n),SCompactSeqTail(n)] ⊢ ExplValueLine(nvX) tail=no",
"param:explEntryChain_of_keyContent.up arm=l path=→→→→→→→→→ lvl=∀nv∈markedCols(…) premises=[Ne,SBlockMapEntry(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:slotChainMap.up arm=l path=→→→→ lvl=∀nvX∈ns premises=[SBlockIndented(nv)] ⊢ ExplValueLine(nvX) tail=no",
-- Item 371: the restated value-line pack (`⇒ Resume(map(_)::[])▹Stream`, `ResumeFrames.one`'s level)
-- Item 372 (2026-10-27): the pack's route conjunct is now an Or (`∨ SeqTopKey sc`), so its head reads `(Or)`.
"ctor:pendingContent.h_vpack arm=l path=∨L∃∧R→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SSLComments,SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"ctor:pendingProps.h_kslot arm=l path=∨L∃∧R→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockNode(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"ctor:pendingProps.h_kslotE arm=l path=∨L∃∧R→→→→→→→→→→ lvl=∃ne(n=ne + 1)∀nv∈markedCols(…) premises=[SBlockNode(n),SCompactSeqTail(ne),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"ctor:pendingBlockContent.h_kslot arm=l path=∨L→→→→→→→→→→ lvl=∀nv∈markedCols(…) premises=[SSLComments,SCompactSeqTail(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"ctor:pendingBlockContent.h_kslotUp arm=l path=∨L∃∧R→→→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SSLComments,SCompactSeqTail(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"ctor:pendingBlock.h_kslot arm=l path=∨L→→→→→→→→→→ lvl=∀nv∈markedCols(…) premises=[SBlockIndented(n),SCompactSeqTail(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"ctor:pendingBlock.h_kslotUp arm=l path=∨L∃∧R→→→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockIndented(n),SCompactSeqTail(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"ctor:pendingMapValue.h_kslot arm=l path=∨L∃∧R→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockNode(n + 1),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"ctor:pendingMapValue.h_explUp arm=l/stamp path=∨L∃∃∧R∧R→→→→→→→→ lvl=∃sp_q∃ns(GLit('?'))(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:accum_block_on_closeThenBlock.h_vpack arm=l path=∨L∃→→→→→→→→ lvl=∃ns∀nv∈ns premises=[SSLComments,SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:accum_block_on_closeThenBlock.h_vslot arm=l/stamp path=∨L∃∃∧R∧R∧R∧R∧R∧R∧R∧R∨L∃∧R→→→→→→→→ lvl=∃nv∃sp_a(SLYamlStream(sp_start))(sc.currentIndent≤nv)(needIndentCheck(…)=false)(simpleKeyAllowed(…)=true)(sp_gram=sp_scan)(sp_scan.col=nv + 1)(?)(Or)∃nsU(MarkedColsIn)∀nvU∈nsU premises=[SBlockIndented(nv),SIndent(nvU),GLit(':'),SBlockIndented(nvU)] ⊢ ResumeFrames tail=no",
"param:accum_block_on_pendingBlock.h_kslot arm=l path=∨L→→→→→→→→→→ lvl=∀nv∈markedCols(…) premises=[SBlockIndented(n),SCompactSeqTail(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:accum_block_on_pendingBlock.h_kslotUp arm=l path=∨L∃∧R→→→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockIndented(n),SCompactSeqTail(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:accum_block_on_pendingBlockContent.h_kslot arm=l path=∨L→→→→→→→→→→ lvl=∀nv∈markedCols(…) premises=[SSLComments,SCompactSeqTail(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:accum_block_on_pendingBlockContent.h_kslotUp arm=l path=∨L∃∧R→→→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SSLComments,SCompactSeqTail(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:accum_block_on_pendingContent.h_vpack arm=l path=∨L∃→→→→→→→→ lvl=∃ns∀nv∈ns premises=[SSLComments,SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:accum_content_on_pendingBlock_indented.h_kslotUp_old arm=l path=∨L∃∧R→→→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockIndented(n),SCompactSeqTail(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:accum_content_on_pendingBlock_indented.h_kslot_old arm=l path=∨L→→→→→→→→→→ lvl=∀nv∈markedCols(…) premises=[SBlockIndented(n),SCompactSeqTail(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:accum_content_on_pendingMapValue_indented.h_kslot arm=l path=∨L∃∧R→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockNode(n + 1),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:colon_open_map_explicit.hvp arm=l path=→→→→→→ lvl= premises=[SSLComments,SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
-- Item 409 (2026-10-30): `explFrameValueLine` deleted — its position and three writer rows are gone; the two
-- `:` consumers' `h_kslotD` positions are PAID from the pack (rows below re-read by the build).
"param:colon_open_map_implicit.h_kslotD arm=l/stamp path=∨L∃∧R→→→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SCompactMapTail(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=before",
"param:colon_open_map_props.h_kslotD arm=l path=∨L∃∧R→→→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SCompactMapTail(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=before",
"param:flowKeyPack_of_close.h_key arm=l path=∨L∃∃∧R∧R∧R∧L∨L→→→→→→→→→→ lvl=∃k∃sp_key(?)(?)(kc=k)(And)∀nv∈markedCols(…) premises=[SBlockMapEntry(k),SCompactMapTail(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=before",
"param:flowKeyRoute_of_open.h_compact_pair arm=l path=∨L→→→→→→→→ lvl=∀nv∈markedCols(…) premises=[SBlockIndented(nc),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:indicator_open_map.h_explUp_chain arm=l path=∨L∃→→→→→→→→ lvl=∃ns∀nv∈ns premises=[SBlockMapEntry(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:indicator_open_map.h_explUp_chainD arm=l path=∨L∃∧R∧R→→→→→→→→ lvl=∃ns(MarkedColsIn)(?)∀nv∈ns premises=[SBlockMapEntry(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:question_open_map.h_explUp_chain arm=l path=∨L∃→→→→→→→→ lvl=∃ns∀nv∈ns premises=[SBlockMapEntry(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:question_open_map.h_explUp_chainD arm=l path=∨L∃∧R→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
-- 2026-10-31 (item 412): the entry-shaped `pendingMapValue.h_expl` — the chain one frame up sits inside the `?` arm
-- (`∨L ∃ ∧R ∧R ∨L`), projected on `markedCols sc` minus the own mark; and its consumer param twin.
"ctor:pendingMapValue.h_expl arm=l/stamp path=∨L∃∧R∧R∨L→→→→→→→→→ lvl=∃sp_q(GLit('?'))(?)∀nv∈markedCols(…) premises=[Ne,SBlockMapEntry(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:accum_content_on_pendingMapValue_indented.h_expl arm=l/stamp path=∨L∃∧R∧R∨L→→→→→→→→→ lvl=∃sp_q(GLit('?'))(?)∀nv∈markedCols(…) premises=[Ne,SBlockMapEntry(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
-- Item 413: compact_open_map.h_chainUp — the opener's relay parameter (the `-` / slot park's chain over the entry's content).
"param:compact_open_map.h_chainUp arm=l path=∨L→→→→→→→→ lvl=∀nv∈markedCols(…) premises=[SBlockIndented(n),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no",
"param:colon_open_map.h_explUp_chainD arm=l path=∨L∃∧R→→→→→→→→ lvl=∃ns(MarkedColsIn)∀nv∈ns premises=[SBlockMapEntry(k),SIndent(nv),GLit(':'),SBlockIndented(nv)] ⊢ ResumeFrames tail=no"]
-- 2026-10-20 (item 306): 70 → 73 — three origins more, all in `accum_content_on_pendingBlock_indented`:
-- the two key-pack builders' `h_nodeFV`/`h_dframesV` are now built from the entry park's
-- `h_closeFV_old` (frames origin) where item 108 left punts; the rows after them renumber.
-- 2026-10-20 (item 307): 73 → 76 — the three γ roots' `h_vpack` are origins now (two `frames(h_closeFV_old)`,
-- one `step(h_mapFV108)`), each at its `accum_block_on_closeThenBlock.h_vpack` position; the rows after them renumber.
-- 2026-10-20 (item 307, second chain): the content route's `h_vpack` origin reads `⊢ none` under the `match` form.
-- 2026-10-30 (item 405): origins follow `expectedPositions` (head-form chain; `closeThenBlock` births `hkv`+`hkvUp`; declines of ruling "405 a").
-- 2026-10-30 (item 408): rows 67 → 66 — O44 (`accum_flow_open_depth0 #3`'s `h_compact_pair` ← tail(`pendingMapValue.h_expl`))
-- is gone: the `?` entry's singleton pair is DECLINED under the projection face; O45…O66 renumber by one.
def expectedOrigins : List String := [
-- Item 409 (2026-10-30): origins renumbered after `explFrameValueLine`'s rows left (66 → 54).
"O0 accum_block_on_pendingBlock #1 param:accum_block_on_closeThenBlock.h_vpack ← frames(param:accum_block_on_pendingBlock.h_closeFV_old) lvl=n ⊢ none | @n:none → unheld",
"O1 accum_block_on_pendingBlockContent #1 param:accum_block_on_closeThenBlock.h_vpack ← frames(param:accum_block_on_pendingBlockContent.h_closeFV_old) lvl=n ⊢ none | @n:none → unheld",
"O2 accum_block_on_pendingContent #2 param:accum_block_on_closeThenBlock.h_vpack ← frames(param:accum_block_on_pendingContent.h_mapFV108) lvl=— ⊢ none → unheld",
"O4 accum_content_on_pendingBlock_indented #1 ctor:pendingBlockContent.h_key ← route(param:accum_content_on_pendingBlock_indented.h_close_old) lvl=n ⊢ none | @n:none → unheld",
"O5 accum_content_on_pendingBlock_indented #1 ctor:pendingBlockContent.h_key ← frames(param:accum_content_on_pendingBlock_indented.h_closeF_old) lvl=n ⊢ none | @n:none → unheld",
"O6 accum_content_on_pendingBlock_indented #1 ctor:pendingBlockContent.h_key ← frames(param:accum_content_on_pendingBlock_indented.h_closeFV_old) lvl=n ⊢ none | @n:none → unheld",
"O7 accum_content_on_pendingBlock_indented #1 ctor:pendingBlockContent.h_key ← route(param:accum_content_on_pendingBlock_indented.h_close_entry_old) lvl=n ⊢ none | @n:none → unheld",
"O8 accum_content_on_pendingBlock_indented #1 ctor:pendingProps.h_key ← route(param:accum_content_on_pendingBlock_indented.h_close_old) lvl=n ⊢ none | @n:none → unheld",
"O9 accum_content_on_pendingBlock_indented #1 ctor:pendingProps.h_key ← frames(param:accum_content_on_pendingBlock_indented.h_closeF_old) lvl=n ⊢ none | @n:none → unheld",
"O10 accum_content_on_pendingBlock_indented #1 ctor:pendingProps.h_key ← frames(param:accum_content_on_pendingBlock_indented.h_closeFV_old) lvl=n ⊢ none | @n:none → unheld",
"O11 accum_content_on_pendingBlock_indented #3 ctor:pendingBlockContent.h_key ← route(param:accum_content_on_pendingBlock_indented.h_close_old) lvl=n ⊢ none | @n:none → unheld",
"O12 accum_content_on_pendingBlock_indented #3 ctor:pendingBlockContent.h_key ← frames(param:accum_content_on_pendingBlock_indented.h_closeF_old) lvl=n ⊢ none | @n:none → unheld",
"O13 accum_content_on_pendingBlock_indented #3 ctor:pendingBlockContent.h_key ← frames(param:accum_content_on_pendingBlock_indented.h_closeFV_old) lvl=n ⊢ none | @n:none → unheld",
"O14 accum_content_on_pendingBlock_indented #3 ctor:pendingBlockContent.h_key ← route(param:accum_content_on_pendingBlock_indented.h_close_entry_old) lvl=n ⊢ none | @n:none → unheld",
"O15 accum_content_on_pendingMapValue_indented #1 ctor:pendingContent.h_key ← route(param:accum_content_on_pendingMapValue_indented.h_close_old) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
-- Item 371: the restated value-line pack (`⇒ Resume(map(_)::[])▹Stream`, `ResumeFrames.one`'s level)
"O3 accum_block_pending #7 param:accum_block_on_closeThenBlock.h_vpack ← tail(door:pendingMapValue.h_expl) lvl=nmv ⊢ held(h_expl51,h_seqF✝) | @nmv:held(h_expl51,h_seqF✝) → held",
-- 2026-10-31 (item 412): origins renumbered past the two new `h_expl` positions; the entry-shaped chain's
-- consumer origins (frames and tails read through the park's own entry) are the net +9.
"O16 accum_content_on_pendingMapValue_indented #1 ctor:pendingContent.h_key ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n:held(h_expl,h_seqF168) → unheld",
"O17 accum_content_on_pendingMapValue_indented #1 ctor:pendingContent.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_closeF99) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
"O18 accum_content_on_pendingMapValue_indented #1 ctor:pendingContent.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_frames99) lvl=— ⊢ held(h_frames99,h_closeFV108,h_framesV108) → unheld",
"O19 accum_content_on_pendingMapValue_indented #1 ctor:pendingContent.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_closeFV108) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
"O20 accum_content_on_pendingMapValue_indented #1 ctor:pendingContent.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_framesV108) lvl=— ⊢ held(h_frames99,h_closeFV108,h_framesV108) → unheld",
"O21 accum_content_on_pendingMapValue_indented #1 ctor:pendingContent.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_seqF168) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
"O23 accum_content_on_pendingMapValue_indented #1 param:entryKeyPack_of_dispatch.h_compact ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ level-var | @n:held(h_expl,h_seqF168) → unheld",
"O24 accum_content_on_pendingMapValue_indented #1 param:entryKeyPack_of_dispatch.h_ivl ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ level-var | @n:held(h_expl,h_seqF168) → unheld",
"O25 accum_content_on_pendingMapValue_indented #1 ctor:pendingProps.h_key ← route(param:accum_content_on_pendingMapValue_indented.h_close_old) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
"O26 accum_content_on_pendingMapValue_indented #1 ctor:pendingProps.h_key ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n:held(h_expl,h_seqF168) → unheld",
"O27 accum_content_on_pendingMapValue_indented #1 ctor:pendingProps.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_closeF99) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
"O28 accum_content_on_pendingMapValue_indented #1 ctor:pendingProps.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_frames99) lvl=— ⊢ held(h_frames99,h_closeFV108,h_framesV108) → unheld",
"O29 accum_content_on_pendingMapValue_indented #1 ctor:pendingProps.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_closeFV108) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
"O30 accum_content_on_pendingMapValue_indented #1 ctor:pendingProps.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_framesV108) lvl=— ⊢ held(h_frames99,h_closeFV108,h_framesV108) → unheld",
"O31 accum_content_on_pendingMapValue_indented #1 param:entryPropsKeyPack_of_dispatch.h_compact ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ level-var | @n:held(h_expl,h_seqF168) → unheld",
"O32 accum_content_on_pendingMapValue_indented #1 param:entryPropsKeyPack_of_dispatch.h_ivl ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ level-var | @n:held(h_expl,h_seqF168) → unheld",
"O34 accum_content_on_pendingMapValue_indented #3 ctor:pendingContent.h_key ← route(param:accum_content_on_pendingMapValue_indented.h_close_old) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
"O35 accum_content_on_pendingMapValue_indented #3 ctor:pendingContent.h_key ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n:held(h_expl,h_seqF168) → unheld",
"O36 accum_content_on_pendingMapValue_indented #3 ctor:pendingContent.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_closeF99) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
"O37 accum_content_on_pendingMapValue_indented #3 ctor:pendingContent.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_frames99) lvl=— ⊢ held(h_frames99,h_closeFV108,h_framesV108) → unheld",
"O38 accum_content_on_pendingMapValue_indented #3 ctor:pendingContent.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_closeFV108) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
"O39 accum_content_on_pendingMapValue_indented #3 ctor:pendingContent.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_framesV108) lvl=— ⊢ held(h_frames99,h_closeFV108,h_framesV108) → unheld",
"O40 accum_content_on_pendingMapValue_indented #3 ctor:pendingContent.h_key ← frames(param:accum_content_on_pendingMapValue_indented.h_seqF168) lvl=n + 1 ⊢ held(h_frames99,h_closeFV108,h_framesV108) | @n + 1:none → unheld",
"O42 accum_content_on_pendingMapValue_indented #2 param:entryKeyPack_of_dispatch.h_compact ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ level-var | @n:held(h_expl,h_seqF168) → unheld",
"O43 accum_content_on_pendingMapValue_indented #2 param:entryKeyPack_of_dispatch.h_ivl ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ level-var | @n:held(h_expl,h_seqF168) → unheld",
"O22 accum_content_on_pendingMapValue_indented #1 ctor:pendingContent.h_vpack ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ level-var | @n:held(h_expl,h_seqF168) → unheld",
"O33 accum_content_on_pendingMapValue_indented #2 ctor:pendingContent.h_vpack ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ level-var | @n:held(h_expl,h_seqF168) → unheld",
"O41 accum_content_on_pendingMapValue_indented #3 ctor:pendingContent.h_vpack ← tail(param:accum_content_on_pendingMapValue_indented.h_expl) lvl=n ⊢ level-var | @n:held(h_expl,h_seqF168) → unheld",
"O45 accum_step_flow #1 ctor:pendingContent.h_key ← invariant(FlowBaseRoutes@let:h_tuple<let:h_gap(tl,h_gap)) lvl=— ⊢ level-var → unheld",
"O46 accum_step_flow #1 param:flowKeyPack_of_close.h_key ← invariant(FlowBaseRoutes@let:h_tuple<let:h_gap(tl,h_gap)) lvl=— ⊢ level-var → unheld",
"O47 accum_step_flow #2 ctor:pendingContent.h_key ← invariant(FlowBaseRoutes@let:h_tuple<let:h_gap(tl,h_gap)) lvl=— ⊢ level-var → unheld",
"O48 accum_step_flow #2 param:flowKeyPack_of_close.h_key ← invariant(FlowBaseRoutes@let:h_tuple<let:h_gap(tl,h_gap)) lvl=— ⊢ level-var → unheld",
"O49 compact_open_map #1 ctor:pendingMapValue.h_ivl ← route(param:compact_open_map.h_close_old) lvl=n ⊢ held(h_expl105) | @n:none → unheld",
"O50 compact_open_map #1 ctor:pendingMapValue.h_vslot ← route(param:compact_open_map.h_close_old) lvl=n ⊢ held(h_expl105) | @n:none → unheld",
"O51 content_dispatch_routed #1 ctor:pendingContent.h_key ← frames(param:content_dispatch_routed.h_resumectx) lvl=k ⊢ level-var | @k:none → unheld",
"O52 content_dispatch_routed #2 ctor:pendingContent.h_key ← frames(param:content_dispatch_routed.h_resumectx) lvl=k ⊢ level-var | @k:none → unheld",
"O53 question_open_map #1 ctor:pendingMapValue.h_ivl ← frames(param:question_open_map.h_nodoc_land) lvl=k ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) | @k:held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O54 question_open_map #1 ctor:pendingMapValue.h_ivl ← concl(concl:suffixMapRoute) lvl=— ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O55 question_open_map #1 ctor:pendingMapValue.h_ivl ← concl(concl:nodocMapRoute) lvl=— ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O56 question_open_map #1 ctor:pendingMapValue.h_ivl ← concl(concl:markerMapRoute) lvl=— ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O57 question_open_map #1 ctor:pendingMapValue.h_ivl ← concl(concl:propsMapRoute) lvl=— ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O58 question_open_map #1 ctor:pendingMapValue.h_ivl ← route(param:question_open_map.h_stream_land) lvl=— ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O59 question_open_map #1 ctor:pendingMapValue.h_vslot ← frames(param:question_open_map.h_nodoc_land) lvl=k ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) | @k:held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O60 question_open_map #1 ctor:pendingMapValue.h_vslot ← concl(concl:suffixMapRoute) lvl=— ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O61 question_open_map #1 ctor:pendingMapValue.h_vslot ← concl(concl:nodocMapRoute) lvl=— ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O62 question_open_map #1 ctor:pendingMapValue.h_vslot ← concl(concl:markerMapRoute) lvl=— ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O63 question_open_map #1 ctor:pendingMapValue.h_vslot ← concl(concl:propsMapRoute) lvl=— ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O64 question_open_map #1 ctor:pendingMapValue.h_vslot ← route(param:question_open_map.h_stream_land) lvl=— ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O65 question_open_map #1 ctor:pendingMapValue.h_kslot ← frames(param:question_open_map.h_res_land) lvl=k ⊢ held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) | @k:held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → held",
"O66 question_open_map #1 ctor:pendingMapValue.h_explUp ← frames(param:question_open_map.h_explUp_chainD) lvl=k ⊢ none | @k:held(h_res_land,h_resV_land,h✝,right✝,h_routeF,h_route51F) → unheld",
"O44 accum_flow_open_depth0 #3 param:flowKeyRoute_of_open.h_compact_pair ← tail(door:pendingMapValue.h_expl) lvl=n_old ⊢ level-var | @n_old:held(h_expl,h_seqF✝) → unheld"]
-- Item 287: the eleven writers of `accum_block_on_closeThenBlock.h_vslot`, read
-- as `ValueLinePacks.expectedWriters` reads them — the ten `punt`s are `stamp`s,
-- and the value park's split writes both. Item 288: the four writers of
-- `pendingMapValue.h_vslot`'s decline write the stamp — three flat, and
-- `compact_open_map`'s `:` branch inside its relay.
-- 2026-10-20 (item 306): the rows citing the renumbered origins (O69 → O72 and the
-- rows after the three new `frames(h_closeFV_old)` origins O3/O7/O10) re-read; the six
-- key-pack stack rows of `accum_content_on_pendingBlock_indented` are built, not punted.
-- 2026-10-20 (item 307): the rows re-read with the three new origins and the renumbering; the three γ roots'
-- `h_vpack` rows are built (`paid:frames`, `step`) where item 301 read punts, and `closeThenBlock`'s `h_kslot` is an alternation.
-- 2026-10-20 (item 307, second chain): re-read with the `match` forms.
-- 2026-10-21 (item 313): the props parks' `h_kslot`/`h_kslotE` and the mapping value's `h_kslot` are written `step/built`
-- (through `PackAlt.step_content`) where the census read `relay/built` or `via/built`; origins and holdings unchanged.
-- 2026-10-21 (item 314): 39 rows of the content lemmas re-read — the declining arm of each `match` hands the
-- alternative on (through `PackAlt.step_content`/`step_dispatch` or verbatim), so `none=[punt]` leaves the row and a `via`
-- reads as a `step`; origins and holdings unchanged.
-- 2026-10-21 (item 318): one row re-read — `accum_block_on_pendingBlock`'s `h_kslot` at the sibling `-` (`#1`) reads
-- `none=[stamp]` where it read `none=[punt]`: the declining arm hands the park's alternative through
-- `PackAlt.step_blockEntry` (the block lane's transport, item 319's consumer probe) instead of punting with `trivial`.
-- 2026-10-21 (item 319): 19 rows re-read — the block lane's paid arms hand the park's alternative on (`stamp` or a
-- `step` through `PackAlt.step_blockEntry`) where they punted with `trivial`; regenerated from the census's own rows.
-- 2026-10-21 (item 320): 3 rows re-read — the marker arms' premises pay through `PackAlt.ofRefused h_noek…` (a `fact`
-- reading) where they punted, and `accum_block_on_closeThenBlock`'s `h_seqFramesV` steps through the transport; regenerated
-- from the census's own rows.
-- 2026-10-21 (item 321): 6 rows re-read — `accum_block_on_noPending`'s fresh fields read a fact (its own `h_noek`,
-- through `PackAlt.step_blockEntry`) where they punted, and `colon_open_map_props`'s leaves step through `PackAlt.step_value`;
-- regenerated from the census's own rows.
-- 2026-10-21 (item 322): 2 rows re-read — the colon openers' leaves hand the alternative on through the step premise
-- (`h_alt_step h_alt`, which this census reads as a stamped transport) where they punted; regenerated from the census's own rows.
-- 2026-10-21 (item 324): 3 rows re-read — `accum_flow_open_depth0`'s three `flowKeyRoute_of_open.h_compact_pair` supplies:
-- the `---` arm (`#1`) pays through `PackAlt.ofRefused h_noekS` and the `pendingBlock`/`pendingMapValue` arms (`#2`/`#3`)
-- hand the park's alternative on (`Or.inr h_alt`), each read `none=[stamp]` where it punted; regenerated from the census's own rows.
-- 2026-10-23 (item 345): `accum_content_pending #1–#3 h_kslotUp` punt → paid:chain off `pendingProps.h_kslotE` (the singleton relays).
-- 2026-10-24 (item 350): the `:` producers write `h_explUp`'s alternative as the stamp `NotQuestionPark sc`;
-- the `?`-entry consumers spend `empty` (`ns := []`) on the `inr` arm instead of relaying it.
-- 2026-10-23 (item 344): `accum_block_pending` #2 pays `h_vpack` from `h_kslot` (was punt).
-- item 311: the two closes hand `flowVPack_of_close resume.vslot` on through `.imp id PackAlt.ofGateClose`, so the
-- writer reads `step` where it read `via`; the origin it carries is the same.
-- Item 300: the content cascade's marker arm refutes a block-scalar head by
-- `absurd` (the guard's `h_poss` against the head's cleared key), a third leaf.
-- 2026-10-23 (item 344): `accum_block_pending` #2 pays `h_vpack` from `h_kslot` (was punt).
-- item 311: the two closes hand `flowVPack_of_close resume.vslot` on through `.imp id PackAlt.ofGateClose`, so the
-- writer reads `step` where it read `via`; the origin it carries is the same.
-- Item 300: the content cascade's marker arm refutes a block-scalar head by
-- `absurd` (the guard's `h_poss` against the head's cleared key), a third leaf.
-- 2026-10-24 (B3 [66] col-0 threading): follows CloseLandingWidth — the content/block parks close from `sp_gram` (run + gate).
-- 2026-10-24 (B3 [66] col-0 threading): re-read on the item-354 base.
-- 2026-10-24 (B3 [66] col-0 threading): re-read on the #98/#100 base.
-- 2026-10-30 (item 405): rows follow `expectedOrigins` (the `?`-park chain ladder PAID, ruling "405 a").
-- 2026-10-30 (item 405, Rule 8 fix): the eight `h_kslot`-fed rows read `paid:other/built` (the projection `markedCols sc` is an `other` level) and `none=[fact,…]` where `MarkedColsIn.self` is spent.
def expectedRows : List String :=
["accum_block_on_noPending #1 ctor:pendingBlock.h_kslot := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
-- Item 409 (2026-10-30): rows re-read with the renumbered origins and the paid `h_kslotD` consumers.
"accum_block_on_noPending #1 ctor:pendingBlock.h_kslotUp := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_on_noPending #1 param:indicator_open_map.h_explUp_chain := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_on_pendingBlock #1 param:accum_block_on_closeThenBlock.h_vpack := paid:frames/built pos=[] origins=[O0] none=[stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #1 param:accum_block_on_closeThenBlock.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_on_pendingBlockContent #1 param:accum_block_on_closeThenBlock.h_vpack := paid:frames/built pos=[] origins=[O1] none=[stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlockContent #1 param:accum_block_on_closeThenBlock.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_on_pendingBlockContent #1 param:indicator_open_map.h_explUp_chain := punt/punt pos=[] origins=[] none=[punt] ⊢ —",
"accum_block_on_pendingContent #1 param:accum_block_on_closeThenBlock.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_on_pendingContent #2 param:accum_block_on_closeThenBlock.h_vpack := paid:frames/built pos=[] origins=[O2] none=[stamp] ⊢ none-held 0/1",
"accum_block_on_pendingContent #2 param:accum_block_on_closeThenBlock.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_pending #1 param:accum_block_on_closeThenBlock.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_pending #2 param:accum_block_on_closeThenBlock.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_pending #3 param:accum_block_on_closeThenBlock.h_vpack := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_pending #3 param:accum_block_on_closeThenBlock.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_pending #4 param:accum_block_on_closeThenBlock.h_vpack := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_pending #4 param:accum_block_on_closeThenBlock.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_pending #5 param:accum_block_on_closeThenBlock.h_vpack := punt/punt pos=[] origins=[] none=[punt] ⊢ —",
"accum_block_pending #5 param:accum_block_on_closeThenBlock.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_pending #6 param:accum_block_on_closeThenBlock.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_content_on_pendingBlock_indented #2 ctor:pendingBlockContent.h_key := paid:other/built pos=[] origins=[] none=[absurd] ⊢ absurd*",
"accum_content_on_pendingMapValue_indented #1 ctor:pendingProps.h_kslotE := punt/punt pos=[] origins=[] none=[punt] ⊢ —",
"accum_content_on_pendingMapValue_indented #2 ctor:pendingContent.h_key := paid:other/built pos=[] origins=[] none=[absurd] ⊢ absurd*",
"accum_content_pending #1 ctor:pendingProps.h_key := alt/built pos=[] origins=[] none=[fact,stamp] ⊢ stamp*",
"accum_content_pending #2 ctor:pendingProps.h_key := alt/built pos=[] origins=[] none=[fact,stamp] ⊢ stamp*",
"accum_content_pending #1 ctor:pendingContent.h_key := relay/built pos=[] origins=[] none=[absurd,punt,stamp] ⊢ stamp*",
"accum_content_pending #2 ctor:pendingContent.h_key := relay/built pos=[] origins=[] none=[absurd,punt,stamp] ⊢ stamp*",
"accum_content_pending #1 ctor:pendingBlockContent.h_key := relay/built pos=[] origins=[] none=[absurd,punt,stamp] ⊢ stamp*",
"accum_content_pending #3 ctor:pendingContent.h_key := relay/built pos=[] origins=[] none=[absurd,punt,stamp] ⊢ stamp*",
"accum_content_pending #2 ctor:pendingBlockContent.h_key := paid:other/built pos=[] origins=[] none=[absurd] ⊢ absurd*",
"accum_content_pending #4 ctor:pendingContent.h_key := paid:other/built pos=[] origins=[] none=[absurd] ⊢ absurd*",
"accum_content_pending #3 ctor:pendingBlockContent.h_key := relay/built pos=[] origins=[] none=[absurd,punt,stamp] ⊢ stamp*",
"accum_content_pending #5 ctor:pendingContent.h_key := relay/built pos=[] origins=[] none=[absurd,punt,stamp] ⊢ stamp*",
"accum_flow_open_depth0 #1 param:flowKeyRoute_of_open.h_compact_pair := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_flow_open_depth0 #1 param:explEntryChain_of_keyContent.up := relay/built pos=[ctor:pendingMapValue.h_expl] origins=[O66] ⊢ none-held 0/1",
"colon_open_map #1 ctor:pendingMapValue.h_ivl := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map #1 ctor:pendingMapValue.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_explicit #1 ctor:pendingMapValue.h_kslot := punt/stamp pos=[] origins=[] none=[stamp,punt] ⊢ —",
"colon_open_map_implicit #1 ctor:pendingMapValue.h_ivl := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_implicit #1 ctor:pendingMapValue.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_props #1 ctor:pendingMapValue.h_ivl := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_props #1 ctor:pendingMapValue.h_vslot := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"compact_open_map #1 ctor:pendingMapValue.h_kslot := punt/stamp pos=[] origins=[] none=[stamp,punt] ⊢ —",
"content_dispatch_routed #1 ctor:pendingProps.h_key := relay/built pos=[] origins=[] none=[fact,stamp] ⊢ stamp*",
"content_dispatch_routed #1 ctor:pendingProps.h_kslot := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"content_dispatch_routed #1 ctor:pendingProps.h_kslotE := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"content_dispatch_routed #2 ctor:pendingProps.h_key := relay/built pos=[] origins=[] none=[fact,stamp] ⊢ stamp*",
"content_dispatch_routed #2 ctor:pendingProps.h_kslot := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"content_dispatch_routed #2 ctor:pendingProps.h_kslotE := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"content_dispatch_routed #1 ctor:pendingContent.h_vpack := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"content_dispatch_routed #2 ctor:pendingContent.h_vpack := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map #1 ctor:pendingMapValue.h_explUp := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_explicit #1 ctor:pendingMapValue.h_explUp := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_implicit #1 ctor:pendingMapValue.h_explUp := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_props #1 ctor:pendingMapValue.h_explUp := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"compact_open_map #1 ctor:pendingMapValue.h_explUp := alt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
-- Item 418: closeThenBlock's h_kslotUp arm and its domained h_explUp_chainD argument are BUILT off h_vslot
-- (origin O66) instead of punted; slotChainMap.up gains the writer; pendingBlock's landed-? catch-all pays on h_kslot
-- (entryChainMap.up relays it).
"accum_block_on_closeThenBlock #1 ctor:pendingBlock.h_kslotUp := paid:chain/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] none=[stamp,punt] ⊢ none-held 0/1",
"accum_block_on_closeThenBlock #1 param:indicator_open_map.h_explUp_chainD := alt/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] none=[stamp,absurd,punt] ⊢ none-held 0/1",
"accum_block_on_closeThenBlock #4 param:slotChainMap.up := paid:chain/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #1 param:indicator_open_map.h_explUp_chainD := alt/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] none=[stamp,absurd,punt] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #6 param:entryChainMap.up := relay/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_on_closeThenBlock #2 ctor:pendingBlock.h_kslotUp := paid:chain/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #1 ctor:pendingBlockContent.h_kslotUp := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslotUp_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #1 ctor:pendingProps.h_kslot := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #2 ctor:pendingBlockContent.h_kslotUp := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslotUp_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #3 ctor:pendingBlockContent.h_kslotUp := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslotUp_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_pending #1 ctor:pendingBlockContent.h_kslotUp := paid:chain/built pos=[ctor:pendingProps.h_kslotE] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_pending #2 ctor:pendingBlockContent.h_kslotUp := paid:chain/built pos=[ctor:pendingProps.h_kslotE] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_pending #3 ctor:pendingBlockContent.h_kslotUp := paid:chain/built pos=[ctor:pendingProps.h_kslotE] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_pending #1 param:accum_content_on_pendingBlock_indented.h_kslotUp_old := relay/built pos=[ctor:pendingBlock.h_kslotUp] origins=[O66] ⊢ none-held 0/1",
"accum_step_flow #1 ctor:pendingContent.h_vpack := punt/stamp pos=[] origins=[] none=[stamp,punt] ⊢ —",
"accum_step_flow #2 ctor:pendingContent.h_vpack := punt/stamp pos=[] origins=[] none=[stamp,punt] ⊢ —",
"colon_open_map #1 ctor:pendingMapValue.h_kslot := paid:chain/built pos=[param:colon_open_map.h_explUp_chainD] origins=[O66] none=[stamp] ⊢ none-held 0/1",
-- 2026-10-25 (item 359): punt/punt → punt/stamp — the value-park face beside this parameter pays
-- `PackAlt.ofRefused (h_noek …)`, which the walker reads as a stamp origin.
"accum_block_on_noPending #1 param:indicator_open_map.h_explUp_chainD := punt/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"accum_block_on_pendingBlock #1 ctor:pendingBlock.h_kslotUp := paid:chain/built pos=[param:accum_block_on_pendingBlock.h_kslotUp] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #2 ctor:pendingBlock.h_kslotUp := paid:chain/built pos=[param:accum_block_on_pendingBlock.h_kslotUp] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #3 ctor:pendingBlock.h_kslotUp := paid:chain/built pos=[param:accum_block_on_pendingBlock.h_kslotUp] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlockContent #1 ctor:pendingBlock.h_kslotUp := paid:chain/built pos=[param:accum_block_on_pendingBlockContent.h_kslotUp] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlockContent #1 param:indicator_open_map.h_explUp_chainD := punt/punt pos=[] origins=[] none=[punt] ⊢ —",
"accum_block_pending #1 param:accum_block_on_pendingBlockContent.h_kslotUp := relay/built pos=[ctor:pendingBlockContent.h_kslotUp] origins=[O66] ⊢ none-held 0/1",
"accum_block_pending #1 param:accum_block_on_pendingBlock.h_kslotUp := relay/built pos=[ctor:pendingBlock.h_kslotUp] origins=[O66] ⊢ none-held 0/1",
-- Item 371: the restated value-line pack (`⇒ Resume(map(_)::[])▹Stream`, `ResumeFrames.one`'s level)
"accum_content_pending #1 ctor:pendingBlockContent.h_kslot := paid:chain/built pos=[ctor:pendingProps.h_kslotE] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_pending #2 ctor:pendingBlockContent.h_kslot := paid:chain/built pos=[ctor:pendingProps.h_kslotE] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_pending #3 ctor:pendingBlockContent.h_kslot := paid:chain/built pos=[ctor:pendingProps.h_kslotE] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_flow_open_depth0 #3 param:flowKeyRoute_of_open.h_compact_pair := paid:tail/built pos=[ctor:pendingMapValue.h_expl] origins=[O44,O66] none=[stamp,punt] ⊢ none-held 0/2",
-- 2026-10-31 (item 412): rows re-keyed to the renumbered origins (O16 → O62) plus the seven writers of the
-- entry-shaped `h_expl` (net +7).
"accum_block_on_closeThenBlock #1 ctor:pendingBlock.h_kslot := paid:other/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] none=[fact,punt] ⊢ none-held 0/1",
"accum_block_on_closeThenBlock #1 param:indicator_open_map.h_explUp_chain := alt/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] none=[stamp,punt] ⊢ none-held 0/1",
"accum_block_on_closeThenBlock #1 param:slotChainMap.up := paid:chain/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_on_closeThenBlock #2 param:slotChainMap.up := paid:chain/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] none=[absurd] ⊢ none-held 0/1",
"accum_block_on_closeThenBlock #3 param:slotChainMap.up := relay/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_on_closeThenBlock #1 param:colon_open_map_explicit.hvp := relay/built pos=[param:accum_block_on_closeThenBlock.h_vpack] origins=[O0,O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O22,O25,O26,O27,O28,O29,O30,O33,O34,O35,O36,O37,O38,O39,O40,O41,O45,O47,O51,O52,O65,O66] ⊢ some-held 2/44",
"accum_block_on_closeThenBlock #2 ctor:pendingBlock.h_kslot := paid:other/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] none=[fact,stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #1 ctor:pendingBlock.h_kslot := paid:other/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] none=[fact,stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #2 ctor:pendingBlock.h_kslot := paid:other/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] none=[fact,stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #1 param:indicator_open_map.h_explUp_chain := alt/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] none=[stamp,punt] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #1 param:entryChainMap.up := paid:chain/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #2 param:entryChainMap.up := relay/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #3 param:entryChainMap.up := relay/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #4 param:entryChainMap.up := paid:chain/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #5 param:entryChainMap.up := relay/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #1 param:colon_open_map_explicit.hvp := paid:chain/built pos=[param:accum_block_on_pendingBlock.h_kslot,param:accum_block_on_pendingBlock.h_kslotUp] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #3 ctor:pendingBlock.h_kslot := paid:other/built pos=[param:accum_block_on_pendingBlock.h_kslot] origins=[O66] none=[fact,stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlockContent #1 ctor:pendingBlock.h_kslot := paid:other/built pos=[param:accum_block_on_pendingBlockContent.h_kslot] origins=[O66] none=[fact,stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlockContent #1 param:colon_open_map_explicit.hvp := paid:chain/built pos=[param:accum_block_on_pendingBlockContent.h_kslot,param:accum_block_on_pendingBlockContent.h_kslotUp] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlockContent #1 param:colon_fires_implicit_key.h_key := relay/built pos=[param:accum_block_on_pendingBlockContent.h_key] origins=[O4,O5,O6,O7,O11,O12,O13,O14,O66] ⊢ none-held 0/9",
"accum_block_on_pendingContent #1 param:colon_fires_implicit_key.h_key := relay/built pos=[param:accum_block_on_pendingContent.h_key] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"accum_block_on_pendingContent #1 param:accum_block_on_closeThenBlock.h_vpack := relay/built pos=[param:accum_block_on_pendingContent.h_vpack] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O22,O25,O26,O27,O28,O29,O30,O33,O34,O35,O36,O37,O38,O39,O40,O41,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/40",
"accum_block_pending #1 param:accum_block_on_pendingContent.h_key := relay/built pos=[ctor:pendingContent.h_key] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"accum_block_pending #1 param:accum_block_on_pendingContent.h_vpack := step/built pos=[ctor:pendingContent.h_vpack] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O22,O25,O26,O27,O28,O29,O30,O33,O34,O35,O36,O37,O38,O39,O40,O41,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/40",
"accum_block_pending #1 param:colon_fires_props_key.h_key := relay/built pos=[ctor:pendingProps.h_key] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"accum_block_pending #1 param:accum_block_on_closeThenBlock.h_vpack := paid:chain/built pos=[ctor:pendingProps.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp] ⊢ some-held 1/37",
"accum_block_pending #2 param:accum_block_on_closeThenBlock.h_vpack := paid:chain/built pos=[ctor:pendingProps.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp] ⊢ some-held 1/37",
"accum_block_pending #1 param:accum_block_on_pendingBlockContent.h_kslot := relay/built pos=[ctor:pendingBlockContent.h_kslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_pending #1 param:accum_block_on_pendingBlockContent.h_key := relay/built pos=[ctor:pendingBlockContent.h_key] origins=[O4,O5,O6,O7,O11,O12,O13,O14,O66] ⊢ none-held 0/9",
"accum_block_pending #1 param:accum_block_on_pendingBlock.h_kslot := relay/built pos=[ctor:pendingBlock.h_kslot] origins=[O66] ⊢ none-held 0/1",
"accum_block_pending #6 param:accum_block_on_closeThenBlock.h_vpack := paid:chain/built pos=[ctor:pendingMapValue.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp] ⊢ some-held 1/37",
"accum_block_pending #7 param:accum_block_on_closeThenBlock.h_vpack := via/built pos=[ctor:pendingMapValue.h_kslot,ctor:pendingMapValue.h_explUp] origins=[O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[fact] ⊢ some-held 2/38",
"accum_block_pending #7 param:accum_block_on_closeThenBlock.h_vslot := alt/built pos=[ctor:pendingMapValue.h_explUp] origins=[O66] none=[punt,stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #1 ctor:pendingBlockContent.h_key := via/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O4,O5,O6,O7,O66] none=[fact] ⊢ none-held 0/5",
"accum_content_on_pendingBlock_indented #1 ctor:pendingBlockContent.h_kslot := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #1 param:entryKeyPack_of_dispatch.h_nodeV := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #1 param:entryKeyPack_of_dispatch.h_compact := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #1 param:entryKeyPack_of_dispatch.h_ivl := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #1 ctor:pendingProps.h_key := via/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O8,O9,O10,O66] none=[fact] ⊢ none-held 0/4",
"accum_content_on_pendingBlock_indented #1 ctor:pendingProps.h_kslotE := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #1 param:entryPropsKeyPack_of_dispatch.h_nodeV := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #1 param:entryPropsKeyPack_of_dispatch.h_compact := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #1 param:entryPropsKeyPack_of_dispatch.h_ivl := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #2 ctor:pendingBlockContent.h_kslot := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #3 ctor:pendingBlockContent.h_key := via/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O11,O12,O13,O14,O66] none=[fact] ⊢ none-held 0/5",
"accum_content_on_pendingBlock_indented #3 ctor:pendingBlockContent.h_kslot := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #2 param:entryKeyPack_of_dispatch.h_nodeV := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #2 param:entryKeyPack_of_dispatch.h_compact := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingBlock_indented #2 param:entryKeyPack_of_dispatch.h_ivl := paid:chain/built pos=[param:accum_content_on_pendingBlock_indented.h_kslot_old] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_content_on_pendingMapValue_indented #1 ctor:pendingContent.h_key := via/built pos=[param:accum_content_on_pendingMapValue_indented.h_kslot,param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp,punt,fact] ⊢ some-held 1/37",
"accum_content_on_pendingMapValue_indented #1 ctor:pendingContent.h_vpack := via/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl,param:accum_content_on_pendingMapValue_indented.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O22,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[fact] ⊢ some-held 1/38",
"accum_content_on_pendingMapValue_indented #1 param:entryKeyPack_of_dispatch.h_nodeV := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"accum_content_on_pendingMapValue_indented #1 param:entryKeyPack_of_dispatch.h_compact := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O23,O66] none=[stamp,punt] ⊢ none-held 0/2",
"accum_content_on_pendingMapValue_indented #1 param:entryKeyPack_of_dispatch.h_ivl := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O24,O66] none=[stamp,punt] ⊢ none-held 0/2",
"accum_content_on_pendingMapValue_indented #1 ctor:pendingProps.h_key := via/built pos=[param:accum_content_on_pendingMapValue_indented.h_kslot,param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp,punt,fact] ⊢ some-held 1/37",
"accum_content_on_pendingMapValue_indented #1 ctor:pendingProps.h_kslot := step/built pos=[param:accum_content_on_pendingMapValue_indented.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"accum_content_on_pendingMapValue_indented #1 param:entryPropsKeyPack_of_dispatch.h_nodeV := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"accum_content_on_pendingMapValue_indented #1 param:entryPropsKeyPack_of_dispatch.h_compact := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O31,O66] none=[stamp,punt] ⊢ none-held 0/2",
"accum_content_on_pendingMapValue_indented #1 param:entryPropsKeyPack_of_dispatch.h_ivl := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O32,O66] none=[stamp,punt] ⊢ none-held 0/2",
"accum_content_on_pendingMapValue_indented #1 param:explEntryChain_of_keyContent.up := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O66] ⊢ none-held 0/1",
"accum_content_on_pendingMapValue_indented #2 ctor:pendingContent.h_vpack := via/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl,param:accum_content_on_pendingMapValue_indented.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O33,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[fact] ⊢ some-held 1/38",
"accum_content_on_pendingMapValue_indented #3 ctor:pendingContent.h_key := via/built pos=[param:accum_content_on_pendingMapValue_indented.h_kslot,param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp,punt,fact] ⊢ some-held 1/37",
"accum_content_on_pendingMapValue_indented #3 ctor:pendingContent.h_vpack := via/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl,param:accum_content_on_pendingMapValue_indented.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O41,O45,O47,O51,O52,O65,O66] none=[fact] ⊢ some-held 1/38",
"accum_content_on_pendingMapValue_indented #3 param:explEntryChain_of_keyContent.up := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O66] ⊢ none-held 0/1",
"accum_content_on_pendingMapValue_indented #2 param:entryKeyPack_of_dispatch.h_nodeV := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"accum_content_on_pendingMapValue_indented #2 param:entryKeyPack_of_dispatch.h_compact := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O42,O66] none=[stamp,punt] ⊢ none-held 0/2",
"accum_content_on_pendingMapValue_indented #2 param:entryKeyPack_of_dispatch.h_ivl := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O43,O66] none=[stamp,punt] ⊢ none-held 0/2",
"accum_content_on_pendingMapValue_indented #2 param:explEntryChain_of_keyContent.up := relay/built pos=[param:accum_content_on_pendingMapValue_indented.h_expl] origins=[O66] ⊢ none-held 0/1",
"accum_content_pending #1 ctor:pendingProps.h_kslot := step/built pos=[ctor:pendingProps.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"accum_content_pending #1 ctor:pendingProps.h_kslotE := step/built pos=[ctor:pendingProps.h_kslotE] origins=[O66] ⊢ none-held 0/1",
"accum_content_pending #2 ctor:pendingProps.h_kslot := step/built pos=[ctor:pendingProps.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"accum_content_pending #2 ctor:pendingProps.h_kslotE := step/built pos=[ctor:pendingProps.h_kslotE] origins=[O66] ⊢ none-held 0/1",
"accum_content_pending #1 ctor:pendingContent.h_vpack := paid:chain/built pos=[ctor:pendingProps.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp] ⊢ some-held 1/37",
"accum_content_pending #2 ctor:pendingContent.h_vpack := paid:chain/built pos=[ctor:pendingProps.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp] ⊢ some-held 1/37",
"accum_content_pending #3 ctor:pendingContent.h_vpack := paid:chain/built pos=[ctor:pendingProps.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp] ⊢ some-held 1/37",
"accum_content_pending #4 ctor:pendingContent.h_vpack := paid:chain/built pos=[ctor:pendingProps.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp] ⊢ some-held 1/37",
"accum_content_pending #5 ctor:pendingContent.h_vpack := paid:chain/built pos=[ctor:pendingProps.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp] ⊢ some-held 1/37",
"accum_content_pending #1 param:accum_content_on_pendingBlock_indented.h_kslot_old := relay/built pos=[ctor:pendingBlock.h_kslot] origins=[O66] ⊢ none-held 0/1",
"accum_content_pending #1 param:accum_content_on_pendingMapValue_indented.h_expl := relay/built pos=[ctor:pendingMapValue.h_expl] origins=[O66] ⊢ none-held 0/1",
"accum_content_pending #1 param:accum_content_on_pendingMapValue_indented.h_vslot := step/built pos=[ctor:pendingMapValue.h_vslot] origins=[O0,O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O22,O25,O26,O27,O28,O29,O30,O33,O34,O35,O36,O37,O38,O39,O40,O41,O45,O47,O50,O51,O52,O59,O60,O61,O62,O63,O64,O65,O66] ⊢ some-held 8/51",
"accum_content_pending #1 param:accum_content_on_pendingMapValue_indented.h_kslot := relay/built pos=[ctor:pendingMapValue.h_kslot] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"accum_content_pending #1 param:accum_content_on_pendingMapValue_indented.h_ivl_mv := relay/built pos=[ctor:pendingMapValue.h_ivl] origins=[O0,O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O22,O25,O26,O27,O28,O29,O30,O33,O34,O35,O36,O37,O38,O39,O40,O41,O45,O47,O49,O51,O52,O53,O54,O55,O56,O57,O58,O65,O66] ⊢ some-held 8/51",
"accum_flow_open_depth0 #2 param:flowKeyRoute_of_open.h_compact_pair := paid:chain/built pos=[ctor:pendingBlock.h_kslot] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_step_flow #1 ctor:pendingContent.h_key := via/built pos=[] origins=[O45] ⊢ none-held 0/1",
"accum_step_flow #1 param:flowKeyPack_of_close.h_key := relay/built pos=[] origins=[O46] ⊢ none-held 0/1",
"accum_step_flow #2 ctor:pendingContent.h_key := via/built pos=[] origins=[O47] ⊢ none-held 0/1",
"accum_step_flow #2 param:flowKeyPack_of_close.h_key := relay/built pos=[] origins=[O48] ⊢ none-held 0/1",
"colon_fires_implicit_key #1 param:colon_open_map_implicit.h_kslotD := step/built pos=[param:colon_fires_implicit_key.h_key] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"colon_fires_props_key #1 param:colon_open_map_props.h_kslotD := step/built pos=[param:colon_fires_props_key.h_key] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] ⊢ some-held 1/37",
"colon_open_map #1 ctor:pendingMapValue.h_expl := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_explicit #1 ctor:pendingMapValue.h_ivl := paid:chain/built pos=[param:colon_open_map_explicit.hvp] origins=[O0,O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O22,O25,O26,O27,O28,O29,O30,O33,O34,O35,O36,O37,O38,O39,O40,O41,O45,O47,O51,O52,O65,O66] ⊢ some-held 2/44",
"colon_open_map_explicit #1 ctor:pendingMapValue.h_expl := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_explicit #1 ctor:pendingMapValue.h_vslot := paid:chain/built pos=[param:colon_open_map_explicit.hvp] origins=[O0,O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O22,O25,O26,O27,O28,O29,O30,O33,O34,O35,O36,O37,O38,O39,O40,O41,O45,O47,O51,O52,O65,O66] ⊢ some-held 2/44",
"colon_open_map_implicit #1 ctor:pendingMapValue.h_expl := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_implicit #1 ctor:pendingMapValue.h_kslot := paid:chain/built pos=[param:colon_open_map_implicit.h_kslotD] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp] ⊢ some-held 1/37",
"colon_open_map_props #1 ctor:pendingMapValue.h_expl := stamp/stamp pos=[] origins=[] none=[stamp] ⊢ —",
"colon_open_map_props #1 ctor:pendingMapValue.h_kslot := paid:chain/built pos=[param:colon_open_map_props.h_kslotD] origins=[O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16,O17,O18,O19,O20,O21,O25,O26,O27,O28,O29,O30,O34,O35,O36,O37,O38,O39,O40,O45,O47,O51,O52,O65,O66] none=[stamp] ⊢ some-held 1/37",
"compact_open_map #1 ctor:pendingMapValue.h_ivl := relay/built pos=[] origins=[O49] none=[stamp,fact] ⊢ none-held 0/1",
"compact_open_map #1 ctor:pendingMapValue.h_vslot := relay/built pos=[] origins=[O50] none=[stamp,fact] ⊢ none-held 0/1",
"content_dispatch_routed #1 ctor:pendingContent.h_key := relay/built pos=[] origins=[O51] none=[punt,absurd,stamp] ⊢ none-held 0/1",
"content_dispatch_routed #2 ctor:pendingContent.h_key := relay/built pos=[] origins=[O52] none=[punt,absurd,stamp] ⊢ none-held 0/1",
"indicator_open_map #1 param:question_open_map.h_explUp_chain := relay/built pos=[param:indicator_open_map.h_explUp_chain] origins=[O66] ⊢ none-held 0/1",
"indicator_open_map #1 param:question_open_map.h_explUp_chainD := step/built pos=[param:indicator_open_map.h_explUp_chainD] origins=[O66] ⊢ none-held 0/1",
"question_open_map #1 ctor:pendingMapValue.h_ivl := paid:route/built pos=[] origins=[O53,O54,O55,O56,O57,O58] ⊢ all-held 6/6",
"question_open_map #1 ctor:pendingMapValue.h_expl := paid:chain/built pos=[param:question_open_map.h_explUp_chainD] origins=[O66] none=[absurd,punt] ⊢ none-held 0/1",
"question_open_map #1 ctor:pendingMapValue.h_vslot := paid:route/built pos=[] origins=[O59,O60,O61,O62,O63,O64] ⊢ all-held 6/6",
"question_open_map #1 ctor:pendingMapValue.h_kslot := paid:tail/built pos=[param:question_open_map.h_explUp_chainD] origins=[O65,O66] none=[punt] ⊢ some-held 1/2",
"question_open_map #1 ctor:pendingMapValue.h_explUp := alt/built pos=[param:question_open_map.h_explUp_chainD] origins=[O66] none=[stamp] ⊢ none-held 0/1",
-- Item 413: compact_open_map's h_expl row re-read (its origin list now reaches h_chainUp) + the two paid:chain relays of h_chainUp (the inline fill's slot routes, the pendingBlock arm's h_kslotUp).
"accum_block_on_closeThenBlock #1 param:compact_open_map.h_chainUp := paid:chain/built pos=[param:accum_block_on_closeThenBlock.h_vslot] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"accum_block_on_pendingBlock #1 param:compact_open_map.h_chainUp := paid:chain/built pos=[param:accum_block_on_pendingBlock.h_kslotUp] origins=[O66] none=[stamp] ⊢ none-held 0/1",
"compact_open_map #1 ctor:pendingMapValue.h_expl := relay/built pos=[param:compact_open_map.h_chainUp] origins=[O66] none=[stamp,absurd,punt] ⊢ none-held 0/1",
"indicator_open_map #1 param:colon_open_map.h_explUp_chainD := step/built pos=[param:indicator_open_map.h_explUp_chainD] origins=[O66] ⊢ none-held 0/1"]
-- 2026-10-20 (item 306): the positions' origin sets re-read with the three new origins
-- (`O3`, `O7`, `O10`) and the renumbering behind them; no position is born or dies.
-- 2026-10-20 (item 307): the positions' origin sets re-read (three new origins, renumbered).
-- 2026-10-21 (item 320): 1 position rows re-read — `accum_block_on_closeThenBlock.h_vpack`'s premise at the marker arms
-- is paid through `PackAlt.ofRefused h_noek…` (a fact where it punted); regenerated from the census's own rows.
-- 2026-10-21 (item 321): 3 position rows re-read — `accum_block_on_noPending`'s fresh fields and the openers'
-- paid leaves read `stamp`/`fact` where they punted; regenerated from the census's own rows.
-- 2026-10-21 (item 324): `flowKeyRoute_of_open.h_compact_pair`'s `punt` 1 → 0, `stamp` 0 → 1 — its one punting writer, the
-- `---` arm, pays through `PackAlt.ofRefused h_noekS`; the two built writers and the holdings stand.
-- 2026-10-23 (item 345): `pendingBlockContent.h_kslotUp` punt 3 → 0 (the three singleton relays).
-- 2026-10-24 (item 350): `h_explUp`'s writers — the `:` producers stamp `NotQuestionPark sc` (punt 5 → 0);
-- `compact_open_map`/`question_open_map` split on the alternative.
-- Item 371: the value-line packs end in the one-level `ResumeFrames`; `question_open_map`'s chain
-- is bottomed on the bound tail route `h_route51F` (set re-pinned).
-- 2026-10-30 (item 405): per-position classes follow `expectedRows`.
def expectedPerPos : List String := [
-- Item 409 (2026-10-30): per-position rows re-read (49 → 48: `explFrameValueLine.h_kslot` gone; origins renumbered).
"ctor:pendingBlockContent.h_kslotUp writers=6 punt=0 stamp=0 built=6 unborn=0 dead=0 allHeld=0 someHeld=0 noneHeld=6 origins=[O66] ⊢ 0/1 held",
"param:accum_block_on_pendingBlock.h_kslotUp writers=1 punt=0 stamp=0 built=1 unborn=0 dead=0 allHeld=0 someHeld=0 noneHeld=1 origins=[O66] ⊢ 0/1 held",