Paper A v13 rev9.1: HC-meaning + same-pair table + interview/framing rebalance, plus typesetting polish

Respond to a second hostile GPT-5.5 reviewer pass on rev9. Four substantive
changes plus accumulated typesetting polish.

Reviewer points addressed:
- HC != reuse (Fatal 1): new Sec III-F "What HC Means and Does Not Mean" states
  plainly that HC denotes an extreme within-accountant repetition pattern that is
  rare between unrelated accountants, not a reuse label; reuse is one
  interpretation, carried at Firm A by byte-identity + context, never implied by
  HC alone; no reuse claim is made for Firms B/C/D.
- Any-pair construction (Fatal 2): new Table VI gives the per-signature HC flag
  rate by firm under the deployed any-pair rule vs the strict same-pair rule
  (cosine and dHash from the same partner). Same-pair lowers all rates but widens
  the firm gap: Firm A 57.3% vs baseline 5-9%, ratio 2.4-3.4x -> 6.4-10.8x, so
  the HC region is not an artefact of combining extrema from different pairs.
  Reproducible via samepair_hc.py (Hamming on stored dHash vectors).
- Interviews (Fatal 3): Sec III-A now states the interviews are used only to
  contextualize, are corroborative not confirmatory and not independently
  reproducible; their one load-bearing use (Firm A as known-positive benchmark)
  lowers rather than raises the claim. Empirical claims rest on calibration +
  byte-identity, which stand without them.
- Framing (Fatal 4, rebalance not relabel): contribution 3 elevated to the
  methodological core (label-free construction/characterization of an operating
  point without labels), explicitly demonstrated/stress-tested on audit
  signatures "rather than a finished, fully general framework." The audit finding
  is kept as a headline result, not demoted to a mere case study, and no
  general-framework claim is made.

Typesetting polish (verified by rendering pages to images):
- Unify scientific notation in Table II ([4x10^-6, 2.3x10^-5]).
- Tighten Table II row labels to cut excessive wrapping (3 lines -> 2).
- Fix duplicated figure captions (empty image alt-text so pandoc no longer
  auto-captions on top of the hand-written caption); unify caption punctuation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qn59FdF9JMyfFg3sjcUNNG
This commit is contained in:
2026-06-23 15:37:13 +08:00
parent cb38d413ad
commit 2a13f0d985
3 changed files with 56 additions and 14 deletions
+28
View File
@@ -0,0 +1,28 @@
"""Table VI: HC flag rate by firm under any-pair (deployed) vs strict same-pair rule.
same-pair dHash = Hamming distance between a signature's dHash and its cosine-closest
same-accountant partner (closest_match_file). Reproduces from signature_analysis.db."""
import sqlite3
from collections import defaultdict
DB="/Volumes/NV2/PDF-Processing/signature-analysis/signature_analysis.db"
BIG4=('勤業眾信聯合','資誠聯合','安侯建業聯合','安永聯合')
FM={'勤業眾信聯合':'A','安侯建業聯合':'B','資誠聯合':'C','安永聯合':'D'}
con=sqlite3.connect(DB);cur=con.cursor()
cur.execute("SELECT image_filename, dhash_vector FROM signatures WHERE dhash_vector IS NOT NULL")
dh={fn:bytes(b) for fn,b in cur.fetchall()}
ham=lambda a,b: bin(int.from_bytes(a,'big')^int.from_bytes(b,'big')).count('1')
cur.execute(f"""SELECT excel_firm,max_similarity_to_same_accountant,min_dhash_independent,closest_match_file,image_filename
FROM signatures WHERE is_valid=1 AND max_similarity_to_same_accountant IS NOT NULL
AND min_dhash_independent IS NOT NULL AND excel_firm IN ({','.join('?'*4)})""",BIG4)
st=defaultdict(lambda:[0,0,0])
for firm,cos,mindh,cmf,imf in cur.fetchall():
f=FM[firm]; st[f][0]+=1
st[f][1]+= (cos>0.95 and mindh<=5)
sp=ham(dh[imf],dh[cmf]) if (cmf in dh and imf in dh) else 99
st[f][2]+= (cos>0.95 and sp<=5)
con.close()
print(f"{'firm':5}{'n':>8}{'any-pair%':>11}{'same-pair%':>12}")
T=[0,0,0]
for f in 'ABCD':
n,a,s=st[f]; T=[T[0]+n,T[1]+a,T[2]+s]
print(f"{f:5}{n:>8}{100*a/n:>10.1f}%{100*s/n:>11.1f}%")
n,a,s=T; print(f"{'all':5}{n:>8}{100*a/n:>10.1f}%{100*s/n:>11.1f}%")