User Tools

Site Tools


provenance:programming:crawler:webxray:residue_pass

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
provenance:programming:crawler:webxray:residue_pass [2026/09/11 19:20] – New: code appendix for the 2026-09-11 second pass over the residue - probe, brief, merge gate, corrections, report, guard, mutation harness and every unedited output including the full 40-domain probe log and the estimator diff. Authored by Claude karel.kubicek.claudeprovenance:programming:crawler:webxray:residue_pass [2026/09/11 22:43] (current) – Refresh check_tail_figures.py (derives the hand-changed verdict count from the corrections output and asserts the superseded one absent) and the mutation harness, now 24 mutations, 0 survivors. Authored by Claude karel.kubicek.claude
Line 16: Line 16:
 are on [[literature:corpus]]. are on [[literature:corpus]].
  
-**Sections are in letter order, A–P, and that is also chronological:** A–are +**Sections are in letter order, A–R, and that is also chronological:** A–are 
-the scripts, Ithe outputs.+the scripts, Jthe outputs.
  
-**Why this is a third page.** These blocks are 343 kB and the +**Why this is a third page.** These blocks are 392 kB and the 
-random-sample appendix's are already 285 kB; putting them together would +random-sample appendix's are already 286 kB; putting them together would 
-make one 628 kB page carrying two probe logs. Both figures are computed+make one 678 kB page carrying two probe logs. Both figures are computed
 when this page is generated, from the same file lists the two manifests use, so when this page is generated, from the same file lists the two manifests use, so
 neither can go stale while the other moves. That page's own "why this is a neither can go stale while the other moves. That page's own "why this is a
Line 45: Line 45:
 | D | ''scripts/owner_tail_merge.py'' | 7,950 | ''b7fa9c9a573c6e2f'' | no | | D | ''scripts/owner_tail_merge.py'' | 7,950 | ''b7fa9c9a573c6e2f'' | no |
 | E | ''scripts/owner_tail_corrections.py'' | 8,654 | ''4f30dc28ccd516bf'' | no | | E | ''scripts/owner_tail_corrections.py'' | 8,654 | ''4f30dc28ccd516bf'' | no |
-| F | ''scripts/report_tail_pass.py''15,887 | ''77b0b52f94b5d3cf'' | no | +| F | ''scripts/report_tail_pass.py''20,276 | ''91ef54dfa24bf452'' | no | 
-| G | ''scripts/check_tail_figures.py''8,022 | ''28c545f60b3dcd8f'' | no | +| G | ''scripts/check_tail_figures.py''17,939 | ''401e5956f79c89e9'' | no | 
-| H | ''scripts/check_tail_figures_mutations.sh'' | 2,649 | ''30e527342b74ba57'' | no | +| H | ''scripts/check_tail_merge_mutations.sh'' | 2,704 | ''6a77cccbcb73f91b'' | no | 
-| I | ''out/tail_probe.txt'' | 177,214 | ''5f487708ad8b7ba9'' | **yes** — one lone CR normalised to LF | +| I | ''scripts/check_tail_figures_mutations.sh'' | 4,975 | ''6664ce97cdbfb5a0'' | no | 
-| ''out/owner_tail_merge-output.txt'' | 1,042 | ''b1fe634a350c43bc'' | no | +| J | ''out/check_tail_merge_mutations-output.txt'' | 1,142 | ''ebb83f0c555d0527'' | no | 
-| ''out/tail_verify-output.txt'' | 2,512 | ''f772acd997a598d8'' | no | +| K | ''out/tail_probe.txt'' | 177,214 | ''5f487708ad8b7ba9'' | **yes** — one lone CR normalised to LF | 
-| ''out/owner_tail_corrections-output.txt'' | 6,659 | ''df43d5b6edba64dd'' | no | +| ''out/owner_tail_merge-output.txt'' | 1,042 | ''b1fe634a350c43bc'' | no | 
-| ''out/owner_random_sample-tail-output.txt'' | 52,594 | ''f46dd7c6f37fb231'' | no | +| ''out/tail_verify-output.txt'' | 2,512 | ''f772acd997a598d8'' | no | 
-| ''out/owner_random_sample-tail.diff''38,398 | ''e57cc75561a824d8'' | no | +| ''out/owner_tail_corrections-output.txt'' | 6,659 | ''df43d5b6edba64dd'' | no | 
-| ''out/report_tail_pass-output.txt''9,683 | ''12c6a9465c08b271'' | no | +| ''out/owner_random_sample-tail-output.txt'' | 52,594 | ''f46dd7c6f37fb231'' | no | 
-| ''out/check_tail_figures_mutations-output.txt''793 | ''788c9e9d841e7c76'' | no |+| ''out/owner_random_sample-tail.diff''63,634 | ''07ae04745a451e50'' | no | 
 +| ''out/report_tail_pass-output.txt''13,529 | ''c5e2c644f7b4c35c'' | no | 
 +| ''out/check_tail_figures_mutations-output.txt''1,329 | ''9c28a7c4448ac143'' | no |
  
 ===== A. scripts/whois43.py — a WHOIS client, because this container has none ===== ===== A. scripts/whois43.py — a WHOIS client, because this container has none =====
Line 791: Line 793:
  
     python3 report_tail_pass.py --sample out/owner_sample.json \     python3 report_tail_pass.py --sample out/owner_sample.json \
-        --before out/adj_rows_scored.json --after out/adj_rows_tail.json \+        --before out/adj_rows_scored.json --after out/adj_rows_tail_final.json \
         --before-output out/owner_random_sample-output.txt \         --before-output out/owner_random_sample-output.txt \
         --after-output  out/owner_random_sample-tail-output.txt         --after-output  out/owner_random_sample-tail-output.txt
Line 803: Line 805:
  
 A second pass with harder sourcing gives a partial answer, and only a partial A second pass with harder sourcing gives a partial answer, and only a partial
-one. The rows it recovers are, by construction, the **easier end of the+one: it shrinks the region nothing can speak for, without putting a bound on 
 +what is left inside it. The rows it recovers are, by construction, the **easier end of the
 residue** -- the ones a register number or an archived legal page could reach. residue** -- the ones a register number or an archived legal page could reach.
 Whatever is still unresolved after it is harder still, so the comparison below Whatever is still unresolved after it is harder still, so the comparison below
Line 921: Line 924:
     print("\n--- B. Are the recovered rows worse than the rows already in the rates? ---")     print("\n--- B. Are the recovered rows worse than the rows already in the rates? ---")
     print("\nRaw counts, unweighted, because this is a comparison between two groups of")     print("\nRaw counts, unweighted, because this is a comparison between two groups of")
-    print("drawn rows and not an estimate for the list. current+granularity against"+    print("drawn rows and not an estimate for the list. Fisher's exact, two-sided. A") 
-    print("stale+error; Fisher's exact, two-sided. A significantly worse recovered") +    print("significantly worse recovered group would support the worry that the rates") 
-    print("group would support the worry that the rates are flattered."+    print("are flattered."
-    print(f"\n{'List':14} {'already-eligible good/n':>24} {'recovered good/n':>18} {'p (Fisher)':>11}"+    print() 
-    pooled = [0, 0, 0, 0] +    print("**Both metrics, because the answer depends on which one you ask.** The first"
-    for lab in LISTS: +    print("version of this script tested current+granularity here and current-only in") 
-        old_names = {d for st in eb[lab][1] for d in st} +    print("section E2 -- each the choice that makes its own claim mildest -- and did not"
-        og = on = rg = rn = 0 +    print("say so. A review pass caught it. Neither metric is privileged: `current` is") 
-        for h in range(4): +    print("the stricter reading, `current+granularity` is the one the content page says"
-            for (p_, v), d in zip(ea[lab][0][h], ea[lab][1][h]): +    print("is right when the unit of analysis is 'which company'."
-                if d in old_names: +    for metric, pick in (("current only", lambda v: v == "current"), 
-                    on += 1; og += (v in GOOD+                         ("current+granularity", lambda v: v in GOOD)): 
-                else: +        print(f"\n  metric: {metric}"
-                    rn += 1; rg += (v in GOOD+        print(f"  {'List':14} {'already-eligible good/n':>24} {'recovered good/n':>18} {'p (Fisher)':>11}"
-        if rn == 0: +        pooled = [0, 0, 0, 0] 
-            print(f"{lab:14} {f'{og}/{on}':>24} {'0/0':>18} {'n/a':>11}"+        for lab in LISTS: 
-            continue +            old_names = {d for st in eb[lab][1] for d in st} 
-        p = fisher_two_sided(og, on - og, rg, rn - rg) +            og = on = rg = rn = 0 
-        pooled[0] += og; pooled[1] += on - og; pooled[2] += rg; pooled[3] += rn - rg +            for h in range(4): 
-        print(f"{lab:14} {f'{og}/{on}':>24} {f'{rg}/{rn}':>18} {p:>11.3f}"+                for (p_, v), d in zip(ea[lab][0][h], ea[lab][1][h]): 
-    if pooled[2] + pooled[3]: +                    if d in old_names: 
-        p = fisher_two_sided(*pooled) +                        on += 1; og += pick(v) 
-        print(f"{'pooled':14} {f'{pooled[0]}/{pooled[0]+pooled[1]}':>24} " +                    else: 
-              f"{f'{pooled[2]}/{pooled[2]+pooled[3]}':>18} {p:>11.3f}")+                        rn += 1; rg += pick(v) 
 +            if rn == 0: 
 +                print(f"  {lab:14} {f'{og}/{on}':>24} {'0/0':>18} {'n/a':>11}"
 +                continue 
 +            p = fisher_two_sided(og, on - og, rg, rn - rg) 
 +            pooled[0] += og; pooled[1] += on - og; pooled[2] += rg; pooled[3] += rn - rg 
 +            print(f"  {lab:14} {f'{og}/{on}':>24} {f'{rg}/{rn}':>18} {p:>11.3f}"
 +        if pooled[2] + pooled[3]: 
 +            p = fisher_two_sided(*pooled) 
 +            print(f"  {'pooled':14} {f'{pooled[0]}/{pooled[0]+pooled[1]}':>24} " 
 +                  f"{f'{pooled[2]}/{pooled[2]+pooled[3]}':>18} {p:>11.3f}")
     print("\nThe pooled row counts a domain once per list that drew it, so it is not an")     print("\nThe pooled row counts a domain once per list that drew it, so it is not an")
     print("independent test; it is printed as a summary of direction, not as evidence.")     print("independent test; it is printed as a summary of direction, not as evidence.")
Line 990: Line 1003:
     # ---- E. rate movement, from the one estimator ---------------------------     # ---- E. rate movement, from the one estimator ---------------------------
     print("\n--- E. Rate movement, computed with owner_random_sample.py's estimator ---")     print("\n--- E. Rate movement, computed with owner_random_sample.py's estimator ---")
-    print("\nImported, not reimplemented. 95% intervals are stratified bootstrap") +    print("\nImported, not reimplemented -- the point estimator is owner_random_sample.py's"
-    print(f"percentiles, {ors.NBOOT:,} resamples, seed {ors.SEED} -- the estimator's own.")+    print("own `strat_estimate`. **Point estimates only.** The 95% intervals are in the") 
 +    print("estimator's own output and nowhere else: its bootstrap draws for several"
 +    print("verdicts from one generator, so re-running it here from a generator seeded"
 +    print("identically prints a different interval for the same estimate.")
     for lab in LISTS:     for lab in LISTS:
         L = S["lists"][lab]         L = S["lists"][lab]
Line 1008: Line 1024:
             print(f"  {v:14} {pct(db):>14} {pct(da):>13} {100*(da-db):>+6.1f}   "             print(f"  {v:14} {pct(db):>14} {pct(da):>13} {100*(da-db):>+6.1f}   "
                   f"{pct(pb):>12} {pct(pa):>11} {100*(pa-pb):>+6.1f}")                   f"{pct(pb):>12} {pct(pa):>11} {100*(pa-pb):>+6.1f}")
-        rng = random.Random(ors.SEED) +        # No interval is printed hereThe bootstrap is stochastic and the 
-        (dldh), (pl, ph) = ors.bootstrap(ea[lab][0], w, lambda x: x == "current", rng) +        # estimator draws for several verdicts from ONE generatorso calling it 
-        print(f"  current, after, 95% CI: domain [{pct(dl)}, {pct(dh)}]  " +        # again from a fresh generator seeded identically produces a DIFFERENT 
-              f"encounter [{pct(pl)}{pct(ph)}]")+        # interval for the same estimate -- 61.7-85.5 here against 61.6-85.3 
 +        # there. Two published intervals for one number is exactly the defect 
 +        # this file exists to preventand a review pass found it. The intervals 
 +        # are in owner_random_sample.py's own output and nowhere else.
  
     # ---- E2. the pairwise tests the content page publishes -------------------     # ---- E2. the pairwise tests the content page publishes -------------------
Line 1026: Line 1045:
             n = sum(len(x) for x in E[lab][0])             n = sum(len(x) for x in E[lab][0])
             g = sum(1 for h in range(4) for _, v in E[lab][0][h] if v == "current")             g = sum(1 for h in range(4) for _, v in E[lab][0][h] if v == "current")
 +            gg = sum(1 for h in range(4) for _, v in E[lab][0][h] if v in GOOD)
             raw[(lab, tag)] = (g, n)             raw[(lab, tag)] = (g, n)
 +            raw[(lab, tag, "gran")] = (gg, n)
     print(f"  {'List':14} {'current/eligible before':>24} {'after':>12} {'raw % before':>13} {'after':>7}")     print(f"  {'List':14} {'current/eligible before':>24} {'after':>12} {'raw % before':>13} {'after':>7}")
     for lab in LISTS:     for lab in LISTS:
Line 1034: Line 1055:
               f"{100*gb/nb:>12.1f}% {100*ga/na:>6.1f}%")               f"{100*gb/nb:>12.1f}% {100*ga/na:>6.1f}%")
     print()     print()
-    print(f"  {'Pair':34} {'p before':>9} {'p after':>9}  survives 0.0167 after?"+    print("**The result depends on the metric, and publishing only one of them was"
-    for a, b in (("Disconnect", "webXray"), ("Disconnect", "Tracker Radar"), +    print("this script's most misleading omission.** Counting `granularity` as") 
-                 ("Tracker Radar", "webXray")): +    print("acceptable -- which the content page says is right when the unit of analysis"
-        ga, na raw[(a, "before")]; gbnb raw[(b, "before")] +    print("is 'which company' rather than 'which legal entity' -- BOTH Disconnect"
-        pb = fisher_two_sided(ga, na - ga, gb, nb - gb) +    print("comparisons clear Bonferroni, before and after, and the second pass overturns"
-        ga, na raw[(a, "after")]; gbnb raw[(b, "after")] +    print("nothing. On `current` only, Disconnect-versus-webXray stops clearing it."
-        pa = fisher_two_sided(gana gagbnb gb+    print("Report both or report neither."
-        print(f"  {a + ' vs ' + b:34} {pb:>9.3f} {pa:>9.3f}  {'yes' if pa < 0.0167 else 'no'}")+    for metric, key in (("current only", None), ("current+granularity", "gran")): 
 +        print(f"\n  metric: {metric}"
 +        print(f"  {'Pair':34} {'p before':>9} {'p after':>9}  survives 0.0167 before / after?"
 +        for a, b in (("Disconnect", "webXray"), ("Disconnect", "Tracker Radar"), 
 +                     ("Tracker Radar", "webXray")): 
 +            ka = (a, "before"if key is None else (a"before", key) 
 +            kb = (b, "before"if key is None else (b, "before", key) 
 +            ga, na = raw[ka]; gb, nb = raw[kb
 +            pb = fisher_two_sided(ga, na - ga, gb, nb - gb) 
 +            ka = (a, "after"if key is None else (a"after", key) 
 +            kb = (b, "after"if key is None else (b, "after", key) 
 +            ga2, na2 = raw[ka]; gb2, nb2 = raw[kb
 +            pa = fisher_two_sided(ga2na2 ga2gb2nb2 gb2
 +            print(f"  {a + ' vs ' + b:34} {pb:>9.3f} {pa:>9.3f}  
 +                  f"{'yes' if pb < 0.0167 else 'no':>3} / {'yes' if pa < 0.0167 else 'no'}
 +                  f"   ({ga2}/{na2} vs {gb2}/{nb2})")
  
     # ---- E3. sensitivity: drop the weakest-sourced recovered rows ------------     # ---- E3. sensitivity: drop the weakest-sourced recovered rows ------------
Line 1059: Line 1095:
     print()     print()
     print("  dropped: " + (", ".join(weak) or "<none>"))     print("  dropped: " + (", ".join(weak) or "<none>"))
-    A2 = {d: (dict(r, resolution="unresolved") if d in weak else r) for d, r in A.items()} + 
-    e2 = eligible(S, A2) +    NEWKINDS = {"domain-register", "archived-legal-doc", "tls-san"
-    print(f"\n  {'List':14} {'eligible':>9} {'current (domain)':>17} {'vs. full pass':>14}"+    allnew = sorted(d for d, r in A.items() 
-    for lab in LISTS: +                    if r.get("source_kind") in NEWKINDS and r["resolution"] == "resolved"
-        w = list(zip(S["lists"][lab]["strata_N"], S["lists"][lab]["strata_mass"])) + 
-        d2, _ = ors.strat_estimate(e2[lab][0], w, lambda x: x == "current"+    def run(dropped, label, note): 
-        da, _ = ors.strat_estimate(ea[lab][0], w, lambda x: x == "current"+        A2 = {d: (dict(r, resolution="unresolved") if d in dropped else r) 
-        print(f"  {lab:14} {sum(len(x) for x in e2[lab][0]):>9} {pct(d2):>17} " +              for d, r in A.items()} 
-              f"{100*(d2-da):>+13.1f}")+        e2 = eligible(S, A2) 
 +        print(f"\n  {label}  ({len(dropped)} row(s): {', '.join(dropped) or 'none'})"
 +        print(f"  {note}"
 +        print(f"  {'List':14} {'eligible':>9} {'current raw':>13} {'current (domain)':>17} 
 +              f"{'vs. full pass':>14}"
 +        rawc = {} 
 +        for lab in LISTS: 
 +            w = list(zip(S["lists"][lab]["strata_N"], S["lists"][lab]["strata_mass"])) 
 +            d2, _ = ors.strat_estimate(e2[lab][0], w, lambda x: x == "current"
 +            da, _ = ors.strat_estimate(ea[lab][0], w, lambda x: x == "current"
 +            n = sum(len(x) for x in e2[lab][0]) 
 +            g = sum(1 for h in range(4) for _, v in e2[lab][0][h] if v == "current"
 +            rawc[lab] = (g, n) 
 +            print(f"  {lab:14} {n:>9} {f'{g}/{n}':>13} {pct(d2):>17} " 
 +                  f"{100*(d2-da):>+13.1f}") 
 +        for a, b in (("Disconnect", "webXray"), ("Disconnect", "Tracker Radar")): 
 +            ga, na = rawc[a]; gb, nb = rawc[b] 
 +            pv = fisher_two_sided(ga, na - ga, gb, nb - gb) 
 +            print(f"    {a} vs {b}, current only: p = {pv:.3f} " 
 +                  f"({'survives' if pv < 0.0167 else 'does not survive'} 0.0167)"
 + 
 +    run(weak, "1. uncorroborated registrant organisation only", 
 +        "the narrowest reading: a row whose ONLY evidence is a registrant name nobody validated."
 +    run(allnew, "2. EVERY row resting on a source kind the first pass did not accept", 
 +        "the same-bar comparison: what the rates would be if the second pass had used\n" 
 +        "  the first pass's bar exactly and settled only what that bar could reach."
 +    run(["i.ua"], "3. the i.ua rescore, under the reading this run rejected", 
 +        "if 'I.UA' is held to name no company at all, the row is an error rather than\n" 
 +        "  current, which is the reading the hand correction argued against. Dropping the\n" 
 +        "  row entirely is the conservative stand-in, since scoring it `error` would lower\n" 
 +        "  Disconnect further than dropping it does.")
  
     # ---- F. what is still unresolved ----------------------------------------     # ---- F. what is still unresolved ----------------------------------------
Line 1123: Line 1189:
     ap.add_argument("--page", required=True)     ap.add_argument("--page", required=True)
     ap.add_argument("--output", required=True)     ap.add_argument("--output", required=True)
 +    ap.add_argument("--corrections", default=None,
 +                    help="out/owner_tail_corrections-output.txt, for the "
 +                         "hand-changed verdict count the report cannot produce")
     args = ap.parse_args()     args = ap.parse_args()
     page = open(args.page, encoding="utf8").read()     page = open(args.page, encoding="utf8").read()
Line 1146: Line 1215:
  
     # ---- B. the recovered-versus-existing test -------------------------------     # ---- B. the recovered-versus-existing test -------------------------------
-    secB = re.findall(r"^(webXray|Tracker Radar|Disconnect)\s+(\d+)/(\d+)\s+(\d+)/(\d+)\s+([\d.]+)\s*$", +    # Section B prints ONE BLOCK PER METRIC since 2026-09-11 (a review pass found 
-                      out, re.M) +    # that the script tested current+granularity here and current-only in E2 -- 
-    if len(secB) != 3+    # each the choice that made its own claim mildest -- and said neither). 
-        sys.exit("FATAL: section B of the report did not parse"+    # Parse per metric and check both, or a metric switch could go unnoticed 
-    for lab, og, on, rg, rn, in secB+    # exactly as it did the first time. 
-        need(f"{lab} recovered good/n", f"{rg} of {rn}"+    blocks = {} 
-        need(f"{lab} already-eligible good/n", f"{og} of {on}") +    for mb in re.finditer(r" metric: (.+)$((?:\n(? metric:).*)+)", out, re.M): 
-        # the page rounds p to two decimals +        rows = re.findall(r"*(webXray|Tracker Radar|Disconnect)\s+(\d+)/(\d+)\s+
-        need(f"{lab} Fisher p (recovered vs existing)", f"{float(p):.2f}")+                          r"(\d+)/(\d+)\s+([\d.]+)\s*$", mb.group(2), re.M) 
 +        if len(rows) == 3 and mb.group(1) not in blocks: 
 +            blocks[mb.group(1).strip()] = rows 
 +    if len(blocks) != 2
 +        sys.exit(f"FATAL: section B of the report did not parse: " 
 +                 f"{len(blocks)} metric block(s), expected 2 ({sorted(blocks)})"
 + 
 +    # The page publishes the current+granularity counts verbatim ("11 of 12 
 +    # against 41 of 42"), so those are checked as literal substrings. 
 +    gran = [k for k in blocks if "gran" in k] 
 +    if len(gran) != 1: 
 +        sys.exit(f"FATAL: no current+granularity block in section B: {sorted(blocks)}") 
 +    for lab, og, on, rg, rn, pv in blocks[gran[0]]
 +        need(f"{lab} recovered good/(current+gran)", f"{rg} of {rn}"
 +        need(f"{lab} already-eligible good/(current+gran)", f"{og} of {on}"
 +        need(f"{lab} Fisher p (recovered vs existing, current+gran)", f"{float(pv):.2f}") 
 + 
 +    # The current-only Disconnect figures are quoted in a possessive phrasing 
 +    # ("9 of Disconnect's 12 ... against 39 of its previous 42"), so they are 
 +    # checked by regex rather than as a literal. Both must be on the page: the 
 +    # whole point of the fix is that the page names which metric it is using. 
 +    conly = [k for k in blocks if "gran" not in k] 
 +    if len(conly) != 1: 
 +        sys.exit(f"FATAL: no current-only block in section B: {sorted(blocks)}"
 +    for lab, og, on, rg, rn, pv in blocks[conly[0]]: 
 +        if lab != "Disconnect": 
 +            continue 
 +        checked += 2 
 +        if not re.search(rf"\b{rg}\b[^.]{{0,40}}\b{rn}\b", page): 
 +            fails.append(f"{lab} recovered good/n (current only): " 
 +                         f"{rg} .. {rn} is not on the page"
 +        if not re.search(rf"\b{og}\b[^.]{{0,40}}\b{on}\b", page): 
 +            fails.append(f"{lab} already-eligible good/n (current only): " 
 +                         f"{og} .. {on} is not on the page")
  
     # ---- D. the worst case, both conventions ---------------------------------     # ---- D. the worst case, both conventions ---------------------------------
Line 1182: Line 1284:
  
     # ---- E2. the pairwise comparisons ----------------------------------------     # ---- E2. the pairwise comparisons ----------------------------------------
 +    # Sliced out of the report by heading rather than matched across the whole
 +    # file: section B prints rows in the same shape, and a regex over the whole
 +    # output silently took whichever came last.
 +    mE2 = re.search(r"^--- E2\..*?$(.*?)^--- E3\.", out, re.M | re.S)
 +    if not mE2:
 +        sys.exit("FATAL: section E2 of the report did not parse: no E2..E3 slice")
 +    e2 = mE2.group(1)
     secE2 = re.findall(r" (Disconnect vs webXray|Disconnect vs Tracker Radar|"     secE2 = re.findall(r" (Disconnect vs webXray|Disconnect vs Tracker Radar|"
-                       r"Tracker Radar vs webXray)\s+([\d.]+)\s+([\d.]+)\s+(yes|no)\s*$", +                       r"Tracker Radar vs webXray)\s+([\d.]+)\s+([\d.]+)\s+
-                       out, re.M) +                       r"(yes|no) / (yes|no)\s", e2, re.M) 
-    if len(secE2) != 3+    # Two metric blocks since 2026-09-11, three pairs each. 
-        sys.exit("FATAL: section E2 of the report did not parse")+    if len(secE2) != 6
 +        sys.exit(f"FATAL: section E2 of the report did not parse: " 
 +                 f"{len(secE2)} pair row(s), expected 6")
     def need_p(what, value):     def need_p(what, value):
         """A p-value may appear at three or two decimals: the page writes 0.031         """A p-value may appear at three or two decimals: the page writes 0.031
Line 1198: Line 1309:
             fails.append(f"{what}: p {value} is not on the page in any of {sorted(forms)}")             fails.append(f"{what}: p {value} is not on the page in any of {sorted(forms)}")
  
-    for pair, pb, pa, surv in secE2:+    for pair, pb, pa, sb, sa in secE2:
         need_p(f"{pair}: p after", pa)         need_p(f"{pair}: p after", pa)
         need_p(f"{pair}: p before", pb)         need_p(f"{pair}: p before", pb)
     raw = dict((lab, (g, n)) for lab, g, n in re.findall(     raw = dict((lab, (g, n)) for lab, g, n in re.findall(
-        r" (webXray|Tracker Radar|Disconnect)\s+\d+/\d+\s+(\d+)/(\d+)\s", out, re.M))+        r" (webXray|Tracker Radar|Disconnect)\s+\d+/\d+\s+(\d+)/(\d+)\s", e2, re.M))
     if len(raw) != 3:     if len(raw) != 3:
         sys.exit("FATAL: section E2's raw-count table did not parse")         sys.exit("FATAL: section E2's raw-count table did not parse")
Line 1208: Line 1319:
         need(f"{lab} current/eligible after", f"{g} of {n}")         need(f"{lab} current/eligible after", f"{g} of {n}")
  
-    # ---- E3. the sensitivity run --------------------------------------------- +    # ---- E3. the sensitivity runs -------------------------------------------- 
-    m = re.search(r" dropped: (.+)$", out, re.M)+    # THREE runs since 2026-09-11, not one. A review pass found that publishing 
 +    # only the narrowest of them (2 rows of the 11 that rest on the new bar) and 
 +    # calling it "moves nothing" left the same-bar comparison -- the one that 
 +    # answers the objection -- unpublished, and left the i.ua alternative 
 +    # reading promised in the correction log but never computed. All three are 
 +    # checked here so dropping one back out of the page fails the guard. 
 +    mE3 = re.search(r"^--- E3\..*?$(.*?)^--- F\.", out, re.M | re.S) 
 +    if not mE3: 
 +        sys.exit("FATAL: section E3 of the report did not parse: no E3..F slice"
 +    e3 = mE3.group(1) 
 +    m = re.search(r" dropped: (.+)$", e3, re.M)
     if not m:     if not m:
-        sys.exit("FATAL: section E3 of the report did not parse")+        sys.exit("FATAL: section E3 of the report did not parse: no 'dropped:' line")
     for d in m.group(1).split(", "):     for d in m.group(1).split(", "):
         need(f"sensitivity dropped {d}", f"''{d}''")         need(f"sensitivity dropped {d}", f"''{d}''")
-    secE3 = re.findall(r" (webXray|Tracker Radar|Disconnect)\s+\d+\s+[\d.]+%\s+([+-][\d.]+)\s*$", + 
-                       out, re.M) +    runs = re.split(r" (\d)\. ", e3, flags=re.M)[1:
-    if len(secE3) != 3: +    runs = [(runs[i], runs[i + 1]) for i in range(0, len(runs), 2)] 
-        sys.exit("FATAL: section E3's delta table did not parse"+    if len(runs) != 3: 
-    need("sensitivity deltas", +        sys.exit(f"FATAL: section E3 has {len(runs)} sensitivity run(s), expected 3") 
-         ", ".join(f"{lab} {d.replace('-''−')}" for lab, in secE3))+    rates = {} 
 +    for num, body in runs: 
 +        rows = re.findall(r" (webXray|Tracker Radar|Disconnect)\s+\d+\s+\d+/\d+\s+" 
 +                          r"([\d.]+)%\s+([+-][\d.]+)\s*$", body, re.M) 
 +        if len(rows) != 3: 
 +            sys.exit(f"FATAL: E3 run {num}'s delta table did not parse " 
 +                     f"({len(rows)} rows)"
 +        rates[num] = rows 
 + 
 +    # run 1: the page quotes the deltas, not the rates. 
 +    MINUS = "\u2212"   # the page uses U+2212, the script's output ASCII '-' 
 +    need("sensitivity run 1 deltas", 
 +         ", ".join(lab + " " + d.replace("-", MINUS) for lab, _, d in rates["1"])) 
 +    # run 2: the same-bar comparison. The page quotes rate AND delta per list. 
 +    for lab, pct, d in rates["2"]: 
 +        need(f"same-bar run: {lab} rate", f"{pct}%"
 +        need(f"same-bar run: {lab} delta", "("d.replace("-"MINUS")") 
 +    # run 3: the i.ua alternative reading. Only Disconnect moves. 
 +    d3 = dict((lab, pct) for lab, pct, _ in rates["3"]) 
 +    need("i.ua alternative reading: Disconnect rate", f"{d3['Disconnect']}%")
  
     # ---- F. the remaining residue, every domain named -------------------------     # ---- F. the remaining residue, every domain named -------------------------
Line 1243: Line 1383:
     for d in residue:     for d in residue:
         need(f"residue domain {d}", f"''{d}''")         need(f"residue domain {d}", f"''{d}''")
 +
 +    # ---- G. SUPERSEDED figures must be ABSENT --------------------------------
 +    # Every check above asserts a correct figure is PRESENT. That is only half
 +    # of what a page can get wrong, and on 2026-09-11 it was the wrong half:
 +    # the page's headline recommendation box carried 94.4% and 73.7% -- the
 +    # pre-second-pass rates -- while both guards exited 0, because the correct
 +    # 89.2% and 73.9% were present two sections away. Three review passes each
 +    # found it independently; neither guard could.
 +    #
 +    # A superseded value may legitimately appear in a //before// column, a
 +    # historical reviewer log, a published diff or a mutation harness's own
 +    # output, so absence is asserted **per line**: the line must either name the
 +    # new value too, or be marked as historical. That rule is narrow enough to
 +    # bite and wide enough not to forbid an honest before/after table.
 +    # ``^[<>] `` is a unified-diff line and nothing else. An earlier version
 +    # wrote ``^\s*[<>|]``, which exempted **every table row on the page** -- and
 +    # the before/after table is a table, so two of the three mutations that
 +    # reintroduce a superseded rate walked straight through the check that
 +    # exists to catch exactly them. Caught by the mutation harness, which is the
 +    # only reason this comment is here rather than a second silent guard.
 +    HIST = re.compile(r"//was |before the second pass|\bwas \d|2026-09-05 pass|"
 +                      r"^[<>] |mutate |^caught ", re.I)
 +    sup = {}
 +    for lab, (g, n) in raw.items():
 +        m2 = re.search(r" " + re.escape(lab) + r"\s+(\d+)/(\d+)\s", out, re.M)
 +        sup[f"{m2.group(1)} of {m2.group(2)}"] = f"{g} of {n}"
 +    for lab, b_, a_, _, _, _ in secD:
 +        sup[f"{b_}%"] = f"{a_}%"
 +    # Section E's per-list rate table is where the HEADLINE rates move, and the
 +    # first version of this check did not read it -- so it did not bite on the
 +    # very page state that motivated it (94.4% in the recommendation box). The
 +    # control for this check is therefore: run it against the pre-fix export and
 +    # watch it fail. If it passes there, it is asserting nothing.
 +    # Only the ``current`` and ``current+gran.`` rows. The granularity, stale and
 +    # error sub-rates are single-digit percentages -- 0.0%, 2.8%, 4.4%, 4.5% --
 +    # and they collide with unrelated figures all over a 66 kB page: sweeping
 +    # them produced five false positives on a correct page and would have
 +    # trained the next run to ignore this check. The headline rate is what a
 +    # recommendation box quotes, and it is what went stale.
 +    for verdict, db, da, eb_, ea_ in re.findall(
 +            r" (current|current\+gran\.)\s+([\d.]+)%\s+([\d.]+)%\s+[+-][\d.]+\s+"
 +            r"([\d.]+)%\s+([\d.]+)%\s+[+-][\d.]+\s*$", out, re.M):
 +        for b_, a_ in ((db, da), (eb_, ea_)):
 +            if b_ != a_:
 +                sup[f"{b_}%"] = f"{a_}%"
 +    # Figures the REPORT does not produce, but the page carries and this sitting
 +    # moved. Section G can only sweep what the report prints, and the total
 +    # number of hand-changed verdicts is not one of those: it is the first
 +    # sitting's 29 plus whatever this one re-scored. It went stale in exactly
 +    # the way this check exists to stop -- the page carried it TWICE, the round
 +    # four patch fixed one copy, and the site-wide sweep found the other. So it
 +    # is derived here from the corrections script's own output rather than
 +    # typed, and both directions are asserted.
 +    if args.corrections:
 +        ctext = open(args.corrections, encoding="utf8").read()
 +        mres = re.search(r"^actions: .*rescore=(\d+)", ctext, re.M)
 +        if not mres:
 +            sys.exit("FATAL: could not read the rescore count from "
 +                     f"{args.corrections}")
 +        prior = 29          # the 2026-09-05 sitting's own hand changes
 +        total = prior + int(mres.group(1))
 +        need("hand-changed verdicts, total", f"{total} of the 525")
 +        sup[f"{prior} of the 525"] = f"{total} of the 525"
 +
 +    # **p-values are deliberately NOT swept for absence.** They are written at
 +    # two or three decimals interchangeably, and a two-decimal form is a prefix
 +    # of other numbers on the page: "0.025" rounds to "0.03", which matches
 +    # inside "0.031", and "0.014" rounds to "0.01", which matches inside the
 +    # Bonferroni threshold "0.0167". Every one of those is a false positive on a
 +    # correct page, and a guard that cries wolf is a guard the next run turns
 +    # off. The p-values are covered by the presence checks above and by the
 +    # page's own explicit before/after column.
 +    # Values collected above are `str`; the p-value entries are `set`. Normalise
 +    # so the loop below has one shape.
 +    sup = {k: (v if isinstance(v, set) else {v}) for k, v in sup.items()}
 +    for old_s, new_forms in sup.items():
 +        # A digit or a dot immediately before the match means this is the tail of
 +        # a longer number -- "2.4%" inside "92.4%" -- and not the figure at all.
 +        pat = re.compile(r"(?<![\d.])" + re.escape(old_s))
 +        for line in page.splitlines():
 +            if pat.search(line) and not any(f in line for f in new_forms) \
 +                    and not HIST.search(line):
 +                checked += 1
 +                fails.append(f"superseded figure {old_s!r} on a line that does not also "
 +                             f"carry any of {sorted(new_forms)} and is not marked "
 +                             f"historical: {line.strip()[:120]!r}")
 +    checked += len(sup)
  
     print(f"checked {checked} figures from {args.output} against {args.page}")     print(f"checked {checked} figures from {args.output} against {args.page}")
Line 1257: Line 1484:
 </file> </file>
  
-===== H. scripts/check_tail_figures_mutations.sh — proving that guard bites =====+===== H. scripts/check_tail_merge_mutations.sh — proving the merge gate bites ===== 
 + 
 +Eleven corruptions of one adjudication batch, one gate each: a verdict outside the vocabulary, the retired ''self-named'' verdict returning, an ''absent'' revised in either direction, a ''resolved'' row with no source or no quote, a bogus ''source_kind'', an ''unresolved'' row still carrying a verdict, a dropped row, a duplicate, and a row for a domain outside the residue. The gate exiting 0 on the real run means nothing until it has been seen to exit non-zero. 
 + 
 +<file bash check_tail_merge_mutations.sh> 
 +#!/bin/bash 
 +# Prove that owner_tail_merge.py's gates actually reject a corrupt second pass. 
 +
 +# The gate is the only thing standing between a sub-agent's JSON and the 
 +# published rates, and it exited 0 on the real run -- which tells you nothing 
 +# unless it can be seen to exit non-zero. Each mutation below corrupts one 
 +# adjudication file in one way the gate claims to catch, and asserts it fails. 
 +
 +#   bash scripts/check_tail_merge_mutations.sh 
 +set -u 
 +TMP=$(mktemp -d) 
 +pass=0; fail=0 
 + 
 +run() {  # run the gate over a mutated copy of out/tail_adj 
 +  python3 scripts/owner_tail_merge.py --sample out/owner_sample.json \ 
 +    --base out/adj_rows_scored.json --tail out/tail40.json \ 
 +    --dir "$TMP/adj" --out "$TMP/rows.json" >"$TMP/log" 2>&
 +
 + 
 +mutate() { 
 +  desc="$1"; jqprog="$2" 
 +  rm -rf "$TMP/adj"; cp -r out/tail_adj "$TMP/adj" 
 +  jq "$jqprog" out/tail_adj/result1.json > "$TMP/adj/result1.json" || { echo "BROKEN   $desc (jq failed)"; fail=$((fail+1)); return; } 
 +  if cmp -s out/tail_adj/result1.json "$TMP/adj/result1.json"; then 
 +    echo "BROKEN   $desc -- the jq changed nothing, so this asserts nothing" 
 +    fail=$((fail+1)); return 
 +  fi 
 +  if run; then 
 +    echo "SURVIVED $desc"; fail=$((fail+1)) 
 +  else 
 +    echo "caught   $desc  [$(grep -m1 -oE '  [a-z0-9.-]+: .*' "$TMP/log" | head -c 110)]" 
 +    pass=$((pass+1)) 
 +  fi 
 +
 + 
 +mutate "a verdict outside the vocabulary"            '[.[] | if .domain=="wishabi.com" then .webXray="probably" else . end]' 
 +mutate "the retired self-named verdict returns"      '[.[] | if .domain=="wishabi.com" then .disconnect="self-named" else . end]' 
 +mutate "an absent verdict revised to current"        '[.[] | if .domain=="htplayground.com" then .webXray="current" else . end]' 
 +mutate "a real verdict downgraded to absent"         '[.[] | if .domain=="wishabi.com" then .webXray="absent" else . end]' 
 +mutate "resolved with no source"                     '[.[] | if .domain=="wishabi.com" then .source=null else . end]' 
 +mutate "resolved with no quote"                      '[.[] | if .domain=="wishabi.com" then .quote="" else . end]' 
 +mutate "a source_kind outside the vocabulary"        '[.[] | if .domain=="wishabi.com" then .source_kind="vibes" else . end]' 
 +mutate "unresolved but still carrying a verdict"     '[.[] | if .domain=="1rx.io" then .tracker_radar="current" else . end]' 
 +mutate "a row dropped from the batch"                '[.[] | select(.domain!="wishabi.com")]' 
 +mutate "a duplicate row"                             '. + [.[0]]' 
 +mutate "a row for a domain not in the residue"       '[.[] | if .domain=="wishabi.com" then .domain="gstatic.com" else . end]' 
 + 
 +echo 
 +echo "mutations caught: $pass; survived or broken: $fail" 
 +rm -rf "$TMP" 
 +[ "$fail" -eq 0 ] 
 +</file> 
 + 
 +===== I. scripts/check_tail_figures_mutations.sh — proving that guard bites =====
  
 Fifteen corruptions, one figure each, twelve changes and three deletions. One survived the first run and that is why the residue check above is a contiguous run. Fifteen corruptions, one figure each, twelve changes and three deletions. One survived the first run and that is why the residue check above is a contiguous run.
Line 1270: Line 1555:
 # are DELETIONS rather than changes, because the failure mode that matters most # are DELETIONS rather than changes, because the failure mode that matters most
 # is a guard passing because the string it was looking for is no longer there. # is a guard passing because the string it was looking for is no longer there.
 +#
 +# LIMIT, stated because it was observed here: check_tail_figures.py asks whether
 +# a figure is PRESENT. A page that carries a figure twice and gets one copy
 +# wrong still passes it, so two mutations below need the sed `g` flag to assert
 +# anything at all -- without it they corrupt the first copy and the guard reads
 +# the second and is content. That hole is real and is covered by a different
 +# tool: scripts/sweep_moved_figures.py scans every page in the wiki for every
 +# superseded value, which is how the four surviving copies of the pre-second-
 +# pass rates were found on 2026-09-11. Do not expect this harness to find them.
 # #
 #   bash scripts/check_tail_figures_mutations.sh #   bash scripts/check_tail_figures_mutations.sh
 set -u set -u
-PAGE=pages/own_tail.txt+PAGE=${1:-pages/own_tail7.txt}
 OUT=out/report_tail_pass-output.txt OUT=out/report_tail_pass-output.txt
 +CORR=out/owner_tail_corrections-output.txt
 TMP=$(mktemp -d) TMP=$(mktemp -d)
 pass=0; fail=0 pass=0; fail=0
Line 1285: Line 1580:
     fail=$((fail+1)); return     fail=$((fail+1)); return
   fi   fi
-  if python3 scripts/check_tail_figures.py --page "$TMP/p.txt" --output "$OUT" >/dev/null 2>&1; then+  if python3 scripts/check_tail_figures.py --page "$TMP/p.txt" --output "$OUT" \ 
 +       --corrections "$CORR" >/dev/null 2>&1; then
     echo "SURVIVED $desc"     echo "SURVIVED $desc"
     fail=$((fail+1))     fail=$((fail+1))
Line 1296: Line 1592:
 # --- changed figures --------------------------------------------------------- # --- changed figures ---------------------------------------------------------
 mutate "eligible after 56 / 56 / 54 -> 56 / 56 / 53"        's|\*\*56 / 56 / 54\*\*|**56 / 56 / 53**|' mutate "eligible after 56 / 56 / 54 -> 56 / 56 / 53"        's|\*\*56 / 56 / 54\*\*|**56 / 56 / 53**|'
-mutate "Disconnect recovered 11 of 12 -> 12 of 12"          's|11 of 12|12 of 12|'+mutate "Disconnect recovered 11 of 12 -> 12 of 12"          's|11 of 12|12 of 12|g'
 mutate "webXray recovered-vs-existing p 0.64 -> 0.04"       's|0\.64|0.04|' mutate "webXray recovered-vs-existing p 0.64 -> 0.04"       's|0\.64|0.04|'
 mutate "Disconnect vs webXray p 0.031 -> 0.013"             's|0\.031|0.013|' mutate "Disconnect vs webXray p 0.031 -> 0.013"             's|0\.031|0.013|'
Line 1311: Line 1607:
 mutate "delete the residue domain ''mmstat.com''"           "s|''mmstat.com''||" mutate "delete the residue domain ''mmstat.com''"           "s|''mmstat.com''||"
 mutate "delete the sensitivity-dropped ''sa-as.com''"       "s|''sa-as.com''||" mutate "delete the sensitivity-dropped ''sa-as.com''"       "s|''sa-as.com''||"
-mutate "delete the error domain ''km0trk.com''"             "s|''km0trk.com''||"+mutate "delete the error domain ''km0trk.com''"             "s|''km0trk.com''||g" 
 + 
 +# --- the three sensitivity runs (E3), added 2026-09-11 after the generic pass - 
 +# The page used to publish only the narrowest of the three and call it "moves 
 +# nothing". These assert that the same-bar run and the i.ua alternative reading 
 +# cannot quietly leave the page again. 
 +mutate "same-bar Tracker Radar 72.1% -> 72.6%"              's|72\.1%|72.6%|' 
 +mutate "same-bar Disconnect 89.0% -> 89.5%"                 's|89\.0%|89.5%|' 
 +mutate "same-bar Tracker Radar delta (−1.8) -> (−1.9)"      's|(−1\.8)|(−1.9)|' 
 +mutate "delete the same-bar Disconnect delta (−0.2)"        's|(−0\.2)||' 
 +mutate "i.ua alternative reading 88.6% -> 87.6%"            's|88\.6%|87.6%|' 
 + 
 +# --- superseded figures reintroduced (section G of the guard) ----------------- 
 +# These are the mutations the guard could NOT catch before 2026-09-11: three 
 +# review passes each reported, independently, that the page's recommendation box 
 +# carried the pre-second-pass rates while both guards exited 0. 
 +mutate "reintroduce the superseded Disconnect rate 89.2% -> 94.4%"  's|\*\*89\.2%\*\*|94.4%|' 
 +mutate "reintroduce the superseded Tracker Radar rate 73.9% -> 73.7%" 's|73\.9% | 73.7% |' 
 +mutate "reintroduce the superseded webXray encounter rate 93.8% -> 93.9%" 's|\*\*93\.8%\*\*|93.9%|' 
 +# This one is a single copy of a figure the page carries TWICE. It is the drift 
 +# the site-wide sweep found after round four had fixed the other copy, and the 
 +# guard could not see it because the report script does not print the quantity. 
 +mutate "revert ONE copy of the hand-changed count 30 -> 29 of the 525" 's|30 of the 525|29 of the 525|'
  
 echo echo
Line 1319: Line 1637:
 </file> </file>
  
-===== I. Unedited output: scripts/owner_tail_probe.sh, all 40 residue domains =====+===== J. Unedited output: scripts/check_tail_merge_mutations.sh ===== 
 + 
 +Run as ''bash scripts/check_tail_merge_mutations.sh''
 + 
 +<code> 
 +caught   a verdict outside the vocabulary  [  wishabi.com: verdict webXray='probably' outside the vocabulary] 
 +caught   the retired self-named verdict returns  [  wishabi.com: disconnect='self-named' -- the verdict was retired on 2026-09-05] 
 +caught   an absent verdict revised to current  [  htplayground.com: webXray was absent in the base rows and this pass set 'current'; absent is a fact about th] 
 +caught   a real verdict downgraded to absent  [  wishabi.com: webXray set to absent but the base rows say 'unknown'
 +caught   resolved with no source  [  wishabi.com: resolution=resolved but source/quote empty] 
 +caught   resolved with no quote  [  wishabi.com: resolution=resolved but source/quote empty] 
 +caught   a source_kind outside the vocabulary  [  wishabi.com: source_kind='vibes' outside the vocabulary] 
 +caught   unresolved but still carrying a verdict  [  1rx.io: resolution=unresolved but tracker_radar='current'; an unresolved row may only carry absent or unknow] 
 +caught   a row dropped from the batch  [] 
 +caught   a duplicate row  [] 
 +caught   a row for a domain not in the residue  [] 
 + 
 +mutations caught: 11; survived or broken: 0 
 +</code> 
 + 
 +===== K. Unedited output: scripts/owner_tail_probe.sh, all 40 residue domains =====
  
 Run as ''bash scripts/owner_tail_probe.sh out/tail40.json out/tail_probe''. Run as ''bash scripts/owner_tail_probe.sh out/tail40.json out/tail_probe''.
Line 3796: Line 4134:
 </code> </code>
  
-===== J. Unedited output: scripts/owner_tail_merge.py =====+===== L. Unedited output: scripts/owner_tail_merge.py =====
  
 Run as ''python3 scripts/owner_tail_merge.py --sample out/owner_sample.json --base out/adj_rows_scored.json --tail out/tail40.json --dir out/tail_adj --out out/adj_rows_tail.json''. Run as ''python3 scripts/owner_tail_merge.py --sample out/owner_sample.json --base out/adj_rows_scored.json --tail out/tail40.json --dir out/tail_adj --out out/adj_rows_tail.json''.
Line 3825: Line 4163:
 </code> </code>
  
-===== K. Unedited output: scripts/owner_verify_sources.py on the second pass's rows =====+===== M. Unedited output: scripts/owner_verify_sources.py on the second pass's rows =====
  
 Run as ''python3 scripts/owner_verify_sources.py --rows out/tail_rows_only.json --cache out/tail_verify_cache --out out/tail_verify.json''. Run as ''python3 scripts/owner_verify_sources.py --rows out/tail_rows_only.json --cache out/tail_verify_cache --out out/tail_verify.json''.
Line 3861: Line 4199:
 </code> </code>
  
-===== L. Unedited output: scripts/owner_tail_corrections.py =====+===== N. Unedited output: scripts/owner_tail_corrections.py =====
  
 Run as ''python3 scripts/owner_tail_corrections.py --rows out/adj_rows_tail.json --out out/adj_rows_tail_final.json''. Run as ''python3 scripts/owner_tail_corrections.py --rows out/adj_rows_tail.json --out out/adj_rows_tail_final.json''.
Line 3922: Line 4260:
 </code> </code>
  
-===== M. Unedited output: scripts/owner_random_sample.py re-run after the second pass =====+===== O. Unedited output: scripts/owner_random_sample.py re-run after the second pass =====
  
 Run as ''python3 scripts/owner_random_sample.py --sample out/owner_sample.json --rows out/adj_rows_tail_final.json --table --wiki''. Run as ''python3 scripts/owner_random_sample.py --sample out/owner_sample.json --rows out/adj_rows_tail_final.json --table --wiki''.
Line 4245: Line 4583:
 </code> </code>
  
-===== N. The diff: the 2026-09-05 estimate against the 2026-09-11 one =====+===== P. The diff: the 2026-09-05 estimate against the 2026-09-11 one =====
  
 Run as ''diff out/owner_random_sample-output.txt out/owner_random_sample-tail-output.txt''. Run as ''diff out/owner_random_sample-output.txt out/owner_random_sample-tail-output.txt''.
  
 <code> <code>
-17,19c17,19 +--- out/owner_random_sample-output.txt 2026-09-05 18:50:30.299249612 +0000 
-webXray            60          11        49   Q1 20/24  Q2 10/12  Q3 7/12  Q4 12/12 ++++ out/owner_random_sample-tail-output.txt 2026-09-11 19:07:23.934060685 +0000 
-Tracker Radar      60          13        47   Q1 17/24  Q2 9/12  Q3 11/12  Q4 10/12 +@@ -14,9 +14,9 @@ 
-Disconnect         60          18        42   Q1 20/24  Q2 7/12  Q3 7/12  Q4 8/12 + the tail, so it is reported first and per quartile rather than buried. 
---- +  
-webXray            60                  56   Q1 22/24  Q2 12/12  Q3 10/12  Q4 12/12 + List            drawn  unresolved  eligible   per quartile (eligible/drawn) 
-Tracker Radar      60                  56   Q1 22/24  Q2 10/12  Q3 12/12  Q4 12/12 +-webXray            60          11        49   Q1 20/24  Q2 10/12  Q3 7/12  Q4 12/12 
-Disconnect         60                  54   Q1 22/24  Q2 11/12  Q3 9/12  Q4 12/12 +-Tracker Radar      60          13        47   Q1 17/24  Q2 9/12  Q3 11/12  Q4 10/12 
-29c29 +-Disconnect         60          18        42   Q1 20/24  Q2 7/12  Q3 7/12  Q4 8/12 
-webXray  (covers 664 of 32,337 frame domains = 2.1%; n eligible = 49) ++webXray            60                  56   Q1 22/24  Q2 12/12  Q3 10/12  Q4 12/12 
---- ++Tracker Radar      60                  56   Q1 22/24  Q2 10/12  Q3 12/12  Q4 12/12 
-webXray  (covers 664 of 32,337 frame domains = 2.1%; n eligible = 56) ++Disconnect         60                  54   Q1 22/24  Q2 11/12  Q3 9/12  Q4 12/12 
-31,33c31,33 +  
-  current                69.9%  [ 55.5%, 83.1%]            93.9%  [ 80.9%, 98.8%] + --- B. Per-list verdict rates, with 95% bootstrap intervals ----------- 
-<   granularity            10.2%  [  2.1%, 20.9%]             0.2%  [  0.0%,  0.8%] +  
-<   stale                  19.8%  [  9.2%, 32.3%]             5.9%  [  1.0%, 19.1%] +@@ -26,36 +26,34 @@ 
---- + list covers equally; 'encounter-weighted' weights by Tracker Radar prevalence, 
->   current                69.2%  [ 56.1%, 81.4%]            93.8%  [ 80.9%, 98.6%] + i.e. how often a crawl actually meets the domain. 
->   granularity             8.8%  [  2.1%, 17.5%]             0.2%  [  0.0%,  0.7%] +  
->   stale                  22.0%  [ 11.4%, 33.8%]             5.9%  [  1.1%, 18.7%] +-webXray  (covers 664 of 32,337 frame domains = 2.1%; n eligible = 49) 
-36,38c36,38 ++webXray  (covers 664 of 32,337 frame domains = 2.1%; n eligible = 56) 
-  The usable statement is the rule-of-three upper bound: with 49 eligible rows and 0 seen, the true rate is below 6.1% at 95% confidence. +   verdict         domain-level           95% CI    encounter-wtd           95% CI 
-<   current+gran.          80.2%  [ 67.7%, 90.8%]            94.1%  [ 81.4%, 99.0%] +-  current                69.9%  [ 55.5%, 83.1%]            93.9%  [ 80.9%, 98.8%] 
-<   stale+error            19.8%  [  9.0%, 32.6%]             5.9%  [  1.1%, 19.4%] +-  granularity            10.2%  [  2.1%, 20.9%]             0.2%  [  0.0%,  0.8%] 
---- +-  stale                  19.8%  [  9.2%, 32.3%]             5.9%  [  1.0%, 19.1%] 
->   The usable statement is the rule-of-three upper bound: with 56 eligible rows and 0 seen, the true rate is below 5.4% at 95% confidence. ++  current                69.2%  [ 56.1%, 81.4%]            93.8%  [ 80.9%, 98.6%] 
->   current+gran.          78.0%  [ 65.8%, 88.8%]            94.1%  [ 81.4%, 98.8%] ++  granularity             8.8%  [  2.1%, 17.5%]             0.2%  [  0.0%,  0.7%] 
->   stale+error            22.0%  [ 11.0%, 33.8%]             5.9%  [  1.1%, 18.9%] ++  stale                  22.0%  [ 11.4%, 33.8%]             5.9%  [  1.1%, 18.7%] 
-40c40 +   error                   0.0%  [  0.0% 0.0%]             0.0%  [  0.0% 0.0%] 
-Tracker Radar  (covers 5,566 of 32,337 frame domains = 17.2%; n eligible = 47) +   zero cells (error): the bootstrap interval on a cell with no observations is [0,0] and asserts nothing. 
---- +-  The usable statement is the rule-of-three upper bound: with 49 eligible rows and 0 seen, the true rate is below 6.1% at 95% confidence. 
-Tracker Radar  (covers 5,566 of 32,337 frame domains = 17.2%; n eligible = 56) +-  current+gran.          80.2%  [ 67.7%, 90.8%]            94.1%  [ 81.4%, 99.0%] 
-42,47c42,47 +-  stale+error            19.8%  [  9.0%, 32.6%]             5.9%  [  1.1%, 19.4%] 
-  current                73.7%  [ 60.8%, 85.8%]            68.6%  [ 29.3%, 97.0%] ++  The usable statement is the rule-of-three upper bound: with 56 eligible rows and 0 seen, the true rate is below 5.4% at 95% confidence. 
-<   granularity             2.8%  [  0.0%,  8.3%]             0.1%  [  0.0%,  0.4%] ++  current+gran.          78.0%  [ 65.8%, 88.8%]            94.1%  [ 81.4%, 98.8%] 
-<   stale                  22.1%  [ 10.5%, 35.1%]            26.8%  [  0.4%, 64.6%] ++  stale+error            22.0%  [ 11.0%, 33.8%]             5.9%  [  1.1%, 18.9%] 
-<   error                   1.5%  [  0.0%,  4.4%]             4.5%  [  0.0%, 19.3%] +  
-<   current+gran.          76.5%  [ 63.5%, 88.0%]            68.7%  [ 29.2%, 97.7%] +-Tracker Radar  (covers 5,566 of 32,337 frame domains = 17.2%; n eligible = 47) 
-<   stale+error            23.5%  [ 11.7%, 36.1%]            31.3%  [  2.9%, 71.2%] ++Tracker Radar  (covers 5,566 of 32,337 frame domains = 17.2%; n eligible = 56) 
---- +   verdict         domain-level           95% CI    encounter-wtd           95% CI 
->   current                73.9%  [ 61.6%, 85.3%]            74.3%  [ 41.1%, 97.8%] +-  current                73.7%  [ 60.8%, 85.8%]            68.6%  [ 29.3%, 97.0%] 
->   granularity             2.5%  [  0.0%,  7.5%]             0.1%  [  0.0%,  0.3%] +-  granularity             2.8%  [  0.0%,  8.3%]             0.1%  [  0.0%,  0.4%] 
->   stale                  19.2%  [  9.1%, 30.5%]            21.6%  [  0.3%, 53.1%] +-  stale                  22.1%  [ 10.5%, 35.1%]            26.8%  [  0.4%, 64.6%] 
->   error                   4.4%  [  0.0%,  9.8%]             4.0%  [  0.0%, 15.7%] +-  error                   1.5%  [  0.0%,  4.4%]             4.5%  [  0.0%, 19.3%] 
->   current+gran.          76.4%  [ 64.6%, 87.5%]            74.4%  [ 41.6%, 97.8%] +-  current+gran.          76.5%  [ 63.5%, 88.0%]            68.7%  [ 29.2%, 97.7%] 
->   stale+error            23.6%  [ 12.5%, 35.6%]            25.6%  [  2.2%, 58.5%] +-  stale+error            23.5%  [ 11.7%, 36.1%]            31.3%  [  2.9%, 71.2%] 
-49c49 ++  current                73.9%  [ 61.6%, 85.3%]            74.3%  [ 41.1%, 97.8%] 
-Disconnect  (covers 2,264 of 32,337 frame domains = 7.0%; n eligible = 42) ++  granularity             2.5%  [  0.0%,  7.5%]             0.1%  [  0.0%,  0.3%] 
---- ++  stale                  19.2%  [  9.1%, 30.5%]            21.6%  [  0.3%, 53.1%] 
-Disconnect  (covers 2,264 of 32,337 frame domains = 7.0%; n eligible = 54) ++  error                   4.4%  [  0.0%,  9.8%]             4.0%  [  0.0%, 15.7%] 
-51,58c51,56 ++  current+gran.          76.4%  [ 64.6%, 87.5%]            74.4%  [ 41.6%, 97.8%] 
-  current                94.4%  [ 86.9%,100.0%]            83.1%  [ 53.7%,100.0%] ++  stale+error            23.6%  [ 12.5%, 35.6%]            25.6%  [  2.2%, 58.5%] 
-<   granularity             4.4%  [  0.0%, 11.2%]            16.5%  [  0.0%, 45.8%] +  
-<   stale                   1.2%  [  0.0%,  3.8%]             0.4%  [  0.0%,  1.5%] +-Disconnect  (covers 2,264 of 32,337 frame domains = 7.0%; n eligible = 42) 
-<   error                   0.0%  [  0.0%,  0.0%]             0.0%  [  0.0%,  0.0%] ++Disconnect  (covers 2,264 of 32,337 frame domains = 7.0%; n eligible = 54) 
-<   zero cells (error): the bootstrap interval on a cell with no observations is [0,0] and asserts nothing. +   verdict         domain-level           95% CI    encounter-wtd           95% CI 
-<   The usable statement is the rule-of-three upper bound: with 42 eligible rows and 0 seen, the true rate is below 7.1% at 95% confidence. +-  current                94.4%  [ 86.9%,100.0%]            83.1%  [ 53.7%,100.0%] 
-<   current+gran.          98.8%  [ 96.2%,100.0%]            99.6%  [ 98.5%,100.0%] +-  granularity             4.4%  [  0.0%, 11.2%]            16.5%  [  0.0%, 45.8%] 
-<   stale+error             1.2%  [  0.0%,  3.8%]             0.4%  [  0.0%,  1.5%] +-  stale                   1.2%  [  0.0%,  3.8%]             0.4%  [  0.0%,  1.5%] 
---- +-  error                   0.0%  [  0.0%,  0.0%]             0.0%  [  0.0%,  0.0%] 
->   current                89.2%  [ 80.5%, 96.8%]            82.8%  [ 53.8%,100.0%] +-  zero cells (error): the bootstrap interval on a cell with no observations is [0,0] and asserts nothing. 
->   granularity             7.6%  [  1.1%, 15.2%]            16.8%  [  0.0%, 45.6%] +-  The usable statement is the rule-of-three upper bound: with 42 eligible rows and 0 seen, the true rate is below 7.1% at 95% confidence. 
->   stale                   1.1%  [  0.0%,  3.4%]             0.4%  [  0.0%,  1.5%] +-  current+gran.          98.8%  [ 96.2%,100.0%]            99.6%  [ 98.5%,100.0%] 
->   error                   2.1%  [  0.0%,  6.2%]             0.0%  [  0.0%,  0.0%] +-  stale+error             1.2%  [  0.0%,  3.8%]             0.4%  [  0.0%,  1.5%] 
->   current+gran.          96.8%  [ 91.5%,100.0%]            99.6%  [ 98.5%,100.0%] ++  current                89.2%  [ 80.5%, 96.8%]            82.8%  [ 53.8%,100.0%] 
->   stale+error             3.2%  [  0.0%,  8.5%]             0.4%  [  0.0%,  1.5%] ++  granularity             7.6%  [  1.1%, 15.2%]            16.8%  [  0.0%, 45.6%] 
-76,84c74,82 ++  stale                   1.1%  [  0.0%,  3.4%]             0.4%  [  0.0%,  1.5%] 
-<   webXray        heaviest row gstatic.com              verdict current     carries  39.4% of the estimate ++  error                   2.1%  [  0.0%,  6.2%]             0.0%  [  0.0%,  0.0%] 
-<                    encounter-weighted 'current'  93.9%  ->   54.4% if that one row were stale ++  current+gran.          96.8%  [ 91.5%,100.0%]            99.6%  [ 98.5%,100.0%] 
-<                    top three rows together carry  53.1% ++  stale+error             3.2%  [  0.0%,  8.5%]             0.4%  [  0.0%,  1.5%] 
-<   Tracker Radar  heaviest row omtrdc.net               verdict current     carries  24.9% of the estimate +  
-<                    encounter-weighted 'current'  68.6%  ->   43.7% if that one row were stale + --- C. Coverage is not estimated: it is counted -------------------- 
-<                    top three rows together carry  64.9% +  
-<   Disconnect     heaviest row id5-sync.com             verdict current     carries  16.7% of the estimate +@@ -73,69 +71,41 @@ 
-<                    encounter-weighted 'current'  83.1%  ->   66.4% if that one row were stale + verdict is flipped to stale. This is a sensitivity check, not a result: the 
-<                    top three rows together carry  46.0% + flipped figure is what the estimate WOULD be, not a claim that it is. 
---- +  
->   webXray        heaviest row gstatic.com              verdict current     carries  38.8% of the estimate +-  webXray        heaviest row gstatic.com              verdict current     carries  39.4% of the estimate 
->                    encounter-weighted 'current'  93.8%  ->   55.0% if that one row were stale +-                   encounter-weighted 'current'  93.9%  ->   54.4% if that one row were stale 
->                    top three rows together carry  52.2% +-                   top three rows together carry  53.1% 
->   Tracker Radar  heaviest row omtrdc.net               verdict current     carries  20.0% of the estimate +-  Tracker Radar  heaviest row omtrdc.net               verdict current     carries  24.9% of the estimate 
->                    encounter-weighted 'current'  74.3%  ->   54.3% if that one row were stale +-                   encounter-weighted 'current'  68.6%  ->   43.7% if that one row were stale 
->                    top three rows together carry  52.4% +-                   top three rows together carry  64.9% 
->   Disconnect     heaviest row id5-sync.com             verdict current     carries  16.6% of the estimate +-  Disconnect     heaviest row id5-sync.com             verdict current     carries  16.7% of the estimate 
->                    encounter-weighted 'current'  82.8%  ->   66.2% if that one row were stale +-                   encounter-weighted 'current'  83.1%  ->   66.4% if that one row were stale 
->                    top three rows together carry  45.6% +-                   top three rows together carry  46.0% 
-91,93c89,91 ++  webXray        heaviest row gstatic.com              verdict current     carries  38.8% of the estimate 
-<   webXray        absent=96  current=12  granularity=1  stale=5  unknown=1 ++                   encounter-weighted 'current'  93.8%  ->   55.0% if that one row were stale 
-<   Tracker Radar  absent=18  current=58  error=1  granularity=6  stale=16  unknown=16 ++                   top three rows together carry  52.2% 
-<   Disconnect     absent=49  current=44  granularity=8  unknown=14 ++  Tracker Radar  heaviest row omtrdc.net               verdict current     carries  20.0% of the estimate 
---- ++                   encounter-weighted 'current'  74.3%  ->   54.3% if that one row were stale 
->   webXray        absent=96  current=13  granularity=1  stale=5 ++                   top three rows together carry  52.4% 
->   Tracker Radar  absent=18  current=68  error=1  granularity=6  stale=18  unknown=4 ++  Disconnect     heaviest row id5-sync.com             verdict current     carries  16.6% of the estimate 
->   Disconnect     absent=49  current=50  granularity=12  unknown=4 ++                   encounter-weighted 'current'  82.8%  ->   66.2% if that one row were stale 
-97,138c95,108 ++                   top three rows together carry  45.6% 
-<   webXray        Q1 adgrx.com                        unknown     unresolved Strong secondary-source consensus (Netify, press coverage) that adgrx.com is S +  
-<   webXray        Q1 company-target.com               unknown     unresolved Domain has live DNS (CloudFront IP range) but TLS handshake fails and no page  + --- D. Verdicts on domains drawn for another list (NOT in any estimate) --- 
-<   webXray        Q1 1rx.io                           unknown     unresolved Nexxen's own privacy-policy pages (nexxen.com/services-privacy-policy/, nexxen +  
-<   webXray        Q1 agkn.com                         unknown     unresolved Secondary reporting (not fetched as primary) traces a chain Aggregate Knowledg + Each drawn domain was adjudicated once and the verdict recorded for all three 
-<   webXray        Q2 yceml.net                        unknown     unresolved Domain itself had no TLS handshake at probe time. Conversant LLC (webXray/Trac + lists. Only a list's own sample enters its estimate above; these are the rest
-<   webXray        Q2 blogblog.com                     unknown     unresolved Domain 404s and only serves a DV *.blogger.com wildcard cert (Google Trust Ser + printed so the discarded observations are visible rather than silently dropped. 
-<   webXray        Q3 awltovhc.com                     unknown     unresolved Long-recognized Conversant/ValueClick-style cookie-sync domain. RDAP shows an  +-  webXray        absent=96  current=12  granularity=1  stale=5  unknown=1 
-<   webXray        Q3 mmstat.com                       unknown     unresolved Registrar is Alibaba Cloud Computing (Beijing) Co., Ltd. with ns3/4/5.aliyun.c +-  Tracker Radar  absent=18  current=58  error=1  granularity=6  stale=16  unknown=16 
-<   webXray        Q3 lduhtrp.net                      unknown     unresolved Same Conversant/ValueClick-style cookie-sync domain family as awltovhc.com, wi +-  Disconnect     absent=49  current=44  granularity=8  unknown=14 
-<   webXray        Q3 collective-media.net             unknown     unresolved 'Collective, Inc.' (the ad network) split its ad-network division into 'Compas ++  webXray        absent=96  current=13  granularity=1  stale=5 
-<   webXray        Q3 wishabi.com                      unknown     unresolved wishabi.com's TLS handshake serves Flipp's certificate (CN=flipp.com) and Flip ++  Tracker Radar  absent=18  current=68  error=1  granularity=6  stale=18  unknown=4 
-<   Tracker Radar  Q1 app-us1.com                      unknown     unresolved app-us1.com serves no browsable page (CODE 000); ActiveCampaign's own fetched  ++  Disconnect     absent=49  current=50  granularity=12  unknown=4 
-<   Tracker Radar  Q1 travelpayouts.com                unknown     unresolved Homepage confirms the operating brand 'Travelpayouts' but not the legal entity +  
-<   Tracker Radar  Q1 acint.net                        unknown     unresolved Site self-describes as 'Acint (Artificial Computation Intelligence)' with only + --- E. Residue: every row excluded from an estimate -------------------- 
-<   Tracker Radar  Q1 cdnbasket.net                    unknown     unresolved bounceexchange.com 302-redirects to wunderkind.co today, and Wunderkind's fetc +  
-<   Tracker Radar  Q1 spot.im                          unknown     unresolved OpenWeb's own privacy policy confirms 'Open Web Technologies Ltd.' is a real,  +-  webXray        Q1 adgrx.com                        unknown     unresolved Strong secondary-source consensus (Netify, press coverage) that adgrx.com is S 
-<   Tracker Radar  Q1 cnevids.com                      unknown     unresolved cnevids.com itself no longer resolves, but its own player.cnevids.com subdomai +-  webXray        Q1 company-target.com               unknown     unresolved Domain has live DNS (CloudFront IP range) but TLS handshake fails and no page  
-<   Tracker Radar  Q1 marphezis.com                    unknown     unresolved Tracker Radar's claim (Online Media Solutions Ltd. dba Brightcom) is plausible +-  webXray        Q1 1rx.io                           unknown     unresolved Nexxen's own privacy-policy pages (nexxen.com/services-privacy-policy/, nexxen 
-<   Tracker Radar  Q2 hqseek.com                       unknown     unresolved hqseek.com redirects to the adult site hqporn.pics; WebFetch of both was refus +-  webXray        Q1 agkn.com                         unknown     unresolved Secondary reporting (not fetched as primary) traces a chain Aggregate Knowledg 
-<   Tracker Radar  Q2 contentabc.com                   unknown     unresolved Disconnect's entity 'ContentABC' is a trivial capitalisation of the domain lab +-  webXray        Q2 yceml.net                        unknown     unresolved Domain itself had no TLS handshake at probe time. Conversant LLC (webXray/Trac 
-<   Tracker Radar  Q2 trustpilot.net                   unknown     unresolved Separately confirmed via https://corporate.trustpilot.com/legal/for-reviewers/ +-  webXray        Q2 blogblog.com                     unknown     unresolved Domain 404s and only serves a DV *.blogger.com wildcard cert (Google Trust Ser 
-<   Tracker Radar  Q3 cratecamera.com                  unknown     unresolved pgl.yoyo.org's blocklist tags cratecamera.com's category as 'admiral', consist +-  webXray        Q3 awltovhc.com                     unknown     unresolved Long-recognized Conversant/ValueClick-style cookie-sync domain. RDAP shows an  
-<   Tracker Radar  Q4 cjponyparts.com                  unknown     unresolved 'CJ Pony Parts, Inc.' is a real, independent Mustang-parts retailer (not a sel +-  webXray        Q3 mmstat.com                       unknown     unresolved Registrar is Alibaba Cloud Computing (Beijing) Co., Ltd. with ns3/4/5.aliyun.c 
-<   Tracker Radar  Q4 cedscdn.it                       unknown     unresolved Third-party WHOIS aggregators attribute registration to CED Digital & Servizi  +-  webXray        Q3 lduhtrp.net                      unknown     unresolved Same Conversant/ValueClick-style cookie-sync domain family as awltovhc.com, wi 
-<   Disconnect     Q1 govx.com                         unknown     unresolved GOVX is a real San Diego company per secondary sources (BBB listing, LinkedIn) +-  webXray        Q3 collective-media.net             unknown     unresolved 'Collective, Inc.' (the ad network) split its ad-network division into 'Compas 
-<   Disconnect     Q1 cdnbasket.net                    unknown     unresolved bounceexchange.com 302-redirects to wunderkind.co today, and Wunderkind's fetc +-  webXray        Q3 wishabi.com                      unknown     unresolved wishabi.com's TLS handshake serves Flipp's certificate (CN=flipp.com) and Flip 
-<   Disconnect     Q1 agkn.com                         unknown     unresolved Secondary reporting (not fetched as primary) traces a chain Aggregate Knowledg +-  Tracker Radar  Q1 app-us1.com                      unknown     unresolved app-us1.com serves no browsable page (CODE 000); ActiveCampaign's own fetched  
-<   Disconnect     Q1 opti-digital.com                 unknown     unresolved opti-digital.com fails to resolve at all (curl: could not resolve host); a liv +-  Tracker Radar  Q1 travelpayouts.com                unknown     unresolved Homepage confirms the operating brand 'Travelpayouts' but not the legal entity 
-<   Disconnect     Q2 at-o.net                         unknown     unresolved at-o.net has no DNS/TLS response; AT Internet's (now Piano's) own data-protect +-  Tracker Radar  Q1 acint.net                        unknown     unresolved Site self-describes as 'Acint (Artificial Computation Intelligence)' with only 
-<   Disconnect     Q2 mapixl.com                       unknown     unresolved Searches for a link between Disconnect's claimed 'MarketingArchitects' (a Minn +-  Tracker Radar  Q1 cdnbasket.net                    unknown     unresolved bounceexchange.com 302-redirects to wunderkind.co today, and Wunderkind's fetc 
-<   Disconnect     Q2 ksearchnet.com                   unknown     unresolved Klevu's own SDK README (klevultd GitHub org, now branded Athos Commerce per kl +-  Tracker Radar  Q1 spot.im                          unknown     unresolved OpenWeb's own privacy policy confirms 'Open Web Technologies Ltd.' is a real,  
-<   Disconnect     Q2 gssprt.jp                        unknown     unresolved webXray, Tracker Radar and Disconnect all agree on Geniee, and third-party WHO +-  Tracker Radar  Q1 cnevids.com                      unknown     unresolved cnevids.com itself no longer resolves, but its own player.cnevids.com subdomai 
-<   Disconnect     Q2 kameleoon.io                     unknown     unresolved Kameleoon SAS's own legal notice confirms it operates kameleoon.com/app.kamele +-  Tracker Radar  Q1 marphezis.com                    unknown     unresolved Tracker Radar's claim (Online Media Solutions Ltd. dba Brightcom) is plausible 
-<   Disconnect     Q3 stat-track.com                   unknown     unresolved Disconnect's 'StackTrack' is a near-verbatim mangling of the domain label 'sta +-  Tracker Radar  Q2 hqseek.com                       unknown     unresolved hqseek.com redirects to the adult site hqporn.pics; WebFetch of both was refus 
-<   Disconnect     Q3 sa-as.com                        unknown     unresolved Domain does not resolve over TLS and no primary source (newsroom/filing/legal- +-  Tracker Radar  Q2 contentabc.com                   unknown     unresolved Disconnect's entity 'ContentABC' is a trivial capitalisation of the domain lab 
-<   Disconnect     Q3 stripst.com                      unknown     unresolved stripst.com returned HTTP 522 on every fetch attempt (both root and a guessed  +-  Tracker Radar  Q2 trustpilot.net                   unknown     unresolved Separately confirmed via https://corporate.trustpilot.com/legal/for-reviewers/ 
-<   Disconnect     Q3 htplayground.com                 unknown     unresolved Disconnect's entry is literally the string 'htplayground.com', identical to th +-  Tracker Radar  Q3 cratecamera.com                  unknown     unresolved pgl.yoyo.org's blocklist tags cratecamera.com's category as 'admiral', consist 
-<   Disconnect     Q3 pages02.net                      unknown     unresolved Leads (non-primary) indicate pages0X.net domains are Silverpop/IBM Watson Mark +-  Tracker Radar  Q4 cjponyparts.com                  unknown     unresolved 'CJ Pony Parts, Inc.' is a real, independent Mustang-parts retailer (not a sel 
-<   Disconnect     Q4 globo.com                        unknown     unresolved Public secondary sources describe Globo Comunicação e Participações S.A. (form +-  Tracker Radar  Q4 cedscdn.it                       unknown     unresolved Third-party WHOIS aggregators attribute registration to CED Digital & Servizi  
-<   Disconnect     Q4 offshoregeology.com              unknown     unresolved Disconnect's 'Admiral' claim could not be verified against a primary source; a +-  Disconnect     Q1 govx.com                         unknown     unresolved GOVX is a real San Diego company per secondary sources (BBB listing, LinkedIn) 
-<   Disconnect     Q4 i.ua                             unknown     unresolved RDAP lists registrant 'Digital Ventures LLC' and registrar 'Internet Invest LL +-  Disconnect     Q1 cdnbasket.net                    unknown     unresolved bounceexchange.com 302-redirects to wunderkind.co today, and Wunderkind's fetc 
-<   Disconnect     Q4 km0trk.com                       unknown     unresolved Disconnect's entry name is simply the domain itself (km0trk.com), which is sel +-  Disconnect     Q1 agkn.com                         unknown     unresolved Secondary reporting (not fetched as primary) traces a chain Aggregate Knowledg 
---- +-  Disconnect     Q1 opti-digital.com                 unknown     unresolved opti-digital.com fails to resolve at all (curl: could not resolve host); a liv 
->   webXray        Q1 1rx.io                           unknown     unresolved register-by-number: no company/VAT number available anywhere for 'Blinkx'/'Rhy +-  Disconnect     Q2 at-o.net                         unknown     unresolved at-o.net has no DNS/TLS response; AT Internet's (now Piano's) own data-protect 
->   webXray        Q1 agkn.com                         unknown     unresolved Register-by-number: SEC EDGAR full-text search for the exact phrase "agkn.com" +-  Disconnect     Q2 mapixl.com                       unknown     unresolved Searches for a link between Disconnect's claimed 'MarketingArchitects' (a Minn 
->   webXray        Q3 mmstat.com                       unknown     unresolved Register-by-number: tried China's official ICP/beian registry at beian.miit.go +-  Disconnect     Q2 ksearchnet.com                   unknown     unresolved Klevu's own SDK README (klevultd GitHub org, now branded Athos Commerce per kl 
->   webXray        Q3 collective-media.net             unknown     unresolved Tried all three routes. Register-by-number: SEC EDGAR full-text search for '"+-  Disconnect     Q2 gssprt.jp                        unknown     unresolved webXray, Tracker Radar and Disconnect all agree on Geniee, and third-party WHO 
->   Tracker Radar  Q1 cdnbasket.net                    unknown     unresolved All three routes came back empty. Register-by-number: no identifying company/V +-  Disconnect     Q2 kameleoon.io                     unknown     unresolved Kameleoon SAS's own legal notice confirms it operates kameleoon.com/app.kamele 
->   Tracker Radar  Q1 marphezis.com                    unknown     unresolved register-by-number: no identifier available for 'Online Media Solutions Ltd. d +-  Disconnect     Q3 stat-track.com                   unknown     unresolved Disconnect's 'StackTrack' is a near-verbatim mangling of the domain label 'sta 
->   Tracker Radar  Q2 hqseek.com                       unknown     unresolved All three routes tried. register-by-number: no imprint or identifiable number  +-  Disconnect     Q3 sa-as.com                        unknown     unresolved Domain does not resolve over TLS and no primary source (newsroom/filing/legal- 
->   Tracker Radar  Q2 contentabc.com                   unknown     unresolved Register-by-number: no imprint, VAT, or company number for either candidate (' +-  Disconnect     Q3 stripst.com                      unknown     unresolved stripst.com returned HTTP 522 on every fetch attempt (both root and a guessed  
->   Disconnect     Q1 cdnbasket.net                    unknown     unresolved All three routes came back empty. Register-by-number: no identifying company/V +-  Disconnect     Q3 htplayground.com                 unknown     unresolved Disconnect's entry is literally the string 'htplayground.com', identical to th 
->   Disconnect     Q1 agkn.com                         unknown     unresolved Register-by-number: SEC EDGAR full-text search for the exact phrase "agkn.com" +-  Disconnect     Q3 pages02.net                      unknown     unresolved Leads (non-primary) indicate pages0X.net domains are Silverpop/IBM Watson Mark 
->   Disconnect     Q2 mapixl.com                       unknown     unresolved All three routes tried and none produced an identifier for the actual operator +-  Disconnect     Q4 globo.com                        unknown     unresolved Public secondary sources describe Globo Comunicação e Participações S.A. (form 
->   Disconnect     Q3 stat-track.com                   unknown     unresolved All three routes were tried. Register-by-number: Disconnect's 'StackTrack' is  +-  Disconnect     Q4 offshoregeology.com              unknown     unresolved Disconnect's 'Admiral' claim could not be verified against a primary source; a 
->   Disconnect     Q3 stripst.com                      unknown     unresolved Register-by-number: no imprint or company number is available anywhere for str +-  Disconnect     Q4 i.ua                             unknown     unresolved RDAP lists registrant 'Digital Ventures LLC' and registrar 'Internet Invest LL 
->   Disconnect     Q3 htplayground.com                 unknown     unresolved register-by-number: Disconnect's own entry is just the domain string, so there +-  Disconnect     Q4 km0trk.com                       unknown     unresolved Disconnect's entry name is simply the domain itself (km0trk.com), which is sel 
-150c120 ++  webXray        Q1 1rx.io                           unknown     unresolved register-by-number: no company/VAT number available anywhere for 'Blinkx'/'Rhy 
-| ''1rx.io'' | 0.05313 | //unresolved// | UNRESOLVED -- domain is dead (no TLS handshake, no HTTP response) and no primary source fetched this session ties 1rx.io itself to RhythmOne or Nexxen | unknown | unknown | unknown | //none// | ++  webXray        Q1 agkn.com                         unknown     unresolved Register-by-number: SEC EDGAR full-text search for the exact phrase "agkn.com" 
---- ++  webXray        Q3 mmstat.com                       unknown     unresolved Register-by-number: tried China's official ICP/beian registry at beian.miit.go 
-| ''1rx.io'' | 0.05313 | UNKNOWN | UNRESOLVED -- no primary source located | unknown | unknown | unknown | [[NONE -- no primary source reached|none]] | ++  webXray        Q3 collective-media.net             unknown     unresolved Tried all three routes. Register-by-number: SEC EDGAR full-text search for '"
-158c128 ++  Tracker Radar  Q1 cdnbasket.net                    unknown     unresolved All three routes came back empty. Register-by-number: no identifying company/V 
-| ''agkn.com'' | 0.03580 | //unresolved// | UNRESOLVED -- domain is dead today (NXDOMAIN/no TLS handshake) though RDAP shows it remains registered (not expired, locked, registrar GoDaddy Corporate Domains) with no disclosed registrant org; could not reach any current primary source naming an operator | unknown | unknown | unknown | //none// | ++  Tracker Radar  Q1 marphezis.com                    unknown     unresolved register-by-number: no identifier available for 'Online Media Solutions Ltd. d 
---- ++  Tracker Radar  Q2 hqseek.com                       unknown     unresolved All three routes tried. register-by-number: no imprint or identifiable number  
-| ''agkn.com'' | 0.03580 | UNRESOLVED | UNRESOLVED -- registry WHOIS registrant is privacy-proxied (Brandsight/GoDaddy Corporate Domains) with no organization disclosed, and TransUnion's own pages that would plausibly name AdAdvisor/agkn.com are bot-walled | unknown | unknown | unknown | //none// | ++  Tracker Radar  Q2 contentabc.com                   unknown     unresolved Register-by-number: no imprint, VAT, or company number for either candidate (' 
-172c142 ++  Disconnect     Q1 cdnbasket.net                    unknown     unresolved All three routes came back empty. Register-by-number: no identifying company/V 
-| ''spot.im'' | 0.01101 | //unresolved// | UNRESOLVED -- spot.im is dead (TLS handshake failure on both spot.im and www.spot.im, which also 502s); no primary source found tying the domain itself to a current operator | absent | unknown | unknown | [[https://www.openweb.com/legal-and-privacy/privacy/|legal-doc]] | ++  Disconnect     Q1 agkn.com                         unknown     unresolved Register-by-number: SEC EDGAR full-text search for the exact phrase "agkn.com" 
---- ++  Disconnect     Q2 mapixl.com                       unknown     unresolved All three routes tried and none produced an identifier for the actual operator 
-| ''spot.im'' | 0.01101 | Open Web Technologies Ltd. (OpenWeb) | renamed 2020 (Spot.IM -> OpenWeb) | absent | current | current | [[https://www.openweb.com/newsroom|parent-site]] | ++  Disconnect     Q3 stat-track.com                   unknown     unresolved All three routes were tried. Register-by-number: Disconnect's 'StackTrack' is  
-177c147 ++  Disconnect     Q3 stripst.com                      unknown     unresolved Register-by-number: no imprint or company number is available anywhere for str 
-| ''company-target.com'' | 0.00897 | //unresolved// | UNRESOLVED -- domain resolves to CloudFront-range IPs but TLS handshake fails (alert 552) and HTTP returns 403/no response; no content or primary source reachable | unknown | unknown | unknown | //none// | ++  Disconnect     Q3 htplayground.com                 unknown     unresolved register-by-number: Disconnect's own entry is just the domain string, so there 
---- +  
-| ''company-target.com'' | 0.00897 | Demandbase, Inc. | n/a -- registered 2012-08-06, no evidence of any transfer; Demandbase's own documentation still calls it their domain as of 2025 | current | current | current | [[https://web.archive.org/web/20250908011403id_/https://support.demandbase.com/hc/en-us/articles/360019872411-Data-Collection-Overview|parent-site]] | + --- F. The adjudication table --------------------------------------- 
-179,180c149,150 +  
-| ''adgrx.com'' | 0.00681 | //unresolved// | UNRESOLVED -- news coverage says AdGear Technologies (acquired by Samsung Electronics Canada, 2016) operates adgrx.com as part of Samsung Ads, but no fetch reached a primary source naming adgrx.com: samsungads.ca/en/privacy/ has an expired TLS certificate, help.samsungads.com/docs/samsung-ad-manager-privacy-notice failed TLS handshake, and samsung.com's general ads privacy page names no subsidiary or domain. adgrx.com itself has no TLS handshake and no RDAP. | unknown | unknown | unknown | //none// | +@@ -147,7 +117,7 @@ 
-| ''marphezis.com'' | 0.00666 | //unresolved// | UNRESOLVED -- domain does not resolve (no TLS handshake, no RDAP, HTTP code 000); Brightcom's own homepage and privacy policy (brightcom.com) make no mention of marphezis.com or any operated-domains list. | absent | unknown | absent | //none// | + | ''smartadserver.com'' | 0.07333 | Equativ SAS (RCS Paris 487 613 481) | renamed 2023 -- Smart Adserver / Smartadserver S.A.S. became Equativ after its merger with DAX | stale | stale | current | [[https://www.equativ.com/legal-mentions|legal-doc]] | 
---- + | ''lijit.com'' | 0.06419 | Sovrn Holdings, Inc. | n/a -- Sovrn Holdings, Inc. operates lijit.com today | current | current | current | [[https://lijit.com/|legal-doc]] | 
-| ''adgrx.com'' | 0.00681 | AdGear Technologies, Inc. ("AdGear", trading as Samsung Ads; wholly-owned subsidiary of Samsung Electronics Canada, Inc.) | n/a -- current since Samsung's 2018 acquisition of AdGear | current | current | granularity | [[https://samsungads.ca/en/cookie-policy/|legal-doc]] | + | ''bidr.io'' | 0.05861 | Beeswax Inc. (a FreeWheel / Comcast company) | closed ~2021-01 -- FreeWheel (Comcast) agreed 2020-12-17 to acquire Beeswax | current | current | granularity | [[https://www.beeswax.com/privacy/|legal-doc]] | 
-| ''marphezis.com'' | 0.00666 | UNKNOWN | UNRESOLVED -- no primary source located | absent | unknown | absent | [[NONE -- no primary source reached|none]] | +-| ''1rx.io'' | 0.05313 | //unresolved// | UNRESOLVED -- domain is dead (no TLS handshake, no HTTP response) and no primary source fetched this session ties 1rx.io itself to RhythmOne or Nexxen | unknown | unknown | unknown | //none// | 
-190,191c160,161 ++| ''1rx.io'' | 0.05313 | UNKNOWN | UNRESOLVED -- no primary source located | unknown | unknown | unknown | [[NONE -- no primary source reached|none]] | 
-| ''app-us1.com'' | 0.00351 | //unresolved// | UNRESOLVED -- could not fetch a primary source naming the operator of this specific domain | absent | unknown | unknown | //none// | + | ''simpli.fi'' | 0.05248 | Simplifi Holdings, LLC (GTCR-backed, privately held) | n/a -- privately held, longstanding GTCR portfolio company | current | granularity | current | [[https://simpli.fi/website-privacy-policy|legal-doc]] | 
-| ''govx.com'' | 0.00330 | //unresolved// | UNRESOLVED -- every fetch of govx.com returned only the homepage title, no legal-entity document reached | absent | unknown | unknown | //none// | + | ''gumgum.com'' | 0.05151 | GumGum, Inc. | n/a -- independent | current | current | current | [[https://gumgum.com/terms-and-policies/privacy-policy|legal-doc]] | 
---- + | ''quantserve.com'' | 0.04428 | Quantcast Corporation (Quantcast) | n/a -- independent | current | current | current | [[https://legal.quantcast.com/|legal-doc]] | 
-| ''app-us1.com'' | 0.00351 | ActiveCampaign, LLC (ActiveCampaign) | n/a -- independent, registered 2013, no ownership change found | absent | current | current | [[whois://whois.markmonitor.com/app-us1.com|domain-register]] | +@@ -155,7 +125,7 @@ 
-| ''govx.com'' | 0.00330 | GovX, Inc. | n/a -- independent, no ownership change found | absent | current | current | [[https://www.sec.gov/Archives/edgar/data/1623323/000162332316000003/xslFormDX01/primary_doc.xml|filing]] | + | ''klaviyo.com'' | 0.04172 | Klaviyo, Inc. | n/a -- independent | absent | current | current | [[https://www.klaviyo.com/de/|legal-doc]] | 
-193c163 + | ''loopme.me'' | 0.04039 | LoopMe Ltd (LoopMe) | n/a -- independent | current | error | current | [[https://legal.loopme.com/privacy-center|legal-doc]] | 
-| ''cdnbasket.net'' | 0.00305 | //unresolved// | UNRESOLVED -- domain is dead (no TLS handshake, CODE 000); only a third-party WHOIS aggregator ties it historically to Bounce Exchange, not a primary source | absent | unknown | unknown | //none// | + | ''fontawesome.com'' | 0.03873 | Fonticons, Inc. | n/a -- independent | current | current | absent | [[https://fontawesome.com/tos|legal-doc]] | 
---- +-| ''agkn.com'' | 0.03580 | //unresolved// | UNRESOLVED -- domain is dead today (NXDOMAIN/no TLS handshake) though RDAP shows it remains registered (not expired, locked, registrar GoDaddy Corporate Domains) with no disclosed registrant org; could not reach any current primary source naming an operator | unknown | unknown | unknown | //none// | 
-| ''cdnbasket.net'' | 0.00305 | UNRESOLVED | UNRESOLVED -- no primary source ties cdnbasket.net to any named entity | absent | unknown | unknown | [[https://www.wunderkind.co/privacy-policy|legal-doc]] | ++| ''agkn.com'' | 0.03580 | UNRESOLVED | UNRESOLVED -- registry WHOIS registrant is privacy-proxied (Brandsight/GoDaddy Corporate Domains) with no organization disclosed, and TransUnion's own pages that would plausibly name AdAdvisor/agkn.com are bot-walled | unknown | unknown | unknown | //none// | 
-197c167 + | ''wp.com'' | 0.02694 | Automattic, Inc. (WordPress.com) | n/a -- independent, operated by Automattic since founding (2005) | current | current | current | [[https://automattic.com/|parent-site]] | 
-| ''opti-digital.com'' | 0.00211 | //unresolved// | UNRESOLVED -- domain does not resolve (DNS failure, no TLS handshake) as of 2026-09-05 | absent | unknown | unknown | [[https://optidigital.com/legal-notice/|legal-doc]] | + | ''eyeota.net'' | 0.02519 | Eyeota, a Dun & Bradstreet company | acquired by Dun & Bradstreet, announced 2021-11-04 (Eyeota retains its own brand as a D&B subsidiary) | current | current | granularity | [[https://www.eyeota.com/blog/eyeota-is-now-a-dun-bradstreet-company|newsroom]] | 
---- + | ''newrelic.com'' | 0.02217 | New Relic, Inc. | n/a -- independent, unchanged | current | current | current | [[https://newrelic.com/termsandconditions/terms|legal-doc]] | 
-| ''opti-digital.com'' | 0.00211 | Opti Digital SAS (2 Rue des Cortalets, 66400 Céret, France) | n/a -- independent, live company | absent | current | current | [[https://optidigital.com/legal-notice/|legal-doc]] | +@@ -169,15 +139,15 @@ 
-206c176 + | ''ctnsnet.com'' | 0.01392 | Crimtan Holdings Limited | n/a -- independent, unchanged | current | current | current | [[https://find-and-update.company-information.service.gov.uk/company/07810698|register]] | 
-| ''ksearchnet.com'' | 0.00129 | //unresolved// | UNRESOLVED -- no qualifying primary source found | absent | absent | unknown | [[https://github.com/klevultd/frontend-sdk/blob/master/packages/klevu-core/README.md|other (non-qualifying: SDK docs on GitHub, not a newsroom/filing/legal-doc/register/parent-site)]] | + | ''sharethis.com'' | 0.01349 | Predactiv, Inc. (ShareThis) | n/a -- ShareThis currently operates as a division of Predactiv, Inc.; the date this structure began was not sourced | granularity | granularity | current | [[https://sharethis.com/privacy/|legal-doc]] | 
---- + | ''mountain.com'' | 0.01288 | MNTN, Inc. | renamed 2022-06-14 (MNTN Digital, Inc. -> MNTN, Inc.), per SEC EDGAR | absent | stale | current | [[https://data.sec.gov/submissions/CIK0001891027.json|filing]] | 
-| ''ksearchnet.com'' | 0.00129 | Klevu Oy (operating subsidiary of Athos Commerce) | n/a -- Klevu (and Klevu Oy, its Finnish operating entity) merged with Searchspring in 2024/2025 to form Athos Commerce; ksearchnet.com is still run under the Klevu Oy legal name today | absent | absent | granularity | [[tls://eucs23v2.ksearchnet.com:443|register]] | +-| ''spot.im'' | 0.01101 | //unresolved// | UNRESOLVED -- spot.im is dead (TLS handshake failure on both spot.im and www.spot.im, which also 502s); no primary source found tying the domain itself to a current operator | absent | unknown | unknown | [[https://www.openweb.com/legal-and-privacy/privacy/|legal-doc]] | 
-208c178 ++| ''spot.im'' | 0.01101 | Open Web Technologies Ltd. (OpenWeb) | renamed 2020 (Spot.IM -> OpenWeb) | absent | current | current | [[https://www.openweb.com/newsroom|parent-site]] | 
-| ''kameleoon.io'' | 0.00108 | //unresolved// | UNRESOLVED -- domain is dead (no TLS handshake, no HTTP response) and no fetched source names kameleoon.io specifically | absent | absent | unknown | [[https://www.kameleoon.com/legal-notice|legal-doc]] | + | ''cloudfront.net'' | 0.01081 | Amazon Web Services, Inc. (Amazon) | n/a -- Amazon since inception | current | granularity | current | [[https://aws.amazon.com/privacy/|legal-doc]] | 
---- + | ''hotjar.io'' | 0.01015 | Contentsquare | UNRESOLVED -- exact Hotjar acquisition date not sourced this session; current state confirmed via redirect + copyright | stale | stale | current | [[https://contentsquare.com/hotjar/?utm_campaign=exp__hj_hp_redirection|parent-site]] | 
-| ''kameleoon.io'' | 0.00108 | Kameleoon SAS (Kameleoon) | n/a -- independent, no ownership change found | absent | absent | current | [[https://www.kameleoon.com/legal-notice|legal-doc]] | + | ''stripe.com'' | 0.00967 | Stripe, LLC | UNRESOLVED -- exact date of the Stripe, Inc. -> Stripe, LLC change not sourced; current name confirmed via site footer + EV TLS cert | absent | stale | current | [[https://stripe.com/de-ch/legal/consumer|legal-doc]] | 
-212c182 + | ''azure.com'' | 0.00960 | Microsoft Corporation | n/a -- Microsoft since inception | absent | current | current | [[tls://azure.microsoft.com:443|register]] | 
-| ''gssprt.jp'' | 0.00101 | //unresolved// | UNRESOLVED -- domain unreachable in probe (no TLS handshake, no RDAP) and no fetched Geniee source names gssprt.jp | unknown | unknown | unknown | [[https://en.geniee.co.jp/privacy/|legal-doc]] | +-| ''company-target.com'' | 0.00897 | //unresolved// | UNRESOLVED -- domain resolves to CloudFront-range IPs but TLS handshake fails (alert 552) and HTTP returns 403/no response; no content or primary source reachable | unknown | unknown | unknown | //none// | 
---- ++| ''company-target.com'' | 0.00897 | Demandbase, Inc. | n/a -- registered 2012-08-06, no evidence of any transfer; Demandbase's own documentation still calls it their domain as of 2025 | current | current | current | [[https://web.archive.org/web/20250908011403id_/https://support.demandbase.com/hc/en-us/articles/360019872411-Data-Collection-Overview|parent-site]] | 
-| ''gssprt.jp'' | 0.00101 | Geniee, Inc. | n/a -- independent since domain creation (2013) | current | current | current | [[whois://whois.jprs.jp/gssprt.jp|domain-register]] | + | ''paypal.com'' | 0.00751 | PayPalInc. | n/a -- independentno ownership change found | absent | current | current | [[https://www.paypal.com/us/legalhub/paypal/privacy-full|legal-doc]] | 
-218c188 +-| ''adgrx.com'' | 0.00681 | //unresolved// | UNRESOLVED -- news coverage says AdGear Technologies (acquired by Samsung Electronics Canada, 2016) operates adgrx.com as part of Samsung Ads, but no fetch reached a primary source naming adgrx.com: samsungads.ca/en/privacy/ has an expired TLS certificate, help.samsungads.com/docs/samsung-ad-manager-privacy-notice failed TLS handshake, and samsung.com's general ads privacy page names no subsidiary or domain. adgrx.com itself has no TLS handshake and no RDAP. | unknown | unknown | unknown | //none// | 
-| ''acint.net'' | 0.00065 | //unresolved// | UNRESOLVED -- no primary source (company filing, legal doc with a real legal name, or parent site) identifies an operator; the only registrant lead is an individual's WHOIS record, which is not an admissible primary source | absent | unknown | unknown | [[https://acint.net/|legal-doc]] | +-| ''marphezis.com'' | 0.00666 | //unresolved// | UNRESOLVED -- domain does not resolve (no TLS handshake, no RDAP, HTTP code 000); Brightcom's own homepage and privacy policy (brightcom.com) make no mention of marphezis.com or any operated-domains list. | absent | unknown | absent | //none// | 
---- ++| ''adgrx.com'' | 0.00681 | AdGear Technologies, Inc. ("AdGear", trading as Samsung Ads; wholly-owned subsidiary of Samsung Electronics Canada, Inc.) | n/a -- current since Samsung's 2018 acquisition of AdGear | current | current | granularity | [[https://samsungads.ca/en/cookie-policy/|legal-doc]] | 
-| ''acint.net'' | 0.00065 | Poshibalov Evgeny Vasilyevich, operating the self-titled project 'Acint (Artificial Computation Intelligence)' | n/a -- same registrant since domain creation 2014-02-06 per registrar WHOIS | absent | current | current | [[whois://whois.publicdomainregistry.com/acint.net|domain-register]] | ++| ''marphezis.com'' | 0.00666 | UNKNOWN | UNRESOLVED -- no primary source located | absent | unknown | absent | [[NONE -- no primary source reached|none]] | 
-220c190 + | ''iqzone.com'' | 0.00663 | IQzone Inc. | n/a -- independentlive and self-operated; no ownership change found | absent | current | current | [[https://iqzone.com/|legal-doc]] | 
-| ''yceml.net'' | 0.00062 | //unresolved// | UNRESOLVED -- structural evidence (conversantmedia.com now 301-redirects to www.epsilon.com, and its /legal/privacy path redirects to legal.epsilon.com) points to Conversant now sitting under Epsilon/Publicis Groupe, but no fetched page carried on-page text naming that relationship, so it does not clear the quote bar | unknown | unknown | unknown | [[https://www.conversantmedia.com/|parent-site]] | + | ''histats.com'' | 0.00650 | Wisecode S.r.l. Unipersonale (Histats) | n/a -- Wisecode operates Histats.com directly; no ownership change found | current | current | current | [[https://www.histats.com/|legal-doc]] | 
---- + | ''adition.com'' | 0.00612 | Virtual Minds GmbH (Adition) | ADITION technologies AG merged into the Virtual Minds group (~2013); Virtual Minds AG converted its legal form to Virtual Minds GmbH (name/legal-form change~2021); Adition is now marketed as a Virtual Minds GmbH product | stale | stale | current | [[https://virtualminds.com/adition/|parent-site]] | 
-| ''yceml.net'' | 0.00062 | Conversant, Inc. (operating brand Epsilon; ultimate parent Publicis Groupe) | granularity: Conversant folded into Epsilon after Publicis Groupe's 2019 acquisition of Epsilon; 'Here, There & Everywhere' (webXray's parent field, an Alliance Data-era name) is superseded/stale | stale | current | granularity | [[whois://whois.markmonitor.com/yceml.net|domain-register]] | +@@ -187,14 +157,14 @@ 
-222c192 + | ''forter.com'' | 0.00419 | Forter Ltd. (Israel; affiliates include Forter, Inc. — US, Forter Solutions UK Ltd., Forter Pte Ltd.) | n/a -- independent | absent | current | current | [[https://www.forter.com/privacy-policy/|legal-doc]] | 
-| ''travelpayouts.com'' | 0.00049 | //unresolved// | UNRESOLVED -- privacy-policy/terms pages 403'd or 404'd on every URL tried this session; only the homepage was fetchable | absent | unknown | absent | [[https://www.travelpayouts.com/|legal-doc]] | + | ''zoominfo.com'' | 0.00405 | ZoomInfo Technologies LLC (ZoomInfo) | n/a -- current operating entity per live privacy policy; 'Zoom Information, Inc.' was a company ZoomInfo acquired in Feb 2019, since folded into the ZoomInfo corporate structure | absent | stale | current | [[https://www.zoominfo.com/privacy-policy|legal-doc]] | 
---- + | ''braze.com'' | 0.00353 | Braze, Inc. | n/a -- independent, publicly traded (NASDAQ: BRZE) | current | current | current | [[https://www.braze.com/privacy|legal-doc]] | 
-| ''travelpayouts.com'' | 0.00049 | Go Travel Un Limited (Hong Kong; trading as Travelpayouts) | n/a -- current per the domain's own Terms of Service, archived 2026-02-17 (~7 months old); Hong Kong entity registered 18.08.2011, Registration number 1658681 | absent | current | absent | [[https://web.archive.org/web/20260217212541id_/https://support.travelpayouts.com/hc/en-us/articles/360004162111-Terms-of-the-Travelpayouts-Travel-Affiliate-Network?tp_place=footer_wp_wa|archived-legal-doc]] | +-| ''app-us1.com'' | 0.00351 | //unresolved// | UNRESOLVED -- could not fetch a primary source naming the operator of this specific domain | absent | unknown | unknown | //none// | 
-225c195 +-| ''govx.com'' | 0.00330 | //unresolved// | UNRESOLVED -- every fetch of govx.com returned only the homepage title, no legal-entity document reached | absent | unknown | unknown | //none// | 
-| ''blogblog.com'' | 0.00041 | //unresolved// | UNRESOLVED -- no primary source names this specific domain | unknown | unknown | absent | //none// | ++| ''app-us1.com'' | 0.00351 | ActiveCampaign, LLC (ActiveCampaign) | n/a -- independent, registered 2013, no ownership change found | absent | current | current | [[whois://whois.markmonitor.com/app-us1.com|domain-register]] | 
---- ++| ''govx.com'' | 0.00330 | GovX, Inc. | n/a -- independent, no ownership change found | absent | current | current | [[https://www.sec.gov/Archives/edgar/data/1623323/000162332316000003/xslFormDX01/primary_doc.xml|filing]] | 
-| ''blogblog.com'' | 0.00041 | Google LLC (Blogger) | n/a -- registered 2000-09-15, currently Google-operated (Blogger), no change evidenced | current | current | absent | [[whois://whois.markmonitor.com/blogblog.com|domain-register]] | + | ''visualstudio.com'' | 0.00325 | Microsoft Corporation | n/a -- Microsoft has always operated this domain (Visual Studio product site) | absent | current | current | [[tls://visualstudio.com:443|register]] | 
-230,231c200,201 +-| ''cdnbasket.net'' | 0.00305 | //unresolved// | UNRESOLVED -- domain is dead (no TLS handshake, CODE 000); only a third-party WHOIS aggregator ties it historically to Bounce Exchange, not a primary source | absent | unknown | unknown | //none// | 
-| ''at-o.net'' | 0.00027 | //unresolved// | UNRESOLVED -- domain does not resolve; no operator identifiable from a primary source | absent | absent | unknown | //none// | ++| ''cdnbasket.net'' | 0.00305 | UNRESOLVED | UNRESOLVED -- no primary source ties cdnbasket.net to any named entity | absent | unknown | unknown | [[https://www.wunderkind.co/privacy-policy|legal-doc]] | 
-| ''cnevids.com'' | 0.00026 | //unresolved// | UNRESOLVED -- no primary source names the owner | absent | unknown | absent | //none// | + | ''elfsight.com'' | 0.00303 | Elfsight, SL | n/a -- current operator per live Terms of Service and About page | absent | error | current | [[https://elfsight.com/terms-of-service/|legal-doc]] | 
---- + | ''ispot.tv'' | 0.00293 | iSpot.tv, Inc. | n/a -- independent | absent | current | current | [[https://www.ispot.tv/privacy|legal-doc]] | 
-| ''at-o.net'' | 0.00027 | Applied Technologies Internet SAS (AT Internet), controlled by Piano Software, Inc. | acquired by Piano -- exact date not confirmed by a primary source fetched this session | absent | absent | current | [[https://recherche-entreprises.api.gouv.fr/search?q=Applied%20Technologies%20Internet|register]] | + | ''reson8.com'' | 0.00239 | Resonate Networks, Inc. (Resonate) | n/a -- current, per live privacy policy naming reson8.com URLs as its own opt-out/tracking infrastructure | current | current | current | [[https://www.resonate.com/privacy-policy/|legal-doc]] | 
-| ''cnevids.com'' | 0.00026 | Condé Nast Entertainment (Advance Publications) | n/a -- Sabin, Bermant & Gould LLP was never the operator, only the registrant's outside-counsel contact | absent | error | absent | [[https://player.cnevids.com/|legal-doc]] | +-| ''opti-digital.com'' | 0.00211 | //unresolved// | UNRESOLVED -- domain does not resolve (DNS failure, no TLS handshake) as of 2026-09-05 | absent | unknown | unknown | [[https://optidigital.com/legal-notice/|legal-doc]] | 
-233c203 ++| ''opti-digital.com'' | 0.00211 | Opti Digital SAS (2 Rue des Cortalets, 66400 Céret, France) | n/a -- independent, live company | absent | current | current | [[https://optidigital.com/legal-notice/|legal-doc]] | 
-| ''mapixl.com'' | 0.00022 | //unresolved// | UNRESOLVED -- site returns Cloudflare 403, no TLS org identity, no RDAP/registrant data, and no primary source ties any company to this domain | absent | absent | unknown | //none// | + | ''nofraud.com'' | 0.00205 | Wyllo LLC (rebranded from NoFraud) | rebranded NoFraud -> Wyllo; exact rebrand date UNRESOLVED (current privacy policy dated 2026-03-19) | absent | stale | stale | [[https://wyllo.ai/privacy/|legal-doc]] | 
---- + | ''zopim.com'' | 0.00200 | Zendesk, Inc. | acquired by Zendesk 2014-04-10 | current | current | current | [[https://www.zendesk.com/company/press/zendesk-acquires-live-chat-leader-zopim/|newsroom]] | 
-| ''mapixl.com'' | 0.00022 | UNRESOLVED -- Cloudflare-walled site, no legal page ever archived, registrant is a privacy proxy | UNRESOLVED -- no dated evidence either way | absent | absent | unknown | [[whois://whois.godaddy.com/mapixl.com|domain-register]] | + | ''mparticle.com'' | 0.00192 | mParticle, Inc. (a Rokt company, post-merger) | merged into Rokt, announced 2025-01-16 (~US$300M deal) | absent | current | granularity | [[https://www.mparticle.com/news/rokt-and-mparticle-merge/|newsroom]] | 
-237c207 +@@ -203,70 +173,70 @@ 
-| ''htplayground.com'' | 0.00016 | //unresolved// | UNRESOLVED -- domain unreachable (no TLS handshake, no HTTP response), WHOIS/RDAP registrant is a privacy-protection proxy, and the only archived content is a 2015 Wayback snapshot with no operator identification | absent | absent | unknown | //none// | + | ''squarecdn.com'' | 0.00153 | Block, Inc. | Square, Inc. renamed to Block, Inc. 2021-12-10 | absent | current | absent | [[https://squareup.com/us/en/legal/general/privacy|legal-doc]] | 
---- + | ''sendtonews.com'' | 0.00144 | Minute Media (via its STN Video subsidiary/brand, formerly SendtoNews) | acquired by Minute Media, announced 2024-01 (~US$150M, per STN Video's own archived press release) | absent | absent | current | [[https://web.archive.org/web/20240718175821/https://www.stnvideo.com/press/minute-media-acquires-stn-video/|newsroom]] | 
-| ''htplayground.com'' | 0.00016 | UNKNOWN | UNRESOLVED -- no primary source located | absent | absent | unknown | [[NONE -- no primary source reached|none]] | + | ''amung.us'' | 0.00143 | whos.amung.us Inc. | n/a -- independent | current | current | current | [[https://whos.amung.us/legal/terms/|legal-doc]] | 
-242c212 +-| ''ksearchnet.com'' | 0.00129 | //unresolved// | UNRESOLVED -- no qualifying primary source found | absent | absent | unknown | [[https://github.com/klevultd/frontend-sdk/blob/master/packages/klevu-core/README.md|other (non-qualifying: SDK docs on GitHub, not a newsroom/filing/legal-doc/register/parent-site)]] | 
-| ''contentabc.com'' | 0.00012 | //unresolved// | UNRESOLVED -- domain does not resolve (NXDOMAIN on direct fetch, probe CODE:000, no TLS handshake); WebSearch leads (urlscan, whois, Aylo's own brands page) point to Aylo but Aylo's brands page (https://www.aylo.com/brands/) does NOT name contentabc.com, and no privacy policy/legal page naming the domain could be fetched | absent | unknown | unknown | //none// | ++| ''ksearchnet.com'' | 0.00129 | Klevu Oy (operating subsidiary of Athos Commerce) | n/a -- Klevu (and Klevu Oy, its Finnish operating entity) merged with Searchspring in 2024/2025 to form Athos Commerce; ksearchnet.com is still run under the Klevu Oy legal name today | absent | absent | granularity | [[tls://eucs23v2.ksearchnet.com:443|register]] | 
---- + | ''everestjs.net'' | 0.00121 | Adobe Inc. | n/a -- long-standing Adobe Advertising infrastructure domain | current | current | current | [[https://experienceleague.adobe.com/en/docs/id-service/using/reference/csp|parent-site]] | 
-| ''contentabc.com'' | 0.00012 | UNRESOLVED | UNRESOLVED -- no live page, fully privacy-proxied registrant, zero Wayback captures, no primary source ties either TR's 'Aylo' or Disconnect's 'ContentABC' to the domain | absent | unknown | unknown | //none// | +-| ''kameleoon.io'' | 0.00108 | //unresolved// | UNRESOLVED -- domain is dead (no TLS handshake, no HTTP response) and no fetched source names kameleoon.io specifically | absent | absent | unknown | [[https://www.kameleoon.com/legal-notice|legal-doc]] | 
-244c214 ++| ''kameleoon.io'' | 0.00108 | Kameleoon SAS (Kameleoon) | n/a -- independent, no ownership change found | absent | absent | current | [[https://www.kameleoon.com/legal-notice|legal-doc]] | 
-| ''pages02.net'' | 0.00012 | //unresolved// | UNRESOLVED -- could not fetch a primary source tying pages02.net specifically to a current operator | absent | unknown | unknown | //none// | + | ''aralego.com'' | 0.00105 | ucfunnel | n/a -- ucfunnel operates aralego.com as its publisher/buyer dashboard domain | absent | current | current | [[https://dashboard.aralego.com/|legal-doc]] | 
---- + | ''govdelivery.com'' | 0.00105 | Granicus, LLC | merged 2016-10-25 (GovDelivery merged with Granicus, majority-backed by Vista Equity Partners) | granularity | current | absent | [[https://granicus.com/blog/granicus-govdelivery-announce-merger/|newsroom]] | 
-| ''pages02.net'' | 0.00012 | Acoustic, L.P. | sold 2019 (IBM divested Watson Marketing/Commerce to Centerbridge Partners, relaunched as Acoustic) | absent | stale | current | [[whois://whois.markmonitor.com/pages02.net|domain-register]] | + | ''cookiefirst.com'' | 0.00104 | Digital Data Solutions B.V. | n/a -- long-standing operator | absent | current | absent | [[https://cookiefirst.com/privacy-policy/|legal-doc]] | 
-247,248c217,218 +-| ''gssprt.jp'' | 0.00101 | //unresolved// | UNRESOLVED -- domain unreachable in probe (no TLS handshake, no RDAP) and no fetched Geniee source names gssprt.jp | unknown | unknown | unknown | [[https://en.geniee.co.jp/privacy/|legal-doc]] | 
-| ''stat-track.com'' | 0.00011 | //unresolved// | UNRESOLVED -- domain does not resolve (probe CODE:000, no TLS); no primary source found | absent | absent | unknown | //none// | ++| ''gssprt.jp'' | 0.00101 | Geniee, Inc. | n/a -- independent since domain creation (2013) | current | current | current | [[whois://whois.jprs.jp/gssprt.jp|domain-register]] | 
-| ''trustpilot.net'' | 0.00010 | //unresolved// | UNRESOLVED -- domain does not serve content under its own hostname; TLS cert covers only *.trustpilot.com (mismatch on direct fetch) and carries no validated-organisation (O=) field, so it does not meet the register-grade bar | absent | unknown | absent | //none// | + | ''researchnow.com'' | 0.00097 | Dynata, LLC | renamed 2019-01-15 (Research Now SSI rebranded as Dynata); ownership itself changed again 2024-07-02 when lienholders took 100% equity in a court-approved restructuring | current | stale | current | [[https://www.dynata.com/why-dynata/about-dynata/press/research-now-and-ssi-merger-successfully-completed/|newsroom]] | 
---- + | ''vidazoo.com'' | 0.00078 | Perion Network Ltd. | acquired 2021-10-04 | absent | stale | current | [[https://www.sec.gov/Archives/edgar/data/1338940/000117891321003077/exhibit_99-1.htm|filing]] | 
-| ''stat-track.com'' | 0.00011 | UNRESOLVED | UNRESOLVED -- domain shows no activity since a 2002-2011 self-hosted install that predates the current 2016 registration | absent | absent | unknown | [[https://rdap.verisign.com/com/v1/domain/stat-track.com|domain-register]] | + | ''tmdb.org'' | 0.00075 | TiVo Platform Technologies LLC (a subsidiary of Xperi Inc.) | changed -- Fanhattan LLC acquired TMDB circa 2016; exact date of the subsequent transition to TiVo Platform Technologies LLC / Xperi Inc. not verified this session | absent | stale | absent | [[https://www.themoviedb.org/terms-of-use|legal-doc]] | 
-| ''trustpilot.net'' | 0.00010 | Trustpilot A/S (Pilestraede 58, 5th floor, DK-1112 Copenhagen K, Denmark) | n/a -- defensive/redirect domain of the same live company, not a separate acquisition | absent | current | absent | [[https://corporate.trustpilot.com/legal/for-reviewers/privacy-policy-end-user|legal-doc]] | + | ''tns-counter.ru'' | 0.00071 | AO ADFACT / JSC ADFACT (Cyrillic АО «ЭДФАКТ»), a subsidiary of AO Mediascope | n/a -- ADFACT has run under the Mediascope brand since Mediascope's 2017 rebrand from TNS Russia | current | current | granularity | [[https://www.mediascope.net/about/|parent-site]] | 
-254,256c224,226 + | ''owneriq.net'' | 0.00067 | Inmar, Inc. | acquired 2019-10-22 | stale | current | current | [[https://www.globenewswire.com/news-release/2019/10/22/1933083/0/en/Inmar-Acquires-ownerIQ-Adding-A-Critical-Data-and-Media-Solution-to-Inmar-s-Newly-Launched-Innovator-Ecosystem.html|newsroom]] | 
-| ''awltovhc.com'' | 0.00007 | //unresolved// | UNRESOLVED -- domain dead (no TLS handshake, HTTP 000) and no primary source names this exact domain | unknown | unknown | unknown | [[n/a -- no primary source located|n/a]] | +-| ''acint.net'' | 0.00065 | //unresolved// | UNRESOLVED -- no primary source (company filing, legal doc with a real legal name, or parent site) identifies an operator; the only registrant lead is an individual's WHOIS record, which is not an admissible primary source | absent | unknown | unknown | [[https://acint.net/|legal-doc]] | 
-| ''collective-media.net'' | 0.00007 | //unresolved// | UNRESOLVED -- no confirmed current owner found | unknown | unknown | unknown | [[n/a -- no primary source located|n/a]] | ++| ''acint.net'' | 0.00065 | Poshibalov Evgeny Vasilyevich, operating the self-titled project 'Acint (Artificial Computation Intelligence)' | n/a -- same registrant since domain creation 2014-02-06 per registrar WHOIS | absent | current | current | [[whois://whois.publicdomainregistry.com/acint.net|domain-register]] | 
-| ''mmstat.com'' | 0.00007 | //unresolved// | UNRESOLVED -- no primary source located | unknown | unknown | unknown | [[n/a -- no primary source located|n/a]] | + | ''force.com'' | 0.00064 | Salesforce, Inc. | n/a -- current; salesforce.com, inc. formally renamed to Salesforce, Inc. effective 2022-04-04 | absent | stale | current | [[https://investor.salesforce.com/news/news-details/2022/Salesforce-Changes-Legal-Name-to-Salesforce-Inc/default.aspx|newsroom]] | 
---- +-| ''yceml.net'' | 0.00062 | //unresolved// | UNRESOLVED -- structural evidence (conversantmedia.com now 301-redirects to www.epsilon.com, and its /legal/privacy path redirects to legal.epsilon.com) points to Conversant now sitting under Epsilon/Publicis Groupe, but no fetched page carried on-page text naming that relationship, so it does not clear the quote bar | unknown | unknown | unknown | [[https://www.conversantmedia.com/|parent-site]] | 
-| ''awltovhc.com'' | 0.00007 | Epsilon (d/b/a 'Epsilon PeopleCloud Digital Media Solutions', formerly Conversant); ultimate parent Publicis Groupe SA | Conversant retired as the public-facing brand by 2021 per Epsilon's own press release; Epsilon itself was acquired by Publicis Groupe in 2019 | stale | stale | granularity | [[https://www.epsilon.com/us/about-us/pressroom/epsilon-peoplecloud-digital-media-solutions-receives-accreditation-from-the-media-rating-council-for-correlated-outcomes|newsroom]] | ++| ''yceml.net'' | 0.00062 | Conversant, Inc. (operating brand Epsilon; ultimate parent Publicis Groupe) | granularity: Conversant folded into Epsilon after Publicis Groupe's 2019 acquisition of Epsilon; 'Here, There & Everywhere' (webXray's parent field, an Alliance Data-era name) is superseded/stale | stale | current | granularity | [[whois://whois.markmonitor.com/yceml.net|domain-register]] | 
-| ''collective-media.net'' | 0.00007 | UNKNOWN | UNRESOLVED -- dead domain, redacted WHOIS, no usable archived legal page | unknown | unknown | unknown | [[n/a|n/a]] | + | ''conviva.com'' | 0.00049 | Conviva | n/a -- independent, current | current | current | current | [[https://www.conviva.ai/|legal-doc]] | 
-| ''mmstat.com'' | 0.00007 | UNRESOLVED | UNRESOLVED -- registrar is Alibaba Cloud Computing (Beijing) but no Registrant Organization is disclosed in WHOIS, the official Chinese ICP registry is behind a JS challenge, and Alibaba's own live privacy pages do not mention this domain | unknown | unknown | unknown | //none// | +-| ''travelpayouts.com'' | 0.00049 | //unresolved// | UNRESOLVED -- privacy-policy/terms pages 403'd or 404'd on every URL tried this session; only the homepage was fetchable | absent | unknown | absent | [[https://www.travelpayouts.com/|legal-doc]] | 
-258c228 ++| ''travelpayouts.com'' | 0.00049 | Go Travel Un Limited (Hong Kong; trading as Travelpayouts) | n/a -- current per the domain's own Terms of Service, archived 2026-02-17 (~7 months old); Hong Kong entity registered 18.08.2011, Registration number 1658681 | absent | current | absent | [[https://web.archive.org/web/20260217212541id_/https://support.travelpayouts.com/hc/en-us/articles/360004162111-Terms-of-the-Travelpayouts-Travel-Affiliate-Network?tp_place=footer_wp_wa|archived-legal-doc]] | 
-| ''lduhtrp.net'' | 0.00006 | //unresolved// | UNRESOLVED -- domain dead (no TLS handshake, HTTP 000) and no primary source names this exact domain | unknown | unknown | unknown | [[n/a -- no primary source located|n/a]] | + | ''newsmemory.com'' | 0.00044 | Tecnavia | n/a -- independent, current | absent | current | absent | [[https://www.tecnavia.com/about-us|newsroom]] | 
---- + | ''solarwinds.com'' | 0.00043 | SolarWinds Worldwide, LLC (operating entity); ultimate parent Turn/River Capital | 2025-04-16 -- Turn/River Capital completed take-private acquisition | stale | current | current | [[https://www.solarwinds.com/company/newsroom/press-releases/turnriver-completes-acquisition-of-solarwinds|newsroom]] | 
-| ''lduhtrp.net'' | 0.00006 | Conversant, Inc. (Epsilon / Publicis Groupe) | n/a -- registrant unchanged; Conversant's parent Epsilon was acquired by Publicis Groupe, closed 2019-07-02 | current | current | granularity | [[whois://whois.markmonitor.com/lduhtrp.net|domain-register]] | +-| ''blogblog.com'' | 0.00041 | //unresolved// | UNRESOLVED -- no primary source names this specific domain | unknown | unknown | absent | //none// | 
-260c230 ++| ''blogblog.com'' | 0.00041 | Google LLC (Blogger) | n/a -- registered 2000-09-15, currently Google-operated (Blogger), no change evidenced | current | current | absent | [[whois://whois.markmonitor.com/blogblog.com|domain-register]] | 
-| ''hqseek.com'' | 0.00005 | //unresolved// | UNRESOLVED -- could not fetch a primary source | absent | unknown | absent | //none// | + | ''blogspot.com'' | 0.00034 | Google LLC (Blogger; EEA/Switzerland: Google Ireland Limited) | n/a -- long-standing Google/Blogger property | current | current | current | [[https://policies.google.com/privacy|legal-doc]] | 
---- + | ''snapengage.com'' | 0.00034 | SnapEngageLLC (subsidiary of TeamSupport LLC) | 2021-05-20 -- TeamSupport acquired SnapEngage (per public reporting); ownership confirmed current via SnapEngage's own privacy policy | absent | stale | current | [[https://snapengage.com/privacy-policy|legal-doc]] | 
-| ''hqseek.com'' | 0.00005 | UNRESOLVED -- privacy-proxied registrant, and the one named operator found predates the current registration state by two decades | UNRESOLVED -- no continuity evidence across the gap | absent | unknown | absent | [[https://web.archive.org/web/20040404075437id_/http://www.hqseek.com/|archived-legal-doc]] | + | ''yieldlove-ad-serving.net'' | 0.00034 | Yieldlove GmbH (majority-owned by Ströer SE & Co. KGaA) | 2017-10-04 -- Ströer acquired a majority shareholding in Yieldlove GmbH | absent | current | current | [[https://www.stroeer.de/en/newsroom/press/expansion-of-technological-platform-marketing-stroeer-acquires-programmatic-platform-and-header-bidding-specialists-yieldlove/|newsroom]] | 
-262,263c232,233 + | ''ibb.co'' | 0.00029 | ImgBB | n/a -- independentbrand-operated service | absent | current | absent | [[https://imgbb.com/tos|legal-doc]] | 
-| ''stripst.com'' | 0.00005 | //unresolved// | UNRESOLVED -- site unreachable in this session | absent | absent | unknown | //none// | +-| ''at-o.net'' | 0.00027 | //unresolved// | UNRESOLVED -- domain does not resolve; no operator identifiable from a primary source | absent | absent | unknown | //none// | 
-| ''wishabi.com'' | 0.00005 | //unresolved// | UNRESOLVED -- no fetchable primary source naming wishabi.com | unknown | unknown | unknown | //none// | +-| ''cnevids.com'' | 0.00026 | //unresolved// | UNRESOLVED -- no primary source names the owner | absent | unknown | absent | //none// | 
---- ++| ''at-o.net'' | 0.00027 | Applied Technologies Internet SAS (AT Internet), controlled by Piano Software, Inc. | acquired by Piano -- exact date not confirmed by a primary source fetched this session | absent | absent | current | [[https://recherche-entreprises.api.gouv.fr/search?q=Applied%20Technologies%20Internet|register]] | 
-| ''stripst.com'' | 0.00005 | UNRESOLVED | UNRESOLVED -- fully privacy-proxied registrant, DV-only TLS cert, zero Wayback captures, and Stripchat's own live legal pages are bot-blocked | absent | absent | unknown | //none// | ++| ''cnevids.com'' | 0.00026 | Condé Nast Entertainment (Advance Publications) | n/a -- Sabin, Bermant & Gould LLP was never the operator, only the registrant's outside-counsel contact | absent | error | absent | [[https://player.cnevids.com/|legal-doc]] | 
-| ''wishabi.com'' | 0.00005 | Flipp Corp. | n/a -- current | current | current | current | [[https://flipp.com/en-us/privacy-policy|legal-doc]] | + | ''pushnami.com'' | 0.00024 | Pushnami, LLC | n/a -- independent, no ownership change found | absent | current | current | [[https://pushnami.com/privacy-policy/|legal-doc]] | 
-269c239 +-| ''mapixl.com'' | 0.00022 | //unresolved// | UNRESOLVED -- site returns Cloudflare 403, no TLS org identity, no RDAP/registrant data, and no primary source ties any company to this domain | absent | absent | unknown | //none// | 
-| ''sa-as.com'' | 0.00003 | //unresolved// | UNRESOLVED -- no primary source located; site has no TLS handshake and no title/copyright to check | absent | absent | unknown | //none// | ++| ''mapixl.com'' | 0.00022 | UNRESOLVED -- Cloudflare-walled site, no legal page ever archived, registrant is a privacy proxy | UNRESOLVED -- no dated evidence either way | absent | absent | unknown | [[whois://whois.godaddy.com/mapixl.com|domain-register]] | 
---- + | ''responsiveads.com'' | 0.00018 | ResponsiveAds, Inc. | n/a -- independent, no ownership change known | absent | current | absent | [[https://responsiveads.com/|legal-doc]] | 
-| ''sa-as.com'' | 0.00003 | FoundryCo, Inc. | n/a -- independent per current WHOIS, no ownership-change evidence found | absent | absent | current | [[whois://whois.markmonitor.com/sa-as.com|domain-register]] | + | ''crsspxl.com'' | 0.00016 | Cross Pixel Media, Inc. | n/a -- independent, no ownership change known | current | current | current | [[https://crosspixel.net/privacy-policy/|legal-doc]] | 
-288c258 + | ''cudasvc.com'' | 0.00016 | Barracuda Networks, Inc. | n/a -- independent, no ownership change known | absent | current | current | [[https://campus.barracuda.com/product/campus/doc/89096320/required-outbound-connections-for-barracuda-networks-appliances/|parent-site]] | 
-| ''cratecamera.com'' | 0.00001 | //unresolved// | UNRESOLVED -- domain 404s and carries only a DV Let's Encrypt cert (no validated organisation); no reachable newsroom/legal-doc/register source | absent | unknown | unknown | [[n/a|n/a]] | +-| ''htplayground.com'' | 0.00016 | //unresolved// | UNRESOLVED -- domain unreachable (no TLS handshake, no HTTP response), WHOIS/RDAP registrant is a privacy-protection proxy, and the only archived content is a 2015 Wayback snapshot with no operator identification | absent | absent | unknown | //none// | 
---- ++| ''htplayground.com'' | 0.00016 | UNKNOWN | UNRESOLVED -- no primary source located | absent | absent | unknown | [[NONE -- no primary source reached|none]] | 
-| ''cratecamera.com'' | 0.00001 | Leven Labs, Inc. (DBA Admiral) | n/a -- registrant unchanged since domain creation 2020-08-31 per registrar WHOIS | absent | current | current | [[whois://whois.namecheap.com/cratecamera.com|domain-register]] | + | ''userzoom.com'' | 0.00016 | UserTesting, Inc. (brand: UserTesting; formerly independent UserZoom, Inc.) | merged 2023-04-03 (Thoma Bravo portfolio companies UserTesting and UserZoom merged and now operate under the UserTesting name) | absent | stale | absent | [[https://www.thomabravo.com/press-releases/usertesting-and-userzoom-merge-to-help-organizations-build-human-centered-experiences-for-all|newsroom]] | 
-291c261 + | ''cnzz.com'' | 0.00014 | Alibaba (China) Technology Co., Ltd. (Alibaba Group; operates as part of the Umeng+ / CNZZ analytics brand) | n/a -- CNZZ merged with Umeng and Diyuanxin into Umeng+ in 2016 under Alibaba; ownership unchanged since | current | granularity | granularity | [[tls://cnzz.com:443|register]] | 
-| ''globo.com'' | 0.00001 | //unresolved// | UNRESOLVED -- WebFetch could not reach any globo.com/politicas.globo.com/privacidade.globo.com page to quote a legal-entity statement | absent | unknown | unknown | [[n/a|n/a]] | + | ''yahooapis.com'' | 0.00014 | Yahoo Inc. (majority owned by Apollo Funds/Apollo Global Management; Verizon retains a 10% stake) | changed 2021-09-01 (Apollo Funds completed acquisition of Yahoo, formerly Verizon Media) | stale | current | current | [[https://www.apollo.com/insights-news/pressreleases/2021/09/apollo-funds-complete-acquisition-of-yahoo-161530593|newsroom]] | 
---- + | ''cnn.com'' | 0.00012 | Warner Bros. Discovery, Inc. | changed 2022-04-08 (WarnerMedia-Discovery merger formed Warner Bros. Discovery, Inc.) | absent | current | current | [[tls://cnn.com:443|register]] | 
-| ''globo.com'' | 0.00001 | Globo Comunicação e Participações S.A. (CNPJ 27.865.757/0001-02) | n/a -- current, live operating entity | absent | current | granularity | [[https://privacidade.globo.com/privacy-policy/|legal-doc]] | +-| ''contentabc.com'' | 0.00012 | //unresolved// | UNRESOLVED -- domain does not resolve (NXDOMAIN on direct fetch, probe CODE:000, no TLS handshake); WebSearch leads (urlscan, whois, Aylo's own brands page) point to Aylo but Aylo's brands page (https://www.aylo.com/brands/) does NOT name contentabc.com, and no privacy policy/legal page naming the domain could be fetched | absent | unknown | unknown | //none// | 
-293c263 ++| ''contentabc.com'' | 0.00012 | UNRESOLVED | UNRESOLVED -- no live page, fully privacy-proxied registrant, zero Wayback captures, no primary source ties either TR's 'Aylo' or Disconnect's 'ContentABC' to the domain | absent | unknown | unknown | //none// | 
-| ''km0trk.com'' | 0.00001 | //unresolved// | UNRESOLVED -- domain gives no TLS handshake and no reachable content; operator could not be identified from any primary source | absent | absent | unknown | [[n/a|n/a]] | + | ''glomex.com'' | 0.00012 | glomex GmbH | n/a -- current, confirmed via own Impressum fetched 2026-09-05 | absent | absent | current | [[https://www.glomex.com/de/impressum|legal-doc]] | 
---- +-| ''pages02.net'' | 0.00012 | //unresolved// | UNRESOLVED -- could not fetch a primary source tying pages02.net specifically to a current operator | absent | unknown | unknown | //none// | 
-| ''km0trk.com'' | 0.00001 | Good On You Pty Ltd (Good On You) | n/a -- independent, ABN 75 608 419 085 active | absent | absent | error | [[https://goodonyou.eco/privacy-policy/|parent-site]] | ++| ''pages02.net'' | 0.00012 | Acoustic, L.P. | sold 2019 (IBM divested Watson Marketing/Commerce to Centerbridge Partners, relaunched as Acoustic) | absent | stale | current | [[whois://whois.markmonitor.com/pages02.net|domain-register]] | 
-296c266 + | ''tqlkg.com'' | 0.00012 | ConversantLLC (Epsilon Data ManagementLLC; ultimate parent Publicis Groupe S.A.) | 2019-07 -- Publicis Groupe completed acquisition of Epsilon (including its Conversant business) from Alliance Data Systems | stale | current | granularity | [[https://www.publicisgroupe.com/en/news/press-releases/publicis-groupe-to-acquire-epsilon|newsroom]] | 
-| ''offshoregeology.com'' | 0.00001 | //unresolved// | UNRESOLVED -- domain is dead (404), no primary source ties it to any current operator | absent | absent | unknown | [[NONE -- no primary source reached|n/a]] | + | ''appspot.com'' | 0.00011 | Google LLC (Alphabet Inc.) | n/a -- Google since appspot.com's 2008 launch as Google App Engine | current | current | absent | [[https://policies.google.com/terms|legal-doc]] | 
---- +-| ''stat-track.com'' | 0.00011 | //unresolved// | UNRESOLVED -- domain does not resolve (probe CODE:000, no TLS); no primary source found | absent | absent | unknown | //none// | 
-| ''offshoregeology.com'' | 0.00001 | Admiral (Leven Labs, Inc.) | n/a -- domain-register shows no ownership change since creation (2015-12-01, last WHOIS update 2025-11-02, no transfer flag) | absent | absent | current | [[https://levenlabs.com/|parent-site]] | +-| ''trustpilot.net'' | 0.00010 | //unresolved// | UNRESOLVED -- domain does not serve content under its own hostname; TLS cert covers only *.trustpilot.com (mismatch on direct fetch) and carries no validated-organisation (O=) field, so it does not meet the register-grade bar | absent | unknown | absent | //none// | 
-303,304c273,274 ++| ''stat-track.com'' | 0.00011 | UNRESOLVED | UNRESOLVED -- domain shows no activity since a 2002-2011 self-hosted install that predates the current 2016 registration | absent | absent | unknown | [[https://rdap.verisign.com/com/v1/domain/stat-track.com|domain-register]] | 
-| ''cedscdn.it'' | 0.00001 | //unresolved// | UNRESOLVED -- domain does not resolve (no TLS handshake); no primary source ties it to any current operator | absent | unknown | absent | [[NONE -- no primary source reached|n/a]] | ++| ''trustpilot.net'' | 0.00010 | Trustpilot A/S (Pilestraede 58, 5th floor, DK-1112 Copenhagen K, Denmark) | n/a -- defensive/redirect domain of the same live company, not a separate acquisition | absent | current | absent | [[https://corporate.trustpilot.com/legal/for-reviewers/privacy-policy-end-user|legal-doc]] | 
-| ''cjponyparts.com'' | 0.00001 | //unresolved// | UNRESOLVED -- site returns HTTP 403 (Cloudflare challenge) on every page fetched this session | absent | unknown | absent | [[NONE -- no primary source reached|n/a]] | + | ''atgsvcs.com'' | 0.00008 | Oracle Corporation (successor to Art Technology GroupInc.) | 2011-01-05 -- Oracle completed its acquisition; Art Technology GroupInc. became a wholly owned subsidiary of Oracle | absent | current | current | [[https://www.sec.gov/Archives/edgar/data/1086195/000095012311000543/b83864e8vk.htm|filing]] | 
---- + | ''juicer.cc'' | 0.00008 | Logly, Inc. | n/a -- current; product rebranded from 'Juicer' to 'LOGLY Audience Analytics' but still Logly-operated | absent | current | absent | [[https://juicer.cc/|legal-doc]] | 
-| ''cedscdn.it'' | 0.00001 | CED Digital & Servizi S.r.l. (Caltagirone Editore group) | n/a -- registrant unchanged since domain creation 2014-09-12 per .it registry WHOIS | absent | error | absent | [[whois://whois.nic.it/cedscdn.it|register]] | + | ''richrelevance.com'' | 0.00008 | RichRelevance, Inc. (brand of Algonomy, which is now part of ADA) | changed 2021-01-19 (RichRelevance merged with Manthan Software to form Algonomy); Algonomy itself now shown as part of ADA per algonomy.com (exact date unconfirmed) | current | current | granularity | [[tls://richrelevance.com:443|register]] | 
-| ''cjponyparts.com'' | 0.00001 | CJ Pony Parts, Inc. | n/a -- independent, continuously CJ Pony Parts, Inc. since at least 2015 | absent | current | absent | [[https://web.archive.org/web/20150405015158id_/http://www.cjponyparts.com/terms-of-use/a/110/?SID=|archived-legal-doc]] | + | ''medallia.com.au'' | 0.00008 | Medallia, Inc. | n/a -- independent | absent | absent | current | [[https://medallia.com.au/|legal-doc]] | 
-309c279 + | ''medchatapp.com'' | 0.00008 | Medchat, LLC | n/a -- independent | current | absent | absent | [[https://medchatapp.com/site/|legal-doc]] | 
-| ''i.ua'' | 0.00001 | //unresolved// | UNRESOLVED -- no primary legal document reachable; site is a JS-rendered shell with no static footer/legal text, and /legal returned 404 | absent | absent | unknown | //none// | +-| ''awltovhc.com'' | 0.00007 | //unresolved// | UNRESOLVED -- domain dead (no TLS handshake, HTTP 000) and no primary source names this exact domain | unknown | unknown | unknown | [[n/a -- no primary source located|n/a]] | 
---- +-| ''collective-media.net'' | 0.00007 | //unresolved// | UNRESOLVED -- no confirmed current owner found | unknown | unknown | unknown | [[n/a -- no primary source located|n/a]] | 
-| ''i.ua'' | 0.00001 | ТОВ «КЕПРЕЙТ ПАРТНЕРС» (LLC Keprait Partners), Ukrainian register code 33500955 | n/a -- registrant since 2019-07-21 per the registry record, no evidence of a later change | absent | absent | current | [[https://help.i.ua/agreement/|legal-doc]] | +-| ''mmstat.com'' | 0.00007 | //unresolved// | UNRESOLVED -- no primary source located | unknown | unknown | unknown | [[n/a -- no primary source located|n/a]] | 
-323,325c293,295 ++| ''awltovhc.com'' | 0.00007 | Epsilon (d/b/a 'Epsilon PeopleCloud Digital Media Solutions', formerly Conversant); ultimate parent Publicis Groupe SA | Conversant retired as the public-facing brand by 2021 per Epsilon's own press release; Epsilon itself was acquired by Publicis Groupe in 2019 | stale | stale | granularity | [[https://www.epsilon.com/us/about-us/pressroom/epsilon-peoplecloud-digital-media-solutions-receives-accreditation-from-the-media-rating-council-for-correlated-outcomes|newsroom]] | 
-| current | 69.9% | 55.5%–83.1% | 93.9% | 80.9%–98.8% | ++| ''collective-media.net'' | 0.00007 | UNKNOWN | UNRESOLVED -- dead domain, redacted WHOIS, no usable archived legal page | unknown | unknown | unknown | [[n/a|n/a]] | 
-| granularity | 10.2% | 2.1%–20.9% | 0.2% | 0.0%–0.8% | ++| ''mmstat.com'' | 0.00007 | UNRESOLVED | UNRESOLVED -- registrar is Alibaba Cloud Computing (Beijing) but no Registrant Organization is disclosed in WHOIS, the official Chinese ICP registry is behind a JS challenge, and Alibaba's own live privacy pages do not mention this domain | unknown | unknown | unknown | //none// | 
-| stale | 19.8% | 9.2%–32.3% | 5.9% | 1.0%–19.1% | + | ''compass-fit.jp'' | 0.00006 | MicroAd, Inc. | n/a -- no ownership change found; product appears discontinued (domain unreachable, product page now 404) but no other owner was ever named | absent | current | current | [[https://www.microad.co.jp/news/detail/1185/|newsroom]] | 
---- +-| ''lduhtrp.net'' | 0.00006 | //unresolved// | UNRESOLVED -- domain dead (no TLS handshake, HTTP 000) and no primary source names this exact domain | unknown | unknown | unknown | [[n/a -- no primary source located|n/a]] | 
-| current | 69.2% | 56.1%–81.4% | 93.8% | 80.9%–98.6% | ++| ''lduhtrp.net'' | 0.00006 | Conversant, Inc. (Epsilon / Publicis Groupe) | n/a -- registrant unchanged; Conversant's parent Epsilon was acquired by Publicis Groupe, closed 2019-07-02 | current | current | granularity | [[whois://whois.markmonitor.com/lduhtrp.net|domain-register]] | 
-| granularity | 8.8% | 2.1%–17.5% | 0.2% | 0.0%–0.7% | + | ''cedexis.com'' | 0.00005 | Cloud Software Group, Inc. | changed 2018-02-12 (Citrix Systems acquired Cedexis); changed again 2022 (Citrix combined with TIBCO into Cloud Software Group) | stale | stale | current | [[tls://cedexis.com:443|register]] | 
-| stale | 22.0% | 11.4%–33.8% | 5.9% | 1.1%–18.7% | +-| ''hqseek.com'' | 0.00005 | //unresolved// | UNRESOLVED -- could not fetch a primary source | absent | unknown | absent | //none// | 
-327,328c297,298 ++| ''hqseek.com'' | 0.00005 | UNRESOLVED -- privacy-proxied registrant, and the one named operator found predates the current registration state by two decades | UNRESOLVED -- no continuity evidence across the gap | absent | unknown | absent | [[https://web.archive.org/web/20040404075437id_/http://www.hqseek.com/|archived-legal-doc]] | 
-| current+gran. | 80.2% | 67.7%–90.8% | 94.1% | 81.4%–99.0% | + | ''sparkasse.de'' | 0.00005 | S-Communication Services GmbH (S-Com) | renamed 2022-09effective 2023-01-01 -- formerly Sparkassen-Finanzportal GmbH | absent | stale | absent | [[https://www.sparkasse.de/impressum.html|legal-doc]] | 
-| stale+error | 19.8% | 9.0%–32.6% | 5.9% | 1.1%–19.4% | +-| ''stripst.com'' | 0.00005 | //unresolved// | UNRESOLVED -- site unreachable in this session | absent | absent | unknown | //none// | 
---- +-| ''wishabi.com'' | 0.00005 | //unresolved// | UNRESOLVED -- no fetchable primary source naming wishabi.com | unknown | unknown | unknown | //none// | 
-| current+gran. | 78.0% | 65.8%–88.8% | 94.1% | 81.4%–98.8% | ++| ''stripst.com'' | 0.00005 | UNRESOLVED | UNRESOLVED -- fully privacy-proxied registrant, DV-only TLS cert, zero Wayback captures, and Stripchat's own live legal pages are bot-blocked | absent | absent | unknown | //none// | 
-| stale+error | 22.0% | 11.0%–33.8% | 5.9% | 1.1%–18.9% | ++| ''wishabi.com'' | 0.00005 | Flipp Corp. | n/a -- current | current | current | current | [[https://flipp.com/en-us/privacy-policy|legal-doc]] | 
-332,337c302,307 + | ''twiago.com'' | 0.00004 | twiago GmbH | n/a -- independent, no ownership change found | absent | current | absent | [[https://www.twiago.com/impressum|legal-doc]] | 
-| current | 73.7% | 60.8%–85.8% | 68.6% | 29.3%–97.0% | + | ''wrbm.com'' | 0.00004 | William Reed Ltd | renamed 2022-02-09 -- formerly William Reed Business Media Ltd | absent | stale | absent | [[https://find-and-update.company-information.service.gov.uk/company/02883992|register]] | 
-| granularity | 2.8% | 0.0%–8.3% | 0.1% | 0.0%–0.4% | + | ''hitslink.com'' | 0.00003 | Net Applications, Inc. | n/a -- no ownership change found | absent | absent | current | [[https://hitslink.com/|legal-doc]] | 
-| stale | 22.1% | 10.5%–35.1% | 26.8% | 0.4%–64.6% | + | ''klarna.app'' | 0.00003 | Klarna Bank AB (publ) | n/a -- no ownership change found | absent | current | absent | [[https://www.klarna.com/international/|legal-doc]] | 
-| error | 1.5% | 0.0%–4.4% | 4.5% | 0.0%–19.3% | + | ''onecount.net'' | 0.00003 | GCN Publishing, Inc. (d/b/a GCN Media Services; product: ONEcount) | n/a -- domain defunct (TLS cert expired 2022, no longer resolving); product now served from one-count.com by the same operator | granularity | current | current | [[https://www.one-count.com/privacy-policy/|parent-site]] | 
-| current+gran. | 76.5% | 63.5%–88.0% | 68.7% | 29.2%–97.7% | +-| ''sa-as.com'' | 0.00003 | //unresolved// | UNRESOLVED -- no primary source located; site has no TLS handshake and no title/copyright to check | absent | absent | unknown | //none// | 
-| stale+error | 23.5% | 11.7%–36.1% | 31.3% | 2.9%–71.2% | ++| ''sa-as.com'' | 0.00003 | FoundryCo, Inc. | n/a -- independent per current WHOIS, no ownership-change evidence found | absent | absent | current | [[whois://whois.markmonitor.com/sa-as.com|domain-register]] | 
---- + | ''chango.com'' | 0.00003 | Chango & Co. LLC | UNRESOLVED exact date -- domain has been resold/repurposed to an unrelated interior design business; the ad-tech company 'Chango' (acquired by Rubicon Project, later renamed Magnite) no longer operates here | stale | stale | absent | [[https://www.chango.com/|legal-doc]] | 
-| current | 73.9% | 61.6%–85.3% | 74.3% | 41.1%–97.8% | + | ''google.nl'' | 0.00003 | Google LLC (subsidiary of Alphabet Inc.) | n/a -- longstanding | granularity | current | current | [[https://policies.google.com/privacy|legal-doc]] | 
-| granularity | 2.5% | 0.0%–7.5% | 0.1% | 0.0%–0.3% | + | ''americanexpress.com'' | 0.00002 | American Express Company | n/a -- longstanding | absent | current | current | [[tls://americanexpress.com:443|register]] | 
-| stale | 19.2% | 9.1%–30.5% | 21.6% | 0.3%–53.1% | +@@ -285,28 +255,28 @@ 
-| error | 4.4% | 0.0%–9.8% | 4.0% | 0.0%–15.7% | + | ''bestbuy.com'' | 0.00001 | Best Buy Co., Inc. | n/a -- independent | absent | current | absent | [[tls://bestbuy.com:443|register]] | 
-| current+gran. | 76.4% | 64.6%–87.5% | 74.4% | 41.6%–97.8% | + | ''bilibili.com'' | 0.00001 | 上海幻电信息科技有限公司 (Shanghai Huandian Information Technology Co., Ltd.), operating subsidiary of Bilibili Inc. (NASDAQ: BILI) | n/a -- longstanding | absent | granularity | granularity | [[tls://bilibili.com:443|register]] | 
-| stale+error | 23.6% | 12.5%–35.6% | 25.6% | 2.2%–58.5% | + | ''britishairways.com'' | 0.00001 | British Airways Plc | n/a -- independent operating subsidiary (part of International Airlines Group since 2011 merger; no change to the domain's operating entity) | absent | current | absent | [[tls://britishairways.com:443|register]] | 
-341,346c311,316 +-| ''cratecamera.com'' | 0.00001 | //unresolved// | UNRESOLVED -- domain 404s and carries only a DV Let's Encrypt cert (no validated organisation); no reachable newsroom/legal-doc/register source | absent | unknown | unknown | [[n/a|n/a]] | 
-| current | 94.4% | 86.9%–100.0% | 83.1% | 53.7%–100.0% | ++| ''cratecamera.com'' | 0.00001 | Leven Labs, Inc. (DBA Admiral) | n/a -- registrant unchanged since domain creation 2020-08-31 per registrar WHOIS | absent | current | current | [[whois://whois.namecheap.com/cratecamera.com|domain-register]] | 
-| granularity | 4.4% | 0.0%–11.2% | 16.5% | 0.0%–45.8% | + | ''cxt.ms'' | 0.00001 | Taboola, Inc. (operating Connexity) | acquired 2021-09-01 -- Taboola completed its acquisition of Connexity | stale | stale | absent | [[https://www.taboola.com/press-releases/taboola-closes-connexity-acquisition/|newsroom]] | 
-| stale | 1.2% | 0.0%–3.8% | 0.4% | 0.0%–1.5% | + | ''domdex.com'' | 0.00001 | Deloitte Digital (Deloitte Consulting LLP) | acquired 2018-09-10 -- Deloitte acquired Magnetic Media Online, Inc.'s AI/ad-tech platform business | current | stale | current | [[https://www.prnewswire.com/news-releases/deloitte-acquires-magnetics-artificial-intelligence-platform-business-300709565.html|newsroom]] | 
-| error | 0.0% | 0.0%–0.0% | 0.0% | 0.0%–0.0% | +-| ''globo.com'' | 0.00001 | //unresolved// | UNRESOLVED -- WebFetch could not reach any globo.com/politicas.globo.com/privacidade.globo.com page to quote a legal-entity statement | absent | unknown | unknown | [[n/a|n/a]] | 
-| current+gran. | 98.8% | 96.2%–100.0% | 99.6% | 98.5%–100.0% | ++| ''globo.com'' | 0.00001 | Globo Comunicação e Participações S.A. (CNPJ 27.865.757/0001-02) | n/a -- current, live operating entity | absent | current | granularity | [[https://privacidade.globo.com/privacy-policy/|legal-doc]] | 
-| stale+error | 1.2% | 0.0%–3.8% | 0.4% | 0.0%–1.5% | + | ''hitc.com'' | 0.00001 | GRV Media Ltd | n/a -- independent, GRV Media Ltd has operated HITC since rebranding from Here Is The City in 2015 | absent | current | absent | [[https://grv.media/privacy/|legal-doc]] | 
---- +-| ''km0trk.com'' | 0.00001 | //unresolved// | UNRESOLVED -- domain gives no TLS handshake and no reachable content; operator could not be identified from any primary source | absent | absent | unknown | [[n/a|n/a]] | 
-| current | 89.2% | 80.5%–96.8% | 82.8% | 53.8%–100.0% | ++| ''km0trk.com'' | 0.00001 | Good On You Pty Ltd (Good On You) | n/a -- independent, ABN 75 608 419 085 active | absent | absent | error | [[https://goodonyou.eco/privacy-policy/|parent-site]] | 
-| granularity | 7.6% | 1.1%–15.2% | 16.8% | 0.0%–45.6% | + | ''mediaset.es'' | 0.00001 | Grupo Audiovisual Mediaset España Comunicación, S.A.U. (subsidiary of MFE-MediaForEurope) | renamed/reorganized 2023-03-15 -- Mediaset España Comunicación, S.A. segregated its entire business to Grupo Audiovisual Mediaset España Comunicación, S.A.U. (BORME-C-2023-1010) | absent | stale | absent | [[tls://mediaset.es:443|register]] | 
-| stale | 1.1% | 0.0%–3.4% | 0.4% | 0.0%–1.5% | + | ''ml.com'' | 0.00001 | Bank of America Corporation (Merrill Lynch) | n/a -- Merrill Lynch has been a Bank of America subsidiary since the 2009 acquisition; no recent change | absent | current | absent | [[tls://ml.com:443|register]] | 
-| error | 2.1% | 0.0%–6.2% | 0.0% | 0.0%–0.0% | +-| ''offshoregeology.com'' | 0.00001 | //unresolved// | UNRESOLVED -- domain is dead (404), no primary source ties it to any current operator | absent | absent | unknown | [[NONE -- no primary source reached|n/a]] | 
-| current+gran. | 96.8% | 91.5%–100.0% | 99.6% | 98.5%–100.0% | ++| ''offshoregeology.com'' | 0.00001 | Admiral (Leven Labs, Inc.) | n/a -- domain-register shows no ownership change since creation (2015-12-01, last WHOIS update 2025-11-02, no transfer flag) | absent | absent | current | [[https://levenlabs.com/|parent-site]] | 
-| stale+error | 3.2% | 0.0%–8.5% | 0.4% | 0.0%–1.5% |+ | ''qbox.me'' | 0.00001 | Shanghai Qiniu Information Technology Co.Ltd. (Qiniu Cloud) | n/a -- independentno ownership change found | current | current | absent | [[https://www-static.qbox.me/en/company|legal-doc]] | 
 + | ''report-uri.io'' | 0.00001 | Report-URI Ltd. | n/a -- independent, no ownership change found | absent | current | absent | [[https://find-and-update.company-information.service.gov.uk/company/10943557|register]] | 
 + | ''vg.hu'' | 0.00001 | Mediaworks Hungary Zrt. | n/a -- independent, no ownership change found | absent | absent | current | [[https://www.vg.hu/impresszum|legal-doc]] | 
 + | ''webmd.com'' | 0.00001 | WebMD LLC (an Internet Brands company; Internet Brands is a KKR portfolio company) | closed 2017-09 -- Internet Brands (KKR) completed its tender offer acquisition of WebMD Health Corp | current | current | absent | [[https://www.webmd.com/|legal-doc]] | 
 + | ''99static.com'' | 0.00001 | 99designs Pty Ltd (99designs by Vista; a Cimpress plc subsidiary) | n/a -- currently a Cimpress plc subsidiary; historical acquisition date not verified against a primary source this session | absent | current | absent | [[https://www.sec.gov/Archives/edgar/data/0001262976/000126297626000027/ex211subsidiariesofcimpres.htm|filing]] | 
 + | ''adrta.com'' | 0.00001 | Pixalate, Inc. | n/a -- independent, no ownership change found | current | current | current | [[tls://adrta.com:443|register]] | 
 +-| ''cedscdn.it'' | 0.00001 | //unresolved// | UNRESOLVED -- domain does not resolve (no TLS handshake); no primary source ties it to any current operator | absent | unknown | absent | [[NONE -- no primary source reached|n/a]] | 
 +-| ''cjponyparts.com'' | 0.00001 | //unresolved// | UNRESOLVED -- site returns HTTP 403 (Cloudflare challenge) on every page fetched this session | absent | unknown | absent | [[NONE -- no primary source reached|n/a]] | 
 ++| ''cedscdn.it'' | 0.00001 | CED Digital & Servizi S.r.l. (Caltagirone Editore group) | n/a -- registrant unchanged since domain creation 2014-09-12 per .it registry WHOIS | absent | error | absent | [[whois://whois.nic.it/cedscdn.it|register]] | 
 ++| ''cjponyparts.com'' | 0.00001 | CJ Pony Parts, Inc. | n/a -- independent, continuously CJ Pony Parts, Inc. since at least 2015 | absent | current | absent | [[https://web.archive.org/web/20150405015158id_/http://www.cjponyparts.com/terms-of-use/a/110/?SID=|archived-legal-doc]] | 
 + | ''coverartarchive.org'' | 0.00001 | MetaBrainz Foundation, Inc. | n/a -- unchanged since inception; run jointly with Internet Archive | absent | current | absent | [[https://metabrainz.org/projects|parent-site]] | 
 + | ''dnb.com'' | 0.00001 | Dun & Bradstreet, Inc. | n/a -- operating/trading name unchanged; ultimate parent went private via an investor consortium in Feb 2022 | current | current | absent | [[https://web.archive.org/web/20241002130956/https://www.dnb.com/utility-pages/privacy-policy.html|legal-doc]] | 
 + | ''experian.com'' | 0.00001 | Experian Information Solutions, Inc. (brand: Experian; ultimate parent: Experian plc, LSE-listed) | n/a -- long-standing corporate structure | current | granularity | current | [[tls://experian.com:443|register]] | 
 + | ''farfetch-contents.com'' | 0.00001 | Farfetch UK Limited (part of the Coupang, Inc. group since its Jan 2024 acquisition of Farfetch Holdings) | Farfetch Holdings acquired by Coupang, Inc. 2024-01-30; Farfetch UK Limited (no. 06400760, formerly Farfetch.com Limited) remains an active UK subsidiary | absent | current | absent | [[https://find-and-update.company-information.service.gov.uk/company/06400760|register]] | 
 +-| ''i.ua'' | 0.00001 | //unresolved// | UNRESOLVED -- no primary legal document reachable; site is a JS-rendered shell with no static footer/legal text, and /legal returned 404 | absent | absent | unknown | //none// | 
 ++| ''i.ua'' | 0.00001 | ТОВ «КЕПРЕЙТ ПАРТНЕРС» (LLC Keprait Partners), Ukrainian register code 33500955 | n/a -- registrant since 2019-07-21 per the registry record, no evidence of a later change | absent | absent | current | [[https://help.i.ua/agreement/|legal-doc]] | 
 + | ''jdpower.com'' | 0.00001 | J.D. Power | n/a -- current | absent | current | current | [[tls://jdpower.com:443|register]] | 
 + | ''jobs2careers.com'' | 0.00001 | TalrooInc. | n/a -- Jobs2Careers is an active Talroo brand/channelnot a former or renamed entity | absent | current | absent | [[https://www.talroo.com/|parent-site]] | 
 + | ''myaccountaccess.com'' | 0.00001 | U.S. Bank National Association | n/a -- current | absent | current | absent | [[tls://myaccountaccess.com:443|register]] | 
 +@@ -320,28 +290,28 @@ 
 +  
 + === webXray === 
 + ^ Verdict ^ Domain-level ^ 95% CI ^ Encounter-weighted ^ 95% CI ^ 
 +-| current | 69.9% | 55.5%–83.1% | 93.9% | 80.9%–98.8% | 
 +-| granularity | 10.2% | 2.1%–20.9% | 0.2% | 0.0%–0.8% | 
 +-| stale | 19.8% | 9.2%–32.3% | 5.9% | 1.0%–19.1% | 
 ++| current | 69.2% | 56.1%–81.4% | 93.8% | 80.9%–98.6% | 
 ++| granularity | 8.8% | 2.1%–17.5% | 0.2% | 0.0%–0.7% | 
 ++| stale | 22.0% | 11.4%–33.8% | 5.9% | 1.1%–18.7% | 
 + | error | 0.0% | 0.0%–0.0% | 0.0% | 0.0%–0.0% | 
 +-| current+gran. | 80.2% | 67.7%–90.8% | 94.1% | 81.4%–99.0% | 
 +-| stale+error | 19.8% | 9.0%–32.6% | 5.9% | 1.1%–19.4% | 
 ++| current+gran. | 78.0% | 65.8%–88.8% | 94.1% | 81.4%–98.8% | 
 ++| stale+error | 22.0% | 11.0%–33.8% | 5.9% | 1.1%–18.9% | 
 +  
 + === Tracker Radar === 
 + ^ Verdict ^ Domain-level ^ 95% CI ^ Encounter-weighted ^ 95% CI ^ 
 +-| current | 73.7% | 60.8%–85.8% | 68.6% | 29.3%–97.0% | 
 +-| granularity | 2.8% | 0.0%–8.3% | 0.1% | 0.0%–0.4% | 
 +-| stale | 22.1% | 10.5%–35.1% | 26.8% | 0.4%–64.6% | 
 +-| error | 1.5% | 0.0%–4.4% | 4.5% | 0.0%–19.3% | 
 +-| current+gran. | 76.5% | 63.5%–88.0% | 68.7% | 29.2%–97.7% | 
 +-| stale+error | 23.5% | 11.7%–36.1% | 31.3% | 2.9%–71.2% | 
 ++| current | 73.9% | 61.6%–85.3% | 74.3% | 41.1%–97.8% | 
 ++| granularity | 2.5% | 0.0%–7.5% | 0.1% | 0.0%–0.3% | 
 ++| stale | 19.2% | 9.1%–30.5% | 21.6% | 0.3%–53.1% | 
 ++| error | 4.4% | 0.0%–9.8% | 4.0% | 0.0%–15.7% | 
 ++| current+gran. | 76.4% | 64.6%–87.5% | 74.4% | 41.6%–97.8% | 
 ++| stale+error | 23.6% | 12.5%–35.6% | 25.6% | 2.2%–58.5% | 
 +  
 + === Disconnect === 
 + ^ Verdict ^ Domain-level ^ 95% CI ^ Encounter-weighted ^ 95% CI ^ 
 +-| current | 94.4% | 86.9%–100.0% | 83.1% | 53.7%–100.0% | 
 +-| granularity | 4.4% | 0.0%–11.2% | 16.5% | 0.0%–45.8% | 
 +-| stale | 1.2% | 0.0%–3.8% | 0.4% | 0.0%–1.5% | 
 +-| error | 0.0% | 0.0%–0.0% | 0.0% | 0.0%–0.0% | 
 +-| current+gran. | 98.8% | 96.2%–100.0% | 99.6% | 98.5%–100.0% | 
 +-| stale+error | 1.2% | 0.0%–3.8% | 0.4% | 0.0%–1.5% | 
 ++| current | 89.2% | 80.5%–96.8% | 82.8% | 53.8%–100.0% | 
 ++| granularity | 7.6% | 1.1%–15.2% | 16.8% | 0.0%–45.6% | 
 ++| stale | 1.1% | 0.0%–3.4% | 0.4% | 0.0%–1.5% | 
 ++| error | 2.1% | 0.0%–6.2% | 0.0% | 0.0%–0.0% | 
 ++| current+gran. | 96.8% | 91.5%–100.0% | 99.6% | 98.5%–100.0% | 
 ++| stale+error | 3.2% | 0.0%–8.5% | 0.4% | 0.0%–1.5% | 
 + 
 </code> </code>
  
-===== O. Unedited output: scripts/report_tail_pass.py =====+===== Q. Unedited output: scripts/report_tail_pass.py =====
  
 Run as ''python3 scripts/report_tail_pass.py --sample out/owner_sample.json --before out/adj_rows_scored.json --after out/adj_rows_tail_final.json --before-output out/owner_random_sample-output.txt --after-output out/owner_random_sample-tail-output.txt''. Run as ''python3 scripts/report_tail_pass.py --sample out/owner_sample.json --before out/adj_rows_scored.json --after out/adj_rows_tail_final.json --before-output out/owner_random_sample-output.txt --after-output out/owner_random_sample-tail-output.txt''.
Line 4614: Line 5016:
  
 Raw counts, unweighted, because this is a comparison between two groups of Raw counts, unweighted, because this is a comparison between two groups of
-drawn rows and not an estimate for the list. current+granularity against +drawn rows and not an estimate for the list. Fisher's exact, two-sided. A 
-stale+error; Fisher's exact, two-sided. A significantly worse recovered +significantly worse recovered group would support the worry that the rates 
-group would support the worry that the rates are flattered.+are flattered.
  
-List            already-eligible good/  recovered good/ p (Fisher) +**Both metrics, because the answer depends on which one you ask.** The first 
-webXray                           39/49                5/7       0.635 +version of this script tested current+granularity here and current-only in 
-Tracker Radar                     36/47                7/9       1.000 +section E2 -- each the choice that makes its own claim mildest -- and did not 
-Disconnect                        41/42              11/12       0.398 +say so. A review pass caught it. Neither metric is privileged: `current` is 
-pooled                          116/138              23/28       0.782+the stricter reading, `current+granularity` is the one the content page says 
 +is right when the unit of analysis is 'which company'
 + 
 +  metric: current only 
 +  List            already-eligible good/  recovered good/ p (Fisher) 
 +  webXray                           35/49                5/7       1.000 
 +  Tracker Radar                     35/47                7/9       1.000 
 +  Disconnect                        39/42               9/12       0.116 
 +  pooled                          109/138              21/28       0.622 
 + 
 +  metric: current+granularity 
 +  List            already-eligible good/  recovered good/ p (Fisher) 
 +  webXray                           39/49                5/7       0.635 
 +  Tracker Radar                     36/47                7/9       1.000 
 +  Disconnect                        41/42              11/12       0.398 
 +  pooled                          116/138              23/28       0.782
  
 The pooled row counts a domain once per list that drew it, so it is not an The pooled row counts a domain once per list that drew it, so it is not an
Line 4658: Line 5075:
 --- E. Rate movement, computed with owner_random_sample.py's estimator --- --- E. Rate movement, computed with owner_random_sample.py's estimator ---
  
-Imported, not reimplemented. 95% intervals are stratified bootstrap +Imported, not reimplemented -- the point estimator is owner_random_sample.py'
-percentiles, 10,000 resamples, seed 20260905 -- the estimator's own.+own `strat_estimate`. **Point estimates only.** The 95% intervals are in the 
 +estimator's own output and nowhere else: its bootstrap draws for several 
 +verdicts from one generator, so re-running it here from a generator seeded 
 +identically prints a different interval for the same estimate.
  
 webXray webXray
Line 4669: Line 5089:
   current+gran.           80.2%         78.0%   -2.2          94.1%       94.1%   -0.0   current+gran.           80.2%         78.0%   -2.2          94.1%       94.1%   -0.0
   stale+error             19.8%         22.0%   +2.2           5.9%        5.9%   +0.0   stale+error             19.8%         22.0%   +2.2           5.9%        5.9%   +0.0
-  current, after, 95% CI: domain [56.1%, 81.4%]  encounter [80.9%, 98.6%] 
  
 Tracker Radar Tracker Radar
Line 4679: Line 5098:
   current+gran.           76.5%         76.4%   -0.1          68.7%       74.4%   +5.7   current+gran.           76.5%         76.4%   -0.1          68.7%       74.4%   +5.7
   stale+error             23.5%         23.6%   +0.1          31.3%       25.6%   -5.7   stale+error             23.5%         23.6%   +0.1          31.3%       25.6%   -5.7
-  current, after, 95% CI: domain [61.7%, 85.5%]  encounter [41.4%, 97.7%] 
  
 Disconnect Disconnect
Line 4689: Line 5107:
   current+gran.           98.8%         96.8%   -2.0          99.6%       99.6%   -0.0   current+gran.           98.8%         96.8%   -2.0          99.6%       99.6%   -0.0
   stale+error              1.2%          3.2%   +2.0           0.4%        0.4%   +0.0   stale+error              1.2%          3.2%   +2.0           0.4%        0.4%   +0.0
-  current, after, 95% CI: domain [80.7%, 96.8%]  encounter [53.6%, 100.0%] 
  
 --- E2. The three pairwise comparisons, recomputed --------------------- --- E2. The three pairwise comparisons, recomputed ---------------------
Line 4703: Line 5120:
   Disconnect                        39/42        48/54         92.9%   88.9%   Disconnect                        39/42        48/54         92.9%   88.9%
  
-  Pair                                p before   p after  survives 0.0167 after? +**The result depends on the metric, and publishing only one of them was 
-  Disconnect vs webXray                  0.014     0.031  no +this script's most misleading omission.** Counting `granularity` as 
-  Disconnect vs Tracker Radar            0.025     0.083  no +acceptable -- which the content page says is right when the unit of analysis 
-  Tracker Radar vs webXray               0.820     0.831  no+is 'which company' rather than 'which legal entity' -- BOTH Disconnect 
 +comparisons clear Bonferroni, before and after, and the second pass overturns 
 +nothing. On `current` only, Disconnect-versus-webXray stops clearing it. 
 +Report both or report neither. 
 + 
 +  metric: current only 
 +  Pair                                p before   p after  survives 0.0167 before / after? 
 +  Disconnect vs webXray                  0.014     0.031  yes / no   (48/54 vs 40/56) 
 +  Disconnect vs Tracker Radar            0.025     0.083   no / no   (48/54 vs 42/56) 
 +  Tracker Radar vs webXray               0.820     0.831   no / no   (42/56 vs 40/56) 
 + 
 +  metric: current+granularity 
 +  Pair                                p before   p after  survives 0.0167 before / after? 
 +  Disconnect vs webXray                  0.010     0.008  yes / yes   (52/54 vs 44/56) 
 +  Disconnect vs Tracker Radar            0.004     0.004  yes / yes   (52/54 vs 43/56) 
 +  Tracker Radar vs webXray               0.807     1.000   no / no   (43/56 vs 44/56)
  
 --- E3. Sensitivity: the recovered rows that rest on the weakest source --- --- E3. Sensitivity: the recovered rows that rest on the weakest source ---
Line 4721: Line 5153:
   dropped: cratecamera.com, sa-as.com   dropped: cratecamera.com, sa-as.com
  
-  List            eligible  current (domain)  vs. full pass +  1. uncorroborated registrant organisation only  (2 row(s): cratecamera.com, sa-as.com) 
-  webXray               56             69.2%          +0.0 +  the narrowest reading: a row whose ONLY evidence is a registrant name nobody validated. 
-  Tracker Radar         55             73.3%          -0.6 +  List            eligible   current raw  current (domain)  vs. full pass 
-  Disconnect            53             89.2%          +0.0+  webXray               56         40/56             69.2%          +0.0 
 +  Tracker Radar         55         41/55             73.3%          -0.6 
 +  Disconnect            53         47/53             89.2%          +0.0 
 +    Disconnect vs webXray, current only: p = 0.032 (does not survive 0.0167) 
 +    Disconnect vs Tracker Radar, current only: p = 0.082 (does not survive 0.0167) 
 + 
 +  2. EVERY row resting on a source kind the first pass did not accept  (11 row(s): acint.net, app-us1.com, blogblog.com, cjponyparts.com, cratecamera.com, gssprt.jp, lduhtrp.net, pages02.net, sa-as.com, travelpayouts.com, yceml.net) 
 +  the same-bar comparison: what the rates would be if the second pass had used 
 +  the first pass's bar exactly and settled only what that bar could reach. 
 +  List            eligible   current raw  current (domain)  vs. full pass 
 +  webXray               53         38/53             69.2%          +0.0 
 +  Tracker Radar         51         37/51             72.1%          -1.8 
 +  Disconnect            51         45/51             89.0%          -0.2 
 +    Disconnect vs webXray, current only: p = 0.050 (does not survive 0.0167) 
 +    Disconnect vs Tracker Radar, current only: p = 0.079 (does not survive 0.0167) 
 + 
 +  3. the i.ua rescore, under the reading this run rejected  (1 row(s): i.ua) 
 +  if 'I.UA' is held to name no company at all, the row is an error rather than 
 +  current, which is the reading the hand correction argued against. Dropping the 
 +  row entirely is the conservative stand-in, since scoring it `error` would lower 
 +  Disconnect further than dropping it does. 
 +  List            eligible   current raw  current (domain)  vs. full pass 
 +  webXray               56         40/56             69.2%          +0.0 
 +  Tracker Radar         56         42/56             73.9%          +0.0 
 +  Disconnect            53         47/53             88.6%          -0.6 
 +    Disconnect vs webXray, current only: p = 0.032 (does not survive 0.0167) 
 +    Disconnect vs Tracker Radar, current only: p = 0.084 (does not survive 0.0167)
  
 --- F. Residue after the second pass, printed in full ----------------- --- F. Residue after the second pass, printed in full -----------------
Line 4746: Line 5204:
 </code> </code>
  
-===== P. Unedited output: scripts/check_tail_figures_mutations.sh =====+===== R. Unedited output: scripts/check_tail_figures_mutations.sh =====
  
 Run as ''bash scripts/check_tail_figures_mutations.sh''. Run as ''bash scripts/check_tail_figures_mutations.sh''.
Line 4766: Line 5224:
 caught   delete the sensitivity-dropped ''sa-as.com'' caught   delete the sensitivity-dropped ''sa-as.com''
 caught   delete the error domain ''km0trk.com'' caught   delete the error domain ''km0trk.com''
 +caught   same-bar Tracker Radar 72.1% -> 72.6%
 +caught   same-bar Disconnect 89.0% -> 89.5%
 +caught   same-bar Tracker Radar delta (−1.8) -> (−1.9)
 +caught   delete the same-bar Disconnect delta (−0.2)
 +caught   i.ua alternative reading 88.6% -> 87.6%
 +caught   reintroduce the superseded Disconnect rate 89.2% -> 94.4%
 +caught   reintroduce the superseded Tracker Radar rate 73.9% -> 73.7%
 +caught   reintroduce the superseded webXray encounter rate 93.8% -> 93.9%
 +caught   revert ONE copy of the hand-changed count 30 -> 29 of the 525
  
-mutations caught: 15; survived or broken: 0+mutations caught: 24; survived or broken: 0
 </code> </code>
  
provenance/programming/crawler/webxray/residue_pass.1789154445.txt.gz · Last modified: by karel.kubicek.claude