From c0bbd26c6ed0b120f4128132a65fc0d9cc72017a Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Sat, 12 Sep 2026 18:06:52 -0600 Subject: [PATCH] =?UTF-8?q?src(phase-37):=20T4=20step=20(c)=20DONE=20?= =?UTF-8?q?=E2=80=94=20the=20shared=20headers:=20t4=5FHD4=20216=20headers?= =?UTF-8?q?=20=C2=B7=209=20units=20(4=20canonical=20/=201=20K&R=20/=202=20?= =?UTF-8?q?aliases=20typed=20/=203=20kept),=206=20files;=20the=20header=20?= =?UTF-8?q?plan=20now=20empty=20(0=20of=200);=20restruct=5Fcycle=20skips?= =?UTF-8?q?=20the=20fleet=20run=20when=20src/=20is=20unchanged=20after=20a?= =?UTF-8?q?=20batch=20|=20R22=20check-all:=20218=20passed,=200=20failed=20?= =?UTF-8?q?of=20218=20|=20=F0=9F=9B=91=20T4=20in=20progress=20=E2=80=94=20?= =?UTF-8?q?step=20(d)=20NEXT=20(S108)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/P36/delever/calibration.json | 290 ++--- .run/P37/baseline/r22_t4_HD4.log | 476 +++++++ .run/P37/restruct/apply_t4_HD4.log | 218 ++++ .run/P37/restruct/batch_t4_HD4.json | 1550 +++++++++++++++++++++++ .run/P37/restruct/calibrate_t4_HD4.log | 5 + .run/P37/restruct/cycle_t4h.log | 1 + .run/P37/restruct/ledger.jsonl | 220 ++++ .run/P37/restruct/run_t4_HD4.log | 221 ++++ .run/P37/restruct/snapshot_t4_HD4.log | 1 + phase-ends/CURRENT_PHASE.md | 10 + src/shared/ov/func_8013CF68__94315c4c.h | 2 +- src/shared/ov/func_80168BDC.h | 2 +- src/shared/ov/func_8016BFD0__33acecf2.h | 2 +- src/shared/ov/func_8016BFD0__97557651.h | 2 +- src/shared/ov/func_80176144.h | 8 +- src/shared/ov/func_8017D12C__79ff9481.h | 2 +- tools/restruct_cycle.sh | 11 +- 17 files changed, 2864 insertions(+), 157 deletions(-) create mode 100644 .run/P37/baseline/r22_t4_HD4.log create mode 100644 .run/P37/restruct/apply_t4_HD4.log create mode 100644 .run/P37/restruct/batch_t4_HD4.json create mode 100644 .run/P37/restruct/calibrate_t4_HD4.log create mode 100644 .run/P37/restruct/run_t4_HD4.log create mode 100644 .run/P37/restruct/snapshot_t4_HD4.log diff --git a/.run/P36/delever/calibration.json b/.run/P36/delever/calibration.json index 51ecfd27f7..13e37da808 100644 --- a/.run/P36/delever/calibration.json +++ b/.run/P36/delever/calibration.json @@ -1,7 +1,7 @@ { - "head": "1e996c609", + "head": "bc16e5994", "stamp": "e34b6679685f", - "generated": "2026-09-12 17:57", + "generated": "2026-09-12 18:00", "aliases": [ "main", "md_SC07_004", @@ -21,176 +21,176 @@ "main": { "objects": 85, "identical": 85, - "seconds": 6.685000000000003, - "mean_s": 0.079 + "seconds": 6.867000000000002, + "mean_s": 0.081 }, "md_SC07_004": { "objects": 1, "identical": 1, - "seconds": 0.513, - "mean_s": 0.513 + "seconds": 0.505, + "mean_s": 0.505 }, "ov_SC03_015": { "objects": 32, "identical": 32, - "seconds": 4.611999999999999, - "mean_s": 0.144 + "seconds": 4.68, + "mean_s": 0.146 }, "ov_SC04_011": { "objects": 28, "identical": 28, - "seconds": 3.91, + "seconds": 3.917, "mean_s": 0.14 } }, "per_object_seconds": { - "build/src/800.o": 0.737, + "build/src/800.o": 0.773, "build/src/800_b.o": 0.082, - "build/src/800_b_2.o": 0.319, - "build/src/800_b_o0a.o": 0.068, - "build/src/800_c.o": 0.192, - "build/src/800b2.o": 0.077, - "build/src/apicard1.o": 0.076, - "build/src/apicard2.o": 0.072, - "build/src/apicard3.o": 0.063, - "build/src/apicard4.o": 0.07, - "build/src/apicard5.o": 0.068, - "build/src/apicard6.o": 0.091, - "build/src/apicard7.o": 0.087, - "build/src/boot.o": 0.102, - "build/src/gap.o": 0.065, - "build/src/libapi1.o": 0.066, - "build/src/libapi2.o": 0.055, - "build/src/libc2_1.o": 0.059, - "build/src/libc2_2.o": 0.061, - "build/src/libcd1.o": 0.072, + "build/src/800_b_2.o": 0.324, + "build/src/800_b_o0a.o": 0.066, + "build/src/800_c.o": 0.226, + "build/src/800b2.o": 0.089, + "build/src/apicard1.o": 0.071, + "build/src/apicard2.o": 0.076, + "build/src/apicard3.o": 0.066, + "build/src/apicard4.o": 0.067, + "build/src/apicard5.o": 0.064, + "build/src/apicard6.o": 0.083, + "build/src/apicard7.o": 0.079, + "build/src/boot.o": 0.108, + "build/src/gap.o": 0.073, + "build/src/libapi1.o": 0.087, + "build/src/libapi2.o": 0.058, + "build/src/libc2_1.o": 0.065, + "build/src/libc2_2.o": 0.064, + "build/src/libcd1.o": 0.068, "build/src/libcd2.o": 0.063, - "build/src/libetc.o": 0.065, - "build/src/libgpu.o": 0.065, + "build/src/libetc.o": 0.059, + "build/src/libgpu.o": 0.062, "build/src/libgpu2.o": 0.071, "build/src/libgs1.o": 0.064, - "build/src/libgs2.o": 0.061, - "build/src/libgs3.o": 0.059, - "build/src/libgs4.o": 0.062, - "build/src/libgs5.o": 0.061, - "build/src/libgs6.o": 0.07, - "build/src/libgs7.o": 0.054, + "build/src/libgs2.o": 0.079, + "build/src/libgs3.o": 0.067, + "build/src/libgs4.o": 0.06, + "build/src/libgs5.o": 0.062, + "build/src/libgs6.o": 0.086, + "build/src/libgs7.o": 0.061, "build/src/libgs8.o": 0.062, - "build/src/libgte1.o": 0.067, - "build/src/libgte10.o": 0.062, - "build/src/libgte11.o": 0.061, - "build/src/libgte12.o": 0.063, - "build/src/libgte13.o": 0.061, - "build/src/libgte14.o": 0.056, - "build/src/libgte15.o": 0.064, - "build/src/libgte16.o": 0.067, - "build/src/libgte17.o": 0.067, - "build/src/libgte18.o": 0.064, - "build/src/libgte19.o": 0.058, - "build/src/libgte2.o": 0.064, - "build/src/libgte20.o": 0.064, - "build/src/libgte21.o": 0.067, - "build/src/libgte22.o": 0.065, - "build/src/libgte23.o": 0.065, - "build/src/libgte24.o": 0.067, - "build/src/libgte25.o": 0.067, - "build/src/libgte26.o": 0.06, - "build/src/libgte27.o": 0.058, - "build/src/libgte28.o": 0.058, - "build/src/libgte29.o": 0.057, - "build/src/libgte3.o": 0.067, - "build/src/libgte30.o": 0.062, - "build/src/libgte4.o": 0.058, - "build/src/libgte5.o": 0.065, - "build/src/libgte6.o": 0.062, - "build/src/libgte7.o": 0.063, - "build/src/libgte8.o": 0.063, - "build/src/libgte9.o": 0.065, - "build/src/libmcrd1.o": 0.082, - "build/src/libmcrd2.o": 0.066, - "build/src/libpad1.o": 0.074, - "build/src/libpad2.o": 0.069, - "build/src/sgap.o": 0.067, - "build/src/sgap_2.o": 0.062, - "build/src/sgap_3.o": 0.06, - "build/src/sgap_4.o": 0.071, - "build/src/sgap_5.o": 0.065, - "build/src/sgap_6.o": 0.064, - "build/src/sgap_8.o": 0.071, - "build/src/snd1.o": 0.071, - "build/src/snd10.o": 0.065, - "build/src/snd11.o": 0.061, + "build/src/libgte1.o": 0.062, + "build/src/libgte10.o": 0.066, + "build/src/libgte11.o": 0.066, + "build/src/libgte12.o": 0.067, + "build/src/libgte13.o": 0.065, + "build/src/libgte14.o": 0.067, + "build/src/libgte15.o": 0.069, + "build/src/libgte16.o": 0.066, + "build/src/libgte17.o": 0.064, + "build/src/libgte18.o": 0.065, + "build/src/libgte19.o": 0.066, + "build/src/libgte2.o": 0.062, + "build/src/libgte20.o": 0.059, + "build/src/libgte21.o": 0.06, + "build/src/libgte22.o": 0.063, + "build/src/libgte23.o": 0.069, + "build/src/libgte24.o": 0.062, + "build/src/libgte25.o": 0.065, + "build/src/libgte26.o": 0.062, + "build/src/libgte27.o": 0.062, + "build/src/libgte28.o": 0.066, + "build/src/libgte29.o": 0.061, + "build/src/libgte3.o": 0.063, + "build/src/libgte30.o": 0.061, + "build/src/libgte4.o": 0.06, + "build/src/libgte5.o": 0.068, + "build/src/libgte6.o": 0.066, + "build/src/libgte7.o": 0.062, + "build/src/libgte8.o": 0.062, + "build/src/libgte9.o": 0.062, + "build/src/libmcrd1.o": 0.073, + "build/src/libmcrd2.o": 0.063, + "build/src/libpad1.o": 0.066, + "build/src/libpad2.o": 0.068, + "build/src/sgap.o": 0.073, + "build/src/sgap_2.o": 0.065, + "build/src/sgap_3.o": 0.064, + "build/src/sgap_4.o": 0.072, + "build/src/sgap_5.o": 0.064, + "build/src/sgap_6.o": 0.06, + "build/src/sgap_8.o": 0.07, + "build/src/snd1.o": 0.069, + "build/src/snd10.o": 0.067, + "build/src/snd11.o": 0.073, "build/src/snd12.o": 0.065, - "build/src/snd2.o": 0.077, - "build/src/snd3.o": 0.064, - "build/src/snd4.o": 0.067, - "build/src/snd5.o": 0.066, - "build/src/snd6.o": 0.07, - "build/src/snd7.o": 0.067, - "build/src/snd8.o": 0.065, - "build/src/snd9.o": 0.07, - "build/src/md_SC07_004/md_SC07_004.o": 0.513, - "build/src/ov_SC03_015/ov_SC03_015.o": 0.132, - "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.52, - "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.403, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.053, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.061, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.118, - "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.157, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.117, + "build/src/snd2.o": 0.068, + "build/src/snd3.o": 0.062, + "build/src/snd4.o": 0.075, + "build/src/snd5.o": 0.065, + "build/src/snd6.o": 0.069, + "build/src/snd7.o": 0.071, + "build/src/snd8.o": 0.066, + "build/src/snd9.o": 0.076, + "build/src/md_SC07_004/md_SC07_004.o": 0.505, + "build/src/ov_SC03_015/ov_SC03_015.o": 0.136, + "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.522, + "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.404, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.07, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.067, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.135, + "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.163, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.111, "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.081, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.067, - "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.183, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.084, - "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.168, - "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.083, - "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.065, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.06, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.07, + "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.187, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.093, + "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.185, + "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.098, + "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.058, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.069, "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.09, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.454, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.45, "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.263, - "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.101, - "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.2, - "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.061, - "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.098, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.065, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.165, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.205, - "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.047, - "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.265, - "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.058, - "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.06, - "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.057, - "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.071, - "build/src/ov_SC04_011/ov_SC04_011.o": 0.115, - "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.445, - "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.336, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.056, + "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.108, + "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.199, + "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.058, + "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.103, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.069, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.16, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.19, + "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.051, + "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.258, + "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.06, + "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.055, + "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.05, + "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.067, + "build/src/ov_SC04_011/ov_SC04_011.o": 0.116, + "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.422, + "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.358, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.053, "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.047, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.113, - "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.148, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.115, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.072, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.06, - "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.18, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.065, - "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.159, - "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.09, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.125, + "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.149, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.108, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.073, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.061, + "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.166, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.072, + "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.166, + "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.088, "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.065, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.07, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.108, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.356, - "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.215, - "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.094, - "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.156, - "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.06, - "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.096, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.065, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.095, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.433, - "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.041, - "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.055 + "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.069, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.094, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.36, + "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.209, + "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.095, + "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.162, + "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.059, + "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.09, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.067, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.097, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.439, + "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.045, + "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.062 }, "ok": true, - "seconds": 2.0 + "seconds": 2.1 } diff --git a/.run/P37/baseline/r22_t4_HD4.log b/.run/P37/baseline/r22_t4_HD4.log new file mode 100644 index 0000000000..da079ace87 --- /dev/null +++ b/.run/P37/baseline/r22_t4_HD4.log @@ -0,0 +1,476 @@ +clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, undefined_*_auto.txt). +disc-extract: up to date — extracted/retail/ matches the committed manifest (sha1 e5c6019249dec3c71bb2cf40658a78439dddb037) +splat 0.41.0 (powered by spimdisasm 1.41.0) + 0%| | 0/1096 [00:00> 2; + D_800AF634[param_1].g0 += ((s32)p - (s32)slot[14]) >> 2; } diff --git a/src/shared/ov/func_8017D12C__79ff9481.h b/src/shared/ov/func_8017D12C__79ff9481.h index acebca4f65..cfc61e98c0 100644 --- a/src/shared/ov/func_8017D12C__79ff9481.h +++ b/src/shared/ov/func_8017D12C__79ff9481.h @@ -1,6 +1,6 @@ /* func_8017D12C — shared body (overlay slot 0x80128158, h_exact 79ff9481). ONE source: instantiated by #include at each * member's site in address order; the members are recorded in config/dedup.us.yaml (Phase 35). */ -extern void func_8002931C(void); +extern void func_8002931C(s32 a0); extern int func_8017D12C(int arg); int func_8017D12C(int arg) { ((void (*)(int))func_8002931C)(0x1A40000); diff --git a/tools/restruct_cycle.sh b/tools/restruct_cycle.sh index bd58551034..f9d18524e1 100644 --- a/tools/restruct_cycle.sh +++ b/tools/restruct_cycle.sh @@ -47,9 +47,14 @@ for k in $(seq "$START" "$END"); do final=$(echo "$vline" | grep -oE 'final [0-9]+/[0-9]+' | grep -oE '[0-9]+/[0-9]+') [ -n "$final" ] && [ "${final%/*}" = "${final#*/}" ] || { echo "cycle: batch $label — $vline"; exit 1; } if [ "$(echo "$vline" | grep -oE 'written [0-9]+' | grep -oE '[0-9]+')" = "0" ]; then echo "cycle: batch $label wrote no file — $vline"; fi - { /usr/bin/time -f "wall=%e s user=%U s sys=%S s" bash -c 'set -o pipefail; make clean && make extract-all JOBS=16 && make check-all JOBS=16'; echo "exit=$?"; } > "$r22" 2>&1 - line=$(grep -oE "check-all: [0-9]+ passed, [0-9]+ failed of [0-9]+" "$r22") - if ! grep -q '^exit=0$' "$r22" || [ "$line" != "check-all: $FLEET passed, 0 failed of $FLEET" ]; then echo "cycle: R22 RED after batch $label — $line (the batch's files are in place: inspect, then tools/restruct.py --restore)"; exit 1; fi + if [ -z "$(git status --short -- src)" ]; then + # no byte can have moved: the previous green fleet run stands (S108: the header cycle spent a 90-s R22 on each 0-file batch) + line="(no src change — the previous R22 stands)"; : > "$r22"; echo "$line" > "$r22" + else + { /usr/bin/time -f "wall=%e s user=%U s sys=%S s" bash -c 'set -o pipefail; make clean && make extract-all JOBS=16 && make check-all JOBS=16'; echo "exit=$?"; } > "$r22" 2>&1 + line=$(grep -oE "check-all: [0-9]+ passed, [0-9]+ failed of [0-9]+" "$r22") + if ! grep -q '^exit=0$' "$r22" || [ "$line" != "check-all: $FLEET passed, 0 failed of $FLEET" ]; then echo "cycle: R22 RED after batch $label — $line (the batch's files are in place: inspect, then tools/restruct.py --restore)"; exit 1; fi + fi cline="(census skipped)" if [ "${CENSUS:-1}" != "0" ]; then $PY tools/type_census.py -j 16 --sites > .run/P37/census/census_${label}.log 2>&1 || { echo "cycle: the type census FAILED after batch $label"; tail -3 .run/P37/census/census_${label}.log; exit 1; }