patina-cli 3.11.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 (180) hide show
  1. package/.patina.default.yaml +211 -0
  2. package/CHANGELOG.md +265 -0
  3. package/LICENSE +21 -0
  4. package/README.md +319 -0
  5. package/README_JA.md +254 -0
  6. package/README_KR.md +253 -0
  7. package/README_ZH.md +254 -0
  8. package/SKILL-MAX.md +455 -0
  9. package/SKILL.md +730 -0
  10. package/assets/brand/patina-icon.svg +9 -0
  11. package/assets/brand/patina-logo.svg +17 -0
  12. package/assets/social/patina-before-after.svg +46 -0
  13. package/assets/social/patina-og.svg +31 -0
  14. package/bin/patina.js +9 -0
  15. package/core/scoring.md +657 -0
  16. package/core/standalone-prompt.md +364 -0
  17. package/core/stylometry.md +754 -0
  18. package/core/voice.md +163 -0
  19. package/docs/AUTHENTICATION.md +105 -0
  20. package/docs/AUTHENTICATION_KR.md +105 -0
  21. package/docs/BRANDING.md +37 -0
  22. package/docs/CLI.md +80 -0
  23. package/docs/COMPARISON.md +38 -0
  24. package/docs/COOKBOOK.md +173 -0
  25. package/docs/DEMO.md +40 -0
  26. package/docs/ETHICS.md +27 -0
  27. package/docs/EXAMPLES.md +130 -0
  28. package/docs/EXAMPLES_KR.md +130 -0
  29. package/docs/EXIT-CODES.md +25 -0
  30. package/docs/FAQ.md +67 -0
  31. package/docs/FAQ_KR.md +65 -0
  32. package/docs/FLAG-PARITY.md +53 -0
  33. package/docs/GLOSSARY.md +123 -0
  34. package/docs/PATTERNS-EN.md +718 -0
  35. package/docs/PATTERNS-JA.md +706 -0
  36. package/docs/PATTERNS-KO.md +707 -0
  37. package/docs/PATTERNS-ZH.md +706 -0
  38. package/docs/PATTERNS.md +22 -0
  39. package/docs/ROADMAP.md +315 -0
  40. package/docs/audits/2026-05-deep-research.md +290 -0
  41. package/docs/benchmarks/detector-comparison.json +442 -0
  42. package/docs/benchmarks/detector-comparison.md +65 -0
  43. package/docs/benchmarks/latest.json +988 -0
  44. package/docs/benchmarks/latest.md +112 -0
  45. package/docs/integrations/docker.md +19 -0
  46. package/docs/integrations/github-action.md +59 -0
  47. package/docs/integrations/pre-commit.md +77 -0
  48. package/docs/integrations/release.md +43 -0
  49. package/docs/internal/HARNESS.md +14 -0
  50. package/docs/internal/README.md +14 -0
  51. package/docs/internal/WARP.md +23 -0
  52. package/docs/research/2025-rebaseline-plan.md +89 -0
  53. package/docs/research/ai-human-metrics.md +380 -0
  54. package/docs/social/gstack-cardnews.html +236 -0
  55. package/docs/social/gstack-cardnews.md +88 -0
  56. package/docs/social/gstack-thread.md +106 -0
  57. package/docs/social/patina-launch-copy.md +227 -0
  58. package/docs/superpowers/specs/2026-04-03-meaning-preservation-design.md +299 -0
  59. package/lexicon/ai-en.md +162 -0
  60. package/lexicon/ai-ko.md +159 -0
  61. package/package.json +100 -0
  62. package/patina-max/SKILL.md +523 -0
  63. package/patina-max/composite.py +457 -0
  64. package/patterns/en-communication.md +89 -0
  65. package/patterns/en-content.md +133 -0
  66. package/patterns/en-filler.md +113 -0
  67. package/patterns/en-language.md +163 -0
  68. package/patterns/en-structure.md +173 -0
  69. package/patterns/en-style.md +139 -0
  70. package/patterns/en-viral-hook.md +211 -0
  71. package/patterns/ja-communication.md +101 -0
  72. package/patterns/ja-content.md +153 -0
  73. package/patterns/ja-filler.md +123 -0
  74. package/patterns/ja-language.md +190 -0
  75. package/patterns/ja-structure.md +142 -0
  76. package/patterns/ja-style.md +147 -0
  77. package/patterns/ja-viral-hook.md +216 -0
  78. package/patterns/ko-communication.md +98 -0
  79. package/patterns/ko-content.md +154 -0
  80. package/patterns/ko-filler.md +105 -0
  81. package/patterns/ko-language.md +182 -0
  82. package/patterns/ko-structure.md +147 -0
  83. package/patterns/ko-style.md +146 -0
  84. package/patterns/ko-viral-hook.md +211 -0
  85. package/patterns/zh-communication.md +101 -0
  86. package/patterns/zh-content.md +153 -0
  87. package/patterns/zh-filler.md +118 -0
  88. package/patterns/zh-language.md +173 -0
  89. package/patterns/zh-structure.md +145 -0
  90. package/patterns/zh-style.md +159 -0
  91. package/patterns/zh-viral-hook.md +216 -0
  92. package/profiles/academic.md +53 -0
  93. package/profiles/blog.md +81 -0
  94. package/profiles/casual-conversation.md +105 -0
  95. package/profiles/code-comment.md +104 -0
  96. package/profiles/commit-message.md +99 -0
  97. package/profiles/default.md +62 -0
  98. package/profiles/email.md +52 -0
  99. package/profiles/formal.md +98 -0
  100. package/profiles/instructional.md +80 -0
  101. package/profiles/legal.md +57 -0
  102. package/profiles/marketing.md +56 -0
  103. package/profiles/medical.md +53 -0
  104. package/profiles/narrative.md +79 -0
  105. package/profiles/release-notes.md +98 -0
  106. package/profiles/social.md +56 -0
  107. package/profiles/technical.md +53 -0
  108. package/scripts/benchmark-report.mjs +252 -0
  109. package/scripts/check-release-metadata.mjs +48 -0
  110. package/scripts/detector-comparison.mjs +267 -0
  111. package/scripts/lint.mjs +40 -0
  112. package/scripts/precommit-score.mjs +31 -0
  113. package/scripts/prose-score.mjs +186 -0
  114. package/scripts/update-benchmark-ranges.mjs +108 -0
  115. package/src/api.js +330 -0
  116. package/src/auth.js +105 -0
  117. package/src/backends/claude-cli.js +112 -0
  118. package/src/backends/codex-cli.js +121 -0
  119. package/src/backends/contract.js +21 -0
  120. package/src/backends/gemini-cli.js +135 -0
  121. package/src/backends/index.js +159 -0
  122. package/src/cache.js +106 -0
  123. package/src/cli.js +1280 -0
  124. package/src/commands/doctor.js +229 -0
  125. package/src/commands/init.js +208 -0
  126. package/src/config.js +126 -0
  127. package/src/errors.js +53 -0
  128. package/src/features/index.js +96 -0
  129. package/src/features/lexicon.js +90 -0
  130. package/src/features/segment.js +49 -0
  131. package/src/features/stylometry.js +50 -0
  132. package/src/loader.js +103 -0
  133. package/src/logger.js +70 -0
  134. package/src/manifest.js +162 -0
  135. package/src/max-mode.js +207 -0
  136. package/src/ouroboros.js +233 -0
  137. package/src/output.js +480 -0
  138. package/src/prompt-builder.js +409 -0
  139. package/src/providers.js +100 -0
  140. package/src/scoring.js +531 -0
  141. package/src/security.js +133 -0
  142. package/tests/fixtures/suspect-zones/en/ai/en-ai-01.md +16 -0
  143. package/tests/fixtures/suspect-zones/en/ai/en-ai-02.md +16 -0
  144. package/tests/fixtures/suspect-zones/en/ai/en-ai-03.md +17 -0
  145. package/tests/fixtures/suspect-zones/en/ai/en-ai-04.md +15 -0
  146. package/tests/fixtures/suspect-zones/en/ai/en-ai-05.md +16 -0
  147. package/tests/fixtures/suspect-zones/en/ai/en-ai-06-chat-register.md +16 -0
  148. package/tests/fixtures/suspect-zones/en/natural/en-nat-01.md +15 -0
  149. package/tests/fixtures/suspect-zones/en/natural/en-nat-02.md +15 -0
  150. package/tests/fixtures/suspect-zones/en/natural/en-nat-03.md +15 -0
  151. package/tests/fixtures/suspect-zones/en/natural/en-nat-04.md +15 -0
  152. package/tests/fixtures/suspect-zones/en/natural/en-nat-05.md +15 -0
  153. package/tests/fixtures/suspect-zones/expected-ranges.json +939 -0
  154. package/tests/fixtures/suspect-zones/ja/ai/ja-ai-01.md +11 -0
  155. package/tests/fixtures/suspect-zones/ja/ai/ja-ai-02.md +11 -0
  156. package/tests/fixtures/suspect-zones/ja/ai/ja-ai-03.md +11 -0
  157. package/tests/fixtures/suspect-zones/ja/natural/ja-nat-01.md +11 -0
  158. package/tests/fixtures/suspect-zones/ja/natural/ja-nat-02.md +11 -0
  159. package/tests/fixtures/suspect-zones/ja/natural/ja-nat-03.md +11 -0
  160. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-01.md +14 -0
  161. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-02.md +16 -0
  162. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-03.md +15 -0
  163. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-04.md +15 -0
  164. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-05.md +16 -0
  165. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-06-chat-register.md +16 -0
  166. package/tests/fixtures/suspect-zones/ko/natural/ko-nat-01.md +15 -0
  167. package/tests/fixtures/suspect-zones/ko/natural/ko-nat-02.md +15 -0
  168. package/tests/fixtures/suspect-zones/ko/natural/ko-nat-03.md +15 -0
  169. package/tests/fixtures/suspect-zones/ko/natural/ko-nat-04.md +14 -0
  170. package/tests/fixtures/suspect-zones/ko/natural/ko-nat-05.md +15 -0
  171. package/tests/fixtures/suspect-zones/zh/ai/zh-ai-01.md +11 -0
  172. package/tests/fixtures/suspect-zones/zh/ai/zh-ai-02.md +11 -0
  173. package/tests/fixtures/suspect-zones/zh/ai/zh-ai-03.md +11 -0
  174. package/tests/fixtures/suspect-zones/zh/natural/zh-nat-01.md +11 -0
  175. package/tests/fixtures/suspect-zones/zh/natural/zh-nat-02.md +11 -0
  176. package/tests/fixtures/suspect-zones/zh/natural/zh-nat-03.md +11 -0
  177. package/tests/quality/README.md +121 -0
  178. package/tests/quality/benchmark.mjs +306 -0
  179. package/tests/quality/detectors.manual.example.json +31 -0
  180. package/tests/quality/dogfood.mjs +44 -0
@@ -0,0 +1,299 @@
1
+ # Meaning Preservation System Design
2
+
3
+ **Date**: 2026-04-03
4
+ **Status**: Draft
5
+ **Version**: patina v3.2.0+
6
+ **Approach**: Semantic Anchor + Constraint-Embedded Hybrid (A+C)
7
+
8
+ ## Problem Statement
9
+
10
+ When patina humanizes AI-generated text, the transformation can corrupt the original meaning in two primary ways:
11
+
12
+ 1. **Claim deletion/weakening** — Key facts, conclusions, or arguments are lost or diluted during pattern correction
13
+ 2. **Meaning inversion** — Polarity flips (negative→positive or vice versa) alter the original intent
14
+
15
+ The current pipeline has fidelity scoring, but it is **post-hoc** (measured after humanization, not during). Self-review (Step 5c) is subjective with no structured methodology. There is no mechanism to prevent meaning corruption during pattern application.
16
+
17
+ ## Requirements
18
+
19
+ | Requirement | Source |
20
+ |-------------|--------|
21
+ | Detect claim deletion and polarity inversion | User feedback |
22
+ | Verify meaning at each Phase boundary (not just final output) | User preference |
23
+ | When corruption detected, attempt alternative correction before falling back to original | User preference |
24
+ | Cover full system: pipeline + scoring + pattern packs | User preference |
25
+ | Work across all supported languages (ko, en, ja, zh) | Existing architecture |
26
+ | No external dependencies (local LLM, RAG, etc.) — prompt-only | Architecture constraint |
27
+
28
+ ## Design Overview
29
+
30
+ ```
31
+ Input Text
32
+
33
+
34
+ [Step 4.5] Semantic Anchor Extraction
35
+ │ → Extracts: Claims, Polarity, Causation, Quantifiers, Negations
36
+ │ → Output: Internal anchor list (not shown to user)
37
+
38
+
39
+ [Step 5a] Phase 1 — Structure (existing)
40
+
41
+
42
+ [Step 5a-v] Anchor Verification ← NEW
43
+ │ → Check each anchor: PASS / SOFT FAIL / HARD FAIL
44
+ │ → SOFT FAIL: Retry with constraint-embedded prompt (max 1)
45
+ │ → HARD FAIL: Restore original sentence
46
+
47
+
48
+ [Step 5b] Phase 2 — Sentence/Vocabulary (existing, with constraint injection)
49
+ │ → HIGH-risk patterns include preservation constraint in correction prompt
50
+
51
+
52
+ [Step 5b-v] Anchor Verification ← NEW
53
+ │ → Same logic as 5a-v
54
+ │ → Additional: Check Phase 1 corrections weren't reverted
55
+
56
+
57
+ [Step 5c] Self-Review (ENHANCED)
58
+ │ → Structured checklist replaces subjective question
59
+ │ → Final anchor reconciliation
60
+ │ → MPS calculation
61
+
62
+
63
+ Output + Scores (AI Score, Fidelity, MPS)
64
+ ```
65
+
66
+ ## Section 1: Semantic Anchor Extraction (Step 4.5)
67
+
68
+ ### Anchor Types
69
+
70
+ | Type | What It Captures | Example |
71
+ |------|------------------|---------|
72
+ | **Claim** | Factual assertions, conclusions | "The system failed", "Revenue grew 30%" |
73
+ | **Polarity** | Positive/negative/neutral stance | "has not been verified" → negative |
74
+ | **Causation** | Cause-effect relationships | "A caused B", "Due to X, Y happened" |
75
+ | **Quantifier** | Numbers, degrees, ranges | "p<0.05", "approximately 3x", "most" |
76
+ | **Negation** | Negation expressions | "does not", "impossible", "never" |
77
+
78
+ ### Extraction Rules
79
+
80
+ - Extract only **explicitly stated** meaning. Do not infer implicit or between-the-lines meaning.
81
+ - Maximum **3 anchors per paragraph** to bound verification cost.
82
+ - Each anchor records: `{type, content, paragraph_index, polarity}`
83
+ - Anchor list is internal working memory — never included in user-facing output.
84
+ - Anchors are language-agnostic in structure; the LLM extracts them in the source language.
85
+
86
+ ### When to Skip
87
+
88
+ - Text is ≤1 paragraph and ≤2 sentences: skip extraction, run pipeline normally (overhead not justified).
89
+
90
+ ## Section 2: Phase-Boundary Anchor Verification (Steps 5a-v, 5b-v)
91
+
92
+ ### Verification Logic
93
+
94
+ After each Phase completes, compare the result against the anchor list:
95
+
96
+ ```
97
+ FOR each anchor IN anchor_list:
98
+ IF anchor.content is present AND anchor.polarity is preserved:
99
+ → PASS
100
+ ELSE IF anchor.content is present BUT weakened/ambiguous:
101
+ → SOFT FAIL
102
+ ELSE IF anchor.content is missing OR anchor.polarity is inverted:
103
+ → HARD FAIL
104
+ ```
105
+
106
+ **SOFT FAIL criteria** (anchor is present but weakened):
107
+ - A specific claim became vague: "Revenue grew 30%" → "Revenue grew significantly"
108
+ - A quantifier lost precision: "p<0.05" → "statistically meaningful"
109
+ - A causal link became correlational: "A caused B" → "A is associated with B"
110
+ - A definitive statement became hedged: "The system failed" → "The system may have had issues"
111
+
112
+ **PASS vs SOFT FAIL boundary**: If the anchor's core assertion can still be unambiguously recovered by a reader, it is PASS. If a reader could reasonably interpret the rewritten version differently from the original, it is SOFT FAIL.
113
+
114
+ ### Verdict Actions
115
+
116
+ | Verdict | Condition | Action |
117
+ |---------|-----------|--------|
118
+ | **PASS** | Anchor meaning preserved, polarity intact | Proceed to next step |
119
+ | **SOFT FAIL** | Anchor exists but weakened/ambiguous | Attempt alternative correction (1 retry) |
120
+ | **HARD FAIL** | Anchor deleted or polarity inverted | Restore original sentence for that segment |
121
+
122
+ ### Alternative Correction (Retry on SOFT FAIL)
123
+
124
+ When a SOFT FAIL is detected:
125
+
126
+ 1. Re-apply the same pattern to the **original sentence** (not the failed result)
127
+ 2. Inject constraint into the correction prompt: "The following meaning MUST be preserved: {anchor.content}"
128
+ 3. Verify the retry result against the anchor
129
+ 4. If retry also fails → treat as HARD FAIL (restore original)
130
+ 5. Maximum 1 retry per anchor — no retry loops
131
+
132
+ ### Step 5b-v Additional Check
133
+
134
+ Step 5b-v includes everything in 5a-v plus:
135
+ - **Regression check**: Verify that corrections made in Phase 1 (5a) were not reverted by Phase 2 (5b). Compare 5a output against 5b output for the specific segments that 5a modified.
136
+
137
+ ## Section 3: Constraint-Embedded Pattern Application
138
+
139
+ HIGH semantic-risk patterns inject meaning preservation constraints directly into the correction prompt.
140
+
141
+ ### How It Works
142
+
143
+ Standard pattern correction (current):
144
+ ```
145
+ "Correct this AI pattern: [pattern description]. Rewrite naturally."
146
+ ```
147
+
148
+ Constraint-embedded correction (new, for HIGH-risk patterns):
149
+ ```
150
+ "Correct this AI pattern: [pattern description]. Rewrite naturally.
151
+ CONSTRAINT: The following claims must appear in your rewrite:
152
+ - {anchor_1.content}
153
+ - {anchor_2.content}
154
+ Do not invert, weaken, or omit these claims."
155
+ ```
156
+
157
+ ### When Constraints Are Injected
158
+
159
+ - **HIGH risk patterns**: Always inject constraints for anchors in the affected paragraph
160
+ - **MEDIUM risk patterns**: Inject only if the paragraph contains Polarity or Negation anchors
161
+ - **LOW risk patterns**: No constraint injection (style-only changes, no meaning risk)
162
+
163
+ ## Section 4: Scoring Extension (scoring.md)
164
+
165
+ ### New Metric: Meaning Preservation Score (MPS)
166
+
167
+ Calculated from anchor verification results:
168
+
169
+ ```
170
+ anchor_pass_rate = PASS_count / total_anchor_count
171
+ polarity_preserved = polarity_PASS_count / total_polarity_anchor_count
172
+
173
+ MPS = (anchor_pass_rate × 0.6 + polarity_preserved × 0.4) × 100
174
+ ```
175
+
176
+ **Retry counting rule**: If a SOFT FAIL anchor passes after retry (alternative correction), it counts as PASS in the MPS formula. Only anchors that remain SOFT FAIL or HARD FAIL after all remediation are counted as failures.
177
+
178
+ If no polarity anchors exist, formula simplifies to:
179
+ ```
180
+ MPS = anchor_pass_rate × 100
181
+ ```
182
+
183
+ ### MPS Interpretation
184
+
185
+ | Range | Label | Meaning |
186
+ |-------|-------|---------|
187
+ | 90–100 | Excellent | Full meaning preservation |
188
+ | 70–89 | Good | Minor weakening, acceptable |
189
+ | 50–69 | Warning | Significant anchor loss, review needed |
190
+ | < 50 | Critical | Severe meaning corruption |
191
+
192
+ ### Integration Points
193
+
194
+ **1. `--score` mode output:**
195
+ ```
196
+ AI Score: 23/100 (Good)
197
+ Fidelity: 85/100 (High)
198
+ MPS: 92/100 (Excellent) ← new
199
+ ```
200
+
201
+ **2. Ouroboros loop gating:**
202
+ - Existing: fidelity floor = 70 → rollback if violated
203
+ - New: **MPS floor = 70** → rollback if violated (independent of fidelity)
204
+ - Both floors must pass for an iteration to be accepted
205
+
206
+ **3. MAX mode candidate selection:**
207
+ - Current: Select candidate with lowest AI score
208
+ - New: Select candidate with lowest AI score **WHERE MPS ≥ 70**
209
+ - Candidates with MPS < 70 are disqualified regardless of AI score
210
+
211
+ ## Section 5: Per-Pattern Semantic Risk Classification
212
+
213
+ Each pattern in all pattern packs gains two new fields.
214
+
215
+ ### New Fields
216
+
217
+ ```markdown
218
+ Pattern #N: [Name]
219
+ - Detection: ...
220
+ - Correction: ...
221
+ - Exclusion conditions: ...
222
+ - Semantic Risk: LOW | MEDIUM | HIGH ← new
223
+ - Preservation Note: ... ← new
224
+ ```
225
+
226
+ ### Risk Classification Criteria
227
+
228
+ | Risk | Criteria | Example Patterns |
229
+ |------|----------|------------------|
230
+ | **LOW** | Style/format only, no content change | Excessive bold, emoji overuse, sentence length |
231
+ | **MEDIUM** | Expression change may weaken meaning | Exaggerated modifiers, unnecessary transitions |
232
+ | **HIGH** | Correction risks altering core claims | False Nuance, vague sourcing, Challenge-Prospect template |
233
+
234
+ ### Verification Coupling
235
+
236
+ - **HIGH**: Anchor Verification prioritizes paragraphs affected by this pattern
237
+ - **MEDIUM**: Standard verification
238
+ - **LOW**: Anchor Verification may skip affected paragraphs (efficiency gain)
239
+
240
+ ### Migration
241
+
242
+ All existing patterns across 4 languages (24 pattern files) need classification. This is a one-time effort. Default to MEDIUM if uncertain — it's the safe middle ground.
243
+
244
+ ## Section 6: Enhanced Self-Review (Step 5c)
245
+
246
+ ### Revised 5c Process
247
+
248
+ ```
249
+ Step 5c — Self-Review (Enhanced)
250
+ 1. AI Inspection (existing): "Where does this read like AI?"
251
+ 2. Final Anchor Reconciliation (new):
252
+ - Compare full anchor list against final output
253
+ - Any HARD FAILs not yet resolved (missed by 5a-v/5b-v) → restore original sentences
254
+ - Note: Most HARD FAILs are already handled in 5a-v/5b-v; this is a safety net, not a duplicate pass
255
+ 3. Polarity Inversion Scan (new):
256
+ - Explicit check: "Are there any places where the original's
257
+ negative became positive, or vice versa?"
258
+ - Focus on negation words, comparative statements, conditional clauses
259
+ 4. Regression Check (existing, now specified):
260
+ - Compare Phase 1 output segments against final output
261
+ - If any Phase 1 correction was reverted → re-apply Phase 1 correction
262
+ 5. Final MPS Calculation:
263
+ - Compute MPS from anchor verification results
264
+ - Include in output if --score or --ouroboros mode
265
+ ```
266
+
267
+ ### Key Changes from Current 5c
268
+
269
+ | Aspect | Before | After |
270
+ |--------|--------|-------|
271
+ | AI check | Subjective question | Unchanged (still valuable) |
272
+ | Meaning check | None | Structured anchor reconciliation |
273
+ | Polarity check | None | Explicit polarity inversion scan |
274
+ | Regression check | "Be careful" warning | Specified comparison method |
275
+ | Output | Brief answer | Checklist results + MPS |
276
+
277
+ ## Files Affected
278
+
279
+ | File | Change Type | Description |
280
+ |------|-------------|-------------|
281
+ | `SKILL.md` | Modify | Add Step 4.5, Steps 5a-v/5b-v, enhance Step 5c, add MPS to output |
282
+ | `core/scoring.md` | Modify | Add MPS metric, formulas, interpretation table, integration rules |
283
+ | `patterns/ko-*.md` (6 files) | Modify | Add Semantic Risk + Preservation Note to each pattern |
284
+ | `patterns/en-*.md` (6 files) | Modify | Same |
285
+ | `patterns/ja-*.md` (6 files) | Modify | Same |
286
+ | `patterns/zh-*.md` (6 files) | Modify | Same |
287
+ | `SKILL-MAX.md` | Modify | Add MPS gating to candidate selection |
288
+ | `patina-max/SKILL.md` | Modify | Same MPS gating for installed MAX mode |
289
+
290
+ ## Out of Scope
291
+
292
+ - Local LLM or RAG integration (conflicts with prompt-only architecture)
293
+ - Implicit/between-the-lines meaning preservation (too subjective, would cause over-conservatism)
294
+ - Automated pattern risk classification (manual one-time classification is more reliable)
295
+ - User-facing anchor display (anchors are internal working memory only)
296
+
297
+ ## Version Sync
298
+
299
+ All version fields in `SKILL.md`, `SKILL-MAX.md`, `patina-max/SKILL.md`, `.patina.default.yaml`, `README.md` must be bumped together per existing CLAUDE.md rules.
@@ -0,0 +1,162 @@
1
+ ---
2
+ pack: ai-lexicon-en
3
+ language: en
4
+ version: 1.0.0
5
+ entries: 108
6
+ ---
7
+
8
+ # AI-favored vocabulary (English)
9
+
10
+ Phrases that AI assistants reach for far more often than human writers, but
11
+ which the 28-pattern catalog does not already enumerate. These extend the
12
+ language/content/style packs without overlapping them.
13
+
14
+ The catalog already lists 30 vocabulary words in `en-language.md` Pattern 7
15
+ (delve, tapestry, multifaceted, leverage, etc.) and the promotional/emphasis
16
+ adjectives in `en-content.md` Patterns 1 and 4. This lexicon adds words and
17
+ phrases beyond those — modal scaffolding, register tells, and corporate
18
+ abstractions that the catalog has not yet named.
19
+
20
+ Match policy:
21
+ - Strict matches use case-insensitive whole-word match
22
+ - Multi-word phrases use case-insensitive substring match
23
+ - A trailing `s` or `ing` form counts as the same entry; do not double-count
24
+
25
+ ## Strict matches (case-insensitive whole word)
26
+
27
+ - transformative
28
+ - cutting-edge
29
+ - state-of-the-art
30
+ - bespoke
31
+ - curated
32
+ - dynamic
33
+ - vibrant
34
+ - seamless
35
+ - seamlessly
36
+ - streamline
37
+ - streamlined
38
+ - empower
39
+ - empowering
40
+ - enable
41
+ - enabling
42
+ - align
43
+ - alignment
44
+ - pivot
45
+ - ecosystem
46
+ - workflow
47
+ - skillset
48
+ - toolkit
49
+ - framework
50
+ - modalities
51
+ - dimensions
52
+ - harness
53
+ - unlock
54
+ - unleash
55
+ - bolster
56
+ - amplify
57
+ - accelerate
58
+ - catalyst
59
+ - inflection
60
+ - meaningful
61
+ - impactful
62
+ - actionable
63
+ - scalable
64
+ - sustainable
65
+ - inclusive
66
+ - ethical
67
+ - thoughtful
68
+ - compelling
69
+ - thrive
70
+ - thriving
71
+ - elevate
72
+ - elevated
73
+ - reimagine
74
+ - rethink
75
+ - envision
76
+ - prioritize
77
+
78
+ ## Multi-word phrases (case-insensitive substring)
79
+
80
+ - a wide range of
81
+ - a wide array of
82
+ - a host of
83
+ - a plethora of
84
+ - a myriad of
85
+ - in today's
86
+ - in the modern era
87
+ - in the digital age
88
+ - in the age of
89
+ - ever-evolving
90
+ - ever-changing
91
+ - rapidly evolving
92
+ - rapidly changing
93
+ - fast-paced
94
+ - the world of
95
+ - the realm of
96
+ - the landscape of
97
+ - the future of
98
+ - unlock the potential
99
+ - realize the potential
100
+ - harness the power
101
+ - pave the way
102
+ - usher in
103
+ - a new era
104
+ - a new chapter
105
+ - a new frontier
106
+ - gain a deeper understanding
107
+ - gain valuable insights
108
+ - glean insights
109
+ - valuable insights
110
+ - key insights
111
+ - key takeaways
112
+ - key drivers
113
+ - driving force
114
+ - play a crucial role
115
+ - play a key role
116
+ - plays a vital role
117
+ - pave the path
118
+ - bridge the gap
119
+ - close the gap
120
+ - at the forefront
121
+ - at the heart of
122
+ - at its core
123
+ - end-to-end
124
+ - holistic approach
125
+ - comprehensive approach
126
+ - best practices
127
+ - continuous improvement
128
+ - to ensure that
129
+ - it is essential to
130
+ - a deeper dive
131
+ - under the hood
132
+ - the bigger picture
133
+ - a robust framework
134
+ - on the other hand
135
+ - the digital landscape
136
+ - the regulatory landscape
137
+ - the competitive landscape
138
+
139
+ ## Notes on each entry (why AI-favored)
140
+
141
+ Single words above cluster around three habits the catalog under-covers:
142
+ modal scaffolding ("empower", "enable", "harness", "unlock"), abstraction
143
+ nouns AI defaults to over concrete ones ("ecosystem", "workflow", "toolkit",
144
+ "framework", "modalities", "dimensions"), and self-flattering quality
145
+ adjectives ("meaningful", "impactful", "thoughtful", "compelling"). None
146
+ duplicate `en-language.md` Pattern 7's word list — they extend it.
147
+
148
+ Calibration drop list (v3.7 eval, see core/stylometry.md §16):
149
+ "intersection", "principles", "mindset", "iterative", "responsible",
150
+ "methodologies", "redefine", "accessible", "equitable", "one of the most",
151
+ "in conjunction with", "the power of" — fired more on Wikipedia/HC3 human
152
+ than on HC3 ChatGPT. Do not re-add without re-running the eval.
153
+
154
+ The phrases above are templated openers and closers AI uses to package
155
+ ordinary content as significant: "in today's [adjective] world", "the
156
+ ever-evolving landscape of X", "unlock the potential of Y", "play a crucial
157
+ role in Z". A single hit is forgivable; density is the signal — that is
158
+ what the density-per-1000-tokens threshold measures.
159
+
160
+ Adding entries: prefer phrases AI uses to scaffold significance over
161
+ content. Verify against HC3 ChatGPT samples before shipping. If a phrase
162
+ also fires in HC3 human at similar rate, drop it.
@@ -0,0 +1,159 @@
1
+ ---
2
+ pack: ai-lexicon-ko
3
+ language: ko
4
+ version: 1.1.0
5
+ entries: 102
6
+ ---
7
+
8
+ # AI-favored 어휘 (Korean)
9
+
10
+ 한국어 AI 텍스트가 사람 글보다 훨씬 자주 쓰는 표현 모음. `ko-*.md` 28-패턴 카탈로그가
11
+ 명시적으로 잡지 못하는 어휘를 보강하는 용도다. 카탈로그와 중복되지 않도록 추렸다.
12
+
13
+ 기존 카탈로그가 다루는 어휘:
14
+ - `ko-language.md` 패턴 7: 다양한, 활발한, 혁신적인, 체계적인, 지속적인, 효과적인, 적극적인,
15
+ 심층적인, 유기적인, 종합적인, 선도적인, 아울러, 나아가, 이를 통해, 도모하다, 촉진하다 등
16
+ - `ko-language.md` 패턴 8: ~적 접미사 (혁신적, 체계적, 효과적, 효율적 등)
17
+ - `ko-style.md` 패턴 13: 이를 통해, 이러한 점에서, 이러한 맥락에서, 이에 따라 등 연결 표현
18
+ - `ko-style.md` 패턴 18: 도모하다, 추진하다, 강구하다, 본 사업, 관계 기관 등 공문서 어휘
19
+ - `ko-content.md` 패턴 1: ~의 핵심적 역할, ~에 있어 중대한 의의, 패러다임 전환 등 강조 표현
20
+ - `ko-content.md` 패턴 4: 수려한, 풍부한, 활기찬, 매혹적인 등 홍보성 형용사
21
+
22
+ 이 lexicon은 위 28-패턴이 명명하지 못한 영역만 다룬다.
23
+
24
+ 매칭 규칙:
25
+ - "Strict matches" 항목: 전체 단어/어절 단위 (대소문자 무시; 한국어는 의미 없음)
26
+ - "Multi-word phrases" 항목: 부분 문자열 매칭 (조사/어미 변형 자연 포착)
27
+ - 어절 변형(예: `재편하다` ↔ `재편한다`)은 phrase 매칭으로 흡수
28
+
29
+ ## Strict matches (whole word/phrase)
30
+
31
+ - 살펴보다
32
+ - 살펴보면
33
+ - 알아보다
34
+ - 알아보자
35
+ - 짚어보다
36
+ - 들여다보면
37
+ - 풀어내다
38
+ - 풀어내며
39
+ - 일컫다
40
+ - 자리매김
41
+ - 자리잡다
42
+ - 자리잡은
43
+ - 부각되다
44
+ - 부각하다
45
+ - 모색하다
46
+ - 가속화
47
+ - 고도화
48
+ - 본격화
49
+ - 활성화
50
+ - 정교화
51
+ - 차별화
52
+ - 다변화
53
+ - 가시화
54
+ - 일환
55
+ - 행보
56
+ - 양상
57
+ - 면모
58
+ - 측면
59
+ - 양립
60
+ - 추세
61
+ - 흐름
62
+ - 한편으로는
63
+ - 더 나아가
64
+ - 한걸음 더
65
+ - 핵심
66
+ - 본질
67
+ - 토대
68
+ - 기반
69
+ - 환경
70
+ - 생태계
71
+ - 패러다임
72
+
73
+ # v1.1 추가 — 외부 검증 마이닝 결과 (2026-05-04)
74
+ # ko/AI 100 paragraphs (Claude 생성) vs NamuWiki human 100 paragraphs 차별 빈도 분석.
75
+ # 어절 단위 doc-frequency 비율이 ≥4×, 그리고 도메인 아티팩트(가면라이더, 한국, 시리즈 등)가 아닌 register marker 만 채택.
76
+ - 평가된다
77
+ - 꼽힌다
78
+ - 가리킨다
79
+ - 사례로
80
+ - 다수의
81
+ - 알려져
82
+ - 일컬어진다
83
+ - 평가받다
84
+
85
+ ## Multi-word phrases (substring)
86
+
87
+ - ~의 가능성을 열다
88
+ - ~의 지평을 넓히다
89
+ - ~의 길을 열다
90
+ - ~의 토대를 다지다
91
+ - ~의 발판을 마련하다
92
+ - ~의 새로운 장
93
+ - ~의 새 지평
94
+ - 새로운 가능성을
95
+ - 무한한 가능성
96
+ - 다채로운 매력
97
+ - 매력적인 요소
98
+ - 깊이 있는 통찰
99
+ - 통찰을 제공
100
+ - 통찰을 얻다
101
+ - 시사점을 제공
102
+ - 시사하는 바
103
+ - ~을(를) 시사한다
104
+ - 의미를 지닌다
105
+ - 의미가 있다
106
+ - 큰 의미를
107
+ - 중요한 의미
108
+ - 큰 영향을 미치다
109
+ - 깊은 영감을
110
+ - 영감을 주다
111
+ - 영감을 받다
112
+ - 새로운 영감
113
+ - 화두로 떠오르다
114
+ - 주목받고 있다
115
+ - 떠오르고 있다
116
+ - 자리잡고 있다
117
+ - 진화하고 있다
118
+ - 변모하고 있다
119
+ - 부상하고 있다
120
+ - 가속화되고 있다
121
+ - 본격화되고 있다
122
+ - 시너지를
123
+ - 시너지 효과
124
+ - 인사이트를
125
+ - 패러다임의
126
+ - 한 단계 도약
127
+ - 한 차원 높은
128
+ - 보다 한층
129
+ - 새로운 국면
130
+ - 깊이를 더하다
131
+ - 풍성하게 하다
132
+ - 풍성한 경험
133
+ - 차원을 넘어
134
+ - 단순한 ~을 넘어
135
+ - 단순한 ~이 아닌
136
+
137
+ # v1.1 추가 — 외부 검증 마이닝 결과 (2026-05-04)
138
+ # 어절 bi-gram 으로 AI 측에서 ≥6× doc-frequency, NamuWiki human 에서 ≤1 인 의례적 phrase.
139
+ - 가운데 하나로
140
+ - 자리 잡았다
141
+ - 알려져 있다
142
+ - ~의 사례로
143
+
144
+ ## Notes on each entry (why AI-favored)
145
+
146
+ 위 단어들은 한국어 AI 글이 "구체 묘사" 대신 "추상 명명"으로 도피할 때 쓰는 어휘다.
147
+ 사람은 행동·수치·일화로 쓰지만, AI 는 `자리매김`, `부각`, `행보`, `면모`, `양상`,
148
+ `측면`, `토대`, `기반`, `환경`, `생태계` 같은 추상명사로 채운다. `~화` 접미사
149
+ (`고도화`, `본격화`, `활성화`, `정교화`, `차별화`, `다변화`, `가시화`)도 동일 — 동작을
150
+ 명사로 굳혀 무게감을 만든다. 28-패턴 #8 `~적` 접미사와는 다른 축이다.
151
+
152
+ phrase 항목은 AI 가 단락 도입·결론에서 쓰는 의례적 구문이다. `~의 지평을 넓히다`,
153
+ `~의 새 지평`, `무한한 가능성`, `시사하는 바` 등은 사람이 일상 글에서 거의 쓰지
154
+ 않는 슬로건이다. `시너지`, `인사이트`, `패러다임` 같은 외래어는 `ko-structure.md`
155
+ #28 (외래어 남발) 과 일부 겹치지만, 거기에서는 IT 비즈니스 일반 용어를 다루고
156
+ 여기서는 의미 부풀리기 용도의 빈출 표현만 추렸다.
157
+
158
+ 엔트리 추가 기준: NamuWiki/HC3 한국어 사람 텍스트와 비교해 AI 측이 명백히 자주
159
+ 쓰는 어휘만. 사람 텍스트에서도 비슷한 빈도면 빼야 한다.