Drew T
c0486fe5f8
feat(phase-28 T4): dedup_extend — wire newly-onboarded binaries in; ov_SC07_006 1543/1614 (95.6%)
...
The 4 SC07 overlays P27 onboarded were byte-clean but NOT citizens: their .c included only
common.h (never ../shared/engine_core.h), so no shared body could reach them, and they
appeared in ZERO dedup groups (1689 groups read "134 binaries", never 138). Each sat at ~80
matched / ~2400 stubs while its siblings were ~2150 matched.
- NEW tools/dedup_extend.py — the missing mode. dedup_propagate is built for CRACK -> AUTHOR
MACRO -> INSTANTIATE: --auto-from scans INLINE DEFS (planned only 11 here; the ~1600 shared
bodies are ALREADY DEFINE_func_* macros in engine_core.h) and --addr dies "no source overlay
has it matched" because no overlay holds an inline def. Extending an existing MACRO-BACKED
group to a newly-onboarded binary is a different operation and nothing implemented it.
- SAFETY (explicit — this feeds the byte-gate): h_exact is the SHA1 of RAW INSTRUCTION BYTES, so
two instances sharing one are identical INCLUDING their jal/lui/%lo reloc immediates — same
callees, same data addresses, same symbols. The body that compiles byte-identically at one
member does so at the other with NO remap. (Exactly why dup_report calls h_exact "guaranteed
byte-match" and h_norm "candidate-only".) A bug here can only FAIL TO BANK, never falsely bank.
- REUSE, DON'T REBUILD (R33): owns only the set computation + the registry edit. The splice and
the gate are harvest_verify verbatim (it already derives each stub's home TU from the corpus
oracle, chunks + bisects, reverts on failure). h_exact members are byte-identical by
construction -> the happy path is ~1 build per binary, not one per function.
- RESULT ov_SC07_006: 1543 / 1614 banked = 95.6%, ~0 agent tokens. Stubs 2374 -> 831.
The 71 non-banks are ALL PLUMBING, ZERO DIFF, in two named classes with existing tools:
* func_80144B9C "undefined reference" — the whale's body lives in src/shared/func_80144B9C.h
(the -O0 shared header), not engine_core.h, so no DEFINE macro exists to expand.
* "conflicting types for D_800A5E60 / func_8012C750 / func_8012C0EC" — the loose-typing
conflict class (cast_call_sites / canon_sig_reconcile / reconcile_tu already exist for it).
- GATES: R22 make clean && extract-all && check-all -> 140 passed, 0 failed of 140, 0 FAIL lines.
dedup-check 1840 validated / 0 failed; groups now read "135 members [135 binaries]" (was 134);
C1 coverage 227211 -> 228754 = exactly +1543. The second oracle accepts the extension.
- Mechanism had been proven by hand first (probe-before-investing): +include + ONE stub ->
DEFINE_func_80128158() -> ov_SC07_006 built 7ca772be BYTE-IDENTICAL, then reverted.
2026-07-15 23:14:19 -06:00
..
2026-06-16 19:02:14 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 16:44:01 -06:00
2026-06-16 16:44:01 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 15:39:52 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 16:44:01 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-07-15 18:33:37 -06:00
2026-07-15 18:33:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-07-15 18:33:37 -06:00
2026-07-15 18:33:37 -06:00
2026-06-15 22:50:55 -06:00
2026-06-14 12:05:38 -06:00
2026-07-15 23:14:19 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 21:56:28 -06:00
2026-07-15 21:56:28 -06:00
2026-07-15 21:56:28 -06:00
2026-07-15 21:56:28 -06:00
2026-07-15 21:56:28 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:09:22 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 21:56:28 -06:00
2026-07-15 21:56:28 -06:00
2026-07-15 21:56:28 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-15 22:34:45 -06:00
2026-07-14 20:38:10 -06:00
2026-07-15 18:33:37 -06:00
2026-07-15 22:34:45 -06:00
2026-06-15 23:00:51 -06:00
2026-07-14 10:12:19 -06:00
2026-06-16 16:44:01 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 16:44:01 -06:00
2026-06-16 16:44:01 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 15:39:52 -06:00
2026-06-16 19:41:37 -06:00
2026-07-14 10:12:19 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-07-14 10:12:19 -06:00
2026-06-16 16:44:01 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-07-14 10:12:19 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-07-14 10:12:19 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:02:14 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-07-15 18:33:37 -06:00
2026-07-15 18:33:37 -06:00
2026-06-16 19:41:37 -06:00
2026-06-16 19:41:37 -06:00
2026-07-15 18:33:37 -06:00
2026-07-15 18:33:37 -06:00
2026-06-14 03:19:23 -06:00
2026-06-14 03:19:23 -06:00
2026-07-07 22:01:58 -06:00
2026-07-14 10:12:19 -06:00
2026-07-14 10:12:19 -06:00