@tienne/gestalt 0.113.0 → 0.114.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/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tienne/gestalt",
3
- "version": "0.113.0",
3
+ "version": "0.114.0",
4
4
  "description": "TypeScript AI Development Harness - Gestalt psychology-driven requirement clarification",
5
5
  "repository": {
6
6
  "type": "git",
@@ -130,6 +130,7 @@
130
130
  | D-7 | 변환 공식 "X에서 Y로" 반복 | S2 | 한 번만, 나머지는 일반 서술 |
131
131
  | D-8 | 과잉 자책, 감정 과장 반응("제일 아팠습니다·뼈아픕니다·부끄럽습니다·뜨끔했습니다") | S1 | 짧은 수긍으로 환원한다("아 그렇네요", "이거 놓쳤네요"). 사실 서술은 그대로 두고 감정 수식만 뺀다. D-4(hype 어휘)의 뒷면이다 — 칭찬 쪽만 막으면 같은 충동이 자책 쪽으로 옮겨간다. 남긴 의견들 사이에 "제일"로 순위를 매기는 것도 여기 해당한다 |
132
132
  | D-9 | 추상명사에 이동 동사("방향도 맞게 갔습니다", "결론이 그쪽으로 갔어요") | S2 / **대화·리뷰 S1** | 방향, 결론, 판단, 논의가 스스로 움직이게 두지 않는다. 사람이나 대상을 주어로 되돌린다("맞는 방향 같아요", "그렇게 결론 냈어요"). D-5 의인화 추상 주어의 사촌이다 |
133
+ | D-10 | 사물의 지나친 의인화 — 코드나 사물, 대화를 주어로 세우고 생물의 갑작스러운 몸짓 동사를 붙임 ("함수가 에러를 삼켜버린다", "대화가 제 꼬리를 물고 있다") | S2 / **대화·리뷰 S1** | 실제로 일어나는 일을 동사로 쓴다 ("함수가 에러를 잡고 아무 처리 없이 넘긴다", "같은 얘기가 되풀이되고 있다"). 몸짓 비유는 읽는 사람이 그림을 실제 동작으로 다시 옮겨야 해서 바로 안 읽힌다. **업계에서 쓰는 말이어도 대상이다** — "에러를 삼킨다"에는 잡아서 버리는지, 로그만 남기는지가 안 남는다. **운영체제나 명세가 상태 이름으로 정해 둔 말은 대상이 아니다** ("프로세스가 죽었다", "스레드가 깨어난다"). **D-5와는 주어로 갈린다** — D-5는 기술, 시대 같은 추상 주어이고 D-10은 함수, 요청, 대화처럼 가리킬 수 있는 대상이다. 사람 주어로 바꾸는 D-5 처방은 여기 안 맞는다. **D-9와는 동사로 갈린다** — 가다, 오다 같은 이동은 D-9이고 삼키다, 물다, 뱉다 같은 몸짓은 D-10이다. **F-10과는 누가 움직이냐로 갈린다** — F-10은 사람의 관용구 동작을 코드 목적어에 씌운 꼴이고 D-10은 사물이 스스로 그 동작을 하는 꼴이다 |
133
134
 
134
135
  ## E. 리듬, 종결어미
135
136
 
@@ -139,6 +140,7 @@
139
140
  | E-2 | 동일 종결어미 "~다" 4문장 연속 + 진행형 "~고 있다" 자동 매핑 | S2 | "~었다·~ㄴ다·~는다·~기 마련이다·~ㄹ 것이다" 등 다양화. "~고 있다" 단순 시제 환원 가능 시 환원("읽고 있다" → "읽는다") |
140
141
  | E-7 | 청자 경어법 4단계(해라/하게/하오/해요/합쇼) 일관성 손실 (대화·구어 한정) | S2 | 한 단락 내 혼용 금지, 격식 일관 (김혜영 2019, 추정) |
141
142
  | E-8 | 관형형 + 의존명사 종결 — 서술어 없이 "짚을 것", "고려할 점", "주의 사항"으로 문장을 끊음 | S2 / **대화·리뷰 S1** | 서술어를 붙여 문장을 끝낸다("두 가지 짚을 것" → "짚어볼 게 있습니다"). 목차 항목처럼 끊으면 사람이 한 말로 안 읽힌다. **헤딩, 표 셀, 체크리스트 항목, 문단을 여는 볼드 도입구는 대상이 아니다** — 거기서는 명사구 종결이 정상 문법이다. **PR 제목과 커밋 제목도 대상이 아니다** — 목록에서 한 줄로 훑는 자리라 개조식이 기본이고, 이 레포는 오히려 서술형 종결을 안 쓴다 (`author-voice.md`의 "제목은 개조식, 본문은 서술체" 절). 본문은 그대로 이 룰을 받는다. **볼드 예외는 규범, 참조 문서에서 문단 안 소제목 역할을 하는 자리에만 준다** — 리뷰 코멘트와 대화에서는 볼드를 씌워도 본문 산문으로 본다. 서식으로만 예외를 주면 "두 가지 짚을 것"을 볼드 처리해 그대로 통과시키게 된다. 본문 산문과 대화만 본다. 예외가 전부 문맥이라 줄 단위 정규식으로는 못 가르고, 그래서 탐지기가 없다. G-4와 겹치면 서술어를 붙이되 판단이면 화자도 함께 남긴다 |
143
+ | E-9 | 짝이 되는 말 띄워놓기 — 주어와 서술어, 수식어와 꾸밈받는 말 사이에 긴 절을 끼워 문장 앞부분을 기억한 채 끝까지 읽게 함 | S2 / **대화·리뷰 S1** | 짝을 붙인다. 끼어든 절은 앞뒤 문장으로 빼거나 문장을 둘로 나눈다 ("이 함수는 요청이 들어오면 캐시를 먼저 보고 없으면 DB를 읽은 뒤 결과를 다시 캐시에 쓰는데 너무 느리다" → "이 함수는 너무 느리다. 요청마다 캐시를 보고 없으면 DB를 읽은 뒤 다시 캐시에 쓰기 때문이다"). 짝 사이에 절이 둘 이상 끼거나 15어절을 넘으면 본다. **A-18과는 무엇이 길어지냐로 갈린다** — A-18은 명사 앞 수식 자체가 길어지는 꼴이고 E-9는 짝 사이가 벌어지는 꼴이다. 둘이 겹치면 문장을 나누는 처방 하나로 같이 푼다. 문장 구조를 봐야 해서 탐지기가 없다 |
142
144
 
143
145
  ## F. 과도한 수식, 중복
144
146
 
@@ -148,7 +150,7 @@
148
150
  |---|---|---|---|
149
151
  | F-4 | 한자어 명사화 -성/-적/-화 + 영어 명사화 -tion/-ment/-ness/-ity 누적 (한 글 12회+) | S2 / **대화·리뷰 S1** | 동사·형용사 어근으로 환원("the implementation of the policy" → "정책 시행" 또는 "정책을 시행하기") (탐지기가 없는 이유는 아래 [측정 근거](#측정-근거)) |
150
152
  | F-5 | "~적 N" 추상 체인 ("전략적 함의", "실천적 기반") | S2 / **대화·리뷰 S1** | 명사+명사 또는 풀어쓰기("전략 함의", "실천의 기반") |
151
- | F-6 | 복합명사 압축 — 명사구를 조사·동사 없이 이어붙여 개념을 뭉침 ("시안 정합 버그픽스", "유지보수성 개선 작업", "권한 체크 로직") | S2 / **대화·리뷰 S1** | 동사·조사로 풀어 서술 ("디자인 시안과 다르게 렌더링되던 문제", "나중에 유지보수하기 편하게"). 사람은 압축 명사구 대신 무엇을 왜 했는지 풀어 말한다 |
153
+ | F-6 | 복합명사 압축 — 명사를 조사·동사 없이 3개 이상 이어붙여 개념을 뭉침 ("시안 정합 버그픽스", "공포 영화 배경음악 생성기", "권한 체크 로직") | S2 / **대화·리뷰 S1** | 동사·조사로 풀어 서술 ("디자인 시안과 다르게 렌더링되던 문제", "공포 영화에 깔 배경음악을 만들어주는 도구"). 사람은 압축 명사구 대신 무엇을 왜 했는지 풀어 말한다. 명사끼리 무슨 관계인지(누가, 무엇을, 어디에)를 읽는 사람이 맞춰야 해서 셋째 명사부터 바로 안 읽힌다. 두 개짜리 굳은 합성어("배경음악", "코드 리뷰")는 대상이 아니다 |
152
154
  | F-7 | 기술·이공계 비유 명사를 일상 대화에 그대로 (증류·배선·결정화·평탄화·오케스트레이션·파이프라인화·축 등, 화학·전기·수학 어휘의 비유 차용) | S2 / **대화·리뷰 S1** | 일상 동사·명사로 환원 (증류 → "추려내다/뽑아내다", 배선 → "연결하다/걸어두다", 결정화 → "정리하다", 평탄화 → "밋밋하게 만들다", **축 → "측면"**·"기준"). 문법은 멀쩡해 룰 매칭이 안 되지만 사람은 대화에서 안 쓴다. "네 축을 잰다"가 아니라 "4가지 측면에서 측정한다". **예외는 그 프로젝트가 개념에 붙인 이름일 때만이고, 그 개념을 다루는 자리에서만이다** — 게슈탈트의 "스펙 결정화"는 `similarity-crystallizer` 에이전트 이름이자 인터뷰→Spec 변환의 정의라서 두지만, 같은 말을 지라 티켓 작성처럼 무관한 자리에 끌어다 쓰면 F-7이다. **탐지기는 "결정화"를 자리 구분 없이 건다** — 개념을 다루는 자리인지 못 가르므로 걸린 자리는 사람이 이 기준으로 다시 본다. 코드의 "파이프라인" 자체, 그래프의 x축도 같은 기준. 테스트를 자물쇠에 빗댄 "잠그다"는 방향이 반대라 F-10이 본다 |
153
155
  | F-8 | 추상명사에 물리 측량 동사("근거를 재봤는데", "판단을 재보고 있다", "근거를 재본 결과", "의견을 달아봤는데") | S2 / **대화·리뷰 S1** | 저울에 올린 게 아니라 검토한 것이다. 사람이 하는 행위 동사로 되돌린다("근거를 확인해봤는데", "의견을 검토해봤는데"). F-7 물리 동사 도피의 사촌이라 목적어가 근거, 의견, 판단, 영향, 의미, 가치, 리스크인 자리만 본다 — "온도를 재봤는데"는 대상이 아니다 |
154
156
  | F-9 | 결함이나 코드 상태, 그 결함의 원인 관계를 비유 명사로 뭉개 부름 ("맨몸 호출", "벌거벗은 API", "뿌리가 하나다") | S2 / **대화·리뷰 S1** | 무엇이 빠졌고 무엇이 틀렸는지 그대로 쓴다 ("맨몸 호출" → "접두 객체 없이 함수 이름만 적혀 있다"). 별칭은 검색이 안 되고 처음 읽는 사람이 못 알아보고 답글에서 재생산돼 팀 어휘로 굳는다. **예외는 남이 정의해 둔 이름을 그 뜻 그대로 쓸 때다** — "널 포인터", "데드락", "고아 노드"처럼 명세나 교과서에 뜻이 박힌 말이고 F-6으로도 안 넘긴다. 다른 결함에 비유로 얹으면 예외가 아니고 팀에서 몇 번 쓰였다는 것도 아니다 — 그렇게 열면 답글에 한 번 재생산된 별칭이 곧바로 빠져나간다. **F-7과 방향이 반대다** — F-7은 기술 비유를 일상 말로 되돌리고 F-9는 일상 비유를 기술 대상에 씌운 쪽을 본다. **원인 관계를 부르는 비유도 같은 자리다** — "뿌리가 하나다"는 원인이 같다는 말을 뿌리에 얹은 것이라 무엇이 같은지가 안 읽힌다. "원인이 같다"로 쓴다. 지어낸 별칭이든 이미 있는 비유든 가르는 건 하나다 — 그 자리에서 무엇을 가리키는지가 말에 남아 있느냐다. **"뿌리"는 root 한 단어가 그 대상 이름인 자리에서만 쓴다** — root cause처럼 수식하는 자리는 대상이다. 기준과 예시는 위 `F-9 오적용 주의` 문단에 있고 상세는 그 한 자리에만 둔다. F-9에 걸린 별칭이 스스로 움직이면 D-5, 조사 없이 뭉치면 F-6도 함께 걸린다. **별칭과 원인 쪽 경계는 뜻이라 탐지기가 없다.** "뿌리"는 말 하나라 F-10의 "못 박" 탐지기처럼 형태로 걸 수 있지만 안 붙였다 — 레포에 root를 가리키는 정상 용례가 서른 자리 넘게 있어 걸린 자리를 사람이 다시 보는 양이 검사로 얻는 것보다 크다 |
@@ -163,13 +165,14 @@
163
165
  | G-3 | 안전 균형 표현 "양쪽 모두/두 가지 모두/장점도 있지만/신중하게/균형" | S2 | 4회 초과 시 1~2건 화자 입장으로 치환 |
164
166
  | G-4 | 화자 소거 — 의견인데 "확인이 필요합니다"처럼 화자가 없어 사실 선언으로 읽힘 | S2 / **대화·리뷰 S1** | 누가 하는 말인지 살린다("확인이 필요합니다" → "제가 봤을 때는 확인이 필요합니다"). **G-2와 방향이 반대라 경계를 지킨다** — 사실 서술에 붙은 추정 어미("~로 보인다")는 G-2로 빼고 판단이나 제안에서 빠진 화자는 여기서 넣는다. **규범, 절차, 명세 문서의 지시문은 대상이 아니다** — 룰북과 스킬 문서는 화자 없이 규칙을 적는 게 표준이다. 화자가 개인 판단으로 말하는 자리(리뷰 코멘트, 대화, 제안)만 본다. **코드를 읽고 확인한 결함은 화자를 붙이지 않고 그대로 단정한다** — 화자는 판단과 제안에만 붙인다. 부재를 봐야 해서 탐지기가 없다 |
165
167
 
166
- ## H. 접속사 남발
168
+ ## H. 접속사 남발과 생략
167
169
 
168
170
  | ID | 패턴 | 심각도 | 처방 |
169
171
  |---|---|---|---|
170
- | H-1 | 문두 접속사 "또한·따라서·즉·나아가·아울러·게다가·더욱이" 5회+ | S1 | 대량 제거. 문장 자체가 흐름을 잡게 |
172
+ | H-1 | 문두 접속사 "또한·따라서·즉·나아가·아울러·게다가·더욱이" 5회+ | S1 | 반복분을 뺀다. 문장 자체가 흐름을 잡게 하되 **앞뒤가 원인, 반전, 예시로 이어지는 자리의 연결어는 남긴다** — 다 지우면 H-5에 걸린다. 뺀 뒤에 두 문장 사이 관계가 여전히 읽히는지 본다 |
171
173
  | H-3 | 메타 진입 "이는·이 점에서·이 관점에서·이 말은" 3회+ | S1 | 본문에 녹이거나 삭제 |
172
174
  | H-4 | "즉" 남발 | S2 | 1회로 제한 |
175
+ | H-5 | 연결어 생략 — 원인, 반전, 예시, 순서로 이어지는 문장을 연결어 없이 나열해 읽는 사람이 앞뒤 관계를 머릿속에서 맞춰야 함 ("캐시를 껐다. 응답이 느려졌다.") | S2 / **대화·리뷰 S1** | 관계에 맞는 연결어미나 접속사를 넣는다 ("캐시를 껐더니 응답이 느려졌다", "그래서", "그런데", "예를 들면"). **H-1과 방향이 반대다** — H-1은 같은 접속사가 되풀이되는 자리를 줄이고 H-5는 관계가 있는데 표시가 없는 자리를 본다. 둘이 겹치면 접속사를 바꿔 쓰거나 연결어미로 문장을 잇는다. 관계가 없는 나열(체크리스트, 서로 독립된 사실)은 대상이 아니다. 없는 걸 봐야 해서 탐지기가 없다 |
173
176
 
174
177
  ## I. 형식명사, 의존명사
175
178
 
@@ -202,7 +205,7 @@
202
205
  2. **변경률**: 30% 이하인가 (50% 초과는 작업 중단)
203
206
  3. **장르 이탈 없음**: 칼럼이 에세이나 문학으로 변하지 않았는가, 리포트가 블로그체로 떨어지지 않았는가
204
207
  4. **말투 보존**: 원문 격식체면 결과도 격식체. 평어체로 떨어뜨리지 않는다
205
- 5. **잔존 S1 패턴 0건** (탐지기 수치는 각 룰의 대상 기준으로 걸러 센다 — 룰이 예외로 둔 자리는 잔존 건수에 안 넣는다): A-1, A-3, A-7, A-8, A-16, B-3, B-5, C-5, C-8, C-10, C-11, C-12, D-1~D-6, D-8, H-1, H-3, J-2가 남아있지 않은가 (대화·리뷰 말투면 A-2, A-5, C-14, D-9, E-8, F-4, F-5, F-6, F-7, F-8, F-9, F-10, G-4, I-1, I-5, I-6, I-7, I-8도 S1로 포함)
208
+ 5. **잔존 S1 패턴 0건** (탐지기 수치는 각 룰의 대상 기준으로 걸러 센다 — 룰이 예외로 둔 자리는 잔존 건수에 안 넣는다): A-1, A-3, A-7, A-8, A-16, B-3, B-5, C-5, C-8, C-10, C-11, C-12, D-1~D-6, D-8, H-1, H-3, J-2가 남아있지 않은가 (대화·리뷰 말투면 A-2, A-5, C-14, D-9, D-10, E-8, E-9, F-4, F-5, F-6, F-7, F-8, F-9, F-10, G-4, H-5, I-1, I-5, I-6, I-7, I-8도 S1로 포함)
206
209
  6. **인공 표현 자제**: 원문에 없던 비유, 수사, 문학적 표현을 윤문 과정에서 임의로 추가하지 않았는가
207
210
  7. **삭제 처방 준수**: D-2, D-3, D-4, D-6, C-10을 재작성으로 처리하지 않았는가. 마무리 문장, 부제, 수식어를 지우는 대신 더 그럴듯한 것으로 갈아끼운 자리가 없는가
208
211
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tienne/gestalt",
3
- "version": "0.113.0",
3
+ "version": "0.114.0",
4
4
  "description": "TypeScript AI Development Harness - Gestalt psychology-driven requirement clarification",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gestalt",
3
- "version": "0.113.0",
3
+ "version": "0.114.0",
4
4
  "description": "Gestalt psychology-driven AI development harness. Transforms scattered requirements into structured, validated specifications through interactive interviews.",
5
5
  "author": {
6
6
  "name": "tienne"
package/plugin/.mcp.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "gestalt": {
4
4
  "command": "npx",
5
- "args": ["-y", "@tienne/gestalt@0.113.0", "serve"],
5
+ "args": ["-y", "@tienne/gestalt@0.114.0", "serve"],
6
6
  "startup_timeout_sec": 180,
7
7
  "tool_timeout_sec": 900
8
8
  }
package/plugin/mcp.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "gestalt": {
4
4
  "command": "npx",
5
- "args": ["-y", "@tienne/gestalt@0.113.0", "serve"],
5
+ "args": ["-y", "@tienne/gestalt@0.114.0", "serve"],
6
6
  "startup_timeout_sec": 180,
7
7
  "tool_timeout_sec": 900
8
8
  }
@@ -130,6 +130,7 @@
130
130
  | D-7 | 변환 공식 "X에서 Y로" 반복 | S2 | 한 번만, 나머지는 일반 서술 |
131
131
  | D-8 | 과잉 자책, 감정 과장 반응("제일 아팠습니다·뼈아픕니다·부끄럽습니다·뜨끔했습니다") | S1 | 짧은 수긍으로 환원한다("아 그렇네요", "이거 놓쳤네요"). 사실 서술은 그대로 두고 감정 수식만 뺀다. D-4(hype 어휘)의 뒷면이다 — 칭찬 쪽만 막으면 같은 충동이 자책 쪽으로 옮겨간다. 남긴 의견들 사이에 "제일"로 순위를 매기는 것도 여기 해당한다 |
132
132
  | D-9 | 추상명사에 이동 동사("방향도 맞게 갔습니다", "결론이 그쪽으로 갔어요") | S2 / **대화·리뷰 S1** | 방향, 결론, 판단, 논의가 스스로 움직이게 두지 않는다. 사람이나 대상을 주어로 되돌린다("맞는 방향 같아요", "그렇게 결론 냈어요"). D-5 의인화 추상 주어의 사촌이다 |
133
+ | D-10 | 사물의 지나친 의인화 — 코드나 사물, 대화를 주어로 세우고 생물의 갑작스러운 몸짓 동사를 붙임 ("함수가 에러를 삼켜버린다", "대화가 제 꼬리를 물고 있다") | S2 / **대화·리뷰 S1** | 실제로 일어나는 일을 동사로 쓴다 ("함수가 에러를 잡고 아무 처리 없이 넘긴다", "같은 얘기가 되풀이되고 있다"). 몸짓 비유는 읽는 사람이 그림을 실제 동작으로 다시 옮겨야 해서 바로 안 읽힌다. **업계에서 쓰는 말이어도 대상이다** — "에러를 삼킨다"에는 잡아서 버리는지, 로그만 남기는지가 안 남는다. **운영체제나 명세가 상태 이름으로 정해 둔 말은 대상이 아니다** ("프로세스가 죽었다", "스레드가 깨어난다"). **D-5와는 주어로 갈린다** — D-5는 기술, 시대 같은 추상 주어이고 D-10은 함수, 요청, 대화처럼 가리킬 수 있는 대상이다. 사람 주어로 바꾸는 D-5 처방은 여기 안 맞는다. **D-9와는 동사로 갈린다** — 가다, 오다 같은 이동은 D-9이고 삼키다, 물다, 뱉다 같은 몸짓은 D-10이다. **F-10과는 누가 움직이냐로 갈린다** — F-10은 사람의 관용구 동작을 코드 목적어에 씌운 꼴이고 D-10은 사물이 스스로 그 동작을 하는 꼴이다 |
133
134
 
134
135
  ## E. 리듬, 종결어미
135
136
 
@@ -139,6 +140,7 @@
139
140
  | E-2 | 동일 종결어미 "~다" 4문장 연속 + 진행형 "~고 있다" 자동 매핑 | S2 | "~었다·~ㄴ다·~는다·~기 마련이다·~ㄹ 것이다" 등 다양화. "~고 있다" 단순 시제 환원 가능 시 환원("읽고 있다" → "읽는다") |
140
141
  | E-7 | 청자 경어법 4단계(해라/하게/하오/해요/합쇼) 일관성 손실 (대화·구어 한정) | S2 | 한 단락 내 혼용 금지, 격식 일관 (김혜영 2019, 추정) |
141
142
  | E-8 | 관형형 + 의존명사 종결 — 서술어 없이 "짚을 것", "고려할 점", "주의 사항"으로 문장을 끊음 | S2 / **대화·리뷰 S1** | 서술어를 붙여 문장을 끝낸다("두 가지 짚을 것" → "짚어볼 게 있습니다"). 목차 항목처럼 끊으면 사람이 한 말로 안 읽힌다. **헤딩, 표 셀, 체크리스트 항목, 문단을 여는 볼드 도입구는 대상이 아니다** — 거기서는 명사구 종결이 정상 문법이다. **PR 제목과 커밋 제목도 대상이 아니다** — 목록에서 한 줄로 훑는 자리라 개조식이 기본이고, 이 레포는 오히려 서술형 종결을 안 쓴다 (`author-voice.md`의 "제목은 개조식, 본문은 서술체" 절). 본문은 그대로 이 룰을 받는다. **볼드 예외는 규범, 참조 문서에서 문단 안 소제목 역할을 하는 자리에만 준다** — 리뷰 코멘트와 대화에서는 볼드를 씌워도 본문 산문으로 본다. 서식으로만 예외를 주면 "두 가지 짚을 것"을 볼드 처리해 그대로 통과시키게 된다. 본문 산문과 대화만 본다. 예외가 전부 문맥이라 줄 단위 정규식으로는 못 가르고, 그래서 탐지기가 없다. G-4와 겹치면 서술어를 붙이되 판단이면 화자도 함께 남긴다 |
143
+ | E-9 | 짝이 되는 말 띄워놓기 — 주어와 서술어, 수식어와 꾸밈받는 말 사이에 긴 절을 끼워 문장 앞부분을 기억한 채 끝까지 읽게 함 | S2 / **대화·리뷰 S1** | 짝을 붙인다. 끼어든 절은 앞뒤 문장으로 빼거나 문장을 둘로 나눈다 ("이 함수는 요청이 들어오면 캐시를 먼저 보고 없으면 DB를 읽은 뒤 결과를 다시 캐시에 쓰는데 너무 느리다" → "이 함수는 너무 느리다. 요청마다 캐시를 보고 없으면 DB를 읽은 뒤 다시 캐시에 쓰기 때문이다"). 짝 사이에 절이 둘 이상 끼거나 15어절을 넘으면 본다. **A-18과는 무엇이 길어지냐로 갈린다** — A-18은 명사 앞 수식 자체가 길어지는 꼴이고 E-9는 짝 사이가 벌어지는 꼴이다. 둘이 겹치면 문장을 나누는 처방 하나로 같이 푼다. 문장 구조를 봐야 해서 탐지기가 없다 |
142
144
 
143
145
  ## F. 과도한 수식, 중복
144
146
 
@@ -148,7 +150,7 @@
148
150
  |---|---|---|---|
149
151
  | F-4 | 한자어 명사화 -성/-적/-화 + 영어 명사화 -tion/-ment/-ness/-ity 누적 (한 글 12회+) | S2 / **대화·리뷰 S1** | 동사·형용사 어근으로 환원("the implementation of the policy" → "정책 시행" 또는 "정책을 시행하기") (탐지기가 없는 이유는 아래 [측정 근거](#측정-근거)) |
150
152
  | F-5 | "~적 N" 추상 체인 ("전략적 함의", "실천적 기반") | S2 / **대화·리뷰 S1** | 명사+명사 또는 풀어쓰기("전략 함의", "실천의 기반") |
151
- | F-6 | 복합명사 압축 — 명사구를 조사·동사 없이 이어붙여 개념을 뭉침 ("시안 정합 버그픽스", "유지보수성 개선 작업", "권한 체크 로직") | S2 / **대화·리뷰 S1** | 동사·조사로 풀어 서술 ("디자인 시안과 다르게 렌더링되던 문제", "나중에 유지보수하기 편하게"). 사람은 압축 명사구 대신 무엇을 왜 했는지 풀어 말한다 |
153
+ | F-6 | 복합명사 압축 — 명사를 조사·동사 없이 3개 이상 이어붙여 개념을 뭉침 ("시안 정합 버그픽스", "공포 영화 배경음악 생성기", "권한 체크 로직") | S2 / **대화·리뷰 S1** | 동사·조사로 풀어 서술 ("디자인 시안과 다르게 렌더링되던 문제", "공포 영화에 깔 배경음악을 만들어주는 도구"). 사람은 압축 명사구 대신 무엇을 왜 했는지 풀어 말한다. 명사끼리 무슨 관계인지(누가, 무엇을, 어디에)를 읽는 사람이 맞춰야 해서 셋째 명사부터 바로 안 읽힌다. 두 개짜리 굳은 합성어("배경음악", "코드 리뷰")는 대상이 아니다 |
152
154
  | F-7 | 기술·이공계 비유 명사를 일상 대화에 그대로 (증류·배선·결정화·평탄화·오케스트레이션·파이프라인화·축 등, 화학·전기·수학 어휘의 비유 차용) | S2 / **대화·리뷰 S1** | 일상 동사·명사로 환원 (증류 → "추려내다/뽑아내다", 배선 → "연결하다/걸어두다", 결정화 → "정리하다", 평탄화 → "밋밋하게 만들다", **축 → "측면"**·"기준"). 문법은 멀쩡해 룰 매칭이 안 되지만 사람은 대화에서 안 쓴다. "네 축을 잰다"가 아니라 "4가지 측면에서 측정한다". **예외는 그 프로젝트가 개념에 붙인 이름일 때만이고, 그 개념을 다루는 자리에서만이다** — 게슈탈트의 "스펙 결정화"는 `similarity-crystallizer` 에이전트 이름이자 인터뷰→Spec 변환의 정의라서 두지만, 같은 말을 지라 티켓 작성처럼 무관한 자리에 끌어다 쓰면 F-7이다. **탐지기는 "결정화"를 자리 구분 없이 건다** — 개념을 다루는 자리인지 못 가르므로 걸린 자리는 사람이 이 기준으로 다시 본다. 코드의 "파이프라인" 자체, 그래프의 x축도 같은 기준. 테스트를 자물쇠에 빗댄 "잠그다"는 방향이 반대라 F-10이 본다 |
153
155
  | F-8 | 추상명사에 물리 측량 동사("근거를 재봤는데", "판단을 재보고 있다", "근거를 재본 결과", "의견을 달아봤는데") | S2 / **대화·리뷰 S1** | 저울에 올린 게 아니라 검토한 것이다. 사람이 하는 행위 동사로 되돌린다("근거를 확인해봤는데", "의견을 검토해봤는데"). F-7 물리 동사 도피의 사촌이라 목적어가 근거, 의견, 판단, 영향, 의미, 가치, 리스크인 자리만 본다 — "온도를 재봤는데"는 대상이 아니다 |
154
156
  | F-9 | 결함이나 코드 상태, 그 결함의 원인 관계를 비유 명사로 뭉개 부름 ("맨몸 호출", "벌거벗은 API", "뿌리가 하나다") | S2 / **대화·리뷰 S1** | 무엇이 빠졌고 무엇이 틀렸는지 그대로 쓴다 ("맨몸 호출" → "접두 객체 없이 함수 이름만 적혀 있다"). 별칭은 검색이 안 되고 처음 읽는 사람이 못 알아보고 답글에서 재생산돼 팀 어휘로 굳는다. **예외는 남이 정의해 둔 이름을 그 뜻 그대로 쓸 때다** — "널 포인터", "데드락", "고아 노드"처럼 명세나 교과서에 뜻이 박힌 말이고 F-6으로도 안 넘긴다. 다른 결함에 비유로 얹으면 예외가 아니고 팀에서 몇 번 쓰였다는 것도 아니다 — 그렇게 열면 답글에 한 번 재생산된 별칭이 곧바로 빠져나간다. **F-7과 방향이 반대다** — F-7은 기술 비유를 일상 말로 되돌리고 F-9는 일상 비유를 기술 대상에 씌운 쪽을 본다. **원인 관계를 부르는 비유도 같은 자리다** — "뿌리가 하나다"는 원인이 같다는 말을 뿌리에 얹은 것이라 무엇이 같은지가 안 읽힌다. "원인이 같다"로 쓴다. 지어낸 별칭이든 이미 있는 비유든 가르는 건 하나다 — 그 자리에서 무엇을 가리키는지가 말에 남아 있느냐다. **"뿌리"는 root 한 단어가 그 대상 이름인 자리에서만 쓴다** — root cause처럼 수식하는 자리는 대상이다. 기준과 예시는 위 `F-9 오적용 주의` 문단에 있고 상세는 그 한 자리에만 둔다. F-9에 걸린 별칭이 스스로 움직이면 D-5, 조사 없이 뭉치면 F-6도 함께 걸린다. **별칭과 원인 쪽 경계는 뜻이라 탐지기가 없다.** "뿌리"는 말 하나라 F-10의 "못 박" 탐지기처럼 형태로 걸 수 있지만 안 붙였다 — 레포에 root를 가리키는 정상 용례가 서른 자리 넘게 있어 걸린 자리를 사람이 다시 보는 양이 검사로 얻는 것보다 크다 |
@@ -163,13 +165,14 @@
163
165
  | G-3 | 안전 균형 표현 "양쪽 모두/두 가지 모두/장점도 있지만/신중하게/균형" | S2 | 4회 초과 시 1~2건 화자 입장으로 치환 |
164
166
  | G-4 | 화자 소거 — 의견인데 "확인이 필요합니다"처럼 화자가 없어 사실 선언으로 읽힘 | S2 / **대화·리뷰 S1** | 누가 하는 말인지 살린다("확인이 필요합니다" → "제가 봤을 때는 확인이 필요합니다"). **G-2와 방향이 반대라 경계를 지킨다** — 사실 서술에 붙은 추정 어미("~로 보인다")는 G-2로 빼고 판단이나 제안에서 빠진 화자는 여기서 넣는다. **규범, 절차, 명세 문서의 지시문은 대상이 아니다** — 룰북과 스킬 문서는 화자 없이 규칙을 적는 게 표준이다. 화자가 개인 판단으로 말하는 자리(리뷰 코멘트, 대화, 제안)만 본다. **코드를 읽고 확인한 결함은 화자를 붙이지 않고 그대로 단정한다** — 화자는 판단과 제안에만 붙인다. 부재를 봐야 해서 탐지기가 없다 |
165
167
 
166
- ## H. 접속사 남발
168
+ ## H. 접속사 남발과 생략
167
169
 
168
170
  | ID | 패턴 | 심각도 | 처방 |
169
171
  |---|---|---|---|
170
- | H-1 | 문두 접속사 "또한·따라서·즉·나아가·아울러·게다가·더욱이" 5회+ | S1 | 대량 제거. 문장 자체가 흐름을 잡게 |
172
+ | H-1 | 문두 접속사 "또한·따라서·즉·나아가·아울러·게다가·더욱이" 5회+ | S1 | 반복분을 뺀다. 문장 자체가 흐름을 잡게 하되 **앞뒤가 원인, 반전, 예시로 이어지는 자리의 연결어는 남긴다** — 다 지우면 H-5에 걸린다. 뺀 뒤에 두 문장 사이 관계가 여전히 읽히는지 본다 |
171
173
  | H-3 | 메타 진입 "이는·이 점에서·이 관점에서·이 말은" 3회+ | S1 | 본문에 녹이거나 삭제 |
172
174
  | H-4 | "즉" 남발 | S2 | 1회로 제한 |
175
+ | H-5 | 연결어 생략 — 원인, 반전, 예시, 순서로 이어지는 문장을 연결어 없이 나열해 읽는 사람이 앞뒤 관계를 머릿속에서 맞춰야 함 ("캐시를 껐다. 응답이 느려졌다.") | S2 / **대화·리뷰 S1** | 관계에 맞는 연결어미나 접속사를 넣는다 ("캐시를 껐더니 응답이 느려졌다", "그래서", "그런데", "예를 들면"). **H-1과 방향이 반대다** — H-1은 같은 접속사가 되풀이되는 자리를 줄이고 H-5는 관계가 있는데 표시가 없는 자리를 본다. 둘이 겹치면 접속사를 바꿔 쓰거나 연결어미로 문장을 잇는다. 관계가 없는 나열(체크리스트, 서로 독립된 사실)은 대상이 아니다. 없는 걸 봐야 해서 탐지기가 없다 |
173
176
 
174
177
  ## I. 형식명사, 의존명사
175
178
 
@@ -202,7 +205,7 @@
202
205
  2. **변경률**: 30% 이하인가 (50% 초과는 작업 중단)
203
206
  3. **장르 이탈 없음**: 칼럼이 에세이나 문학으로 변하지 않았는가, 리포트가 블로그체로 떨어지지 않았는가
204
207
  4. **말투 보존**: 원문 격식체면 결과도 격식체. 평어체로 떨어뜨리지 않는다
205
- 5. **잔존 S1 패턴 0건** (탐지기 수치는 각 룰의 대상 기준으로 걸러 센다 — 룰이 예외로 둔 자리는 잔존 건수에 안 넣는다): A-1, A-3, A-7, A-8, A-16, B-3, B-5, C-5, C-8, C-10, C-11, C-12, D-1~D-6, D-8, H-1, H-3, J-2가 남아있지 않은가 (대화·리뷰 말투면 A-2, A-5, C-14, D-9, E-8, F-4, F-5, F-6, F-7, F-8, F-9, F-10, G-4, I-1, I-5, I-6, I-7, I-8도 S1로 포함)
208
+ 5. **잔존 S1 패턴 0건** (탐지기 수치는 각 룰의 대상 기준으로 걸러 센다 — 룰이 예외로 둔 자리는 잔존 건수에 안 넣는다): A-1, A-3, A-7, A-8, A-16, B-3, B-5, C-5, C-8, C-10, C-11, C-12, D-1~D-6, D-8, H-1, H-3, J-2가 남아있지 않은가 (대화·리뷰 말투면 A-2, A-5, C-14, D-9, D-10, E-8, E-9, F-4, F-5, F-6, F-7, F-8, F-9, F-10, G-4, H-5, I-1, I-5, I-6, I-7, I-8도 S1로 포함)
206
209
  6. **인공 표현 자제**: 원문에 없던 비유, 수사, 문학적 표현을 윤문 과정에서 임의로 추가하지 않았는가
207
210
  7. **삭제 처방 준수**: D-2, D-3, D-4, D-6, C-10을 재작성으로 처리하지 않았는가. 마무리 문장, 부제, 수식어를 지우는 대신 더 그럴듯한 것으로 갈아끼운 자리가 없는가
208
211