genetics-mcp 2.17.0 → 2.17.1

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.
@@ -20,7 +20,7 @@
20
20
  |---|---|
21
21
  | `sections[].marg` (여백 주석 단) | 두 단 본문이 **한 단으로 선다.** 「문서처럼 꾸민 웹페이지」로 되돌아간다 |
22
22
  | `parts` (PART 층위) | 절만 늘어선다. 「먼저 읽을 것 / 경과 / 남은 것」이라는 **읽기 순서**가 사라진다 |
23
- | 개조식 톤 | 낱말이 아니라 조판의 문제로 남는다. 경어체 보고서는 관보 문법 위에서 겉돈다 |
23
+ | 자리별 톤(§14) | 기록 자리에 경어체를 쓰면 관보 문법 위에서 겉돈다. **요청 자리에 개조식을 쓰면 하대로 읽힌다** |
24
24
 
25
25
  이 셋은 **거절 사유가 아니다** — 렌더러는 비어도 문서를 낸다(초안을 막지 않는다).
26
26
  대신 ⚠ 로 세어 준다(`gazette.py` 의 `marg()` · `build()`).
@@ -400,15 +400,59 @@ python3 assets/render.py <report.json>
400
400
  | 절 …의 `principles`/`logic` 은 자리가 없어 | 같음 |
401
401
  | `wide`/`marg_width` 값이 길이 단위가 아니라 | CSS 값 검사 |
402
402
  | 브리핑에 `asks` 절이 없습니다 | `doc_type` 에 「브리핑」이 있는데 결정 요청 절이 없다 — 독자가 할 일이 없는 블로그 글이다(§12.3b) |
403
- | 권고 「…」에 기한이 없습니다 | `open_items[]` 제목·본문 어디에도 날짜·「까지」·「이내」가 없다 — 기한 없는 권고는 결정을 요청한 것이 아니다 |
404
- | 브리핑의 표에 「근거 등급」 열이 없습니다 | 어느 `sections[].tables[].cols` 에도 `labels.col_evidence`(기본 「근거 등급」)가 없다 — 옵션 비교표는 근거의 강도를 같이 보여야 한다 |
403
+ | 판단 항목 「…」에 기한이 없습니다 | `open_items[]` 제목·본문 어디에도 날짜·「까지」·「이내」가 없다 — 기한 없는 판단 항목은 결정을 요청한 것이 아니다. 문구의 「권고」는 「판단 항목」으로 바꿨다(2026-09-11) — 검사기가 「권고」라고 부르면 원고에도 배어 든다 |
404
+ | 브리핑의 표에 「근거 등급」 열이나 행이 없습니다 | 어느 `sections[].tables[]` 에도 `labels.col_evidence`(기본 「근거 등급」)가 열(`cols`)로도, 행의 첫 칸(전치 행렬의 「견줄 것」)으로도 없다 — 선택지 비교표는 근거의 강도를 같이 보여야 한다 |
405
405
  | 절 …의 …에 회차 서술이 있습니다 | 본문 절이 「이번 회차에 추가함」을 말한다 — 회차 변경점은 발행 이력(`history`)의 몫이다. 고객은 이 문서를 처음 읽는 사람이라 우리 작업 순서를 읽을 이유가 없다(SKILL 3b) |
406
+ | 절 …의 도판 「id」는 세로가 길어(w×h) 열람 화면에서 폭 N px 로 줄어 섭니다 | `.plate__img` 의 `max-height:78vh` 가 폭을 깎는다 — `760·h/w > 702`(전폭 1030). 위아래 두 장으로 나눈다(readability.md R9) |
407
+ | 절 …의 도판 「id」의 원본 폭 N px 이 본문 단 760px 보다 작아 늘려 그려집니다 | 흐림. 배율 2 로 다시 굽거나 원본을 더 크게(readability.md R8) |
408
+ | N자 넘는 문장이 M개입니다 / 괄호 부연이 둘 이상인 문장이 M개입니다 | 글 층(readability.md R11a·R11g) — 한 문장 60자, 괄호 문장당 하나. 한 문장 한 줄이라 문장이 곧 줄 길이 |
409
+ | 절 …표 「…」 칸이 N자입니다 / 흐름도 「…」 칸이 N자입니다 | 표 칸 20자(5열 이상 12자), 흐름도 칸 20자 — 설명은 ※ 주석·본문으로(R11b) |
410
+ | 도판 「id」 캡션이 N자입니다 / 출처 줄이 N자입니다 | 캡션 60자 한 문장, 출처 80자(R11c) |
411
+ | 요약면 현황 줄이 N자입니다 / 수치 칸 라벨 「…」이 N자입니다 / 요약 N번째 문단 본문이 N자입니다 | 현황 80자, 라벨 16자, 요약 본문 160자(R11d) |
412
+ | 절 … 도입문이 N자입니다 / 여백 주석 k 가 N자입니다 / 판단 항목 N 본문이 N자입니다 | 도입문 90, 여백 주석 30/45/40, 판단 항목 220자(R11e·f) |
406
413
 
407
414
  경고가 하나라도 있으면 **그것부터 고친다.**
408
415
  경고를 남긴 채 고객에게 링크를 보내지 마라.
409
416
 
417
+ ⚠ **예외는 하나 — 요청 자리의 경어체 경고다.** 요청 절(`cta`·`open_items`)·PART I 간지·
418
+ 판권지 회신 안내는 하십시오체로 맺어야 하므로(§14-2) 거기서 나는 경어체 경고는 **의도된 것이고
419
+ 고치지 않는다.** 톤 게이트는 경고이지 거절이 아니다 — 실측(2026-09-11): 경어체 경고를 안은
420
+ `update_report` 2회 모두 발행 성공. 검사기는 자리를 못 가리므로 이 한 종류만 사람이 걸러 읽고,
421
+ 나머지 경고는 위 원칙대로 0 으로 만든다. 「경고 0」을 요청 자리에까지 적용하려다
422
+ **말투 반려가 네 번 났다**(genetics `decisions/고객-문서-요청-자리는-하십시오체로-맺는다-…`).
423
+
410
424
  ---
411
425
 
426
+ ### 10-1. 시각 우선 관문 — 글로만 선 원고를 렌더러가 센다 (2026-09-08)
427
+
428
+ > ⛔ 이 표 **전체**가 운영 반영 전이다 — 지금은 로컬 `render.py` 만 센다(§11-6 머리).
429
+
430
+ > 「읽기가 아직도 어려움 — 색상 다변화, 핵심은 굵게, 배지·그래프」 반려(앳플리 4차)의 처방.
431
+ > 문턱은 `gazette.py` 상수(`PROSE_MAX` 등)와 **같은 값**이다 — 이 표가 계약이다.
432
+
433
+ | ⚠ | 문턱 | 처방 |
434
+ |---|---|---|
435
+ | 절 N 「이름」이 글로만 서 있습니다(M자) | 산문 400자 이상인데 표·흐름도·차트·도판 0 | 그 절의 요지를 표·흐름도·차트·도판 중 하나로 세운다(§11-1~11-4) |
436
+ | 절 N 「이름」의 k번째 문단이 M자입니다 | 문단 한 개 220자 초과(세 줄) | 두 문장으로 끊거나 수치를 표로 내린다 |
437
+ | 절 N 「이름」 산문에 참조 번호가 M개입니다 | 산문(문단·도입문·여백 주석)에 6.6·2.12a 같은 번호 4개 이상 | 번호는 표·건·판단 항목에만, 산문은 뜻으로 잇는다 |
438
+ | 판단 요청 N항이 산문으로만 섭니다 | `open_items` 6항 이상인데 asks 절에 표·흐름도 0 | 한눈표(항 · 지금 · 그대로 두면 · 바꾸면 — 두 길 대칭, 권고 열·시한 칩 없음) + 관문 흐름도(§11-2). |
439
+ | 핵심 굵게 표기가 한 곳도 없습니다 | 산문 3,000자 이상, `**…**` 도 편집기 굵게 구간도 0 | 절마다 핵심 한 구절을 `**…**` 로 굵게(§11-6). 문단 절반이 굵으면 굵기가 위계를 못 나른다. ⛔ 운영 반영 전에는 따르지 않는다 — 넣으면 열람 화면에 별표가 찍힌다(§11-6 머리) |
440
+ | 과정 어휘가 %d곳에 있습니다(%s 「%s」 …) — 독자는 앞 회차·회신·판을 모릅니다. 정해진 것은 사실로 배경에, 결정 요청에는 열린 것만 | 원고의 글자 자리 어디든(`history`·`labels`·`forbid`·`origin`·`file`·`source_url`·`href`·`data`·`out`·`css`·`render` 제외)에 정규식 `정해짐 \| 회신 대기 \| 남은 물음 \| 정해진 것 \| 이미 정해진 \| 남은 것 (하나·둘·셋·넷) \| (N·첫·두·세)판` 이 1곳 이상. `%s` 둘은 자리 경로와 걸린 낱말 | 회차 낱말(「이번 회차」)만이 아니라 **진행 상태 어휘와 구조**가 금지다 — 상태 열(「상태: 정해짐/회신 대기」)·「~ 그대로(변화 없음)」도 같다. 정해진 것은 **사실**로 요지(배경)에, 결정 요청 절에는 **지금 열린 것만**. 회차의 자리는 `history` 하나. 원고는 직전 판의 차분이 아니라 **독자의 0 상태에서 다시 쓴다** — 판마다 「처음 읽는 사람이 이 절에서 무엇을 알아야 하나」를 다시 묻는다(SKILL 3b · readability R11h) |
441
+ | 절 %s 표 「%s」 제목이 개수로 진행 상태를 세고 있습니다 — 제목은 내용을 말해야 합니다 | `tables[].caption` 이 「…(하나·둘·셋·넷)과 … (하나·둘·셋·넷)」으로 끝난다 | 표 제목은 내용을 말한다 — 「정해진 것 셋과 남은 것 하나」처럼 상태를 세지 않는다(SKILL 3b) |
442
+ | 권고 낱말이 %d곳에 있습니다(%s) — 결정권이 고객에게 있는 문서는 판단 항목을 물음으로 세우고, FCG 의견은 한 절에만 둡니다 | 정규식 `권고(?![량치]) \| 기각 \| 하지 않기로`(권고량·권고치 같은 값 이름은 빼고) 가 다음 자리에 1곳 이상 — `sections[].name·short·sub·lede·marg(why/key/advice)` · `sections[].tables[].caption·cols` · `summary[].label·lead` · `open_items[].title` · `notice.text` · `meta[][1]` · `parts[].title·lede` · `stats[].label`. 이름에 「의견」이 든 절(FCG 의견 절)과 `cases[]`·`appendix`·`history`·`labels`·`colophon`·`origin` 은 제외. `%s` 는 자리 이름 최대 3개 | 판단 항목은 **물음**으로, 결과는 두 길 대칭 한눈표 한 곳에, FCG 의견은 이름에 「의견」이 든 절 **하나**에만(§12.3b · §12.5b) |
443
+ | 도판 「%s」 출처 줄에 원본 위치가 없습니다 — 쪽·행·주소·건 § 가운데 하나를 적습니다 | `assets[]` 가운데 `role:"figure"` · `provider:"user-provided"`(고객·제3자 자료에서 낸 도판. 그린 도판 `deterministic`·서버가 그린 삽화 `higgsfield` 는 세지 않음. 파일로 싣는 합성은 `user-provided` 라 센다 — 출처 줄에 바탕 도안의 자리를 적는다)이고 보이는 출처 줄 `source_text` 에(`source_url` 은 도판에 그려지지 않아 보지 않는다) 정규식 `\d+\s*쪽 \| \d+\s*행 \| https?:// \| 건 § \| §\s*\d` 이 하나도 없다. `%s` 는 `id` | 출처 줄에 원본 이름 + 쪽/행 + (주소 또는 건 §)(readability R12e). 흐리다·못 연다고 쓰기 전에 원본을 잰다 |
444
+ | 표 「%s」 주석이 %d문장입니다 — ※ 주석은 2문장 안 | `tables[].note` 문장 3 이상. 문장은 렌더러가 문장 블록을 세우는 판별(`boundary.py` — 날짜 마침표 「2026. 9. 30.」·「9. 8.」은 경계가 아님)로 센다. | 두 문장 안으로, 나머지는 본문·건으로(readability R12a) |
445
+ | 판단 항목 「%s」 본문이 %d문장입니다 — 4문장 안 | `open_items[].body` 문장 5 이상(자수 220 은 §10 의 R11f 행이 따로 센다) | 기한과 두 길 이름 → 길마다 달라지는 것 → 근거 절 번호까지 네 문장. 상세는 건에(readability R12b) |
446
+
447
+ 위 표의 마지막 여섯 행(과정 어휘 둘 · 권고 낱말 · 도판 원본 위치 · 표 주석 문장 · 판단 항목 문장)은
448
+ `gazette.py text_scan` 의 문구 **그대로**다(`%d`·`%s` 는 수·이름이 들어가는 자리) — 문구를 바꾸면 양쪽을 같이 바꾼다.
449
+ 정규식의 `\|` 는 표 칸이라 그렇게 적은 것이고 실제로는 `|` 다. 전부 ⚠ 이며 거절이 아니다.
450
+ 집행자: 렌더러 ⚠(`gazette.py text_scan`).
451
+ 까닭(실사례 2026-09-11, 고객사 결정 브리핑 — 반려 둘): 문장은 짧아졌는데 권고가 여러 자리에 되풀이됐고,
452
+ 도판 출처 줄이 「원본이 흐림」이라 적혔으나 재 보니 원본은 선명했으며, 독자는 원본을 열 수 없었다.
453
+
454
+ 측정값(57.3kg · 14.4 · 2.7kg)은 참조 번호로 세지 않는다 — 앞자리 1~12 이고 단위가 안 붙는 것만 센다.
455
+
412
456
  ## 11. 안 실리는 것
413
457
 
414
458
  **`assets` 는 `role:"logo"` 와 `role:"figure"` 둘이다.**
@@ -465,9 +509,21 @@ CSS 로는 못 한다. 우측 판독부에 남는 것은 문서 전체의 사실
465
509
  | 그림 자체 | `assets[]` 에 `role: "figure"` · `id` · `alt`(접근성 계약) |
466
510
  | 제공자 | `provider: "user-provided"` 이면 **`origin` 이 필수다** — 누가 제공했는지. 비우면 서버가 발행을 거절한다(「출처를 못 적는 자산은 고객 문서에 싣지 않습니다」) |
467
511
  | 그림 바이트 | `file`(**로컬 절대경로**) 또는 `source`(허용 호스트 https). 둘 다 주면 `file` 이 이긴다 |
468
- | 캡션 | `assets[].caption` — 번호 뒤에 붙는다. **번호는 적지 않는다**(자리가 매긴다) |
512
+ | 캡션 | `assets[].caption` — 번호 뒤에 붙는다. **번호는 적지 않는다**(자리가 매긴다). **한 문장으로** — 마침표가 둘이면 문장 분리가 캡션을 줄로 가른다(부연은 괄호·가운뎃점으로). 판정 칩은 렌더러가 문장 블록 밖에 붙인다(2026-09-09) |
469
513
  | 출처 | `assets[].source_text` — 언제·어디서 얻은 화면인가 |
470
514
  | 놓을 절 | `sections[].plates: ["그-id", ...]` — **여기 안 적으면 자리가 없어 안 실린다**(⚠) |
515
+ | 전폭 | `assets[].wide: true` — 두 단 밖, 절 끝에 문서 폭(약 1030px)으로 선다. 그 절의 그림 번호는 마지막이 된다 |
516
+
517
+ ### 도판의 가독성은 열람 화면에서 재라 (2026-09-08 · 2026-09-10)
518
+
519
+ 본문 단은 **760px** 이고 서버는 긴 변을 **1400px** 로 깎는다. 880px 합성 그림이 9.5~12.5px 로 떠 반려됐고(9/8),
520
+ 「표시 14px」 게이트를 통과한 그림이 「가독성에 하자 있는 상태로 만드는 짓을 왜 계속 하느냐」로 다시 반려됐다(9/9, 앳플리 #173).
521
+ 글자 크기는 열 잣대 중 하나였다. **규칙과 값의 정본은 스킬 `references/readability.md` §1(R1~R11)** — 글자 17/15px · 그림 안 제목
522
+ 금지 · 행간 1.4 · 그림 안 문장 0 · 겹침·간격·표식 · 대비 4.5/3 · 뜻 색 3 · 밀도 1.8x·무손실 · 세로 702px · 금칙어.
523
+ `figure.mjs` 가 그 표를 그대로 센다(✗ 는 exit 3). 렌더러 dry_run 은 치수로 잴 수 있는 둘(세로 축소·업스케일)을 §10-1 표로 센다.
524
+
525
+ 모든 도판은 눌러서 **크게 보기**가 열린다(스크립트 없이 `:target`). 원본이 1400px 라 본문 단의 최대
526
+ 1.8배다 — 하한을 못 넘긴 그림의 구제책이지 하한을 대신하지 않는다.
471
527
 
472
528
  번호는 **그림 〈절 순번〉-〈그 절에서의 순서〉** 다. 절 4의 둘째 도판이면 `그림 4-2` 이고,
473
529
  앵커는 `#fig-04-2` 다. 데이터로 바꿀 수 없다 — 절 번호와 같은 규약이다.
@@ -662,6 +718,50 @@ CSS 로는 못 한다. 우측 판독부에 남는 것은 문서 전체의 사실
662
718
  수치를 「1차 문헌 미확인」으로 낮춰 적은 것이다. 둘 다 검사기가 못 잡는다 — **도판을 실었으면
663
719
  그 도판을 실제로 열어 본문과 대조해라.**
664
720
 
721
+ ## 11-6. 인라인 표기 — 굵게 · 강조 · 칩 · 막대 톤 (2026-09-08)
722
+
723
+ > ⛔ **운영 반영 전 — 2026-09-12 기준 운영 렌더러는 2026-09-02 판(`ea6981e`)이다.** 이 절의 인라인 표기(칩·굵게·강조·
724
+ > `[글자](주소)`·맨 주소 링크)와, §10 의 도판 크기 관문(R8·R9 「세로가 길어」·「늘려 그려집니다」)·§10-1 표 **전체**(시각 우선 · 글 층 R11 ·
725
+ > 과정 어휘 · W1~W4)는 그 뒤 커밋이라, **운영 열람 화면에서는 원문이 글자로 찍히고 운영 dry_run 은 그 경고를 내지 않는다.**
726
+ > 운영에도 있는 것은 §10 의 브리핑 셋(asks 절 · 기한 · 근거 등급 — 문구는 옛 「권고」·「열」)과 회차 서술 · 그림 바이트 경고다. 로컬 `render.py` 만 새 판을 부른다. 배포가 늦어진 까닭은 둘이다 —
727
+ > 관문 1(배포원 불변식)이 같은 작업 트리의 남의 미추적 파일에 걸렸고, HEAD 를 올리면 운영 DB 마이그레이션이 함께
728
+ > 적용돼 사용자 승인이 필요하다. 오르기 전에는 **쓰지 않는다**. 오른 뒤 확인법: 열람 화면 DOM 에서 `.chip` 수 > 0,
729
+ > 그리고 과정 어휘 한 낱말을 넣은 원고를 서버 `dry_run` 에 태워 경고가 뜨는가. 오른 날 이 인용 블록과, 이것을 가리키는
730
+ > 표시를 함께 지운다 — `grep -rn "운영 반영 전\|렌더러 배포 뒤" mcp/skills/genetics-report` 가 그 자리를 전부 낸다
731
+ > (SKILL.md 0.5단계·카피 게이트 표, 이 문서 §10-1 머리·굵게 행·§12.6b, visual-first §0·§4·§5·§6·§8, readability R9, process 7단계, reader-review).
732
+ >
733
+ > 실사례(2026-09-10): 이 변환 코드가 작업 트리에만 있고 **어느 커밋에도 없어** 발행하면 원문이 글자로 찍혔다
734
+ > (열람 화면 DOM 에서 선 칩 **0**). 표기를 더하거나 고치면 커밋·배포 뒤 열람 화면 DOM 에서 `.chip`·`strong`·
735
+ > 앵커 수를 세어 확인한다 — 로컬 렌더 통과는 운영 렌더 통과가 아니다.
736
+
737
+ 문자열 **안에** 쓰는 표기 셋. `t()` 를 지나는 모든 칸에서 통한다 — 문단·도입문·여백 주석·
738
+ 표 셀·흐름도 칸·표/차트 주석·요약 본문·건 필드·판단 항목.
739
+
740
+ | 표기 | 나가는 것 | 언제 |
741
+ |---|---|---|
742
+ | `**굵게**` | `<strong>` | 문단의 핵심 구절 한둘. **절반이 굵으면 굵기가 위계를 못 나른다** |
743
+ | `==강조==` | `<mark class="hi">`(노란 밑면 + 아래 괘선) | 독자가 놓치면 문서가 헛도는 한 구절 |
744
+ | `{{ok\|보통}}` | `<span class="chip chip--ok">` | 표 셀의 상태. 톤 다섯: `ok`(초록) `wait`(황갈) `bad`(빨강) `info`(파랑) `muted`(회색). 글자 40자 안 |
745
+ | `[글자](https://…)` | `<a class="ref" href="…" target="_blank" rel="noopener noreferrer">글자</a>` | 출처·원문·관련 문서로 가는 하이퍼링크. 부록 행·표 셀·문단 어디서나 |
746
+ | `https://…` (맨 주소) | 같은 앵커, 글자는 주소 그대로 | 주소 자체를 보여야 할 때(부록 출처 목록). 꼬리 문장부호 `.,;:!?` 와 닫는 괘·괄호는 링크 밖에 남는다 |
747
+
748
+ 막대 차트는 `rows[].tone` 으로 행 색을 준다 — 같은 다섯 이름, 같은 색. 예: 「처리 완료」 행은
749
+ `muted`, 「개선안이 새로 만드는 구간」은 `bad`.
750
+
751
+ **하이퍼링크(2026-09-09).** 앳플리 #173 이 「부록에 링크가 없어서 신빙성이 안 느껴짐」으로 반려됐다 —
752
+ `t()` 가 주소를 글자로만 냈고, 클릭되는 링크는 건의 `source_url` 한 줄뿐이었다. 이제 `t()` 를 지나는
753
+ 모든 칸에서 위 두 모양이 링크가 된다. http(s) 만 받고(`javascript:` 는 글자로 남음), 이미 앵커 안에 든
754
+ 주소는 다시 잡지 않는다. **출처는 두 자리에 둔다** — 건의 `source_url`(「출처 원문」 행, 라벨은
755
+ `labels.source_row`)과 부록 출처 목록의 맨 주소. `dry_run` 의 「바깥에서 받아 오는 것이 있습니다」 경고는
756
+ 그 링크의 호스트를 세는 것이라 출처 링크가 있으면 뜨는 것이 정상이다.
757
+
758
+ 규칙:
759
+ - **색은 뜻으로 고른다.** ok=끝났거나 정상, wait=사람 판단 대기, bad=이용자에게 나쁜 상태·오류,
760
+ info=참고, muted=범위 밖·처리 완료. 예쁘라고 칠하지 않는다.
761
+ - 표기가 없는 문자열은 한 글자도 안 바뀐다(이미 나간 문서의 재발행 바이트 불변).
762
+ - 짝이 안 맞거나 모르는 톤은 그대로 글자로 나간다 — 조용히 사라지지 않는다.
763
+ - 편집기 서식 구간(`_runs`)과 함께 와도 된다. 구간이 태그를 씌운 뒤 표기를 푼다.
764
+
665
765
  ## 12. 판정 밖의 두 모드 — 가르치는 문서 · R&D 브리핑
666
766
 
667
767
  독자가 **판정**하는 문서(검수 보고)와 **배우는** 문서, **결정하는** 문서는 뼈대가 다르다.
@@ -700,12 +800,13 @@ CSS 로는 못 한다. 우측 판독부에 남는 것은 문서 전체의 사실
700
800
  |---|---|---|
701
801
  | 판정한다 (검수·회신·결재) | 검수 보고 | 요약 → 대조표 → 건별 필드표 → 확인 요청 |
702
802
  | 배운다 (유지보수·인수·온보딩·사후분석) | **가르치는 문서** | 학습목표 → 원리 → 붕괴 → 처방 → 적용 → 연습 |
703
- | 결정한다 (도입 여부·옵션 선택·예산·일정) | **R&D 브리핑** | 결론 먼저 → 권고와 기한 → 배경 → 선택지 비교 → 근거 → 하지 않기로 한 것 → 리스크 → 활용 계획 |
803
+ | 결정한다 (도입 여부·옵션 선택·예산·일정) | **R&D 브리핑** | 정할 것과 기한 → 두 길의 결과 → 배경 → 선택지 비교 → 근거 → FCG 의견(한 자리) → 바꾸는 길의 위험 → 회신 뒤 일정 |
704
804
 
705
805
  트리거: 기술보고서 · 인수인계 · 온보딩 문서 · 포스트모템 ·
706
806
  「다음 사람이 읽고 이해해야」 · 「왜 이렇게 됐는지 설명하는 문서」.
707
807
  브리핑 트리거: R&D 브리핑 · 기술 도입 검토 · 타당성 검토 · 결정 요청서 · 「할지 말지 정해야」 · 「조사한 걸 정리해서 결정하게」.
708
808
  브리핑의 신호는 데이터에서 하나다 — **`doc_type` 에 「브리핑」이 들어 있으면** 렌더러가 12.3b 의 셋을 ⚠ 로 센다(§10).
809
+ 뼈대의 **순서**를 세는 자는 없다 — 사람의 눈(§12.6b). 결정한다 뼈대에 「권고」가 앞에 서지 않는 까닭은 §12.3b 첫 문단.
709
810
 
710
811
  ### 12.3 서사 공식 — 의존 순서로 가르친다
711
812
 
@@ -730,24 +831,28 @@ CSS 로는 못 한다. 우측 판독부에 남는 것은 문서 전체의 사실
730
831
  「더 좋은 검사를 붙였다」가 아니라 **「그 부류가 존재할 수 없게 했다」**로 처방을 프레임한다.
731
832
  적용 사례가 원리를 되짚지 않고 혼자 서면 그것은 본문이 아니라 부록감이다.
732
833
 
733
- ### 12.3b 브리핑 서사 공식 — 결론이 먼저고, 기각안이 본체다
834
+ ### 12.3b 브리핑 서사 공식 — 정할 것이 먼저고, 두 길이 대칭이다
734
835
 
735
836
  정부 R&D 최종보고서(국가연구개발혁신법 시행규칙 별지 서식)·미 육군 결정문(BLUF)·영국 정부
736
837
  Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구한다 — 결론이 첫 쪽에, 권고마다 기한,
737
- 선택지는 기각안까지, 근거에는 등급, 앞선 기술에는 성숙도, 마지막은 활용 계획. 관보 문법 위에 그것을 이렇게 놓는다.
838
+ 선택지는 그대로 두는 길까지, 근거에는 등급, 앞선 기술에는 성숙도, 마지막은 회신 뒤 일정. 관보 문법 위에 그것을 이렇게 놓는다 —
839
+ 다만 **결정권이 고객에게 있는 문서**에서는 「권고」가 앞에 서지 않는다. 판단 항목은 고객이 고를 **물음**으로 서고,
840
+ 두 길의 결과는 **대칭**으로, FCG 의견은 **한 절 한 자리**로 물러난다(실사례 2026-09-11, 고객사 결정 브리핑 —
841
+ 권고가 제목·표 열·요약면에 배어 「답정너 틀」로 반려).
738
842
 
739
843
  | 단계 | 역할 | 관보에서 무엇으로 서는가 |
740
844
  |---|---|---|
741
- | 결론 먼저(BLUF) | 결정 요청 한 줄 · 권고 한 줄 · 기한 한 줄 | `cta`(3줄) + `notice.text` + `subtitle` |
742
- | 권고 | yes/no 로 답할 수 있는 **완전문**. 본문 첫 문장이 기한 | `open_items[]` — `title` 완전문 · `body` 첫 문장 「…까지」 · 최단 기한 하나가 `priority:"must"` |
743
- | 타이밍 | 회신 기한 · 이 문서의 유효 기간 | `meta` 「회신 기한」 행 · `colophon.mark` 「…까지 유효」 |
845
+ | 정할 것과 기한(BLUF) | 정할 것 한 줄 · 기한 한 줄. 결론(권고)이 아니라 **물음**이 먼저 선다 | `notice.text` 한 줄 + `subtitle`. `cta` 는 기본 `[]` — `.urgent` 상자에 권고를 세우지 않는다 |
846
+ | 판단 항목 | 고객이 고를 **물음**. 본문 첫 문장이 기한과 두 길의 이름 | `open_items[]` — `title` 물음문 · `body` 첫 문장 「…까지 — 그대로 둘지, 바꿀지」 · `priority:"must"` 쓰지 않음(「가장 시급」 배지가 한 길을 먼저 판정한다) — §12.5b |
847
+ | 타이밍 | 회신 기한 · 수치의 기준일 | `meta` 「회신 기한」 행 · `notice.text` · 판단 항목 본문 첫 문장 — 세 자리. `colophon.mark` 는 **기준일**만 적고 기한을 되풀이하지 않는다(readability R12f) |
848
+ | 두 길의 결과 | 항마다 「지금 · 그대로 두면 · 바꾸면」을 **대칭**으로. 한 길의 결과만 있는 열 금지 | `asks` 절 `tables[]` **한 곳** — 열 「항 · 지금 · 그대로 두면 · 바꾸면」. 권고 열·시한 칩 없음 |
744
849
  | 배경 | 무엇을 왜 검토했는가 — 요약 4칸 브리핑판 | `summary` 4문단(SKILL.md 4단계) |
745
- | 선택지 | **기각안 포함** 전 옵션을 같은 축으로 | `kind:"status"` 절 + `tables[]` — 열 8개: 옵션 · 편익 · 해악/비용 · 불확실성 · 이행 장벽 · 성숙도 · **근거 등급** · 권고 강도 |
850
+ | 선택지 비교 | **견줄 것 × 길** 전치 행렬 — 행이 견줄 것(편익 · 해악/비용 · 불확실성 · 이행 장벽 · 성숙도 · 근거 등급 · 정할 자리 · 다시 볼 때), 열이 길. **판정 열 없음** | `kind:"note"` 절 + `tables[]`. 「하지 않기로 한 것」 절은 두지 않는다 — 그 내용은 이 표의 「정할 자리」·「다시 볼 때」 행이 받는다. 「근거 등급」은 여기서 **행의 첫 칸**으로 서고, §10 검사는 열과 행 첫 칸을 다 본다 |
746
851
  | 근거 | 물음 → 관찰 → 판단 → 재현 방법 → 남은 불확실성 | `kind:"cases"` 절. `labels` 로 필드표 라벨을 바꾼다(`symptom`→물음 · `cause`→관찰 · `fix`→판단 · `check`→재현 방법). `grades` = 근거 등급 4단 |
747
852
  | 한눈에 | 근거 전체의 강도 대조 | `kind:"status"` 절(대조표) |
748
- | 하지 않기로 한 것(Non-Goals) | 기각안·범위 밖 — **문단마다 조건 주어 · 이유 · 재검토 시점 · 선택지** | `kind:"note"` 절, `limit_label` 「이번 범위에서 하지 않기로 한 것」 |
749
- | 리스크 | 권고대로 했을 때의 위험과 완화. 없으면 「해당 없음」과 그 근거 | `kind:"note"` 절 + `tables[]` |
750
- | 활용 계획 | 결정 뒤 30일·90일에 누가 무엇을 | 마지막 `kind:"note"` 절 |
853
+ | FCG 의견 | 낼지 말지는 따로 정한다 — 내면 **한 절 한 자리**, 표 한 장(항 · 길 / 판단 / 까닭 / 근거) | `kind:"note"` 절 하나, 이름에 「의견」. 제목 · 표 열 · 칩 · 여백 주석 · 요약면에는 배지 않는다 |
854
+ | 바꾸는 길의 위험 | 바꾸는 길로 갔을 때의 위험과 완화. 없으면 「해당 없음」과 그 근거 | `kind:"note"` 절 + `tables[]` |
855
+ | 회신 뒤 일정 | 고른 길별로 회신 뒤 누가 무엇을 언제 | 마지막 `kind:"note"` 절 |
751
856
  | 사전 | 등급 기준 · 확률 어휘 · 성숙도 대응표 · 검증 환경 | `appendix[]` |
752
857
 
753
858
  **분량은 1:3:25 다** — `guide`(1쪽에서 결정) : `summary`+`asks`(3쪽) : `parts` 본문(25쪽) : `appendix`(그 뒤).
@@ -755,10 +860,15 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
755
860
 
756
861
  단서 셋.
757
862
  - 브리핑은 content-pipeline §4.2 유형 **J(삭제)와 충돌한다** — 검수 보고에서 「채택되지 않은 대안」은 지우지만,
758
- 브리핑에서는 **기각안이 본체**다. 기각안 없는 권고는 근거가 없는 권고다.
863
+ 브리핑에서는 **두 길이 다 본체**다. 한 길의 결과만 있는 표는 견줌이 아니라 동의 요청이다.
759
864
  - `grades` 하향 규율은 GRADE 와 같다 — 직접 실험이 아니면 한 단 내리고, 이해관계가 있는 출처면 또 한 단 내린다.
760
865
  올려서 적으면 그 한 건이 문서 전체의 신뢰를 깎는다(SKILL.md 2단계).
761
- - `asks` 절과 `summary` 절은 **한 절씩**이다. 권고가 여러 절에 흩어지면 독자가 무엇을 답해야 하는지 모른다.
866
+ - `asks` 절과 `summary` 절은 **한 절씩**이다. 판단 항목이 여러 절에 흩어지면 독자가 무엇을 답해야 하는지 모른다.
867
+ FCG 의견도 **한 절**이다 — 두 자리부터는 권고가 문서에 배어 든다.
868
+
869
+ 집행자 — 기한 없는 판단 항목 · `asks` 절 없음 · 「근거 등급」 열이나 행 없음은 §10 렌더러 ⚠,
870
+ 권고 낱말 · 표 주석 문장 수 · 판단 항목 문장 수는 §10-1 렌더러 ⚠.
871
+ 두 길 대칭 · FCG 의견 한 자리 · `cta` `[]` · 판정 열 없음은 **없음 — 사람의 눈**(§12.6b).
762
872
 
763
873
  ### 12.4 본문 / 대장 분리
764
874
 
@@ -785,20 +895,27 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
785
895
  끝에 「N절을 다시 읽을 것」 복습 지침을 단다.
786
896
  - `cta` 는 이 문서 전체에서 독자가 지킬 **단 하나의 행동 규칙**이다.
787
897
 
788
- ### 12.5b `open_items` 의 세 번째 용법 — 권고
898
+ ### 12.5b `open_items` 의 세 번째 용법 — 결정 물음
789
899
 
790
- 검수 보고에서는 확인 요청, 가르치는 문서에서는 연습문제, 브리핑에서는 **권고**다.
900
+ 검수 보고에서는 확인 요청, 가르치는 문서에서는 연습문제, 브리핑에서는 **결정 물음**이다 —
901
+ 고객이 고르는 물음이고, FCG 가 내리는 권고가 아니다.
791
902
 
792
903
  ```json
793
- {"title": "[방식 A] 를 다음 분기에 도입하는 것을 권고함 — 채택 여부 회신 필요.",
794
- "priority": "must",
795
- "body": "12월 31일까지 회신 필요. 근거는 §4.1·§4.2, 대안은 §5.1. 채택 시 1월에 검증 환경을 먼저 세움.",
796
- "refs": ["4.1", "4.2", "5.1"]}
904
+ {"title": "[방식 A] 를 다음 분기에 들일 것인가, 지금 방식을 그대로 둘 것인가",
905
+ "body": "12월 31일까지 「[방식 A] 로 바꿈」과 「그대로 둠」 중 하나로 회신해 주시기 바랍니다. 그대로 두면 §4.1 의 상태가 이어지고, 바꾸면 1월에 검증 환경을 먼저 세웁니다. 세 길의 견줌은 03절, 우리 의견은 05절에 따로 두었습니다.",
906
+ "refs": ["4.1", "4.2"]}
797
907
  ```
798
908
 
799
- - `title` 은 **yes/no 로 답할 수 있는 완전문**. 「도입 검토」 같은 명사구는 무엇을 답하라는 것인지 감춘다.
800
- - `body` 첫 문장이 **기한**. 없으면 렌더러가 ⚠ 로 센다(§10).
801
- - 「해야 함」이 아니라 「권고함」. 근거와 대안의 절 번호를 같이 적어 선택을 상대에게 둔다.
909
+ - `title` 은 고객이 고를 **물음** — 두 길의 이름이 제목에 다 보인다. 「도입 검토」 같은 명사구는 무엇을 답하라는 것인지
910
+ 감추고, 「…을 권고함 — 채택 여부 회신 필요」는 답을 정해 놓고 동의만 받는다.
911
+ - `body` 첫 문장이 **기한과 두 길의 이름**. 기한이 없으면 렌더러가 ⚠ 로 센다(§10 「판단 항목 「…」에 기한이 없습니다」).
912
+ 본문은 4문장 안(§10-1).
913
+ - 근거는 건 번호(`§4.1`)로 `refs` 와 본문에, 견줌 · 의견은 **절 번호 낱말**(「03절」)로 본문에 적어 선택을 상대에게 둔다.
914
+ `§n.n` 은 건·판단 항목 앵커로만 바뀌므로 note 절을 `§5.1` 로 적으면 죽은 링크가 된다(content-pipeline §3). 「권고함」은 여기 쓰지 않는다 —
915
+ 의견은 이름에 「의견」이 든 절 한 곳의 몫이다. `priority:"must"` 도 쓰지 않는다 — 「가장 시급」 배지가 한 길을 먼저 판정한다.
916
+ - 요청 자리라 **본문** 종결은 하십시오체다(§14-2). 제목은 개조식 물음(「…할 것인가」)으로 두고 「…하시겠습니까?」로 묻지 않는다(§14-1).
917
+
918
+ 집행자: 기한 · 문장 수 · 제목의 권고 낱말은 렌더러 ⚠(§10 · §10-1) · 물음 꼴과 두 길 이름은 없음 — 사람의 눈(§12.6b).
802
919
 
803
920
  ### 12.6 검수 항목
804
921
 
@@ -815,17 +932,24 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
815
932
 
816
933
  ### 12.6b 브리핑 검수 항목 — 반증형
817
934
 
818
- 하나라도 「예」면 아직 브리핑이 아니다.
819
-
820
- - [ ] 첫 쪽(`guide`·`cta`·`notice`)만 읽고 yes/no 를 고를 수 **없는가**
821
- - [ ] 기한이 없는 권고가 있는가
822
- - [ ] 기각안이 본문(`status` 절 표)에 없고 권고안만 있는가
823
- - [ ] 「하지 않기로 한 것」 절의 문단 중 조건 주어·이유·재검토 시점·선택지 넷 중 하나가 빠진 것이 있는가
824
- - [ ] 사실 · 인용 · 우리 판단이 한 문장에 섞여 있는가(등급이 다른 것을 한 문장에 두면 강한 쪽으로 읽힌다)
825
- - [ ] 「앞선 기술」이라고 적었는데 성숙도(표에 어느 단계인지)가 없는가
826
- - [ ] 마지막 절이 활용 계획이 아니라 요약이나 감상인가
827
- - [ ] 부록을 안 읽으면 결정을 못 하는가(그러면 부록이 아니라 본문이다)
828
- - [ ] 다 읽고 독자가 할 일이 없는가 — 그러면 블로그 글이다
935
+ 하나라도 「예」면 아직 브리핑이 아니다. 괄호는 집행자다.
936
+
937
+ - [ ] 첫 쪽(`guide`·`notice`)만 읽고 **무엇을 언제까지 정해야 하는지** 알 수 없는가 (없음 — 사람의 눈)
938
+ - [ ] 기한이 없는 판단 항목이 있는가 (렌더러 ⚠ §10)
939
+ - [ ] **권고 낱말**(권고 · 기각 · 하지 않기로)이 제목 · 표 열 · 칩 · 절 이름 · 여백 주석 · 요약면에 있는가
940
+ (렌더러 ⚠ §10-1 「권고 낱말이 …」 — 표 칸 안의 칩과 `cases[]` 는 사람의 눈)
941
+ - [ ] FCG 의견이 **두 자리 이상**인가 — 의견 절 밖에서 「권고안은 …」이 되풀이되는가
942
+ (없음 — 사람의 눈. 렌더러 관문은 「의견」이 든 절을 건너뛴다)
943
+ - [ ] **한 길의 결과만** 있는가 — 「바꾸면」만 있고 「그대로 두면」이 없는 표 · 항 · 도판 (없음 — 사람의 눈)
944
+ - [ ] 그림 출처 줄에 **원본 위치**(쪽 · 행 · 주소 · 건 §)가 없거나, 「흐림」·「확인 불가」처럼 독자가 확인을 **포기하게** 하는가
945
+ (원본 위치는 렌더러 ⚠ §10-1 「도판 「…」 출처 줄에 원본 위치가 없습니다」 · 포기 문구는 없음 — 사람의 눈)
946
+ - [ ] 고객이 **못 여는 링크**가 있는가 — 운영 렌더러가 인라인 링크를 싣기 전(§11-6 머리)에는 눌리는 외부 링크가 건의 `source_url` 뿐이다 (없음 — 사람의 눈)
947
+ - [ ] 같은 항의 이름 · 기한이 **네 번 이상** 서는가 (없음 — 사람의 눈, readability R12f)
948
+ - [ ] 사실 · 인용 · 우리 판단이 한 문장에 섞여 있는가(등급이 다른 것을 한 문장에 두면 강한 쪽으로 읽힌다) (없음 — 사람의 눈)
949
+ - [ ] 「앞선 기술」이라고 적었는데 성숙도(표에 어느 단계인지)가 없는가 (없음 — 사람의 눈)
950
+ - [ ] 마지막 절이 회신 뒤 일정이 아니라 요약이나 감상인가 (없음 — 사람의 눈)
951
+ - [ ] 부록을 안 읽으면 결정을 못 하는가(그러면 부록이 아니라 본문이다) (없음 — 사람의 눈)
952
+ - [ ] 다 읽고 독자가 할 일이 없는가 — 그러면 블로그 글이다 (`asks` 절 없음은 렌더러 ⚠ §10 · 그 밖은 사람의 눈)
829
953
 
830
954
  ### 12.7 근거
831
955
 
@@ -841,23 +965,23 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
841
965
  ### 12.7b 브리핑의 근거 — 어디서 가져온 뼈대인가
842
966
 
843
967
  결정 문서 서식(각 한 줄 귀결).
844
- - **미 육군 결정문·BLUF**(Army Regulation 25-50 / 정보요약 관행) — 결론을 첫 문장에. 독자는 첫 문장만 읽고 나머지는 검증한다. → `cta` 3줄.
845
- - **영국 정부 Submissions**(Civil Service 「Writing for ministers」) — 「Issue · Timing · Recommendation · Background · Options · Risks · Handling」. 권고에는 회신 기한이 반드시 붙는다. → `open_items` 기한 ⚠.
846
- - **WHO/SUPPORT Tools STP13**(Lavis 외, 2009) — 정책 브리프는 1:3:25(요약 1쪽 : 핵심 3쪽 : 본문 25쪽). 옵션마다 편익·해악·비용·불확실성·이행 장벽 다섯 칸. → 옵션 표 8열과 분량 비율.
847
- - **국가연구개발혁신법 시행규칙 별지 최종보고서 서식** · KISTEP 보고서 표준 — 연구 목표 대비 달성도 · 활용 계획 · 기대 효과가 본문 요소다. 「활용 계획」이 마지막 절인 이유.
848
- - **Google 설계 문서 관행(Non-Goals)** · Amazon 6-pager · RFC 7322 · ANSI/NISO Z39.18(과학기술보고서 서식) — 「하지 않기로 한 것」은 부록이 아니라 본문 절이며, 이유와 함께 선다.
968
+ - **미 육군 결정문·BLUF**(Army Regulation 25-50 / 정보요약 관행) — 요지를 첫 문장에. 독자는 첫 문장만 읽고 나머지는 검증한다. → `notice.text` 한 줄(정할 것·기한). 결정권이 고객에게 있는 문서에서는 그 첫 줄이 결론(권고)이 아니라 **물음**이다 — `cta` 기본 `[]`(§12.3b).
969
+ - **영국 정부 Submissions**(Civil Service 「Writing for ministers」) — 「Issue · Timing · Recommendation · Background · Options · Risks · Handling」. 결정 요청에는 회신 기한이 반드시 붙는다. → `open_items` 기한 ⚠. Recommendation 은 결정권이 고객에게 있는 문서에서 **의견 절 하나**로 물러난다(§12.3b).
970
+ - **WHO/SUPPORT Tools STP13**(Lavis 외, 2009) — 정책 브리프는 1:3:25(요약 1쪽 : 핵심 3쪽 : 본문 25쪽). 옵션마다 편익·해악·비용·불확실성·이행 장벽 다섯 칸. → 선택지 전치 행렬의 행(§12.3b)과 분량 비율.
971
+ - **국가연구개발혁신법 시행규칙 별지 최종보고서 서식** · KISTEP 보고서 표준 — 연구 목표 대비 달성도 · 활용 계획 · 기대 효과가 본문 요소다. 결정 문서의 마지막 절이 「회신 뒤 일정」(활용 계획의 결정 문서판)인 이유.
972
+ - **Google 설계 문서 관행(Non-Goals)** · Amazon 6-pager · RFC 7322 · ANSI/NISO Z39.18(과학기술보고서 서식) — 범위 밖(Non-Goals)은 부록이 아니라 본문에서 이유와 함께 선다. 결정권이 고객에게 있는 문서에서는 따로 절을 두지 않고 선택지 표의 「정할 자리」·「다시 볼 때」 행이 받는다(§12.3b).
849
973
 
850
974
  근거의 강도·확률 어휘.
851
975
  - **ICD 203**(미 정보공동체 분석 기준) · **Kent 확률 어휘** — 추정에는 확률 어휘 사전이 붙고, 출처의 신뢰도와 정보의 신뢰도를 구분한다. → `appendix` 확률어 사전.
852
976
  - **GRADE**(Guyatt 외, 2008) — 근거 등급은 연구 설계에서 시작해 편향·간접성·이해관계로 **하향**한다. → `grades` 하향 규율.
853
- - **TRL**(NASA 1~9) — 「앞선 기술」에는 성숙도 단계가 붙어야 비교가 된다. → 옵션 표 「성숙도」 열.
977
+ - **TRL**(NASA 1~9) — 「앞선 기술」에는 성숙도 단계가 붙어야 비교가 된다. → 선택지 표 「성숙도」 행.
854
978
 
855
979
  부정 서술·나쁜 소식 전달(사람·조직·국가를 배제의 주어로 세우지 않는 이유).
856
980
  - **Williams(2007) 사회적 배제** · **Baumeister 외(2001) 「Bad is stronger than good」** — 배제·부정 신호는 같은 크기의 긍정보다 크게 작용한다. 배제 서술 하나가 문서 전체의 인상을 정한다.
857
981
  - **Bies & Shapiro(1987) 인과적 설명** · **Langer & Rodin(1976) 통제감** — 거절에 이유가 붙으면 부당하다는 판단이 크게 준다. 선택지가 남으면 통제감이 유지된다. → 부정 하나에 원인·기준·재검토·선택지 넷.
858
982
  - **SPIKES**(Baile 외, 2000) · **Covello 27/9/3** · **Sandman 위험 소통** — 나쁜 소식은 상대가 아는 것을 먼저 확인하고, 27단어·9초·3요점 안에, 감정과 사실을 분리해 전한다. → 요약 4칸 브리핑판의 순서.
859
983
  - **Sherman & Cohen(2002) 자기 확인** — 나쁜 소식 앞에 상대의 가치·성취를 한 문장 확인하면 방어적 해석이 준다. → 「상대가 이미 잘 둔 것 한 문장」.
860
- - **자기결정이론(Deci & Ryan)** — 「해야 한다」는 자율성을 깎고, 선택지를 남긴 권고는 안 그렇다. → 「권고함 — 선택은 상대에게」.
984
+ - **자기결정이론(Deci & Ryan)** — 「해야 한다」는 자율성을 깎고, 선택지를 남긴 제안은 안 그렇다. → 두 길을 대칭으로 남기고 우리 의견은 한 절에 둔다(§12.3b).
861
985
  - **Google · Microsoft 오류 메시지 지침** — 「무엇이 안 되는가」가 아니라 「무엇을 하면 되는가」를 먼저. 사용자를 주어로 한 부정(「You cannot」)을 피한다. → 조건 주어 규칙(SKILL.md 10번, content-pipeline 유형 K).
862
986
  - **IDEO 「How might we」** · **Stokes(2006)** — 제약을 질문으로 바꾸면 선택지가 생긴다. 「[조건]이면 [기준] 때문에 [결과] — [선택지]」 틀의 마지막 칸.
863
987
 
@@ -896,10 +1020,12 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
896
1020
 
897
1021
  ---
898
1022
 
899
- ## 14. 톤 — 개조식. 이것부터 바꾼다
1023
+ ## 14. 톤 — 자리가 정한다. 이것부터 바꾼다
1024
+
1025
+ ### 14-1. 기록 자리 — 개조식
900
1026
 
901
- 논문·과제·공문 문체다.
902
- `~합니다 / ~해 주세요 / ~했습니다` **아님**.
1027
+ 논문·과제·공문 문체다. **우리·사물이 주어인 자리**에만 건다 —
1028
+ 요약, 건의 증상·원인·조치·확인 방법, 절 본문, 대조표, 부록, 판권지의 사실 서술.
903
1029
 
904
1030
  | 쓰지 마라 | 써라 |
905
1031
  |---|---|
@@ -913,6 +1039,23 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
913
1039
  질문형(여백 주석의 Why, 활용법 라벨)은 `~하는가?` / `~인가?`.
914
1040
  `~합니까?` 아님.
915
1041
 
1042
+ ### 14-2. 요청 자리 — 하십시오체
1043
+
1044
+ **고객이 주어이거나 실제로 말을 거는 자리**는 종결까지 존댓말이다 —
1045
+ `asks` 절의 `open_items`·`cta`, PART I 간지, 판권지의 회신 안내.
1046
+
1047
+ | 쓰지 마라 | 써라 |
1048
+ |---|---|
1049
+ | 확인 부탁드**림** | 확인 **부탁드립니다** |
1050
+ | 회신 주시면 반영하겠**음** | 회신 주시면 **반영하겠습니다** |
1051
+ | 열어 주셔야 **함** | 열어 **주시기 바랍니다** |
1052
+ | 동의해 주시면 **됨** | 동의 여부를 **회신해 주시기 바랍니다** |
1053
+ | 담당하시는 쪽의 확인이 **필요** | 담당하시는 쪽에서 확인해 **주셔야 합니다** |
1054
+
1055
+ 명사형 종결(`-ㅁ/-음`)은 한국어 상대높임법의 **등급 밖**이라 청자 높임이 0 이다 —
1056
+ 중립이 아니라 기록체이고, 사람에게 직접 쓰면 하대로 읽힌다. 「부탁드림」도 존대가 아니다.
1057
+ 이 자리에서 톤 검사기가 내는 경어체 경고는 **의도된 것이므로 고치지 않는다**.
1058
+
916
1059
  **「고객 언어로 바꾼다」는 규칙은 그대로다.**
917
1060
  개조식은 문체이지 내용이 아니다 — 내부 용어를 고객 용어로 바꾸는 일(0단계)을 건너뛰는 핑계가 되지 않는다.
918
1061
 
@@ -927,6 +1070,22 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
927
1070
  글줄 폭을 넘으면 접히고, 좁은 여백 주석 단에서는 절반 넘게 접힌다.
928
1071
  폭의 실측값은 `gazette-report` 스킬에 있다.
929
1072
 
1073
+ ⚠ **표 칸에서 날짜의 마침표를 조심하라 — 쪼개진다.**
1074
+ 분할기는 마침표를 문장 끝으로 보므로, 한 칸에 `9. 8. 출시됨` 처럼 **연도 없는 날짜와 다른 글자를
1075
+ 함께** 넣으면 `9.` / `8.` / `출시됨` **세 줄로 쪼개져** 선다(`.sn` 이 `display:block` 이다).
1076
+ 실사고: 2026-09-11 고객사 보고서 표 6-1 — 안드로이드 칸만 파편으로 서고 아이폰 칸은 마침표가
1077
+ 없어 한 줄로 멀쩡히 서는 바람에, **안드로이드가 아직 안 끝난 것처럼 읽혔다**(오너 반려).
1078
+
1079
+ | 쓰지 마라 | 써라 |
1080
+ |---|---|
1081
+ | 한 칸에 `9. 8. 출시됨` | 날짜 열을 따로 세워 그 칸은 `9. 8.` 만 (표 2-1 이 이 꼴이라 안 쪼개진다) |
1082
+ | 한 칸에 `9. 10. 전체 출시` | 마침표를 빼서 `9월 10일 전체 출시` |
1083
+ | 본문 문장 안 `2026. 9. 10. 기준임` | **연도가 붙은 꼴은 안전하다** — 마스크가 가린다 |
1084
+
1085
+ 연도 없는 꼴은 2026-09-11 에 `gazette-report/scripts/boundary.py` 의 마스크에 추가했다
1086
+ (회귀 시험 23표본 통과, 옛 정규식과 달라진 것은 이 한 꼴뿐). **다만 포털 발행본을 그리는 것은
1087
+ 서버이지 그 스크립트가 아니다** — 서버가 같이 고쳐졌다는 확인이 없으면 원고에서 피하는 것이 답이다.
1088
+
930
1089
  ---
931
1090
 
932
1091
  ## 15. 포털이 문서 **둘레**에 더해 주는 것 (저작 대상 아님)
@@ -946,7 +1105,8 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
946
1105
  3. 돌아온 열람 주소를 **실제로 연다** — 절 누락 · 여백 주석 · 표 마감 · 인쇄 미리보기.
947
1106
  자동 검사가 통과해도 눈으로 연다.
948
1107
  안 보이는 배지 · 빈 목록 항목 · 낱말 중간 줄바꿈은 눈으로만 잡힌다.
949
- 4. 톤: `습니다|십시오|합니다|입니다|됩니다|주세요` 가 본문에 **0건**인가.
1108
+ 4. 톤: `습니다|십시오|합니다|입니다|됩니다|주세요` 가 **기록 자리에** 0건인가(§14-1).
1109
+ 그리고 **요청 자리가 하십시오체로 맺는가** — 「부탁드림」·「바람」·「하시면 됨」이 남아 있으면 하대다(§14-2).
950
1110
  5. 확인 못 한 범위를 적었는가.
951
1111
 
952
1112
  조판 검사기 8종(`kcheck.mjs` · `read.mjs` · `tone.mjs` · `fontchk.mjs` · `flexcheck.mjs` ·
@@ -59,7 +59,7 @@ python3 ~/.claude/skills/genetics-report/assets/render.py report.json
59
59
  | 읽고 나서 **해야 할 행동**은 무엇인가 | `cta`·`open_items`·건별 `how_to_check` 가 여기서 결정된다 | 「각 건을 한 번씩 열어 확인하고, 남은 판단 사항에 답을 준다」 |
60
60
  | 문서에 실어도 되는 **참조 체계**는 무엇인가 | 독자가 확인할 수 없는 참조는 신뢰에 기여하지 않고 노이즈만 된다 | 「본인이 제보한 원본 링크만. 내부 티켓 번호는 안 됨」 |
61
61
  | 전달 경로 — 포털 링크인가, 파일 하나인가, 인쇄도 도는가 | 포털은 셸이 문서 둘레에 요약·댓글을 놓는다. 파일 전달은 그것이 없다 | 「포털 링크 + 인쇄 가능해야 함」 |
62
- | 읽고 나서 **무엇을 결정하는가** — 선택지·우리 권고·기한 | 답이 있으면 「결정한다」 모드다. `open_items` 가 권고가 되고 기한 ⚠ 가 걸린다(lim-portal-format §12.3b) | 「[방식 A] 도입 여부 — 12월 31일까지」 |
62
+ | 읽고 나서 **무엇을 결정하는가** — 선택지·선택지마다 달라지는 것·기한. 우리 의견을 낼지는 따로 묻는다 | 답이 있으면 「결정한다」 모드다. `open_items` 가 고객이 고를 **물음**이 되고 기한 ⚠ 가 걸린다. 의견은 내면 한 절 한 자리(lim-portal-format §12.3b) | 「[방식 A] 를 들일지, 그대로 둘지 — 12월 31일까지」 |
63
63
 
64
64
  ### 이 답에서 곧바로 정해지는 것
65
65
 
@@ -70,6 +70,11 @@ python3 ~/.claude/skills/genetics-report/assets/render.py report.json
70
70
  검수자에게는 「지금 부탁드리는 것」이 PART 1 이지만, 사후 열람자에게는 「경과」가 앞이다.
71
71
  - **절 구성(`sections`)** — 독자가 바뀌면 절이 통째로 없어진다.
72
72
  전 건 검수자에게는 `status` 절의 대조표가 핵심이지만, 결정권자 독자에게는 요약면 상태 막대만 남기고 대조표를 빼는 것이 맞다.
73
+ - **말을 거는 자리의 종결** — 독자가 **사람**이면 그 사람에게 직접 하는 말은 하십시오체로 맺는다
74
+ (`cta`·`open_items`·PART I 간지·판권지 회신 안내). 우리가 한 일을 적는 기록 자리만 개조식이다.
75
+ ⚠ 이 줄이 오래 없어서 **말투 반려가 네 번 났다**(2026-09-02 · 09-03 ×2 · 09-11) —
76
+ 독자를 사람으로 정해 놓고 문체는 상수로 두면, 문서가 사람이 아니라 대장에게 말한다.
77
+ 자세한 것은 SKILL 5·5a.
73
78
 
74
79
  | 규칙 | 근거 | 어기면 |
75
80
  |---|---|---|
@@ -211,15 +216,19 @@ RANK_TAG = ['live', 'data', 'done', 'soon'] # 배지 종류
211
216
 
212
217
  ### 문체
213
218
 
214
- 개조식이다 — `~함` / `~했음` / `~필요` / `~한 상황`.
215
- 대응표는 `references/lim-portal-format.md` §1.
219
+ **자리가 정한다.** 요약·건·절 도입문처럼 **우리가 한 일을 적는 기록 자리**는 개조식
220
+ (`~함` / `~했음` / `~임`). **요청 자리**(`cta`·`open_items`·PART I 간지·판권지 회신 안내)는
221
+ **하십시오체**(`~하여 주시기 바랍니다` / `~부탁드립니다` / `~하겠습니다`).
222
+ 자리별 규율은 SKILL 5·5a, 대응표는 `references/lim-portal-format.md` §14-1·§14-2.
216
223
 
217
224
  > · 개발 용어(파일명·커밋해시·SQL·클래스명) 금지. **배포 단계 용어(스테이징/테스트환경) 금지.**
218
225
  > · 결론을 먼저 쓴다. 각 문단은 리드 문장 하나로 시작한다.
219
226
  > · 과장 금지. 확인한 것과 확인하지 못한 것을 구분해서 쓴다.
220
227
 
221
- 문체를 안 바꾸면 낱말이 아니라 **조판의 문제**로 남는다 — 경어체 문장은 관보 문법 위에서 겉돈다.
222
- `tone.mjs` 가 경어체 잔존을 센다.
228
+ 기록 자리에서 문체를 안 바꾸면 낱말이 아니라 **조판의 문제**로 남는다 — 경어체 서술문은
229
+ 관보 문법 위에서 겉돈다. 반대로 요청 자리에서 개조식을 고집하면 **하대로 읽힌다** — 이쪽이
230
+ 네 번 반려된 자리다(SKILL 5a). `tone.mjs` 는 판단 항목 본문(`p.ask__body`)과 「」 인용만 빼고 세므로(2026-09-12),
231
+ `cta`·간지·판권지 회신 안내 같은 다른 요청 자리의 경어체 경고는 **사람이 걸러 읽고 그대로 둔다**.
223
232
 
224
233
  ### `summary` — 4개의 `{lead, body, refs}`
225
234
 
@@ -232,7 +241,7 @@ RANK_TAG = ['live', 'data', 'done', 'soon'] # 배지 종류
232
241
  4. 검토 요청 — 무엇을 봐 주면 되는지
233
242
 
234
243
  「결정한다」 모드에서는 4칸의 내용이 다르다 — 무엇을 언제까지 결정하는가 / 검토한 선택지와 편익·비용·불확실성 /
235
- 우리 권고와 근거의 등급·성숙도 / 결정 뒤 이어지는 것(SKILL.md 4단계 브리핑판).
244
+ 확인한 사실과 근거의 등급·성숙도(권고 없음 — 의견은 별도 절 한 자리) / 결정 뒤 이어지는 것(SKILL.md 4단계 브리핑판).
236
245
 
237
246
  ### 요약 근거 게이트 — 발행이 **거절**된다
238
247
 
@@ -260,7 +269,8 @@ RANK_TAG = ['live', 'data', 'done', 'soon'] # 배지 종류
260
269
 
261
270
  이 한 줄이 문서의 성격을 바꾼다.
262
271
  같은 데이터를 「고객이 해야 할 일」로 쓰면 책임 전가 문서가 되고, 「우리가 아직 못 닫은 것」으로 쓰면 신뢰 문서가 된다.
263
- 그래서 `open_items[].title` 은 전부 1인칭이다 — `검증에 쓴 표본이 작음`, `같은 전화번호를 쓰는 계정의 주인은 우리가 판단할 수 없음`.
272
+ 그래서 검수·보고 문서의 `open_items[].title` 은 전부 1인칭이다 — `검증에 쓴 표본이 작음`, `같은 전화번호를 쓰는 계정의 주인은 우리가 판단할 수 없음`.
273
+ 결정 문서(브리핑)의 판단 항목은 다르다 — 고객이 고를 **물음**이다(SKILL 0.5단계 5행 · lim-portal-format §12.5b).
264
274
 
265
275
  | 규칙 | 어기면 |
266
276
  |---|---|
@@ -496,15 +506,22 @@ RANK_TAG = ['live', 'data', 'done', 'soon'] # 배지 종류
496
506
  | 여백 주석 | 본문 첫 문장의 복사본이 아닌가. 셋을 채우려고 넣은 줄이 없는가 |
497
507
  | 건 필드표 | 증상→원인→조치→확인 방법 순서가 전 건 같은가 |
498
508
  | 대조표 | 등급 표식이 강한 순으로 서는가. 5번째 등급이 눌려 있지 않은가 |
499
- | 본문 전체 | 경어체 잔존 0건인가(`습니다|십시오|합니다|입니다|됩니다|주세요`) |
509
+ | 기록 자리 | 경어체 잔존 0건인가(`습니다|십시오|합니다|입니다|됩니다|주세요`) |
510
+ | 요청 자리 | 반대다 — `cta`·`open_items`·PART I 간지·판권지 회신 안내가 **하십시오체로 맺는가**. 명사형 종결(`부탁드림`·`바람`·`하시면 됨`)이 남아 있지 않은가 |
500
511
  | 본문 전체 | 낱말 중간에서 줄이 바뀐 곳이 없는가 |
501
512
  | 본문 전체 | 독자가 조회할 수 없는 식별자가 남아 있지 않은가(포털 발행이면 이 그물이 없다 — 여기가 마지막 관문이다) |
502
513
  | 본문 전체 | 「A에서 B로」 전환 공식 헤드라인이 없는가 — **기계가 안 잡는다**(SKILL.md 카피 게이트 표) |
503
514
  | 본문 전체 | 부정 서술의 주어가 사람·조직·국가가 아닌가 — 기계는 「이유 없는 부정 종결」까지만 잡는다(content-pipeline §6.4) |
515
+ | 본문 전체 | (결정권이 고객에게 있는 문서) 권고 낱말이 제목·표 열·절 이름·여백 주석·요약면에 배어 **동의만 받는 틀**인가. 우리 의견은 한 절 한 자리에만 있는가 — 기계는 **낱말까지**(`gazette.py` ⚠ W1). 동의만 받는 틀인지 · 의견 한 자리 여부는 **사람의 눈**(SKILL.md 카피 게이트 표 · lim-portal-format §12.6b) |
516
+ | 도판 출처 줄 · 인용 | 도판·인용마다 **원본 위치**(문서 이름 + 쪽·행·주소, 또는 건 §n.n)가 있는가. 「흐리다」「못 연다」는 말은 원본 해상도로 **잰 뒤** 쓴 것인가 — 고객·제3자 자료에서 낸 도판(`user-provided`)의 원본 위치 누락은 `gazette.py` ⚠ W2, 재고 썼는지와 인용이 원문 그대로인지는 **사람의 눈**(독자 검토 「원본 대조」 관점) |
517
+ | 결정 요청 | 결정에 **이용자 화면의 변화**(팝업·안내·칸의 유무)가 따르는데 고객 디자인 시스템 규격의 **도안**이 없는가 — **없음 — 사람의 눈**(절차는 visual-first 「화면 도안」) |
518
+ | 본문 전체 | 진행 상태 어휘(정해짐·회신 대기·N판)·개수로 상태를 세는 캡션·직전 판과의 비교(「~ 그대로」)가 남았는가. 정해진 것은 사실로 배경에, 결정 요청에는 지금 열린 것만 — 기계는 **낱말과 개수로 상태를 세는 표 제목**까지 잡는다(`gazette.py` 과정 어휘 ⚠ · readability R11h). 표 제목 밖의 개수 표현·「~ 그대로」 비교는 사람의 눈 |
504
519
  | 부록 | 본문에서 실제로 참조되는 것만 있는가 |
505
520
  | 판권지 | 문서가 여기서 닫히는가. 꼬리 카드가 붙어 있으면 구버전이다 |
506
521
  | 인쇄 미리보기 | 절마다 새 쪽에서 시작하는가. 표가 쪽 경계에서 잘리지 않는가 |
507
522
 
523
+ 까닭(권고 낱말 · 원본 위치 · 도안 · 진행 상태 어휘 네 행): 실사례(2026-09-11, 고객사 결정 브리핑) 반려에서 왔다 — 그날엔 넷 다 기계 집행자가 없었다. 지금 기계는 낱말(과정 어휘 · W1)과 원본 위치 누락(W2)까지 잡는다(운영 dry_run 은 렌더러 배포 뒤 — lim-portal-format §11-6 머리). 틀 · 의견 자리 · 도안 유무 · 원본을 쟀는지는 여전히 이 표가 그물이다.
524
+
508
525
  ---
509
526
 
510
527
  ## 9. 8단계 — 전달
@@ -632,7 +649,7 @@ MCP 가 찍는 요약 줄은 **옛 서식의 셈**만 읽는다(`mcp/genetics.mj
632
649
  | 12 | 요약면 | `notice`·`bar`·`bar_note`·`stats` | 6 |
633
650
  | 13 | 부록·판권지 | `appendix`·`colophon` | 6 |
634
651
  | 14 | 고객사 로고 (있으면) | `assets` — `role:"logo"` 하나만 실린다 | 6 |
635
- | 15 | (브리핑) 권고마다 기한 · 옵션 표 8열 · 「하지 않기로 한 것」 절 · 활용 계획 절 | `open_items[].body` · `sections[].tables` · `note` 절 둘 | 4·6 |
652
+ | 15 | (브리핑) 판단 항목마다 물음 제목과 기한 · 두 길 대칭 한눈표 · 선택지 전치 행렬 · 의견 절 하나 · 바꾸는 길의 위험 · 회신 뒤 일정 | `open_items` · `sections[].tables` · `note` 절 넷 | 4·6 |
636
653
  | 16 | (브리핑) `doc_type` 에 「브리핑」 — 렌더러 ⚠ 셋이 켜진다 | `doc_type` | 0 |
637
654
 
638
655
  건드리지 않는 것: `build.py`·`gazette.py`·`gazette.css`·`sentbreak.py`·`boundary.py`.