mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 23:52:03 -04:00
tools(phase-37): argcheck sees indented file-scope definitions and keeps every K&R definition per binary (116 false lies); restruct --redraw takes VERDICT:cause keys; D40–D47 done (3,489 canonical); census 2,367 lying / 256 callees (+5,082 K&R, +511 cross-binary apart) | 🛑 T4 in progress (S108)
This commit is contained in:
File diff suppressed because one or more lines are too long
+478
-480
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
type_census — 2026-09-13T01:06:59Z at 274223396 (src stamp a91c084f1ac9e504, tool 3d72938e1b); 7305 files (4121 TUs + 3181 headers), 99130 function definitions; walk 62.7 s, total 200.3 s
|
||||
type_census — 2026-09-13T02:13:23Z at 2391ee628 (src stamp 9755515ee35c19bc, tool ac697cecc1); 7305 files (4121 TUs + 3181 headers), 99130 function definitions; walk 40.9 s, total 208.3 s
|
||||
|
||||
DEFINITIONS 7255 struct/union bodies (+0 enums): canonical header 1179 · .c file-scope 4085 · .c block-scope 1904 · per-function shared headers 63 · other headers 24 · include/ 0
|
||||
3143 distinct names · 527 distinct layouts (0 unresolved) · 206 duplicate classes covering 2823 names (tier 1 122 same-named, tier 2 84 opaque; 46 layout-twin classes / 1867 names kept apart) · 585 exact-text classes / 4460 copies · 40 VARIANT names (>1 layout) · 141 dead canonical names · 74 canonical names redefined in .c · 1781 scalar/alias typedefs · 157 forward decls
|
||||
@@ -6,28 +6,28 @@ CAST SITES deref 503013 = P 409006 + I 60664 + X 13800 + M 19543 (+ A addres
|
||||
by base: param 276860 · local 149911 · gaddr 40123 · nested 24076 · global 8861 · other 1678 · addr-of 1348 · ident 156
|
||||
by width: s4 145161 · u2 142775 · s2 131818 · u1 43174 · agg 13472 · p4 12019 · u4 11165 · s1 3429
|
||||
top bases: a0(param) 92255 · param_1(param) 81595 · arg0(param) 67704 · p(local) 18043 · p(param) 11784 · s0(local) 10368 · cach(local) 8246 · s1(local) 7137 · buf(local) 7067 · flag(local) 5453 · *(s32 *)(a0 + 0x20)(nested) 5215 · iVar2(local) 5160 · dst(local) 4874 · iVar1(local) 4836 · iVar3(local) 4693 · e(local) 3918
|
||||
DECLARATIONS 99130 function definitions (1894 K&R) · 4279270 extern function declarations over 12088 names (3830 spelled >1 way) · 6419 names with >1 body text · 1078774 data externs over 55548 symbols (18493 typed >1 way) · asm-label aliases 5158 (165 names) · builtins {'memcpy': 301, 'abs': 1} · attributes {'packed': 63, 'aligned': 12}
|
||||
lying declarations 8830 over 950 callees {'K&R-empty': 2997, 'narrow': 5833} · K&R sites (marked, counted apart) 5002 over 147 callees
|
||||
STRUCT MAP 18741 types explain 498894/503013 deref sites (99.2 %); unassigned 4119; 4064 types span ≥2 bodies (441229 sites), 14677 single-body; types with conflicts 727, suspect 11
|
||||
merges by evidence {'param': 36486, 'assign': 14665, 'ret-of': 3374, 'arg': 10173, 'return': 1524, 'assign&': 1051, 'arg&': 270, 'field': 9613}; vetoed {'arg-conduit': 115288, 'ret-of-multisource': 6686, 'assign-multisource': 34568, 'arg&-conduit': 14628, 'field-multisource': 7008, 'ret-of': 679, 'assign&-multisource': 12500, 'arg&-no-overlap': 3456, 'assign': 347, 'arg-no-overlap': 43021, 'assign&': 69, 'arg': 182, 'return': 12, 'field': 3224}
|
||||
Unkstruct_800B5CB8 sites 107598 bodies 11187 fields 134 size≥0x10c width-conflicts 50 sign-mixed 55 merges {'param': 9454, 'assign': 7400, 'arg': 6955, 'field': 2622} at D_800B5CB8,D_800D3888,D_80181448 ptr D_8006386C,D_80074778,D_80074780
|
||||
Unkstruct_80126B58 sites 65397 bodies 17047 fields 175 size≥0x24c width-conflicts 50 sign-mixed 60 merges {'param': 2100, 'arg': 1086, 'assign&': 106, 'field': 51} at D_80126B58 ptr D_80126B58
|
||||
DECLARATIONS 99130 function definitions (1894 K&R) · 4279270 extern function declarations over 12088 names (3822 spelled >1 way) · 6419 names with >1 body text · 1078774 data externs over 55548 symbols (18493 typed >1 way) · asm-label aliases 5158 (165 names) · builtins {'memcpy': 301, 'abs': 1} · attributes {'aligned': 12, 'packed': 63}
|
||||
lying declarations 2367 over 256 callees {'K&R-empty': 1673, 'narrow': 694} · K&R sites (marked, counted apart) 5082 over 155 callees · cross-binary (the fleet's definitions disagree, this binary has none) 511 over 147 callees
|
||||
STRUCT MAP 17970 types explain 498894/503013 deref sites (99.2 %); unassigned 4119; 3947 types span ≥2 bodies (445199 sites), 14023 single-body; types with conflicts 738, suspect 11
|
||||
merges by evidence {'param': 36486, 'arg': 10422, 'ret-of': 3436, 'assign': 14608, 'assign&': 1051, 'return': 1527, 'arg&': 247, 'field': 9921}; vetoed {'arg-conduit': 115288, 'arg-no-overlap': 31131, 'arg&-conduit': 14628, 'assign-multisource': 34568, 'assign&-multisource': 12501, 'field-multisource': 7008, 'arg&-no-overlap': 3506, 'ret-of-multisource': 6686, 'assign&': 68, 'assign': 394, 'ret-of': 216, 'arg': 253, 'return': 6, 'field': 1004}
|
||||
Unkstruct_800D3888 sites 113273 bodies 10024 fields 133 size≥0x10c width-conflicts 50 sign-mixed 57 merges {'param': 9832, 'assign': 7528, 'arg': 7222, 'field': 3272} at D_800D3888,D_80181448,D_801818AC ptr D_8006386C,D_80074778,D_80074780
|
||||
Unkstruct_80126B58 sites 65452 bodies 17066 fields 177 size≥0x24c width-conflicts 50 sign-mixed 62 merges {'param': 2162, 'arg': 1118, 'assign&': 106, 'field': 52} at D_80126B58 ptr D_80126B58
|
||||
Unkstruct_8018E71C sites 6745 bodies 396 fields 7 size≥0x10 width-conflicts 0 sign-mixed 0 merges {'param': 18, 'arg': 15, 'assign&': 2} at D_8018E71C
|
||||
Unkstruct_dac960ce sites 4464 bodies 124 fields 13 size≥0x24c width-conflicts 0 sign-mixed 2 merges {'param': 2}
|
||||
Unkstruct_0caecd54 sites 4340 bodies 124 fields 23 size≥0xfe width-conflicts 0 sign-mixed 1 merges {'param': 2, 'assign': 1, 'return': 1}
|
||||
Unkstruct_8014964C sites 4251 bodies 1800 fields 23 size≥0x84 width-conflicts 3 sign-mixed 9 merges {'field': 137}
|
||||
Unkstruct_f8ed2b9f sites 4061 bodies 4061 fields 1 size≥0x217 width-conflicts 0 sign-mixed 0 merges {'param': 2}
|
||||
Unkstruct_a32b99a1 sites 3936 bodies 123 fields 8 size≥0x4b width-conflicts 0 sign-mixed 1 merges {}
|
||||
Unkstruct_8e3dbe51 sites 3930 bodies 131 fields 5 size≥0x4c width-conflicts 0 sign-mixed 1 merges {}
|
||||
Unkstruct_8014A1B0 sites 3778 bodies 542 fields 13 size≥0xfe width-conflicts 0 sign-mixed 1 merges {'field': 13, 'arg': 10, 'param': 10, 'return': 1}
|
||||
Unkstruct_80128EA8 sites 3311 bodies 632 fields 18 size≥0x38 width-conflicts 0 sign-mixed 13 merges {'arg': 23, 'ret-of': 19, 'field': 7, 'param': 2}
|
||||
Unkstruct_ade2e8a0 sites 3271 bodies 196 fields 26 size≥0xa4 width-conflicts 3 sign-mixed 9 merges {'param': 268, 'arg': 133}
|
||||
Unkstruct_1fa9e810 sites 3144 bodies 131 fields 3 size≥0x49 width-conflicts 0 sign-mixed 0 merges {}
|
||||
GLOBAL BLOCKS 2124 runs of ≥4 adjacent scalar D_ symbols (14253 symbols): 0x800cf10c+0x34 ×29 (D_800CF10C..D_800CF13C) · 0x800a6580+0x3a ×27 (D_800A6580..D_800A65B8) · 0x801998a4+0x57 ×24 (D_801998A4..D_801998FA) · 0x80199840+0x56 ×23 (D_80199840..D_80199895) · 0x801a9608+0x50 ×22 (D_801A9608..D_801A9654) · 0x801ab708+0x54 ×21 (D_801AB708..D_801AB758) · 0x801b0df0+0x4b ×21 (D_801B0DF0..D_801B0E3A) · 0x801b83a0+0x4e ×21 (D_801B83A0..D_801B83ED)
|
||||
Unkstruct_80126948 sites 3194 bodies 1040 fields 34 size≥0xa4 width-conflicts 0 sign-mixed 10 merges {'assign': 99, 'arg': 14, 'param': 6, 'assign&': 4} at D_80126948,D_80126E60 ptr D_80114EE8,D_801151D4,D_80126948
|
||||
GLOBAL BLOCKS 2117 runs of ≥4 adjacent scalar D_ symbols (14216 symbols): 0x800cf10c+0x34 ×29 (D_800CF10C..D_800CF13C) · 0x800a6580+0x3a ×27 (D_800A6580..D_800A65B8) · 0x801998a4+0x57 ×24 (D_801998A4..D_801998FA) · 0x80199840+0x56 ×23 (D_80199840..D_80199895) · 0x801a9608+0x50 ×22 (D_801A9608..D_801A9654) · 0x801ab708+0x54 ×21 (D_801AB708..D_801AB758) · 0x801b0df0+0x4b ×21 (D_801B0DF0..D_801B0E3A) · 0x801b83a0+0x4e ×21 (D_801B83A0..D_801B83ED)
|
||||
PARKED (P36) 24 classes / 453 bodies / 691 needed sites → .run/P37/census/parked.tsv; needs {'signature': 13, 'struct': 7, '?': 4}; 22 PARK names are minimum-lever banks
|
||||
CONTROLS 4/4: player_block_widths OK (D_80078E8C:4/4 D_80078EB2:2/2 D_80078EB4:2/2 D_80078EB6:2/2 D_80078EB8:2/2 [doc-disputed D_80078F08: code 4 vs actor-struct.md 2] [doc-disputed D_80078F0C: code 4 vs actor-struct.md 2]) · matrix_layouts OK (MATRIX=32 MATRIX_L48=48) · prim_layout_class OK (defs in 1192 files, 2 spellings, 1192/1192 in one layout (64 B)) · tu_conflict_D_800A651C OK (s32:1202 | u8[]:9 | OtBlk[]:9 | OtBlk_80016450[]:8 | s32[]:7)
|
||||
|
||||
duplicate-layout classes (top 12): 8B×293 names (488 defs): GTESVec, GVec8, SIn_8017E95C, SV… | 8B×202 names (0 defs): Blk8L, Blk8S16, Blk8U, Blk8_80126940… | 32B×170 names (277 defs): M32_8017F154, M32_80188094, MATRIX, MATRIX2… | 8B×153 names (341 defs): Blk8_801807DC, Blk8_8018453C, COL_8001EFE0, MoveT… | 32B×129 names (0 defs): B20, Blk20, Blk20_800CB68C, Blk20_8016DF5C… | 4B×111 names (0 defs): B4, B4_80165140, B4_8017F154, B4_80181970… | 64B×91 names (1428 defs): Prim_8016E7C8, Prim_8016E7C8_8016B6BC, Prim_8016E7C8_8016B9F8, Prim_8016E7C8_8016C2C4… | 8B×82 names (0 defs): B8, B8_17F474, B8_80165140, B8_801851A8… | 8B×63 names (211 defs): Ang_8017E95C, DVEC_80183534, SOut_8017E95C, SVEC… | 4B×60 names (68 defs): PTAG_85910, PTag, PTag293C, PTag_1412A8… | 8B×59 names (0 defs): Bc8_80180E0C, CdFileLoc, Cmd_801805C8, M8_8016B6BC… | 16B×54 names (0 defs): B16, B16_8017CDE4, B16_80183ED8, B16_801841C8…
|
||||
VARIANT names (top 12): Prim×5, Rec×4, Blk8×4, St×4, S×4, V8×4, Vec8×3, Obj×3, Ent×3, Blk16×2, CdReq×2, Blk4×2
|
||||
duplicate-layout classes (top 12): 8B×293 names (488 defs): GTESVec, GVec8, SIn_8017E95C, SV… | 8B×202 names (0 defs): Blk8L, Blk8S16, Blk8U, Blk8_80126940… | 32B×170 names (277 defs): M32_8017F154, M32_80188094, MATRIX, MATRIX2… | 8B×153 names (341 defs): Blk8_801807DC, Blk8_8018453C, COL_8001EFE0, MoveT… | 32B×129 names (0 defs): B20, Blk20, Blk20_800CB68C, Blk20_8016DF5C… | 4B×111 names (0 defs): B4, B4_80165140, B4_8017F154, B4_80181970… | 64B×91 names (1428 defs): Prim_8016E7C8, Prim_8016E7C8_8016B6BC, Prim_8016E7C8_8016B9F8, Prim_8016E7C8_8016C2C4… | 8B×82 names (0 defs): B8, B8_17F474, B8_80165140, B8_801851A8… | 8B×63 names (211 defs): Ang_8017E95C, DVEC_80183534, SOut_8017E95C, SVEC… | 4B×60 names (68 defs): PTAG_85910, PTag, PTag293C, PTag_1412A8… | 8B×59 names (0 defs): Bc8_80180E0C, CdFileLoc, Cmd_801805C8, M8_8016B6BC… | 8B×54 names (0 defs): Args_80182194, Blk8, Blk8017FD54, Blk8_801A6AD0…
|
||||
VARIANT names (top 12): Prim×5, V8×4, Blk8×4, Rec×4, St×4, S×4, Ent×3, Vec8×3, Obj×3, SV3×2, V4×2, Struct80078E78×2
|
||||
|
||||
type_census: 7255 definitions (527 layouts, 206 duplicate classes, 40 variant camps) · 503013 cast sites in 69497 bodies over 8 base classes (4 forms + A, coverage OK) · 8830 lying declarations / 950 callees (+5002 K&R sites apart) · controls 4/4
|
||||
struct_map: 18741 types over 18741 clusters explain 498894/503013 sites (99.2 %); 4119 unassigned sites; 727 types with conflicts
|
||||
type_census: 7255 definitions (527 layouts, 206 duplicate classes, 40 variant camps) · 503013 cast sites in 69497 bodies over 8 base classes (4 forms + A, coverage OK) · 2367 lying declarations / 256 callees (+5082 K&R sites, +511 cross-binary apart) · controls 4/4
|
||||
struct_map: 17970 types over 17970 clusters explain 498894/503013 sites (99.2 %); 4119 unassigned sites; 738 types with conflicts
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
delever_oracle --calibrate main md_SC07_004 ov_SC03_015 ov_SC04_011: 146/146 objects byte-identical untouched; twin checks 32 (0 mismatch); positive control DIFFERS on build/src/800.o; 2.0 s — OK
|
||||
main 85/85 identical, mean 0.079 s per object
|
||||
md_SC07_004 1/1 identical, mean 0.494 s per object
|
||||
ov_SC03_015 32/32 identical, mean 0.146 s per object
|
||||
ov_SC04_011 28/28 identical, mean 0.138 s per object
|
||||
@@ -13,3 +13,6 @@ cycle: batch t4_D45 committed 265f2bcec — restruct: batch t4_D45 rung D — 30
|
||||
log: t4_D46
|
||||
cycle: batch t4_D46 committed b9a7791fe — restruct: batch t4_D46 rung D — 300 files (TUs; 585 drawable) · 266 declaration units: 263 canonical / 0 promoted / 0 K&R marked / 0 aliases typed / 0 __builtin_abs → abs / 3 kept · compiles 560 in 47 s wall · final 300/300 identical · written 263 files | check-all: 218 passed, 0 failed of 218
|
||||
log: t4_D47
|
||||
cycle: batch t4_D47 committed 2391ee628 — restruct: batch t4_D47 rung D — 285 files (TUs; 285 drawable) · 279 declaration units: 250 canonical / 0 promoted / 1 K&R marked / 0 aliases typed / 0 __builtin_abs → abs / 29 kept · compiles 553 in 46 s wall · final 285/285 identical · written 251 files | check-all: 218 passed, 0 failed of 218
|
||||
cycle: nothing drawable at t4_D48 — done
|
||||
cycle exit=0
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
restruct --plan D: 0 of 0 TUs with lying declarations · 0 callees
|
||||
restruct --apply D: nothing to do (no drawable file)
|
||||
t4_D48 wall=148.96 s
|
||||
exit=0
|
||||
@@ -0,0 +1 @@
|
||||
delever_oracle --snapshot-baseline: 7428 object(s) under .run/P36/delever/baseline at 2391ee628; link inputs for 218/218 binaries under .run/P36/delever/baseline/_link (links.json)
|
||||
@@ -693,6 +693,17 @@ bucketed by what each bucket needs before any plan is proposed. **Candidates for
|
||||
|
||||
- **2026-09-12 — T4 batch `t4_D47`** (`.run/P37/restruct/run_t4_D47.log`, `batch_t4_D47.json`): `restruct: batch t4_D47 rung D — 285 files (TUs; 285 drawable) · 279 declaration units: 250 canonical / 0 promoted / 1 K&R marked / 0 aliases typed / 0 __builtin_abs → abs / 29 kept · compiles 553 in 46 s wall · final 285/285 identical · written 251 files` → R22 (`.run/P37/baseline/r22_t4_D47.log`) **`check-all: 218 passed, 0 failed of 218`** (`wall=83.08 s`) → census `(census skipped)`.
|
||||
|
||||
- **S108 — the D cycle `t4_D40`–`t4_D47` DONE (no REDRAW; `cycle_t4g.log`; "nothing drawable at t4_D48"):** 619 / 724 / 602 / 606 / 418 / 265 / 266 /
|
||||
279 units → **3,489 canonical / 36 K&R marked / 290 kept** in 2,264 files (`25c70a009` `6cb573173` `1464eb4ce` `d2e43e4c3` `f5c7c1809` `265f2bcec`
|
||||
`b9a7791fe` `2391ee628`), each `final N/N identical`, R22 `check-all: 218 passed, 0 failed of 218`. Census after it (`census_t4b.log`): **`2367 lying
|
||||
declarations / 256 callees (+5082 K&R sites, +511 cross-binary apart) · controls 4/4`** — from 98,648 / 1,609 at T1. The 2,367 bucketed by ledger
|
||||
verdict (R117), every one with a cause: 1,120 `parse error (type unknown to TU)` (T5's canonical types, then `--redraw DECL-KEPT`), 667 `no
|
||||
visible definition` (settled BEFORE `defs_visible`'s fleet-unique level — redrawn next), 417 `conflicting types` (T5/T7), 116 "already
|
||||
canonical" (read: `func_80189888` is defined INDENTED at file scope in ov_SC02_000 — `argcheck`'s `DEF` anchored at column 0 missed it and
|
||||
compared against ov_SC06_024's 6-parameter body; fixed: leading blanks allowed, and the K&R loop now feeds `_ALL` regardless of `out` so
|
||||
BOTH binaries resolve to their own), 13 syntax errors in `800.c`, 8+2 arity, 8 DECL-CANON, 2+2 compile, 2 bytes, 2 still-aliased.
|
||||
`--redraw` keys gained the `VERDICT:cause-substring` form (`DECL-NONE:visible`) so a redraw lifts only the rows it means.
|
||||
|
||||
## 🛑 SESSION CHECKPOINT — S107 (2026-09-12, FINAL — written for a FRESH session at 84 % context; the session's last commit follows this): gate 1 APPROVED, **T0 ☑ T1 ☑ T2 ☑ T3 ☑ — T4 IN PROGRESS (☐)** — 🛑 **T4 NEXT: resume the declaration layer where the cycle stopped (below, §1 "T4 — where it stands and the exact next commands"); xHigh** | R22 `check-all: 218 passed, 0 failed of 218` at `f2b58011e` (every one of the 21 T4 commits carries its own) | HEAD after this commit is the checkpoint's commit; tree clean; nothing pushed after `79b2f6f15` (Drew pushes, R6) | last batch `t4_D47` on b9a7791fe: 285 files (TUs; 285 drawable) · 279 declaration units: 250 canonical / 0 promoted / 1 K&R marked / 0 aliases typed / 0 __builtin_abs → abs / 29 kept · compiles
|
||||
|
||||
**Replay this block into the chat at the next session start (R64); it is the ONLY in-phase context the next session inherits. Everything below
|
||||
|
||||
+5
-3
@@ -43,7 +43,8 @@ import lever_census as lc
|
||||
|
||||
REPO = pathlib.Path(__file__).resolve().parent.parent
|
||||
NAME = r"[A-Za-z_]\w*"
|
||||
DEF = re.compile(r"^[A-Za-z_][\w \t*]*?\b(" + NAME + r")\s*\(([^;{]*)\)\s*\{", re.M)
|
||||
DEF = re.compile(r"^[ \t]*[A-Za-z_][\w \t*]*?\b(" + NAME + r")\s*\(([^;{]*)\)\s*\{", re.M) # leading blanks: 116 indented file-scope
|
||||
# definitions were invisible (P37 T4, 2026-09-12)
|
||||
DECL = re.compile(r"\bextern\s+[A-Za-z_][\w \t*]*?\b(" + NAME + r")\s*\(([^;)]*)\)\s*;")
|
||||
|
||||
|
||||
@@ -93,12 +94,13 @@ def definitions():
|
||||
# receives, so a prototype cast built from it stays compatible with the definition.
|
||||
for m in KR_DEF.finditer(masked):
|
||||
name, names = m.group(1), [n.strip() for n in m.group(2).split(",")]
|
||||
if name in ("if", "for", "while", "switch", "return", "sizeof") or name in out:
|
||||
if name in ("if", "for", "while", "switch", "return", "sizeof"):
|
||||
continue
|
||||
ptypes = kr_params(names, m.group(3))
|
||||
head = masked[m.start():m.start(1)].strip()
|
||||
out.setdefault(name, (len(names), ", ".join(ptypes), rel, head or "int"))
|
||||
_ALL[name].append((len(names), ", ".join(ptypes), rel, head or "int"))
|
||||
if (len(names), ", ".join(ptypes), rel) not in {(a_, p_, r_) for (a_, p_, r_, _) in _ALL[name]}:
|
||||
_ALL[name].append((len(names), ", ".join(ptypes), rel, head or "int")) # every definition, per binary (R48)
|
||||
return out
|
||||
|
||||
|
||||
|
||||
+8
-3
@@ -2485,12 +2485,17 @@ def plan_D(headers, batch, only, settled=frozenset()):
|
||||
|
||||
|
||||
def settled_units(rows, redraw=()):
|
||||
"""{(tu, callee)} whose LATEST rung-D row is a DONE verdict not in `redraw` (R70: the last row is the verdict)."""
|
||||
"""{(tu, callee)} whose LATEST rung-D row is a DONE verdict not lifted by `redraw` (R70: the last row is the verdict). A redraw key is a
|
||||
verdict (`DECL-KEPT`) or `VERDICT:cause-substring` (`DECL-NONE:no visible definition` — the 667 rows settled before defs_visible's
|
||||
fleet-unique level; the plain `DECL-NONE` key redraws every "already canonical"/external pair too, the t4_D21–D36 REDRAW's cost)."""
|
||||
latest = {}
|
||||
for r in rows:
|
||||
if r.get("rung") == "D" and r.get("unit", "").startswith("decl:"):
|
||||
latest[(r["tu"], r["callee"])] = r.get("verdict")
|
||||
return {k for k, v in latest.items() if v in DONE_VERDICTS and v not in set(redraw)}
|
||||
latest[(r["tu"], r["callee"])] = (r.get("verdict"), r.get("cause") or "")
|
||||
keys = [(k.split(":", 1)[0], k.split(":", 1)[1] if ":" in k else None) for k in redraw]
|
||||
def lifted(v, c):
|
||||
return any(v == kv and (ks is None or ks in c) for kv, ks in keys)
|
||||
return {k for k, (v, c) in latest.items() if v in DONE_VERDICTS and not lifted(v, c)}
|
||||
|
||||
|
||||
def plan_L(headers, batch, only):
|
||||
|
||||
Reference in New Issue
Block a user