From 25da60feacef9bcc778f5f529f2954db0f5ce516 Mon Sep 17 00:00:00 2001 From: devswha Date: Wed, 2 Sep 2026 17:21:10 +0900 Subject: [PATCH 01/10] research: register rewrite-efficacy Study 4 (specificity-preservation constraint, H-4b) Registered before any Study 4 data: two fresh arms (P plain production prompt, S plain + a fixed specificity block with a 98% length floor and capped feedback retries) on the 54 Study 1 ko documents, stage 2 en; panel v2 chief det + gpt, with gemini replacing grok under a registered deviation (xAI credits exhausted 2026-09-02) gated by a bridge admission rule; primary paired d(S - P) <= -3 with CI upper < 0; guard rails on meaning, human controls, invented detail tokens and copy similarity. Survey H-4b marked activated; backlog records the owner's reorder; study4 artifacts ignored. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_018ePnwo4nBWCWvFvpy1YgCN --- .gitignore | 1 + docs/research/2026-rewrite-efficacy-prereg.md | 161 ++++++++++++++++++ docs/research/humanization-data-backlog.md | 2 + .../humanization-literature-2026-09.md | 2 + 4 files changed, 166 insertions(+) diff --git a/.gitignore b/.gitignore index 0f78fdd5..d4b87f69 100644 --- a/.gitignore +++ b/.gitignore @@ -81,6 +81,7 @@ artifacts/rewrite-efficacy-pilot/ artifacts/rewrite-efficacy-study1/ artifacts/rewrite-efficacy-study2/ artifacts/rewrite-efficacy-study3/ +artifacts/rewrite-efficacy-study4/ # Judge-calibration side study raw outputs (same policy: raw text never committed) artifacts/judge-calibration-2026/ diff --git a/docs/research/2026-rewrite-efficacy-prereg.md b/docs/research/2026-rewrite-efficacy-prereg.md index 74868d0f..2f5fcaee 100644 --- a/docs/research/2026-rewrite-efficacy-prereg.md +++ b/docs/research/2026-rewrite-efficacy-prereg.md @@ -482,6 +482,167 @@ candidate on that list — a pre-rewrite **structure plan step**. No Study 3 corpus row, rewrite, plan, or judgment exists at registration time. +## Study 4 (specificity-preservation constraint, survey H-4b) — registered 2026-09-02, before any Study 4 data + +Studies 2 and 3 tested structural mechanisms and both failed while dropping +content: S2/S3 compressed documents (length ratio ≈ 0.91) and lost numbers, +and Study 1's judges named *specificity* — named institutions, exact values, +first-person edge cases — as the cue that flips a verdict to "human". The +2026-09 literature survey (`humanization-literature-2026-09.md` §9, H-4b) +records the competing hypothesis this study tests: **the plain rewrite loses +Layer-4 material, and a length floor plus a retain-every-concrete-detail +constraint on the plain rewrite lowers perceived AI-likeness without any new +mechanism.** Owner decision 2026-09-02: this study runs ahead of the frozen +backlog order (steps 2–8), recorded in `humanization-data-backlog.md`. + +### Design + +- **Corpus (stage 1, ko):** the same 54 Study 1 Arm-D documents (27 AI + + 27 human) by stored original text (`original_sha`). **Stage 2 (en):** the + 42 Study 1 Arm-A1 documents (21 AI + 21 human), identical rules, run only + after stage 1 completes and reported in the same results doc. Stage 2 is + registered now so it cannot be dropped silently; it may be deferred with a + dated note. +- **Two fresh arms per document, run back-to-back (P then S), same pinned + rewriter** `claude -p --model claude-sonnet-4-6` in a fresh temp cwd (the + S3 `claudeCall` shape, which is also the claude-cli backend's shape): + - **P (plain):** the production minimal-mode prompt built by `buildPrompt` + exactly as `patina --lang ko --backend claude-cli` builds it today + (document type `default`, no persona, no register, measured document + signals, `jargon: keep`, headings preserved). No retry. + - **S (specificity):** the identical prompt with one fixed block spliced in + immediately before the `## 출력 형식` (ko) / `## Output format` (en) + section. **Enforcement is part of the mechanism:** if the extracted body + is shorter than 98% of the original (characters, whitespace-collapsed), + the model is re-prompted with the same prompt plus a fixed feedback suffix + stating the measured ratio, at most **two** retries (three attempts). The + last attempt is kept whether or not it meets the floor; attempt count and + every attempt's ratio are recorded. P receives no retry. + - Body extraction uses the production `cleanRewriteOutput`. Every row + records the rewriter model, the prompt-template sha (prompt built on a + fixed probe text, S3 style), the constraint-block sha and the retry-suffix + sha. None of these texts may change after the first real row exists. +- **P today is not Study 1's rw1.** The production prompt changed twice since + Study 1 (2026-07-28 no-invented-claims rule; 2026-08-05 voice-axis cutover), + so the primary comparison is S vs P within this run. Comparisons to archived + S1 rewrites are descriptive only and use the **gpt column alone**, the one + judge common to S1, P and S. + +### The constraint block (ko, verbatim; the en block is its direct translation and is stamped by sha in every row) + +``` +## 구체성 보존 (필수 — 위의 "±30%" 분량 규칙보다 우선한다) + +1. 길이 하한: 다듬은 본문의 글자 수는 원문의 98% 이상이어야 한다. 군더더기를 걷어낸 자리는 요약이 아니라 같은 무게의 구체적인 표현으로 다시 채운다. +2. 원문에 있는 구체적 세부는 하나도 빠뜨리지 않는다: 숫자·날짜·단위·비율, 사람·기관·제품·기능·장소 이름, 인용구, 예시와 일화, 비유에 등장하는 대상. 여러 항목을 "등"이나 일반 명사로 뭉뚱그리지 않는다. +3. 원문에 없는 사실·숫자·이름·예시를 새로 만들어 넣지 않는다. 길이를 채우려고 지어내는 것은 금지다. +4. 다 쓰고 나서 원문과 나란히 대조해, 빠진 세부가 있으면 원래 자리에 되살린 뒤에 출력한다. +``` + +Retry suffix (ko, verbatim; `{ratio}` is the measured percentage): + +``` +## 재시도 사유 + +직전 출력은 원문 길이의 {ratio}%였다. 위 "구체성 보존" 규칙 1의 98% 하한을 지키지 못했다. 빠뜨린 구체적 세부를 되살리고 군더더기 자리를 같은 무게의 표현으로 채워, 원문 길이의 98% 이상으로 다시 출력하라. 새 사실을 지어내지 마라. +``` + +### Judges — panel v2 with a registered deviation + +- **Chief judge-det:** `scoreText(lang)` with the fixed threshold 35. Before + any binary det column is reported the run calls + `requireFreshCorpusValidation` on det scores **recomputed at run time** over + the 54 originals (labels from the corpus). Accuracy < 0.85 disables the + binary column; continuous det scores stay reportable. +- **Perceptual corroboration:** `judge-gpt` (codex exec, gpt-5.5) and + **`judge-gemini` (gemini-cli, gemini-2.5-pro, invoked with the production + backend's arguments) in place of `judge-grok`.** Deviation cause, recorded + before any row: the xAI API returned HTTP 403 "credits exhausted" on + 2026-09-02 (probe logged). If xAI credit is restored before the first Study + 4 row, grok is used and this deviation is void; a dated note records which + path ran. +- **Gemini admission rule (bridge, run before any Study 4 row, not study + data):** gemini scores the 108 archived S1-D passages (54 originals + 54 + S1 rewrites) with the Study 1 judge prompt. Gemini is admitted iff (a) its + AUC separating the 27 AI from the 27 human originals is ≥ 0.85 (mirrors the + det gate) AND (b) Spearman(gemini, gpt) over the 108 passages ≥ + Spearman(grok, gpt) over the same 108 − 0.10 (both reference columns exist + in the archived rows). If gemini fails admission, the study runs with gpt + + det only and the results doc is labelled *single-perceptual-judge*. +- Both admitted LLM judges are required per passage; a missing or + unparseable judge after three attempts is data loss, never silently reduced + to one judge. Originals are not re-judged; rewrites are claude output, so + both LLM judges are cross-family for every rewrite. + +### Metrics (fixed) + +- **Perceptual score** = mean of the admitted LLM judges' 0–100 AI-likeness. +- **Primary (H-4b-a):** paired d = score(S) − score(P) on AI documents. Support + requires **mean d ≤ −3 AND the 95% bootstrap CI upper bound < 0.** Bar + justification: the mechanism adds no LLM call (only capped retries), so + Study 3's −5 (set for a doubled-cost mechanism) is not the right bar; −3 is + the smallest effect separable from per-judge repeat SD (2–5 in the + calibration study) at n = 27. +- **Secondary:** (b) AI-call rate S vs P on AI documents (McNemar); (c) + detail-token retention S vs P (definition below); (d) floor achievement: + share of S rows with final length ratio ≥ 0.98 (target ≥ 80%; below it the + enforcement itself failed and (a) is read with that caveat); (e) det chief + continuous delta S − P and verdict flips; (f) structural share of + strongest-cues among still-"ai" judgments (descriptive, S1 rubric); (g) + descriptive gpt-only comparison of S and P with archived S1 rw1. +- **Detail tokens (frozen):** text is NFC-normalized and whitespace-collapsed. + (1) numbers: `/\d[\d,.]*(?:\s?(?:%|[A-Za-z]{1,4}|[가-힣]{1,2}))?/gu`, then + thousands separators removed; (2) Latin tokens: + `/[A-Za-z][A-Za-z0-9+._-]+/gu`, lower-cased; (3) quoted spans: the inner + text of `/[“"‘'「『]([^”"’'」』\n]{2,60})[”"’'」』]/gu`. Each text yields a + unique set. Retention = |orig ∩ rewrite| / |orig| (documents with an empty + original set are excluded from the mean and counted). Added = + |rewrite − orig|. + +### Guard rails (any violation blocks shipping regardless of d) + +1. Deterministic meaning gate (`deterministicMeaningGuard`, dropped numbers) + passes on ≥ 95% of S rows (≥ 52/54). +2. Human-control paired d(S − P) is not significantly positive (CI includes 0 + or is negative): a length floor must not push human text toward AI. +3. **Invented-content proxy:** mean added detail tokens per document in S + must not exceed P's by more than 1.0. A length floor invites padding; the + meaning gate only catches *dropped* numbers, this catches *added* ones. +4. **Copy check (descriptive, reported):** character-trigram Jaccard between + original and rewrite for P and S. If S's median exceeds 0.90 while P's does + not, "preserved specificity" is read as "rewrote less", and the results doc + says so beside the primary result. + +### Confounds noted up front + +Rewriter and judges are stochastic; the two arms run back-to-back per +document so run-level drift is shared, but the judge panel differs from the +archived series (gemini for grok) and the production prompt differs from +Study 1, so only within-run S vs P is confirmatory. Near-zero d reads as +"indistinguishable from rerun variance". + +### Runner + +Clone of the Study 3 harness: fail-soft recorded rows, resume by +`original_sha` + arm, three-failure circuit breaker, a supervisor loop with a +30-minute back-off, and quota probes on claude, codex and gemini logged +immediately before launch. Plumbing is smoke-tested on a synthetic paragraph, +never on a corpus document. Raw texts stay in gitignored +`artifacts/rewrite-efficacy-study4/`; rows carry hashes, scores and metadata +only. + +### What ships on the result + +- All criteria pass (stage 1) → a product proposal to fold the constraint + block into the production rewrite prompt (minimal and strict modes) for ko, + with the en decision waiting on stage 2; separate approval, citing this + registration and the measured CIs. +- H-4b-a fails or a guard rail is violated → published as-is; the next + candidate is H-4a (deterministic merge/split with seam-only infill). No + efficacy claim ships from a failed study. + +No Study 4 corpus row, rewrite, or judgment exists at registration time. + ## Sources - Self-Preference Bias in LLM-as-a-Judge — arXiv:2410.21819 - TH-Bench (humanizing attacks vs detectors) — arXiv:2503.08708 diff --git a/docs/research/humanization-data-backlog.md b/docs/research/humanization-data-backlog.md index 915ef2f9..02b61228 100644 --- a/docs/research/humanization-data-backlog.md +++ b/docs/research/humanization-data-backlog.md @@ -183,3 +183,5 @@ Execution order frozen for the next performance-only cycle (2026-09-01): 8. **ZH/JA corpus expansion.** Reach the same per-language class/register evidence gate before making broader claims. Step 1 is the sole active item. Promotion to the next step requires a reviewed artifact that satisfies its acceptance criteria; implementation changes discovered during review stay deferred to their own branch. + +**Owner decision 2026-09-02:** with step 1 complete (PR #718), the survey's H-4b (specificity-preservation constraint on the plain rewrite) runs ahead of steps 2–8 as rewrite-efficacy **Study 4**, registered in [`2026-rewrite-efficacy-prereg.md`](./2026-rewrite-efficacy-prereg.md) before any data. Steps 2–8 stay in their frozen order behind it. diff --git a/docs/research/humanization-literature-2026-09.md b/docs/research/humanization-literature-2026-09.md index 80fcb335..5884dd1b 100644 --- a/docs/research/humanization-literature-2026-09.md +++ b/docs/research/humanization-literature-2026-09.md @@ -389,6 +389,8 @@ active item. removed Layer-4 material. *Metric:* same panel; rewrite/original length ratio ≥ 0.98; count of retained named entities, numbers, and examples. This is the cheapest test in the list and does not require a new mechanism. + **Activated as Study 4 on 2026-09-02** (owner decision; registered in + `2026-rewrite-efficacy-prereg.md`). - **H-6 (meaning proxy).** Certainty-direction and claim-neutrality metamorphic fixtures will catch failures that anchor-MPS passes, with an asymmetry toward increased certainty. *Metric:* per-fixture pass rate, From a6e1f95d9ea81171b6cd2aa677e813ee7e15947d Mon Sep 17 00:00:00 2001 From: devswha Date: Wed, 2 Sep 2026 17:48:15 +0900 Subject: [PATCH 02/10] =?UTF-8?q?research:=20Study=204=20harness=20?= =?UTF-8?q?=E2=80=94=20bridge,=20runner,=20supervisor=20loop,=20analysis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - study4-common.mjs: S1-identical judge prompt/parse, S3-shape claude call, gemini/gpt/grok judge definitions, the pre-registered detail-token and trigram-copy measures, bootstrap/Spearman/AUC/McNemar helpers. - rewrite-efficacy-study4-bridge.mjs: gemini on the 108 archived S1-D passages; applies the registered admission rule and writes bridge-verdict. - rewrite-efficacy-study4.mjs: two fresh arms per document (P production minimal prompt, S + fixed specificity block with a 98% floor and two capped feedback retries), production body extraction, meaning gate, det chief with the run-time fresh-corpus gate, admitted LLM judges; fail-soft rows, resume, circuit breaker; smoke mode on a synthetic paragraph only. - loop + analyze scripts mirror the Study 3 pair and the prereg decision rules. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_018ePnwo4nBWCWvFvpy1YgCN --- .../rewrite-efficacy-study4-analyze.mjs | 107 ++++++ .../rewrite-efficacy-study4-bridge.mjs | 98 ++++++ .../research/rewrite-efficacy-study4-loop.sh | 36 ++ scripts/research/rewrite-efficacy-study4.mjs | 331 ++++++++++++++++++ scripts/research/study4-common.mjs | 258 ++++++++++++++ 5 files changed, 830 insertions(+) create mode 100644 scripts/research/rewrite-efficacy-study4-analyze.mjs create mode 100644 scripts/research/rewrite-efficacy-study4-bridge.mjs create mode 100755 scripts/research/rewrite-efficacy-study4-loop.sh create mode 100644 scripts/research/rewrite-efficacy-study4.mjs create mode 100644 scripts/research/study4-common.mjs diff --git a/scripts/research/rewrite-efficacy-study4-analyze.mjs b/scripts/research/rewrite-efficacy-study4-analyze.mjs new file mode 100644 index 00000000..71cfbd83 --- /dev/null +++ b/scripts/research/rewrite-efficacy-study4-analyze.mjs @@ -0,0 +1,107 @@ +// Analysis for rewrite-efficacy Study 4. Applies the decision rules fixed in +// docs/research/2026-rewrite-efficacy-prereg.md ("Study 4") to +// artifacts/rewrite-efficacy-study4/s4-rows-.jsonl. Prints Markdown. +// Usage: node scripts/research/rewrite-efficacy-study4-analyze.mjs [ko|en] + +import { join } from 'node:path'; + +import { OUT_DIR, S1_DIR, bootstrapCI, mcnemarExact, mean, readJsonl } from './study4-common.mjs'; + +const STAGE = process.argv[2] === 'en' ? 'en' : 'ko'; +const S1_ARM = STAGE === 'ko' ? 'D' : 'A1'; +const CUE_RUBRIC = [ + ['structure', /구조|구성|서사|전개|문단|나열|체크리스트|병렬|틀|정리|결론|arc|structure|paragraph|parallel|list|checklist|scaffold|outline|organi[sz]|symmetr|template|tidy|resol/iu], + ['lexical', /어휘|단어|표현|용어|상투|클리셰|vocab|word|phrase|lexic|cliche|jargon|buzz/iu], + ['specificity-absence', /구체|추상|일반|generic|abstract|vague|specific|detail|concrete/iu], +]; +const classifyCue = (cue) => CUE_RUBRIC.find(([, re]) => re.test(cue || ''))?.[0] ?? 'other'; + +const fmt = (v, d = 1) => (v === null || v === undefined || Number.isNaN(v) ? 'n/a' : Number(v).toFixed(d)); +const pct = (v) => (v === null || v === undefined ? 'n/a' : `${(v * 100).toFixed(1)}%`); +const fmtCI = (ci) => (ci ? `[${fmt(ci[0])}, ${fmt(ci[1])}]` : '[n/a]'); +const median = (xs) => { if (!xs.length) return null; const s = [...xs].sort((a, b) => a - b); return s[Math.floor((s.length - 1) / 2)]; }; + +function panelScore(judgeBlock, judges) { + const vals = judges.map((id) => judgeBlock?.[id]?.ai_likeness).filter(Number.isFinite); + return vals.length === judges.length && judges.length ? mean(vals) : null; +} + +function main() { + const rows = readJsonl(join(OUT_DIR, `s4-rows-${STAGE}.jsonl`)); + const s1 = new Map(readJsonl(join(S1_DIR, `s1-rows-${S1_ARM}.jsonl`)).map((r) => [r.original_sha, r])); + const judges = rows[0]?.judges_used ?? []; + const out = []; + out.push(`# Rewrite-efficacy Study 4 — ${STAGE} stage — analysis`); + out.push(''); + out.push(`- rows: ${rows.length}; judges: ${judges.join(', ')}; det binary ${rows[0]?.det_binary_allowed ? 'allowed' : 'disabled'}; template ${rows[0]?.template_sha} block ${rows[0]?.block_sha} retry ${rows[0]?.retry_sha}; model ${rows[0]?.rewriter_model}`); + const failed = rows.filter((r) => r.P?.error || r.S?.error); + if (failed.length) out.push(`- ⚠ fail-soft rows present (${failed.length}) — prune and resume before reading results`); + + for (const cls of ['ai', 'human']) { + const subset = rows.filter((r) => r.source_class === cls && r.P?.rewrite_sha && r.S?.rewrite_sha); + const d = []; const pS = []; const sS = []; let lost = 0; + const ratioP = []; const ratioS = []; const retP = []; const retS = []; const addP = []; const addS = []; const jacP = []; const jacS = []; + const detP = []; const detS = []; let floorMet = 0; let attemptsSum = 0; + let b = 0; let c = 0; let aiP = 0; let aiS = 0; let calls = 0; + const gptOnly = { s1: [], P: [], S: [] }; + for (const r of subset) { + const p = panelScore(r.P.judges, judges); const s = panelScore(r.S.judges, judges); + if (p === null || s === null) { lost += 1; continue; } + d.push(s - p); pS.push(p); sS.push(s); + ratioP.push(r.P.ratio); ratioS.push(r.S.ratio); + if (r.P.detail?.retention !== null) retP.push(r.P.detail.retention); + if (r.S.detail?.retention !== null) retS.push(r.S.detail.retention); + addP.push(r.P.detail?.added ?? 0); addS.push(r.S.detail?.added ?? 0); + jacP.push(r.P.trigram_jaccard); jacS.push(r.S.trigram_jaccard); + if (Number.isFinite(r.P.internal?.score) && Number.isFinite(r.S.internal?.score)) { detP.push(r.P.internal.score); detS.push(r.S.internal.score); } + if (r.S.floor_met) floorMet += 1; + attemptsSum += r.S.attempts?.length ?? 0; + for (const id of judges) { + const pa = r.P.judges?.[id]?.authorship; const sa = r.S.judges?.[id]?.authorship; + if (!pa || !sa) continue; + calls += 1; if (pa === 'ai') aiP += 1; if (sa === 'ai') aiS += 1; + if (pa === 'ai' && sa !== 'ai') b += 1; if (pa !== 'ai' && sa === 'ai') c += 1; + } + const base = s1.get(r.original_sha)?.judges?.rewrite?.['judge-gpt']?.ai_likeness; + const pg = r.P.judges?.['judge-gpt']?.ai_likeness; const sg = r.S.judges?.['judge-gpt']?.ai_likeness; + if (Number.isFinite(base) && Number.isFinite(pg) && Number.isFinite(sg)) { gptOnly.s1.push(base); gptOnly.P.push(pg); gptOnly.S.push(sg); } + } + const ci = bootstrapCI(d); + out.push('', `## ${cls} documents (n=${d.length}${lost ? `, judge-lost ${lost}` : ''})`, ''); + out.push(`- panel score P ${fmt(mean(pS))} → S ${fmt(mean(sS))}; paired d = S − P: **${fmt(mean(d))} ${fmtCI(ci)}**`); + if (cls === 'ai') { + const supported = ci && ci[1] < 0 && mean(d) <= -3; + out.push(`- **H-4b-a (primary): ${supported ? 'SUPPORTED' : 'NOT SUPPORTED'}** (needs mean d ≤ −3 AND CI upper < 0)`); + const mc = mcnemarExact(b, c); + out.push(`- H-4b-b AI-call rate (per judge call): P ${pct(calls ? aiP / calls : null)} → S ${pct(calls ? aiS / calls : null)}; discordant P-only-ai ${b} / S-only-ai ${c}; exact McNemar p = ${fmt(mc.p, 3)}`); + } else { + const harmed = ci && ci[0] > 0; + out.push(`- guard rail 2 (human over-editing): ${harmed ? '**VIOLATED** (CI excludes 0, positive)' : 'held'}`); + } + out.push(`- length ratio: P ${fmt(mean(ratioP), 3)} → S ${fmt(mean(ratioS), 3)}; H-4b-d floor met (S ≥ 0.98): ${floorMet}/${d.length} (${pct(d.length ? floorMet / d.length : null)}; target ≥ 80%); mean S attempts ${fmt(d.length ? attemptsSum / d.length : null, 2)}`); + out.push(`- H-4b-c detail retention: P ${pct(mean(retP))} → S ${pct(mean(retS))} (n with details ${retS.length}); added detail tokens/doc: P ${fmt(mean(addP), 2)} → S ${fmt(mean(addS), 2)} → guard rail 3 (S − P ≤ 1.0): ${mean(addS) - mean(addP) <= 1.0 ? 'held' : '**VIOLATED**'}`); + out.push(`- copy check (trigram Jaccard vs original, median): P ${fmt(median(jacP), 3)} / S ${fmt(median(jacS), 3)}${median(jacS) > 0.9 && !(median(jacP) > 0.9) ? ' — **S reads as "rewrote less"**' : ''}`); + if (detP.length) { const dd = detS.map((v, i) => v - detP[i]); out.push(`- det chief continuous: P ${fmt(mean(detP))} → S ${fmt(mean(detS))}; paired ${fmt(mean(dd))} ${fmtCI(bootstrapCI(dd))}`); } + if (gptOnly.s1.length) out.push(`- descriptive gpt-only: S1 rw1 ${fmt(mean(gptOnly.s1))} | P ${fmt(mean(gptOnly.P))} | S ${fmt(mean(gptOnly.S))} (n=${gptOnly.s1.length})`); + } + + const gated = rows.filter((r) => r.S?.rewrite_sha && r.S.gate_failed !== null && r.S.gate_failed !== undefined); + const pass = gated.filter((r) => r.S.gate_failed === false).length; + const expected = STAGE === 'ko' ? 54 : 42; + out.push('', '## guard rail 1 — deterministic meaning gate on S', ''); + out.push(`- pass ${pass}/${gated.length} (${pct(gated.length ? pass / gated.length : null)}) — pre-registered ≥ 95% → ${gated.length < expected ? 'incomplete run' : pass / gated.length >= 0.95 ? 'held' : '**VIOLATED**'}`); + for (const r of gated.filter((x) => x.S.gate_failed)) out.push(` - S gate fail — ${r.pair_id}: ${r.S.gate_reason}`); + const gatedP = rows.filter((r) => r.P?.rewrite_sha && r.P.gate_failed !== null); + out.push(`- (P for reference: ${gatedP.filter((r) => r.P.gate_failed === false).length}/${gatedP.length} pass)`); + + for (const arm of ['P', 'S']) { + const cues = rows.filter((r) => r.source_class === 'ai' && r[arm]?.judges) + .flatMap((r) => judges.map((id) => r[arm].judges[id])).filter((j) => j && j.authorship === 'ai' && j.strongest_cue); + const counts = {}; + for (const j of cues) { const k = classifyCue(j.strongest_cue); counts[k] = (counts[k] ?? 0) + 1; } + out.push('', `## cue mix — still-"ai" judgments on ${arm} (AI docs, n=${cues.length})`, '', `- ${JSON.stringify(counts)}; structural share ${pct(cues.length ? (counts.structure ?? 0) / cues.length : null)}`); + } + console.log(out.join('\n')); +} + +main(); diff --git a/scripts/research/rewrite-efficacy-study4-bridge.mjs b/scripts/research/rewrite-efficacy-study4-bridge.mjs new file mode 100644 index 00000000..f9cacf06 --- /dev/null +++ b/scripts/research/rewrite-efficacy-study4-bridge.mjs @@ -0,0 +1,98 @@ +// Study 4 judge bridge: gemini scores the 108 archived Study 1 Arm-D passages +// (54 originals + 54 S1 rewrites) with the Study 1 judge prompt, so the +// registered admission rule can be applied BEFORE any Study 4 row exists: +// admit iff AUC(gemini | 27 AI vs 27 human originals) >= 0.85 +// AND Spearman(gemini, gpt | 108) >= Spearman(grok, gpt | same 108) - 0.10 +// (docs/research/2026-rewrite-efficacy-prereg.md, "Study 4" > Judges). +// Bridge scores are not study data. Raw text is read from the ignored S1 store. + +import { appendFileSync, existsSync, mkdirSync, writeFileSync } from 'node:fs'; +import { join } from 'node:path'; + +import { + JUDGE_DEFS, OUT_DIR, S1_DIR, auc, judgeOnce, loadS1Texts, makeLogger, readJsonl, spearman, +} from './study4-common.mjs'; + +const ROWS = join(OUT_DIR, 'bridge-gemini.jsonl'); +const VERDICT = join(OUT_DIR, 'bridge-verdict.json'); +const LOG = join(OUT_DIR, 'bridge-run.log'); +const RULE = { min_auc: 0.85, spearman_slack: 0.10, reference: 'grok-vs-gpt on the same passages' }; + +function analyze(log) { + const rows = readJsonl(ROWS).filter((r) => r.gemini && Number.isFinite(r.gemini.ai_likeness)); + const originals = rows.filter((r) => r.cond === 'original'); + const pos = originals.filter((r) => r.source_class === 'ai').map((r) => r.gemini.ai_likeness); + const neg = originals.filter((r) => r.source_class === 'human').map((r) => r.gemini.ai_likeness); + const both = rows.filter((r) => Number.isFinite(r.gpt?.ai_likeness) && Number.isFinite(r.grok?.ai_likeness)); + const rhoGeminiGpt = spearman(both.map((r) => r.gemini.ai_likeness), both.map((r) => r.gpt.ai_likeness)); + const rhoGrokGpt = spearman(both.map((r) => r.grok.ai_likeness), both.map((r) => r.gpt.ai_likeness)); + const rhoGeminiGrok = spearman(both.map((r) => r.gemini.ai_likeness), both.map((r) => r.grok.ai_likeness)); + const aucGemini = auc(pos, neg); + const aucGpt = auc(originals.filter((r) => r.source_class === 'ai').map((r) => r.gpt?.ai_likeness).filter(Number.isFinite), originals.filter((r) => r.source_class === 'human').map((r) => r.gpt?.ai_likeness).filter(Number.isFinite)); + const aucGrok = auc(originals.filter((r) => r.source_class === 'ai').map((r) => r.grok?.ai_likeness).filter(Number.isFinite), originals.filter((r) => r.source_class === 'human').map((r) => r.grok?.ai_likeness).filter(Number.isFinite)); + const complete = rows.length; + const admitted = complete >= 100 && aucGemini !== null && rhoGeminiGpt !== null && rhoGrokGpt !== null + && aucGemini >= RULE.min_auc && rhoGeminiGpt >= rhoGrokGpt - RULE.spearman_slack; + const verdict = { + computed_at: new Date().toISOString(), + rule: RULE, + passages_scored: complete, + originals: originals.length, + n_ai: pos.length, + n_human: neg.length, + auc_gemini: aucGemini, + auc_gpt_reference: aucGpt, + auc_grok_reference: aucGrok, + n_paired: both.length, + spearman_gemini_gpt: rhoGeminiGpt, + spearman_grok_gpt: rhoGrokGpt, + spearman_gemini_grok: rhoGeminiGrok, + admitted, + judges: admitted ? ['judge-gpt', 'judge-gemini'] : ['judge-gpt'], + label: admitted ? 'panel-v2-deviation-gemini' : 'single-perceptual-judge', + }; + writeFileSync(VERDICT, JSON.stringify(verdict, null, 2) + '\n'); + log(`bridge verdict: scored ${complete}/108; AUC gemini ${fmt(aucGemini)} (gpt ${fmt(aucGpt)}, grok ${fmt(aucGrok)}); rho gemini-gpt ${fmt(rhoGeminiGpt)} vs grok-gpt ${fmt(rhoGrokGpt)} (gemini-grok ${fmt(rhoGeminiGrok)}); admitted=${admitted}`); + return verdict; +} + +const fmt = (v) => (v === null || v === undefined ? 'n/a' : v.toFixed(3)); + +async function main() { + mkdirSync(OUT_DIR, { recursive: true }); + if (!existsSync(LOG)) writeFileSync(LOG, ''); + const log = makeLogger(LOG); + if (process.argv.includes('--analyze')) { analyze(log); return; } + + const s1Rows = readJsonl(join(S1_DIR, 's1-rows-D.jsonl')); + const texts = loadS1Texts('D'); + const passages = []; + for (const r of s1Rows) { + const t = texts.get(r.original_sha); + if (!t?.original) { log(`WARN no stored original for ${r.original_sha}`); continue; } + passages.push({ key: `${r.original_sha}:original`, original_sha: r.original_sha, cond: 'original', source_class: r.source_class, text: t.original, archived: r.judges?.original ?? {} }); + if (r.rewrite_sha && t.rewritten) passages.push({ key: `${r.original_sha}:rewrite`, original_sha: r.original_sha, cond: 'rewrite', source_class: r.source_class, text: t.rewritten, archived: r.judges?.rewrite ?? {} }); + } + const done = new Set(readJsonl(ROWS).filter((r) => r.gemini && Number.isFinite(r.gemini.ai_likeness)).map((r) => r.key)); + log(`bridge start — ${passages.length} passages, ${done.size} already scored`); + let failures = 0; + for (const p of passages) { + if (done.has(p.key)) continue; + const gemini = await judgeOnce(JUDGE_DEFS['judge-gemini'], p.text, 'ko'); + if (gemini.error) { + failures += 1; + log(`${p.key}: gemini FAILED — ${gemini.error}`); + if (failures >= 5) { log('5 gemini failures — stopping (resumable)'); break; } + continue; + } + failures = 0; + appendFileSync(ROWS, JSON.stringify({ + key: p.key, original_sha: p.original_sha, cond: p.cond, source_class: p.source_class, + gemini, gpt: p.archived['judge-gpt'] ?? null, grok: p.archived['judge-grok'] ?? null, kimi: p.archived['judge-kimi'] ?? null, + }) + '\n'); + log(`${p.key} (${p.source_class}): gemini ${gemini.ai_likeness} | gpt ${p.archived['judge-gpt']?.ai_likeness ?? '?'} grok ${p.archived['judge-grok']?.ai_likeness ?? '?'}`); + } + analyze(log); +} + +main().catch((e) => { console.error(e); process.exit(1); }); diff --git a/scripts/research/rewrite-efficacy-study4-loop.sh b/scripts/research/rewrite-efficacy-study4-loop.sh new file mode 100755 index 00000000..314cab45 --- /dev/null +++ b/scripts/research/rewrite-efficacy-study4-loop.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# Study 4 supervisor: run the resumable runner until every corpus row is clean +# (both arms rewritten, every admitted judge parsed on both). Between passes, +# prune fail-soft rows so resume retries them; back off 30 min to ride out +# claude window exhaustion. Usage: S4_STAGE=ko|en scripts/research/rewrite-efficacy-study4-loop.sh +set -u +cd "$(dirname "$0")/../.." +STAGE="${S4_STAGE:-ko}" +EXPECTED="${S4_EXPECTED:-$([ "$STAGE" = "en" ] && echo 42 || echo 54)}" +ROWS="artifacts/rewrite-efficacy-study4/s4-rows-${STAGE}.jsonl" +LOG="artifacts/rewrite-efficacy-study4/s4-run-${STAGE}.log" +mkdir -p artifacts/rewrite-efficacy-study4 + +for pass in $(seq 1 48); do + echo "[loop] pass $pass" >> "$LOG" + S4_STAGE="$STAGE" node scripts/research/rewrite-efficacy-study4.mjs >> "artifacts/rewrite-efficacy-study4/s4-stdout-${STAGE}.log" 2>&1 + node -e ' + const fs = require("fs"); + const [p, expected] = [process.argv[1], Number(process.argv[2])]; + if (!fs.existsSync(p)) process.exit(0); + const rows = fs.readFileSync(p, "utf8").split("\n").filter(Boolean).map(JSON.parse); + const clean = (r) => !r.P?.error && !r.S?.error && r.P?.rewrite_sha && r.S?.rewrite_sha + && (r.judges_used || []).every((id) => Number.isFinite(r.P?.judges?.[id]?.ai_likeness) && Number.isFinite(r.S?.judges?.[id]?.ai_likeness)); + const good = rows.filter(clean); + if (good.length !== rows.length) { + fs.writeFileSync(p, good.map((r) => JSON.stringify(r)).join("\n") + (good.length ? "\n" : "")); + console.log(`[loop] pruned ${rows.length - good.length} fail-soft rows`); + } + process.exit(good.length >= expected ? 42 : 0); + ' "$ROWS" "$EXPECTED" >> "$LOG" 2>&1 + if [ $? -eq 42 ]; then echo "[loop] all $EXPECTED rows clean — done" >> "$LOG"; exit 0; fi + echo "[loop] incomplete after pass $pass — sleeping 30m before resume" >> "$LOG" + sleep 1800 +done +echo "[loop] gave up after 48 passes" >> "$LOG" +exit 1 diff --git a/scripts/research/rewrite-efficacy-study4.mjs b/scripts/research/rewrite-efficacy-study4.mjs new file mode 100644 index 00000000..272584f1 --- /dev/null +++ b/scripts/research/rewrite-efficacy-study4.mjs @@ -0,0 +1,331 @@ +// Rewrite-efficacy Study 4 runner — specificity-preservation constraint (H-4b). +// Registered design: docs/research/2026-rewrite-efficacy-prereg.md ("Study 4"). +// +// Per document (same Study 1 corpus, by stored original text) two fresh arms +// run back-to-back with the same pinned rewriter: +// P the production minimal-mode prompt exactly as `patina --lang +// --backend claude-cli` builds it today; no retry. +// S the same prompt with the fixed constraint block spliced in before the +// output-format section; if the body is < 98% of the original length the +// model is re-prompted with a fixed feedback suffix, at most two retries. +// Both bodies pass the production extractor, the deterministic meaning gate, +// the det chief scorer, the pre-registered detail-token / copy measures and +// the admitted LLM judges. Rows carry hashes, scores and metadata; texts stay +// in the ignored private store. +// +// `buildDocumentSignals` is a private function in src/cli/run.js; its ten +// lines are replicated here verbatim (documentSignals()). +// +// Env: S4_STAGE=ko|en (default ko), S4_LIMIT=, S4_JUDGES=judge-gpt,judge-gemini +// (override; default comes from bridge-verdict.json), S4_USE_GROK=1. + +import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { join } from 'node:path'; + +import { loadConfig, getRepoRoot, resolveRegister } from '../../src/config.js'; +import { loadPatterns, applyDocumentTypePatternPolicy, loadDocumentType, loadCoreFile } from '../../src/loader.js'; +import { buildPrompt } from '../../src/prompt-builder.js'; +import { resolvePromptMode, resolveDocumentTypeForLanguage } from '../../src/cli/run.js'; +import { cleanRewriteOutput } from '../../src/output.js'; +import { deterministicMeaningGuard } from '../../src/verify.js'; +import { detectKoreanRegister } from '../../src/features/stylometry.js'; +import { scoreText } from '../prose-score.mjs'; +import { DET_DOCUMENT_THRESHOLD, validateFreshCorpus } from './panel-v2.mjs'; +import { + JUDGE_DEFS, OUT_DIR, REWRITER_MODEL, S1_DIR, claudeCall, collapse, detailStats, judgeOnce, + lengthRatio, loadS1Texts, makeLogger, readJsonl, sha, trigramJaccard, +} from './study4-common.mjs'; + +const STAGE = process.env.S4_STAGE === 'en' ? 'en' : 'ko'; +const S1_ARM = STAGE === 'ko' ? 'D' : 'A1'; +// Plumbing smoke test on a synthetic paragraph (never a corpus document): +// S4_SMOKE_TEXT_FILE= routes output to s4-smoke-* files. +const SMOKE_FILE = process.env.S4_SMOKE_TEXT_FILE || null; +const PREFIX = SMOKE_FILE ? 's4-smoke' : 's4'; +const OUT_JSONL = join(OUT_DIR, `${PREFIX}-rows-${STAGE}.jsonl`); +const TEXTS_JSONL = join(OUT_DIR, `${PREFIX}-texts-${STAGE}.private.jsonl`); +const LOG = join(OUT_DIR, `${PREFIX}-run-${STAGE}.log`); +const VERDICT = join(OUT_DIR, 'bridge-verdict.json'); + +const REWRITE_TIMEOUT_MS = 600_000; // S1 top-up precedent +const FLOOR = 0.98; +const MAX_ATTEMPTS = 3; // one first pass + two retries + +// --------------------------------------------------------------------------- +// FIXED TEXTS — registered verbatim in the prereg; stamped by sha in every row. +// Do not edit after the first real row exists. + +const BLOCK = { + ko: `## 구체성 보존 (필수 — 위의 "±30%" 분량 규칙보다 우선한다) + +1. 길이 하한: 다듬은 본문의 글자 수는 원문의 98% 이상이어야 한다. 군더더기를 걷어낸 자리는 요약이 아니라 같은 무게의 구체적인 표현으로 다시 채운다. +2. 원문에 있는 구체적 세부는 하나도 빠뜨리지 않는다: 숫자·날짜·단위·비율, 사람·기관·제품·기능·장소 이름, 인용구, 예시와 일화, 비유에 등장하는 대상. 여러 항목을 "등"이나 일반 명사로 뭉뚱그리지 않는다. +3. 원문에 없는 사실·숫자·이름·예시를 새로 만들어 넣지 않는다. 길이를 채우려고 지어내는 것은 금지다. +4. 다 쓰고 나서 원문과 나란히 대조해, 빠진 세부가 있으면 원래 자리에 되살린 뒤에 출력한다. +`, + en: `## Preserve specificity (REQUIRED — overrides the "±30%" length rule above) + +1. Length floor: the rewritten body must be at least 98% of the original's character count. Where you cut filler, refill the space with concrete phrasing of the same weight, not with a summary. +2. Keep every concrete detail the original contains: numbers, dates, units, percentages; names of people, organisations, products, features and places; quotations; examples and anecdotes; the objects inside analogies. Never collapse several items into "etc." or a generic noun. +3. Do not invent facts, numbers, names or examples that are not in the original. Padding with invented material is forbidden. +4. When you finish, compare the result against the original side by side; restore any missing detail in its original place before you output. +`, +}; + +const RETRY = { + ko: `## 재시도 사유 + +직전 출력은 원문 길이의 {ratio}%였다. 위 "구체성 보존" 규칙 1의 98% 하한을 지키지 못했다. 빠뜨린 구체적 세부를 되살리고 군더더기 자리를 같은 무게의 표현으로 채워, 원문 길이의 98% 이상으로 다시 출력하라. 새 사실을 지어내지 마라. +`, + en: `## Reason for retry + +Your previous output was {ratio}% of the original's length, below the 98% floor in rule 1 of "Preserve specificity" above. Restore the concrete details you dropped and refill cut filler with phrasing of the same weight, then output again at 98% or more of the original length. Do not invent new facts. +`, +}; + +const FORMAT_MARKER = { ko: '## 출력 형식\n\n', en: '## Output format\n\n' }; +const OUTPUT_MARKER = { ko: '## 출력\n\n', en: '## Output\n\n' }; + +// --------------------------------------------------------------------------- +// Production prompt assembly (mirrors src/cli/run.js runDefault for a plain +// `patina --lang --backend claude-cli` rewrite: default document type, no +// persona, no register, measured document signals, jargon keep, headings kept). + +function documentSignals({ text, lang }) { + if (lang !== 'ko') return { signals: [], register: null }; + const register = detectKoreanRegister(text); + if (!register) return { signals: [], register: null }; + const pct = (value) => `${Math.round(value * 100)}%`; + const distribution = `합쇼체 ${pct(register.shares.formal)} · 해요체 ${pct(register.shares.polite)} · -다체 ${pct(register.shares.plain)} (문장 ${register.classified}개 기준)`; + const signals = register.register === 'mixed' + ? [`어미 분포: ${distribution} — 지배 어투 없음(혼합). 문서 성격에 맞는 어투 하나를 골라 전체를 통일할 것`] + : [`지배 어투: ${register.label} — ${distribution}. 재작성 문장 전체를 이 어투로 통일할 것`]; + return { signals, register }; +} + +function loadAssets(lang) { + const config = loadConfig(); + config.language = lang; + const repoRoot = getRepoRoot(); + const registerResolution = resolveRegister({ cliRegister: undefined, configRegister: config.register }); + let documentTypeName = config.documentType || 'default'; + const resolvedName = resolveDocumentTypeForLanguage(documentTypeName, lang, null); + if (resolvedName !== documentTypeName) { documentTypeName = resolvedName; config.documentType = 'default'; } + const documentType = loadDocumentType(repoRoot, documentTypeName); + const patterns = applyDocumentTypePatternPolicy(loadPatterns(repoRoot, lang, config['skip-patterns'] || []), documentType, lang); + const voice = loadCoreFile(repoRoot, 'voice.md'); + const scoring = loadCoreFile(repoRoot, 'scoring.md'); + const promptMode = resolvePromptMode({ backend: 'claude-cli', model: REWRITER_MODEL }); + return { config, patterns, documentType, voice, scoring, promptMode, registerResolution, repoRoot }; +} + +function productionPrompt(text, assets, lang) { + return buildPrompt({ + config: assets.config, + patterns: assets.patterns, + documentType: assets.documentType, + voice: assets.voice.body ? assets.voice : null, + scoring: assets.scoring.body ? assets.scoring : null, + text, + mode: 'rewrite', + register: assets.registerResolution, + promptMode: assets.promptMode, + documentSignals: documentSignals({ text, lang }).signals, + jargon: 'keep', + rewriteHeadings: false, + persona: null, + }); +} + +function spliceOnce(prompt, marker, insert) { + const first = prompt.indexOf(marker); + if (first < 0 || prompt.indexOf(marker, first + 1) >= 0) throw new Error(`marker not unique: ${JSON.stringify(marker)}`); + return prompt.slice(0, first) + insert + prompt.slice(first); +} + +function specificityPrompt(base, lang) { + return spliceOnce(base, FORMAT_MARKER[lang], `${BLOCK[lang]}\n`); +} + +function retryPrompt(sPrompt, ratio, lang) { + const suffix = RETRY[lang].replace('{ratio}', String(Math.round(ratio * 100))); + const last = sPrompt.lastIndexOf(OUTPUT_MARKER[lang]); + if (last < 0) throw new Error('output marker missing'); + return sPrompt.slice(0, last) + `${suffix}\n` + sPrompt.slice(last); +} + +const SILENT = { warn() {}, info() {}, error() {}, debug() {}, log() {} }; + +function extractBody(raw) { + const body = cleanRewriteOutput(raw, { logger: SILENT }); + return typeof body === 'string' ? body.trim() : ''; +} + +// --------------------------------------------------------------------------- +// Measures. + +function internalScore(text, lang) { + try { + const r = scoreText(text, { lang, repoRoot: getRepoRoot() }); + return { signal_score: r.signalScore ?? null, score: r.score ?? null, pattern_hits: r.patternHits ?? null, det_verdict: Number.isFinite(r.score) ? (r.score >= DET_DOCUMENT_THRESHOLD ? 'ai' : 'human') : null }; + } catch (e) { + return { error: String(e?.message ?? e).slice(0, 200) }; + } +} + +function measure(original, body, lang) { + const warnings = body ? deterministicMeaningGuard(original, body) : []; + return { + chars: body ? body.length : null, + ratio: body ? round(lengthRatio(original, body), 4) : null, + gate_failed: body ? warnings.length > 0 : null, + gate_reason: warnings.length ? warnings.join(' | ').slice(0, 200) : null, + internal: body ? internalScore(body, lang) : null, + detail: body ? detailStats(original, body) : null, + trigram_jaccard: body ? round(trigramJaccard(original, body), 4) : null, + }; +} + +const round = (v, d = 4) => (Number.isFinite(v) ? Number(v.toFixed(d)) : v); + +async function judgeAll(judges, text, lang) { + const out = {}; + for (const id of judges) out[id] = await judgeOnce(JUDGE_DEFS[id], text, lang); + return out; +} + +function resolveJudges(log) { + if (process.env.S4_JUDGES) return process.env.S4_JUDGES.split(',').map((s) => s.trim()).filter(Boolean); + if (process.env.S4_USE_GROK === '1') return ['judge-gpt', 'judge-grok']; + if (!existsSync(VERDICT)) throw new Error('bridge-verdict.json missing — run rewrite-efficacy-study4-bridge.mjs first (registered admission rule)'); + const verdict = JSON.parse(readFileSync(VERDICT, 'utf8')); + log(`bridge verdict ${verdict.label}: judges ${verdict.judges.join(', ')} (AUC gemini ${verdict.auc_gemini?.toFixed?.(3)}, rho gemini-gpt ${verdict.spearman_gemini_gpt?.toFixed?.(3)} vs grok-gpt ${verdict.spearman_grok_gpt?.toFixed?.(3)})`); + return verdict.judges; +} + +// --------------------------------------------------------------------------- + +async function main() { + mkdirSync(OUT_DIR, { recursive: true }); + if (!existsSync(LOG)) writeFileSync(LOG, ''); + const log = makeLogger(LOG); + const lang = STAGE; + const assets = loadAssets(lang); + const templateSha = sha(productionPrompt('PROBE', assets, lang)); + const blockSha = sha(BLOCK[lang]); + const retrySha = sha(RETRY[lang]); + const judges = resolveJudges(log); + for (const id of judges) if (!JUDGE_DEFS[id]) throw new Error(`unknown judge ${id}`); + + let s1Rows = readJsonl(join(S1_DIR, `s1-rows-${S1_ARM}.jsonl`)).filter((r) => r.original_sha); + let texts = loadS1Texts(S1_ARM); + if (SMOKE_FILE) { + const smokeText = readFileSync(SMOKE_FILE, 'utf8').trim(); + const smokeSha = sha(smokeText); + s1Rows = [{ original_sha: smokeSha, source_class: 'ai', pair_id: 'smoke', model_family: 'synthetic', register: 'smoke' }]; + texts = new Map([[smokeSha, { original: smokeText }]]); + log(`SMOKE MODE — synthetic paragraph ${smokeSha}; outputs go to ${PREFIX}-* files and are not study data`); + } + const limit = Number(process.env.S4_LIMIT) > 0 ? Number(process.env.S4_LIMIT) : Infinity; + log(`study4 start — stage ${STAGE} (S1 arm ${S1_ARM}); template ${templateSha} block ${blockSha} retry ${retrySha}; prompt mode ${assets.promptMode}; model ${REWRITER_MODEL}; judges ${judges.join(',')}; ${s1Rows.length} rows; limit ${limit === Infinity ? 'none' : limit}`); + + // Panel v2 fresh-corpus gate on det scores recomputed NOW over the corpus originals. + const detRows = []; + for (const r of s1Rows) { + const t = texts.get(r.original_sha); + if (!t?.original) continue; + const s = internalScore(t.original, lang); + if (Number.isFinite(s.score)) detRows.push({ label: r.source_class, score: s.score }); + } + const fresh = validateFreshCorpus(detRows); + const detBinaryAllowed = fresh.binaryVerdictsAllowed; + log(`det fresh-corpus gate: accuracy ${fresh.accuracy.toFixed(3)} (${fresh.correct}/${fresh.total}) at threshold ${fresh.threshold} — binary det verdicts ${detBinaryAllowed ? 'ALLOWED' : 'DISABLED (continuous only)'}`); + + const done = new Set(readJsonl(OUT_JSONL).map((r) => r.original_sha)); + let processed = 0; + let consecutiveFailures = 0; + + for (const [idx, s1] of s1Rows.entries()) { + if (done.has(s1.original_sha)) continue; + if (processed >= limit) { log(`limit ${limit} reached — stopping (resumable)`); break; } + const stored = texts.get(s1.original_sha); + if (!stored?.original) { log(`WARN no stored original for ${s1.original_sha}`); continue; } + if (consecutiveFailures >= 3) { log('3 consecutive rewrite failures — circuit breaker OPEN, stopping (prune failed rows, then resume)'); break; } + const label = `S4-${STAGE}/${s1.source_class}/${idx + 1}`; + processed += 1; + const original = stored.original; + const basePrompt = productionPrompt(original, assets, lang); + const sPrompt = specificityPrompt(basePrompt, lang); + + // Arm P — plain production prompt, single attempt. + log(`${label}: P rewrite (${original.length} chars)…`); + const pRes = await claudeCall(basePrompt, { timeout: REWRITE_TIMEOUT_MS }); + const pBody = pRes.text ? extractBody(pRes.text) : ''; + const pError = pRes.error || (pBody ? null : 'empty body'); + if (pError) log(`${label}: P FAILED — ${pError}`); + + // Arm S — constraint block + enforced floor with capped feedback retries. + const attempts = []; + let sBody = ''; + let sError = null; + let prompt = sPrompt; + for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt += 1) { + log(`${label}: S rewrite attempt ${attempt}…`); + const res = await claudeCall(prompt, { timeout: REWRITE_TIMEOUT_MS }); + const body = res.text ? extractBody(res.text) : ''; + if (res.error || !body) { sError = res.error || 'empty body'; log(`${label}: S attempt ${attempt} FAILED — ${sError}`); break; } + sError = null; + sBody = body; + const ratio = lengthRatio(original, body); + attempts.push({ attempt, chars: body.length, ratio: round(ratio, 4), rewrite_sha: sha(body) }); + if (ratio >= FLOOR) break; + if (attempt < MAX_ATTEMPTS) prompt = retryPrompt(sPrompt, ratio, lang); + } + if (!sBody && !sError) sError = 'no attempt produced a body'; + const failed = Boolean(pError || sError); + consecutiveFailures = failed ? consecutiveFailures + 1 : 0; + + const pMeasure = pBody ? measure(original, pBody, lang) : null; + const sMeasure = sBody ? measure(original, sBody, lang) : null; + if (pMeasure?.gate_failed) log(`${label}: P MEANING GATE FAILED — ${pMeasure.gate_reason}`); + if (sMeasure?.gate_failed) log(`${label}: S MEANING GATE FAILED — ${sMeasure.gate_reason}`); + + let pJudges = null; + let sJudges = null; + if (pBody) { log(`${label}: judging P…`); pJudges = await judgeAll(judges, pBody, lang); } + if (sBody) { log(`${label}: judging S…`); sJudges = await judgeAll(judges, sBody, lang); } + + const row = { + arm: 'S4', + stage: STAGE, + s1_arm: S1_ARM, + template_sha: templateSha, + block_sha: blockSha, + retry_sha: retrySha, + rewriter_model: REWRITER_MODEL, + prompt_mode: assets.promptMode, + judges_used: judges, + det_binary_allowed: detBinaryAllowed, + source_class: s1.source_class, + pair_id: s1.pair_id, + model_family: s1.model_family, + register: s1.register, + original_sha: s1.original_sha, + original_chars: original.length, + original_detail_count: detailStats(original, '').orig_count, + P: { rewrite_sha: pBody ? sha(pBody) : null, error: pError, ...(pMeasure ?? {}), judges: pJudges }, + S: { rewrite_sha: sBody ? sha(sBody) : null, error: sError, attempts, floor_met: attempts.length ? attempts.at(-1).ratio >= FLOOR : null, ...(sMeasure ?? {}), judges: sJudges }, + collapsed_original_chars: collapse(original).length, + }; + appendFileSync(OUT_JSONL, JSON.stringify(row) + '\n'); + appendFileSync(TEXTS_JSONL, JSON.stringify({ + original_sha: s1.original_sha, source_class: s1.source_class, original, + P: pBody || null, S: sBody || null, S_attempts: attempts.map((a) => a.rewrite_sha), + }) + '\n'); + const jl = (j) => judges.map((id) => `${id.replace('judge-', '')} ${j?.[id]?.ai_likeness ?? '?'}`).join(' '); + log(`${label}: done — P ratio ${pMeasure?.ratio ?? '?'} [${jl(pJudges)}] | S ratio ${sMeasure?.ratio ?? '?'} attempts ${attempts.length} floor ${row.S.floor_met} [${jl(sJudges)}]`); + } + log('study4 runner pass complete'); +} + +main().catch((e) => { console.error(e?.stack ?? e); process.exit(1); }); diff --git a/scripts/research/study4-common.mjs b/scripts/research/study4-common.mjs new file mode 100644 index 00000000..4215357f --- /dev/null +++ b/scripts/research/study4-common.mjs @@ -0,0 +1,258 @@ +// Shared plumbing for rewrite-efficacy Study 4 (docs/research/2026-rewrite-efficacy-prereg.md, +// "Study 4" section). Judge prompt/parse are byte-identical to the Study 1/2/3 +// runners; process spawning and the claude call mirror the Study 3 harness. + +import { spawn } from 'node:child_process'; +import { createHash } from 'node:crypto'; +import { appendFileSync, existsSync, mkdtempSync, readFileSync, readdirSync, rmSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +export const ROOT = join(dirname(fileURLToPath(import.meta.url)), '..', '..'); +export const S1_DIR = join(ROOT, 'artifacts', 'rewrite-efficacy-study1'); +export const OUT_DIR = join(ROOT, 'artifacts', 'rewrite-efficacy-study4'); +export const REWRITER_MODEL = 'claude-sonnet-4-6'; +export const NO_MCP_SERVERS = '__patina_no_mcp__'; // src/backends/gemini-cli.js +export const JUDGE_TIMEOUT_MS = 180_000; +export const JUDGE_ATTEMPTS = 3; + +export const JUDGE_DEFS = Object.freeze({ + 'judge-gpt': { id: 'judge-gpt', family: 'gpt', cmd: 'codex', args: ['exec', '--skip-git-repo-check', '--sandbox', 'read-only'] }, + 'judge-gemini': { id: 'judge-gemini', family: 'gemini', cmd: 'gemini', args: ['-p', '', '--output-format', 'text', '--skip-trust', '--allowed-mcp-server-names', NO_MCP_SERVERS, '-m', 'gemini-2.5-pro'] }, + 'judge-grok': { id: 'judge-grok', family: 'xai', cmd: 'node', args: [join('scripts', 'research', 'xai-cli.mjs')] }, +}); + +export const sha = (s) => createHash('sha256').update(s, 'utf8').digest('hex').slice(0, 16); + +export function makeLogger(path) { + return (m) => { + const line = `[${new Date().toISOString()}] ${m}`; + console.log(line); + appendFileSync(path, line + '\n'); + }; +} + +export function run(cmd, args, { input = '', timeout = 120_000, cwd = ROOT } = {}) { + return new Promise((resolve) => { + const child = spawn(cmd, args, { cwd, stdio: ['pipe', 'pipe', 'pipe'], detached: true }); + let stdout = ''; + let stderr = ''; + let settled = false; + const finish = (v) => { if (!settled) { settled = true; clearTimeout(timer); resolve(v); } }; + const timer = setTimeout(() => { + try { process.kill(-child.pid, 'SIGKILL'); } catch { try { child.kill('SIGKILL'); } catch { /* noop */ } } + finish({ ok: false, stdout, stderr, error: `timeout after ${timeout}ms` }); + }, timeout); + child.stdout.on('data', (d) => { stdout += d; }); + child.stderr.on('data', (d) => { stderr += d; }); + child.on('error', (e) => finish({ ok: false, stdout, stderr, error: String(e?.message ?? e) })); + child.on('close', (code) => finish({ ok: code === 0, code, stdout, stderr })); + if (input) child.stdin.write(input); + child.stdin.end(); + }); +} + +/** claude -p in a fresh temp cwd (same containment as patina's claude-cli backend). */ +export async function claudeCall(prompt, { timeout, model = REWRITER_MODEL } = {}) { + const dir = mkdtempSync(join(tmpdir(), 'patina-s4-claude-')); + try { + const res = await run('claude', ['-p', '--model', model], { input: prompt, timeout, cwd: dir }); + if (!res.ok) return { text: null, error: res.error || res.stderr.slice(0, 300) || `exit ${res.code}` }; + let out = String(res.stdout).trim(); + const fence = out.match(/^```[a-z]*\n([\s\S]*)\n```$/); + if (fence) out = fence[1].trim(); + if (!out) return { text: null, error: 'empty output' }; + return { text: out, error: null }; + } finally { + try { rmSync(dir, { recursive: true, force: true }); } catch { /* noop */ } + } +} + +// Judge prompt — byte-identical to the Study 1 runner (lang line included). +export function judgePrompt(text, lang) { + return [ + 'You are evaluating a single passage of writing. You do not know its origin.', + '', + 'Answer BOTH questions independently. Do not let one answer drive the other.', + '', + 'Q1 (authorship): Was this passage most likely written by a human, or generated by an AI language model?', + 'Q2 (AI-likeness): On a 0-100 scale, how AI-like does the PROSE read?', + ' 0 = reads unmistakably like an individual human wrote it', + ' 100 = reads unmistakably like generic AI output', + ' Judge the writing itself (rhythm, word choice, structure, specificity), not the topic.', + '', + 'Then name the single strongest cue that drove your judgement.', + '', + `The passage is in ${lang === 'ko' ? 'Korean' : 'English'}.`, + '', + 'Respond with ONLY a JSON object, no code fence, no prose:', + '{"authorship":"human"|"ai","ai_likeness":<0-100 integer>,"strongest_cue":""}', + '', + '--- PASSAGE START ---', + text, + '--- PASSAGE END ---', + ].join('\n'); +} + +const SCORE_KEYS = ['ai_likeness', 'ai_status', 'ai_score', 'score', 'aiLikeness']; + +export function parseJudge(raw) { + if (!raw) return null; + const matches = String(raw).match(/\{[^{}]*"authorship"[^{}]*\}/g); + if (!matches) return null; + for (const candidate of [...matches].reverse()) { + try { + const o = JSON.parse(candidate); + const authorship = String(o.authorship || '').toLowerCase(); + if (authorship !== 'human' && authorship !== 'ai') continue; + const key = SCORE_KEYS.find((k) => Number.isFinite(Number(o[k]))); + if (!key) continue; + return { + authorship, + ai_likeness: Math.max(0, Math.min(100, Math.round(Number(o[key])))), + strongest_cue: String(o.strongest_cue || '').slice(0, 200), + score_key: key === 'ai_likeness' ? undefined : key, + }; + } catch { /* next */ } + } + return null; +} + +export async function judgeOnce(judge, text, lang) { + const attempts = []; + let lastOut = ''; + let lastErr = ''; + for (let attempt = 1; attempt <= JUDGE_ATTEMPTS; attempt += 1) { + const res = await run(judge.cmd, judge.args, { input: judgePrompt(text, lang), timeout: JUDGE_TIMEOUT_MS }); + const parsed = parseJudge(res.stdout); + if (parsed) return attempt === 1 ? parsed : { ...parsed, retried: true }; + attempts.push(res.error || 'unparseable'); + lastOut = String(res.stdout); + lastErr = String(res.stderr); + } + return { error: attempts.join(' | '), raw_head: (lastOut || lastErr).slice(-240), retries_exhausted: true }; +} + +export function readJsonl(path) { + if (!existsSync(path)) return []; + return readFileSync(path, 'utf8').split('\n').filter((l) => l.trim()) + .map((l) => { try { return JSON.parse(l); } catch { return null; } }).filter(Boolean); +} + +/** S1 text store for one arm, TOPUP-deduped by original_sha (last write wins). */ +export function loadS1Texts(arm) { + const byKey = new Map(); + for (const f of readdirSync(S1_DIR).filter((x) => /^s1-texts(-.*)?\.private\.jsonl$/.test(x))) { + for (const t of readJsonl(join(S1_DIR, f))) if (t.arm === arm) byKey.set(t.original_sha, t); + } + return byKey; +} + +// --------------------------------------------------------------------------- +// Pre-registered deterministic measures. + +export function collapse(text) { + return String(text ?? '').normalize('NFC').replace(/\s+/gu, ' ').trim(); +} + +const NUMBER_RE = /\d[\d,.]*(?:\s?(?:%|[A-Za-z]{1,4}|[가-힣]{1,2}))?/gu; +const LATIN_RE = /[A-Za-z][A-Za-z0-9+._-]+/gu; +const QUOTE_RE = /[“"‘'「『]([^”"’'」』\n]{2,60})[”"’'」』]/gu; + +export function detailTokens(text) { + const t = collapse(text); + const set = new Set(); + for (const m of t.matchAll(NUMBER_RE)) set.add(`n:${m[0].replace(/,/gu, '').replace(/\s+/gu, '')}`); + for (const m of t.matchAll(LATIN_RE)) set.add(`l:${m[0].toLowerCase()}`); + for (const m of t.matchAll(QUOTE_RE)) set.add(`q:${m[1].trim()}`); + return set; +} + +export function detailStats(original, rewrite) { + const o = detailTokens(original); + const r = detailTokens(rewrite); + let retained = 0; + for (const tok of o) if (r.has(tok)) retained += 1; + let added = 0; + for (const tok of r) if (!o.has(tok)) added += 1; + return { orig_count: o.size, retained, retention: o.size ? retained / o.size : null, added }; +} + +export function trigramJaccard(a, b) { + const grams = (s) => { const t = collapse(s); const g = new Set(); for (let i = 0; i + 3 <= t.length; i++) g.add(t.slice(i, i + 3)); return g; }; + const A = grams(a); const B = grams(b); + if (!A.size && !B.size) return 1; + let inter = 0; + for (const g of A) if (B.has(g)) inter += 1; + return inter / (A.size + B.size - inter); +} + +export function lengthRatio(original, rewrite) { + const o = collapse(original).length; + return o ? collapse(rewrite).length / o : null; +} + +// --------------------------------------------------------------------------- +// Statistics. + +export const mean = (xs) => (xs.length ? xs.reduce((a, b) => a + b, 0) / xs.length : null); + +export function lcg(seed = 20260902) { + let s = seed >>> 0; + return () => { s = (1664525 * s + 1013904223) >>> 0; return s / 4294967296; }; +} + +export function bootstrapCI(values, stat = mean, { iters = 5000, seed = 20260902 } = {}) { + if (values.length < 2) return null; + const rnd = lcg(seed); + const stats = []; + for (let i = 0; i < iters; i++) { + const sample = values.map(() => values[Math.floor(rnd() * values.length)]); + stats.push(stat(sample)); + } + stats.sort((a, b) => a - b); + return [stats[Math.floor(0.025 * iters)], stats[Math.ceil(0.975 * iters) - 1]]; +} + +function ranks(xs) { + const idx = xs.map((v, i) => [v, i]).sort((a, b) => a[0] - b[0]); + const r = new Array(xs.length); + let i = 0; + while (i < idx.length) { + let j = i; + while (j + 1 < idx.length && idx[j + 1][0] === idx[i][0]) j++; + const avg = (i + j) / 2 + 1; + for (let k = i; k <= j; k++) r[idx[k][1]] = avg; + i = j + 1; + } + return r; +} + +export function spearman(xs, ys) { + if (xs.length !== ys.length || xs.length < 3) return null; + const rx = ranks(xs); const ry = ranks(ys); + const mx = mean(rx); const my = mean(ry); + let num = 0; let dx = 0; let dy = 0; + for (let i = 0; i < rx.length; i++) { num += (rx[i] - mx) * (ry[i] - my); dx += (rx[i] - mx) ** 2; dy += (ry[i] - my) ** 2; } + return dx && dy ? num / Math.sqrt(dx * dy) : null; +} + +/** AUC = P(score(pos) > score(neg)) with ties counted 0.5. */ +export function auc(pos, neg) { + if (!pos.length || !neg.length) return null; + let s = 0; + for (const p of pos) for (const n of neg) s += p > n ? 1 : p === n ? 0.5 : 0; + return s / (pos.length * neg.length); +} + +/** Exact McNemar (binomial) on discordant pairs: b = P-only "ai", c = S-only "ai". */ +export function mcnemarExact(b, c) { + const n = b + c; + if (n === 0) return { b, c, p: 1 }; + const k = Math.min(b, c); + let p = 0; + const logChoose = (n, k) => { let s = 0; for (let i = 1; i <= k; i++) s += Math.log(n - k + i) - Math.log(i); return s; }; + for (let i = 0; i <= k; i++) p += Math.exp(logChoose(n, i) - n * Math.log(2)); + return { b, c, p: Math.min(1, 2 * p) }; +} From 6ecf8a935ff03812cc5ead9002c30e9adbab9663 Mon Sep 17 00:00:00 2001 From: devswha Date: Wed, 2 Sep 2026 17:51:50 +0900 Subject: [PATCH 03/10] =?UTF-8?q?research(study4):=20dated=20note=20?= =?UTF-8?q?=E2=80=94=20gemini=20failed=20the=20bridge=20admission=20rule;?= =?UTF-8?q?=20stage=201=20runs=20single-perceptual-judge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_018ePnwo4nBWCWvFvpy1YgCN --- docs/research/2026-rewrite-efficacy-prereg.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/research/2026-rewrite-efficacy-prereg.md b/docs/research/2026-rewrite-efficacy-prereg.md index 2f5fcaee..55e50c19 100644 --- a/docs/research/2026-rewrite-efficacy-prereg.md +++ b/docs/research/2026-rewrite-efficacy-prereg.md @@ -643,6 +643,10 @@ only. No Study 4 corpus row, rewrite, or judgment exists at registration time. +### Study 4 — dated note 2026-09-02 (before the first row): gemini failed admission, running single-perceptual-judge + +The registered bridge ran on the 108 archived S1-D passages (`artifacts/rewrite-efficacy-study4/bridge-verdict.json`): gemini-2.5-pro AUC on the 54 originals **0.556** (gpt 0.995, grok 0.967); Spearman(gemini, gpt) **0.137** vs Spearman(grok, gpt) 0.857 on the same passages. Both admission conditions fail, so per the registered fallback stage 1 runs with **judge-gpt + judge-det only** and the results doc is labelled *single-perceptual-judge*. xAI credit was not restored before launch. If it is restored later, grok may score the stored P/S bodies as a post-hoc corroboration column, labelled as collected after the run; it cannot enter the primary metric. + ## Sources - Self-Preference Bias in LLM-as-a-Judge — arXiv:2410.21819 - TH-Bench (humanizing attacks vs detectors) — arXiv:2503.08708 From ed7be16a856948b199f819959c3c49b558557d09 Mon Sep 17 00:00:00 2001 From: devswha Date: Wed, 2 Sep 2026 18:02:00 +0900 Subject: [PATCH 04/10] =?UTF-8?q?research(study4):=20amendment=20=E2=80=94?= =?UTF-8?q?=20bridge=20four=20API=20judge=20candidates=20under=20the=20reg?= =?UTF-8?q?istered=20admission=20rule?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_018ePnwo4nBWCWvFvpy1YgCN --- docs/research/2026-rewrite-efficacy-prereg.md | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/research/2026-rewrite-efficacy-prereg.md b/docs/research/2026-rewrite-efficacy-prereg.md index 55e50c19..f0c6ecef 100644 --- a/docs/research/2026-rewrite-efficacy-prereg.md +++ b/docs/research/2026-rewrite-efficacy-prereg.md @@ -647,6 +647,29 @@ No Study 4 corpus row, rewrite, or judgment exists at registration time. The registered bridge ran on the 108 archived S1-D passages (`artifacts/rewrite-efficacy-study4/bridge-verdict.json`): gemini-2.5-pro AUC on the 54 originals **0.556** (gpt 0.995, grok 0.967); Spearman(gemini, gpt) **0.137** vs Spearman(grok, gpt) 0.857 on the same passages. Both admission conditions fail, so per the registered fallback stage 1 runs with **judge-gpt + judge-det only** and the results doc is labelled *single-perceptual-judge*. xAI credit was not restored before launch. If it is restored later, grok may score the stored P/S bodies as a post-hoc corroboration column, labelled as collected after the run; it cannot enter the primary metric. +### Study 4 — amendment 2026-09-02 (recorded before any Study 4 judge outcome was read): second-judge candidates without xAI credit + +The owner asked for a second perceptual judge that does not need xAI credit. +Recorded before the bridges run and before this session has read any Study 4 +per-document judge score (the run log is filtered to loop-level lines): + +- Candidates, all cross-family for claude rewrites, reached through the + OpenAI-compatible API endpoints patina's providers already use: + `gemini-3.7-flash`, `gemini-3.1-pro-preview`, `deepseek-v4-pro`, `kimi-k3`. + Each is bridged exactly like gemini-2.5-pro (108 archived S1-D passages, + Study 1 judge prompt) under the **same registered admission rule** (AUC on + the 54 originals ≥ 0.85 AND Spearman with gpt ≥ Spearman(grok, gpt) − 0.10). +- Selection rule, fixed now: among admitted candidates, the one with the + highest AUC on the originals; ties broken by Spearman with gpt. Exactly one + candidate is added, so the panel stays two LLM judges + det. +- The admitted judge scores **every** P and S body from the stored private + texts, including rows finished before admission, and the run continues with + both judges for the remaining rows. The primary metric is then the two-judge + mean; if no candidate is admitted, stage 1 stays single-perceptual-judge. +- Bridge rows and verdicts for every candidate are kept + (`artifacts/rewrite-efficacy-study4/bridge-*.jsonl`, `bridge-verdict-*.json`); + the results doc reports all of them, admitted or not. + ## Sources - Self-Preference Bias in LLM-as-a-Judge — arXiv:2410.21819 - TH-Bench (humanizing attacks vs detectors) — arXiv:2503.08708 From 055cb6f439faec8d6cf3ef0c4acc9386d03dedc2 Mon Sep 17 00:00:00 2001 From: devswha Date: Wed, 2 Sep 2026 18:54:52 +0900 Subject: [PATCH 05/10] research(study4): admit judge-gemini-3.7-flash as the second perceptual judge (bridge AUC 1.000, rho 0.884) Adds the OpenAI-compatible HTTP judge CLI, the four API candidates, a candidate-parameterized bridge and the rejudge script; records every candidate's bridge verdict and the selection in the prereg. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_018ePnwo4nBWCWvFvpy1YgCN --- docs/research/2026-rewrite-efficacy-prereg.md | 14 ++++++ scripts/research/judge-http-cli.mjs | 43 +++++++++++++++++ .../rewrite-efficacy-study4-bridge.mjs | 20 +++++--- .../rewrite-efficacy-study4-rejudge.mjs | 46 +++++++++++++++++++ scripts/research/study4-common.mjs | 18 ++++++-- 5 files changed, 131 insertions(+), 10 deletions(-) create mode 100644 scripts/research/judge-http-cli.mjs create mode 100644 scripts/research/rewrite-efficacy-study4-rejudge.mjs diff --git a/docs/research/2026-rewrite-efficacy-prereg.md b/docs/research/2026-rewrite-efficacy-prereg.md index f0c6ecef..b6ba1c86 100644 --- a/docs/research/2026-rewrite-efficacy-prereg.md +++ b/docs/research/2026-rewrite-efficacy-prereg.md @@ -670,6 +670,20 @@ per-document judge score (the run log is filtered to loop-level lines): (`artifacts/rewrite-efficacy-study4/bridge-*.jsonl`, `bridge-verdict-*.json`); the results doc reports all of them, admitted or not. +### Study 4 — dated note 2026-09-02 (after the candidate bridges, before any Study 4 judge outcome was read): `judge-gemini-3.7-flash` admitted and selected + +Bridge results on the 108 archived S1-D passages (reference on the same passages: gpt AUC 0.995, grok AUC 0.967, Spearman(grok, gpt) 0.857; admission needs AUC ≥ 0.85 and Spearman with gpt ≥ 0.757): + +| candidate | scored | AUC (54 originals) | Spearman vs gpt | Spearman vs grok | admitted | +|---|---:|---:|---:|---:|---| +| gemini-3.7-flash (API) | 108/108 | **1.000** | **0.884** | 0.794 | yes | +| gemini-3.1-pro-preview (API) | 108/108 | 0.971 | 0.849 | 0.790 | yes | +| deepseek-v4-pro (API) | 49/108 | incomplete (5 consecutive unparseable replies stopped the bridge) | 0.696 (partial) | 0.690 (partial) | no — incomplete at decision time | +| kimi-k3 (API) | 0/108 | account suspended for insufficient balance (HTTP 429) | — | — | not bridged | +| gemini-2.5-pro (CLI, original deviation) | 108/108 | 0.556 | 0.137 | 0.233 | no | + +Selection rule (highest AUC among admitted) picks **`judge-gemini-3.7-flash`**. From this note on, stage 1 is a two-judge panel (`judge-gpt` + `judge-gemini-3.7-flash`) plus det: the admitted judge scores every stored P/S body from rows finished so far, and the runner is restarted with both judges for the remaining rows. The results doc drops the *single-perceptual-judge* label and reports every candidate above. The deepseek bridge may be resumed for the record only; it cannot change the selection. + ## Sources - Self-Preference Bias in LLM-as-a-Judge — arXiv:2410.21819 - TH-Bench (humanizing attacks vs detectors) — arXiv:2503.08708 diff --git a/scripts/research/judge-http-cli.mjs b/scripts/research/judge-http-cli.mjs new file mode 100644 index 00000000..11945548 --- /dev/null +++ b/scripts/research/judge-http-cli.mjs @@ -0,0 +1,43 @@ +#!/usr/bin/env node +// Minimal OpenAI-compatible chat judge: prompt on stdin, model text on stdout. +// Env: JUDGE_BASE_URL, JUDGE_API_KEY_ENV (name of the env var holding the key), +// JUDGE_MODEL, JUDGE_TIMEOUT_MS (default 110000). Same stdin/stdout shape +// as scripts/research/xai-cli.mjs so it plugs into judgeOnce(). + +import { readFileSync } from 'node:fs'; + +const BASE = process.env.JUDGE_BASE_URL; +const KEY_ENV = process.env.JUDGE_API_KEY_ENV; +const MODEL = process.env.JUDGE_MODEL; +const TIMEOUT_MS = Number(process.env.JUDGE_TIMEOUT_MS || 110_000); +const API_KEY = KEY_ENV ? process.env[KEY_ENV] : null; + +if (!BASE || !MODEL || !API_KEY) { + console.error('judge-http-cli: JUDGE_BASE_URL, JUDGE_MODEL and the key named by JUDGE_API_KEY_ENV are required'); + process.exit(2); +} + +const prompt = readFileSync(0, 'utf8'); +const controller = new AbortController(); +const timer = setTimeout(() => controller.abort(), TIMEOUT_MS); +try { + const res = await fetch(`${BASE.replace(/\/$/u, '')}/chat/completions`, { + method: 'POST', + headers: { 'content-type': 'application/json', authorization: `Bearer ${API_KEY}` }, + body: JSON.stringify({ model: MODEL, messages: [{ role: 'user', content: prompt }], temperature: 0 }), + signal: controller.signal, + }); + const text = await res.text(); + if (!res.ok) { + console.error(`judge-http-cli: HTTP ${res.status}: ${text.slice(0, 300)}`); + process.exit(1); + } + const json = JSON.parse(text); + const content = json?.choices?.[0]?.message?.content; + process.stdout.write(typeof content === 'string' ? content : JSON.stringify(content ?? json)); +} catch (error) { + console.error(`judge-http-cli: ${error?.name === 'AbortError' ? `timeout after ${TIMEOUT_MS}ms` : String(error?.message ?? error)}`); + process.exit(1); +} finally { + clearTimeout(timer); +} diff --git a/scripts/research/rewrite-efficacy-study4-bridge.mjs b/scripts/research/rewrite-efficacy-study4-bridge.mjs index f9cacf06..b73a5956 100644 --- a/scripts/research/rewrite-efficacy-study4-bridge.mjs +++ b/scripts/research/rewrite-efficacy-study4-bridge.mjs @@ -13,9 +13,14 @@ import { JUDGE_DEFS, OUT_DIR, S1_DIR, auc, judgeOnce, loadS1Texts, makeLogger, readJsonl, spearman, } from './study4-common.mjs'; -const ROWS = join(OUT_DIR, 'bridge-gemini.jsonl'); -const VERDICT = join(OUT_DIR, 'bridge-verdict.json'); -const LOG = join(OUT_DIR, 'bridge-run.log'); +// BRIDGE_JUDGE selects the candidate (default: the original gemini CLI judge). +const JUDGE_ID = process.env.BRIDGE_JUDGE || 'judge-gemini'; +const JUDGE = JUDGE_DEFS[JUDGE_ID]; +if (!JUDGE) throw new Error(`unknown bridge judge ${JUDGE_ID}`); +const SUFFIX = JUDGE_ID === 'judge-gemini' ? '' : `-${JUDGE_ID.replace(/^judge-/u, '')}`; +const ROWS = join(OUT_DIR, `bridge-gemini${SUFFIX}.jsonl`.replace('bridge-gemini-', 'bridge-')); +const VERDICT = join(OUT_DIR, `bridge-verdict${SUFFIX}.json`); +const LOG = join(OUT_DIR, `bridge-run${SUFFIX}.log`); const RULE = { min_auc: 0.85, spearman_slack: 0.10, reference: 'grok-vs-gpt on the same passages' }; function analyze(log) { @@ -47,12 +52,13 @@ function analyze(log) { spearman_gemini_gpt: rhoGeminiGpt, spearman_grok_gpt: rhoGrokGpt, spearman_gemini_grok: rhoGeminiGrok, + candidate: JUDGE_ID, admitted, - judges: admitted ? ['judge-gpt', 'judge-gemini'] : ['judge-gpt'], + judges: admitted ? ['judge-gpt', JUDGE_ID] : ['judge-gpt'], label: admitted ? 'panel-v2-deviation-gemini' : 'single-perceptual-judge', }; writeFileSync(VERDICT, JSON.stringify(verdict, null, 2) + '\n'); - log(`bridge verdict: scored ${complete}/108; AUC gemini ${fmt(aucGemini)} (gpt ${fmt(aucGpt)}, grok ${fmt(aucGrok)}); rho gemini-gpt ${fmt(rhoGeminiGpt)} vs grok-gpt ${fmt(rhoGrokGpt)} (gemini-grok ${fmt(rhoGeminiGrok)}); admitted=${admitted}`); + log(`bridge verdict [${JUDGE_ID}]: scored ${complete}/108; AUC gemini ${fmt(aucGemini)} (gpt ${fmt(aucGpt)}, grok ${fmt(aucGrok)}); rho gemini-gpt ${fmt(rhoGeminiGpt)} vs grok-gpt ${fmt(rhoGrokGpt)} (gemini-grok ${fmt(rhoGeminiGrok)}); admitted=${admitted}`); return verdict; } @@ -74,11 +80,11 @@ async function main() { if (r.rewrite_sha && t.rewritten) passages.push({ key: `${r.original_sha}:rewrite`, original_sha: r.original_sha, cond: 'rewrite', source_class: r.source_class, text: t.rewritten, archived: r.judges?.rewrite ?? {} }); } const done = new Set(readJsonl(ROWS).filter((r) => r.gemini && Number.isFinite(r.gemini.ai_likeness)).map((r) => r.key)); - log(`bridge start — ${passages.length} passages, ${done.size} already scored`); + log(`bridge start [${JUDGE_ID}] — ${passages.length} passages, ${done.size} already scored`); let failures = 0; for (const p of passages) { if (done.has(p.key)) continue; - const gemini = await judgeOnce(JUDGE_DEFS['judge-gemini'], p.text, 'ko'); + const gemini = await judgeOnce(JUDGE, p.text, 'ko'); if (gemini.error) { failures += 1; log(`${p.key}: gemini FAILED — ${gemini.error}`); diff --git a/scripts/research/rewrite-efficacy-study4-rejudge.mjs b/scripts/research/rewrite-efficacy-study4-rejudge.mjs new file mode 100644 index 00000000..19da3f61 --- /dev/null +++ b/scripts/research/rewrite-efficacy-study4-rejudge.mjs @@ -0,0 +1,46 @@ +// Study 4: add an admitted judge's scores to existing rows from the stored +// private P/S bodies (rows finished before the judge was admitted), and set +// judges_used accordingly. Usage: +// node scripts/research/rewrite-efficacy-study4-rejudge.mjs [ko|en] +// Only rows missing that judge on P or S are touched; scores already present +// are never overwritten. + +import { writeFileSync } from 'node:fs'; +import { join } from 'node:path'; + +import { JUDGE_DEFS, OUT_DIR, judgeOnce, makeLogger, readJsonl } from './study4-common.mjs'; + +const JUDGE_ID = process.argv[2]; +const STAGE = process.argv[3] === 'en' ? 'en' : 'ko'; +const JUDGE = JUDGE_DEFS[JUDGE_ID]; +if (!JUDGE) throw new Error(`unknown judge ${JUDGE_ID}`); +const ROWS = join(OUT_DIR, `s4-rows-${STAGE}.jsonl`); +const TEXTS = join(OUT_DIR, `s4-texts-${STAGE}.private.jsonl`); +const LOG = join(OUT_DIR, `s4-run-${STAGE}.log`); + +async function main() { + const log = makeLogger(LOG); + const rows = readJsonl(ROWS); + const texts = new Map(readJsonl(TEXTS).map((t) => [t.original_sha, t])); + let touched = 0; + let failures = 0; + for (const row of rows) { + const t = texts.get(row.original_sha); + for (const arm of ['P', 'S']) { + if (!row[arm]?.rewrite_sha || row[arm]?.judges?.[JUDGE_ID]?.ai_likeness !== undefined) continue; + const body = t?.[arm]; + if (!body) { log(`rejudge ${JUDGE_ID}: no stored ${arm} body for ${row.original_sha}`); continue; } + const verdict = await judgeOnce(JUDGE, body, STAGE); + row[arm].judges = { ...(row[arm].judges ?? {}), [JUDGE_ID]: verdict }; + if (verdict.error) { failures += 1; log(`rejudge ${JUDGE_ID}: ${row.pair_id} ${arm} FAILED — ${verdict.error}`); } + else touched += 1; + } + if (!row.judges_used.includes(JUDGE_ID)) row.judges_used = [...row.judges_used, JUDGE_ID]; + // Write after every row so a crash loses at most one document. + writeFileSync(ROWS, rows.map((r) => JSON.stringify(r)).join('\n') + '\n'); + } + log(`rejudge ${JUDGE_ID} (${STAGE}): ${touched} bodies scored, ${failures} failures, ${rows.length} rows`); + if (failures) process.exit(2); +} + +main().catch((e) => { console.error(e?.stack ?? e); process.exit(1); }); diff --git a/scripts/research/study4-common.mjs b/scripts/research/study4-common.mjs index 4215357f..07e8ee79 100644 --- a/scripts/research/study4-common.mjs +++ b/scripts/research/study4-common.mjs @@ -17,10 +17,22 @@ export const NO_MCP_SERVERS = '__patina_no_mcp__'; // src/backends/gemini-cli.js export const JUDGE_TIMEOUT_MS = 180_000; export const JUDGE_ATTEMPTS = 3; +const HTTP_CLI = [join('scripts', 'research', 'judge-http-cli.mjs')]; +const http = (id, family, baseURL, keyEnv, model) => ({ + id, family, cmd: 'node', args: HTTP_CLI, + env: { JUDGE_BASE_URL: baseURL, JUDGE_API_KEY_ENV: keyEnv, JUDGE_MODEL: model }, +}); + export const JUDGE_DEFS = Object.freeze({ 'judge-gpt': { id: 'judge-gpt', family: 'gpt', cmd: 'codex', args: ['exec', '--skip-git-repo-check', '--sandbox', 'read-only'] }, 'judge-gemini': { id: 'judge-gemini', family: 'gemini', cmd: 'gemini', args: ['-p', '', '--output-format', 'text', '--skip-trust', '--allowed-mcp-server-names', NO_MCP_SERVERS, '-m', 'gemini-2.5-pro'] }, 'judge-grok': { id: 'judge-grok', family: 'xai', cmd: 'node', args: [join('scripts', 'research', 'xai-cli.mjs')] }, + // Bridge candidates without xAI credit (2026-09-02 amendment): API judges on + // the OpenAI-compatible endpoints patina's providers already use. + 'judge-gemini-3.7-flash': http('judge-gemini-3.7-flash', 'gemini', 'https://generativelanguage.googleapis.com/v1beta/openai', 'GEMINI_API_KEY', 'gemini-3.7-flash'), + 'judge-gemini-3.1-pro': http('judge-gemini-3.1-pro', 'gemini', 'https://generativelanguage.googleapis.com/v1beta/openai', 'GEMINI_API_KEY', 'gemini-3.1-pro-preview'), + 'judge-deepseek-v4-pro': http('judge-deepseek-v4-pro', 'deepseek', 'https://api.deepseek.com', 'DEEPSEEK_API_KEY', 'deepseek-v4-pro'), + 'judge-kimi-k3': http('judge-kimi-k3', 'moonshot', 'https://api.moonshot.ai/v1', 'KIMI_API_KEY', 'kimi-k3'), }); export const sha = (s) => createHash('sha256').update(s, 'utf8').digest('hex').slice(0, 16); @@ -33,9 +45,9 @@ export function makeLogger(path) { }; } -export function run(cmd, args, { input = '', timeout = 120_000, cwd = ROOT } = {}) { +export function run(cmd, args, { input = '', timeout = 120_000, cwd = ROOT, env = null } = {}) { return new Promise((resolve) => { - const child = spawn(cmd, args, { cwd, stdio: ['pipe', 'pipe', 'pipe'], detached: true }); + const child = spawn(cmd, args, { cwd, stdio: ['pipe', 'pipe', 'pipe'], detached: true, env: env ? { ...process.env, ...env } : process.env }); let stdout = ''; let stderr = ''; let settled = false; @@ -124,7 +136,7 @@ export async function judgeOnce(judge, text, lang) { let lastOut = ''; let lastErr = ''; for (let attempt = 1; attempt <= JUDGE_ATTEMPTS; attempt += 1) { - const res = await run(judge.cmd, judge.args, { input: judgePrompt(text, lang), timeout: JUDGE_TIMEOUT_MS }); + const res = await run(judge.cmd, judge.args, { input: judgePrompt(text, lang), timeout: JUDGE_TIMEOUT_MS, env: judge.env ?? null }); const parsed = parseJudge(res.stdout); if (parsed) return attempt === 1 ? parsed : { ...parsed, retried: true }; attempts.push(res.error || 'unparseable'); From b4fe9be7b9999977b2d1a11326c7dbbf77484d42 Mon Sep 17 00:00:00 2001 From: devswha Date: Wed, 2 Sep 2026 18:57:51 +0900 Subject: [PATCH 06/10] research(study4): loop passes S4_JUDGES to the runner explicitly Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_018ePnwo4nBWCWvFvpy1YgCN --- scripts/research/rewrite-efficacy-study4-loop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/research/rewrite-efficacy-study4-loop.sh b/scripts/research/rewrite-efficacy-study4-loop.sh index 314cab45..66584fe2 100755 --- a/scripts/research/rewrite-efficacy-study4-loop.sh +++ b/scripts/research/rewrite-efficacy-study4-loop.sh @@ -13,7 +13,7 @@ mkdir -p artifacts/rewrite-efficacy-study4 for pass in $(seq 1 48); do echo "[loop] pass $pass" >> "$LOG" - S4_STAGE="$STAGE" node scripts/research/rewrite-efficacy-study4.mjs >> "artifacts/rewrite-efficacy-study4/s4-stdout-${STAGE}.log" 2>&1 + S4_STAGE="$STAGE" S4_JUDGES="${S4_JUDGES:-}" node scripts/research/rewrite-efficacy-study4.mjs >> "artifacts/rewrite-efficacy-study4/s4-stdout-${STAGE}.log" 2>&1 node -e ' const fs = require("fs"); const [p, expected] = [process.argv[1], Number(process.argv[2])]; From 3fbaa637176ee0910207c2c84d10eb9f63a73350 Mon Sep 17 00:00:00 2001 From: devswha Date: Wed, 2 Sep 2026 20:15:39 +0900 Subject: [PATCH 07/10] research(study4): keep claude's stdout message in rewrite failures for diagnosis Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_018ePnwo4nBWCWvFvpy1YgCN --- scripts/research/study4-common.mjs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/research/study4-common.mjs b/scripts/research/study4-common.mjs index 07e8ee79..452a4483 100644 --- a/scripts/research/study4-common.mjs +++ b/scripts/research/study4-common.mjs @@ -70,7 +70,9 @@ export async function claudeCall(prompt, { timeout, model = REWRITER_MODEL } = { const dir = mkdtempSync(join(tmpdir(), 'patina-s4-claude-')); try { const res = await run('claude', ['-p', '--model', model], { input: prompt, timeout, cwd: dir }); - if (!res.ok) return { text: null, error: res.error || res.stderr.slice(0, 300) || `exit ${res.code}` }; + // claude prints usage-limit and auth messages on stdout with exit 1, so + // keep a head of stdout in the error when stderr is empty (diagnosable). + if (!res.ok) return { text: null, error: res.error || res.stderr.slice(0, 300) || (String(res.stdout).trim() ? `exit ${res.code}: ${String(res.stdout).trim().slice(0, 300)}` : `exit ${res.code}`) }; let out = String(res.stdout).trim(); const fence = out.match(/^```[a-z]*\n([\s\S]*)\n```$/); if (fence) out = fence[1].trim(); From 23e105a8d7658cb618116129fca101205553c18c Mon Sep 17 00:00:00 2001 From: devswha Date: Wed, 2 Sep 2026 20:53:51 +0900 Subject: [PATCH 08/10] research(study4): raise the rewrite timeout 600s -> 900s (execution note, Study 3 precedent) Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_018ePnwo4nBWCWvFvpy1YgCN --- scripts/research/rewrite-efficacy-study4.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/research/rewrite-efficacy-study4.mjs b/scripts/research/rewrite-efficacy-study4.mjs index 272584f1..9eee196e 100644 --- a/scripts/research/rewrite-efficacy-study4.mjs +++ b/scripts/research/rewrite-efficacy-study4.mjs @@ -47,7 +47,7 @@ const TEXTS_JSONL = join(OUT_DIR, `${PREFIX}-texts-${STAGE}.private.jsonl`); const LOG = join(OUT_DIR, `${PREFIX}-run-${STAGE}.log`); const VERDICT = join(OUT_DIR, 'bridge-verdict.json'); -const REWRITE_TIMEOUT_MS = 600_000; // S1 top-up precedent +const REWRITE_TIMEOUT_MS = 900_000; // raised 600s -> 900s at doc 12 (S attempt 2 timeout), Study 3 precedent; execution note, no criterion change const FLOOR = 0.98; const MAX_ATTEMPTS = 3; // one first pass + two retries From 61e07d9abd8dce77b86cb04a4e2dc16457a33cf0 Mon Sep 17 00:00:00 2001 From: devswha Date: Thu, 3 Sep 2026 04:27:50 +0900 Subject: [PATCH 09/10] research(study4): reset-aware supervisor back-off and a larger pass budget Sleep until claude's stated session-limit reset instead of 30-minute polls, and allow 240 passes; plumbing only. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_018ePnwo4nBWCWvFvpy1YgCN --- .../research/rewrite-efficacy-study4-loop.sh | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/scripts/research/rewrite-efficacy-study4-loop.sh b/scripts/research/rewrite-efficacy-study4-loop.sh index 66584fe2..d97303c4 100755 --- a/scripts/research/rewrite-efficacy-study4-loop.sh +++ b/scripts/research/rewrite-efficacy-study4-loop.sh @@ -1,18 +1,39 @@ #!/usr/bin/env bash # Study 4 supervisor: run the resumable runner until every corpus row is clean # (both arms rewritten, every admitted judge parsed on both). Between passes, -# prune fail-soft rows so resume retries them; back off 30 min to ride out -# claude window exhaustion. Usage: S4_STAGE=ko|en scripts/research/rewrite-efficacy-study4-loop.sh +# prune fail-soft rows so resume retries them. Back-off is reset-aware: when +# the last pass died on claude's "session limit · resets Xam/pm (Asia/Seoul)" +# message, sleep until that time (+90 s, capped at 6 h) instead of 30 min, so +# idle passes do not burn the pass budget. Usage: +# S4_STAGE=ko|en S4_JUDGES=judge-gpt,judge-gemini-3.7-flash scripts/research/rewrite-efficacy-study4-loop.sh set -u cd "$(dirname "$0")/../.." STAGE="${S4_STAGE:-ko}" EXPECTED="${S4_EXPECTED:-$([ "$STAGE" = "en" ] && echo 42 || echo 54)}" ROWS="artifacts/rewrite-efficacy-study4/s4-rows-${STAGE}.jsonl" LOG="artifacts/rewrite-efficacy-study4/s4-run-${STAGE}.log" +MAX_PASSES="${S4_MAX_PASSES:-240}" mkdir -p artifacts/rewrite-efficacy-study4 -for pass in $(seq 1 48); do +reset_sleep_seconds() { + # Look at the tail of this pass's log for a session-limit message; print + # seconds until the stated KST reset (+90 s), or nothing. + local msg tok now target + msg=$(tail -n 40 "$LOG" | grep -o "resets [0-9]\{1,2\}\(:[0-9]\{2\}\)\?[ap]m (Asia/Seoul)" | tail -1) || true + [ -n "$msg" ] || return 0 + tok=$(echo "$msg" | sed -E 's/resets ([0-9:]+[ap]m).*/\1/') + now=$(date +%s) + target=$(TZ=Asia/Seoul date -d "today $tok" +%s 2>/dev/null) || return 0 + if [ "$target" -le "$now" ]; then target=$(TZ=Asia/Seoul date -d "tomorrow $tok" +%s 2>/dev/null) || return 0; fi + local delta=$((target - now + 90)) + [ "$delta" -gt 21600 ] && delta=21600 + [ "$delta" -lt 60 ] && delta=60 + echo "$delta" +} + +for pass in $(seq 1 "$MAX_PASSES"); do echo "[loop] pass $pass" >> "$LOG" + before=$(wc -l < "$LOG") S4_STAGE="$STAGE" S4_JUDGES="${S4_JUDGES:-}" node scripts/research/rewrite-efficacy-study4.mjs >> "artifacts/rewrite-efficacy-study4/s4-stdout-${STAGE}.log" 2>&1 node -e ' const fs = require("fs"); @@ -29,8 +50,12 @@ for pass in $(seq 1 48); do process.exit(good.length >= expected ? 42 : 0); ' "$ROWS" "$EXPECTED" >> "$LOG" 2>&1 if [ $? -eq 42 ]; then echo "[loop] all $EXPECTED rows clean — done" >> "$LOG"; exit 0; fi - echo "[loop] incomplete after pass $pass — sleeping 30m before resume" >> "$LOG" - sleep 1800 + wait_s=1800 + if tail -n +"$before" "$LOG" | grep -q "session limit"; then + rs=$(reset_sleep_seconds); [ -n "${rs:-}" ] && wait_s=$rs + fi + echo "[loop] incomplete after pass $pass — sleeping ${wait_s}s before resume" >> "$LOG" + sleep "$wait_s" done -echo "[loop] gave up after 48 passes" >> "$LOG" +echo "[loop] gave up after $MAX_PASSES passes" >> "$LOG" exit 1 From 6ad0334922a7b173c93ae8fb8e177f1845dfc79a Mon Sep 17 00:00:00 2001 From: devswha Date: Thu, 3 Sep 2026 11:08:50 +0900 Subject: [PATCH 10/10] =?UTF-8?q?research(study4):=20stage=201=20(ko)=20re?= =?UTF-8?q?sults=20=E2=80=94=20H-4b=20NOT=20supported;=20nothing=20ships?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 54/54 documents, both arms, gpt + gemini-3.7-flash + det chief. - Primary paired d(S − P) on AI docs +1.6 [−3.1, +6.5] (needed ≤ −3, CI upper < 0); det chief +8.5 [+0.8, +17.0]; AI-call rate unchanged 94.4%. - The 98% floor was met on 15/27 AI docs after up to three attempts; copy check fires (S median trigram Jaccard 0.667 vs P 0.517): S rewrote less. - Guard rail 1 violated (50/54 meaning gate; two known artifact docs plus two real dropped numbers); guard rails 2 and 3 held. - Committed artifacts are hash-and-score rows plus bridge rows/verdicts for all five judge candidates; raw texts stay ignored. - Stage 2 (en) not started; deferral is an owner decision (dated note). Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_018ePnwo4nBWCWvFvpy1YgCN --- .../bridge-deepseek-v4-pro.jsonl | 49 +++++ .../bridge-gemini-3.1-pro.jsonl | 108 +++++++++++ .../bridge-gemini-3.7-flash.jsonl | 108 +++++++++++ .../bridge-gemini.jsonl | 108 +++++++++++ .../bridge-verdict-deepseek-v4-pro.json | 25 +++ .../bridge-verdict-gemini-3.1-pro.json | 26 +++ .../bridge-verdict-gemini-3.7-flash.json | 26 +++ .../bridge-verdict-kimi-k3.json | 25 +++ .../bridge-verdict.json | 24 +++ .../rewrite-efficacy-study4/s4-rows-ko.jsonl | 54 ++++++ docs/research/2026-rewrite-efficacy-study4.md | 172 ++++++++++++++++++ 11 files changed, 725 insertions(+) create mode 100644 artifacts/rewrite-efficacy-study4/bridge-deepseek-v4-pro.jsonl create mode 100644 artifacts/rewrite-efficacy-study4/bridge-gemini-3.1-pro.jsonl create mode 100644 artifacts/rewrite-efficacy-study4/bridge-gemini-3.7-flash.jsonl create mode 100644 artifacts/rewrite-efficacy-study4/bridge-gemini.jsonl create mode 100644 artifacts/rewrite-efficacy-study4/bridge-verdict-deepseek-v4-pro.json create mode 100644 artifacts/rewrite-efficacy-study4/bridge-verdict-gemini-3.1-pro.json create mode 100644 artifacts/rewrite-efficacy-study4/bridge-verdict-gemini-3.7-flash.json create mode 100644 artifacts/rewrite-efficacy-study4/bridge-verdict-kimi-k3.json create mode 100644 artifacts/rewrite-efficacy-study4/bridge-verdict.json create mode 100644 artifacts/rewrite-efficacy-study4/s4-rows-ko.jsonl create mode 100644 docs/research/2026-rewrite-efficacy-study4.md diff --git a/artifacts/rewrite-efficacy-study4/bridge-deepseek-v4-pro.jsonl b/artifacts/rewrite-efficacy-study4/bridge-deepseek-v4-pro.jsonl new file mode 100644 index 00000000..a5d3529e --- /dev/null +++ b/artifacts/rewrite-efficacy-study4/bridge-deepseek-v4-pro.jsonl @@ -0,0 +1,49 @@ +{"key":"168f3c8118bd47aa:original","original_sha":"168f3c8118bd47aa","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":87,"strongest_cue":"다섯 항목으로 나눈 FAQ형 균일 문단과 반복되는 일반론적 전환어"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"분량 충족을 선언하는 메타 문장"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"char-count meta header plus rigid parallel FAQ sections"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"메타 서술(2238자·분량 체크)으로 AI 생성 후 검증된 텍스트임을 자기표시"}} +{"key":"168f3c8118bd47aa:rewrite","original_sha":"168f3c8118bd47aa","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"구어체 은유와 구체적인 실무 디테일(예: 'null 오류로 서비스가 죽는다')","retried":true},"gpt":{"authorship":"ai","ai_likeness":72,"strongest_cue":"균일한 항목별 설명 구조"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"lived Kakao-specific edge cases in natural practitioner Korean"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"conversational, experience-based phrasing with irregular rhythm and specific debugging anecdotes"}} +{"key":"1ae1f4a64a2eab3f:original","original_sha":"1ae1f4a64a2eab3f","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 문어체와 단계별 나열 구조"},"gpt":{"authorship":"ai","ai_likeness":92,"strongest_cue":"반복적인 ~해야 합니다와 균일한 설명 리듬"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"exhaustive polished step-by-step structure without personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 단계별 나열과 동일한 문장 패턴 반복"}} +{"key":"1ae1f4a64a2eab3f:rewrite","original_sha":"1ae1f4a64a2eab3f","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"반복적인 문단 구조와 획일적인 '-하십시오/-해야 합니다' 어미"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명 리듬과 반복적 지시문"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniformly exhaustive step-by-step tutorial cadence with no personal voice"},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"반복적인 단락 구조(시작→설정→구현→주의사항)와 과도한 명령형 조언(\"~하십시오\", \"~해야 합니다\")의 기계적 패턴"}} +{"key":"61babd677484cafa:original","original_sha":"61babd677484cafa","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"반복되는 '~하고 있으며' 나열식 구조와 구체적 사례 부재"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"포괄적 정책 키워드의 균일한 나열"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic multi-section progression dense with seamless buzzwords"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 축어체 나열형 구조와 무기한 연장되는 '~하고 있다' 종결 패턴"}} +{"key":"61babd677484cafa:rewrite","original_sha":"61babd677484cafa","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":87,"strongest_cue":"evenly structured, list-like coverage of policy topics in abstract generic terms without concrete detail or personal voice"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"포괄적 정책 용어가 균일하게 이어지는 보고서식 문장"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"exhaustive multi-angle formulaic structure in uniform officialese"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"정책 수립 단계부터 목표 설정과 지표 설계를 분명히 하도록 강조한다"}} +{"key":"62acf994d71174b1:original","original_sha":"62acf994d71174b1","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"1366자로 조건(1211~2018자)을 충족했다"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"조건 충족을 보고하는 메타문장"},"grok":{"authorship":"ai","ai_likeness":86,"strongest_cue":"character-count fulfillment preamble"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 정부 보도자료 구조(기관-일자-의결-배경-재원-분야-장관 발언-전망 순서)와 반복되는 ~했다고 밝혔다/~했다고 설명했다/~했다고 강조했다 등의 기계적 인용 구조"}} +{"key":"62acf994d71174b1:rewrite","original_sha":"62acf994d71174b1","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":76,"strongest_cue":"기획재정부가 국무회의를 연다는 주체 오류와 익명 공식 인용의 형식적 문체"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"구체적 출처 없이 균형 잡힌 보도문 틀을 반복"},"grok":{"authorship":"ai","ai_likeness":76,"strongest_cue":"formulaic multi-section news template with rounded balance"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 대칭 구조와 정형화된 인용문 패턴"}} +{"key":"b79dc954d1a16e17:original","original_sha":"b79dc954d1a16e17","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"익명의 관계자·전문가 인용과 정형화된 문단 구조의 반복"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균질한 보도자료식 장문 문장"},"grok":{"authorship":"ai","ai_likeness":85,"strongest_cue":"exhaustive multi-angle balanced structure in uniform formal tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 병렬 구조와 반복적인 접속사(또한, 그리고, 특히)로 인한 기계적 리듬"}} +{"key":"b79dc954d1a16e17:rewrite","original_sha":"b79dc954d1a16e17","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":78,"strongest_cue":"stock policy phrases, anonymous indirect quotes, and balanced list-like structure"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"구체적 출처 없는 보도자료식 문장 반복"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic multi-angle coverage with uniform formal rhythm"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 구조와 반복적 문장 패턴"}} +{"key":"28d4eaa3438b3026:original","original_sha":"28d4eaa3438b3026","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":86,"strongest_cue":"generic policy-article structure with vague details and formulaic future-outlook ending"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 보도자료식 문장 리듬"},"grok":{"authorship":"ai","ai_likeness":89,"strongest_cue":"formulaic bureaucratic news structure with generic optimistic framing"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정책적 의지를 보여 주는 사례로 평가된다"}} +{"key":"28d4eaa3438b3026:rewrite","original_sha":"28d4eaa3438b3026","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"획일적인 문어체 문장 구조와 예측 가능한 정보 나열"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"균일한 보도자료식 문장 리듬과 평탄한 '-다' 종결 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"templated multi-paragraph policy brief with generic officials and polished balanced framing"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"정책 보도자료 형식의 과도한 구조화 (배경→목적→대상→금액→절차→전망→분석→배경 반복→마무리)와 반복적인 인과/목적 구문 (~는 데 목적을 뒀다, ~를 연결하려는 조치다, ~에 기여할 것, ~가 될 것이라는 분석이 나온다)"}} +{"key":"23a5b6fbf574e6f7:original","original_sha":"23a5b6fbf574e6f7","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":84,"strongest_cue":"formulaic paragraph transitions and generic policy-summary style without sourced quotes"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 문단 구조와 관료적 상투어 반복"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"uniform schematic paragraphs with formulaic bureaucratic phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 정부 보도자료 구조와 반복적인 ~한다는 계획이다/~기로 했다/~고 덧붙였다 패턴"}} +{"key":"23a5b6fbf574e6f7:rewrite","original_sha":"23a5b6fbf574e6f7","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":84,"strongest_cue":"repetitive policy-summary structure with no named sources or individual voice"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 정책 보도 템플릿과 반복 종결"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"even parallel blocks and polished officialese without voice"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 구조와 반복적인 '~것이다/방침이다/계획이다' 종결 패턴"}} +{"key":"4900e9943fcbd984:original","original_sha":"4900e9943fcbd984","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"repetitive template-like structure and generic formulaic transitions without a distinct human voice"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"반복적인 보도자료식 문장 패턴"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"uniform formulaic bureaucratic prose with exhaustive balanced multi-section structure"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"기대된다/풀이된다/보인다/나온다 등 무성한 추측·해석·전망 투성이 문장 구조"}} +{"key":"4900e9943fcbd984:rewrite","original_sha":"4900e9943fcbd984","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":83,"strongest_cue":"핵심은 두 가지다·갈 길은 멀다 등 정형화된 전개","retried":true},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"보도자료식 문장 구조와 완충 표현의 반복","topped_up":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic sectioned exposition with tidy caveats and canned wrap-up","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 구조와 반복적 수치 제시 (3조 2000억 원, 30곳, 1200억 원, 10만 건, 3만 건 등) 및 인용구 배치 패턴","topped_up":true}} +{"key":"312380a845a3f6f0:original","original_sha":"312380a845a3f6f0","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"rigid enumerated policy summary with generic jargon and no named sources or specific figures"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"균일한 보도자료식 문단 구조"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"exhaustive parallel lists and staged plans in perfectly uniform bureaucratic prose"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"numbered list structure with parallel clause patterns (첫째/둘째/셋째/넷째/다섯째)"}} +{"key":"312380a845a3f6f0:rewrite","original_sha":"312380a845a3f6f0","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"highly formulaic, list-driven structure and stock policy phrases"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"구체명 없이 전방위 정책을 균질하게 나열함","topped_up":true},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"exhaustive formulaic multi-pillar lists and seamless officialese","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형적 5단계 구조(첫째/둘째/셋째/넷째/다섯째)와 '본격 추진', '전면 재편', '전방위 지원' 등 한국 정부 보도자료형 관용구 반복","topped_up":true}} +{"key":"482a1b346601eed1:original","original_sha":"482a1b346601eed1","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniform paragraph-by-paragraph technical summary structure"},"gpt":{"authorship":"ai","ai_likeness":83,"strongest_cue":"균일하게 정리된 설명형 문단 구조"},"grok":{"authorship":"ai","ai_likeness":81,"strongest_cue":"flawless stepwise coverage with uniform pedagogical polish"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"conversational hedging and reader-directed imperatives"}} +{"key":"482a1b346601eed1:rewrite","original_sha":"482a1b346601eed1","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniformly structured, neutral technical summary without personal voice"},"gpt":{"authorship":"ai","ai_likeness":74,"strongest_cue":"균일한 기술문서식 문단 리듬"},"grok":{"authorship":"ai","ai_likeness":72,"strongest_cue":"even sequential walkthrough with exhaustive, quirk-free coverage"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"비격식체+구어체 끝어미(~-야 하며, ~는 편이 낫다, ~짚고 넘어가야 한다)"}} +{"key":"bb5dc0d1ffc67c28:original","original_sha":"bb5dc0d1ffc67c28","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic sector-by-sector structure with overused policy phrases and unnatural hybrid terms like '퍼ovskite'"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체명 없이 반복되는 포괄적 요약 구조"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"uniform parallel sections with formulaic institutional phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 전문용어 나열"}} +{"key":"bb5dc0d1ffc67c28:rewrite","original_sha":"bb5dc0d1ffc67c28","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"분야별 성과-의의-정책 대응이 반복되는 균일한 문단 구조"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"분야별로 반복되는 균질한 보고서식 문단 구조"},"grok":{"authorship":"ai","ai_likeness":83,"strongest_cue":"rigid parallel sections each recycling research-highlight→NRF-action→policy template"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"구조적 반복과 정형화된 전환: 매 단락이 '분야 소개 → 구체적 사례/성과 → 연구재단의 대응/계획'의 동일한 3단 구조로 기계적으로 반복되며, 인간 필자가 보일 개인적 관점·어조 변화·구조적 실험성이 전혀 없음"}} +{"key":"686e5dcc3ceb1749:original","original_sha":"686e5dcc3ceb1749","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":87,"strongest_cue":"모든 경험이 추상적이고 균일하게 나열되는 AI 특유의 패턴"},"gpt":{"authorship":"ai","ai_likeness":95,"strongest_cue":"구체적 일화 없이 균질하게 나열되는 성과와 감상"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic seamless structure with idealized polished positivity"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 양치기식 나열 구조와 감정을 술어로만 서술하는 추상적 문체"}} +{"key":"686e5dcc3ceb1749:rewrite","original_sha":"686e5dcc3ceb1749","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":82,"strongest_cue":"formulaic three-point summary and generic polished retrospective phrasing"},"gpt":{"authorship":"ai","ai_likeness":92,"strongest_cue":"구체적 장면 없이 균일한 성과·기술 나열"},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"formulaic multi-section retrospective with exhaustive buzzword coverage and tidy three-lessons closer"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 구조적 대칭과 정형화된 키워드 나열"}} +{"key":"928d18c1dacf3fb2:original","original_sha":"928d18c1dacf3fb2","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"concrete, idiosyncratic details and authentic quotes (e.g., '은행 앱 같아요', 6px/10px/14px)"},"gpt":{"authorship":"ai","ai_likeness":76,"strongest_cue":"과하게 매끈한 문제-위기-교훈 서사"},"grok":{"authorship":"human","ai_likeness":41,"strongest_cue":"dense insider micro-anecdotes with cultural sting"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적이고 생생한 회고적 서술과 팀 내부 대화, 감정적 반응의 세밀한 묘사"}} +{"key":"928d18c1dacf3fb2:rewrite","original_sha":"928d18c1dacf3fb2","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":18,"strongest_cue":"specific lived-in details like pixel inconsistencies and quoted feedback in natural Korean"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"너무 매끈한 문제-위기-교훈 서사","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"granular firsthand anecdotes (px values, Slack reactions, '은행 앱' sting) with natural self-critique","topped_up":true},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적 내부 에피소드와 감정적 회복 서사","topped_up":true}} +{"key":"65ca55ba6400468e:original","original_sha":"65ca55ba6400468e","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"첫째, 둘째, 셋째로 이어지는 정돈된 나열 구조와 선언적 문장 톤"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균일한 설명문 구조와 상투적 확장 표현"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic numbered essay structure plus stock visionary closing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"overly symmetric paragraph structure with numbered rhetorical triads (첫째/둘째/셋째) and predictable conclusion arc"}} +{"key":"65ca55ba6400468e:rewrite","original_sha":"65ca55ba6400468e","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":84,"strongest_cue":"balanced pros-cons structure with a polished, generic rhetorical closing"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"반복적이고 균형 잡힌 설명문 구조"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"flawlessly balanced multi-section essay with seamless transitions and no idiosyncrasies"},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"반복적인 '입니다/습니다' 종결과 문단별 구조적 대칭(문제-해결-확장)"}} +{"key":"fcb1fd7071034cf7:original","original_sha":"fcb1fd7071034cf7","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":84,"strongest_cue":"문제-해결-성과-전망의 정형화된 전개와 균일한 문장 패턴이 전형적인 AI 산출물 어조를 보임"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균일한 문장 리듬의 포괄적 사례문체"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"formulaic problem-solution-results structure with uniformly polished corporate tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 기술 세부사항 나열과 구조화된 단계별 설명"}} +{"key":"fcb1fd7071034cf7:rewrite","original_sha":"fcb1fd7071034cf7","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":86,"strongest_cue":"generic problem-solution-results-future moralizing close: 자원 밀도를 높이는 노력이 곧 경쟁력이라는 사실을 이번 작업에서도 거듭 확인했습니다"},"gpt":{"authorship":"ai","ai_likeness":90,"strongest_cue":"구체적 출처 없이 매끄러운 사례형 구조와 반복적 일반화"},"grok":{"authorship":"ai","ai_likeness":83,"strongest_cue":"formulaic problem-solution-metrics-future arc with exhaustive polished coverage"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 구조적 대칭과 나열식 전개"}} +{"key":"df471256a3e0690c:original","original_sha":"df471256a3e0690c","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":84,"strongest_cue":"정형화된 문제-해결-비용-결론 구조와 균형 잡힌 요약·반론 표현의 반복"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명 구조와 일반론적 전개"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"formulaic problem–solution–benefit sections with uniform polish and no voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 구조적 대칭과 설명적 나열"}} +{"key":"df471256a3e0690c:rewrite","original_sha":"df471256a3e0690c","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적인 실무 용어와 자연스러운 한국어 문장 리듬"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"매우 균일한 설명문 구조와 일반론적 전개","topped_up":true},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"textbook problem→solutions→benefits→caveats arc with uniform polish","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"overly balanced paragraph structure with exhaustive enumeration","topped_up":true}} +{"key":"efc6bbbb5fcc65ec:original","original_sha":"efc6bbbb5fcc65ec","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"generic abstract corporate phrasing and predictable structure with few concrete details"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체성 없는 장문 회고와 상투적 교훈 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic multi-section reflective arc with polished platitudinous close"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 구조적 패턴 (문단 시작: ~하면서/하면서는 → 중간: 구체적 기능 설명 → 끝: 교훈/의미 도출)"}} +{"key":"efc6bbbb5fcc65ec:rewrite","original_sha":"efc6bbbb5fcc65ec","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"구체적인 한국어 금융 도메인 경험과 '어림도 없었다' 같은 자연스러운 일상 표현","retried":true},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균질한 단락 전개와 추상적 교훈형 결말","topped_up":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic sectioned arc with polished lessons and closer","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 반성적 결론 구조 (마지막 단락의 '다시 생각했다/그게 ~이다/그것만으로도 충분히 보람차다/바란다/교훈이다' 연쇄)","topped_up":true}} +{"key":"8997830c69d60b15:original","original_sha":"8997830c69d60b15","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":86,"strongest_cue":"generic polished structure with repeated catchphrase and no concrete details"},"gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"반복적이고 일반적인 기업문화 서술"},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"perfectly parallel slogan-driven anecdotes with uniform inspirational cadence"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"반복적인 구조적 패턴과 동일한 문장 틀의 재사용"}} +{"key":"8997830c69d60b15:rewrite","original_sha":"8997830c69d60b15","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":82,"strongest_cue":"모호한 성과 수치와 사례-교훈 구조가 반복되는 5문단 에세이","retried":true},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"구체성 없는 반복적 성공 사례 구조"},"grok":{"authorship":"ai","ai_likeness":81,"strongest_cue":"schematic multi-anecdote arc that always resolves cleanly to the same branded slogan"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복되는 구조적 패턴과 정형화된 서술 리듬"}} +{"key":"dbb6bfe4103d2362:original","original_sha":"dbb6bfe4103d2362","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"각 문단이 균일한 문제-설명-요약 구조로 정돈되고 '즉', '결국', '이런' 등 전환어가 반복된다"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 교과서식 문단 전개"},"grok":{"authorship":"ai","ai_likeness":72,"strongest_cue":"uniform problem-solution-ops-ROI scaffolding with templated transitions"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"colloquial spoken rhythm with hedging and personal experience markers"}} +{"key":"dbb6bfe4103d2362:rewrite","original_sha":"dbb6bfe4103d2362","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":28,"strongest_cue":"실무 경험 어조와 자연스러운 한국어 문체"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 단락 구조와 교과서식 전개"},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"checklist-complete didactic arc with uniformly neat per-paragraph takeaways"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"구체적 실무 경험과 현장감 있는 표현"}} +{"key":"be19e73ec1806639:original","original_sha":"be19e73ec1806639","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":91,"strongest_cue":"반복적 5단 구조와 추상적 경영 용어 중심의 전개"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"첫째-둘째-셋째식 균질한 전개"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"rigidly enumerated, evenly balanced sections with polished generic corporate rhetoric"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 1-2-3-4-5 구조와 각 문단의 동일한 패턴(문제 제기→토스식 TPM 제시→AI 시너지 설명→비유/은유로 마무리)"}} +{"key":"be19e73ec1806639:rewrite","original_sha":"be19e73ec1806639","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":87,"strongest_cue":"반복적인 4단 구조와 각 단락의 동일한 전개 패턴"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"첫째·둘째식 균질한 전개와 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"rigid 4-point parallel structure with identical AI+TPM framing each section"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"기계적 병렬 구조(첫째/둘째/셋째/넷째) + 각 단락의 동일한 서론-전개-결론 삼단 논법"}} +{"key":"8f39c12fc82867a2:original","original_sha":"8f39c12fc82867a2","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"반복되는 '해야 한다/하도록 한다' 패턴과 균일한 문단 구조"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명문 구조와 포괄적 체크리스트식 전개","retried":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"exhaustive even multi-section coverage with flat polished tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"uniformly structured paragraphs with identical topic-sentence-first pattern and exhaustive bullet-like enumeration of technical steps without any digression, personal anecdote, or stylistic variation"}} +{"key":"8f39c12fc82867a2:rewrite","original_sha":"8f39c12fc82867a2","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":35,"strongest_cue":"'버튼 하나 붙이는 수준' 같은 실무적이고 구어적 표현"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"균일한 설명 리듬과 체크리스트식 포괄성"},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"uniform exhaustive tutorial cadence, no personal fingerprint"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"overly systematic paragraph structure with identical rhythm (topic sentence → bullet-like elaboration → cautionary closing)"}} +{"key":"1b1ca775a211b68a:original","original_sha":"1b1ca775a211b68a","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"첫째·둘째·셋째 축과 종합하면으로 이어지는 공식적 구조와 추상적 정책용어 나열"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균질한 삼분 구조와 추상명사 나열"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"rigid tripartite axes + formulaic balanced wrap-up"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"과도한 구조적 대칭과 추상적 나열"}} +{"key":"1b1ca775a211b68a:rewrite","original_sha":"1b1ca775a211b68a","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":82,"strongest_cue":"첫째·둘째·셋째 축과 남은 과제 3가지의 대칭적 나열 구조"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 3축 보고서 구조와 추상명사 나열"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"rigid three-axis scaffolding plus tidy triadic close"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"기계적 삼단 구조(첫째/둘째/셋째 축)와 정책 브리핑체 정형화된 문장 리듬"}} +{"key":"d94d64400975d9d6:original","original_sha":"d94d64400975d9d6","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive '정부는' openings and formulaic numbered policy lists","retried":true},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"과도하게 균일한 보도자료식 구조와 반복 표현"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"perfectly parallel 3-part policy scaffolding with uniform bureaucratic cadence"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 3단 구조와 반복되는 '~한다고 밝혔다/강조했다/설명했다' 문장 패턴"}} +{"key":"d94d64400975d9d6:rewrite","original_sha":"d94d64400975d9d6","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":87,"strongest_cue":"번호순 3대 대책 구조와 구체적 수치·출처 없이 관용적 정책 문구가 반복되는 문체"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균질한 3단 구성과 일반론적 정책 문장 반복"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"rigidly parallel tripartite policy template"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 3대 지원책 구조와 반복적인 ~방침이다/~것이다 마무리 패턴"}} +{"key":"af9d5918e27537b9:original","original_sha":"af9d5918e27537b9","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":86,"strongest_cue":"반복되는 '~해야 한다' 문장과 정형화된 문단 구조"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 문단 구조와 반복되는 설명 리듬","retried":true},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"uniform exhaustive sequential structure without stylistic variation"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"단조로운 문장 길이와 과도한 나열 구조"}} +{"key":"af9d5918e27537b9:rewrite","original_sha":"af9d5918e27537b9","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"uniform step-by-step structure with generic best-practice phrasing and no personal voice or concrete examples"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 문단 구조와 매끄러운 포괄 설명"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniform exhaustive section-by-section tutorial polish"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"overly uniform paragraph structure and exhaustive enumeration of every possible parameter/edge case without natural digression or personal framing"}} +{"key":"7e61ec1f91bca4da:original","original_sha":"7e61ec1f91bca4da","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"uniform paragraph structure with topic sentence, explanation, and summarizing close"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 설명문 구조와 과하게 정돈된 전개"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"evenly polished outline-driven exposition without personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 설명적 나열"}} diff --git a/artifacts/rewrite-efficacy-study4/bridge-gemini-3.1-pro.jsonl b/artifacts/rewrite-efficacy-study4/bridge-gemini-3.1-pro.jsonl new file mode 100644 index 00000000..18a4f223 --- /dev/null +++ b/artifacts/rewrite-efficacy-study4/bridge-gemini-3.1-pro.jsonl @@ -0,0 +1,108 @@ +{"key":"168f3c8118bd47aa:original","original_sha":"168f3c8118bd47aa","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":99,"strongest_cue":"AI preamble stating character count"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"분량 충족을 선언하는 메타 문장"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"char-count meta header plus rigid parallel FAQ sections"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"메타 서술(2238자·분량 체크)으로 AI 생성 후 검증된 텍스트임을 자기표시"}} +{"key":"168f3c8118bd47aa:rewrite","original_sha":"168f3c8118bd47aa","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":75,"strongest_cue":"Unnatural use of English-style em-dashes (—)"},"gpt":{"authorship":"ai","ai_likeness":72,"strongest_cue":"균일한 항목별 설명 구조"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"lived Kakao-specific edge cases in natural practitioner Korean"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"conversational, experience-based phrasing with irregular rhythm and specific debugging anecdotes"}} +{"key":"1ae1f4a64a2eab3f:original","original_sha":"1ae1f4a64a2eab3f","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"lack of code blocks or formatting for a technical tutorial"},"gpt":{"authorship":"ai","ai_likeness":92,"strongest_cue":"반복적인 ~해야 합니다와 균일한 설명 리듬"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"exhaustive polished step-by-step structure without personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 단계별 나열과 동일한 문장 패턴 반복"}} +{"key":"1ae1f4a64a2eab3f:rewrite","original_sha":"1ae1f4a64a2eab3f","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"Formulaic instructional tone and classic AI concluding sentence"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명 리듬과 반복적 지시문"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniformly exhaustive step-by-step tutorial cadence with no personal voice"},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"반복적인 단락 구조(시작→설정→구현→주의사항)와 과도한 명령형 조언(\"~하십시오\", \"~해야 합니다\")의 기계적 패턴"}} +{"key":"61babd677484cafa:original","original_sha":"61babd677484cafa","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":99,"strongest_cue":"missing punctuation for acronyms and lists (e.g., missing parentheses and commas)"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"포괄적 정책 키워드의 균일한 나열"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic multi-section progression dense with seamless buzzwords"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 축어체 나열형 구조와 무기한 연장되는 '~하고 있다' 종결 패턴"}} +{"key":"61babd677484cafa:rewrite","original_sha":"61babd677484cafa","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"Formulaic four-paragraph structure packed with generic management buzzwords"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"포괄적 정책 용어가 균일하게 이어지는 보고서식 문장"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"exhaustive multi-angle formulaic structure in uniform officialese"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"정책 수립 단계부터 목표 설정과 지표 설계를 분명히 하도록 강조한다"}} +{"key":"62acf994d71174b1:original","original_sha":"62acf994d71174b1","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"Opening sentence confirming character count constraint"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"조건 충족을 보고하는 메타문장"},"grok":{"authorship":"ai","ai_likeness":86,"strongest_cue":"character-count fulfillment preamble"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 정부 보도자료 구조(기관-일자-의결-배경-재원-분야-장관 발언-전망 순서)와 반복되는 ~했다고 밝혔다/~했다고 설명했다/~했다고 강조했다 등의 기계적 인용 구조"}} +{"key":"62acf994d71174b1:rewrite","original_sha":"62acf994d71174b1","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"absence of specific names for officials and experts"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"구체적 출처 없이 균형 잡힌 보도문 틀을 반복"},"grok":{"authorship":"ai","ai_likeness":76,"strongest_cue":"formulaic multi-section news template with rounded balance"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 대칭 구조와 정형화된 인용문 패턴"}} +{"key":"b79dc954d1a16e17:original","original_sha":"b79dc954d1a16e17","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic four-paragraph structure with generic attributions"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균질한 보도자료식 장문 문장"},"grok":{"authorship":"ai","ai_likeness":85,"strongest_cue":"exhaustive multi-angle balanced structure in uniform formal tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 병렬 구조와 반복적인 접속사(또한, 그리고, 특히)로 인한 기계적 리듬"}} +{"key":"b79dc954d1a16e17:rewrite","original_sha":"b79dc954d1a16e17","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"short, punchy journalistic sentences (e.g., '문제는 부품이다')"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"구체적 출처 없는 보도자료식 문장 반복"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic multi-angle coverage with uniform formal rhythm"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 구조와 반복적 문장 패턴"}} +{"key":"28d4eaa3438b3026:original","original_sha":"28d4eaa3438b3026","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"Formulaic press-release structure lacking specific names and dates"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 보도자료식 문장 리듬"},"grok":{"authorship":"ai","ai_likeness":89,"strongest_cue":"formulaic bureaucratic news structure with generic optimistic framing"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정책적 의지를 보여 주는 사례로 평가된다"}} +{"key":"28d4eaa3438b3026:rewrite","original_sha":"28d4eaa3438b3026","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":92,"strongest_cue":"highly formulaic press release structure lacking specific names, dates, or exact figures"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"균일한 보도자료식 문장 리듬과 평탄한 '-다' 종결 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"templated multi-paragraph policy brief with generic officials and polished balanced framing"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"정책 보도자료 형식의 과도한 구조화 (배경→목적→대상→금액→절차→전망→분석→배경 반복→마무리)와 반복적인 인과/목적 구문 (~는 데 목적을 뒀다, ~를 연결하려는 조치다, ~에 기여할 것, ~가 될 것이라는 분석이 나온다)"}} +{"key":"23a5b6fbf574e6f7:original","original_sha":"23a5b6fbf574e6f7","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"lack of specific proper nouns (ministries, officials) and highly formulaic structure"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 문단 구조와 관료적 상투어 반복"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"uniform schematic paragraphs with formulaic bureaucratic phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 정부 보도자료 구조와 반복적인 ~한다는 계획이다/~기로 했다/~고 덧붙였다 패턴"}} +{"key":"23a5b6fbf574e6f7:rewrite","original_sha":"23a5b6fbf574e6f7","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Formulaic 5-paragraph structure and predictable 'limitations but potential' conclusion"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 정책 보도 템플릿과 반복 종결"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"even parallel blocks and polished officialese without voice"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 구조와 반복적인 '~것이다/방침이다/계획이다' 종결 패턴"}} +{"key":"4900e9943fcbd984:original","original_sha":"4900e9943fcbd984","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"formulaic structure and cliché ending (귀추가 주목된다)"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"반복적인 보도자료식 문장 패턴"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"uniform formulaic bureaucratic prose with exhaustive balanced multi-section structure"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"기대된다/풀이된다/보인다/나온다 등 무성한 추측·해석·전망 투성이 문장 구조"}} +{"key":"4900e9943fcbd984:rewrite","original_sha":"4900e9943fcbd984","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic structure and cliché conclusion"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"보도자료식 문장 구조와 완충 표현의 반복","topped_up":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic sectioned exposition with tidy caveats and canned wrap-up","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 구조와 반복적 수치 제시 (3조 2000억 원, 30곳, 1200억 원, 10만 건, 3만 건 등) 및 인용구 배치 패턴","topped_up":true}} +{"key":"312380a845a3f6f0:original","original_sha":"312380a845a3f6f0","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"highly formulaic enumeration (첫째~다섯째, 1단계~3단계) lacking specific entities or figures"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"균일한 보도자료식 문단 구조"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"exhaustive parallel lists and staged plans in perfectly uniform bureaucratic prose"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"numbered list structure with parallel clause patterns (첫째/둘째/셋째/넷째/다섯째)"}} +{"key":"312380a845a3f6f0:rewrite","original_sha":"312380a845a3f6f0","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"Highly formulaic structure with explicit numbering (첫째~다섯째, 1단계~3단계) and lack of specific proper nouns"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"구체명 없이 전방위 정책을 균질하게 나열함","topped_up":true},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"exhaustive formulaic multi-pillar lists and seamless officialese","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형적 5단계 구조(첫째/둘째/셋째/넷째/다섯째)와 '본격 추진', '전면 재편', '전방위 지원' 등 한국 정부 보도자료형 관용구 반복","topped_up":true}} +{"key":"482a1b346601eed1:original","original_sha":"482a1b346601eed1","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"experience-based pragmatic developer tips"},"gpt":{"authorship":"ai","ai_likeness":83,"strongest_cue":"균일하게 정리된 설명형 문단 구조"},"grok":{"authorship":"ai","ai_likeness":81,"strongest_cue":"flawless stepwise coverage with uniform pedagogical polish"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"conversational hedging and reader-directed imperatives"}} +{"key":"482a1b346601eed1:rewrite","original_sha":"482a1b346601eed1","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":20,"strongest_cue":"experience-based practical tips and natural plain-form phrasing"},"gpt":{"authorship":"ai","ai_likeness":74,"strongest_cue":"균일한 기술문서식 문단 리듬"},"grok":{"authorship":"ai","ai_likeness":72,"strongest_cue":"even sequential walkthrough with exhaustive, quirk-free coverage"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"비격식체+구어체 끝어미(~-야 하며, ~는 편이 낫다, ~짚고 넘어가야 한다)"}} +{"key":"bb5dc0d1ffc67c28:original","original_sha":"bb5dc0d1ffc67c28","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":98,"strongest_cue":"Formulaic transitions and the transliteration glitch '퍼ovskite'"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체명 없이 반복되는 포괄적 요약 구조"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"uniform parallel sections with formulaic institutional phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 전문용어 나열"}} +{"key":"bb5dc0d1ffc67c28:rewrite","original_sha":"bb5dc0d1ffc67c28","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"highly formulaic paragraph structure categorized by scientific domains"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"분야별로 반복되는 균질한 보고서식 문단 구조"},"grok":{"authorship":"ai","ai_likeness":83,"strongest_cue":"rigid parallel sections each recycling research-highlight→NRF-action→policy template"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"구조적 반복과 정형화된 전환: 매 단락이 '분야 소개 → 구체적 사례/성과 → 연구재단의 대응/계획'의 동일한 3단 구조로 기계적으로 반복되며, 인간 필자가 보일 개인적 관점·어조 변화·구조적 실험성이 전혀 없음"}} +{"key":"686e5dcc3ceb1749:original","original_sha":"686e5dcc3ceb1749","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":99,"strongest_cue":"unnatural density of tech buzzwords and formulaic structure"},"gpt":{"authorship":"ai","ai_likeness":95,"strongest_cue":"구체적 일화 없이 균질하게 나열되는 성과와 감상"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic seamless structure with idealized polished positivity"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 양치기식 나열 구조와 감정을 술어로만 서술하는 추상적 문체"}} +{"key":"686e5dcc3ceb1749:rewrite","original_sha":"686e5dcc3ceb1749","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"Unnaturally comprehensive list of tech buzzwords and formulaic structure"},"gpt":{"authorship":"ai","ai_likeness":92,"strongest_cue":"구체적 장면 없이 균일한 성과·기술 나열"},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"formulaic multi-section retrospective with exhaustive buzzword coverage and tidy three-lessons closer"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 구조적 대칭과 정형화된 키워드 나열"}} +{"key":"928d18c1dacf3fb2:original","original_sha":"928d18c1dacf3fb2","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Highly specific, culturally nuanced anecdotes and natural colloquialisms like '은행 앱 같아요'"},"gpt":{"authorship":"ai","ai_likeness":76,"strongest_cue":"과하게 매끈한 문제-위기-교훈 서사"},"grok":{"authorship":"human","ai_likeness":41,"strongest_cue":"dense insider micro-anecdotes with cultural sting"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적이고 생생한 회고적 서술과 팀 내부 대화, 감정적 반응의 세밀한 묘사"}} +{"key":"928d18c1dacf3fb2:rewrite","original_sha":"928d18c1dacf3fb2","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"cultural nuance of '은행 앱 같아요' as a painful critique"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"너무 매끈한 문제-위기-교훈 서사","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"granular firsthand anecdotes (px values, Slack reactions, '은행 앱' sting) with natural self-critique","topped_up":true},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적 내부 에피소드와 감정적 회복 서사","topped_up":true}} +{"key":"65ca55ba6400468e:original","original_sha":"65ca55ba6400468e","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"Formulaic structure with '첫째/둘째/셋째' lists and cliché transitions"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균일한 설명문 구조와 상투적 확장 표현"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic numbered essay structure plus stock visionary closing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"overly symmetric paragraph structure with numbered rhetorical triads (첫째/둘째/셋째) and predictable conclusion arc"}} +{"key":"65ca55ba6400468e:rewrite","original_sha":"65ca55ba6400468e","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic essay structure and predictable transitions"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"반복적이고 균형 잡힌 설명문 구조"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"flawlessly balanced multi-section essay with seamless transitions and no idiosyncrasies"},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"반복적인 '입니다/습니다' 종결과 문단별 구조적 대칭(문제-해결-확장)"}} +{"key":"fcb1fd7071034cf7:original","original_sha":"fcb1fd7071034cf7","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Formulaic problem-implementation-results-future structure with generic transitions"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균일한 문장 리듬의 포괄적 사례문체"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"formulaic problem-solution-results structure with uniformly polished corporate tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 기술 세부사항 나열과 구조화된 단계별 설명"}} +{"key":"fcb1fd7071034cf7:rewrite","original_sha":"fcb1fd7071034cf7","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic problem-solution-result structure and generic summarizing conclusion"},"gpt":{"authorship":"ai","ai_likeness":90,"strongest_cue":"구체적 출처 없이 매끄러운 사례형 구조와 반복적 일반화"},"grok":{"authorship":"ai","ai_likeness":83,"strongest_cue":"formulaic problem-solution-metrics-future arc with exhaustive polished coverage"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 구조적 대칭과 나열식 전개"}} +{"key":"df471256a3e0690c:original","original_sha":"df471256a3e0690c","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic essay structure and predictable transitions"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명 구조와 일반론적 전개"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"formulaic problem–solution–benefit sections with uniform polish and no voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 구조적 대칭과 설명적 나열"}} +{"key":"df471256a3e0690c:rewrite","original_sha":"df471256a3e0690c","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Developer idioms like '시간이 날아간다' and '굴릴 수 있는'"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"매우 균일한 설명문 구조와 일반론적 전개","topped_up":true},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"textbook problem→solutions→benefits→caveats arc with uniform polish","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"overly balanced paragraph structure with exhaustive enumeration","topped_up":true}} +{"key":"efc6bbbb5fcc65ec:original","original_sha":"efc6bbbb5fcc65ec","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"Formulaic structure and generic tech-blog clichés lacking concrete technical details"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체성 없는 장문 회고와 상투적 교훈 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic multi-section reflective arc with polished platitudinous close"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 구조적 패턴 (문단 시작: ~하면서/하면서는 → 중간: 구체적 기능 설명 → 끝: 교훈/의미 도출)"}} +{"key":"efc6bbbb5fcc65ec:rewrite","original_sha":"efc6bbbb5fcc65ec","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"formulaic paragraph endings with profound reflections"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균질한 단락 전개와 추상적 교훈형 결말","topped_up":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic sectioned arc with polished lessons and closer","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 반성적 결론 구조 (마지막 단락의 '다시 생각했다/그게 ~이다/그것만으로도 충분히 보람차다/바란다/교훈이다' 연쇄)","topped_up":true}} +{"key":"8997830c69d60b15:original","original_sha":"8997830c69d60b15","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"Formulaic 5-paragraph structure with mechanical transitions and generic corporate examples"},"gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"반복적이고 일반적인 기업문화 서술"},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"perfectly parallel slogan-driven anecdotes with uniform inspirational cadence"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"반복적인 구조적 패턴과 동일한 문장 틀의 재사용"}} +{"key":"8997830c69d60b15:rewrite","original_sha":"8997830c69d60b15","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":92,"strongest_cue":"generic placeholder anecdotes and formulaic essay structure"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"구체성 없는 반복적 성공 사례 구조"},"grok":{"authorship":"ai","ai_likeness":81,"strongest_cue":"schematic multi-anecdote arc that always resolves cleanly to the same branded slogan"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복되는 구조적 패턴과 정형화된 서술 리듬"}} +{"key":"dbb6bfe4103d2362:original","original_sha":"dbb6bfe4103d2362","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Highly idiomatic Korean tech-industry phrasing like '쿼리를 던진', '뭉뚱그리면', and '상한에 붙어 있어도'"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 교과서식 문단 전개"},"grok":{"authorship":"ai","ai_likeness":72,"strongest_cue":"uniform problem-solution-ops-ROI scaffolding with templated transitions"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"colloquial spoken rhythm with hedging and personal experience markers"}} +{"key":"dbb6bfe4103d2362:rewrite","original_sha":"dbb6bfe4103d2362","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"experience-based pragmatic phrasing and natural idioms"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 단락 구조와 교과서식 전개"},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"checklist-complete didactic arc with uniformly neat per-paragraph takeaways"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"구체적 실무 경험과 현장감 있는 표현"}} +{"key":"be19e73ec1806639:original","original_sha":"be19e73ec1806639","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"rigid '첫째... 마지막으로' enumeration structure"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"첫째-둘째-셋째식 균질한 전개"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"rigidly enumerated, evenly balanced sections with polished generic corporate rhetoric"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 1-2-3-4-5 구조와 각 문단의 동일한 패턴(문제 제기→토스식 TPM 제시→AI 시너지 설명→비유/은유로 마무리)"}} +{"key":"be19e73ec1806639:rewrite","original_sha":"be19e73ec1806639","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"formulaic 'first, second, third, fourth' paragraph structure"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"첫째·둘째식 균질한 전개와 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"rigid 4-point parallel structure with identical AI+TPM framing each section"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"기계적 병렬 구조(첫째/둘째/셋째/넷째) + 각 단락의 동일한 서론-전개-결론 삼단 논법"}} +{"key":"8f39c12fc82867a2:original","original_sha":"8f39c12fc82867a2","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"highly systematic chronological paragraph structure"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명문 구조와 포괄적 체크리스트식 전개","retried":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"exhaustive even multi-section coverage with flat polished tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"uniformly structured paragraphs with identical topic-sentence-first pattern and exhaustive bullet-like enumeration of technical steps without any digression, personal anecdote, or stylistic variation"}} +{"key":"8f39c12fc82867a2:rewrite","original_sha":"8f39c12fc82867a2","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Idiomatic developer phrasing like '버튼 하나 붙이는 수준' and '로그에 찍히지 않도록'"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"균일한 설명 리듬과 체크리스트식 포괄성"},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"uniform exhaustive tutorial cadence, no personal fingerprint"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"overly systematic paragraph structure with identical rhythm (topic sentence → bullet-like elaboration → cautionary closing)"}} +{"key":"1b1ca775a211b68a:original","original_sha":"1b1ca775a211b68a","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"Formulaic structure (첫째 축, 둘째 축, 셋째 축, 종합하면)"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균질한 삼분 구조와 추상명사 나열"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"rigid tripartite axes + formulaic balanced wrap-up"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"과도한 구조적 대칭과 추상적 나열"}} +{"key":"1b1ca775a211b68a:rewrite","original_sha":"1b1ca775a211b68a","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":92,"strongest_cue":"rigidly formulaic structure (첫째/둘째/셋째 축 and three concluding tasks)"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 3축 보고서 구조와 추상명사 나열"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"rigid three-axis scaffolding plus tidy triadic close"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"기계적 삼단 구조(첫째/둘째/셋째 축)와 정책 브리핑체 정형화된 문장 리듬"}} +{"key":"d94d64400975d9d6:original","original_sha":"d94d64400975d9d6","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic 'first, second, third' paragraph structure"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"과도하게 균일한 보도자료식 구조와 반복 표현"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"perfectly parallel 3-part policy scaffolding with uniform bureaucratic cadence"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 3단 구조와 반복되는 '~한다고 밝혔다/강조했다/설명했다' 문장 패턴"}} +{"key":"d94d64400975d9d6:rewrite","original_sha":"d94d64400975d9d6","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"rigid 'first, second, third' paragraph structure"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균질한 3단 구성과 일반론적 정책 문장 반복"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"rigidly parallel tripartite policy template"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 3대 지원책 구조와 반복적인 ~방침이다/~것이다 마무리 패턴"}} +{"key":"af9d5918e27537b9:original","original_sha":"af9d5918e27537b9","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic sequential paragraph structure typical of LLM technical summaries"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 문단 구조와 반복되는 설명 리듬","retried":true},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"uniform exhaustive sequential structure without stylistic variation"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"단조로운 문장 길이와 과도한 나열 구조"}} +{"key":"af9d5918e27537b9:rewrite","original_sha":"af9d5918e27537b9","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial Korean developer jargon (e.g., 토큰을 뽑다, 로직을 짜다, 값이 내려오다)"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 문단 구조와 매끄러운 포괄 설명"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniform exhaustive section-by-section tutorial polish"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"overly uniform paragraph structure and exhaustive enumeration of every possible parameter/edge case without natural digression or personal framing"}} +{"key":"7e61ec1f91bca4da:original","original_sha":"7e61ec1f91bca4da","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"domain-specific technical vocabulary and realistic engineering constraints"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 설명문 구조와 과하게 정돈된 전개"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"evenly polished outline-driven exposition without personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 설명적 나열"}} +{"key":"7e61ec1f91bca4da:rewrite","original_sha":"7e61ec1f91bca4da","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"highly specific real-world data engineering nuances"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"균일한 교과서식 단락 전개","topped_up":true},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"exhaustively complete didactic structure with uniform balanced takeaways","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 병렬 구조와 반복적인 설명적 패턴","topped_up":true}} +{"key":"5de62744badff9a0:original","original_sha":"5de62744badff9a0","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"highly formulaic structure and predictable transitions"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 문단 구조와 추상적 일반론 반복"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"uniform polished multi-paragraph thesis with formulaic X-not-Y contrasts"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 병렬 구조와 과도한 정형화된 논리 전개"}} +{"key":"5de62744badff9a0:rewrite","original_sha":"5de62744badff9a0","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"overuse of 'not A, but B' rhetorical structures"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"균일한 문단 구조와 평서형 리듬"},"grok":{"authorship":"ai","ai_likeness":79,"strongest_cue":"glass-smooth not-X-but-Y reframes and product-pitch structure"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 직조사(는/은/이/가) 사용으로 인한 기계적 리듬"}} +{"key":"5c322972487d701e:original","original_sha":"5c322972487d701e","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Formulaic sequential structuring (첫 단계는... 둘째 단계는... 마지막으로) and perfectly balanced exposition"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 교과서식 전개와 과잉 나열"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniform multi-section whitepaper cadence, no personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 구조와 과도한 구체성 나열"}} +{"key":"5c322972487d701e:rewrite","original_sha":"5c322972487d701e","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Use of natural Korean IT colloquialisms like '박혀 있다', '갈아 끼우다', and '긁어 저장하다'"},"gpt":{"authorship":"ai","ai_likeness":68,"strongest_cue":"균일하게 정리된 교과서식 전개"},"grok":{"authorship":"ai","ai_likeness":68,"strongest_cue":"even multi-section didactic structure with polished wrap-up"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"과도하게 정돈된 구조와 반복적인 논리적 전개(문제 제기 → 기술 설명 → 오해 바로잡기 → 실행 전략 → 결론)의 기계적 패턴"}} +{"key":"add2d734b39e3d89:original","original_sha":"add2d734b39e3d89","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"inclusion of website breadcrumb and standard bureaucratic press release phrasing"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"보도자료식 세부 수치와 사업명 밀도"},"grok":{"authorship":"human","ai_likeness":76,"strongest_cue":"공식 정책브리핑 관료체와 전형적 보도 형식"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정책 브리핑 형식의 나열식 구조와 반복적인 '지원한다/추진한다/확대한다' 어미 패턴"}} +{"key":"add2d734b39e3d89:rewrite","original_sha":"add2d734b39e3d89","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"inclusion of website breadcrumb and specific government policy terminology"},"gpt":{"authorship":"human","ai_likeness":44,"strongest_cue":"구체적 수치와 정책명 중심의 보도자료식 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"authentic 정책브리핑 house style with dense native policy nomenclature","topped_up":true},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"journalistic headline + dateline structure with specific ministry attribution and policy details","topped_up":true}} +{"key":"c66b92bc6b62a9b3:original","original_sha":"c66b92bc6b62a9b3","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Unrelated web scraping artifacts (comment rules and sidebar headline) appended at the end"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"구체 수치가 많은 보도자료식 문장"},"grok":{"authorship":"human","ai_likeness":24,"strongest_cue":"dense Korean ministry press-release cadence with precise budget/eligibility figures and trailing paste junk"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive formulaic opening clauses (중기부는 이어서/또한/아울러) with identical structural rhythm"}} +{"key":"c66b92bc6b62a9b3:rewrite","original_sha":"c66b92bc6b62a9b3","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"web scraping artifacts at the end"},"gpt":{"authorship":"human","ai_likeness":52,"strongest_cue":"보도자료식 반복 구조"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"precise fiscal/policy specifics in dry Korean official-news cadence plus terminal scrap artifact"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic government press release structure with repetitive 'A를 B한다' sentence patterns and excessive numeric specificity"}} +{"key":"68f6f173662b6d6a:original","original_sha":"68f6f173662b6d6a","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"web scraping artifacts and boilerplate legal text"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"공공기관 보도자료와 법령 보일러플레이트가 그대로 섞인 복사문"},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"scraped legal/copyright footers and unrelated fragments"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"numbered list with bullet-point policy summaries"}} +{"key":"68f6f173662b6d6a:rewrite","original_sha":"68f6f173662b6d6a","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"appended copyright boilerplate and web scraping artifacts"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"웹페이지 법률문구와 무관한 보도설명 제목이 섞인 스크랩 흔적"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"abrupt web-scrape dump of fragmented legal clauses + unrelated 보도설명"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정책 보도자료 형식의 기계적 나열 구조(①②③ 번호 매기기, 예산 금액 나열, 장관 인용 후 마무리)와 마지막에 저작권/법률 조항/사칭 금지 등 무관한 내용이 그대로 붙여넣기된 조각난 구성"}} +{"key":"0e2d30b08fe7d170:original","original_sha":"0e2d30b08fe7d170","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"disjointed web scraping artifacts like copyright clauses and unrelated headlines"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"보도자료·법령 문구가 뒤섞인 비일관적 콜라주"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"rigidly templated parallel FAQ answers with identical syntactic skeletons"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic paragraph openings (이에/아울러/한편/먼저/다만/특히) + numbered legal clauses + FAQ template structure"}} +{"key":"0e2d30b08fe7d170:rewrite","original_sha":"0e2d30b08fe7d170","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"disjointed inclusion of copyright statutes and unrelated headlines indicating a web scrape"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"공식 보도자료·법령 문구가 뒤섞인 스크랩 흔적"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"precise Korean city/transport-zone eligibility cases"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"abrupt concatenation of unrelated source fragments"}} +{"key":"a7a211d5527910f3:original","original_sha":"a7a211d5527910f3","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"web scraping artifacts and copyright boilerplate at the end"},"gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"보도자료식 구체 수치와 기관명"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"official briefing formula + scrapy end-of-doc legal junk"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정부 공식 보도자료 형식의 반복적 구조와 법령 조항 나열"}} +{"key":"a7a211d5527910f3:rewrite","original_sha":"a7a211d5527910f3","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"web scraping artifacts at the end"},"gpt":{"authorship":"human","ai_likeness":28,"strongest_cue":"정책브리핑 스크랩 흔적과 구체적 수치","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"dense named entities + exact policy figures in standard briefing register","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정책 브리핑 형식의 나열적 구조와 반복적인 문장 패턴","topped_up":true}} +{"key":"f55d815f753bd79c:original","original_sha":"f55d815f753bd79c","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"spacing artifacts before particles and punctuation"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"구체적인 제품 개발 일화와 어색한 복사/편집 흔적"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"first-person team anecdotes with specific names, tech details & emotions"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational narrative voice with specific anecdotes and emotional texture"}} +{"key":"f55d815f753bd79c:rewrite","original_sha":"f55d815f753bd79c","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Natural use of colloquial Korean and specific Toss-internal jargon"},"gpt":{"authorship":"human","ai_likeness":28,"strongest_cue":"구체적 내부 용어와 인터뷰식 시행착오"},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"grounded multi-voice anecdotes with proprietary tech details & emotions"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"irregular paragraph lengths and anecdotal digressions"}} +{"key":"65a8227710e2d65a:original","original_sha":"65a8227710e2d65a","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"irregular sentence endings mixing conversational tone with note-like fragments"},"gpt":{"authorship":"human","ai_likeness":37,"strongest_cue":"불규칙한 메모식 문장과 구체적 구현 디테일"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"unpolished note-style fragments + personal team-move anecdote with CPL/LTI specifics"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"일기체 협업 회고의 자연스러운 화자 교체(이경민/문홍윤)"}} +{"key":"65a8227710e2d65a:rewrite","original_sha":"65a8227710e2d65a","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"highly specific organizational context and personal sign-off format"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적인 구현 디테일과 메모식 문장","retried":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"IR-plugin gotchas + principle/principal typo"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적인 팀명·프로젝트명·기술 용어의 자연스러운 혼합과 비공식적 말투(예: '쉽지 않았어요', '깜빡하면')"}} +{"key":"1d3f406d7c204392:original","original_sha":"1d3f406d7c204392","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"corporate footer and specific brand tone"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적 채용 페이지 문맥과 푸터 정보"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"company-specific metrics, named projects (DEUS, Frontend Fundamentals), dates, and legal footer details"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"conversational tone with direct address and informal particles (예요, 해요, 보세요)"}} +{"key":"1d3f406d7c204392:rewrite","original_sha":"1d3f406d7c204392","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"exact corporate footer and business registration info"},"gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"구체적인 회사·기술·날짜와 웹페이지 푸터 흔적"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"verifiable Toss-specific facts, products, and legal footer"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"company-specific details and named individuals"}} +{"key":"060ac470697071dd:original","original_sha":"060ac470697071dd","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":2,"strongest_cue":"highly specific personal anecdotes and conversational rhythm"},"gpt":{"authorship":"human","ai_likeness":12,"strongest_cue":"구어체 인터뷰의 비정형 리듬과 구체적 회고"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"messy spoken cadence with raw personal specifics"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"highly specific, self-deprecating personal anecdotes with irregular emotional rhythm"}} +{"key":"060ac470697071dd:rewrite","original_sha":"060ac470697071dd","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"highly natural colloquialisms and vulnerable emotional expressions"},"gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"불규칙한 인터뷰 구어체와 구체적 일화"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"raw spoken-style vulnerabilities and idiosyncratic personal details"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial self-deprecation and emotional specificity"}} +{"key":"022cba7e5d37000a:original","original_sha":"022cba7e5d37000a","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Specific author intro and reference to missing diagram"},"gpt":{"authorship":"human","ai_likeness":46,"strongest_cue":"구체적 구현 세부와 불규칙한 띄어쓰기"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"dense proprietary infra specifics + mixed formal/casual Korean tone"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"scattered grammar/spacing errors (띄어쓰기 불일치, 불완전한 문장) and first-person voice with specific team/tech details"}} +{"key":"022cba7e5d37000a:rewrite","original_sha":"022cba7e5d37000a","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"음/함 endings in bullet points"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"토스 환경의 구체적 기술 세부사항"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"informal ~었음 note-style pain-point list + concrete internal stack evolution (HBase/Redis→Aerospike, Trainkit)"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"구조화된 불릿 포인트와 반복되는 '입니다/습니다' 종결 패턴"}} +{"key":"664f106023e07411:original","original_sha":"664f106023e07411","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"highly specific technical details and internal data"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"조사 앞 공백과 결론적으로식 정리 구조 반복"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"specific internal stats + exact KRW cost calcs"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"반복적인 구조적 패턴 (첫째/둘째/셋째, 장점-단점-결론 반복)와 과도한 괄호 영어 병기"}} +{"key":"664f106023e07411:rewrite","original_sha":"664f106023e07411","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"highly specific operational pain points and corporate context"},"gpt":{"authorship":"ai","ai_likeness":74,"strongest_cue":"반복적인 장단점 나열 구조"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"specific Toss Securities workload stats + real AWS cost calcs + prior-post continuity"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"비유적 표현과 구체적 수치"}} +{"key":"8374ce653bfd06a5:original","original_sha":"8374ce653bfd06a5","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"sentences abruptly cutting off mid-thought due to copy-paste extraction errors"},"gpt":{"authorship":"human","ai_likeness":72,"strongest_cue":"반복적인 웹진식 연결어와 포괄적 전망 문장"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"specific NRF institutional voice, email, and disclaimer"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 '-는데요' 종결 어미 패턴"}} +{"key":"8374ce653bfd06a5:rewrite","original_sha":"8374ce653bfd06a5","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"multiple abruptly truncated sentences indicating copy-paste errors"},"gpt":{"authorship":"human","ai_likeness":64,"strongest_cue":"기관 웹진식 정형 문체"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"institutional NRF disclaimer + colloquial particles with mid-sentence truncations"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"반복적인 '입니다/습니다' 종결 + 나열형 구조 + 전문용어 나열 후 '죠/데요' filler로 끝내는 뉴스 요약 템플릿"}} +{"key":"3434597ff1f55eda:original","original_sha":"3434597ff1f55eda","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"HTML/CSS copy-paste artifacts like &]:text-inherit\">"},"gpt":{"authorship":"human","ai_likeness":55,"strongest_cue":"HTML scraping artifacts in technical documentation"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"HTML/CSS scrape artifacts with exact product/policy dates"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive parallel structure with identical sentence frames"}} +{"key":"3434597ff1f55eda:rewrite","original_sha":"3434597ff1f55eda","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"exact excerpts from official Kakao developer documentation including specific policy dates and RFC references"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"공식 문서식 구체 용어와 날짜"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"exact platform policy dates/RFC/product jargon in choppy doc style"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive sentence structure with subject-verb-object pattern and lack of personal voice"}} +{"key":"b5941b832a3c1b5f:original","original_sha":"b5941b832a3c1b5f","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"mixed speech levels and broken numbering"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"불연속 번호와 ' HTML 엔티티","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"inconsistent renumbered steps and abrupt section jumps"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"numbered procedural steps with robotic '해요' endings"}} +{"key":"b5941b832a3c1b5f:rewrite","original_sha":"b5941b832a3c1b5f","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"HTML entity artifacts like ' and broken list numbering"},"gpt":{"authorship":"human","ai_likeness":44,"strongest_cue":"불연속 번호와 HTML 엔티티 편집 흔적","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"jumbled real docs paste: out-of-order steps, HTML entities"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"numbered procedural steps with inconsistent numbering (2→3→2→4)"}} +{"key":"f780e8a5a60cd1f9:original","original_sha":"f780e8a5a60cd1f9","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"web scraping artifacts and typo (강조헸다)"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"정책기사형 수치·인용 구조와 크롤링 잔재","topped_up":true},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"formulaic official press-release style with exact budget figures plus scraped legal/unrelated fragments"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"기관명·예산액·법조항 목록의 조합적 나열과 인용문 직접 기재 형식"}} +{"key":"f780e8a5a60cd1f9:rewrite","original_sha":"f780e8a5a60cd1f9","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"web scraping artifacts at the end"},"gpt":{"authorship":"human","ai_likeness":28,"strongest_cue":"기사 스크랩식 제목·수치·법령 조각","topped_up":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"dense official numbers, law cites, and scrape artifacts"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"news article with source attribution, named officials, and legal citation boilerplate"}} +{"key":"bdfecbbcf4002026:original","original_sha":"bdfecbbcf4002026","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"authentic user comments with natural typos and slang"},"gpt":{"authorship":"human","ai_likeness":31,"strongest_cue":"웹페이지 푸터와 거친 실제 댓글 혼입","topped_up":true},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"specific hardware trade-offs plus raw typo-filled user comments"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"Raw user comments at bottom (typos, slang, emotional tone, unstructured grievances)"}} +{"key":"bdfecbbcf4002026:rewrite","original_sha":"bdfecbbcf4002026","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"authentic user comments with native typos like '구지' and '거지같이'"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"실제 댓글처럼 보이는 비정제 문장과 오타","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"raw typo-filled angry user comments after specific hardware trade-off story"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial, emotionally charged user comments at the end with intentional typos, slang, and raw frustration ('쓰기 거지같이', '꼭 신경써주세요', '1프로도 안돼요')"}} +{"key":"7ee5f186b79a4a43:original","original_sha":"7ee5f186b79a4a43","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"highly specific organizational context and natural tech-industry jargon"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"구체 사례 없이 같은 추상 구조를 반복","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"lived Toss-specific gray-zone org thesis, not generic TPM blurb"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"Korean-specific contractions and natural rhythm breaks (e.g., '있기도 하죠', '많았습니다', '입니다') with irregular sentence lengths and occasional spoken-style fragments that deviate from AI's tendency toward uni"}} +{"key":"7ee5f186b79a4a43:rewrite","original_sha":"7ee5f186b79a4a43","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"highly specific organizational context and temporal grounding"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 추상 명사와 균일한 단락 리듬","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"first-person Toss origin story with a sustained, non-generic thesis","topped_up":true},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational rhythm with deliberate repetition and structural tension","topped_up":true}} +{"key":"e30f61fb56ba2b31:original","original_sha":"e30f61fb56ba2b31","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"highly specific corporate metrics and technical stack details"},"gpt":{"authorship":"human","ai_likeness":62,"strongest_cue":"구체적 사내 수치와 오탈자가 섞인 홍보문 리듬","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"Korean typos and slips (판단은, 비스니스, 많은 데이터 많은 데이터)"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"구조적 반복과 정형화된 전환구"}} +{"key":"e30f61fb56ba2b31:rewrite","original_sha":"e30f61fb56ba2b31","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Toss's signature conversational tone combined with highly specific proprietary metrics and technical details"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"구체적 내부 수치와 기술 맥락","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"specific dbt/DW ops details + real usage metrics","topped_up":true},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"conversational first-person voice with specific anecdotes and direct quotes","topped_up":true}} +{"key":"e0366816ddef04e5:original","original_sha":"e0366816ddef04e5","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"idiomatic Korean developer slang like '응답 시간이 계속 튀었고'"},"gpt":{"authorship":"ai","ai_likeness":72,"strongest_cue":"초반 문장 반복과 매끈한 설명형 구조","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"ops war-stories with real QPS, accounts, format glitches"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial Korean endings (했어요, 였어요, 거거든요) with natural digressions and specific operational war stories"}} +{"key":"e0366816ddef04e5:rewrite","original_sha":"e0366816ddef04e5","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"human editing error (exact repetition of opening sentence)"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적 운영 수치와 구현 세부","topped_up":true},"grok":{"authorship":"human","ai_likeness":24,"strongest_cue":"duplicated intro plus concrete internal ops metrics and trial-and-error narrative"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial Korean endings (어요/였어요) with natural digressions and specific operational anecdotes"}} +{"key":"4214406639383b83:original","original_sha":"4214406639383b83","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"idiomatic Korean tech blog phrasing and specific merchant empathy"},"gpt":{"authorship":"human","ai_likeness":54,"strongest_cue":"구체적 운영 맥락과 자연스러운 띄어쓰기 흔들림","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"insider merchant-ecosystem constraints and organizational inertia"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational parenthetical asides and deliberate reader-addressing rhythm (e.g., '뉴스에서 한 번쯤 들어 보셨을 단어일 텐데요', '조금 더 구체적으로 들여다보면 이렇습니다')"}} +{"key":"4214406639383b83:rewrite","original_sha":"4214406639383b83","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"highly specific operational context and empathetic narrative voice"},"gpt":{"authorship":"human","ai_likeness":41,"strongest_cue":"구체적인 운영 맥락과 도메인 디테일","topped_up":true},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"lived PG ops constraints & organizational inertia voice"},"kimi":{"authorship":"human","ai_likeness":20,"strongest_cue":"conversational parenthetical asides and self-interruptions"}} +{"key":"272b1487dead94f0:original","original_sha":"272b1487dead94f0","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"highly specific developer analogies and RAG critiques"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"과도하게 균질한 논리 전개와 괄호식 영어 개념 병기","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"first-person hedging + original domain framing (executable SSOT)"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"irregular paragraph lengths and organic pacing"}} +{"key":"272b1487dead94f0:rewrite","original_sha":"272b1487dead94f0","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Idiomatic phrasing ('1시간을 날리죠') and highly specific developer analogies ('oh-my-zsh')"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"반복적인 영어 병기와 균일한 논설 구조","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"colloquial first-person Korean tech-essay cadence","topped_up":true},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational self-correction and hedging","topped_up":true}} +{"key":"971cc5650bbf8bf8:original","original_sha":"971cc5650bbf8bf8","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"web scraping artifacts like '&]:text-inherit'>'"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"웹문서 스크래핑 잔재","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"garbled CSS/HTML scrapings in fragmented FAQ docs"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic Q&A structure with numbered procedural steps"}} +{"key":"971cc5650bbf8bf8:rewrite","original_sha":"971cc5650bbf8bf8","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"HTML/CSS scraping artifacts (&]:text-inherit) and direct answers to missing FAQ questions"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"문서 조각과 HTML 잔여물이 섞인 편집 흔적","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"scraped HTML artifacts in Kakao FAQ docs"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"mechanical Q&A structure with repetitive formulaic transitions"}} +{"key":"20e25898a7e6fe9e:original","original_sha":"20e25898a7e6fe9e","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Broken HTML/CSS scraping artifacts like '&]:text-inherit\">'"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"스크랩된 기술문서의 HTML 잔여 토큰","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"scraped fragments with residual HTML markup"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"broken HTML artifacts (&]:text-inherit) mixed with flat, repetitive instructional register"}} +{"key":"20e25898a7e6fe9e:rewrite","original_sha":"20e25898a7e6fe9e","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"highly specific Kakao SDK method names and exact FAQ references"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"구체적인 SDK/API 객체명과 문서 조각의 흔적"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"exact Kakao Flutter SDK methods/types, not generic filler"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"반복되는 '요청이 성공하면 ~가 반환됩니다' 구조와 기술 문서 전체에 걸친 일정한 절차적 나열 패턴"}} +{"key":"1707285500db245b:original","original_sha":"1707285500db245b","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"repetitive copy-pasted documentation snippets and fragmented sentences"},"gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"공식 문서식 반복과 API 세부값 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"choppy official-doc fragments with near-duplicate language sample listings"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복되는 정형화된 문장 패턴과 기술 문서의 기계적 나열 구조"}} +{"key":"1707285500db245b:rewrite","original_sha":"1707285500db245b","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Repetitive boilerplate for different languages"},"gpt":{"authorship":"human","ai_likeness":22,"strongest_cue":"구체적인 API 파라미터와 문서 조각식 반복","topped_up":true},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"choppy concatenated official API docs with corporate policy phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적 구조와 기계적 나열 (예: '네이버 로그인 접근토큰 획득 예제는 X개의 파일로 구성됩니다' 3회 반복)"}} +{"key":"339acb222713df25:original","original_sha":"339acb222713df25","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"Unparsed HTML entities (·) and traditional Korean bureaucratic bullet points (ㅇ)"},"gpt":{"authorship":"human","ai_likeness":62,"strongest_cue":"공공기관 보고서식 반복 명사구","topped_up":true},"grok":{"authorship":"human","ai_likeness":55,"strongest_cue":"scraped KISTEP page breadcrumbs + authentic bureaucratic ㅇ-lists with real policy names"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"bullet-pointed government report with HTML entity artifacts (·)"}} +{"key":"339acb222713df25:rewrite","original_sha":"339acb222713df25","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"Korean bureaucratic formatting with 'ㅇ' bullets and specific administrative terminology"},"gpt":{"authorship":"human","ai_likeness":52,"strongest_cue":"공공기관 보고서식 ㅇ bullet 형식","topped_up":true},"grok":{"authorship":"human","ai_likeness":27,"strongest_cue":"authentic dense bureaucratic ㅇ-bullet lists with real KISTEP policy nomenclature","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"기계적 반복 구조 (ㅇ + 동사구 나열)","topped_up":true}} +{"key":"132e6021efbde1a2:original","original_sha":"132e6021efbde1a2","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"Human typo '살파보고' instead of '살펴보고'"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"기관 보고서식의 구체적 항목·법조문 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"bureaucratic Korean report bullets with typos (살파보고, USTPO)"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"Korean bureaucratic report style with specific institutional abbreviations (KISTEP, USTPO), legal article citations (제19조, 제18조), and domain-specific jargon (CLD, SFD, Stock-Flow Diagram) that reflect"}} +{"key":"132e6021efbde1a2:rewrite","original_sha":"132e6021efbde1a2","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"Korean institutional report formatting and noun-ending sentences (개조식)"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"공식 보고서식 불릿과 구체 고유명사","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"dense official report bullets with concrete methods, years, and legal citations"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"기호와 형식의 과도한 정형화"}} +{"key":"b433ecd6a31dcac0:original","original_sha":"b433ecd6a31dcac0","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Korean spacing errors (e.g., 한내일준비적금을신설해, 개선에기여한다)"},"gpt":{"authorship":"human","ai_likeness":62,"strongest_cue":"구체적 수치가 많은 보도자료식 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"bureaucratic list-dump style with human spacing/typo glitches"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정부 press release boilerplate — 정책 bullet points, 정책명+숫자羅列, '△' symbol usage, and repetitive '확대·강화·지원' formulaic structure"}} +{"key":"b433ecd6a31dcac0:rewrite","original_sha":"b433ecd6a31dcac0","cond":"rewrite","source_class":"human","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"highly repetitive, list-like paragraph structure with uniform problem-solution sentence patterns"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 정책 요약 문장 구조","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"idiomatic Korean news style with dense real-policy specs","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복되는 정책 구조(▲일자리·자산형성 기회 확대 ▲생애주기 전반의 기본생활 보장 ▲청년 정책참여 확대)와 나열식 전개, AI·빅데이터·AX 등 기술 키워드의 과도한 삽입, '뒤받침한다'·'아우른다'·'뒤집어' 같은 정부 보도자료식 관용구의 기계적 반복","topped_up":true}} diff --git a/artifacts/rewrite-efficacy-study4/bridge-gemini-3.7-flash.jsonl b/artifacts/rewrite-efficacy-study4/bridge-gemini-3.7-flash.jsonl new file mode 100644 index 00000000..8caf73db --- /dev/null +++ b/artifacts/rewrite-efficacy-study4/bridge-gemini-3.7-flash.jsonl @@ -0,0 +1,108 @@ +{"key":"168f3c8118bd47aa:original","original_sha":"168f3c8118bd47aa","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":98,"strongest_cue":"explicit character count meta-text and rigidly structured ordinal paragraphs"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"분량 충족을 선언하는 메타 문장"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"char-count meta header plus rigid parallel FAQ sections"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"메타 서술(2238자·분량 체크)으로 AI 생성 후 검증된 텍스트임을 자기표시"}} +{"key":"168f3c8118bd47aa:rewrite","original_sha":"168f3c8118bd47aa","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic paragraph-by-paragraph numbered structure with characteristic em-dash usage"},"gpt":{"authorship":"ai","ai_likeness":72,"strongest_cue":"균일한 항목별 설명 구조"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"lived Kakao-specific edge cases in natural practitioner Korean"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"conversational, experience-based phrasing with irregular rhythm and specific debugging anecdotes"}} +{"key":"1ae1f4a64a2eab3f:original","original_sha":"1ae1f4a64a2eab3f","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":92,"strongest_cue":"Uniformly structured explanatory prose with textbook tutorial cadence and a generic concluding sentence"},"gpt":{"authorship":"ai","ai_likeness":92,"strongest_cue":"반복적인 ~해야 합니다와 균일한 설명 리듬"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"exhaustive polished step-by-step structure without personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 단계별 나열과 동일한 문장 패턴 반복"}} +{"key":"1ae1f4a64a2eab3f:rewrite","original_sha":"1ae1f4a64a2eab3f","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"Uniformly structured paragraphs and typical formulaic concluding sentence"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명 리듬과 반복적 지시문"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniformly exhaustive step-by-step tutorial cadence with no personal voice"},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"반복적인 단락 구조(시작→설정→구현→주의사항)와 과도한 명령형 조언(\"~하십시오\", \"~해야 합니다\")의 기계적 패턴"}} +{"key":"61babd677484cafa:original","original_sha":"61babd677484cafa","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":92,"strongest_cue":"repetitive sentence endings (~하고 있으며, ~강조하고 있다) and unpunctuated translated jargon lists"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"포괄적 정책 키워드의 균일한 나열"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic multi-section progression dense with seamless buzzwords"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 축어체 나열형 구조와 무기한 연장되는 '~하고 있다' 종결 패턴"}} +{"key":"61babd677484cafa:rewrite","original_sha":"61babd677484cafa","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"synthetic broad coverage with generic administrative buzzwords"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"포괄적 정책 용어가 균일하게 이어지는 보고서식 문장"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"exhaustive multi-angle formulaic structure in uniform officialese"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"정책 수립 단계부터 목표 설정과 지표 설계를 분명히 하도록 강조한다"}} +{"key":"62acf994d71174b1:original","original_sha":"62acf994d71174b1","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":100,"strongest_cue":"preamble stating character count constraint compliance"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"조건 충족을 보고하는 메타문장"},"grok":{"authorship":"ai","ai_likeness":86,"strongest_cue":"character-count fulfillment preamble"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 정부 보도자료 구조(기관-일자-의결-배경-재원-분야-장관 발언-전망 순서)와 반복되는 ~했다고 밝혔다/~했다고 설명했다/~했다고 강조했다 등의 기계적 인용 구조"}} +{"key":"62acf994d71174b1:rewrite","original_sha":"62acf994d71174b1","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Standard Korean economic news template with natural journalistic idioms and phrasing"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"구체적 출처 없이 균형 잡힌 보도문 틀을 반복"},"grok":{"authorship":"ai","ai_likeness":76,"strongest_cue":"formulaic multi-section news template with rounded balance"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 대칭 구조와 정형화된 인용문 패턴"}} +{"key":"b79dc954d1a16e17:original","original_sha":"b79dc954d1a16e17","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"factual inaccuracies mixed with generic formulaic news prose"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균질한 보도자료식 장문 문장"},"grok":{"authorship":"ai","ai_likeness":85,"strongest_cue":"exhaustive multi-angle balanced structure in uniform formal tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 병렬 구조와 반복적인 접속사(또한, 그리고, 특히)로 인한 기계적 리듬"}} +{"key":"b79dc954d1a16e17:rewrite","original_sha":"b79dc954d1a16e17","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":82,"strongest_cue":"formulaic paragraph structure with subtle institutional inaccuracy"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"구체적 출처 없는 보도자료식 문장 반복"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic multi-angle coverage with uniform formal rhythm"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 구조와 반복적 문장 패턴"}} +{"key":"28d4eaa3438b3026:original","original_sha":"28d4eaa3438b3026","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":92,"strongest_cue":"vague policy details and stereotypical boilerplate conclusion"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 보도자료식 문장 리듬"},"grok":{"authorship":"ai","ai_likeness":89,"strongest_cue":"formulaic bureaucratic news structure with generic optimistic framing"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정책적 의지를 보여 주는 사례로 평가된다"}} +{"key":"28d4eaa3438b3026:rewrite","original_sha":"28d4eaa3438b3026","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic press-release structure with repetitive boilerplate summaries"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"균일한 보도자료식 문장 리듬과 평탄한 '-다' 종결 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"templated multi-paragraph policy brief with generic officials and polished balanced framing"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"정책 보도자료 형식의 과도한 구조화 (배경→목적→대상→금액→절차→전망→분석→배경 반복→마무리)와 반복적인 인과/목적 구문 (~는 데 목적을 뒀다, ~를 연결하려는 조치다, ~에 기여할 것, ~가 될 것이라는 분석이 나온다)"}} +{"key":"23a5b6fbf574e6f7:original","original_sha":"23a5b6fbf574e6f7","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic policy-summary structure and generic transitions"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 문단 구조와 관료적 상투어 반복"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"uniform schematic paragraphs with formulaic bureaucratic phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 정부 보도자료 구조와 반복적인 ~한다는 계획이다/~기로 했다/~고 덧붙였다 패턴"}} +{"key":"23a5b6fbf574e6f7:rewrite","original_sha":"23a5b6fbf574e6f7","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"formulaic policy summary structure without direct quotes"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 정책 보도 템플릿과 반복 종결"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"even parallel blocks and polished officialese without voice"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 구조와 반복적인 '~것이다/방침이다/계획이다' 종결 패턴"}} +{"key":"4900e9943fcbd984:original","original_sha":"4900e9943fcbd984","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic sentence endings and repetitive paragraph structure"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"반복적인 보도자료식 문장 패턴"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"uniform formulaic bureaucratic prose with exhaustive balanced multi-section structure"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"기대된다/풀이된다/보인다/나온다 등 무성한 추측·해석·전망 투성이 문장 구조"}} +{"key":"4900e9943fcbd984:rewrite","original_sha":"4900e9943fcbd984","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic paragraph organization and clichéd closing synthesis"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"보도자료식 문장 구조와 완충 표현의 반복","topped_up":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic sectioned exposition with tidy caveats and canned wrap-up","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 구조와 반복적 수치 제시 (3조 2000억 원, 30곳, 1200억 원, 10만 건, 3만 건 등) 및 인용구 배치 패턴","topped_up":true}} +{"key":"312380a845a3f6f0:original","original_sha":"312380a845a3f6f0","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"formulaic paragraph-by-paragraph enumeration (첫째 through 다섯째, 1단계 through 3단계) lacking specific real-world details"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"균일한 보도자료식 문단 구조"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"exhaustive parallel lists and staged plans in perfectly uniform bureaucratic prose"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"numbered list structure with parallel clause patterns (첫째/둘째/셋째/넷째/다섯째)"}} +{"key":"312380a845a3f6f0:rewrite","original_sha":"312380a845a3f6f0","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":92,"strongest_cue":"formulaic enumeration and generic policy briefing structure"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"구체명 없이 전방위 정책을 균질하게 나열함","topped_up":true},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"exhaustive formulaic multi-pillar lists and seamless officialese","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형적 5단계 구조(첫째/둘째/셋째/넷째/다섯째)와 '본격 추진', '전면 재편', '전방위 지원' 등 한국 정부 보도자료형 관용구 반복","topped_up":true}} +{"key":"482a1b346601eed1:original","original_sha":"482a1b346601eed1","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic documentation structure and textbook explanatory tone"},"gpt":{"authorship":"ai","ai_likeness":83,"strongest_cue":"균일하게 정리된 설명형 문단 구조"},"grok":{"authorship":"ai","ai_likeness":81,"strongest_cue":"flawless stepwise coverage with uniform pedagogical polish"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"conversational hedging and reader-directed imperatives"}} +{"key":"482a1b346601eed1:rewrite","original_sha":"482a1b346601eed1","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"formulaic paragraph structure and standard technical documentation tone"},"gpt":{"authorship":"ai","ai_likeness":74,"strongest_cue":"균일한 기술문서식 문단 리듬"},"grok":{"authorship":"ai","ai_likeness":72,"strongest_cue":"even sequential walkthrough with exhaustive, quirk-free coverage"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"비격식체+구어체 끝어미(~-야 하며, ~는 편이 낫다, ~짚고 넘어가야 한다)"}} +{"key":"bb5dc0d1ffc67c28:original","original_sha":"bb5dc0d1ffc67c28","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"formulaic paragraph templating and tokenization artifact (퍼ovskite)"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체명 없이 반복되는 포괄적 요약 구조"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"uniform parallel sections with formulaic institutional phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 전문용어 나열"}} +{"key":"bb5dc0d1ffc67c28:rewrite","original_sha":"bb5dc0d1ffc67c28","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic paragraph-by-paragraph domain survey structure with uniform length and cadence"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"분야별로 반복되는 균질한 보고서식 문단 구조"},"grok":{"authorship":"ai","ai_likeness":83,"strongest_cue":"rigid parallel sections each recycling research-highlight→NRF-action→policy template"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"구조적 반복과 정형화된 전환: 매 단락이 '분야 소개 → 구체적 사례/성과 → 연구재단의 대응/계획'의 동일한 3단 구조로 기계적으로 반복되며, 인간 필자가 보일 개인적 관점·어조 변화·구조적 실험성이 전혀 없음"}} +{"key":"686e5dcc3ceb1749:original","original_sha":"686e5dcc3ceb1749","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":92,"strongest_cue":"monotonous compound sentence structure and generic checklist of tech buzzwords"},"gpt":{"authorship":"ai","ai_likeness":95,"strongest_cue":"구체적 일화 없이 균질하게 나열되는 성과와 감상"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic seamless structure with idealized polished positivity"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 양치기식 나열 구조와 감정을 술어로만 서술하는 추상적 문체"}} +{"key":"686e5dcc3ceb1749:rewrite","original_sha":"686e5dcc3ceb1749","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic retrospective structure densely packed with generic tech buzzwords"},"gpt":{"authorship":"ai","ai_likeness":92,"strongest_cue":"구체적 장면 없이 균일한 성과·기술 나열"},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"formulaic multi-section retrospective with exhaustive buzzword coverage and tidy three-lessons closer"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 구조적 대칭과 정형화된 키워드 나열"}} +{"key":"928d18c1dacf3fb2:original","original_sha":"928d18c1dacf3fb2","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic narrative arc with neat rhetorical antitheses"},"gpt":{"authorship":"ai","ai_likeness":76,"strongest_cue":"과하게 매끈한 문제-위기-교훈 서사"},"grok":{"authorship":"human","ai_likeness":41,"strongest_cue":"dense insider micro-anecdotes with cultural sting"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적이고 생생한 회고적 서술과 팀 내부 대화, 감정적 반응의 세밀한 묘사"}} +{"key":"928d18c1dacf3fb2:rewrite","original_sha":"928d18c1dacf3fb2","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":82,"strongest_cue":"formulaic narrative arc of a tech retrospective"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"너무 매끈한 문제-위기-교훈 서사","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"granular firsthand anecdotes (px values, Slack reactions, '은행 앱' sting) with natural self-critique","topped_up":true},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적 내부 에피소드와 감정적 회복 서사","topped_up":true}} +{"key":"65ca55ba6400468e:original","original_sha":"65ca55ba6400468e","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic essay structure with standard enumeration and balanced transition markers"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균일한 설명문 구조와 상투적 확장 표현"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic numbered essay structure plus stock visionary closing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"overly symmetric paragraph structure with numbered rhetorical triads (첫째/둘째/셋째) and predictable conclusion arc"}} +{"key":"65ca55ba6400468e:rewrite","original_sha":"65ca55ba6400468e","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic essay structure with predictable discourse markers"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"반복적이고 균형 잡힌 설명문 구조"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"flawlessly balanced multi-section essay with seamless transitions and no idiosyncrasies"},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"반복적인 '입니다/습니다' 종결과 문단별 구조적 대칭(문제-해결-확장)"}} +{"key":"fcb1fd7071034cf7:original","original_sha":"fcb1fd7071034cf7","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic engineering blog structure with generic round-number metrics"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균일한 문장 리듬의 포괄적 사례문체"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"formulaic problem-solution-results structure with uniformly polished corporate tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 기술 세부사항 나열과 구조화된 단계별 설명"}} +{"key":"fcb1fd7071034cf7:rewrite","original_sha":"fcb1fd7071034cf7","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic 4-paragraph case study structure with generic concluding rhetoric"},"gpt":{"authorship":"ai","ai_likeness":90,"strongest_cue":"구체적 출처 없이 매끄러운 사례형 구조와 반복적 일반화"},"grok":{"authorship":"ai","ai_likeness":83,"strongest_cue":"formulaic problem-solution-metrics-future arc with exhaustive polished coverage"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 구조적 대칭과 나열식 전개"}} +{"key":"df471256a3e0690c:original","original_sha":"df471256a3e0690c","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"balanced high-level explanatory structure lacking concrete implementation details"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명 구조와 일반론적 전개"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"formulaic problem–solution–benefit sections with uniform polish and no voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 구조적 대칭과 설명적 나열"}} +{"key":"df471256a3e0690c:rewrite","original_sha":"df471256a3e0690c","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic essay structure with textbook transitional bridges"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"매우 균일한 설명문 구조와 일반론적 전개","topped_up":true},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"textbook problem→solutions→benefits→caveats arc with uniform polish","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"overly balanced paragraph structure with exhaustive enumeration","topped_up":true}} +{"key":"efc6bbbb5fcc65ec:original","original_sha":"efc6bbbb5fcc65ec","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic paragraph structure and generic tech-blog platitudes"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체성 없는 장문 회고와 상투적 교훈 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic multi-section reflective arc with polished platitudinous close"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 구조적 패턴 (문단 시작: ~하면서/하면서는 → 중간: 구체적 기능 설명 → 끝: 교훈/의미 도출)"}} +{"key":"efc6bbbb5fcc65ec:rewrite","original_sha":"efc6bbbb5fcc65ec","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic paragraph structure with moralizing reflective conclusions"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균질한 단락 전개와 추상적 교훈형 결말","topped_up":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic sectioned arc with polished lessons and closer","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 반성적 결론 구조 (마지막 단락의 '다시 생각했다/그게 ~이다/그것만으로도 충분히 보람차다/바란다/교훈이다' 연쇄)","topped_up":true}} +{"key":"8997830c69d60b15:original","original_sha":"8997830c69d60b15","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":92,"strongest_cue":"formulaic paragraph structure with repetitive fabricated quotes reinforcing the prompt theme"},"gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"반복적이고 일반적인 기업문화 서술"},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"perfectly parallel slogan-driven anecdotes with uniform inspirational cadence"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"반복적인 구조적 패턴과 동일한 문장 틀의 재사용"}} +{"key":"8997830c69d60b15:rewrite","original_sha":"8997830c69d60b15","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic essay structure built neatly around a corporate slogan"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"구체성 없는 반복적 성공 사례 구조"},"grok":{"authorship":"ai","ai_likeness":81,"strongest_cue":"schematic multi-anecdote arc that always resolves cleanly to the same branded slogan"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복되는 구조적 패턴과 정형화된 서술 리듬"}} +{"key":"dbb6bfe4103d2362:original","original_sha":"dbb6bfe4103d2362","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic paragraph structure and classic LLM transitions ('결국 ~는 단순한 A를 넘어서 B')"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 교과서식 문단 전개"},"grok":{"authorship":"ai","ai_likeness":72,"strongest_cue":"uniform problem-solution-ops-ROI scaffolding with templated transitions"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"colloquial spoken rhythm with hedging and personal experience markers"}} +{"key":"dbb6bfe4103d2362:rewrite","original_sha":"dbb6bfe4103d2362","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":82,"strongest_cue":"Formulaic 5-paragraph tech blog structure with standard explanatory transitions"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 단락 구조와 교과서식 전개"},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"checklist-complete didactic arc with uniformly neat per-paragraph takeaways"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"구체적 실무 경험과 현장감 있는 표현"}} +{"key":"be19e73ec1806639:original","original_sha":"be19e73ec1806639","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"formulaic five-point structure with uniform essayistic flow"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"첫째-둘째-셋째식 균질한 전개"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"rigidly enumerated, evenly balanced sections with polished generic corporate rhetoric"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 1-2-3-4-5 구조와 각 문단의 동일한 패턴(문제 제기→토스식 TPM 제시→AI 시너지 설명→비유/은유로 마무리)"}} +{"key":"be19e73ec1806639:rewrite","original_sha":"be19e73ec1806639","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":92,"strongest_cue":"rigidly uniform four-point structure with formulaic AI integration in every paragraph"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"첫째·둘째식 균질한 전개와 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"rigid 4-point parallel structure with identical AI+TPM framing each section"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"기계적 병렬 구조(첫째/둘째/셋째/넷째) + 각 단락의 동일한 서론-전개-결론 삼단 논법"}} +{"key":"8f39c12fc82867a2:original","original_sha":"8f39c12fc82867a2","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"전형적인 기술 가이드의 모범답안식 문장 구성과 균일한 설명조"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명문 구조와 포괄적 체크리스트식 전개","retried":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"exhaustive even multi-section coverage with flat polished tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"uniformly structured paragraphs with identical topic-sentence-first pattern and exhaustive bullet-like enumeration of technical steps without any digression, personal anecdote, or stylistic variation"}} +{"key":"8f39c12fc82867a2:rewrite","original_sha":"8f39c12fc82867a2","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"uniformly structured paragraphs with textbook exhaustive coverage"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"균일한 설명 리듬과 체크리스트식 포괄성"},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"uniform exhaustive tutorial cadence, no personal fingerprint"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"overly systematic paragraph structure with identical rhythm (topic sentence → bullet-like elaboration → cautionary closing)"}} +{"key":"1b1ca775a211b68a:original","original_sha":"1b1ca775a211b68a","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic three-pillar thematic structure with generic policy summary phrasing"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균질한 삼분 구조와 추상명사 나열"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"rigid tripartite axes + formulaic balanced wrap-up"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"과도한 구조적 대칭과 추상적 나열"}} +{"key":"1b1ca775a211b68a:rewrite","original_sha":"1b1ca775a211b68a","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Formulaic three-pillar structure (첫째 축, 둘째 축, 셋째 축) followed by a neatly packaged three-part conclusion"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 3축 보고서 구조와 추상명사 나열"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"rigid three-axis scaffolding plus tidy triadic close"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"기계적 삼단 구조(첫째/둘째/셋째 축)와 정책 브리핑체 정형화된 문장 리듬"}} +{"key":"d94d64400975d9d6:original","original_sha":"d94d64400975d9d6","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic tripartite structure lacking specific figures and named officials"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"과도하게 균일한 보도자료식 구조와 반복 표현"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"perfectly parallel 3-part policy scaffolding with uniform bureaucratic cadence"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 3단 구조와 반복되는 '~한다고 밝혔다/강조했다/설명했다' 문장 패턴"}} +{"key":"d94d64400975d9d6:rewrite","original_sha":"d94d64400975d9d6","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic paragraph-by-paragraph enumeration (첫 번째/두 번째/세 번째 지원책은)"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균질한 3단 구성과 일반론적 정책 문장 반복"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"rigidly parallel tripartite policy template"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 3대 지원책 구조와 반복적인 ~방침이다/~것이다 마무리 패턴"}} +{"key":"af9d5918e27537b9:original","original_sha":"af9d5918e27537b9","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"uniform paragraph structure and didactic, generic technical documentation tone"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 문단 구조와 반복되는 설명 리듬","retried":true},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"uniform exhaustive sequential structure without stylistic variation"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"단조로운 문장 길이와 과도한 나열 구조"}} +{"key":"af9d5918e27537b9:rewrite","original_sha":"af9d5918e27537b9","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"균일하고 정형화된 단락별 기술 가이드 전개 방식"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 문단 구조와 매끄러운 포괄 설명"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniform exhaustive section-by-section tutorial polish"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"overly uniform paragraph structure and exhaustive enumeration of every possible parameter/edge case without natural digression or personal framing"}} +{"key":"7e61ec1f91bca4da:original","original_sha":"7e61ec1f91bca4da","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic paragraph-by-paragraph expository structure with textbook transitions"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 설명문 구조와 과하게 정돈된 전개"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"evenly polished outline-driven exposition without personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 설명적 나열"}} +{"key":"7e61ec1f91bca4da:rewrite","original_sha":"7e61ec1f91bca4da","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"uniform paragraph structure with formulaic aphoristic concluding sentences"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"균일한 교과서식 단락 전개","topped_up":true},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"exhaustively complete didactic structure with uniform balanced takeaways","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 병렬 구조와 반복적인 설명적 패턴","topped_up":true}} +{"key":"5de62744badff9a0:original","original_sha":"5de62744badff9a0","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic essay structure with repetitive antithetical phrasing"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 문단 구조와 추상적 일반론 반복"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"uniform polished multi-paragraph thesis with formulaic X-not-Y contrasts"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 병렬 구조와 과도한 정형화된 논리 전개"}} +{"key":"5de62744badff9a0:rewrite","original_sha":"5de62744badff9a0","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive didactic contrast patterns (~가 아니라 ~다) and formulaic tech-essay structure"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"균일한 문단 구조와 평서형 리듬"},"grok":{"authorship":"ai","ai_likeness":79,"strongest_cue":"glass-smooth not-X-but-Y reframes and product-pitch structure"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 직조사(는/은/이/가) 사용으로 인한 기계적 리듬"}} +{"key":"5c322972487d701e:original","original_sha":"5c322972487d701e","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic paragraph transitions and balanced expository structure"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 교과서식 전개와 과잉 나열"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniform multi-section whitepaper cadence, no personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 구조와 과도한 구체성 나열"}} +{"key":"5c322972487d701e:rewrite","original_sha":"5c322972487d701e","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic essay structure with didactic clarifications and balanced paragraph lengths"},"gpt":{"authorship":"ai","ai_likeness":68,"strongest_cue":"균일하게 정리된 교과서식 전개"},"grok":{"authorship":"ai","ai_likeness":68,"strongest_cue":"even multi-section didactic structure with polished wrap-up"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"과도하게 정돈된 구조와 반복적인 논리적 전개(문제 제기 → 기술 설명 → 오해 바로잡기 → 실행 전략 → 결론)의 기계적 패턴"}} +{"key":"add2d734b39e3d89:original","original_sha":"add2d734b39e3d89","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":4,"strongest_cue":"Official Korean government press briefing title and specific policy program names"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"보도자료식 세부 수치와 사업명 밀도"},"grok":{"authorship":"human","ai_likeness":76,"strongest_cue":"공식 정책브리핑 관료체와 전형적 보도 형식"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정책 브리핑 형식의 나열식 구조와 반복적인 '지원한다/추진한다/확대한다' 어미 패턴"}} +{"key":"add2d734b39e3d89:rewrite","original_sha":"add2d734b39e3d89","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"official government policy briefing style and highly specific program details"},"gpt":{"authorship":"human","ai_likeness":44,"strongest_cue":"구체적 수치와 정책명 중심의 보도자료식 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"authentic 정책브리핑 house style with dense native policy nomenclature","topped_up":true},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"journalistic headline + dateline structure with specific ministry attribution and policy details","topped_up":true}} +{"key":"c66b92bc6b62a9b3:original","original_sha":"c66b92bc6b62a9b3","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Standard Korean government press release with web scraping artifacts at the bottom"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"구체 수치가 많은 보도자료식 문장"},"grok":{"authorship":"human","ai_likeness":24,"strongest_cue":"dense Korean ministry press-release cadence with precise budget/eligibility figures and trailing paste junk"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive formulaic opening clauses (중기부는 이어서/또한/아울러) with identical structural rhythm"}} +{"key":"c66b92bc6b62a9b3:rewrite","original_sha":"c66b92bc6b62a9b3","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":8,"strongest_cue":"Korean news reporting style with scraped website footer artifacts"},"gpt":{"authorship":"human","ai_likeness":52,"strongest_cue":"보도자료식 반복 구조"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"precise fiscal/policy specifics in dry Korean official-news cadence plus terminal scrap artifact"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic government press release structure with repetitive 'A를 B한다' sentence patterns and excessive numeric specificity"}} +{"key":"68f6f173662b6d6a:original","original_sha":"68f6f173662b6d6a","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"raw webpage scraping artifacts and official Korean government press release format"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"공공기관 보도자료와 법령 보일러플레이트가 그대로 섞인 복사문"},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"scraped legal/copyright footers and unrelated fragments"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"numbered list with bullet-point policy summaries"}} +{"key":"68f6f173662b6d6a:rewrite","original_sha":"68f6f173662b6d6a","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"scraped government press release boilerplate and HTML entity artifacts"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"웹페이지 법률문구와 무관한 보도설명 제목이 섞인 스크랩 흔적"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"abrupt web-scrape dump of fragmented legal clauses + unrelated 보도설명"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정책 보도자료 형식의 기계적 나열 구조(①②③ 번호 매기기, 예산 금액 나열, 장관 인용 후 마무리)와 마지막에 저작권/법률 조항/사칭 금지 등 무관한 내용이 그대로 붙여넣기된 조각난 구성"}} +{"key":"0e2d30b08fe7d170:original","original_sha":"0e2d30b08fe7d170","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"authentic government press release and FAQ formatting with scraped web footer text"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"보도자료·법령 문구가 뒤섞인 비일관적 콜라주"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"rigidly templated parallel FAQ answers with identical syntactic skeletons"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic paragraph openings (이에/아울러/한편/먼저/다만/특히) + numbered legal clauses + FAQ template structure"}} +{"key":"0e2d30b08fe7d170:rewrite","original_sha":"0e2d30b08fe7d170","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"official government press release text with scraped webpage footer artifacts"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"공식 보도자료·법령 문구가 뒤섞인 스크랩 흔적"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"precise Korean city/transport-zone eligibility cases"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"abrupt concatenation of unrelated source fragments"}} +{"key":"a7a211d5527910f3:original","original_sha":"a7a211d5527910f3","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":0,"strongest_cue":"scraped government press release with website boilerplate and copyright clauses"},"gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"보도자료식 구체 수치와 기관명"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"official briefing formula + scrapy end-of-doc legal junk"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정부 공식 보도자료 형식의 반복적 구조와 법령 조항 나열"}} +{"key":"a7a211d5527910f3:rewrite","original_sha":"a7a211d5527910f3","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":3,"strongest_cue":"authentic official government press release format with web scraping artifacts and boilerplate legal footer text"},"gpt":{"authorship":"human","ai_likeness":28,"strongest_cue":"정책브리핑 스크랩 흔적과 구체적 수치","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"dense named entities + exact policy figures in standard briefing register","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정책 브리핑 형식의 나열적 구조와 반복적인 문장 패턴","topped_up":true}} +{"key":"f55d815f753bd79c:original","original_sha":"f55d815f753bd79c","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific internal team anecdotes and natural conversational interview pacing"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"구체적인 제품 개발 일화와 어색한 복사/편집 흔적"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"first-person team anecdotes with specific names, tech details & emotions"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational narrative voice with specific anecdotes and emotional texture"}} +{"key":"f55d815f753bd79c:rewrite","original_sha":"f55d815f753bd79c","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic company tech blog interview with specific internal names, systems, and colloquial employee quotes"},"gpt":{"authorship":"human","ai_likeness":28,"strongest_cue":"구체적 내부 용어와 인터뷰식 시행착오"},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"grounded multi-voice anecdotes with proprietary tech details & emotions"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"irregular paragraph lengths and anecdotal digressions"}} +{"key":"65a8227710e2d65a:original","original_sha":"65a8227710e2d65a","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":8,"strongest_cue":"specific engineering details and authentic personal internship experiences"},"gpt":{"authorship":"human","ai_likeness":37,"strongest_cue":"불규칙한 메모식 문장과 구체적 구현 디테일"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"unpolished note-style fragments + personal team-move anecdote with CPL/LTI specifics"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"일기체 협업 회고의 자연스러운 화자 교체(이경민/문홍윤)"}} +{"key":"65a8227710e2d65a:rewrite","original_sha":"65a8227710e2d65a","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":7,"strongest_cue":"specific engineering case study with authentic domain details and personal reflections"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적인 구현 디테일과 메모식 문장","retried":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"IR-plugin gotchas + principle/principal typo"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적인 팀명·프로젝트명·기술 용어의 자연스러운 혼합과 비공식적 말투(예: '쉽지 않았어요', '깜빡하면')"}} +{"key":"1d3f406d7c204392:original","original_sha":"1d3f406d7c204392","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific corporate branding, internal project references (DEUS editor, Frontend Fundamentals), and footer business registration details"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적 채용 페이지 문맥과 푸터 정보"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"company-specific metrics, named projects (DEUS, Frontend Fundamentals), dates, and legal footer details"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"conversational tone with direct address and informal particles (예요, 해요, 보세요)"}} +{"key":"1d3f406d7c204392:rewrite","original_sha":"1d3f406d7c204392","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":8,"strongest_cue":"highly specific Toss internal project references, corporate footer, and genuine tech blog/recruiting copy style"},"gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"구체적인 회사·기술·날짜와 웹페이지 푸터 흔적"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"verifiable Toss-specific facts, products, and legal footer"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"company-specific details and named individuals"}} +{"key":"060ac470697071dd:original","original_sha":"060ac470697071dd","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":4,"strongest_cue":"natural spoken Korean interview tone and authentic workplace anecdotes"},"gpt":{"authorship":"human","ai_likeness":12,"strongest_cue":"구어체 인터뷰의 비정형 리듬과 구체적 회고"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"messy spoken cadence with raw personal specifics"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"highly specific, self-deprecating personal anecdotes with irregular emotional rhythm"}} +{"key":"060ac470697071dd:rewrite","original_sha":"060ac470697071dd","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"specific internal company anecdotes and authentic spoken interview nuances"},"gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"불규칙한 인터뷰 구어체와 구체적 일화"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"raw spoken-style vulnerabilities and idiosyncratic personal details"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial self-deprecation and emotional specificity"}} +{"key":"022cba7e5d37000a:original","original_sha":"022cba7e5d37000a","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific engineering case study details and natural Korean tech blog tone"},"gpt":{"authorship":"human","ai_likeness":46,"strongest_cue":"구체적 구현 세부와 불규칙한 띄어쓰기"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"dense proprietary infra specifics + mixed formal/casual Korean tone"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"scattered grammar/spacing errors (띄어쓰기 불일치, 불완전한 문장) and first-person voice with specific team/tech details"}} +{"key":"022cba7e5d37000a:rewrite","original_sha":"022cba7e5d37000a","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":8,"strongest_cue":"Authentic tech blog post referencing real Toss engineers, proprietary tools (Trainkit), and missing diagrams"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"토스 환경의 구체적 기술 세부사항"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"informal ~었음 note-style pain-point list + concrete internal stack evolution (HBase/Redis→Aerospike, Trainkit)"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"구조화된 불릿 포인트와 반복되는 '입니다/습니다' 종결 패턴"}} +{"key":"664f106023e07411:original","original_sha":"664f106023e07411","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific corporate context and internal workload data from Toss Securities tech blog"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"조사 앞 공백과 결론적으로식 정리 구조 반복"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"specific internal stats + exact KRW cost calcs"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"반복적인 구조적 패턴 (첫째/둘째/셋째, 장점-단점-결론 반복)와 과도한 괄호 영어 병기"}} +{"key":"664f106023e07411:rewrite","original_sha":"664f106023e07411","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"specific organization context (토스증권) and concrete operational analysis"},"gpt":{"authorship":"ai","ai_likeness":74,"strongest_cue":"반복적인 장단점 나열 구조"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"specific Toss Securities workload stats + real AWS cost calcs + prior-post continuity"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"비유적 표현과 구체적 수치"}} +{"key":"8374ce653bfd06a5:original","original_sha":"8374ce653bfd06a5","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":22,"strongest_cue":"institutional webzine metadata, disclaimer, and real contact email"},"gpt":{"authorship":"human","ai_likeness":72,"strongest_cue":"반복적인 웹진식 연결어와 포괄적 전망 문장"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"specific NRF institutional voice, email, and disclaimer"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 '-는데요' 종결 어미 패턴"}} +{"key":"8374ce653bfd06a5:rewrite","original_sha":"8374ce653bfd06a5","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Institutional newsletter editorial tone and webzine metadata/disclaimers"},"gpt":{"authorship":"human","ai_likeness":64,"strongest_cue":"기관 웹진식 정형 문체"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"institutional NRF disclaimer + colloquial particles with mid-sentence truncations"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"반복적인 '입니다/습니다' 종결 + 나열형 구조 + 전문용어 나열 후 '죠/데요' filler로 끝내는 뉴스 요약 템플릿"}} +{"key":"3434597ff1f55eda:original","original_sha":"3434597ff1f55eda","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"HTML parsing artifacts and official developer documentation structure"},"gpt":{"authorship":"human","ai_likeness":55,"strongest_cue":"HTML scraping artifacts in technical documentation"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"HTML/CSS scrape artifacts with exact product/policy dates"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive parallel structure with identical sentence frames"}} +{"key":"3434597ff1f55eda:rewrite","original_sha":"3434597ff1f55eda","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"official developer documentation phrasing and specific policy compliance dates"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"공식 문서식 구체 용어와 날짜"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"exact platform policy dates/RFC/product jargon in choppy doc style"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive sentence structure with subject-verb-object pattern and lack of personal voice"}} +{"key":"b5941b832a3c1b5f:original","original_sha":"b5941b832a3c1b5f","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":18,"strongest_cue":"HTML entity artifacts (') and fragmented documentation copy-paste numbering"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"불연속 번호와 ' HTML 엔티티","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"inconsistent renumbered steps and abrupt section jumps"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"numbered procedural steps with robotic '해요' endings"}} +{"key":"b5941b832a3c1b5f:rewrite","original_sha":"b5941b832a3c1b5f","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"HTML entity artifacts (') and scraped documentation formatting"},"gpt":{"authorship":"human","ai_likeness":44,"strongest_cue":"불연속 번호와 HTML 엔티티 편집 흔적","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"jumbled real docs paste: out-of-order steps, HTML entities"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"numbered procedural steps with inconsistent numbering (2→3→2→4)"}} +{"key":"f780e8a5a60cd1f9:original","original_sha":"f780e8a5a60cd1f9","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":0,"strongest_cue":"scraped government press release with portal metadata and legal footers"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"정책기사형 수치·인용 구조와 크롤링 잔재","topped_up":true},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"formulaic official press-release style with exact budget figures plus scraped legal/unrelated fragments"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"기관명·예산액·법조항 목록의 조합적 나열과 인용문 직접 기재 형식"}} +{"key":"f780e8a5a60cd1f9:rewrite","original_sha":"f780e8a5a60cd1f9","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":3,"strongest_cue":"authentic Korean government press release format with web scraper artifacts"},"gpt":{"authorship":"human","ai_likeness":28,"strongest_cue":"기사 스크랩식 제목·수치·법령 조각","topped_up":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"dense official numbers, law cites, and scrape artifacts"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"news article with source attribution, named officials, and legal citation boilerplate"}} +{"key":"bdfecbbcf4002026:original","original_sha":"bdfecbbcf4002026","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":0,"strongest_cue":"authentic corporate tech blog scraped alongside real user comments and website footer"},"gpt":{"authorship":"human","ai_likeness":31,"strongest_cue":"웹페이지 푸터와 거친 실제 댓글 혼입","topped_up":true},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"specific hardware trade-offs plus raw typo-filled user comments"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"Raw user comments at bottom (typos, slang, emotional tone, unstructured grievances)"}} +{"key":"bdfecbbcf4002026:rewrite","original_sha":"bdfecbbcf4002026","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"authentic user comments with natural typos and frustration"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"실제 댓글처럼 보이는 비정제 문장과 오타","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"raw typo-filled angry user comments after specific hardware trade-off story"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial, emotionally charged user comments at the end with intentional typos, slang, and raw frustration ('쓰기 거지같이', '꼭 신경써주세요', '1프로도 안돼요')"}} +{"key":"7ee5f186b79a4a43:original","original_sha":"7ee5f186b79a4a43","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific first-person institutional context and authentic corporate tech blog voice (Toss Tech Excellence Team)"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"구체 사례 없이 같은 추상 구조를 반복","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"lived Toss-specific gray-zone org thesis, not generic TPM blurb"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"Korean-specific contractions and natural rhythm breaks (e.g., '있기도 하죠', '많았습니다', '입니다') with irregular sentence lengths and occasional spoken-style fragments that deviate from AI's tendency toward uni"}} +{"key":"7ee5f186b79a4a43:rewrite","original_sha":"7ee5f186b79a4a43","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific organizational context and authentic tech blog narrative tone"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 추상 명사와 균일한 단락 리듬","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"first-person Toss origin story with a sustained, non-generic thesis","topped_up":true},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational rhythm with deliberate repetition and structural tension","topped_up":true}} +{"key":"e30f61fb56ba2b31:original","original_sha":"e30f61fb56ba2b31","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":12,"strongest_cue":"Natural typos ('많은 데이터 많은 데이터', '판단은') and authentic engineering blog details"},"gpt":{"authorship":"human","ai_likeness":62,"strongest_cue":"구체적 사내 수치와 오탈자가 섞인 홍보문 리듬","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"Korean typos and slips (판단은, 비스니스, 많은 데이터 많은 데이터)"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"구조적 반복과 정형화된 전환구"}} +{"key":"e30f61fb56ba2b31:rewrite","original_sha":"e30f61fb56ba2b31","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific engineering case study details and authentic Toss tech blog voice"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"구체적 내부 수치와 기술 맥락","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"specific dbt/DW ops details + real usage metrics","topped_up":true},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"conversational first-person voice with specific anecdotes and direct quotes","topped_up":true}} +{"key":"e0366816ddef04e5:original","original_sha":"e0366816ddef04e5","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic tech blog style with domain-specific engineering details and stripped markdown inline tags"},"gpt":{"authorship":"ai","ai_likeness":72,"strongest_cue":"초반 문장 반복과 매끈한 설명형 구조","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"ops war-stories with real QPS, accounts, format glitches"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial Korean endings (했어요, 였어요, 거거든요) with natural digressions and specific operational war stories"}} +{"key":"e0366816ddef04e5:rewrite","original_sha":"e0366816ddef04e5","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"detailed production metrics and internal kernel-level implementation specifics"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적 운영 수치와 구현 세부","topped_up":true},"grok":{"authorship":"human","ai_likeness":24,"strongest_cue":"duplicated intro plus concrete internal ops metrics and trial-and-error narrative"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial Korean endings (어요/였어요) with natural digressions and specific operational anecdotes"}} +{"key":"4214406639383b83:original","original_sha":"4214406639383b83","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic tech blog storytelling with realistic domain-specific operational details"},"gpt":{"authorship":"human","ai_likeness":54,"strongest_cue":"구체적 운영 맥락과 자연스러운 띄어쓰기 흔들림","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"insider merchant-ecosystem constraints and organizational inertia"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational parenthetical asides and deliberate reader-addressing rhythm (e.g., '뉴스에서 한 번쯤 들어 보셨을 단어일 텐데요', '조금 더 구체적으로 들여다보면 이렇습니다')"}} +{"key":"4214406639383b83:rewrite","original_sha":"4214406639383b83","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic engineering blog narrative with specific organizational context (Toss Payments)"},"gpt":{"authorship":"human","ai_likeness":41,"strongest_cue":"구체적인 운영 맥락과 도메인 디테일","topped_up":true},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"lived PG ops constraints & organizational inertia voice"},"kimi":{"authorship":"human","ai_likeness":20,"strongest_cue":"conversational parenthetical asides and self-interruptions"}} +{"key":"272b1487dead94f0:original","original_sha":"272b1487dead94f0","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":20,"strongest_cue":"authentic developer domain analogies and practitioner insights"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"과도하게 균질한 논리 전개와 괄호식 영어 개념 병기","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"first-person hedging + original domain framing (executable SSOT)"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"irregular paragraph lengths and organic pacing"}} +{"key":"272b1487dead94f0:rewrite","original_sha":"272b1487dead94f0","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":18,"strongest_cue":"natural Korean tech blogger voice with vivid domain analogies and conversational hedges"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"반복적인 영어 병기와 균일한 논설 구조","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"colloquial first-person Korean tech-essay cadence","topped_up":true},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational self-correction and hedging","topped_up":true}} +{"key":"971cc5650bbf8bf8:original","original_sha":"971cc5650bbf8bf8","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"HTML/CSS artifacts from scraped developer documentation and subtle human grammatical error"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"웹문서 스크래핑 잔재","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"garbled CSS/HTML scrapings in fragmented FAQ docs"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic Q&A structure with numbered procedural steps"}} +{"key":"971cc5650bbf8bf8:rewrite","original_sha":"971cc5650bbf8bf8","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"DOM scraping artifacts and authentic Kakao developer documentation phrasing"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"문서 조각과 HTML 잔여물이 섞인 편집 흔적","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"scraped HTML artifacts in Kakao FAQ docs"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"mechanical Q&A structure with repetitive formulaic transitions"}} +{"key":"20e25898a7e6fe9e:original","original_sha":"20e25898a7e6fe9e","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"scraped web documentation artifacts (&]:text-inherit\">)"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"스크랩된 기술문서의 HTML 잔여 토큰","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"scraped fragments with residual HTML markup"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"broken HTML artifacts (&]:text-inherit) mixed with flat, repetitive instructional register"}} +{"key":"20e25898a7e6fe9e:rewrite","original_sha":"20e25898a7e6fe9e","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":12,"strongest_cue":"authentic Kakao developer documentation tone and phrasing"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"구체적인 SDK/API 객체명과 문서 조각의 흔적"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"exact Kakao Flutter SDK methods/types, not generic filler"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"반복되는 '요청이 성공하면 ~가 반환됩니다' 구조와 기술 문서 전체에 걸친 일정한 절차적 나열 패턴"}} +{"key":"1707285500db245b:original","original_sha":"1707285500db245b","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"authentic official developer documentation excerpts with characteristic Korean technical support phrasing"},"gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"공식 문서식 반복과 API 세부값 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"choppy official-doc fragments with near-duplicate language sample listings"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복되는 정형화된 문장 패턴과 기술 문서의 기계적 나열 구조"}} +{"key":"1707285500db245b:rewrite","original_sha":"1707285500db245b","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"concatenated excerpts from official Naver developer documentation"},"gpt":{"authorship":"human","ai_likeness":22,"strongest_cue":"구체적인 API 파라미터와 문서 조각식 반복","topped_up":true},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"choppy concatenated official API docs with corporate policy phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적 구조와 기계적 나열 (예: '네이버 로그인 접근토큰 획득 예제는 X개의 파일로 구성됩니다' 3회 반복)"}} +{"key":"339acb222713df25:original","original_sha":"339acb222713df25","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"Authentic Korean bureaucratic document structure with raw HTML entities (·) and official KISTEP administrative phrasing"},"gpt":{"authorship":"human","ai_likeness":62,"strongest_cue":"공공기관 보고서식 반복 명사구","topped_up":true},"grok":{"authorship":"human","ai_likeness":55,"strongest_cue":"scraped KISTEP page breadcrumbs + authentic bureaucratic ㅇ-lists with real policy names"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"bullet-pointed government report with HTML entity artifacts (·)"}} +{"key":"339acb222713df25:rewrite","original_sha":"339acb222713df25","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"Authentic Korean institutional report formatting and administrative phrasing"},"gpt":{"authorship":"human","ai_likeness":52,"strongest_cue":"공공기관 보고서식 ㅇ bullet 형식","topped_up":true},"grok":{"authorship":"human","ai_likeness":27,"strongest_cue":"authentic dense bureaucratic ㅇ-bullet lists with real KISTEP policy nomenclature","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"기계적 반복 구조 (ㅇ + 동사구 나열)","topped_up":true}} +{"key":"132e6021efbde1a2:original","original_sha":"132e6021efbde1a2","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic Korean institutional report formatting and legal citations"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"기관 보고서식의 구체적 항목·법조문 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"bureaucratic Korean report bullets with typos (살파보고, USTPO)"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"Korean bureaucratic report style with specific institutional abbreviations (KISTEP, USTPO), legal article citations (제19조, 제18조), and domain-specific jargon (CLD, SFD, Stock-Flow Diagram) that reflect"}} +{"key":"132e6021efbde1a2:rewrite","original_sha":"132e6021efbde1a2","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Institutional Korean government report formatting with specific legal citations and metadata"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"공식 보고서식 불릿과 구체 고유명사","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"dense official report bullets with concrete methods, years, and legal citations"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"기호와 형식의 과도한 정형화"}} +{"key":"b433ecd6a31dcac0:original","original_sha":"b433ecd6a31dcac0","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"typical Korean government press release format with spacing artifacts"},"gpt":{"authorship":"human","ai_likeness":62,"strongest_cue":"구체적 수치가 많은 보도자료식 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"bureaucratic list-dump style with human spacing/typo glitches"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정부 press release boilerplate — 정책 bullet points, 정책명+숫자羅列, '△' symbol usage, and repetitive '확대·강화·지원' formulaic structure"}} +{"key":"b433ecd6a31dcac0:rewrite","original_sha":"b433ecd6a31dcac0","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"highly specific policy data and authentic administrative press phrasing"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 정책 요약 문장 구조","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"idiomatic Korean news style with dense real-policy specs","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복되는 정책 구조(▲일자리·자산형성 기회 확대 ▲생애주기 전반의 기본생활 보장 ▲청년 정책참여 확대)와 나열식 전개, AI·빅데이터·AX 등 기술 키워드의 과도한 삽입, '뒤받침한다'·'아우른다'·'뒤집어' 같은 정부 보도자료식 관용구의 기계적 반복","topped_up":true}} diff --git a/artifacts/rewrite-efficacy-study4/bridge-gemini.jsonl b/artifacts/rewrite-efficacy-study4/bridge-gemini.jsonl new file mode 100644 index 00000000..b708bc9d --- /dev/null +++ b/artifacts/rewrite-efficacy-study4/bridge-gemini.jsonl @@ -0,0 +1,108 @@ +{"key":"168f3c8118bd47aa:original","original_sha":"168f3c8118bd47aa","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":30,"strongest_cue":"실무 경험에서 우러나온 구체적인 문제 해결 팁"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"분량 충족을 선언하는 메타 문장"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"char-count meta header plus rigid parallel FAQ sections"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"메타 서술(2238자·분량 체크)으로 AI 생성 후 검증된 텍스트임을 자기표시"}} +{"key":"168f3c8118bd47aa:rewrite","original_sha":"168f3c8118bd47aa","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Developer-specific slang and idioms"},"gpt":{"authorship":"ai","ai_likeness":72,"strongest_cue":"균일한 항목별 설명 구조"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"lived Kakao-specific edge cases in natural practitioner Korean"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"conversational, experience-based phrasing with irregular rhythm and specific debugging anecdotes"}} +{"key":"1ae1f4a64a2eab3f:original","original_sha":"1ae1f4a64a2eab3f","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"Systematic and exhaustive detail"},"gpt":{"authorship":"ai","ai_likeness":92,"strongest_cue":"반복적인 ~해야 합니다와 균일한 설명 리듬"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"exhaustive polished step-by-step structure without personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 단계별 나열과 동일한 문장 패턴 반복"}} +{"key":"1ae1f4a64a2eab3f:rewrite","original_sha":"1ae1f4a64a2eab3f","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":60,"strongest_cue":"Experiential warning about a common error"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명 리듬과 반복적 지시문"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniformly exhaustive step-by-step tutorial cadence with no personal voice"},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"반복적인 단락 구조(시작→설정→구현→주의사항)와 과도한 명령형 조언(\"~하십시오\", \"~해야 합니다\")의 기계적 패턴"}} +{"key":"61babd677484cafa:original","original_sha":"61babd677484cafa","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Unnatural information density"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"포괄적 정책 키워드의 균일한 나열"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic multi-section progression dense with seamless buzzwords"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 축어체 나열형 구조와 무기한 연장되는 '~하고 있다' 종결 패턴"}} +{"key":"61babd677484cafa:rewrite","original_sha":"61babd677484cafa","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":75,"strongest_cue":"Dense, specific policy details"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"포괄적 정책 용어가 균일하게 이어지는 보고서식 문장"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"exhaustive multi-angle formulaic structure in uniform officialese"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"정책 수립 단계부터 목표 설정과 지표 설계를 분명히 하도록 강조한다"}} +{"key":"62acf994d71174b1:original","original_sha":"62acf994d71174b1","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Flawlessly formulaic news style"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"조건 충족을 보고하는 메타문장"},"grok":{"authorship":"ai","ai_likeness":86,"strongest_cue":"character-count fulfillment preamble"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 정부 보도자료 구조(기관-일자-의결-배경-재원-분야-장관 발언-전망 순서)와 반복되는 ~했다고 밝혔다/~했다고 설명했다/~했다고 강조했다 등의 기계적 인용 구조"}} +{"key":"62acf994d71174b1:rewrite","original_sha":"62acf994d71174b1","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":40,"strongest_cue":"Standard journalistic structure"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"구체적 출처 없이 균형 잡힌 보도문 틀을 반복"},"grok":{"authorship":"ai","ai_likeness":76,"strongest_cue":"formulaic multi-section news template with rounded balance"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 대칭 구조와 정형화된 인용문 패턴"}} +{"key":"b79dc954d1a16e17:original","original_sha":"b79dc954d1a16e17","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":75,"strongest_cue":"Specific policy details"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균질한 보도자료식 장문 문장"},"grok":{"authorship":"ai","ai_likeness":85,"strongest_cue":"exhaustive multi-angle balanced structure in uniform formal tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 병렬 구조와 반복적인 접속사(또한, 그리고, 특히)로 인한 기계적 리듬"}} +{"key":"b79dc954d1a16e17:rewrite","original_sha":"b79dc954d1a16e17","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Journalistic structure and sourcing"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"구체적 출처 없는 보도자료식 문장 반복"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic multi-angle coverage with uniform formal rhythm"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 구조와 반복적 문장 패턴"}} +{"key":"28d4eaa3438b3026:original","original_sha":"28d4eaa3438b3026","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"Informative but impersonal tone"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 보도자료식 문장 리듬"},"grok":{"authorship":"ai","ai_likeness":89,"strongest_cue":"formulaic bureaucratic news structure with generic optimistic framing"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정책적 의지를 보여 주는 사례로 평가된다"}} +{"key":"28d4eaa3438b3026:rewrite","original_sha":"28d4eaa3438b3026","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"Flawlessly generic structure"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"균일한 보도자료식 문장 리듬과 평탄한 '-다' 종결 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"templated multi-paragraph policy brief with generic officials and polished balanced framing"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"정책 보도자료 형식의 과도한 구조화 (배경→목적→대상→금액→절차→전망→분석→배경 반복→마무리)와 반복적인 인과/목적 구문 (~는 데 목적을 뒀다, ~를 연결하려는 조치다, ~에 기여할 것, ~가 될 것이라는 분석이 나온다)"}} +{"key":"23a5b6fbf574e6f7:original","original_sha":"23a5b6fbf574e6f7","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Impersonal and formulaic structure"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 문단 구조와 관료적 상투어 반복"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"uniform schematic paragraphs with formulaic bureaucratic phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 정부 보도자료 구조와 반복적인 ~한다는 계획이다/~기로 했다/~고 덧붙였다 패턴"}} +{"key":"23a5b6fbf574e6f7:rewrite","original_sha":"23a5b6fbf574e6f7","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":65,"strongest_cue":"Objective and dry tone"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 정책 보도 템플릿과 반복 종결"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"even parallel blocks and polished officialese without voice"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 구조와 반복적인 '~것이다/방침이다/계획이다' 종결 패턴"}} +{"key":"4900e9943fcbd984:original","original_sha":"4900e9943fcbd984","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Formulaic and impersonal tone"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"반복적인 보도자료식 문장 패턴"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"uniform formulaic bureaucratic prose with exhaustive balanced multi-section structure"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"기대된다/풀이된다/보인다/나온다 등 무성한 추측·해석·전망 투성이 문장 구조"}} +{"key":"4900e9943fcbd984:rewrite","original_sha":"4900e9943fcbd984","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Factual and numerical density"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"보도자료식 문장 구조와 완충 표현의 반복","topped_up":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic sectioned exposition with tidy caveats and canned wrap-up","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 구조와 반복적 수치 제시 (3조 2000억 원, 30곳, 1200억 원, 10만 건, 3만 건 등) 및 인용구 배치 패턴","topped_up":true}} +{"key":"312380a845a3f6f0:original","original_sha":"312380a845a3f6f0","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Formulaic press release structure"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"균일한 보도자료식 문단 구조"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"exhaustive parallel lists and staged plans in perfectly uniform bureaucratic prose"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"numbered list structure with parallel clause patterns (첫째/둘째/셋째/넷째/다섯째)"}} +{"key":"312380a845a3f6f0:rewrite","original_sha":"312380a845a3f6f0","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Formulaic and impersonal prose"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"구체명 없이 전방위 정책을 균질하게 나열함","topped_up":true},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"exhaustive formulaic multi-pillar lists and seamless officialese","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형적 5단계 구조(첫째/둘째/셋째/넷째/다섯째)와 '본격 추진', '전면 재편', '전방위 지원' 등 한국 정부 보도자료형 관용구 반복","topped_up":true}} +{"key":"482a1b346601eed1:original","original_sha":"482a1b346601eed1","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":20,"strongest_cue":"Practical developer advice"},"gpt":{"authorship":"ai","ai_likeness":83,"strongest_cue":"균일하게 정리된 설명형 문단 구조"},"grok":{"authorship":"ai","ai_likeness":81,"strongest_cue":"flawless stepwise coverage with uniform pedagogical polish"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"conversational hedging and reader-directed imperatives"}} +{"key":"482a1b346601eed1:rewrite","original_sha":"482a1b346601eed1","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":35,"strongest_cue":"Pragmatic developer advice"},"gpt":{"authorship":"ai","ai_likeness":74,"strongest_cue":"균일한 기술문서식 문단 리듬"},"grok":{"authorship":"ai","ai_likeness":72,"strongest_cue":"even sequential walkthrough with exhaustive, quirk-free coverage"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"비격식체+구어체 끝어미(~-야 하며, ~는 편이 낫다, ~짚고 넘어가야 한다)"}} +{"key":"bb5dc0d1ffc67c28:original","original_sha":"bb5dc0d1ffc67c28","cond":"original","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":75,"strongest_cue":"Methodical and repetitive structure"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체명 없이 반복되는 포괄적 요약 구조"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"uniform parallel sections with formulaic institutional phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 전문용어 나열"}} +{"key":"bb5dc0d1ffc67c28:rewrite","original_sha":"bb5dc0d1ffc67c28","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":65,"strongest_cue":"Specific policy and institutional context"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"분야별로 반복되는 균질한 보고서식 문단 구조"},"grok":{"authorship":"ai","ai_likeness":83,"strongest_cue":"rigid parallel sections each recycling research-highlight→NRF-action→policy template"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"구조적 반복과 정형화된 전환: 매 단락이 '분야 소개 → 구체적 사례/성과 → 연구재단의 대응/계획'의 동일한 3단 구조로 기계적으로 반복되며, 인간 필자가 보일 개인적 관점·어조 변화·구조적 실험성이 전혀 없음"}} +{"key":"686e5dcc3ceb1749:original","original_sha":"686e5dcc3ceb1749","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":30,"strongest_cue":"Specific personal experience"},"gpt":{"authorship":"ai","ai_likeness":95,"strongest_cue":"구체적 일화 없이 균질하게 나열되는 성과와 감상"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic seamless structure with idealized polished positivity"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 양치기식 나열 구조와 감정을 술어로만 서술하는 추상적 문체"}} +{"key":"686e5dcc3ceb1749:rewrite","original_sha":"686e5dcc3ceb1749","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Personal reflection on specific experiences"},"gpt":{"authorship":"ai","ai_likeness":92,"strongest_cue":"구체적 장면 없이 균일한 성과·기술 나열"},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"formulaic multi-section retrospective with exhaustive buzzword coverage and tidy three-lessons closer"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"과도한 구조적 대칭과 정형화된 키워드 나열"}} +{"key":"928d18c1dacf3fb2:original","original_sha":"928d18c1dacf3fb2","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"Reflective, personal narrative with specific anecdotes"},"gpt":{"authorship":"ai","ai_likeness":76,"strongest_cue":"과하게 매끈한 문제-위기-교훈 서사"},"grok":{"authorship":"human","ai_likeness":41,"strongest_cue":"dense insider micro-anecdotes with cultural sting"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적이고 생생한 회고적 서술과 팀 내부 대화, 감정적 반응의 세밀한 묘사"}} +{"key":"928d18c1dacf3fb2:rewrite","original_sha":"928d18c1dacf3fb2","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"Personal, narrative storytelling"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"너무 매끈한 문제-위기-교훈 서사","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"granular firsthand anecdotes (px values, Slack reactions, '은행 앱' sting) with natural self-critique","topped_up":true},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적 내부 에피소드와 감정적 회복 서사","topped_up":true}} +{"key":"65ca55ba6400468e:original","original_sha":"65ca55ba6400468e","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Nuanced analysis of limitations"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균일한 설명문 구조와 상투적 확장 표현"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic numbered essay structure plus stock visionary closing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"overly symmetric paragraph structure with numbered rhetorical triads (첫째/둘째/셋째) and predictable conclusion arc"}} +{"key":"65ca55ba6400468e:rewrite","original_sha":"65ca55ba6400468e","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":20,"strongest_cue":"Analysis of a specific company's policy"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"반복적이고 균형 잡힌 설명문 구조"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"flawlessly balanced multi-section essay with seamless transitions and no idiosyncrasies"},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"반복적인 '입니다/습니다' 종결과 문단별 구조적 대칭(문제-해결-확장)"}} +{"key":"fcb1fd7071034cf7:original","original_sha":"fcb1fd7071034cf7","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Specific, authentic project details"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균일한 문장 리듬의 포괄적 사례문체"},"grok":{"authorship":"ai","ai_likeness":87,"strongest_cue":"formulaic problem-solution-results structure with uniformly polished corporate tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 기술 세부사항 나열과 구조화된 단계별 설명"}} +{"key":"fcb1fd7071034cf7:rewrite","original_sha":"fcb1fd7071034cf7","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Specific, quantified engineering outcomes"},"gpt":{"authorship":"ai","ai_likeness":90,"strongest_cue":"구체적 출처 없이 매끄러운 사례형 구조와 반복적 일반화"},"grok":{"authorship":"ai","ai_likeness":83,"strongest_cue":"formulaic problem-solution-metrics-future arc with exhaustive polished coverage"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 구조적 대칭과 나열식 전개"}} +{"key":"df471256a3e0690c:original","original_sha":"df471256a3e0690c","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Nuanced organizational context"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명 구조와 일반론적 전개"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"formulaic problem–solution–benefit sections with uniform polish and no voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"과도한 구조적 대칭과 설명적 나열"}} +{"key":"df471256a3e0690c:rewrite","original_sha":"df471256a3e0690c","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"pragmatic, experience-driven perspective"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"매우 균일한 설명문 구조와 일반론적 전개","topped_up":true},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"textbook problem→solutions→benefits→caveats arc with uniform polish","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":72,"strongest_cue":"overly balanced paragraph structure with exhaustive enumeration","topped_up":true}} +{"key":"efc6bbbb5fcc65ec:original","original_sha":"efc6bbbb5fcc65ec","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":20,"strongest_cue":"Specific personal reflections and emotions"},"gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체성 없는 장문 회고와 상투적 교훈 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic multi-section reflective arc with polished platitudinous close"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 구조적 패턴 (문단 시작: ~하면서/하면서는 → 중간: 구체적 기능 설명 → 끝: 교훈/의미 도출)"}} +{"key":"efc6bbbb5fcc65ec:rewrite","original_sha":"efc6bbbb5fcc65ec","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Personal reflection on specific challenges"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균질한 단락 전개와 추상적 교훈형 결말","topped_up":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"formulaic sectioned arc with polished lessons and closer","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"정형화된 반성적 결론 구조 (마지막 단락의 '다시 생각했다/그게 ~이다/그것만으로도 충분히 보람차다/바란다/교훈이다' 연쇄)","topped_up":true}} +{"key":"8997830c69d60b15:original","original_sha":"8997830c69d60b15","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Specific personal anecdotes"},"gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"반복적이고 일반적인 기업문화 서술"},"grok":{"authorship":"ai","ai_likeness":84,"strongest_cue":"perfectly parallel slogan-driven anecdotes with uniform inspirational cadence"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"반복적인 구조적 패턴과 동일한 문장 틀의 재사용"}} +{"key":"8997830c69d60b15:rewrite","original_sha":"8997830c69d60b15","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Specific, reflective personal anecdotes"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"구체성 없는 반복적 성공 사례 구조"},"grok":{"authorship":"ai","ai_likeness":81,"strongest_cue":"schematic multi-anecdote arc that always resolves cleanly to the same branded slogan"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복되는 구조적 패턴과 정형화된 서술 리듬"}} +{"key":"dbb6bfe4103d2362:original","original_sha":"dbb6bfe4103d2362","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Practical, experience-based advice"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 교과서식 문단 전개"},"grok":{"authorship":"ai","ai_likeness":72,"strongest_cue":"uniform problem-solution-ops-ROI scaffolding with templated transitions"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"colloquial spoken rhythm with hedging and personal experience markers"}} +{"key":"dbb6bfe4103d2362:rewrite","original_sha":"dbb6bfe4103d2362","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"practical advice based on experience"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 단락 구조와 교과서식 전개"},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"checklist-complete didactic arc with uniformly neat per-paragraph takeaways"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"구체적 실무 경험과 현장감 있는 표현"}} +{"key":"be19e73ec1806639:original","original_sha":"be19e73ec1806639","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":40,"strongest_cue":"Reference to a specific company's methodology ('Toss-style TPM')"},"gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"첫째-둘째-셋째식 균질한 전개"},"grok":{"authorship":"ai","ai_likeness":91,"strongest_cue":"rigidly enumerated, evenly balanced sections with polished generic corporate rhetoric"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 1-2-3-4-5 구조와 각 문단의 동일한 패턴(문제 제기→토스식 TPM 제시→AI 시너지 설명→비유/은유로 마무리)"}} +{"key":"be19e73ec1806639:rewrite","original_sha":"be19e73ec1806639","cond":"rewrite","source_class":"ai","gemini":{"authorship":"ai","ai_likeness":75,"strongest_cue":"highly methodical four-point structure"},"gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"첫째·둘째식 균질한 전개와 반복"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"rigid 4-point parallel structure with identical AI+TPM framing each section"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"기계적 병렬 구조(첫째/둘째/셋째/넷째) + 각 단락의 동일한 서론-전개-결론 삼단 논법"}} +{"key":"8f39c12fc82867a2:original","original_sha":"8f39c12fc82867a2","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":70,"strongest_cue":"Deep, experience-based best practices"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 설명문 구조와 포괄적 체크리스트식 전개","retried":true},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"exhaustive even multi-section coverage with flat polished tone"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"uniformly structured paragraphs with identical topic-sentence-first pattern and exhaustive bullet-like enumeration of technical steps without any digression, personal anecdote, or stylistic variation"}} +{"key":"8f39c12fc82867a2:rewrite","original_sha":"8f39c12fc82867a2","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Specific, experience-based warnings"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"균일한 설명 리듬과 체크리스트식 포괄성"},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"uniform exhaustive tutorial cadence, no personal fingerprint"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"overly systematic paragraph structure with identical rhythm (topic sentence → bullet-like elaboration → cautionary closing)"}} +{"key":"1b1ca775a211b68a:original","original_sha":"1b1ca775a211b68a","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Nuanced policy critique"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균질한 삼분 구조와 추상명사 나열"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"rigid tripartite axes + formulaic balanced wrap-up"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"과도한 구조적 대칭과 추상적 나열"}} +{"key":"1b1ca775a211b68a:rewrite","original_sha":"1b1ca775a211b68a","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":65,"strongest_cue":"nuanced policy critique"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 3축 보고서 구조와 추상명사 나열"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"rigid three-axis scaffolding plus tidy triadic close"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"기계적 삼단 구조(첫째/둘째/셋째 축)와 정책 브리핑체 정형화된 문장 리듬"}} +{"key":"d94d64400975d9d6:original","original_sha":"d94d64400975d9d6","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":65,"strongest_cue":"Specific and formal policy language"},"gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"과도하게 균일한 보도자료식 구조와 반복 표현"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"perfectly parallel 3-part policy scaffolding with uniform bureaucratic cadence"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 3단 구조와 반복되는 '~한다고 밝혔다/강조했다/설명했다' 문장 패턴"}} +{"key":"d94d64400975d9d6:rewrite","original_sha":"d94d64400975d9d6","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":70,"strongest_cue":"Dense policy-specific terminology"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균질한 3단 구성과 일반론적 정책 문장 반복"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"rigidly parallel tripartite policy template"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 3대 지원책 구조와 반복적인 ~방침이다/~것이다 마무리 패턴"}} +{"key":"af9d5918e27537b9:original","original_sha":"af9d5918e27537b9","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":35,"strongest_cue":"Pragmatic, experience-based warnings"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 문단 구조와 반복되는 설명 리듬","retried":true},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"uniform exhaustive sequential structure without stylistic variation"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"단조로운 문장 길이와 과도한 나열 구조"}} +{"key":"af9d5918e27537b9:rewrite","original_sha":"af9d5918e27537b9","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":40,"strongest_cue":"Precise, experience-based technical advice"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 문단 구조와 매끄러운 포괄 설명"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniform exhaustive section-by-section tutorial polish"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"overly uniform paragraph structure and exhaustive enumeration of every possible parameter/edge case without natural digression or personal framing"}} +{"key":"7e61ec1f91bca4da:original","original_sha":"7e61ec1f91bca4da","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Deep, specific insider knowledge"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 설명문 구조와 과하게 정돈된 전개"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"evenly polished outline-driven exposition without personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 설명적 나열"}} +{"key":"7e61ec1f91bca4da:rewrite","original_sha":"7e61ec1f91bca4da","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Specific internal project details"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"균일한 교과서식 단락 전개","topped_up":true},"grok":{"authorship":"ai","ai_likeness":74,"strongest_cue":"exhaustively complete didactic structure with uniform balanced takeaways","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"과도한 병렬 구조와 반복적인 설명적 패턴","topped_up":true}} +{"key":"5de62744badff9a0:original","original_sha":"5de62744badff9a0","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"specific, experience-based argument"},"gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"균일한 문단 구조와 추상적 일반론 반복"},"grok":{"authorship":"ai","ai_likeness":82,"strongest_cue":"uniform polished multi-paragraph thesis with formulaic X-not-Y contrasts"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 병렬 구조와 과도한 정형화된 논리 전개"}} +{"key":"5de62744badff9a0:rewrite","original_sha":"5de62744badff9a0","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":30,"strongest_cue":"Coherent, repeated metaphor of high/low points"},"gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"균일한 문단 구조와 평서형 리듬"},"grok":{"authorship":"ai","ai_likeness":79,"strongest_cue":"glass-smooth not-X-but-Y reframes and product-pitch structure"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적인 구조적 패턴과 과도한 직조사(는/은/이/가) 사용으로 인한 기계적 리듬"}} +{"key":"5c322972487d701e:original","original_sha":"5c322972487d701e","cond":"original","source_class":"ai","gemini":{"authorship":"human","ai_likeness":45,"strongest_cue":"Pragmatic, experience-based advice"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 교과서식 전개와 과잉 나열"},"grok":{"authorship":"ai","ai_likeness":78,"strongest_cue":"uniform multi-section whitepaper cadence, no personal voice"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정형화된 구조와 과도한 구체성 나열"}} +{"key":"5c322972487d701e:rewrite","original_sha":"5c322972487d701e","cond":"rewrite","source_class":"ai","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"pragmatic, experience-driven advice"},"gpt":{"authorship":"ai","ai_likeness":68,"strongest_cue":"균일하게 정리된 교과서식 전개"},"grok":{"authorship":"ai","ai_likeness":68,"strongest_cue":"even multi-section didactic structure with polished wrap-up"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"과도하게 정돈된 구조와 반복적인 논리적 전개(문제 제기 → 기술 설명 → 오해 바로잡기 → 실행 전략 → 결론)의 기계적 패턴"}} +{"key":"add2d734b39e3d89:original","original_sha":"add2d734b39e3d89","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":85,"strongest_cue":"Dry, list-like policy points"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"보도자료식 세부 수치와 사업명 밀도"},"grok":{"authorship":"human","ai_likeness":76,"strongest_cue":"공식 정책브리핑 관료체와 전형적 보도 형식"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정책 브리핑 형식의 나열식 구조와 반복적인 '지원한다/추진한다/확대한다' 어미 패턴"}} +{"key":"add2d734b39e3d89:rewrite","original_sha":"add2d734b39e3d89","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":65,"strongest_cue":"highly specific policy jargon"},"gpt":{"authorship":"human","ai_likeness":44,"strongest_cue":"구체적 수치와 정책명 중심의 보도자료식 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"authentic 정책브리핑 house style with dense native policy nomenclature","topped_up":true},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"journalistic headline + dateline structure with specific ministry attribution and policy details","topped_up":true}} +{"key":"c66b92bc6b62a9b3:original","original_sha":"c66b92bc6b62a9b3","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":80,"strongest_cue":"Unrelated text at the end"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"구체 수치가 많은 보도자료식 문장"},"grok":{"authorship":"human","ai_likeness":24,"strongest_cue":"dense Korean ministry press-release cadence with precise budget/eligibility figures and trailing paste junk"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive formulaic opening clauses (중기부는 이어서/또한/아울러) with identical structural rhythm"}} +{"key":"c66b92bc6b62a9b3:rewrite","original_sha":"c66b92bc6b62a9b3","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":40,"strongest_cue":"Unrelated text appended at the end"},"gpt":{"authorship":"human","ai_likeness":52,"strongest_cue":"보도자료식 반복 구조"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"precise fiscal/policy specifics in dry Korean official-news cadence plus terminal scrap artifact"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic government press release structure with repetitive 'A를 B한다' sentence patterns and excessive numeric specificity"}} +{"key":"68f6f173662b6d6a:original","original_sha":"68f6f173662b6d6a","cond":"original","source_class":"human","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Unrelated legal text appended"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"공공기관 보도자료와 법령 보일러플레이트가 그대로 섞인 복사문"},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"scraped legal/copyright footers and unrelated fragments"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"numbered list with bullet-point policy summaries"}} +{"key":"68f6f173662b6d6a:rewrite","original_sha":"68f6f173662b6d6a","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":40,"strongest_cue":"Unrelated text appended at the end"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"웹페이지 법률문구와 무관한 보도설명 제목이 섞인 스크랩 흔적"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"abrupt web-scrape dump of fragmented legal clauses + unrelated 보도설명"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정책 보도자료 형식의 기계적 나열 구조(①②③ 번호 매기기, 예산 금액 나열, 장관 인용 후 마무리)와 마지막에 저작권/법률 조항/사칭 금지 등 무관한 내용이 그대로 붙여넣기된 조각난 구성"}} +{"key":"0e2d30b08fe7d170:original","original_sha":"0e2d30b08fe7d170","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":35,"strongest_cue":"Corpus collision"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"보도자료·법령 문구가 뒤섞인 비일관적 콜라주"},"grok":{"authorship":"ai","ai_likeness":88,"strongest_cue":"rigidly templated parallel FAQ answers with identical syntactic skeletons"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic paragraph openings (이에/아울러/한편/먼저/다만/특히) + numbered legal clauses + FAQ template structure"}} +{"key":"0e2d30b08fe7d170:rewrite","original_sha":"0e2d30b08fe7d170","cond":"rewrite","source_class":"human","gemini":{"authorship":"ai","ai_likeness":95,"strongest_cue":"Unrelated text fragments"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"공식 보도자료·법령 문구가 뒤섞인 스크랩 흔적"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"precise Korean city/transport-zone eligibility cases"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"abrupt concatenation of unrelated source fragments"}} +{"key":"a7a211d5527910f3:original","original_sha":"a7a211d5527910f3","cond":"original","source_class":"human","gemini":{"authorship":"ai","ai_likeness":90,"strongest_cue":"Unrelated boilerplate text"},"gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"보도자료식 구체 수치와 기관명"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"official briefing formula + scrapy end-of-doc legal junk"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정부 공식 보도자료 형식의 반복적 구조와 법령 조항 나열"}} +{"key":"a7a211d5527910f3:rewrite","original_sha":"a7a211d5527910f3","cond":"rewrite","source_class":"human","gemini":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Unrelated text appended at the end"},"gpt":{"authorship":"human","ai_likeness":28,"strongest_cue":"정책브리핑 스크랩 흔적과 구체적 수치","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"dense named entities + exact policy figures in standard briefing register","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정책 브리핑 형식의 나열적 구조와 반복적인 문장 패턴","topped_up":true}} +{"key":"f55d815f753bd79c:original","original_sha":"f55d815f753bd79c","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"Conversational interview format"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"구체적인 제품 개발 일화와 어색한 복사/편집 흔적"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"first-person team anecdotes with specific names, tech details & emotions"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational narrative voice with specific anecdotes and emotional texture"}} +{"key":"f55d815f753bd79c:rewrite","original_sha":"f55d815f753bd79c","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Direct quotes and personal anecdotes"},"gpt":{"authorship":"human","ai_likeness":28,"strongest_cue":"구체적 내부 용어와 인터뷰식 시행착오"},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"grounded multi-voice anecdotes with proprietary tech details & emotions"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"irregular paragraph lengths and anecdotal digressions"}} +{"key":"65a8227710e2d65a:original","original_sha":"65a8227710e2d65a","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Personal intern experience narrative"},"gpt":{"authorship":"human","ai_likeness":37,"strongest_cue":"불규칙한 메모식 문장과 구체적 구현 디테일"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"unpolished note-style fragments + personal team-move anecdote with CPL/LTI specifics"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"일기체 협업 회고의 자연스러운 화자 교체(이경민/문홍윤)"}} +{"key":"65a8227710e2d65a:rewrite","original_sha":"65a8227710e2d65a","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Personal narrative of an internship experience"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적인 구현 디테일과 메모식 문장","retried":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"IR-plugin gotchas + principle/principal typo"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"구체적인 팀명·프로젝트명·기술 용어의 자연스러운 혼합과 비공식적 말투(예: '쉽지 않았어요', '깜빡하면')"}} +{"key":"1d3f406d7c204392:original","original_sha":"1d3f406d7c204392","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Specific details about a real company's hiring process"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적 채용 페이지 문맥과 푸터 정보"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"company-specific metrics, named projects (DEUS, Frontend Fundamentals), dates, and legal footer details"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"conversational tone with direct address and informal particles (예요, 해요, 보세요)"}} +{"key":"1d3f406d7c204392:rewrite","original_sha":"1d3f406d7c204392","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Specific internal company details and achievements"},"gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"구체적인 회사·기술·날짜와 웹페이지 푸터 흔적"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"verifiable Toss-specific facts, products, and legal footer"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"company-specific details and named individuals"}} +{"key":"060ac470697071dd:original","original_sha":"060ac470697071dd","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"personal emotional narrative"},"gpt":{"authorship":"human","ai_likeness":12,"strongest_cue":"구어체 인터뷰의 비정형 리듬과 구체적 회고"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"messy spoken cadence with raw personal specifics"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"highly specific, self-deprecating personal anecdotes with irregular emotional rhythm"}} +{"key":"060ac470697071dd:rewrite","original_sha":"060ac470697071dd","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":5,"strongest_cue":"Candid, vulnerable personal anecdotes"},"gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"불규칙한 인터뷰 구어체와 구체적 일화"},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"raw spoken-style vulnerabilities and idiosyncratic personal details"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial self-deprecation and emotional specificity"}} +{"key":"022cba7e5d37000a:original","original_sha":"022cba7e5d37000a","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Specific company, team, and author names"},"gpt":{"authorship":"human","ai_likeness":46,"strongest_cue":"구체적 구현 세부와 불규칙한 띄어쓰기"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"dense proprietary infra specifics + mixed formal/casual Korean tone"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"scattered grammar/spacing errors (띄어쓰기 불일치, 불완전한 문장) and first-person voice with specific team/tech details"}} +{"key":"022cba7e5d37000a:rewrite","original_sha":"022cba7e5d37000a","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":20,"strongest_cue":"Specific company and author context"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"토스 환경의 구체적 기술 세부사항"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"informal ~었음 note-style pain-point list + concrete internal stack evolution (HBase/Redis→Aerospike, Trainkit)"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"구조화된 불릿 포인트와 반복되는 '입니다/습니다' 종결 패턴"}} +{"key":"664f106023e07411:original","original_sha":"664f106023e07411","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Specific company context"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"조사 앞 공백과 결론적으로식 정리 구조 반복"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"specific internal stats + exact KRW cost calcs"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"반복적인 구조적 패턴 (첫째/둘째/셋째, 장점-단점-결론 반복)와 과도한 괄호 영어 병기"}} +{"key":"664f106023e07411:rewrite","original_sha":"664f106023e07411","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":20,"strongest_cue":"구체적인 내부 데이터와 비용 분석"},"gpt":{"authorship":"ai","ai_likeness":74,"strongest_cue":"반복적인 장단점 나열 구조"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"specific Toss Securities workload stats + real AWS cost calcs + prior-post continuity"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"비유적 표현과 구체적 수치"}} +{"key":"8374ce653bfd06a5:original","original_sha":"8374ce653bfd06a5","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Institutional disclaimer and contact info"},"gpt":{"authorship":"human","ai_likeness":72,"strongest_cue":"반복적인 웹진식 연결어와 포괄적 전망 문장"},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"specific NRF institutional voice, email, and disclaimer"},"kimi":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 '-는데요' 종결 어미 패턴"}} +{"key":"8374ce653bfd06a5:rewrite","original_sha":"8374ce653bfd06a5","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":65,"strongest_cue":"Publication-specific boilerplate ending"},"gpt":{"authorship":"human","ai_likeness":64,"strongest_cue":"기관 웹진식 정형 문체"},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"institutional NRF disclaimer + colloquial particles with mid-sentence truncations"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"반복적인 '입니다/습니다' 종결 + 나열형 구조 + 전문용어 나열 후 '죠/데요' filler로 끝내는 뉴스 요약 템플릿"}} +{"key":"3434597ff1f55eda:original","original_sha":"3434597ff1f55eda","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":80,"strongest_cue":"Specific platform policy deadlines"},"gpt":{"authorship":"human","ai_likeness":55,"strongest_cue":"HTML scraping artifacts in technical documentation"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"HTML/CSS scrape artifacts with exact product/policy dates"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive parallel structure with identical sentence frames"}} +{"key":"3434597ff1f55eda:rewrite","original_sha":"3434597ff1f55eda","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":70,"strongest_cue":"References to dated platform policies"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"공식 문서식 구체 용어와 날짜"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"exact platform policy dates/RFC/product jargon in choppy doc style"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"repetitive sentence structure with subject-verb-object pattern and lack of personal voice"}} +{"key":"b5941b832a3c1b5f:original","original_sha":"b5941b832a3c1b5f","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":35,"strongest_cue":"Disordered list numbering"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"불연속 번호와 ' HTML 엔티티","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"inconsistent renumbered steps and abrupt section jumps"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"numbered procedural steps with robotic '해요' endings"}} +{"key":"b5941b832a3c1b5f:rewrite","original_sha":"b5941b832a3c1b5f","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":75,"strongest_cue":"Technical documentation tone"},"gpt":{"authorship":"human","ai_likeness":44,"strongest_cue":"불연속 번호와 HTML 엔티티 편집 흔적","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"jumbled real docs paste: out-of-order steps, HTML entities"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"numbered procedural steps with inconsistent numbering (2→3→2→4)"}} +{"key":"f780e8a5a60cd1f9:original","original_sha":"f780e8a5a60cd1f9","cond":"original","source_class":"human","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"Appended non-sequitur legal/boilerplate text"},"gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"정책기사형 수치·인용 구조와 크롤링 잔재","topped_up":true},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"formulaic official press-release style with exact budget figures plus scraped legal/unrelated fragments"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"기관명·예산액·법조항 목록의 조합적 나열과 인용문 직접 기재 형식"}} +{"key":"f780e8a5a60cd1f9:rewrite","original_sha":"f780e8a5a60cd1f9","cond":"rewrite","source_class":"human","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"incoherent content mixing"},"gpt":{"authorship":"human","ai_likeness":28,"strongest_cue":"기사 스크랩식 제목·수치·법령 조각","topped_up":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"dense official numbers, law cites, and scrape artifacts"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"news article with source attribution, named officials, and legal citation boilerplate"}} +{"key":"bdfecbbcf4002026:original","original_sha":"bdfecbbcf4002026","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Raw and informal user comments at the end"},"gpt":{"authorship":"human","ai_likeness":31,"strongest_cue":"웹페이지 푸터와 거친 실제 댓글 혼입","topped_up":true},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"specific hardware trade-offs plus raw typo-filled user comments"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"Raw user comments at bottom (typos, slang, emotional tone, unstructured grievances)"}} +{"key":"bdfecbbcf4002026:rewrite","original_sha":"bdfecbbcf4002026","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Raw user comments"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"실제 댓글처럼 보이는 비정제 문장과 오타","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"raw typo-filled angry user comments after specific hardware trade-off story"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial, emotionally charged user comments at the end with intentional typos, slang, and raw frustration ('쓰기 거지같이', '꼭 신경써주세요', '1프로도 안돼요')"}} +{"key":"7ee5f186b79a4a43:original","original_sha":"7ee5f186b79a4a43","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Specific redefinition of a role for a named company"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"구체 사례 없이 같은 추상 구조를 반복","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"lived Toss-specific gray-zone org thesis, not generic TPM blurb"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"Korean-specific contractions and natural rhythm breaks (e.g., '있기도 하죠', '많았습니다', '입니다') with irregular sentence lengths and occasional spoken-style fragments that deviate from AI's tendency toward uni"}} +{"key":"7ee5f186b79a4a43:rewrite","original_sha":"7ee5f186b79a4a43","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Personal narrative about a specific company's experience"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 추상 명사와 균일한 단락 리듬","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"first-person Toss origin story with a sustained, non-generic thesis","topped_up":true},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational rhythm with deliberate repetition and structural tension","topped_up":true}} +{"key":"e30f61fb56ba2b31:original","original_sha":"e30f61fb56ba2b31","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":20,"strongest_cue":"Personal project narrative with user quotes"},"gpt":{"authorship":"human","ai_likeness":62,"strongest_cue":"구체적 사내 수치와 오탈자가 섞인 홍보문 리듬","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"Korean typos and slips (판단은, 비스니스, 많은 데이터 많은 데이터)"},"kimi":{"authorship":"ai","ai_likeness":75,"strongest_cue":"구조적 반복과 정형화된 전환구"}} +{"key":"e30f61fb56ba2b31:rewrite","original_sha":"e30f61fb56ba2b31","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Personal narrative with author introduction"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"구체적 내부 수치와 기술 맥락","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"specific dbt/DW ops details + real usage metrics","topped_up":true},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"conversational first-person voice with specific anecdotes and direct quotes","topped_up":true}} +{"key":"e0366816ddef04e5:original","original_sha":"e0366816ddef04e5","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Real-world case study with specific numbers"},"gpt":{"authorship":"ai","ai_likeness":72,"strongest_cue":"초반 문장 반복과 매끈한 설명형 구조","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"ops war-stories with real QPS, accounts, format glitches"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial Korean endings (했어요, 였어요, 거거든요) with natural digressions and specific operational war stories"}} +{"key":"e0366816ddef04e5:rewrite","original_sha":"e0366816ddef04e5","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Specific real-world case study"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적 운영 수치와 구현 세부","topped_up":true},"grok":{"authorship":"human","ai_likeness":24,"strongest_cue":"duplicated intro plus concrete internal ops metrics and trial-and-error narrative"},"kimi":{"authorship":"human","ai_likeness":15,"strongest_cue":"colloquial Korean endings (어요/였어요) with natural digressions and specific operational anecdotes"}} +{"key":"4214406639383b83:original","original_sha":"4214406639383b83","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Narrative of specific internal challenges"},"gpt":{"authorship":"human","ai_likeness":54,"strongest_cue":"구체적 운영 맥락과 자연스러운 띄어쓰기 흔들림","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"insider merchant-ecosystem constraints and organizational inertia"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational parenthetical asides and deliberate reader-addressing rhythm (e.g., '뉴스에서 한 번쯤 들어 보셨을 단어일 텐데요', '조금 더 구체적으로 들여다보면 이렇습니다')"}} +{"key":"4214406639383b83:rewrite","original_sha":"4214406639383b83","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Storytelling with technical analogies"},"gpt":{"authorship":"human","ai_likeness":41,"strongest_cue":"구체적인 운영 맥락과 도메인 디테일","topped_up":true},"grok":{"authorship":"human","ai_likeness":32,"strongest_cue":"lived PG ops constraints & organizational inertia voice"},"kimi":{"authorship":"human","ai_likeness":20,"strongest_cue":"conversational parenthetical asides and self-interruptions"}} +{"key":"272b1487dead94f0:original","original_sha":"272b1487dead94f0","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Personal and speculative take on future tech"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"과도하게 균질한 논리 전개와 괄호식 영어 개념 병기","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"first-person hedging + original domain framing (executable SSOT)"},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"irregular paragraph lengths and organic pacing"}} +{"key":"272b1487dead94f0:rewrite","original_sha":"272b1487dead94f0","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"Cohesive, personal thesis"},"gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"반복적인 영어 병기와 균일한 논설 구조","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"colloquial first-person Korean tech-essay cadence","topped_up":true},"kimi":{"authorship":"human","ai_likeness":25,"strongest_cue":"conversational self-correction and hedging","topped_up":true}} +{"key":"971cc5650bbf8bf8:original","original_sha":"971cc5650bbf8bf8","cond":"original","source_class":"human","gemini":{"authorship":"ai","ai_likeness":80,"strongest_cue":"Disjointed and repetitive FAQ-style answers"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"웹문서 스크래핑 잔재","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"garbled CSS/HTML scrapings in fragmented FAQ docs"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic Q&A structure with numbered procedural steps"}} +{"key":"971cc5650bbf8bf8:rewrite","original_sha":"971cc5650bbf8bf8","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":85,"strongest_cue":"Repetitive FAQ format"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"문서 조각과 HTML 잔여물이 섞인 편집 흔적","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"scraped HTML artifacts in Kakao FAQ docs"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"mechanical Q&A structure with repetitive formulaic transitions"}} +{"key":"20e25898a7e6fe9e:original","original_sha":"20e25898a7e6fe9e","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Specific API/SDK function names"},"gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"스크랩된 기술문서의 HTML 잔여 토큰","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"scraped fragments with residual HTML markup"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"broken HTML artifacts (&]:text-inherit) mixed with flat, repetitive instructional register"}} +{"key":"20e25898a7e6fe9e:rewrite","original_sha":"20e25898a7e6fe9e","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":10,"strongest_cue":"API-specific instructions"},"gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"구체적인 SDK/API 객체명과 문서 조각의 흔적"},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"exact Kakao Flutter SDK methods/types, not generic filler"},"kimi":{"authorship":"ai","ai_likeness":82,"strongest_cue":"반복되는 '요청이 성공하면 ~가 반환됩니다' 구조와 기술 문서 전체에 걸친 일정한 절차적 나열 패턴"}} +{"key":"1707285500db245b:original","original_sha":"1707285500db245b","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":20,"strongest_cue":"Repetitive examples for different languages"},"gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"공식 문서식 반복과 API 세부값 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"choppy official-doc fragments with near-duplicate language sample listings"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복되는 정형화된 문장 패턴과 기술 문서의 기계적 나열 구조"}} +{"key":"1707285500db245b:rewrite","original_sha":"1707285500db245b","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":75,"strongest_cue":"Repetitive, language-specific example file lists"},"gpt":{"authorship":"human","ai_likeness":22,"strongest_cue":"구체적인 API 파라미터와 문서 조각식 반복","topped_up":true},"grok":{"authorship":"human","ai_likeness":22,"strongest_cue":"choppy concatenated official API docs with corporate policy phrasing"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복적 구조와 기계적 나열 (예: '네이버 로그인 접근토큰 획득 예제는 X개의 파일로 구성됩니다' 3회 반복)"}} +{"key":"339acb222713df25:original","original_sha":"339acb222713df25","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":90,"strongest_cue":"Repetitive, formulaic structure"},"gpt":{"authorship":"human","ai_likeness":62,"strongest_cue":"공공기관 보고서식 반복 명사구","topped_up":true},"grok":{"authorship":"human","ai_likeness":55,"strongest_cue":"scraped KISTEP page breadcrumbs + authentic bureaucratic ㅇ-lists with real policy names"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"bullet-pointed government report with HTML entity artifacts (·)"}} +{"key":"339acb222713df25:rewrite","original_sha":"339acb222713df25","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":85,"strongest_cue":"Bureaucratic bullet-point style"},"gpt":{"authorship":"human","ai_likeness":52,"strongest_cue":"공공기관 보고서식 ㅇ bullet 형식","topped_up":true},"grok":{"authorship":"human","ai_likeness":27,"strongest_cue":"authentic dense bureaucratic ㅇ-bullet lists with real KISTEP policy nomenclature","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"기계적 반복 구조 (ㅇ + 동사구 나열)","topped_up":true}} +{"key":"132e6021efbde1a2:original","original_sha":"132e6021efbde1a2","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":15,"strongest_cue":"Specialized bureaucratic jargon"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"기관 보고서식의 구체적 항목·법조문 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":18,"strongest_cue":"bureaucratic Korean report bullets with typos (살파보고, USTPO)"},"kimi":{"authorship":"human","ai_likeness":35,"strongest_cue":"Korean bureaucratic report style with specific institutional abbreviations (KISTEP, USTPO), legal article citations (제19조, 제18조), and domain-specific jargon (CLD, SFD, Stock-Flow Diagram) that reflect"}} +{"key":"132e6021efbde1a2:rewrite","original_sha":"132e6021efbde1a2","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":85,"strongest_cue":"Formulaic and impersonal language"},"gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"공식 보고서식 불릿과 구체 고유명사","topped_up":true},"grok":{"authorship":"human","ai_likeness":28,"strongest_cue":"dense official report bullets with concrete methods, years, and legal citations"},"kimi":{"authorship":"ai","ai_likeness":92,"strongest_cue":"기호와 형식의 과도한 정형화"}} +{"key":"b433ecd6a31dcac0:original","original_sha":"b433ecd6a31dcac0","cond":"original","source_class":"human","gemini":{"authorship":"human","ai_likeness":80,"strongest_cue":"Highly specific policy details and figures"},"gpt":{"authorship":"human","ai_likeness":62,"strongest_cue":"구체적 수치가 많은 보도자료식 나열","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"bureaucratic list-dump style with human spacing/typo glitches"},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"정부 press release boilerplate — 정책 bullet points, 정책명+숫자羅列, '△' symbol usage, and repetitive '확대·강화·지원' formulaic structure"}} +{"key":"b433ecd6a31dcac0:rewrite","original_sha":"b433ecd6a31dcac0","cond":"rewrite","source_class":"human","gemini":{"authorship":"human","ai_likeness":25,"strongest_cue":"Specific, named government programs and figures"},"gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"반복적인 정책 요약 문장 구조","topped_up":true},"grok":{"authorship":"human","ai_likeness":38,"strongest_cue":"idiomatic Korean news style with dense real-policy specs","topped_up":true},"kimi":{"authorship":"ai","ai_likeness":85,"strongest_cue":"반복되는 정책 구조(▲일자리·자산형성 기회 확대 ▲생애주기 전반의 기본생활 보장 ▲청년 정책참여 확대)와 나열식 전개, AI·빅데이터·AX 등 기술 키워드의 과도한 삽입, '뒤받침한다'·'아우른다'·'뒤집어' 같은 정부 보도자료식 관용구의 기계적 반복","topped_up":true}} diff --git a/artifacts/rewrite-efficacy-study4/bridge-verdict-deepseek-v4-pro.json b/artifacts/rewrite-efficacy-study4/bridge-verdict-deepseek-v4-pro.json new file mode 100644 index 00000000..e647b613 --- /dev/null +++ b/artifacts/rewrite-efficacy-study4/bridge-verdict-deepseek-v4-pro.json @@ -0,0 +1,25 @@ +{ + "computed_at": "2026-09-02T09:55:18.652Z", + "rule": { + "min_auc": 0.85, + "spearman_slack": 0.1, + "reference": "grok-vs-gpt on the same passages" + }, + "passages_scored": 49, + "originals": 25, + "n_ai": 25, + "n_human": 0, + "auc_gemini": null, + "auc_gpt_reference": null, + "auc_grok_reference": null, + "n_paired": 49, + "spearman_gemini_gpt": 0.6960253011309628, + "spearman_grok_gpt": 0.751180116074978, + "spearman_gemini_grok": 0.6903286859071949, + "candidate": "judge-deepseek-v4-pro", + "admitted": false, + "judges": [ + "judge-gpt" + ], + "label": "single-perceptual-judge" +} diff --git a/artifacts/rewrite-efficacy-study4/bridge-verdict-gemini-3.1-pro.json b/artifacts/rewrite-efficacy-study4/bridge-verdict-gemini-3.1-pro.json new file mode 100644 index 00000000..f5b84888 --- /dev/null +++ b/artifacts/rewrite-efficacy-study4/bridge-verdict-gemini-3.1-pro.json @@ -0,0 +1,26 @@ +{ + "computed_at": "2026-09-02T09:27:49.173Z", + "rule": { + "min_auc": 0.85, + "spearman_slack": 0.1, + "reference": "grok-vs-gpt on the same passages" + }, + "passages_scored": 108, + "originals": 54, + "n_ai": 27, + "n_human": 27, + "auc_gemini": 0.9705075445816187, + "auc_gpt_reference": 0.9945130315500685, + "auc_grok_reference": 0.9670781893004116, + "n_paired": 108, + "spearman_gemini_gpt": 0.8486555202072771, + "spearman_grok_gpt": 0.8571965489263718, + "spearman_gemini_grok": 0.7895873527481948, + "candidate": "judge-gemini-3.1-pro", + "admitted": true, + "judges": [ + "judge-gpt", + "judge-gemini-3.1-pro" + ], + "label": "panel-v2-deviation-gemini" +} diff --git a/artifacts/rewrite-efficacy-study4/bridge-verdict-gemini-3.7-flash.json b/artifacts/rewrite-efficacy-study4/bridge-verdict-gemini-3.7-flash.json new file mode 100644 index 00000000..55fd4db2 --- /dev/null +++ b/artifacts/rewrite-efficacy-study4/bridge-verdict-gemini-3.7-flash.json @@ -0,0 +1,26 @@ +{ + "computed_at": "2026-09-02T09:08:47.055Z", + "rule": { + "min_auc": 0.85, + "spearman_slack": 0.1, + "reference": "grok-vs-gpt on the same passages" + }, + "passages_scored": 108, + "originals": 54, + "n_ai": 27, + "n_human": 27, + "auc_gemini": 1, + "auc_gpt_reference": 0.9945130315500685, + "auc_grok_reference": 0.9670781893004116, + "n_paired": 108, + "spearman_gemini_gpt": 0.8841905049666263, + "spearman_grok_gpt": 0.8571965489263718, + "spearman_gemini_grok": 0.7937210492530502, + "candidate": "judge-gemini-3.7-flash", + "admitted": true, + "judges": [ + "judge-gpt", + "judge-gemini-3.7-flash" + ], + "label": "panel-v2-deviation-gemini" +} diff --git a/artifacts/rewrite-efficacy-study4/bridge-verdict-kimi-k3.json b/artifacts/rewrite-efficacy-study4/bridge-verdict-kimi-k3.json new file mode 100644 index 00000000..8ea9d912 --- /dev/null +++ b/artifacts/rewrite-efficacy-study4/bridge-verdict-kimi-k3.json @@ -0,0 +1,25 @@ +{ + "computed_at": "2026-09-02T09:02:33.550Z", + "rule": { + "min_auc": 0.85, + "spearman_slack": 0.1, + "reference": "grok-vs-gpt on the same passages" + }, + "passages_scored": 0, + "originals": 0, + "n_ai": 0, + "n_human": 0, + "auc_gemini": null, + "auc_gpt_reference": null, + "auc_grok_reference": null, + "n_paired": 0, + "spearman_gemini_gpt": null, + "spearman_grok_gpt": null, + "spearman_gemini_grok": null, + "candidate": "judge-kimi-k3", + "admitted": false, + "judges": [ + "judge-gpt" + ], + "label": "single-perceptual-judge" +} diff --git a/artifacts/rewrite-efficacy-study4/bridge-verdict.json b/artifacts/rewrite-efficacy-study4/bridge-verdict.json new file mode 100644 index 00000000..749975f9 --- /dev/null +++ b/artifacts/rewrite-efficacy-study4/bridge-verdict.json @@ -0,0 +1,24 @@ +{ + "computed_at": "2026-09-02T08:51:13.973Z", + "rule": { + "min_auc": 0.85, + "spearman_slack": 0.1, + "reference": "grok-vs-gpt on the same passages" + }, + "passages_scored": 108, + "originals": 54, + "n_ai": 27, + "n_human": 27, + "auc_gemini": 0.5555555555555556, + "auc_gpt_reference": 0.9945130315500685, + "auc_grok_reference": 0.9670781893004116, + "n_paired": 108, + "spearman_gemini_gpt": 0.13719415781074779, + "spearman_grok_gpt": 0.8571965489263718, + "spearman_gemini_grok": 0.23318025500328657, + "admitted": false, + "judges": [ + "judge-gpt" + ], + "label": "single-perceptual-judge" +} diff --git a/artifacts/rewrite-efficacy-study4/s4-rows-ko.jsonl b/artifacts/rewrite-efficacy-study4/s4-rows-ko.jsonl new file mode 100644 index 00000000..e5670ed0 --- /dev/null +++ b/artifacts/rewrite-efficacy-study4/s4-rows-ko.jsonl @@ -0,0 +1,54 @@ +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-kakao-login-faq","model_family":"claude-family","register":"product-doc","original_sha":"168f3c8118bd47aa","original_chars":2315,"original_detail_count":12,"P":{"rewrite_sha":"0c22ca082bc8f46f","error":null,"chars":2079,"ratio":0.8983,"gate_failed":true,"gate_reason":"numbers in the source are missing from the rewrite: 2238, 2195","internal":{"signal_score":1.238273921200752,"score":20,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":12,"retained":10,"retention":0.8333333333333334,"added":0},"trigram_jaccard":0.5046,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"균일한 문단 길이와 반복적인 순서 열거 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic ordinal paragraph structure with uniform length and transitions"}}},"S":{"rewrite_sha":"2f36ade02558e959","error":null,"attempts":[{"attempt":1,"chars":2054,"ratio":0.8874,"rewrite_sha":"e741781c1f386b9e"},{"attempt":2,"chars":2227,"ratio":0.9623,"rewrite_sha":"6cec9266f23553ef"},{"attempt":3,"chars":2195,"ratio":0.9485,"rewrite_sha":"2f36ade02558e959"}],"floor_met":false,"chars":2195,"ratio":0.9485,"gate_failed":true,"gate_reason":"numbers in the source are missing from the rewrite: 2238, 2195","internal":{"signal_score":2.4127210713936864,"score":20,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":12,"retained":10,"retention":0.8333333333333334,"added":0},"trigram_jaccard":0.7988,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":90,"strongest_cue":"획일적인 서수 반복과 지나치게 균일한 문단 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"rigidly balanced 5-point enumeration structure with formulaic paragraph endings"}}},"collapsed_original_chars":2310} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-kakao-login-flutter","model_family":"moonshot-family","register":"product-doc","original_sha":"1ae1f4a64a2eab3f","original_chars":3361,"original_detail_count":40,"P":{"rewrite_sha":"bc7b0dbaa98e4ed1","error":null,"chars":2604,"ratio":0.7745,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":1.8748292419090398,"score":40,"pattern_hits":2,"det_verdict":"ai"},"detail":{"orig_count":40,"retained":40,"retention":1,"added":0},"trigram_jaccard":0.5068,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"단계별 설명이 지나치게 균일하고 반복적인 교과서식 문장 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic tutorial structure with uniform paragraph length and repetitive imperative endings"}}},"S":{"rewrite_sha":"cb16ec0160cc2245","error":null,"attempts":[{"attempt":1,"chars":2893,"ratio":0.8606,"rewrite_sha":"c1c3d037aa1694fd"},{"attempt":2,"chars":3243,"ratio":0.9648,"rewrite_sha":"20a2a28bbb1098d5"},{"attempt":3,"chars":3071,"ratio":0.9136,"rewrite_sha":"cb16ec0160cc2245"}],"floor_met":false,"chars":3071,"ratio":0.9136,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.2652806314451635,"score":40,"pattern_hits":2,"det_verdict":"ai"},"detail":{"orig_count":40,"retained":40,"retention":1,"added":0},"trigram_jaccard":0.5416,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균일한 문단 구조와 반복적인 단계 전환 표현"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"Uniform textbook-style explanatory structure with perfectly balanced paragraph transitions"}}},"collapsed_original_chars":3357} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-kistep-performance-eval-2025","model_family":"xai-family","register":"academic-summary","original_sha":"61babd677484cafa","original_chars":2558,"original_detail_count":7,"P":{"rewrite_sha":"77e81be80e22dab5","error":null,"chars":2325,"ratio":0.9088,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":5.9122186776937315,"score":75,"pattern_hits":5,"det_verdict":"ai"},"detail":{"orig_count":7,"retained":7,"retention":1,"added":0},"trigram_jaccard":0.5171,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"근거 없이 포괄적 정책 변화를 균일한 문장 구조로 나열함"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic paragraph organization with exhaustive buzzword enumeration and uniform cadence"}}},"S":{"rewrite_sha":"4f12ffed35592dbf","error":null,"attempts":[{"attempt":1,"chars":2470,"ratio":0.9656,"rewrite_sha":"32290ed0c8c944b6"},{"attempt":2,"chars":2485,"ratio":0.9714,"rewrite_sha":"7d8c4f70311a0e65"},{"attempt":3,"chars":2484,"ratio":0.971,"rewrite_sha":"4f12ffed35592dbf"}],"floor_met":false,"chars":2484,"ratio":0.971,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":9.799379457638256,"score":75,"pattern_hits":2,"det_verdict":"ai"},"detail":{"orig_count":7,"retained":7,"retention":1,"added":0},"trigram_jaccard":0.5253,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":97,"strongest_cue":"근거 없는 정책 단정이 균일한 설명문 구조로 과도하게 나열됨"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":95,"strongest_cue":"buzzword-dense uniform structure with terminological error conflating BSC and KPI"}}},"collapsed_original_chars":2555} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-korea-policy-budget-2025","model_family":"claude-family","register":"chat-update","original_sha":"62acf994d71174b1","original_chars":1410,"original_detail_count":9,"P":{"rewrite_sha":"ce68c0c822cdf6eb","error":null,"chars":1228,"ratio":0.8713,"gate_failed":true,"gate_reason":"numbers in the source are missing from the rewrite: 1366, 1211, 2018","internal":{"signal_score":3.3084914782278623,"score":25,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":9,"retained":6,"retention":0.6666666666666666,"added":0},"trigram_jaccard":0.479,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"구체적 고유명사 없이 상투적 정책 문구만 균일하게 이어짐"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":80,"strongest_cue":"formulaic news structure with generic quotes and lack of named officials"}}},"S":{"rewrite_sha":"4e12b0e199ae389e","error":null,"attempts":[{"attempt":1,"chars":955,"ratio":0.6771,"rewrite_sha":"9402b0b774b974eb"},{"attempt":2,"chars":1298,"ratio":0.9211,"rewrite_sha":"a25683856cbef933"},{"attempt":3,"chars":1328,"ratio":0.9424,"rewrite_sha":"4e12b0e199ae389e"}],"floor_met":false,"chars":1328,"ratio":0.9424,"gate_failed":true,"gate_reason":"numbers in the source are missing from the rewrite: 1366, 1211, 2018","internal":{"signal_score":0.18610421836228463,"score":25,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":9,"retained":6,"retention":0.6666666666666666,"added":0},"trigram_jaccard":0.8075,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":92,"strongest_cue":"구체적 출처 없이 상투적 정책 문구가 균일하게 반복됨"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic balanced structure with generic attributions"}}},"collapsed_original_chars":1406} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-korea-policy-car-2025","model_family":"moonshot-family","register":"chat-update","original_sha":"b79dc954d1a16e17","original_chars":2597,"original_detail_count":7,"P":{"rewrite_sha":"9c4071b795b90696","error":null,"chars":2094,"ratio":0.8061,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":5.5737714201755635,"score":75,"pattern_hits":1,"det_verdict":"ai"},"detail":{"orig_count":7,"retained":6,"retention":0.8571428571428571,"added":1},"trigram_jaccard":0.4946,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"균질한 문장 리듬과 반복되는 정책 보도문형 전개"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic paragraph structure and synthetic, balanced news style"}}},"S":{"rewrite_sha":"a66f96899fad8225","error":null,"attempts":[{"attempt":1,"chars":2219,"ratio":0.8543,"rewrite_sha":"38115cb2b2048c8f"},{"attempt":2,"chars":2401,"ratio":0.9244,"rewrite_sha":"59cdf7832c3ca298"},{"attempt":3,"chars":2493,"ratio":0.9599,"rewrite_sha":"a66f96899fad8225"}],"floor_met":false,"chars":2493,"ratio":0.9599,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.029890281778907,"score":50,"pattern_hits":2,"det_verdict":"ai"},"detail":{"orig_count":7,"retained":7,"retention":1,"added":0},"trigram_jaccard":0.7784,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"반복되는 정책 효과 나열과 획일적인 문장 전개"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic short transition sentences amid balanced policy reporting"}}},"collapsed_original_chars":2594} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-korea-policy-education-2025","model_family":"xai-family","register":"chat-update","original_sha":"28d4eaa3438b3026","original_chars":1854,"original_detail_count":7,"P":{"rewrite_sha":"4435e9aefd2d6134","error":null,"chars":1562,"ratio":0.8422,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0.541413767392096,"score":50,"pattern_hits":2,"det_verdict":"ai"},"detail":{"orig_count":7,"retained":7,"retention":1,"added":0},"trigram_jaccard":0.4663,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체적 출처 없이 정책 정보를 빈틈없이 나열하는 균일한 문장 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic news summary structure with a generic optimistic conclusion"}}},"S":{"rewrite_sha":"ffd48170e5d2d0c5","error":null,"attempts":[{"attempt":1,"chars":1669,"ratio":0.9001,"rewrite_sha":"6c5ad771e48c7b1f"},{"attempt":2,"chars":1853,"ratio":0.9995,"rewrite_sha":"ffd48170e5d2d0c5"}],"floor_met":true,"chars":1853,"ratio":0.9995,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":4.273132224007087,"score":75,"pattern_hits":3,"det_verdict":"ai"},"detail":{"orig_count":7,"retained":7,"retention":1,"added":0},"trigram_jaccard":0.6669,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"균질한 문장 리듬과 상투적인 정책 기사 문구의 반복"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":90,"strongest_cue":"vague criteria descriptions ('일정 비율', '기준을 충족') paired with formulaic concluding platitudes"}}},"collapsed_original_chars":1851} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-korea-policy-lowbirth-2025","model_family":"claude-family","register":"chat-update","original_sha":"23a5b6fbf574e6f7","original_chars":1398,"original_detail_count":2,"P":{"rewrite_sha":"492c8f29e6ecf616","error":null,"chars":1231,"ratio":0.8802,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":0,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":2,"retained":2,"retention":1,"added":0},"trigram_jaccard":0.5361,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"구체적 출처 없이 반복되는 매끈한 정책 요약 문장"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":35,"strongest_cue":"natural journalistic sentence rhythm and concise phrasing"}}},"S":{"rewrite_sha":"97fcdeface3105a7","error":null,"attempts":[{"attempt":1,"chars":1338,"ratio":0.957,"rewrite_sha":"98596003226181c8"},{"attempt":2,"chars":1311,"ratio":0.9376,"rewrite_sha":"d7891efa2e47a448"},{"attempt":3,"chars":1369,"ratio":0.9792,"rewrite_sha":"97fcdeface3105a7"}],"floor_met":false,"chars":1369,"ratio":0.9792,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":1.642750149999157,"score":20,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":2,"retained":2,"retention":1,"added":0},"trigram_jaccard":0.8061,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"기계적으로 균형 잡힌 문단 구성과 반복적 정책 요약"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic short rhetorical bridge sentences across paragraphs"}}},"collapsed_original_chars":1394} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-naver-login-doc","model_family":"claude-family","register":"product-doc","original_sha":"482a1b346601eed1","original_chars":1583,"original_detail_count":49,"P":{"rewrite_sha":"f80607835fdd843b","error":null,"chars":1516,"ratio":0.9576,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":0,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":49,"retained":49,"retention":1,"added":0},"trigram_jaccard":0.679,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"빈틈없이 균일한 단계별 설명 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":82,"strongest_cue":"formulaic technical documentation structure and generic security advice"}}},"S":{"rewrite_sha":"4e2a067ca649e54b","error":null,"attempts":[{"attempt":1,"chars":1593,"ratio":1.0063,"rewrite_sha":"4e2a067ca649e54b"}],"floor_met":true,"chars":1593,"ratio":1.0063,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":0,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":49,"retained":49,"retention":1,"added":0},"trigram_jaccard":0.6236,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":78,"strongest_cue":"단락마다 동일하게 반복되는 설명→주의사항 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":75,"strongest_cue":"formulaic sequential technical documentation structure"}}},"collapsed_original_chars":1579} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-nrf-trend-ai-2025","model_family":"moonshot-family","register":"academic-summary","original_sha":"bb5dc0d1ffc67c28","original_chars":2998,"original_detail_count":5,"P":{"rewrite_sha":"bdceb2788821aeef","error":null,"chars":2551,"ratio":0.8507,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":3.5387830694736655,"score":60,"pattern_hits":6,"det_verdict":"ai"},"detail":{"orig_count":5,"retained":3,"retention":0.6,"added":1},"trigram_jaccard":0.4996,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"모든 문단이 분야 소개→성과 나열→정책 지원으로 반복되는 지나치게 균일한 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic paragraph-by-paragraph domain summary structure"}}},"S":{"rewrite_sha":"59a6acf0896da863","error":null,"attempts":[{"attempt":1,"chars":2773,"ratio":0.9248,"rewrite_sha":"79d6a0c36ede7d80"},{"attempt":2,"chars":2875,"ratio":0.9589,"rewrite_sha":"2c306645d2d7c026"},{"attempt":3,"chars":2911,"ratio":0.9709,"rewrite_sha":"59a6acf0896da863"}],"floor_met":false,"chars":2911,"ratio":0.9709,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.8896533614393594,"score":60,"pattern_hits":7,"det_verdict":"ai"},"detail":{"orig_count":5,"retained":4,"retention":0.8,"added":0},"trigram_jaccard":0.7668,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":97,"strongest_cue":"분야별로 반복되는 획일적 요약 구조와 상투적 결론"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":92,"strongest_cue":"repetitive paragraph formula of domain trend followed by standardized institutional response"}}},"collapsed_original_chars":2994} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-front-2","model_family":"claude-family","register":"blog","original_sha":"928d18c1dacf3fb2","original_chars":3131,"original_detail_count":24,"P":{"rewrite_sha":"cd5bc52d01c454e9","error":null,"chars":3105,"ratio":0.9917,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":16.933958655834726,"score":40,"pattern_hits":2,"det_verdict":"ai"},"detail":{"orig_count":24,"retained":23,"retention":0.9583333333333334,"added":1},"trigram_jaccard":0.8692,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"지나치게 정돈된 문제-위기-교훈 서사"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":12,"strongest_cue":"vivid situational anecdotes and authentic Korean tech-blog narrative voice"}}},"S":{"rewrite_sha":"b28982159901edda","error":null,"attempts":[{"attempt":1,"chars":3074,"ratio":0.9818,"rewrite_sha":"b28982159901edda"}],"floor_met":true,"chars":3074,"ratio":0.9818,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":13.524974076749041,"score":40,"pattern_hits":2,"det_verdict":"ai"},"detail":{"orig_count":24,"retained":24,"retention":1,"added":0},"trigram_jaccard":0.8811,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":84,"strongest_cue":"지나치게 매끈한 문제→위기→성찰→교훈의 서사 구조"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":12,"strongest_cue":"authentic tech blog narrative cadence and industry-specific anecdotes"}}},"collapsed_original_chars":3127} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-frontend-github-2025","model_family":"moonshot-family","register":"blog","original_sha":"65ca55ba6400468e","original_chars":2545,"original_detail_count":3,"P":{"rewrite_sha":"f6a82cc434c2aa88","error":null,"chars":2193,"ratio":0.8615,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":3.27558687589788,"score":40,"pattern_hits":2,"det_verdict":"ai"},"detail":{"orig_count":3,"retained":3,"retention":1,"added":0},"trigram_jaccard":0.368,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"균일한 문단 구조와 상투적인 논증 전개"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic four-paragraph structure with highly predictable rhetorical transitions"}}},"S":{"rewrite_sha":"32b36994dabbcb8e","error":null,"attempts":[{"attempt":1,"chars":2281,"ratio":0.8961,"rewrite_sha":"1d7a6ee6e28c1f4e"},{"attempt":2,"chars":2430,"ratio":0.9547,"rewrite_sha":"bee0fc2a4dcd0a3a"},{"attempt":3,"chars":2440,"ratio":0.9587,"rewrite_sha":"32b36994dabbcb8e"}],"floor_met":false,"chars":2440,"ratio":0.9587,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":5.744388759189979,"score":80,"pattern_hits":1,"det_verdict":"ai"},"detail":{"orig_count":3,"retained":3,"retention":1,"added":0},"trigram_jaccard":0.7011,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"첫째·둘째·셋째로 전개되는 지나치게 정형적인 논증 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic essay structure with rigid three-point enumeration"}}},"collapsed_original_chars":2541} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-gpu-mig-2025","model_family":"xai-family","register":"technical-how-to","original_sha":"fcb1fd7071034cf7","original_chars":2826,"original_detail_count":35,"P":{"rewrite_sha":"af8da229b7228d5c","error":null,"chars":2528,"ratio":0.8944,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":1.8272404568218907,"score":25,"pattern_hits":4,"det_verdict":"human"},"detail":{"orig_count":35,"retained":34,"retention":0.9714285714285714,"added":1},"trigram_jaccard":0.5312,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"상투적인 결론을 거의 같은 문장으로 반복함"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic case-study structure with repetitive summarizing concluding sentences"}}},"S":{"rewrite_sha":"8a6e8928037abeaf","error":null,"attempts":[{"attempt":1,"chars":2616,"ratio":0.9256,"rewrite_sha":"c5f7ffb4d7cf9493"},{"attempt":2,"chars":2669,"ratio":0.9444,"rewrite_sha":"8193e700b31f45d1"},{"attempt":3,"chars":2744,"ratio":0.971,"rewrite_sha":"8a6e8928037abeaf"}],"floor_met":false,"chars":2744,"ratio":0.971,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.7468404348619746,"score":50,"pattern_hits":1,"det_verdict":"ai"},"detail":{"orig_count":35,"retained":35,"retention":1,"added":0},"trigram_jaccard":0.6405,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"구체적 출처 없이 전개되는 지나치게 균질한 사례연구형 문장 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic four-part case study structure with overly neat PR-style transitions"}}},"collapsed_original_chars":2823} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-ml-platform-2025","model_family":"claude-family","register":"technical-how-to","original_sha":"df471256a3e0690c","original_chars":3053,"original_detail_count":5,"P":{"rewrite_sha":"12ab953cad715429","error":null,"chars":2901,"ratio":0.9502,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":0,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":5,"retained":5,"retention":1,"added":0},"trigram_jaccard":0.6818,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"문제→해결→이점→한계로 이어지는 지나치게 균질한 설명 구조"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":18,"strongest_cue":"natural colloquial engineering prose and organic transitions"}}},"S":{"rewrite_sha":"04469ba19d94141e","error":null,"attempts":[{"attempt":1,"chars":2917,"ratio":0.9554,"rewrite_sha":"4c8857c3ecc85435"},{"attempt":2,"chars":2996,"ratio":0.9813,"rewrite_sha":"04469ba19d94141e"}],"floor_met":true,"chars":2996,"ratio":0.9813,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0.00888172753402694,"score":25,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":5,"retained":5,"retention":1,"added":0},"trigram_jaccard":0.9328,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"빈틈없이 장단점을 열거하는 균질하고 반복적인 설명 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic paragraph transitions and structured tech blog essay template"}}},"collapsed_original_chars":3050} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-korea-policy-sme-2025","model_family":"moonshot-family","register":"chat-update","original_sha":"4900e9943fcbd984","original_chars":3907,"original_detail_count":14,"P":{"rewrite_sha":"eb82dc8f7cc7ddbf","error":null,"chars":2852,"ratio":0.7297,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0.8142565805609902,"score":20,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":14,"retained":11,"retention":0.7857142857142857,"added":3},"trigram_jaccard":0.3994,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"같은 핵심 내용을 문단마다 정형적으로 반복·요약하는 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"전형적인 AI 정책 설명문 구조와 상투적인 결언"}}},"S":{"rewrite_sha":"b40702ccfcb45784","error":null,"attempts":[{"attempt":1,"chars":3120,"ratio":0.7984,"rewrite_sha":"02cfcd92b0ba201e"},{"attempt":2,"chars":3603,"ratio":0.9221,"rewrite_sha":"767de831540fb9ba"},{"attempt":3,"chars":3602,"ratio":0.9219,"rewrite_sha":"b40702ccfcb45784"}],"floor_met":false,"chars":3602,"ratio":0.9219,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":41.96878828394382,"score":100,"pattern_hits":6,"det_verdict":"ai"},"detail":{"orig_count":14,"retained":14,"retention":1,"added":0},"trigram_jaccard":0.5913,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":97,"strongest_cue":"같은 정책 효과를 상투적인 문장으로 반복 재진술하는 균질한 전개"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic news-style structure and repetitive sentence endings"}}},"collapsed_original_chars":3903} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-korea-policy-youth-basic-2025","model_family":"xai-family","register":"chat-update","original_sha":"312380a845a3f6f0","original_chars":3214,"original_detail_count":7,"P":{"rewrite_sha":"5343c576f95f652a","error":null,"chars":3024,"ratio":0.9408,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":3.5140906908979366,"score":75,"pattern_hits":3,"det_verdict":"ai"},"detail":{"orig_count":7,"retained":7,"retention":1,"added":2},"trigram_jaccard":0.5145,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"상투적 정책 문구를 빠짐없이 나열하는 지나치게 균질한 문장 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":90,"strongest_cue":"formulaic enumeration and lack of specific real-world names or dates"}}},"S":{"rewrite_sha":"7a6cc3a27df22b2b","error":null,"attempts":[{"attempt":1,"chars":3097,"ratio":0.9636,"rewrite_sha":"1543d959c4c013c0"},{"attempt":2,"chars":3217,"ratio":1.0009,"rewrite_sha":"7a6cc3a27df22b2b"}],"floor_met":true,"chars":3217,"ratio":1.0009,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":28.324593701147343,"score":75,"pattern_hits":5,"det_verdict":"ai"},"detail":{"orig_count":7,"retained":7,"retention":1,"added":0},"trigram_jaccard":0.654,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":97,"strongest_cue":"획일적인 문장 리듬과 상투적 정책 문구의 반복"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":95,"strongest_cue":"formulaic enumerated policy structure and generic balanced prose"}}},"collapsed_original_chars":3211} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-bank-interns-2025","model_family":"xai-family","register":"blog","original_sha":"686e5dcc3ceb1749","original_chars":2938,"original_detail_count":4,"P":{"rewrite_sha":"42360ba6f242144f","error":null,"chars":2655,"ratio":0.9035,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":0,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":4,"retained":4,"retention":1,"added":1},"trigram_jaccard":0.4495,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"구체적 일화 없이 기술·성과·교훈을 빠짐없이 나열하는 템플릿식 구성"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"전형적인 개발자 키워드를 빠짐없이 나열한 백과사전식 회고 구성"}}},"S":{"rewrite_sha":"38f529e27c6aac2c","error":null,"attempts":[{"attempt":1,"chars":2745,"ratio":0.9342,"rewrite_sha":"bbe2f023bbea5507"},{"attempt":2,"chars":2814,"ratio":0.9577,"rewrite_sha":"1e71649b3491299e"},{"attempt":3,"chars":2925,"ratio":0.9956,"rewrite_sha":"38f529e27c6aac2c"}],"floor_met":true,"chars":2925,"ratio":0.9956,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":13.16592258123481,"score":20,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":4,"retained":4,"retention":1,"added":1},"trigram_jaccard":0.6249,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":98,"strongest_cue":"구체적 사건 없이 기술·성과를 백화점식으로 나열하는 균질한 서술"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":95,"strongest_cue":"formulaic buzzword-dense narrative ending with a generic three-point summary"}}},"collapsed_original_chars":2934} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-navigation-score-2025","model_family":"moonshot-family","register":"blog","original_sha":"efc6bbbb5fcc65ec","original_chars":3667,"original_detail_count":2,"P":{"rewrite_sha":"4d7dd13aa91b01e9","error":null,"chars":3004,"ratio":0.8189,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.229208983475068,"score":57.14285714285714,"pattern_hits":3,"det_verdict":"ai"},"detail":{"orig_count":2,"retained":1,"retention":0.5,"added":1},"trigram_jaccard":0.4051,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체적 사실 없이 교훈으로 수렴하는 균질한 문단 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic paragraph structure with generic high-level technical descriptions"}}},"S":{"rewrite_sha":"8d6184c47d5f51f4","error":null,"attempts":[{"attempt":1,"chars":3115,"ratio":0.8492,"rewrite_sha":"968ad4b63143261c"},{"attempt":2,"chars":3371,"ratio":0.9191,"rewrite_sha":"2162031b76211e12"},{"attempt":3,"chars":3456,"ratio":0.9426,"rewrite_sha":"8d6184c47d5f51f4"}],"floor_met":false,"chars":3456,"ratio":0.9426,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":10.302488569171212,"score":83.33333333333334,"pattern_hits":7,"det_verdict":"ai"},"detail":{"orig_count":2,"retained":1,"retention":0.5,"added":0},"trigram_jaccard":0.6877,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":97,"strongest_cue":"구체적 검증 정보 없이 교훈적으로 정돈된 균일한 서술"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":90,"strongest_cue":"전형적인 AI 회고록 구성과 교과서적인 서술 패턴"}}},"collapsed_original_chars":3661} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-people-design-2025","model_family":"xai-family","register":"blog","original_sha":"8997830c69d60b15","original_chars":2380,"original_detail_count":14,"P":{"rewrite_sha":"77418330f4e8f740","error":null,"chars":2196,"ratio":0.9226,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":3.662780708084803,"score":40,"pattern_hits":1,"det_verdict":"ai"},"detail":{"orig_count":14,"retained":13,"retention":0.9285714285714286,"added":1},"trigram_jaccard":0.4939,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"구체성 없이 기업 슬로건을 반복하는 지나치게 균질한 서사 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":92,"strongest_cue":"formulaic paragraph structure with repetitive catchphrase insertion"}}},"S":{"rewrite_sha":"43f960227d1740f8","error":null,"attempts":[{"attempt":1,"chars":2255,"ratio":0.9474,"rewrite_sha":"10c0cfa540a056c0"},{"attempt":2,"chars":2277,"ratio":0.9566,"rewrite_sha":"3744fad4e01a991b"},{"attempt":3,"chars":2253,"ratio":0.9465,"rewrite_sha":"43f960227d1740f8"}],"floor_met":false,"chars":2253,"ratio":0.9465,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0.01474634092530902,"score":20,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":14,"retained":10,"retention":0.7142857142857143,"added":4},"trigram_jaccard":0.4731,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체적 근거 없이 동일한 교훈을 반복하는 지나치게 정형화된 구성"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":92,"strongest_cue":"formulaic repetition of theme quotes across uniform paragraph structures"}}},"collapsed_original_chars":2376} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-starrocks-resource-group","model_family":"claude-family","register":"technical-how-to","original_sha":"dbb6bfe4103d2362","original_chars":2365,"original_detail_count":20,"P":{"rewrite_sha":"913dd5cee4df2a47","error":null,"chars":2064,"ratio":0.8725,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":1.1965811965811968,"score":20,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":20,"retained":20,"retention":1,"added":0},"trigram_jaccard":0.5783,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"균일한 문단 전개와 교과서식 총정리"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":75,"strongest_cue":"formulaic five-paragraph technical blog structure with symmetrical transitions"}}},"S":{"rewrite_sha":"902528276f1a56f0","error":null,"attempts":[{"attempt":1,"chars":2250,"ratio":0.9513,"rewrite_sha":"ea89c6c1207f060a"},{"attempt":2,"chars":2322,"ratio":0.9818,"rewrite_sha":"902528276f1a56f0"}],"floor_met":true,"chars":2322,"ratio":0.9818,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.30198655119658,"score":40,"pattern_hits":2,"det_verdict":"ai"},"detail":{"orig_count":20,"retained":20,"retention":1,"added":0},"trigram_jaccard":0.708,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"문단마다 설명·대조·결론의 동일한 전개가 지나치게 균질하게 반복됨"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic paragraph-initial topic sentences and balanced exposition"}}},"collapsed_original_chars":2361} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-tpm-ai-org","model_family":"moonshot-family","register":"blog","original_sha":"be19e73ec1806639","original_chars":4110,"original_detail_count":2,"P":{"rewrite_sha":"c408222d0854d8cc","error":null,"chars":3735,"ratio":0.9086,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.53482580399539,"score":28.57142857142857,"pattern_hits":5,"det_verdict":"human"},"detail":{"orig_count":2,"retained":2,"retention":1,"added":0},"trigram_jaccard":0.5096,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":97,"strongest_cue":"기계적으로 반복되는 ‘첫째~다섯째’ 병렬 전개"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":92,"strongest_cue":"formulaic five-point paragraph structure with generic corporate buzzwords"}}},"S":{"rewrite_sha":"45ae9dccacee4fb2","error":null,"attempts":[{"attempt":1,"chars":3799,"ratio":0.9242,"rewrite_sha":"04a0b6f8aa88bb81"},{"attempt":2,"chars":4088,"ratio":0.9946,"rewrite_sha":"45ae9dccacee4fb2"}],"floor_met":true,"chars":4088,"ratio":0.9946,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":6.406167178196871,"score":57.14285714285714,"pattern_hits":7,"det_verdict":"ai"},"detail":{"orig_count":2,"retained":2,"retention":1,"added":0},"trigram_jaccard":0.6566,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"획일적인 열거 구조와 반복되는 추상적 결론"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":95,"strongest_cue":"formulaic numbered paragraph structure with generic, highly polished generalizations"}}},"collapsed_original_chars":4104} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-kakao-login-doc","model_family":"gpt-family","register":"product-doc","original_sha":"8f39c12fc82867a2","original_chars":2126,"original_detail_count":11,"P":{"rewrite_sha":"8e5b8221e9b22bed","error":null,"chars":2096,"ratio":0.9859,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":4.594296998578897,"score":50,"pattern_hits":0,"det_verdict":"ai"},"detail":{"orig_count":11,"retained":11,"retention":1,"added":0},"trigram_jaccard":0.5838,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"균일한 문단 구조로 예외 사항을 빠짐없이 나열하는 교과서식 전개"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"uniform paragraph structure and didactic textbook-like tone without framework specifics"}}},"S":{"rewrite_sha":"869b0b925960ce95","error":null,"attempts":[{"attempt":1,"chars":2164,"ratio":1.0179,"rewrite_sha":"869b0b925960ce95"}],"floor_met":true,"chars":2164,"ratio":1.0179,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.7968466532014844,"score":33.33333333333333,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":11,"retained":11,"retention":1,"added":0},"trigram_jaccard":0.6381,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"빈틈없이 항목을 나열하는 균일한 설명 리듬"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":30,"strongest_cue":"practical engineering edge-case advice with natural developer blog cadence"}}},"collapsed_original_chars":2121} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-kistep-rnd-investment-issue-2025","model_family":"gpt-family","register":"academic-summary","original_sha":"1b1ca775a211b68a","original_chars":1482,"original_detail_count":7,"P":{"rewrite_sha":"fe3bf27be9dbacfd","error":null,"chars":1628,"ratio":1.0988,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":20,"score":20,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":7,"retained":7,"retention":1,"added":0},"trigram_jaccard":0.578,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":88,"strongest_cue":"기계적으로 정렬된 첫째·둘째·셋째 축 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic three-pillar structure with balanced policy rhetoric"}}},"S":{"rewrite_sha":"16e4a2472010ad41","error":null,"attempts":[{"attempt":1,"chars":1730,"ratio":1.1678,"rewrite_sha":"16e4a2472010ad41"}],"floor_met":true,"chars":1730,"ratio":1.1678,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":0,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":7,"retained":7,"retention":1,"added":1},"trigram_jaccard":0.4398,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":86,"strongest_cue":"‘첫 번째·두 번째·세 번째 흐름’으로 짜인 지나치게 균질한 개요식 전개"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic three-point structure and synthetic policy summary tone"}}},"collapsed_original_chars":1478} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-korea-policy-export-2025","model_family":"gpt-family","register":"chat-update","original_sha":"d94d64400975d9d6","original_chars":1860,"original_detail_count":2,"P":{"rewrite_sha":"775b562a9d737eea","error":null,"chars":1743,"ratio":0.937,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0.7692307692307709,"score":20,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":2,"retained":2,"retention":1,"added":0},"trigram_jaccard":0.7074,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"구체적 수치·사업명 없이 반복되는 지나치게 균질한 3단 병렬 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic three-part structure with parallel paragraph openings and generic policy phrasing"}}},"S":{"rewrite_sha":"4b003eec196227dc","error":null,"attempts":[{"attempt":1,"chars":1783,"ratio":0.9585,"rewrite_sha":"980d83f6749aed3a"},{"attempt":2,"chars":1840,"ratio":0.9892,"rewrite_sha":"4b003eec196227dc"}],"floor_met":true,"chars":1840,"ratio":0.9892,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0.8756800855987134,"score":20,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":2,"retained":2,"retention":1,"added":0},"trigram_jaccard":0.9171,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"구체적 수치·사업명 없이 반복되는 정형적 3단 구성"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":92,"strongest_cue":"formulaic three-part structure and lack of concrete proper nouns or budget figures"}}},"collapsed_original_chars":1856} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-naver-login-api","model_family":"gpt-family","register":"product-doc","original_sha":"af9d5918e27537b9","original_chars":2376,"original_detail_count":26,"P":{"rewrite_sha":"1d1c44069846d35e","error":null,"chars":2475,"ratio":1.0418,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":5.023308148509811,"score":42.857142857142854,"pattern_hits":0,"det_verdict":"ai"},"detail":{"orig_count":26,"retained":25,"retention":0.9615384615384616,"added":1},"trigram_jaccard":0.5364,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일한 문단 구성과 교과서식 나열"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":85,"strongest_cue":"formulaic explanatory structure and uniform short declarative sentences"}}},"S":{"rewrite_sha":"29403b644f544f48","error":null,"attempts":[{"attempt":1,"chars":2456,"ratio":1.0338,"rewrite_sha":"29403b644f544f48"}],"floor_met":true,"chars":2456,"ratio":1.0338,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":4.049032669958768,"score":28.57142857142857,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":26,"retained":26,"retention":1,"added":0},"trigram_jaccard":0.5084,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"단락마다 반복되는 주제문→설명→주의사항 구조"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":22,"strongest_cue":"natural developer colloquialisms like '날아온다' and '문제가 터지면'"}}},"collapsed_original_chars":2370} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-da-assistant-panda","model_family":"gpt-family","register":"technical-how-to","original_sha":"7e61ec1f91bca4da","original_chars":3159,"original_detail_count":16,"P":{"rewrite_sha":"d7fcd07045241c2b","error":null,"chars":2991,"ratio":0.9467,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":1.6893251644564486,"score":28.57142857142857,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":16,"retained":14,"retention":0.875,"added":2},"trigram_jaccard":0.6599,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":96,"strongest_cue":"지나치게 균일한 문단 구조와 교과서식 전개"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":82,"strongest_cue":"formulaic paragraph structure with didactic topic-and-summary flow"}}},"S":{"rewrite_sha":"e7e9cc7d011dfe69","error":null,"attempts":[{"attempt":1,"chars":3132,"ratio":0.9914,"rewrite_sha":"e7e9cc7d011dfe69"}],"floor_met":true,"chars":3132,"ratio":0.9914,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0.5713250597453566,"score":28.57142857142857,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":16,"retained":15,"retention":0.9375,"added":1},"trigram_jaccard":0.6672,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"균일한 문단 구조와 교과서식 총정리"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic paragraph-opening topic sentences and prescriptive, textbook-like structure"}}},"collapsed_original_chars":3153} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-harness-productivity","model_family":"gpt-family","register":"technical-how-to","original_sha":"5de62744badff9a0","original_chars":2899,"original_detail_count":14,"P":{"rewrite_sha":"ccc02c41e0818dec","error":null,"chars":2847,"ratio":0.982,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.1416494476621586,"score":33.33333333333333,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":14,"retained":12,"retention":0.8571428571428571,"added":3},"trigram_jaccard":0.7527,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":93,"strongest_cue":"문단마다 반복되는 ‘A가 아니라 B’ 대조 구조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"repetitive contrastive sentence patterns ('~이 아니다, ~다') and formulaic essay structure"}}},"S":{"rewrite_sha":"a60786e48e7327e4","error":null,"attempts":[{"attempt":1,"chars":2903,"ratio":1.0014,"rewrite_sha":"a60786e48e7327e4"}],"floor_met":true,"chars":2903,"ratio":1.0014,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":1.9720165455576846,"score":50,"pattern_hits":1,"det_verdict":"ai"},"detail":{"orig_count":14,"retained":14,"retention":1,"added":0},"trigram_jaccard":0.7296,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":95,"strongest_cue":"균일한 문단 구조와 반복되는 ‘A가 아니라 B’ 대조"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic 'not A but B' contrasts and rhetorical question transitions"}}},"collapsed_original_chars":2894} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"ai","pair_id":"s1-ko-human-toss-post-quantum-crypto","model_family":"gpt-family","register":"technical-how-to","original_sha":"5c322972487d701e","original_chars":3092,"original_detail_count":6,"P":{"rewrite_sha":"c60087d3a7de23f6","error":null,"chars":2935,"ratio":0.9491,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0.4166059404058564,"score":14.285714285714285,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":6,"retained":6,"retention":1,"added":0},"trigram_jaccard":0.6644,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"균일하게 반복되는 교과서식 문단 전개"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"formulaic didactic transitions and predictable rhetorical framing"}}},"S":{"rewrite_sha":"705377047745cb28","error":null,"attempts":[{"attempt":1,"chars":3103,"ratio":1.0036,"rewrite_sha":"705377047745cb28"}],"floor_met":true,"chars":3103,"ratio":1.0036,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":1.2043271413448409,"score":14.285714285714285,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":6,"retained":6,"retention":1,"added":0},"trigram_jaccard":0.735,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":91,"strongest_cue":"교과서식 문단 구조와 반복되는 대조·정리 문형"},"judge-gemini-3.7-flash":{"authorship":"ai","ai_likeness":88,"strongest_cue":"정형화된 서론-본론-단계별 로드맵-결론 구성과 균일한 문단 호흡"}}},"collapsed_original_chars":3086} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-korea-policy-sme-2025","model_family":"human-reference","register":"chat-update","original_sha":"add2d734b39e3d89","original_chars":3916,"original_detail_count":58,"P":{"rewrite_sha":"89c23bad0bed7e15","error":null,"chars":3653,"ratio":0.9321,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":17.073170731707318,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":58,"retained":53,"retention":0.9137931034482759,"added":2},"trigram_jaccard":0.5812,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"구체적 수치·사업명이 빽빽한 정책기사 문체"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific policy names and authentic government press release structure"}}},"S":{"rewrite_sha":"aef3f814fb2e32bb","error":null,"attempts":[{"attempt":1,"chars":3634,"ratio":0.9301,"rewrite_sha":"ba622410c087190a"},{"attempt":2,"chars":3865,"ratio":0.9876,"rewrite_sha":"aef3f814fb2e32bb"}],"floor_met":true,"chars":3865,"ratio":0.9876,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":28.947368421052634,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":58,"retained":52,"retention":0.896551724137931,"added":5},"trigram_jaccard":0.618,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"구체적 수치와 기관명이 촘촘한 정책기사 문체"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic official government press release structure and specific policy terminology"}}},"collapsed_original_chars":3876} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-korea-policy-export-2025","model_family":"human-reference","register":"chat-update","original_sha":"c66b92bc6b62a9b3","original_chars":2708,"original_detail_count":34,"P":{"rewrite_sha":"c769fed9b0a2b8d5","error":null,"chars":2519,"ratio":0.93,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":13.043478260869565,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":34,"retained":32,"retention":0.9411764705882353,"added":1},"trigram_jaccard":0.6511,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"말미에 무관한 웹페이지 문구가 혼입된 편집 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic Korean government press release formatting and specific policy details"}}},"S":{"rewrite_sha":"817de5097e3203db","error":null,"attempts":[{"attempt":1,"chars":2504,"ratio":0.9262,"rewrite_sha":"e98bbdd2cd304934"},{"attempt":2,"chars":2616,"ratio":0.9657,"rewrite_sha":"469116403ee38ad1"},{"attempt":3,"chars":2624,"ratio":0.9687,"rewrite_sha":"817de5097e3203db"}],"floor_met":false,"chars":2624,"ratio":0.9687,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":12.5,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":34,"retained":32,"retention":0.9411764705882353,"added":1},"trigram_jaccard":0.7621,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":35,"strongest_cue":"정확한 수치·기관명이 촘촘한 보도자료식 문장과 웹페이지 잔여문구"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic Korean government press release style and trailing website scraper artifacts"}}},"collapsed_original_chars":2684} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-korea-policy-budget-2025","model_family":"human-reference","register":"chat-update","original_sha":"68f6f173662b6d6a","original_chars":1614,"original_detail_count":55,"P":{"rewrite_sha":"ca6f471af89d12da","error":null,"chars":1604,"ratio":0.9969,"gate_failed":true,"gate_reason":"numbers in the source are missing from the rewrite: 25","internal":{"signal_score":0,"score":0,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":55,"retained":52,"retention":0.9454545454545454,"added":5},"trigram_jaccard":0.6881,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"구체적 예산 수치와 웹페이지 잔여문구가 뒤섞인 편집 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"official government press release format with scraped website boilerplate and copyright disclaimers"}}},"S":{"rewrite_sha":"724c00db02c9cfd0","error":null,"attempts":[{"attempt":1,"chars":1630,"ratio":1.01,"rewrite_sha":"724c00db02c9cfd0"}],"floor_met":true,"chars":1630,"ratio":1.01,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":0,"pattern_hits":4,"det_verdict":"human"},"detail":{"orig_count":55,"retained":51,"retention":0.9272727272727272,"added":3},"trigram_jaccard":0.7074,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":12,"strongest_cue":"보도자료 뒤에 저작권 조항과 무관한 문구가 돌연 섞인 복사·수집 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":2,"strongest_cue":"official government press release format with scraped boilerplate copyright text"}}},"collapsed_original_chars":1593} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-korea-policy-education-2025","model_family":"human-reference","register":"chat-update","original_sha":"0e2d30b08fe7d170","original_chars":2236,"original_detail_count":48,"P":{"rewrite_sha":"6c64b4d037754328","error":null,"chars":1994,"ratio":0.8933,"gate_failed":true,"gate_reason":"numbers in the source are missing from the rewrite: 2025","internal":{"signal_score":0,"score":14.285714285714285,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":48,"retained":46,"retention":0.9583333333333334,"added":0},"trigram_jaccard":0.5806,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"서로 무관한 기사·법령 조각이 비정돈된 채 혼입됨"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":12,"strongest_cue":"scraped webpage artifact mix of press release, FAQs, and legal boilerplate"}}},"S":{"rewrite_sha":"5726b1767dd72c06","error":null,"attempts":[{"attempt":1,"chars":2059,"ratio":0.9204,"rewrite_sha":"2c4a268c8924d543"},{"attempt":2,"chars":2193,"ratio":0.9806,"rewrite_sha":"5726b1767dd72c06"}],"floor_met":true,"chars":2193,"ratio":0.9806,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":5,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":48,"retained":48,"retention":1,"added":0},"trigram_jaccard":0.7947,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"무관한 법조문·공지 문구가 갑작스럽게 혼입된 편집 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":5,"strongest_cue":"official government press release with web scraped footer artifacts"}}},"collapsed_original_chars":2212} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-korea-policy-car-2025","model_family":"human-reference","register":"chat-update","original_sha":"a7a211d5527910f3","original_chars":3156,"original_detail_count":69,"P":{"rewrite_sha":"7f47f1d4adbc9660","error":null,"chars":2885,"ratio":0.9132,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":17.24137931034483,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":69,"retained":66,"retention":0.9565217391304348,"added":3},"trigram_jaccard":0.5512,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"구체적 취재 수치와 웹페이지 크롤링 잔여물이 뒤섞인 편집 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":4,"strongest_cue":"authentic government press release format with web scraping artifacts and copyright boilerplate"}}},"S":{"rewrite_sha":"a7368e2714608175","error":null,"attempts":[{"attempt":1,"chars":3023,"ratio":0.9574,"rewrite_sha":"73e14b775c24fd21"},{"attempt":2,"chars":3083,"ratio":0.9773,"rewrite_sha":"1f6e063d577e9b3f"},{"attempt":3,"chars":3117,"ratio":0.9875,"rewrite_sha":"a7368e2714608175"}],"floor_met":true,"chars":3117,"ratio":0.9875,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":10.344827586206897,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":69,"retained":67,"retention":0.9710144927536232,"added":1},"trigram_jaccard":0.7539,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"본문 뒤에 뒤섞인 비정형 웹페이지 크롤링 잔재"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":3,"strongest_cue":"scraped webpage artifact and legal notice fragments"}}},"collapsed_original_chars":3123} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-navigation-score-2025","model_family":"human-reference","register":"blog","original_sha":"f55d815f753bd79c","original_chars":3886,"original_detail_count":35,"P":{"rewrite_sha":"4550ce21eb6888ed","error":null,"chars":3517,"ratio":0.9044,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":3.262124422145917,"score":11.11111111111111,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":35,"retained":28,"retention":0.8,"added":8},"trigram_jaccard":0.5527,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"구체적인 시행착오와 화자별 경험이 살아 있는 인터뷰체"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":8,"strongest_cue":"specific engineering anecdotes and authentic tech blog interview format"}}},"S":{"rewrite_sha":"8ce30c5f0b0dfde8","error":null,"attempts":[{"attempt":1,"chars":3730,"ratio":0.9598,"rewrite_sha":"8b47006664c2b0a3"},{"attempt":2,"chars":3816,"ratio":0.9821,"rewrite_sha":"8ce30c5f0b0dfde8"}],"floor_met":true,"chars":3816,"ratio":0.9821,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":4.952403954443735,"score":11.538461538461538,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":35,"retained":33,"retention":0.9428571428571428,"added":0},"trigram_jaccard":0.8478,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"구체적인 시행착오와 개인별 현장 경험"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":4,"strongest_cue":"authentic tech blog interview format with proprietary organizational details and natural conversational tone"}}},"collapsed_original_chars":3860} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-bank-interns-2025","model_family":"human-reference","register":"blog","original_sha":"65a8227710e2d65a","original_chars":3841,"original_detail_count":37,"P":{"rewrite_sha":"8ad73db7cf950bb9","error":null,"chars":3548,"ratio":0.9231,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":5.118609880417542,"score":12.5,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":37,"retained":35,"retention":0.9459459459459459,"added":1},"trigram_jaccard":0.5446,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"메모식 문장과 완성된 서술이 뒤섞인 거친 편집 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":5,"strongest_cue":"authentic corporate tech blog style with highly specific real-world domain implementation details and intern reflections"}}},"S":{"rewrite_sha":"17d4e1d6c4d11744","error":null,"attempts":[{"attempt":1,"chars":3711,"ratio":0.9664,"rewrite_sha":"8dd15838cd1d11bc"},{"attempt":2,"chars":3693,"ratio":0.9612,"rewrite_sha":"7205720d53531150"},{"attempt":3,"chars":3711,"ratio":0.9672,"rewrite_sha":"17d4e1d6c4d11744"}],"floor_met":false,"chars":3711,"ratio":0.9672,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":5.3977451654429895,"score":18.51851851851852,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":37,"retained":34,"retention":0.918918918918919,"added":1},"trigram_jaccard":0.5393,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"NPE 발생 원인과 시그니처 생성 순서까지 담은 구체적 구현 경험"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"highly specific workplace context and authentic engineering project narrative"}}},"collapsed_original_chars":3810} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-frontend-github-2025","model_family":"human-reference","register":"blog","original_sha":"1d3f406d7c204392","original_chars":2415,"original_detail_count":47,"P":{"rewrite_sha":"c8c651af244354b6","error":null,"chars":2063,"ratio":0.8554,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":9.428282651156536,"score":17.647058823529413,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":47,"retained":42,"retention":0.8936170212765957,"added":4},"trigram_jaccard":0.4937,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":27,"strongest_cue":"날짜·제품명·채용 조건이 촘촘히 박힌 실제 기업 홍보문 특유의 구체성"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific corporate details and verbatim website footer boilerplate"}}},"S":{"rewrite_sha":"7f97a86df9849ce9","error":null,"attempts":[{"attempt":1,"chars":2278,"ratio":0.9427,"rewrite_sha":"37d0d6dabd6dba88"},{"attempt":2,"chars":2379,"ratio":0.985,"rewrite_sha":"7f97a86df9849ce9"}],"floor_met":true,"chars":2379,"ratio":0.985,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":6.142544600459953,"score":13.043478260869565,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":47,"retained":45,"retention":0.9574468085106383,"added":2},"trigram_jaccard":0.7499,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"날짜·푸터까지 남은 구체적인 기업 채용 페이지 문맥"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":8,"strongest_cue":"specific real-world company context, internal product names (DEUS), and official corporate footer details"}}},"collapsed_original_chars":2393} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-people-design-2025","model_family":"human-reference","register":"blog","original_sha":"060ac470697071dd","original_chars":3867,"original_detail_count":45,"P":{"rewrite_sha":"f77ba49f515d55c0","error":null,"chars":3506,"ratio":0.9062,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":8.850849629590996,"score":31.57894736842105,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":45,"retained":40,"retention":0.8888888888888888,"added":4},"trigram_jaccard":0.5016,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":8,"strongest_cue":"구체적인 개인 경험과 자연스러운 구어체의 불규칙한 흐름"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":6,"strongest_cue":"authentic conversational interview tone and specific corporate anecdotes"}}},"S":{"rewrite_sha":"6cb57067b5b0f5ba","error":null,"attempts":[{"attempt":1,"chars":3639,"ratio":0.9408,"rewrite_sha":"62ae9933fb496489"},{"attempt":2,"chars":3673,"ratio":0.9496,"rewrite_sha":"2ee8d99c2ec87353"},{"attempt":3,"chars":3743,"ratio":0.9678,"rewrite_sha":"6cb57067b5b0f5ba"}],"floor_met":false,"chars":3743,"ratio":0.9678,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.117160278744913,"score":21.052631578947366,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":45,"retained":41,"retention":0.9111111111111111,"added":4},"trigram_jaccard":0.529,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":12,"strongest_cue":"구체적인 실패 경험과 말버릇이 살아 있는 인터뷰체"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":3,"strongest_cue":"authentic conversational interview tone and specific internal workplace details"}}},"collapsed_original_chars":3849} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-ml-platform-2025","model_family":"human-reference","register":"technical-how-to","original_sha":"022cba7e5d37000a","original_chars":3958,"original_detail_count":64,"P":{"rewrite_sha":"4d09f1236cdb3606","error":null,"chars":3768,"ratio":0.9517,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":1.9846954286888998,"score":20,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":64,"retained":58,"retention":0.90625,"added":1},"trigram_jaccard":0.5936,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"토스 내부 구현에 관한 구체적이고 비균질한 실무 디테일"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":6,"strongest_cue":"specific real-world team authors and concrete tech stack migration details"}}},"S":{"rewrite_sha":"92233fc7ff1f1bb6","error":null,"attempts":[{"attempt":1,"chars":3721,"ratio":0.94,"rewrite_sha":"e3183925660df3da"},{"attempt":2,"chars":3821,"ratio":0.9652,"rewrite_sha":"a990c5295eda9ea1"},{"attempt":3,"chars":3825,"ratio":0.9664,"rewrite_sha":"92233fc7ff1f1bb6"}],"floor_met":false,"chars":3825,"ratio":0.9664,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":4.105174759101764,"score":16.666666666666664,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":64,"retained":62,"retention":0.96875,"added":0},"trigram_jaccard":0.5007,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":32,"strongest_cue":"HBase·Redis에서 Aerospike로 옮긴 구체적인 내부 운영 이력"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":5,"strongest_cue":"specific engineering history and references to missing diagram from real tech blog"}}},"collapsed_original_chars":3934} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-gpu-mig-2025","model_family":"human-reference","register":"technical-how-to","original_sha":"664f106023e07411","original_chars":3949,"original_detail_count":47,"P":{"rewrite_sha":"772655188ed31ee7","error":null,"chars":3352,"ratio":0.8481,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":9.390236514158653,"score":30,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":47,"retained":41,"retention":0.8723404255319149,"added":6},"trigram_jaccard":0.4432,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"현장 데이터와 운영 제약이 구체적으로 맞물린 설명"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":15,"strongest_cue":"specific engineering metrics and authentic company context"}}},"S":{"rewrite_sha":"bdfd1ed657615f87","error":null,"attempts":[{"attempt":1,"chars":3518,"ratio":0.8903,"rewrite_sha":"03b32d0323b8f6e6"},{"attempt":2,"chars":3744,"ratio":0.9478,"rewrite_sha":"b221afda817e743d"},{"attempt":3,"chars":3773,"ratio":0.9552,"rewrite_sha":"bdfd1ed657615f87"}],"floor_met":false,"chars":3773,"ratio":0.9552,"gate_failed":true,"gate_reason":"numbers in the source are missing from the rewrite: 100,","internal":{"signal_score":11.74157137367239,"score":40,"pattern_hits":5,"det_verdict":"ai"},"detail":{"orig_count":47,"retained":42,"retention":0.8936170212765957,"added":4},"trigram_jaccard":0.636,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":55,"strongest_cue":"장단점·요약을 반복하는 균일한 교과서식 구성"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific Toss Securities operational metrics and realistic infrastructure cost calculations"}}},"collapsed_original_chars":3930} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-nrf-trend-ai-2025","model_family":"human-reference","register":"academic-summary","original_sha":"8374ce653bfd06a5","original_chars":3513,"original_detail_count":72,"P":{"rewrite_sha":"99c43512549c771d","error":null,"chars":3262,"ratio":0.9295,"gate_failed":true,"gate_reason":"numbers in the source are missing from the rewrite: 5","internal":{"signal_score":4.693838253906118,"score":11.11111111111111,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":72,"retained":69,"retention":0.9583333333333334,"added":2},"trigram_jaccard":0.5709,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":47,"strongest_cue":"기관 웹진 특유의 독자 호명과 편집 문체"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":18,"strongest_cue":"Institutional newsletter context, official email contact, and layout-clipped sentence fragments"}}},"S":{"rewrite_sha":"bcb9652126e41953","error":null,"attempts":[{"attempt":1,"chars":3151,"ratio":0.8972,"rewrite_sha":"ba8d72f1f0802f6c"},{"attempt":2,"chars":3381,"ratio":0.9628,"rewrite_sha":"f3332c83410a144d"},{"attempt":3,"chars":3477,"ratio":0.9908,"rewrite_sha":"bcb9652126e41953"}],"floor_met":true,"chars":3477,"ratio":0.9908,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":6.781312768394375,"score":10.526315789473683,"pattern_hits":5,"det_verdict":"human"},"detail":{"orig_count":72,"retained":72,"retention":1,"added":0},"trigram_jaccard":0.7284,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":64,"strongest_cue":"문장 중간이 끊긴 웹진 편집·발췌 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":18,"strongest_cue":"institutional webzine metadata, disclaimer, and editorial layout fragments"}}},"collapsed_original_chars":3491} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-kakao-login-doc","model_family":"human-reference","register":"product-doc","original_sha":"3434597ff1f55eda","original_chars":2573,"original_detail_count":31,"P":{"rewrite_sha":"de546316e9cfc452","error":null,"chars":2348,"ratio":0.9118,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":4.622969923841867,"score":13.636363636363635,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":31,"retained":29,"retention":0.9354838709677419,"added":1},"trigram_jaccard":0.645,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":22,"strongest_cue":"문서 조각을 편집·중복 배치한 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":12,"strongest_cue":"authentic developer documentation with specific platform policies and compliance effective dates"}}},"S":{"rewrite_sha":"6e70eb76ac55ea19","error":null,"attempts":[{"attempt":1,"chars":2500,"ratio":0.9714,"rewrite_sha":"52a0444e5b77e210"},{"attempt":2,"chars":2507,"ratio":0.9741,"rewrite_sha":"4063638900657bf6"},{"attempt":3,"chars":2480,"ratio":0.9636,"rewrite_sha":"6e70eb76ac55ea19"}],"floor_met":false,"chars":2480,"ratio":0.9636,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":4.394392878328545,"score":13.636363636363635,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":31,"retained":30,"retention":0.967741935483871,"added":1},"trigram_jaccard":0.6914,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"문서 조각을 이어 붙인 듯한 중복과 급격한 문맥 전환"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":15,"strongest_cue":"specific developer documentation excerpts with exact platform policy enforcement dates"}}},"collapsed_original_chars":2552} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-naver-login-doc","model_family":"human-reference","register":"product-doc","original_sha":"b5941b832a3c1b5f","original_chars":1278,"original_detail_count":18,"P":{"rewrite_sha":"ad47b9f0230ad0dd","error":null,"chars":1183,"ratio":0.925,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":0,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":18,"retained":17,"retention":0.9444444444444444,"added":1},"trigram_jaccard":0.4085,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"불연속 문서 번호와 구체적인 제품 동작"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":15,"strongest_cue":"discontinuous numbering typical of extracted official documentation"}}},"S":{"rewrite_sha":"91c00ade0eec471d","error":null,"attempts":[{"attempt":1,"chars":1219,"ratio":0.9534,"rewrite_sha":"d7176ee2505af824"},{"attempt":2,"chars":1332,"ratio":1.0427,"rewrite_sha":"91c00ade0eec471d"}],"floor_met":true,"chars":1332,"ratio":1.0427,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":0,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":18,"retained":17,"retention":0.9444444444444444,"added":1},"trigram_jaccard":0.5369,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":22,"strongest_cue":"문서 발췌로 보이는 불연속적인 단계 번호"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":15,"strongest_cue":"Disjointed numbering and tone shifts typical of scraped official documentation"}}},"collapsed_original_chars":1266} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-korea-policy-lowbirth-2025","model_family":"human-reference","register":"chat-update","original_sha":"f780e8a5a60cd1f9","original_chars":1733,"original_detail_count":52,"P":{"rewrite_sha":"9c9810ff9af37479","error":null,"chars":1702,"ratio":0.9837,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":16.666666666666664,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":52,"retained":52,"retention":1,"added":0},"trigram_jaccard":0.7845,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"정책기사 문체와 법조문·메뉴가 뒤섞인 웹 스크랩 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"scraped government press release with web boilerplate and legal notices"}}},"S":{"rewrite_sha":"a24ea80095538120","error":null,"attempts":[{"attempt":1,"chars":1716,"ratio":0.9901,"rewrite_sha":"a24ea80095538120"}],"floor_met":true,"chars":1716,"ratio":0.9901,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":6.666666666666667,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":52,"retained":51,"retention":0.9807692307692307,"added":1},"trigram_jaccard":0.8123,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":22,"strongest_cue":"웹페이지 복사 과정에서 법조문·관련기사 문구가 비정상적으로 혼입된 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":5,"strongest_cue":"scraped webpage footer with copyright laws and boilerplate"}}},"collapsed_original_chars":1714} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-front-2","model_family":"human-reference","register":"blog","original_sha":"bdfecbbcf4002026","original_chars":3879,"original_detail_count":24,"P":{"rewrite_sha":"bab4efc5bdbdbb63","error":null,"chars":3496,"ratio":0.9005,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.4290019774749227,"score":6.896551724137931,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":24,"retained":23,"retention":0.9583333333333334,"added":2},"trigram_jaccard":0.5178,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"댓글의 비정형 오탈자와 즉흥적인 감정 리듬"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":2,"strongest_cue":"authentic corporate tech blog with raw user comments and footer"}}},"S":{"rewrite_sha":"be79071f18047c8c","error":null,"attempts":[{"attempt":1,"chars":3686,"ratio":0.9499,"rewrite_sha":"5e7d093210662a51"},{"attempt":2,"chars":3851,"ratio":0.9927,"rewrite_sha":"be79071f18047c8c"}],"floor_met":true,"chars":3851,"ratio":0.9927,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":5.446580332784491,"score":13.793103448275861,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":24,"retained":24,"retention":1,"added":0},"trigram_jaccard":0.9061,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"오탈자와 감정이 뒤섞인 비정형 댓글 문체"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":0,"strongest_cue":"authentic raw user comments and company footer"}}},"collapsed_original_chars":3851} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-tpm-ai-org","model_family":"human-reference","register":"blog","original_sha":"7ee5f186b79a4a43","original_chars":3945,"original_detail_count":22,"P":{"rewrite_sha":"3fb46c147cf23793","error":null,"chars":3898,"ratio":0.988,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":9.571596709733184,"score":21.21212121212121,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":22,"retained":22,"retention":1,"added":0},"trigram_jaccard":0.7892,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"같은 핵심 주장을 병렬 구조로 반복 재진술함"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":12,"strongest_cue":"specific institutional context and distinct Korean tech blog essay tone"}}},"S":{"rewrite_sha":"9fac7e29074d831c","error":null,"attempts":[{"attempt":1,"chars":3924,"ratio":0.9944,"rewrite_sha":"9fac7e29074d831c"}],"floor_met":true,"chars":3924,"ratio":0.9944,"gate_failed":true,"gate_reason":"numbers in the source are missing from the rewrite: 24","internal":{"signal_score":1.8122077542514314,"score":8.823529411764707,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":22,"retained":21,"retention":0.9545454545454546,"added":2},"trigram_jaccard":0.7137,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"같은 핵심 주장을 대조형 문장으로 반복 재진술함"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic corporate context and natural organizational reflection style typical of Toss tech blog"}}},"collapsed_original_chars":3913} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-da-assistant-panda","model_family":"human-reference","register":"technical-how-to","original_sha":"e30f61fb56ba2b31","original_chars":3941,"original_detail_count":38,"P":{"rewrite_sha":"4fe891065bf55d7e","error":null,"chars":3706,"ratio":0.9402,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":13.246176923815868,"score":28.57142857142857,"pattern_hits":4,"det_verdict":"human"},"detail":{"orig_count":38,"retained":33,"retention":0.868421052631579,"added":3},"trigram_jaccard":0.6377,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"dbt tags·Manifest와 실제 도입 수치가 결합된 구체적 내부 경험"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic corporate tech blog narrative with real employee names, specific implementation details, and internal metrics"}}},"S":{"rewrite_sha":"864f8d583924ffe1","error":null,"attempts":[{"attempt":1,"chars":3682,"ratio":0.9346,"rewrite_sha":"db125d6865f06d4c"},{"attempt":2,"chars":3874,"ratio":0.9831,"rewrite_sha":"864f8d583924ffe1"}],"floor_met":true,"chars":3874,"ratio":0.9831,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":10.444323248322576,"score":25,"pattern_hits":6,"det_verdict":"human"},"detail":{"orig_count":38,"retained":35,"retention":0.9210526315789473,"added":3},"trigram_jaccard":0.6338,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"구체적인 내부 구현 과정과 실제 사용 지표"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific engineering details (dbt tags, manifest) and authentic Toss tech blog narrative"}}},"collapsed_original_chars":3913} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-starrocks-resource-group","model_family":"human-reference","register":"technical-how-to","original_sha":"e0366816ddef04e5","original_chars":3921,"original_detail_count":57,"P":{"rewrite_sha":"fa69d2896cc4fbfc","error":null,"chars":3729,"ratio":0.9508,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":6.108859159850617,"score":30.434782608695656,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":57,"retained":57,"retention":1,"added":0},"trigram_jaccard":0.5988,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"중복 문단과 변수명이 빠진 편집 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":7,"strongest_cue":"specific production metrics, internal C-level implementation details (pthread_setaffinity_np), and real Toss engineering context"}}},"S":{"rewrite_sha":"4fa2ba7ef3f20f36","error":null,"attempts":[{"attempt":1,"chars":3916,"ratio":0.9987,"rewrite_sha":"4fa2ba7ef3f20f36"}],"floor_met":true,"chars":3916,"ratio":0.9987,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.1074628409380383,"score":13.043478260869565,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":57,"retained":56,"retention":0.9824561403508771,"added":2},"trigram_jaccard":0.6997,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적인 운영 수치와 단계적인 시행착오"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":6,"strongest_cue":"highly specific real-world production metrics and low-level engine implementation details"}}},"collapsed_original_chars":3899} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-post-quantum-crypto","model_family":"human-reference","register":"technical-how-to","original_sha":"4214406639383b83","original_chars":3972,"original_detail_count":51,"P":{"rewrite_sha":"07c3175135ad232c","error":null,"chars":3937,"ratio":0.9911,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.911038700570573,"score":8,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":51,"retained":49,"retention":0.9607843137254902,"added":2},"trigram_jaccard":0.7687,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":72,"strongest_cue":"교과서적인 전환과 비유가 지나치게 균일하게 반복됨"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic corporate engineering blog narrative with specific organizational challenges"}}},"S":{"rewrite_sha":"579e98e63545f020","error":null,"attempts":[{"attempt":1,"chars":3909,"ratio":0.984,"rewrite_sha":"579e98e63545f020"}],"floor_met":true,"chars":3909,"ratio":0.984,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":3.316877764952092,"score":8,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":51,"retained":51,"retention":1,"added":0},"trigram_jaccard":0.8635,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"구체적인 가맹점 운영 맥락과 자연스러운 실무 경험의 축적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific merchant engineering constraints in Toss tech blog style"}}},"collapsed_original_chars":3948} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-toss-harness-productivity","model_family":"human-reference","register":"technical-how-to","original_sha":"272b1487dead94f0","original_chars":3894,"original_detail_count":94,"P":{"rewrite_sha":"bc946f886cb0ece8","error":null,"chars":3612,"ratio":0.9271,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":3.121769643652654,"score":10.344827586206897,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":94,"retained":89,"retention":0.9468085106382979,"added":4},"trigram_jaccard":0.6974,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":94,"strongest_cue":"괄호 속 영문 용어의 반복적 과잉 병기"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":18,"strongest_cue":"first-person architectural reflection and tech blog tone"}}},"S":{"rewrite_sha":"f03ba55f34b224dc","error":null,"attempts":[{"attempt":1,"chars":3675,"ratio":0.9434,"rewrite_sha":"b29aae7adb12200e"},{"attempt":2,"chars":3826,"ratio":0.9824,"rewrite_sha":"f03ba55f34b224dc"}],"floor_met":true,"chars":3826,"ratio":0.9824,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":5.536641925649986,"score":13.793103448275861,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":94,"retained":90,"retention":0.9574468085106383,"added":2},"trigram_jaccard":0.9501,"judges":{"judge-gpt":{"authorship":"ai","ai_likeness":82,"strongest_cue":"영문 용어 병기와 수사적 질문의 기계적인 반복"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":18,"strongest_cue":"natural Korean tech blog voice and formatting artifact (-my-zsh)"}}},"collapsed_original_chars":3866} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-kakao-login-faq","model_family":"human-reference","register":"product-doc","original_sha":"971cc5650bbf8bf8","original_chars":2926,"original_detail_count":18,"P":{"rewrite_sha":"5cf9c6cbd6062ed8","error":null,"chars":2733,"ratio":0.9334,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":1.4964235354101905,"score":6.666666666666667,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":18,"retained":14,"retention":0.7777777777777778,"added":0},"trigram_jaccard":0.5642,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"문맥 없이 ‘네·아닙니다’로 이어지는 FAQ 편집 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":12,"strongest_cue":"Kakao developer documentation and DevTalk FAQ formatting"}}},"S":{"rewrite_sha":"0e0016fc442bbf43","error":null,"attempts":[{"attempt":1,"chars":2778,"ratio":0.9489,"rewrite_sha":"f85bc54479cd4881"},{"attempt":2,"chars":2945,"ratio":1.0066,"rewrite_sha":"0e0016fc442bbf43"}],"floor_met":true,"chars":2945,"ratio":1.0066,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0.35967647598388996,"score":3.3333333333333335,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":18,"retained":18,"retention":1,"added":0},"trigram_jaccard":0.7856,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"문서 발췌·병합 흔적과 깨진 마크업"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"Kakao developer documentation tone with raw CSS scraping artifacts"}}},"collapsed_original_chars":2897} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-kakao-login-flutter","model_family":"human-reference","register":"product-doc","original_sha":"20e25898a7e6fe9e","original_chars":2961,"original_detail_count":35,"P":{"rewrite_sha":"368a69e105753fe7","error":null,"chars":2453,"ratio":0.8269,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":1.831604612004138,"score":3.8461538461538463,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":35,"retained":29,"retention":0.8285714285714286,"added":0},"trigram_jaccard":0.5666,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":18,"strongest_cue":"정확한 API명과 예외 조건이 축적된 실무 문서체"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic Kakao SDK documentation phrasing and specific API references"}}},"S":{"rewrite_sha":"8f801634bb926d23","error":null,"attempts":[{"attempt":1,"chars":2843,"ratio":0.9598,"rewrite_sha":"455edc15b4165426"},{"attempt":2,"chars":2561,"ratio":0.8637,"rewrite_sha":"a121a1ed4bc04cab"},{"attempt":3,"chars":2654,"ratio":0.8954,"rewrite_sha":"8f801634bb926d23"}],"floor_met":false,"chars":2654,"ratio":0.8954,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":2.336604803266283,"score":7.6923076923076925,"pattern_hits":0,"det_verdict":"human"},"detail":{"orig_count":35,"retained":29,"retention":0.8285714285714286,"added":0},"trigram_jaccard":0.6079,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"실제 문서 조각처럼 불균일한 단락 연결"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":15,"strongest_cue":"Kakao Developers SDK technical documentation style and specific API signatures"}}},"collapsed_original_chars":2935} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-naver-login-api","model_family":"human-reference","register":"product-doc","original_sha":"1707285500db245b","original_chars":2055,"original_detail_count":40,"P":{"rewrite_sha":"1750d44abf9a492b","error":null,"chars":1843,"ratio":0.8965,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":0,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":40,"retained":39,"retention":0.975,"added":0},"trigram_jaccard":0.5491,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"언어별 예제 문장이 중복된 편집 흔적"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"Verbatim official API documentation style with specific UI paths and parameter tables"}}},"S":{"rewrite_sha":"481d8a554635deae","error":null,"attempts":[{"attempt":1,"chars":2015,"ratio":0.9809,"rewrite_sha":"481d8a554635deae"}],"floor_met":true,"chars":2015,"ratio":0.9809,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":4.216753891101645,"score":17.647058823529413,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":40,"retained":40,"retention":1,"added":0},"trigram_jaccard":0.6336,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":24,"strongest_cue":"언어별 예제의 기계적 반복과 편집 잔재"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":15,"strongest_cue":"authentic software documentation formatting and specific Naver service phrasing"}}},"collapsed_original_chars":2038} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-kistep-performance-eval-2025","model_family":"human-reference","register":"academic-summary","original_sha":"339acb222713df25","original_chars":3410,"original_detail_count":15,"P":{"rewrite_sha":"b60e46fe68188648","error":null,"chars":3378,"ratio":0.9905,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":6.0606060606060606,"pattern_hits":5,"det_verdict":"human"},"detail":{"orig_count":15,"retained":13,"retention":0.8666666666666667,"added":1},"trigram_jaccard":0.531,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":42,"strongest_cue":"행정 서식에서 누적된 듯한 중복과 어색한 세부 표현"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"Korean government report formatting with ㅇ bullet markers and administrative jargon"}}},"S":{"rewrite_sha":"6c913570d36f1a2d","error":null,"attempts":[{"attempt":1,"chars":3257,"ratio":0.9547,"rewrite_sha":"2f43ce7718076a9b"},{"attempt":2,"chars":3557,"ratio":1.0435,"rewrite_sha":"6c913570d36f1a2d"}],"floor_met":true,"chars":3557,"ratio":1.0435,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":6.0606060606060606,"pattern_hits":6,"det_verdict":"human"},"detail":{"orig_count":15,"retained":14,"retention":0.9333333333333333,"added":1},"trigram_jaccard":0.5705,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"연도·사업군·평가 절차가 촘촘히 맞물린 행정문서 특유의 구체성"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":5,"strongest_cue":"authentic Korean public sector report formatting and hyper-specific institutional project titles"}}},"collapsed_original_chars":3378} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-kistep-rnd-investment-issue-2025","model_family":"human-reference","register":"academic-summary","original_sha":"132e6021efbde1a2","original_chars":1276,"original_detail_count":21,"P":{"rewrite_sha":"c739cce0abcf171b","error":null,"chars":1159,"ratio":0.9082,"gate_failed":true,"gate_reason":"numbers in the source are missing from the rewrite: 2025","internal":{"signal_score":0,"score":0,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":21,"retained":18,"retention":0.8571428571428571,"added":2},"trigram_jaccard":0.6602,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":35,"strongest_cue":"보고서식 명사형 종결과 반복적 병렬 구조"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"authentic Korean government R&D report formatting with highly specific legal citations and methodological terms"}}},"S":{"rewrite_sha":"aaa282598b2bcd1b","error":null,"attempts":[{"attempt":1,"chars":1352,"ratio":1.0602,"rewrite_sha":"aaa282598b2bcd1b"}],"floor_met":true,"chars":1352,"ratio":1.0602,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":7.142857142857142,"pattern_hits":3,"det_verdict":"human"},"detail":{"orig_count":21,"retained":19,"retention":0.9047619047619048,"added":2},"trigram_jaccard":0.6394,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":28,"strongest_cue":"구체적인 분석 기간·방법론·법조문 인용"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":10,"strongest_cue":"specific institutional report formatting and legal citations"}}},"collapsed_original_chars":1263} +{"arm":"S4","stage":"ko","s1_arm":"D","template_sha":"a3b647731742e3c8","block_sha":"2394fa83bd02bd39","retry_sha":"3953a21f33579038","rewriter_model":"claude-sonnet-4-6","prompt_mode":"minimal","judges_used":["judge-gpt","judge-gemini-3.7-flash"],"det_binary_allowed":true,"source_class":"human","pair_id":"s1-ko-human-korea-policy-youth-basic-2025","model_family":"human-reference","register":"chat-update","original_sha":"b433ecd6a31dcac0","original_chars":3933,"original_detail_count":60,"P":{"rewrite_sha":"2361fa8c8afabcb3","error":null,"chars":3920,"ratio":0.9969,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":21.62162162162162,"pattern_hits":2,"det_verdict":"human"},"detail":{"orig_count":60,"retained":57,"retention":0.95,"added":2},"trigram_jaccard":0.5949,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":34,"strongest_cue":"수치·사업명이 촘촘한 보도자료식 구체성"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":8,"strongest_cue":"highly specific policy figures and standard government press release style"}}},"S":{"rewrite_sha":"041c7c3c78a54335","error":null,"attempts":[{"attempt":1,"chars":3789,"ratio":0.9661,"rewrite_sha":"293468fea7273e27"},{"attempt":2,"chars":3930,"ratio":0.9992,"rewrite_sha":"041c7c3c78a54335"}],"floor_met":true,"chars":3930,"ratio":0.9992,"gate_failed":false,"gate_reason":null,"internal":{"signal_score":0,"score":18.421052631578945,"pattern_hits":1,"det_verdict":"human"},"detail":{"orig_count":60,"retained":60,"retention":1,"added":0},"trigram_jaccard":0.6594,"judges":{"judge-gpt":{"authorship":"human","ai_likeness":38,"strongest_cue":"구체적 수치가 촘촘한 보도자료식 정책 나열"},"judge-gemini-3.7-flash":{"authorship":"human","ai_likeness":15,"strongest_cue":"detailed numerical policy figures and standard Korean press release structure"}}},"collapsed_original_chars":3896} diff --git a/docs/research/2026-rewrite-efficacy-study4.md b/docs/research/2026-rewrite-efficacy-study4.md new file mode 100644 index 00000000..ac84f176 --- /dev/null +++ b/docs/research/2026-rewrite-efficacy-study4.md @@ -0,0 +1,172 @@ +# Does a specificity-preservation constraint fix the Korean gap? — Study 4 results + +Companion to `2026-rewrite-efficacy-prereg.md` ("Study 4" section, registered +2026-09-02 before any data, with three dated notes on the judge panel that were +written before any Study 4 judge score was read), Study 1 +(`2026-rewrite-efficacy-study1.md`) and Studies 2–3. Study 4 tested the +survey's H-4b: that the plain rewrite loses concrete detail, and that a **98% +length floor plus a retain-every-concrete-detail block** on the plain prompt +lowers perceived AI-likeness without any new mechanism. + +**Verdict up front: H-4b is NOT supported. The constrained rewrite (S) reads +marginally *more* AI-like than the plain rewrite (P) to the perceptual panel +(paired d +1.6, CI [−3.1, +6.5]) and clearly more AI-like to the deterministic +chief judge (+8.5, CI [+0.8, +17.0]). The model did not obey the floor: only +56% of AI documents reached 98% after up to three attempts. What the +constraint mostly bought was *less rewriting* (copy check fires) and a small +gain in retained detail, not humanness. Guard rail 1 (meaning gate) is +violated at 50/54. Nothing ships.** + +- Run: stage 1 (ko) 2026-09-02 08:51 UTC → 2026-09-03 02:00 UTC, 15 supervisor + passes across three claude session-limit windows. Same 54 Study 1 Arm-D + documents (27 AI + 27 human) by stored original text; rewriter + `claude-sonnet-4-6` invoked as patina's claude-cli backend; production + minimal-mode prompt (template `a3b64773…`), constraint block `2394fa83…`, + retry suffix `3953a21f…` — all fixed before the first row. +- Final matrix: **54/54 documents**, both arms, both LLM judges parsed on every + body (0 quorum loss). Det chief fresh-corpus gate at run time: 0.926 + (50/54) → binary det verdicts allowed. +- Stage 2 (en, 42 Study 1 Arm-A1 documents): **not started as of + 2026-09-03**; deferral is an owner decision (see "Stage 2" below). + +## Judge panel (registered deviation, decided before any row was read) + +Panel v2's grok seat was unavailable (xAI: credits exhausted, HTTP 403 on +2026-09-02). The registered admission rule (AUC on the 54 archived S1-D +originals ≥ 0.85 AND Spearman with gpt ≥ Spearman(grok, gpt) − 0.10, all on +the same 108 archived passages) was applied to five candidates: + +| candidate | scored | AUC | ρ vs gpt | ρ vs grok | admitted | +|---|---:|---:|---:|---:|---| +| gemini-2.5-pro (CLI) | 108/108 | 0.556 | 0.137 | 0.233 | no | +| **gemini-3.7-flash (API)** | 108/108 | **1.000** | **0.884** | 0.794 | **yes — selected** | +| gemini-3.1-pro-preview (API) | 108/108 | 0.971 | 0.849 | 0.790 | yes | +| deepseek-v4-pro (API) | 49/108 | incomplete (unparseable replies) | 0.696 (partial) | 0.690 (partial) | no | +| kimi-k3 (API) | 0/108 | account suspended (billing) | — | — | not bridged | + +Reference on the same passages: gpt AUC 0.995, grok AUC 0.967, Spearman(grok, +gpt) 0.857. The panel is therefore **judge-gpt (codex, gpt-5.5) + judge-gemini-3.7-flash +(Gemini API)** plus the deterministic chief; both are cross-family for claude +rewrites. Four rows finished before admission were rejudged from their stored +bodies; the runner then carried both judges. The gemini-3.7-flash seat was +assessed on Korean passages only. + +## H-4b-a (primary) — paired improvement on AI documents: **NOT SUPPORTED** + +Perceptual score = mean of the two LLM judges' 0–100 AI-likeness. + +| | P (plain) | S (specificity) | paired d = S − P (95% bootstrap CI) | +|---|---:|---:|---| +| AI docs (n=27) | 85.2 | **86.8** | **+1.6 [−3.1, +6.5]** | + +Pre-set support required mean d ≤ −3 AND CI upper < 0. The point estimate is +positive and the interval includes zero: S is indistinguishable from P at +best, and leans worse. AI-call rate per judge call: 94.4% → 94.4% +(discordant pairs 2 vs 2, exact McNemar p = 1.0). + +## The mechanism did not execute (H-4b-d) + +| | AI docs | human docs | +|---|---:|---:| +| length ratio P → S | 0.908 → 0.984 | 0.928 → 0.988 | +| S rows meeting the 98% floor | **15/27 (56%)** | 20/27 (74%) | +| mean S attempts (max 3) | 2.19 | 2.07 | + +The prereg set 80% as the floor-achievement target and said that below it +"the enforcement itself failed and (a) is read with that caveat". Read both +ways: the constraint did not help, *and* a prompt-level length floor with +feedback retries could not make claude-sonnet-4-6 keep 98% of a Korean +document in 44% of cases. The retry suffix moved the mean ratio from 0.91 to +0.98, but the last attempt still fell short on 19 of 54 documents. + +## Secondary outcomes + +| measure | P | S | reading | +|---|---:|---:|---| +| H-4b-c detail retention (AI docs) | 91.8% | 94.3% | +2.5 pp | +| added detail tokens per doc (AI) | 0.67 | 0.26 | guard rail 3 held (S − P ≤ 1.0) | +| copy check, median trigram Jaccard vs original (AI) | 0.517 | **0.667** | **fires**: S rewrote less | +| det chief continuous score (AI) | 33.3 | **41.9** | paired **+8.5 [+0.8, +17.0]** — S reads more AI-like to the deterministic scorer | +| structural share of still-"ai" cues (AI, n=51 each) | 92.2% | 84.3% | still overwhelmingly architectural | +| gpt-only, descriptive: S1 rw1 / P / S (AI) | 83.9 / 91.3 / 92.3 | | see note below | + +The copy check and the det movement tell one story: the constraint made the +rewrite more conservative. Keeping every detail and 98% of the length leaves +the original's paragraph rhythm and structure in place, which is exactly what +the deterministic scorer and the judges' cues penalise. Detail retention rose +by 2.5 points because less was rewritten, not because the prose read more +human. + +**Descriptive note on drift.** Today's plain rewrite (P) reads *more* AI-like to +gpt (91.3) than the archived Study 1 rewrite of the same documents did in July +(83.9). The production prompt changed twice in between (2026-07-28 +no-invented-claims rule; 2026-08-05 voice-axis cutover) and the gpt judge may +also have drifted; this is why the registration made only within-run S vs P +confirmatory. It is reported here because a reader should see it, not +discover it. + +## Guard rails + +1. **Meaning-safety gate on S (pre-set ≥ 95%, ≥ 52/54): 50/54 = 92.6% — + VIOLATED.** Two of the four failures are the two known corpus-artifact + documents (generator length-preamble numbers; the same two failed in + Studies 2 and 3). Descriptively, excluding them gives 50/52 = 96.2%, but + the registered verdict stands. The other two are real content numbers + dropped by S ("100", "24"); P dropped real numbers on four non-artifact + documents (48/54 pass). A "keep every number" instruction did not stop the + model from dropping numbers. +2. **Human-control over-editing:** paired d −0.7 [−2.8, +1.1] — **held**. The + floor did not push human text toward AI (det −0.7 [−3.6, +2.2]). +3. **Invented-content proxy:** added detail tokens S − P = −0.41 (AI), −0.71 + (human) — **held**; the floor did not induce padding with new numbers or + names. +4. **Copy check (descriptive):** fires on AI docs (S median 0.667 vs P 0.517; + human 0.700 vs 0.581). "Preserved specificity" reads as "rewrote less". + +## Why it failed (diagnosis) + +Studies 1–3 located the surviving Korean tells in document architecture: +uniform paragraphs, tidy arcs, checklist coverage. H-4b bet that judges were +also reacting to lost specificity and that keeping it would help. The data +say the specificity loss is real but small (P already retains 92% of detail +tokens) and that restoring the last few points while freezing length leaves +the architecture untouched — the structural cue share stays above 84% and +the deterministic score rises. The model's refusal to hold a 98% floor on +Korean is a second, independent finding: length is not a knob a prompt can +turn reliably on this rewriter. + +## Execution notes + +- Session limits: 53 "session limit" failures across two claude 5-hour windows + (resets 23:00 and 04:00 Asia/Seoul); the supervisor's circuit breaker + pruned the fail-soft rows and resumed. The back-off was changed mid-run from + fixed 30-minute polls to reset-aware sleeps (plumbing only). +- One 600 s execute timeout (doc 12, S attempt 2); the rewrite timeout was + raised to 900 s from the next pass, following the Study 1 (300→600) and + Study 3 (600→900) precedents. No prompt or criterion changed. +- The judge panel changed from gpt-only to gpt + gemini-3.7-flash after four + rows, per the dated prereg notes; those rows were rejudged from stored + bodies. Two runner restarts (panel change, loop change) lost only in-flight + work. +- The Study 4 bridge scripts, runner, loop and analysis live under + `scripts/research/`; committed artifacts are hash-and-score rows + (`artifacts/rewrite-efficacy-study4/s4-rows-ko.jsonl`) and the bridge rows + and verdicts. Raw texts stay in the ignored private store. + +## What ships + +Per the pre-registered decision rule: nothing. No efficacy claim attaches to a +length floor or a keep-every-detail instruction, and the block is not added to +the production prompt. The next candidate on the registered list is **H-4a — +deterministic merge/split with seam-only LLM infill** — the first mechanism +that acts on the architecture the judges keep naming. + +## Stage 2 (en) + +Registered to run after stage 1 with identical rules. Not started as of +2026-09-03: the runner spends the owner's Claude subscription window (the +same quota interactive sessions use), and the Korean result is decisive. If +the owner wants the English data point, the bridge must first be re-run on the +84 archived Study 1 Arm-A1 passages (the gemini-3.7-flash seat was admitted on +Korean only), then `S4_STAGE=en` runs the same harness. A deferral is +recorded here as a dated note per the registration; it is not a withdrawal.