genetics-mcp 2.16.5 → 2.16.7

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.
@@ -70,8 +70,14 @@ version: "4.0.0"
70
70
  > 자세한 것은 `references/lim-portal-format.md`. 조판 규칙 원전은 `gazette-report` 스킬.
71
71
 
72
72
  **Lim 발행 규칙** (어겨도 서버가 거부하지만, 알고 시작할 것):
73
- - **톤은 개조식이다** — `~함 / ~했음 / ~필요 / ~한 상황`. `~합니다 / ~해 주세요` 아님.
73
+ - **톤은 개조식이다 — 다만 「우리가 한 일」에만 그렇다.** `~함 / ~했음 / ~필요 / ~한 상황`.
74
74
  본문에 `습니다|십시오|합니다|입니다|됩니다|주세요` 가 **0건**이어야 한다.
75
+ - ⚠ **상대가 할 일에 개조식 종결을 붙이면 그대로 명령형이 된다.** 이 규칙의 **반대쪽 벽**이고,
76
+ 오래 안 적혀 있어서 사고가 났다(2026-09-02, 보고서 #32) — 「~해 주셔야 함」·「회신 필요」·
77
+ 「확인 필요」로 나갔고 고객이 **「이거 너무 싸가지없는 거 아니야?」**로 반려했다.
78
+ 고치는 법은 금지 어휘를 쓰는 것이 **아니라** 높임 어간 `-시-` 를 되살리는 것이다 —
79
+ 「확인해 주시면 됨」·「정해 주시면 반영함」·「회신 주시면 이어서 진행함」. 제목은 명사형 「~ 요청」.
80
+ 서버가 `dry_run` 경고로 센다(`lib/report_tone.php`).
75
81
  - `tenant` 는 키가 가리키는 고객사와 일치해야 한다(오발행 방지 가드). 값은 소속처 slug 우선·이름 폴백 — 아래 :228 의 `slug` 는 **보고서** slug 라 다른 것이다.
76
82
  - `sections[].kind` 는 `summary|status|cases|asks|note` 다섯 가지뿐 — 그 밖의 값은 절이 통째로 사라지므로 서버가 거절한다.
77
83
  - `cases[].grade` 는 `grades` 에 정의된 이름이어야 한다.
@@ -336,10 +342,32 @@ render·css·폰트를 함께 얹는다. 직접 부르면 옛 서식 시트가
336
342
  1. **티켓 번호·이슈 트래커 이름을 싣지 않는다.** 고객이 아는 참조는 본인이 제보한 원본 링크다.
337
343
  2. **`§` 같은 기호를 본문에 노출하지 않는다.** 원고에서는 참조 마커로 쓰되 렌더에서 지운다(빌드가 처리).
338
344
  3. **개발 절차 서술을 빼거나 고쳐 쓴다.** 배포·티켓 분리·테스트 추가·설계 검토안은 고객의 관심사가 아니다.
345
+ 3b. **회차 서술을 본문 절에 두지 않는다.** 「이번 회차에 추가함」·「이번 회차 미확인 사항」은
346
+ 우리 작업 순서이지 그 절의 내용이 아니다. 고객은 이 문서를 **처음 읽는 사람**이고,
347
+ 그에게 필요한 것은 무엇이 적혀 있느냐이지 우리가 언제 적었느냐가 아니다.
348
+ 회차 변경점을 말하는 자리는 **발행 이력(`history`)** 이고, 「이번 회차에서 새로 추가된 것은?」을
349
+ 활용법(`guide`)에 한 줄 둘 수 있다. 절 `lede`·본문 문단·표 주석·건·요청에는 두지 않는다.
350
+ 실측(2026-09-01): 3차 회차 문서에서 절 셋·문단 둘·건 하나·요청 하나, **일곱 자리**에 샜다.
351
+ 위 3번 규칙이 이미 있었으나 예시가 배포·티켓·테스트뿐이라 이 형태가 빠져나갔다.
339
352
  4. **확인 못 한 범위를 반드시 적는다.** 감추면 다음 보고서까지 못 믿게 된다.
340
- 5. **개조식으로 쓴다.** `~함 / ~했음 / ~필요 / ~한 상황`. 본문에
353
+ 5. **개조식으로 쓴다 — 우리 행위에.** `~함 / ~했음 / ~필요 / ~한 상황`. 본문에
341
354
  `습니다|십시오|합니다|입니다|됩니다|주세요` 가 0건이어야 한다. 문체를 안 바꾸면
342
355
  관보 문법 위에서 겉돈다 — 낱말이 아니라 **조판**의 문제다.
356
+ 5a. **상대의 행위에는 높임 어간을 살린다.** 5번을 상대에게 적용하면 명령형이 된다 —
357
+ 개조식은 「우리가 한 일」을 적는 문체이지 부탁하는 문체가 아니다. 실제 공문도 본문은
358
+ 개조식이되 요청부는 존대로 맺는다.
359
+
360
+ | 상대가 할 일 | 쓰지 않는다 | 쓴다 |
361
+ |---|---|---|
362
+ | 제목 | ~해 주셔야 함 · ~ 확인 필요 | **~ 요청** (명사형이 공문 표준) |
363
+ | 회신 청함 | 회신 필요. · 회신 요청. | 회신 **주시면** 됨 · 알려 **주시면** 반영함 |
364
+ | 확인 청함 | 설치해 확인하면 됨. | 설치해 확인**하시**면 됨 |
365
+ | 값을 정해 달라 함 | 네 글자로 지정 — 반영함 | 네 글자로 정해 **주시면** 반영함 |
366
+
367
+ `-시-` 는 금지 어휘가 아니라서 **개조식을 깨지 않고** 정중해진다.
368
+ ⚠ **관형 명사구는 고치지 마라** — 「회신이 필요한 것은 4가지임」의 주어는 고객이 아니라
369
+ 「것」이라 이름이지 명령이 아니다. 「자격이 필요함」처럼 주어가 사물인 「필요」도 그대로 둔다.
370
+ 여기까지 높이면 표지 통계·색인 라벨이 말을 거는 문장이 되어 오히려 어색해진다.
343
371
  5b. **한글은 마침표에서 줄을 바꾼다.** 문장을 이어 붙인 한글 문단은 개조식으로 고쳐도
344
372
  여전히 기계가 쓴 글로 읽힌다. **줄만 바꾸면 부족하다** — 실측(문장 296개)에서 26%가
345
373
  글줄 폭을 넘어 접혔고 좁은 단은 54%였다. 접히면 둘째 줄과 다음 문장을 구별할 수 없다.
@@ -423,6 +451,7 @@ doc-pptx 의 슬롭 3종 중 **대시 대비 헤드라인**("복붙에서 위임
423
451
  | 학생 보고서투 · 완충어 · 근거 없는 총평 · 단독 부정 종결 | `tone.mjs` S1/S2(2026-08-27 추가) | 로컬 렌더 산출물 |
424
452
  | 금칙 값(고객사·지역·제품명·티켓) | `build.py` `forbid` | **로컬 렌더만** — 포털 발행은 안 돈다(`report_publish.php:76`) |
425
453
  | 권고에 기한 없음 · `asks` 절 없음 · 옵션 표에 근거 등급 열 없음(브리핑) | `gazette.py` ⚠ | **두 경로 다**(dry_run·로컬) |
454
+ | 본문 절의 회차 서술(「이번 회차…」) | `gazette.py` `round_talk_scan()` ⚠ | **두 경로 다**(dry_run·로컬) |
426
455
  | 부정 서술의 주어가 사람·조직·국가 | **없음** — 사람의 눈 검수 | — |
427
456
 
428
457
  다만 **조사·체언 종결 조각문** 규칙은 보고서 문맥에서 완화한다. 목차 항목과 건 제목은
@@ -12,7 +12,7 @@
12
12
  "kicker": "우리회사 · 예시 고객사",
13
13
  "title": "자료 검색 방식 도입 검토",
14
14
  "title_sub": "R&D 브리핑",
15
- "subtitle": "새 검색 방식(방식 A)의 도입 여부를 정하기 위한 문서임. 2026년 9월 30일까지 채택 여부 회신 필요.",
15
+ "subtitle": "새 검색 방식(방식 A)의 도입 여부를 정하기 위한 문서임. 2026년 9월 30일까지 채택 여부를 회신 주시면 됨.",
16
16
  "cover_date": "2026.08.27",
17
17
  "issuer": ["우리회사", "예시 고객사", "2026. 8."],
18
18
  "running_footer": "예시 고객사 · LIM-2026-0827-02",
@@ -40,7 +40,7 @@
40
40
  "a": ["이 쪽과 01·02절이면 결정에 충분함.", "그 뒤는 결정을 검증하러 올 때 읽는 자리임."] }
41
41
  ],
42
42
 
43
- "notice": { "state": "info", "text": "결정 요청 1건. 2026년 9월 30일까지 회신 필요." },
43
+ "notice": { "state": "info", "text": "결정 요청 1건. 2026년 9월 30일까지 회신 주시면 됨." },
44
44
  "bar": [
45
45
  { "value": 1, "label": "권고안", "tone": "you" },
46
46
  { "value": 2, "label": "검토한 다른 길", "tone": "neutral" }
@@ -204,9 +204,9 @@
204
204
  ],
205
205
 
206
206
  "open_items": [
207
- { "title": "방식 A 를 다음 분기에 도입하는 것을 권고함. 채택 여부 회신 필요.",
207
+ { "title": "방식 A 를 다음 분기에 도입하는 것을 권고함. 채택 여부 회신 요청.",
208
208
  "priority": "must",
209
- "body": "2026년 9월 30일까지 회신 필요. 근거는 §4.1·§4.2, 기각한 길은 §4.3 과 05절. 채택 시 30일 안에 검증 환경부터 세움.",
209
+ "body": "2026년 9월 30일까지 회신 주시면 됨. 근거는 §4.1·§4.2, 기각한 길은 §4.3 과 05절. 채택 시 30일 안에 검증 환경부터 세움.",
210
210
  "refs": ["4.1", "4.2", "4.3"] },
211
211
  { "title": "계약의 사용량 상한 조항 초안을 같이 검토해 주기를 요청함.",
212
212
  "body": "회신 기한과 같은 2026년 9월 30일까지. 운영비 격차가 커지는 구간을 계약으로 눌러 두는 장치임(§4.2).",
@@ -217,7 +217,7 @@
217
217
  ],
218
218
 
219
219
  "cta": [
220
- "결정할 것은 하나, <strong>방식 A 채택 여부</strong>. 2026년 9월 30일까지 회신 필요.",
220
+ "결정할 것은 하나, <strong>방식 A 채택 여부</strong>. 2026년 9월 30일까지 회신 주시면 됨.",
221
221
  "우리 권고는 채택임. 근거의 강도는 각 건의 <strong>근거 등급</strong>이 말함.",
222
222
  "이 쪽과 01·02절만으로 결정에 충분함. 그 뒤는 검증하러 올 때 읽는 자리임."
223
223
  ],
@@ -263,7 +263,7 @@
263
263
  ],
264
264
  "mark": "이 브리핑의 수치는 2026년 8월 27일 기준이며, 권고는 2026년 9월 30일까지 유효함.",
265
265
  "badge": "고객 공유용",
266
- "note": "※ 이 문서에는 입력·저장 기능이 없음. 채택 여부는 별도 회신 필요.",
266
+ "note": "※ 이 문서에는 입력·저장 기능이 없음. 채택 여부는 별도로 회신 주시면 됨.",
267
267
  "tail": "회신 뒤 일정은 07절 그대로 진행하고, 첫 분기 실측 보고로 이어짐."
268
268
  },
269
269
 
@@ -11,7 +11,7 @@
11
11
  "kicker": "우리회사 · 예시 고객사",
12
12
  "title": "시스템 수정 내역",
13
13
  "title_sub": "1차 보고",
14
- "subtitle": "이번 회차에 처리한 2건과, 확인이 필요한 1건을 정리한 것임. 검수 결과는 별도 회신 필요.",
14
+ "subtitle": "이번 회차에 처리한 2건과, 확인이 필요한 1건을 정리한 것임. 검수 결과는 별도로 회신 주시면 됨.",
15
15
  "cover_date": "2026.08.24",
16
16
  "issuer": ["우리회사", "예시 고객사", "2026. 8."],
17
17
  "running_footer": "예시 고객사 · LIM-2026-0824-01",
@@ -76,7 +76,7 @@
76
76
 
77
77
  "sections": [
78
78
  { "no": "01", "id": "sec-1", "label": "01", "name": "지금 확인이 필요한 것", "kind": "asks", "part": "1",
79
- "lede": "총 건수 표시 1건에 대해 확인 필요.",
79
+ "lede": "총 건수 표시 1건에 대한 확인 요청임.",
80
80
  "sub": "수신 측 조치 사항의 전부",
81
81
  "short": "확인 요청",
82
82
  "marg": {
@@ -159,12 +159,12 @@
159
159
  "body": "목록을 그리는 자리가 하나라, 저장 반영과 표시 속도가 같은 지점에서 갈렸음(§4.1). 그래서 함께 처리함.",
160
160
  "refs": ["4.1"] },
161
161
  { "lead": "확인이 필요한 것은 1건임.",
162
- "body": "총 건수 표시가 실제와 다르게 나올 수 있어 확인 필요(§5.1). 01절에 모아 둠.",
162
+ "body": "총 건수 표시가 실제와 다르게 나올 수 있어 확인해 주시면 됨(§5.1). 01절에 모아 둠.",
163
163
  "refs": ["5.1"] }
164
164
  ],
165
165
 
166
166
  "open_items": [
167
- { "title": "목록 위 총 건수 표시 확인 필요",
167
+ { "title": "목록 위 총 건수 표시 확인 요청",
168
168
  "priority": "must",
169
169
  "body": "총 건수가 예전 데이터 때문에 실제보다 몇 건 많게 나올 수 있는 상황. 목록에 표시되는 내용 자체는 정상임. 실제 수치와 대조해 알려 주시면 기준을 맞출 예정.",
170
170
  "refs": ["5.1"] }
@@ -192,7 +192,7 @@
192
192
  ],
193
193
  "mark": "이 문서는 2026년 8월 24일 기준임.",
194
194
  "badge": "고객 공유용",
195
- "note": "※ 이 문서에는 입력·저장 기능이 없음. 검수 결과는 별도 회신 필요.",
195
+ "note": "※ 이 문서에는 입력·저장 기능이 없음. 검수 결과는 별도로 회신 주시면 됨.",
196
196
  "tail": "이후 진행 사항은 차기 회차 보고로 공유 예정."
197
197
  },
198
198