Skip to content

Commit d25c19b

Browse files
h4x0rclaude
andcommitted
docs(paper): restore reviewed paper in XeLaTeX; omit SQL-DRP from charts
Overleaf was synced to the pre-review paper and its push reverted the revision on main; restore it. Keep XeLaTeX + xeCJK (Songti TC) for proper CJK glyphs (Overleaf compiler = XeLaTeX), with all the Codex/Grok review fixes, the e2e-recall column, the iso-F1 curves, and the F1/F0.5 bar charts. Represent SQL-DRP honestly in both the paper and docs/recovery-comparison.md: it is a printable-string carver (space-joined blobs, not per-column records) that scores 0 under the (col1,col2) identity metric -- a capability boundary, not a recovery failure. Omit it from the score-based charts (paper Fig.2 and recovery-comparison plot_comparison.py) with the reason in the caption; keep it in the tables with a footnote. Fix the F1 chart legend overlap. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent d0508ae commit d25c19b

6 files changed

Lines changed: 24 additions & 16 deletions

File tree

docs/img/recovery-comparison.png

-3.15 KB
Loading

docs/plot_comparison.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,17 @@
2626
PNG_PATH = HERE / "img" / "recovery-comparison.png"
2727

2828
# Tool -> colour; category -> marker.
29+
# SQL-DRP is omitted from the chart: it emits space-joined string blobs, not
30+
# per-column records, so it scores 0 under the (col1,col2) identity metric -- a
31+
# capability boundary, not a recovery failure (see recovery-comparison.md). It is
32+
# kept in the table and prose, but plotting a metric-artifact 0 misrepresents it.
2933
TOOL_COLOR = {
3034
"ours": "#1b9e8a", # teal
3135
"fqlite": "#e6840f", # orange
3236
"undark": "#d62728", # red
3337
"bring2lite": "#7570b3", # purple
34-
"sqldrp": "#666666", # grey
3538
}
36-
TOOL_ORDER = ["ours", "fqlite", "undark", "bring2lite", "sqldrp"]
39+
TOOL_ORDER = ["ours", "fqlite", "undark", "bring2lite"]
3740
CAT_MARKER = {"0C": "o", "0D": "s", "0E": "^"}
3841
CAT_ORDER = ["0C", "0D", "0E"]
3942

docs/recovery-comparison.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,14 +200,18 @@ the same answer key and the same `(col1,col2)` matcher (`BRING2LITE_CMD` =
200200
[`competitive-landscape.md`](competitive-landscape.md).
201201

202202
![Precision-recall plane plus F1 and F0.5 grouped bars for ours, undark,
203-
fqlite, bring2lite, and SQL-DRP across categories 0C/0D/0E](img/recovery-comparison.png)
203+
fqlite, and bring2lite across categories 0C/0D/0E](img/recovery-comparison.png)
204204

205205
The figure plots the **same harness-computed numbers** as the table above:
206206
`forensic/tests/nemetz_tool_comparison.rs` writes the per-(tool, category)
207207
`recall_substrate`, `precision`, `F1`, and `F0.5` to
208208
[`img/comparison_metrics.csv`](img/comparison_metrics.csv) when run with the
209209
undark/fqlite oracles, and `docs/plot_comparison.py` renders the chart straight
210-
from that CSV — chart and table are the same dataset by construction. By **F1**
210+
from that CSV — chart and table are the same dataset by construction. SQL-DRP is
211+
omitted from the chart: it scores 0 under the `(col1,col2)` identity metric because
212+
it emits space-joined string blobs, not per-column records — a measured capability
213+
boundary (kept in the table and detailed below), not a recovery failure, and a
214+
metric-artifact 0 would misrepresent it as plotted. By **F1**
211215
(balanced), sqlite-forensic leads `0C` (0.909 vs fqlite 0.798); under **F0.5**
212216
(precision-weighted — the forensic β, since a phantom row costs an examiner more
213217
than a missed low-confidence one) the `0C` lead widens (0.962 vs fqlite 0.798). The `0E`

paper/Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
# Build the SQLite recovery paper (pdfLaTeX + BibTeX).
1+
# Build the SQLite recovery paper (XeLaTeX + BibTeX).
22
PAPER = sqlite-recovery
33

44
.PHONY: all clean
55
all: $(PAPER).pdf
66

77
$(PAPER).pdf: $(PAPER).tex $(PAPER).bib
8-
pdflatex -interaction=nonstopmode -halt-on-error $(PAPER).tex
8+
xelatex -interaction=nonstopmode -halt-on-error $(PAPER).tex
99
bibtex $(PAPER)
10-
pdflatex -interaction=nonstopmode -halt-on-error $(PAPER).tex
11-
pdflatex -interaction=nonstopmode -halt-on-error $(PAPER).tex
10+
xelatex -interaction=nonstopmode -halt-on-error $(PAPER).tex
11+
xelatex -interaction=nonstopmode -halt-on-error $(PAPER).tex
1212

1313
clean:
1414
rm -f $(PAPER).aux $(PAPER).bbl $(PAPER).blg $(PAPER).log $(PAPER).out

paper/sqlite-recovery.pdf

-385 KB
Binary file not shown.

paper/sqlite-recovery.tex

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
% =============================================================================
22
% Deleted-Record Recovery from SQLite Databases
33
% A reference implementation and a multi-oracle forensic evaluation
4-
% pdfLaTeX + CJKutf8, two-column (builds under Overleaf/arXiv default engine)
5-
% Build: pdflatex -> bibtex -> pdflatex x2 (see Makefile)
4+
% XeLaTeX + xeCJK, two-column (Overleaf: set the compiler to XeLaTeX)
5+
% Build: xelatex -> bibtex -> xelatex x2 (see Makefile)
66
% =============================================================================
77
\documentclass[10pt,a4paper]{article}
88

99
% --- Packages ----------------------------------------------------------------
10-
\usepackage[utf8]{inputenc}
11-
\usepackage[T1]{fontenc}
12-
\usepackage{CJKutf8}
13-
\usepackage{lmodern}
10+
\usepackage{fontspec}
11+
\usepackage{xeCJK}
12+
\setCJKmainfont{Songti TC}
13+
\setCJKsansfont{Songti TC}
14+
\setCJKmonofont{Songti TC}
1415
\usepackage{amsmath,amssymb,amsfonts}
1516
\usepackage{booktabs}
1617
\usepackage{multirow}
@@ -45,8 +46,8 @@
4546
urlcolor=blue!60!black,
4647
}
4748

48-
% inline simplified-Chinese helper (pdfLaTeX + CJKutf8)
49-
\newcommand{\zh}[1]{\begin{CJK}{UTF8}{gbsn}#1\end{CJK}}
49+
% xeCJK handles CJK natively
50+
\newcommand{\zh}[1]{#1}
5051
\newcommand{\orcidlink}[1]{%
5152
\href{https://orcid.org/#1}{\textcolor{green!50!black}{\textsf{iD}}}%
5253
}

0 commit comments

Comments
 (0)