patina-cli 3.11.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/.patina.default.yaml +29 -29
  2. package/CHANGELOG.md +53 -0
  3. package/NOTICE +21 -0
  4. package/README.md +117 -224
  5. package/README_JA.md +134 -77
  6. package/README_KR.md +132 -74
  7. package/README_ZH.md +137 -80
  8. package/SKILL.md +11 -20
  9. package/artifacts/rebaseline-2025/README.md +147 -0
  10. package/artifacts/rebaseline-2025/human-controls.public.jsonl +250 -0
  11. package/artifacts/rebaseline-2025/intake.example.jsonl +2 -0
  12. package/artifacts/rebaseline-2025/intake.local.example.jsonl +25 -0
  13. package/artifacts/rebaseline-2025/prompts.template.jsonl +7 -0
  14. package/artifacts/rebaseline-2025/sources.ko-public.jsonl +39 -0
  15. package/assets/brand/patina-badge.svg +18 -0
  16. package/assets/brand/patina-mark.svg +8 -0
  17. package/assets/demo/README.md +79 -0
  18. package/core/scoring.md +12 -12
  19. package/core/standalone-prompt.md +3 -1
  20. package/core/stylometry.md +93 -22
  21. package/docs/API.md +1554 -0
  22. package/docs/AUTHENTICATION.md +50 -26
  23. package/docs/AUTHENTICATION_KR.md +54 -29
  24. package/docs/BRANDING.md +9 -8
  25. package/docs/CLI.md +55 -14
  26. package/docs/COOKBOOK.md +8 -21
  27. package/docs/DEMO.md +32 -5
  28. package/docs/EXIT-CODES.md +2 -3
  29. package/docs/FALSE-POSITIVES.md +63 -0
  30. package/docs/FAQ.md +9 -1
  31. package/docs/FAQ_KR.md +3 -1
  32. package/docs/FLAG-PARITY.md +33 -47
  33. package/docs/ISSUE-WAVES.md +57 -0
  34. package/docs/PATTERNS-EN.md +67 -3
  35. package/docs/PATTERNS-JA.md +68 -2
  36. package/docs/PATTERNS-KO.md +70 -7
  37. package/docs/PATTERNS-ZH.md +67 -3
  38. package/docs/PATTERNS.md +5 -5
  39. package/docs/RESEARCH-DOCS-PLATFORM.md +54 -0
  40. package/docs/ROADMAP.md +46 -66
  41. package/docs/TRANSLATIONESE-KO.md +51 -0
  42. package/docs/audits/2026-05-deep-research.md +3 -1
  43. package/docs/benchmarks/README.md +51 -0
  44. package/docs/benchmarks/detector-comparison.json +69 -9
  45. package/docs/benchmarks/detector-comparison.md +10 -5
  46. package/docs/benchmarks/katfish-ko-latest.json +657 -0
  47. package/docs/benchmarks/katfish-ko-latest.md +77 -0
  48. package/docs/benchmarks/latest.json +1183 -108
  49. package/docs/benchmarks/latest.md +84 -60
  50. package/docs/benchmarks/lexicon-freshness-en-2026-05-22.json +1121 -0
  51. package/docs/benchmarks/lexicon-freshness-en-2026-05-22.md +136 -0
  52. package/docs/benchmarks/rebaseline-latest.json +381 -0
  53. package/docs/benchmarks/rebaseline-latest.md +121 -0
  54. package/docs/benchmarks/register-stratified-latest.json +164 -0
  55. package/docs/benchmarks/register-stratified-latest.md +99 -0
  56. package/docs/benchmarks/register-stratified.md +43 -0
  57. package/docs/integrations/github-action.md +44 -11
  58. package/docs/integrations/playground.md +58 -0
  59. package/docs/integrations/pre-commit.md +5 -5
  60. package/docs/integrations/release.md +5 -3
  61. package/docs/integrations/static-sites.md +83 -0
  62. package/docs/research/2025-rebaseline-plan.md +71 -2
  63. package/docs/research/2026-rebaseline.md +102 -0
  64. package/docs/research/adversarial-mps.md +41 -0
  65. package/docs/research/ai-human-metrics.md +35 -23
  66. package/docs/research/human-eval-panel.md +42 -0
  67. package/docs/research/judge-agreement.md +24 -0
  68. package/docs/research/ko-2025-corpus-sources.md +135 -0
  69. package/docs/research/lexicon-freshness-audit.md +64 -0
  70. package/docs/research/zh-ja-lexicon-calibration.md +60 -0
  71. package/docs/social/patina-launch-copy.md +173 -100
  72. package/docs/social/patina-launch-execution.md +94 -0
  73. package/docs/social/patina-launch-korean-first.md +83 -0
  74. package/docs/social/signs-of-ai-writing.md +26 -0
  75. package/docs/social/signs-of-ai-writing_KR.md +26 -0
  76. package/lexicon/ai-en.md +21 -24
  77. package/lexicon/ai-ja.md +158 -0
  78. package/lexicon/ai-ko.md +9 -9
  79. package/lexicon/ai-zh.md +158 -0
  80. package/lexicon/provenance/ai-en.json +970 -0
  81. package/lexicon/provenance/ai-ja.json +542 -0
  82. package/lexicon/provenance/ai-ko.json +866 -0
  83. package/lexicon/provenance/ai-zh.json +542 -0
  84. package/package.json +49 -8
  85. package/patterns/en-communication.md +5 -0
  86. package/patterns/en-content.md +5 -0
  87. package/patterns/en-filler.md +5 -0
  88. package/patterns/en-language.md +29 -1
  89. package/patterns/en-structure.md +5 -0
  90. package/patterns/en-style.md +5 -0
  91. package/patterns/en-viral-hook.md +42 -2
  92. package/patterns/ja-communication.md +5 -0
  93. package/patterns/ja-content.md +5 -0
  94. package/patterns/ja-filler.md +5 -0
  95. package/patterns/ja-language.md +33 -1
  96. package/patterns/ja-structure.md +12 -0
  97. package/patterns/ja-style.md +5 -0
  98. package/patterns/ja-viral-hook.md +41 -2
  99. package/patterns/ko-communication.md +5 -0
  100. package/patterns/ko-content.md +5 -0
  101. package/patterns/ko-filler.md +5 -0
  102. package/patterns/ko-language.md +33 -1
  103. package/patterns/ko-structure.md +25 -6
  104. package/patterns/ko-style.md +5 -0
  105. package/patterns/ko-viral-hook.md +38 -2
  106. package/patterns/zh-communication.md +5 -0
  107. package/patterns/zh-content.md +5 -0
  108. package/patterns/zh-filler.md +5 -0
  109. package/patterns/zh-language.md +37 -1
  110. package/patterns/zh-structure.md +12 -0
  111. package/patterns/zh-style.md +5 -0
  112. package/patterns/zh-viral-hook.md +38 -2
  113. package/playground/README.md +55 -0
  114. package/playground/analytics.js +4 -0
  115. package/playground/analyzer.js +883 -0
  116. package/playground/app.js +157 -0
  117. package/playground/data/lexicons.js +343 -0
  118. package/playground/index.html +138 -0
  119. package/playground/styles.css +267 -0
  120. package/profiles/namuwiki.md +111 -0
  121. package/scripts/adversarial-mps-report.mjs +201 -0
  122. package/scripts/badge-json.mjs +79 -0
  123. package/scripts/benchmark-report.mjs +56 -9
  124. package/scripts/check-release-metadata.mjs +0 -2
  125. package/scripts/detector-comparison.mjs +7 -7
  126. package/scripts/generate-playground-data.mjs +77 -0
  127. package/scripts/katfish-calibration.mjs +464 -0
  128. package/scripts/lexicon-freshness.mjs +485 -0
  129. package/scripts/lint.mjs +1 -1
  130. package/scripts/precommit-score.mjs +4 -3
  131. package/scripts/prose-score.mjs +81 -5
  132. package/scripts/rebaseline-intake.mjs +242 -0
  133. package/scripts/rebaseline-score.mjs +268 -0
  134. package/scripts/rebaseline-summary.mjs +773 -0
  135. package/scripts/rebaseline-web-collect.mjs +410 -0
  136. package/scripts/update-benchmark-ranges.mjs +1 -0
  137. package/src/api.js +69 -105
  138. package/src/auth.js +50 -2
  139. package/src/backends/claude-cli.js +19 -4
  140. package/src/backends/codex-cli.js +19 -3
  141. package/src/backends/contract.js +230 -1
  142. package/src/backends/gemini-cli.js +18 -5
  143. package/src/backends/index.js +87 -12
  144. package/src/backends/kimi-cli.js +161 -0
  145. package/src/cli.js +577 -567
  146. package/src/commands/doctor.js +2 -2
  147. package/src/config.js +29 -0
  148. package/src/errors.js +53 -1
  149. package/src/features/discourse-tells.js +68 -0
  150. package/src/features/index.js +82 -8
  151. package/src/features/lexicon.js +40 -6
  152. package/src/features/markup-leakage.js +69 -0
  153. package/src/features/segment.js +41 -0
  154. package/src/features/signal-strength.js +81 -0
  155. package/src/features/stylometry.js +231 -1
  156. package/src/features/translationese.js +127 -0
  157. package/src/loader.js +76 -0
  158. package/src/logger.js +22 -23
  159. package/src/model-defaults.js +55 -0
  160. package/src/ouroboros.js +31 -0
  161. package/src/output.js +102 -90
  162. package/src/prompt-builder.js +103 -68
  163. package/src/providers.js +51 -4
  164. package/src/scoring.js +210 -2
  165. package/src/security.js +75 -0
  166. package/tests/fixtures/live-quality/en/public-docs-01.md +26 -0
  167. package/tests/fixtures/live-quality/ko/public-docs-01.md +26 -0
  168. package/tests/fixtures/suspect-zones/expected-ranges.json +207 -16
  169. package/tests/fixtures/suspect-zones/ja/ai/ja-ai-04-lexicon.md +11 -0
  170. package/tests/fixtures/suspect-zones/ja/natural/ja-nat-04-lexicon-cold.md +11 -0
  171. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-02.md +4 -5
  172. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-07-ko-diagnostic.md +11 -0
  173. package/tests/fixtures/suspect-zones/zh/ai/zh-ai-04-lexicon.md +11 -0
  174. package/tests/fixtures/suspect-zones/zh/natural/zh-nat-04-lexicon-cold.md +11 -0
  175. package/tests/quality/README.md +188 -11
  176. package/tests/quality/adversarial-mps/fixtures.jsonl +10 -0
  177. package/tests/quality/benchmark.mjs +39 -1
  178. package/tests/quality/dogfood.mjs +5 -3
  179. package/tests/quality/live-fixtures.jsonl +2 -0
  180. package/tests/quality/live-quality.mjs +596 -0
  181. package/tests/quality/ranking-metrics.mjs +136 -0
  182. package/tests/quality/rebaseline-manifest.example.jsonl +5 -0
  183. package/vercel.json +53 -0
  184. package/SKILL-MAX.md +0 -455
  185. package/docs/internal/HARNESS.md +0 -14
  186. package/docs/internal/README.md +0 -14
  187. package/docs/internal/WARP.md +0 -23
  188. package/patina-max/SKILL.md +0 -523
  189. package/patina-max/composite.py +0 -457
  190. package/src/cache.js +0 -106
  191. package/src/commands/init.js +0 -208
  192. package/src/manifest.js +0 -162
  193. package/src/max-mode.js +0 -207
@@ -1,12 +1,12 @@
1
- # Detector Comparison Harness
1
+ # Detector Comparison Protocol
2
2
 
3
- This report is generated offline from the checked-in suspect-zone fixtures. It is a comparison harness, not a vendor ranking claim.
3
+ This report is generated offline from the checked-in suspect-zone fixtures. It is a comparison protocol, not a vendor ranking claim.
4
4
 
5
5
  ## Current run
6
6
 
7
- - Generated at: 2026-05-20T03:54:28.830Z
7
+ - Generated at: 2026-05-21T15:02:19.159Z
8
8
  - Fixture source: `tests/fixtures/suspect-zones/**`
9
- - Fixture count: 34
9
+ - Fixture count: 39
10
10
  - Manual third-party input: none
11
11
  - Reproduce built-in comparison: `npm run benchmark:compare`
12
12
  - Merge manual scores: `node scripts/detector-comparison.mjs --input tests/quality/detectors.manual.example.json`
@@ -15,7 +15,7 @@ This report is generated offline from the checked-in suspect-zone fixtures. It i
15
15
 
16
16
  | detector | name | kind | covered | coverage | accuracy | precision | recall | TP | FP | FN | TN |
17
17
  |---|---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
18
- | patina-deterministic | Patina deterministic suspect-zone analyzer | in-tree | 34/34 | 100.0% | 100.0% | 100.0% | 100.0% | 18 | 0 | 0 | 16 |
18
+ | patina-deterministic | Patina deterministic suspect-zone analyzer | in-tree | 39/39 | 100.0% | 100.0% | 100.0% | 100.0% | 21 | 0 | 0 | 18 |
19
19
 
20
20
  ## Fixture-level rows
21
21
 
@@ -35,15 +35,18 @@ This report is generated offline from the checked-in suspect-zone fixtures. It i
35
35
  | ja-ai-01 | ja | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
36
36
  | ja-ai-02 | ja | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
37
37
  | ja-ai-03 | ja | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
38
+ | ja-ai-04-lexicon | ja | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
38
39
  | ja-nat-01 | ja | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
39
40
  | ja-nat-02 | ja | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
40
41
  | ja-nat-03 | ja | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
42
+ | ja-nat-04-lexicon-cold | ja | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
41
43
  | ko-ai-01 | ko | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
42
44
  | ko-ai-02 | ko | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
43
45
  | ko-ai-03 | ko | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
44
46
  | ko-ai-04 | ko | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
45
47
  | ko-ai-05 | ko | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
46
48
  | ko-ai-06-chat-register | ko | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
49
+ | ko-ai-07-ko-diagnostic | ko | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
47
50
  | ko-nat-01 | ko | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
48
51
  | ko-nat-02 | ko | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
49
52
  | ko-nat-03 | ko | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
@@ -52,9 +55,11 @@ This report is generated offline from the checked-in suspect-zone fixtures. It i
52
55
  | zh-ai-01 | zh | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
53
56
  | zh-ai-02 | zh | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
54
57
  | zh-ai-03 | zh | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
58
+ | zh-ai-04-lexicon | zh | ai | patina-deterministic | hot | hot | ✓ | 1 | tests/quality/benchmark.mjs |
55
59
  | zh-nat-01 | zh | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
56
60
  | zh-nat-02 | zh | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
57
61
  | zh-nat-03 | zh | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
62
+ | zh-nat-04-lexicon-cold | zh | natural | patina-deterministic | cold | cold | ✓ | 0 | tests/quality/benchmark.mjs |
58
63
 
59
64
  ## Manual third-party protocol
60
65
 
@@ -0,0 +1,657 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": "2026-05-21T16:25:42.849Z",
4
+ "inputs": {
5
+ "katfishRows": 2094,
6
+ "humanControlRows": 250
7
+ },
8
+ "modes": [
9
+ {
10
+ "id": "burstiness_mattr_only",
11
+ "label": "Burstiness+MATTR only"
12
+ },
13
+ {
14
+ "id": "patina_without_ko_diagnostics",
15
+ "label": "Patina without KO diagnostics"
16
+ },
17
+ {
18
+ "id": "patina_current",
19
+ "label": "Patina current"
20
+ }
21
+ ],
22
+ "katfish": {
23
+ "counts": {
24
+ "genre": {
25
+ "essay": 771,
26
+ "abstract": 378,
27
+ "poetry": 945
28
+ },
29
+ "model": {
30
+ "human": 470,
31
+ "gpt-4o-2024-05-13": 470,
32
+ "solar-1-mini-chat": 429,
33
+ "qwen2:72b-instruct": 387,
34
+ "llama3.1:70b": 338
35
+ },
36
+ "expectedHot": {
37
+ "false": 470,
38
+ "true": 1624
39
+ }
40
+ },
41
+ "metrics": {
42
+ "burstiness_mattr_only": {
43
+ "tp": 875,
44
+ "fp": 125,
45
+ "fn": 749,
46
+ "tn": 345,
47
+ "total": 2094,
48
+ "accuracy": 0.583,
49
+ "precision": 0.875,
50
+ "recall": 0.539,
51
+ "f1": 0.667,
52
+ "fpr": 0.266
53
+ },
54
+ "patina_without_ko_diagnostics": {
55
+ "tp": 957,
56
+ "fp": 137,
57
+ "fn": 667,
58
+ "tn": 333,
59
+ "total": 2094,
60
+ "accuracy": 0.616,
61
+ "precision": 0.875,
62
+ "recall": 0.589,
63
+ "f1": 0.704,
64
+ "fpr": 0.291
65
+ },
66
+ "patina_current": {
67
+ "tp": 1215,
68
+ "fp": 224,
69
+ "fn": 409,
70
+ "tn": 246,
71
+ "total": 2094,
72
+ "accuracy": 0.698,
73
+ "precision": 0.844,
74
+ "recall": 0.748,
75
+ "f1": 0.793,
76
+ "fpr": 0.477
77
+ }
78
+ },
79
+ "byGenre": {
80
+ "abstract": {
81
+ "burstiness_mattr_only": {
82
+ "tp": 171,
83
+ "fp": 53,
84
+ "fn": 107,
85
+ "tn": 47,
86
+ "total": 378,
87
+ "accuracy": 0.577,
88
+ "precision": 0.763,
89
+ "recall": 0.615,
90
+ "f1": 0.681,
91
+ "fpr": 0.53
92
+ },
93
+ "patina_without_ko_diagnostics": {
94
+ "tp": 185,
95
+ "fp": 58,
96
+ "fn": 93,
97
+ "tn": 42,
98
+ "total": 378,
99
+ "accuracy": 0.601,
100
+ "precision": 0.761,
101
+ "recall": 0.665,
102
+ "f1": 0.71,
103
+ "fpr": 0.58
104
+ },
105
+ "patina_current": {
106
+ "tp": 199,
107
+ "fp": 67,
108
+ "fn": 79,
109
+ "tn": 33,
110
+ "total": 378,
111
+ "accuracy": 0.614,
112
+ "precision": 0.748,
113
+ "recall": 0.716,
114
+ "f1": 0.732,
115
+ "fpr": 0.67
116
+ }
117
+ },
118
+ "essay": {
119
+ "burstiness_mattr_only": {
120
+ "tp": 210,
121
+ "fp": 16,
122
+ "fn": 380,
123
+ "tn": 165,
124
+ "total": 771,
125
+ "accuracy": 0.486,
126
+ "precision": 0.929,
127
+ "recall": 0.356,
128
+ "f1": 0.515,
129
+ "fpr": 0.088
130
+ },
131
+ "patina_without_ko_diagnostics": {
132
+ "tp": 278,
133
+ "fp": 23,
134
+ "fn": 312,
135
+ "tn": 158,
136
+ "total": 771,
137
+ "accuracy": 0.565,
138
+ "precision": 0.924,
139
+ "recall": 0.471,
140
+ "f1": 0.624,
141
+ "fpr": 0.127
142
+ },
143
+ "patina_current": {
144
+ "tp": 474,
145
+ "fp": 82,
146
+ "fn": 116,
147
+ "tn": 99,
148
+ "total": 771,
149
+ "accuracy": 0.743,
150
+ "precision": 0.853,
151
+ "recall": 0.803,
152
+ "f1": 0.827,
153
+ "fpr": 0.453
154
+ }
155
+ },
156
+ "poetry": {
157
+ "burstiness_mattr_only": {
158
+ "tp": 494,
159
+ "fp": 56,
160
+ "fn": 262,
161
+ "tn": 133,
162
+ "total": 945,
163
+ "accuracy": 0.663,
164
+ "precision": 0.898,
165
+ "recall": 0.653,
166
+ "f1": 0.757,
167
+ "fpr": 0.296
168
+ },
169
+ "patina_without_ko_diagnostics": {
170
+ "tp": 494,
171
+ "fp": 56,
172
+ "fn": 262,
173
+ "tn": 133,
174
+ "total": 945,
175
+ "accuracy": 0.663,
176
+ "precision": 0.898,
177
+ "recall": 0.653,
178
+ "f1": 0.757,
179
+ "fpr": 0.296
180
+ },
181
+ "patina_current": {
182
+ "tp": 542,
183
+ "fp": 75,
184
+ "fn": 214,
185
+ "tn": 114,
186
+ "total": 945,
187
+ "accuracy": 0.694,
188
+ "precision": 0.878,
189
+ "recall": 0.717,
190
+ "f1": 0.79,
191
+ "fpr": 0.397
192
+ }
193
+ }
194
+ },
195
+ "byModel": {
196
+ "gpt-4o-2024-05-13": {
197
+ "burstiness_mattr_only": {
198
+ "tp": 264,
199
+ "fp": 0,
200
+ "fn": 206,
201
+ "tn": 0,
202
+ "total": 470,
203
+ "accuracy": 0.562,
204
+ "precision": 1,
205
+ "recall": 0.562,
206
+ "f1": 0.719,
207
+ "fpr": 0
208
+ },
209
+ "patina_without_ko_diagnostics": {
210
+ "tp": 300,
211
+ "fp": 0,
212
+ "fn": 170,
213
+ "tn": 0,
214
+ "total": 470,
215
+ "accuracy": 0.638,
216
+ "precision": 1,
217
+ "recall": 0.638,
218
+ "f1": 0.779,
219
+ "fpr": 0
220
+ },
221
+ "patina_current": {
222
+ "tp": 370,
223
+ "fp": 0,
224
+ "fn": 100,
225
+ "tn": 0,
226
+ "total": 470,
227
+ "accuracy": 0.787,
228
+ "precision": 1,
229
+ "recall": 0.787,
230
+ "f1": 0.881,
231
+ "fpr": 0
232
+ }
233
+ },
234
+ "human": {
235
+ "burstiness_mattr_only": {
236
+ "tp": 0,
237
+ "fp": 125,
238
+ "fn": 0,
239
+ "tn": 345,
240
+ "total": 470,
241
+ "accuracy": 0.734,
242
+ "precision": 0,
243
+ "recall": 0,
244
+ "f1": 0,
245
+ "fpr": 0.266
246
+ },
247
+ "patina_without_ko_diagnostics": {
248
+ "tp": 0,
249
+ "fp": 137,
250
+ "fn": 0,
251
+ "tn": 333,
252
+ "total": 470,
253
+ "accuracy": 0.709,
254
+ "precision": 0,
255
+ "recall": 0,
256
+ "f1": 0,
257
+ "fpr": 0.291
258
+ },
259
+ "patina_current": {
260
+ "tp": 0,
261
+ "fp": 224,
262
+ "fn": 0,
263
+ "tn": 246,
264
+ "total": 470,
265
+ "accuracy": 0.523,
266
+ "precision": 0,
267
+ "recall": 0,
268
+ "f1": 0,
269
+ "fpr": 0.477
270
+ }
271
+ },
272
+ "llama3.1:70b": {
273
+ "burstiness_mattr_only": {
274
+ "tp": 157,
275
+ "fp": 0,
276
+ "fn": 181,
277
+ "tn": 0,
278
+ "total": 338,
279
+ "accuracy": 0.464,
280
+ "precision": 1,
281
+ "recall": 0.464,
282
+ "f1": 0.634,
283
+ "fpr": 0
284
+ },
285
+ "patina_without_ko_diagnostics": {
286
+ "tp": 164,
287
+ "fp": 0,
288
+ "fn": 174,
289
+ "tn": 0,
290
+ "total": 338,
291
+ "accuracy": 0.485,
292
+ "precision": 1,
293
+ "recall": 0.485,
294
+ "f1": 0.653,
295
+ "fpr": 0
296
+ },
297
+ "patina_current": {
298
+ "tp": 211,
299
+ "fp": 0,
300
+ "fn": 127,
301
+ "tn": 0,
302
+ "total": 338,
303
+ "accuracy": 0.624,
304
+ "precision": 1,
305
+ "recall": 0.624,
306
+ "f1": 0.769,
307
+ "fpr": 0
308
+ }
309
+ },
310
+ "qwen2:72b-instruct": {
311
+ "burstiness_mattr_only": {
312
+ "tp": 161,
313
+ "fp": 0,
314
+ "fn": 226,
315
+ "tn": 0,
316
+ "total": 387,
317
+ "accuracy": 0.416,
318
+ "precision": 1,
319
+ "recall": 0.416,
320
+ "f1": 0.588,
321
+ "fpr": 0
322
+ },
323
+ "patina_without_ko_diagnostics": {
324
+ "tp": 192,
325
+ "fp": 0,
326
+ "fn": 195,
327
+ "tn": 0,
328
+ "total": 387,
329
+ "accuracy": 0.496,
330
+ "precision": 1,
331
+ "recall": 0.496,
332
+ "f1": 0.663,
333
+ "fpr": 0
334
+ },
335
+ "patina_current": {
336
+ "tp": 289,
337
+ "fp": 0,
338
+ "fn": 98,
339
+ "tn": 0,
340
+ "total": 387,
341
+ "accuracy": 0.747,
342
+ "precision": 1,
343
+ "recall": 0.747,
344
+ "f1": 0.855,
345
+ "fpr": 0
346
+ }
347
+ },
348
+ "solar-1-mini-chat": {
349
+ "burstiness_mattr_only": {
350
+ "tp": 293,
351
+ "fp": 0,
352
+ "fn": 136,
353
+ "tn": 0,
354
+ "total": 429,
355
+ "accuracy": 0.683,
356
+ "precision": 1,
357
+ "recall": 0.683,
358
+ "f1": 0.812,
359
+ "fpr": 0
360
+ },
361
+ "patina_without_ko_diagnostics": {
362
+ "tp": 301,
363
+ "fp": 0,
364
+ "fn": 128,
365
+ "tn": 0,
366
+ "total": 429,
367
+ "accuracy": 0.702,
368
+ "precision": 1,
369
+ "recall": 0.702,
370
+ "f1": 0.825,
371
+ "fpr": 0
372
+ },
373
+ "patina_current": {
374
+ "tp": 345,
375
+ "fp": 0,
376
+ "fn": 84,
377
+ "tn": 0,
378
+ "total": 429,
379
+ "accuracy": 0.804,
380
+ "precision": 1,
381
+ "recall": 0.804,
382
+ "f1": 0.891,
383
+ "fpr": 0
384
+ }
385
+ }
386
+ }
387
+ },
388
+ "humanControls": {
389
+ "counts": {
390
+ "register": {
391
+ "chat-update": 50,
392
+ "blog": 50,
393
+ "technical-how-to": 50,
394
+ "academic-summary": 50,
395
+ "product-doc": 50
396
+ }
397
+ },
398
+ "metrics": {
399
+ "burstiness_mattr_only": {
400
+ "tp": 0,
401
+ "fp": 32,
402
+ "fn": 0,
403
+ "tn": 218,
404
+ "total": 250,
405
+ "accuracy": 0.872,
406
+ "precision": 0,
407
+ "recall": 0,
408
+ "f1": 0,
409
+ "fpr": 0.128
410
+ },
411
+ "patina_without_ko_diagnostics": {
412
+ "tp": 0,
413
+ "fp": 42,
414
+ "fn": 0,
415
+ "tn": 208,
416
+ "total": 250,
417
+ "accuracy": 0.832,
418
+ "precision": 0,
419
+ "recall": 0,
420
+ "f1": 0,
421
+ "fpr": 0.168
422
+ },
423
+ "patina_current": {
424
+ "tp": 0,
425
+ "fp": 42,
426
+ "fn": 0,
427
+ "tn": 208,
428
+ "total": 250,
429
+ "accuracy": 0.832,
430
+ "precision": 0,
431
+ "recall": 0,
432
+ "f1": 0,
433
+ "fpr": 0.168
434
+ }
435
+ },
436
+ "byRegister": {
437
+ "academic-summary": {
438
+ "burstiness_mattr_only": {
439
+ "tp": 0,
440
+ "fp": 2,
441
+ "fn": 0,
442
+ "tn": 48,
443
+ "total": 50,
444
+ "accuracy": 0.96,
445
+ "precision": 0,
446
+ "recall": 0,
447
+ "f1": 0,
448
+ "fpr": 0.04
449
+ },
450
+ "patina_without_ko_diagnostics": {
451
+ "tp": 0,
452
+ "fp": 7,
453
+ "fn": 0,
454
+ "tn": 43,
455
+ "total": 50,
456
+ "accuracy": 0.86,
457
+ "precision": 0,
458
+ "recall": 0,
459
+ "f1": 0,
460
+ "fpr": 0.14
461
+ },
462
+ "patina_current": {
463
+ "tp": 0,
464
+ "fp": 7,
465
+ "fn": 0,
466
+ "tn": 43,
467
+ "total": 50,
468
+ "accuracy": 0.86,
469
+ "precision": 0,
470
+ "recall": 0,
471
+ "f1": 0,
472
+ "fpr": 0.14
473
+ }
474
+ },
475
+ "blog": {
476
+ "burstiness_mattr_only": {
477
+ "tp": 0,
478
+ "fp": 10,
479
+ "fn": 0,
480
+ "tn": 40,
481
+ "total": 50,
482
+ "accuracy": 0.8,
483
+ "precision": 0,
484
+ "recall": 0,
485
+ "f1": 0,
486
+ "fpr": 0.2
487
+ },
488
+ "patina_without_ko_diagnostics": {
489
+ "tp": 0,
490
+ "fp": 10,
491
+ "fn": 0,
492
+ "tn": 40,
493
+ "total": 50,
494
+ "accuracy": 0.8,
495
+ "precision": 0,
496
+ "recall": 0,
497
+ "f1": 0,
498
+ "fpr": 0.2
499
+ },
500
+ "patina_current": {
501
+ "tp": 0,
502
+ "fp": 10,
503
+ "fn": 0,
504
+ "tn": 40,
505
+ "total": 50,
506
+ "accuracy": 0.8,
507
+ "precision": 0,
508
+ "recall": 0,
509
+ "f1": 0,
510
+ "fpr": 0.2
511
+ }
512
+ },
513
+ "chat-update": {
514
+ "burstiness_mattr_only": {
515
+ "tp": 0,
516
+ "fp": 0,
517
+ "fn": 0,
518
+ "tn": 50,
519
+ "total": 50,
520
+ "accuracy": 1,
521
+ "precision": 0,
522
+ "recall": 0,
523
+ "f1": 0,
524
+ "fpr": 0
525
+ },
526
+ "patina_without_ko_diagnostics": {
527
+ "tp": 0,
528
+ "fp": 2,
529
+ "fn": 0,
530
+ "tn": 48,
531
+ "total": 50,
532
+ "accuracy": 0.96,
533
+ "precision": 0,
534
+ "recall": 0,
535
+ "f1": 0,
536
+ "fpr": 0.04
537
+ },
538
+ "patina_current": {
539
+ "tp": 0,
540
+ "fp": 2,
541
+ "fn": 0,
542
+ "tn": 48,
543
+ "total": 50,
544
+ "accuracy": 0.96,
545
+ "precision": 0,
546
+ "recall": 0,
547
+ "f1": 0,
548
+ "fpr": 0.04
549
+ }
550
+ },
551
+ "product-doc": {
552
+ "burstiness_mattr_only": {
553
+ "tp": 0,
554
+ "fp": 6,
555
+ "fn": 0,
556
+ "tn": 44,
557
+ "total": 50,
558
+ "accuracy": 0.88,
559
+ "precision": 0,
560
+ "recall": 0,
561
+ "f1": 0,
562
+ "fpr": 0.12
563
+ },
564
+ "patina_without_ko_diagnostics": {
565
+ "tp": 0,
566
+ "fp": 6,
567
+ "fn": 0,
568
+ "tn": 44,
569
+ "total": 50,
570
+ "accuracy": 0.88,
571
+ "precision": 0,
572
+ "recall": 0,
573
+ "f1": 0,
574
+ "fpr": 0.12
575
+ },
576
+ "patina_current": {
577
+ "tp": 0,
578
+ "fp": 6,
579
+ "fn": 0,
580
+ "tn": 44,
581
+ "total": 50,
582
+ "accuracy": 0.88,
583
+ "precision": 0,
584
+ "recall": 0,
585
+ "f1": 0,
586
+ "fpr": 0.12
587
+ }
588
+ },
589
+ "technical-how-to": {
590
+ "burstiness_mattr_only": {
591
+ "tp": 0,
592
+ "fp": 14,
593
+ "fn": 0,
594
+ "tn": 36,
595
+ "total": 50,
596
+ "accuracy": 0.72,
597
+ "precision": 0,
598
+ "recall": 0,
599
+ "f1": 0,
600
+ "fpr": 0.28
601
+ },
602
+ "patina_without_ko_diagnostics": {
603
+ "tp": 0,
604
+ "fp": 17,
605
+ "fn": 0,
606
+ "tn": 33,
607
+ "total": 50,
608
+ "accuracy": 0.66,
609
+ "precision": 0,
610
+ "recall": 0,
611
+ "f1": 0,
612
+ "fpr": 0.34
613
+ },
614
+ "patina_current": {
615
+ "tp": 0,
616
+ "fp": 17,
617
+ "fn": 0,
618
+ "tn": 33,
619
+ "total": 50,
620
+ "accuracy": 0.66,
621
+ "precision": 0,
622
+ "recall": 0,
623
+ "f1": 0,
624
+ "fpr": 0.34
625
+ }
626
+ }
627
+ }
628
+ },
629
+ "deltas": {
630
+ "currentVsBurstinessMattr": {
631
+ "accuracy": 0.115,
632
+ "precision": -0.031,
633
+ "recall": 0.209,
634
+ "f1": 0.126,
635
+ "fpr": 0.211,
636
+ "tp": 340,
637
+ "fp": 99,
638
+ "fn": -340,
639
+ "tn": -99
640
+ },
641
+ "currentVsNoKoDiagnostics": {
642
+ "accuracy": 0.082,
643
+ "precision": -0.031,
644
+ "recall": 0.159,
645
+ "f1": 0.089,
646
+ "fpr": 0.186,
647
+ "tp": 258,
648
+ "fp": 87,
649
+ "fn": -258,
650
+ "tn": -87
651
+ },
652
+ "humanFpCurrentVsNoKoDiagnostics": {
653
+ "fpr": 0,
654
+ "fp": 0
655
+ }
656
+ }
657
+ }