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.
- package/.patina.default.yaml +211 -0
- package/CHANGELOG.md +265 -0
- package/LICENSE +21 -0
- package/README.md +319 -0
- package/README_JA.md +254 -0
- package/README_KR.md +253 -0
- package/README_ZH.md +254 -0
- package/SKILL-MAX.md +455 -0
- package/SKILL.md +730 -0
- package/assets/brand/patina-icon.svg +9 -0
- package/assets/brand/patina-logo.svg +17 -0
- package/assets/social/patina-before-after.svg +46 -0
- package/assets/social/patina-og.svg +31 -0
- package/bin/patina.js +9 -0
- package/core/scoring.md +657 -0
- package/core/standalone-prompt.md +364 -0
- package/core/stylometry.md +754 -0
- package/core/voice.md +163 -0
- package/docs/AUTHENTICATION.md +105 -0
- package/docs/AUTHENTICATION_KR.md +105 -0
- package/docs/BRANDING.md +37 -0
- package/docs/CLI.md +80 -0
- package/docs/COMPARISON.md +38 -0
- package/docs/COOKBOOK.md +173 -0
- package/docs/DEMO.md +40 -0
- package/docs/ETHICS.md +27 -0
- package/docs/EXAMPLES.md +130 -0
- package/docs/EXAMPLES_KR.md +130 -0
- package/docs/EXIT-CODES.md +25 -0
- package/docs/FAQ.md +67 -0
- package/docs/FAQ_KR.md +65 -0
- package/docs/FLAG-PARITY.md +53 -0
- package/docs/GLOSSARY.md +123 -0
- package/docs/PATTERNS-EN.md +718 -0
- package/docs/PATTERNS-JA.md +706 -0
- package/docs/PATTERNS-KO.md +707 -0
- package/docs/PATTERNS-ZH.md +706 -0
- package/docs/PATTERNS.md +22 -0
- package/docs/ROADMAP.md +315 -0
- package/docs/audits/2026-05-deep-research.md +290 -0
- package/docs/benchmarks/detector-comparison.json +442 -0
- package/docs/benchmarks/detector-comparison.md +65 -0
- package/docs/benchmarks/latest.json +988 -0
- package/docs/benchmarks/latest.md +112 -0
- package/docs/integrations/docker.md +19 -0
- package/docs/integrations/github-action.md +59 -0
- package/docs/integrations/pre-commit.md +77 -0
- package/docs/integrations/release.md +43 -0
- package/docs/internal/HARNESS.md +14 -0
- package/docs/internal/README.md +14 -0
- package/docs/internal/WARP.md +23 -0
- package/docs/research/2025-rebaseline-plan.md +89 -0
- package/docs/research/ai-human-metrics.md +380 -0
- package/docs/social/gstack-cardnews.html +236 -0
- package/docs/social/gstack-cardnews.md +88 -0
- package/docs/social/gstack-thread.md +106 -0
- package/docs/social/patina-launch-copy.md +227 -0
- package/docs/superpowers/specs/2026-04-03-meaning-preservation-design.md +299 -0
- package/lexicon/ai-en.md +162 -0
- package/lexicon/ai-ko.md +159 -0
- package/package.json +100 -0
- package/patina-max/SKILL.md +523 -0
- package/patina-max/composite.py +457 -0
- package/patterns/en-communication.md +89 -0
- package/patterns/en-content.md +133 -0
- package/patterns/en-filler.md +113 -0
- package/patterns/en-language.md +163 -0
- package/patterns/en-structure.md +173 -0
- package/patterns/en-style.md +139 -0
- package/patterns/en-viral-hook.md +211 -0
- package/patterns/ja-communication.md +101 -0
- package/patterns/ja-content.md +153 -0
- package/patterns/ja-filler.md +123 -0
- package/patterns/ja-language.md +190 -0
- package/patterns/ja-structure.md +142 -0
- package/patterns/ja-style.md +147 -0
- package/patterns/ja-viral-hook.md +216 -0
- package/patterns/ko-communication.md +98 -0
- package/patterns/ko-content.md +154 -0
- package/patterns/ko-filler.md +105 -0
- package/patterns/ko-language.md +182 -0
- package/patterns/ko-structure.md +147 -0
- package/patterns/ko-style.md +146 -0
- package/patterns/ko-viral-hook.md +211 -0
- package/patterns/zh-communication.md +101 -0
- package/patterns/zh-content.md +153 -0
- package/patterns/zh-filler.md +118 -0
- package/patterns/zh-language.md +173 -0
- package/patterns/zh-structure.md +145 -0
- package/patterns/zh-style.md +159 -0
- package/patterns/zh-viral-hook.md +216 -0
- package/profiles/academic.md +53 -0
- package/profiles/blog.md +81 -0
- package/profiles/casual-conversation.md +105 -0
- package/profiles/code-comment.md +104 -0
- package/profiles/commit-message.md +99 -0
- package/profiles/default.md +62 -0
- package/profiles/email.md +52 -0
- package/profiles/formal.md +98 -0
- package/profiles/instructional.md +80 -0
- package/profiles/legal.md +57 -0
- package/profiles/marketing.md +56 -0
- package/profiles/medical.md +53 -0
- package/profiles/narrative.md +79 -0
- package/profiles/release-notes.md +98 -0
- package/profiles/social.md +56 -0
- package/profiles/technical.md +53 -0
- package/scripts/benchmark-report.mjs +252 -0
- package/scripts/check-release-metadata.mjs +48 -0
- package/scripts/detector-comparison.mjs +267 -0
- package/scripts/lint.mjs +40 -0
- package/scripts/precommit-score.mjs +31 -0
- package/scripts/prose-score.mjs +186 -0
- package/scripts/update-benchmark-ranges.mjs +108 -0
- package/src/api.js +330 -0
- package/src/auth.js +105 -0
- package/src/backends/claude-cli.js +112 -0
- package/src/backends/codex-cli.js +121 -0
- package/src/backends/contract.js +21 -0
- package/src/backends/gemini-cli.js +135 -0
- package/src/backends/index.js +159 -0
- package/src/cache.js +106 -0
- package/src/cli.js +1280 -0
- package/src/commands/doctor.js +229 -0
- package/src/commands/init.js +208 -0
- package/src/config.js +126 -0
- package/src/errors.js +53 -0
- package/src/features/index.js +96 -0
- package/src/features/lexicon.js +90 -0
- package/src/features/segment.js +49 -0
- package/src/features/stylometry.js +50 -0
- package/src/loader.js +103 -0
- package/src/logger.js +70 -0
- package/src/manifest.js +162 -0
- package/src/max-mode.js +207 -0
- package/src/ouroboros.js +233 -0
- package/src/output.js +480 -0
- package/src/prompt-builder.js +409 -0
- package/src/providers.js +100 -0
- package/src/scoring.js +531 -0
- package/src/security.js +133 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-01.md +16 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-02.md +16 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-03.md +17 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-04.md +15 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-05.md +16 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-06-chat-register.md +16 -0
- package/tests/fixtures/suspect-zones/en/natural/en-nat-01.md +15 -0
- package/tests/fixtures/suspect-zones/en/natural/en-nat-02.md +15 -0
- package/tests/fixtures/suspect-zones/en/natural/en-nat-03.md +15 -0
- package/tests/fixtures/suspect-zones/en/natural/en-nat-04.md +15 -0
- package/tests/fixtures/suspect-zones/en/natural/en-nat-05.md +15 -0
- package/tests/fixtures/suspect-zones/expected-ranges.json +939 -0
- package/tests/fixtures/suspect-zones/ja/ai/ja-ai-01.md +11 -0
- package/tests/fixtures/suspect-zones/ja/ai/ja-ai-02.md +11 -0
- package/tests/fixtures/suspect-zones/ja/ai/ja-ai-03.md +11 -0
- package/tests/fixtures/suspect-zones/ja/natural/ja-nat-01.md +11 -0
- package/tests/fixtures/suspect-zones/ja/natural/ja-nat-02.md +11 -0
- package/tests/fixtures/suspect-zones/ja/natural/ja-nat-03.md +11 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-01.md +14 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-02.md +16 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-03.md +15 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-04.md +15 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-05.md +16 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-06-chat-register.md +16 -0
- package/tests/fixtures/suspect-zones/ko/natural/ko-nat-01.md +15 -0
- package/tests/fixtures/suspect-zones/ko/natural/ko-nat-02.md +15 -0
- package/tests/fixtures/suspect-zones/ko/natural/ko-nat-03.md +15 -0
- package/tests/fixtures/suspect-zones/ko/natural/ko-nat-04.md +14 -0
- package/tests/fixtures/suspect-zones/ko/natural/ko-nat-05.md +15 -0
- package/tests/fixtures/suspect-zones/zh/ai/zh-ai-01.md +11 -0
- package/tests/fixtures/suspect-zones/zh/ai/zh-ai-02.md +11 -0
- package/tests/fixtures/suspect-zones/zh/ai/zh-ai-03.md +11 -0
- package/tests/fixtures/suspect-zones/zh/natural/zh-nat-01.md +11 -0
- package/tests/fixtures/suspect-zones/zh/natural/zh-nat-02.md +11 -0
- package/tests/fixtures/suspect-zones/zh/natural/zh-nat-03.md +11 -0
- package/tests/quality/README.md +121 -0
- package/tests/quality/benchmark.mjs +306 -0
- package/tests/quality/detectors.manual.example.json +31 -0
- 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.
|
package/lexicon/ai-en.md
ADDED
|
@@ -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.
|
package/lexicon/ai-ko.md
ADDED
|
@@ -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
|
+
쓰는 어휘만. 사람 텍스트에서도 비슷한 빈도면 빼야 한다.
|