genetics-mcp 2.26.0 → 2.27.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/bin/aarch64-apple-darwin/gcell +0 -0
- package/bin/aarch64-unknown-linux-musl/gcell +0 -0
- package/bin/manifest.json +5 -5
- package/bin/x86_64-apple-darwin/gcell +0 -0
- package/bin/x86_64-pc-windows-gnu/gcell.exe +0 -0
- package/bin/x86_64-unknown-linux-musl/gcell +0 -0
- package/genetics.mjs +1527 -191
- package/package.json +1 -1
- package/skills/gazette-report/SKILL.md +11 -1
- package/skills/gazette-report/scripts/tone.mjs +30 -3
- package/skills/gazette-report/scripts/tone.test.mjs +31 -0
- package/skills/genetics-cell-id/SKILL.md +73 -54
- package/skills/genetics-define/SKILL.md +34 -1
- package/skills/genetics-report/SKILL.md +67 -69
- package/skills/genetics-report/assets/example/cases-briefing-designs.json +15 -5
- package/skills/genetics-report/assets/example/cases-briefing.json +14 -5
- package/skills/genetics-report/assets/example/cases.json +25 -9
- package/skills/genetics-report/assets/example/decision.json +313 -0
- package/skills/genetics-report/assets/example/report-briefing-designs.json +2 -2
- package/skills/genetics-report/assets/example/report-briefing.json +1 -1
- package/skills/genetics-report/assets/example/report.json +65 -21
- package/skills/genetics-report/assets/render.py +204 -49
- package/skills/genetics-report/references/content-pipeline.md +6 -6
- package/skills/genetics-report/references/decision-format.md +112 -0
- package/skills/genetics-report/references/diagrams.md +52 -94
- package/skills/genetics-report/references/edition-review.workflow.js +81 -31
- package/skills/genetics-report/references/history.md +35 -0
- package/skills/genetics-report/references/lim-portal-format.md +92 -236
- package/skills/genetics-report/references/linear-read-test.workflow.js +33 -10
- package/skills/genetics-report/references/process.md +32 -25
- package/skills/genetics-report/references/readability.md +9 -8
- package/skills/genetics-report/references/reader-review.workflow.js +167 -25
- package/skills/genetics-report/references/visual-first.md +54 -42
- package/skills/genetics-report/assets/diagram.mjs +0 -208
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# Lim 포털 서식 — 관보 데이터 모델 원전
|
|
2
2
|
|
|
3
3
|
포털에 발행하는 문서는 **한국 정부간행물(관보) 문서 문법**으로 조판된다.
|
|
4
|
-
|
|
4
|
+
서식은 `lim-report` 하나이고 서버가 정한다 — 이 문서는 보고 모드(결정 블록이 없는 원고)의 칸 쓰는 법이다. 결정 블록(`decision_brief.decisions` — 결정 모드)은 `decision-format.md`.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
칸의 이름·뜻·꼴의 정본은 도구 스키마 REPORT_DATA(mcp/genetics.mjs)다.
|
|
7
|
+
이 문서는 그 칸을 `lim-report` 에서 어떻게 쓰고, 없으면 무슨 일이 나는가를 적는다.
|
|
7
8
|
조판 규칙(활자 스케일·괘선·간격 격자·인쇄 페이지 문법·검사기 8종)은 여기 안 적는다 —
|
|
8
9
|
`gazette-report` 스킬이 그 원전이고, 두 벌로 두면 갈라진다.
|
|
9
10
|
|
|
@@ -33,16 +34,16 @@ Tufte 의 여백 노트가 근거다 — 참조를 문서 끝이 아니라 참
|
|
|
33
34
|
|
|
34
35
|
---
|
|
35
36
|
|
|
36
|
-
## 1. 서식은
|
|
37
|
+
## 1. 서식은 서버가 정한다
|
|
37
38
|
|
|
38
|
-
`report_publish.php` 의 `REPORT_TEMPLATES`
|
|
39
|
+
`report_publish.php` 의 `REPORT_TEMPLATES` 는 `lim-report` 한 줄이다(옛 이름 `lim-decision` 은 서버가 이 이름으로 맞춘다). 모드는 원고 내용이 정한다 — 결정 블록이 있으면 결정 모드다.
|
|
39
40
|
|
|
40
41
|
| 서버가 정하는 것 | 값 |
|
|
41
42
|
|---|---|
|
|
42
43
|
| `render` | `gazette` — `build.py` 의 렌더 경로를 가른다 |
|
|
43
44
|
| `css` | `['gazette.css']` |
|
|
44
45
|
| `font` | Pretendard GOV · `fonts/pretendard-gazette.woff2` · **wght `300 700` 가변 1면** |
|
|
45
|
-
| `reads` (지문) | `build.py` · `gazette.py` · `boundary.py` · `sentbreak.py` |
|
|
46
|
+
| `reads` (지문) | `build.py` · `gazette.py` · `decision.py` · `decision.css` · `boundary.py` · `sentbreak.py` |
|
|
46
47
|
|
|
47
48
|
- 폰트는 **한 면**이다(실측 409,044B).
|
|
48
49
|
정적 3면이 아니고 400–700 도 아니다 — 300 이 필요한 것은 표지 둘째 행과 간지 숫자가 가는 굵기라서다.
|
|
@@ -188,7 +189,7 @@ python3 assets/render.py <report.json>
|
|
|
188
189
|
`refs` `remain` `remain_unit` `source` `source_row` `sum` `symptom` `toc` `urgent`
|
|
189
190
|
|
|
190
191
|
건 필드표의 네 라벨이 `symptom`(증상)·`cause`(원인)·`fix`(조치)·`check`(확인 방법)다 —
|
|
191
|
-
|
|
192
|
+
옛 결정 브리핑은 이 넷을 물음·관찰·판단·재현 방법으로 바꿔 썼다. **바꾼 이름은 그 장치 하나에만 쓴다** —
|
|
192
193
|
건 절 밖 절의 부제·표 제목·열 머리에 같은 낱말을 다시 세우면 렌더러가 ⚠ 로 센다(§10-1 「건 행 이름 …」). 의견 표의 열은 「의견」이다.
|
|
193
194
|
`col_evidence` 는 표에 찍히는 라벨이 아니라 **브리핑 ⚠ 가 찾는 열 이름**이다(§10 — 기본 「근거 등급」).
|
|
194
195
|
|
|
@@ -196,7 +197,7 @@ python3 assets/render.py <report.json>
|
|
|
196
197
|
|
|
197
198
|
| 어디 | 칸 | 비고 |
|
|
198
199
|
|---|---|---|
|
|
199
|
-
| `history[]` | `no` · `date` · `note` | `no` 를 비우면 1부터 매긴다. **고객에게 공개하기 전의 수정은 판이 아니다** — 공개할 판 한 행(「최초 발행」)만 두고, 공개 뒤 내용이 바뀐 update 에만 행을 더한다. 마지막 `date` 는 `meta` 「작성」·판권지 「작성」과 **한 값**(공개하는 날)이라 공개 직전 update 로 셋을 함께 맞춘다. 날짜 표기는 문서 안에서 한 꼴(「2026. 9. 1.」). 문서 밖 결정의 날짜는 본문에 적지 않는다(결정 장부,
|
|
200
|
+
| `history[]` | `no` · `date` · `note` | `no` 를 비우면 1부터 매긴다. **고객에게 공개하기 전의 수정은 판이 아니다** — 공개할 판 한 행(「최초 발행」)만 두고, 공개 뒤 내용이 바뀐 update 에만 행을 더한다. 마지막 `date` 는 `meta` 「작성」·판권지 「작성」과 **한 값**(공개하는 날)이라 공개 직전 update 로 셋을 함께 맞춘다. 날짜 표기는 문서 안에서 한 꼴(「2026. 9. 1.」). 문서 밖 결정의 날짜는 본문에 적지 않는다(결정 장부, SKILL 3b 「결정 주체」). 집행자: `gazette.py Doc.date_scan()` ⚠(세 자리를 0 채움으로 견줌 — §10-1) · 표기 한 꼴과 공개하는 날인지는 사람 눈 |
|
|
200
201
|
| `guide[]` | `q`(질문) · `a[]`(▶ 지시 목록) | `a` 안에는 `<b>` 같은 인라인 태그가 **안 통한다**(이스케이프된다) |
|
|
201
202
|
| `parts[]` | `no` · `title` · `tone` · `lede` · `questions[]` · `roman` | `no` 가 `sections[].part` 가 가리키는 열쇠다 |
|
|
202
203
|
| `notice` | `state`(`critical`\|`info`\|`success`) · `text` | 밖의 값은 `info` 로 강등 |
|
|
@@ -365,8 +366,8 @@ python3 assets/render.py <report.json>
|
|
|
365
366
|
|
|
366
367
|
```json
|
|
367
368
|
"grades": {
|
|
368
|
-
"운영 환경 확인": ["m-live", "운영 환경에서
|
|
369
|
-
"실데이터 대조": ["m-data", "운영
|
|
369
|
+
"운영 환경 확인": ["m-live", "운영 환경에서 동작시켜 본 결과를 찍은 화면으로 실음"],
|
|
370
|
+
"실데이터 대조": ["m-data", "운영 데이터·서버에서 대조하거나 잰 결과를 표로 실음. 화면에서는 보지 않음"]
|
|
370
371
|
}
|
|
371
372
|
```
|
|
372
373
|
|
|
@@ -426,6 +427,7 @@ python3 assets/render.py <report.json>
|
|
|
426
427
|
|
|
427
428
|
`dry_run` 의 `warnings` 가 **실질적 유일한 품질 관문이다.**
|
|
428
429
|
렌더러가 센 것이 먼저 오고, 그 뒤에 규격 게이트 · 금칙어(`forbid`) · 그림 관문이 붙는다.
|
|
430
|
+
결정 모드 문서에서는 이 절과 §10-1 의 길이 상한 · 「글로만 서 있습니다」·굵게·판단 요청 산문 · 여백 주석 · 번호 가리킴 · 브리핑 · 요약면 막대 행이 돌지 않는다 — 그 모드의 알림은 `decision-format.md` 5절.
|
|
429
431
|
|
|
430
432
|
| ⚠ | 무엇이 안 실렸는가 |
|
|
431
433
|
|---|---|
|
|
@@ -442,8 +444,9 @@ python3 assets/render.py <report.json>
|
|
|
442
444
|
| `chapters`·`figure`(**최상위 칸**) 는 자리가 없어 | 옛 서식 전용 칸. `assets[].role:"figure"` 와 다른 것이다 |
|
|
443
445
|
| 절 …의 `principles`/`logic` 은 자리가 없어 | 같음 |
|
|
444
446
|
| `wide`/`marg_width` 값이 길이 단위가 아니라 | CSS 값 검사 |
|
|
445
|
-
|
|
|
446
|
-
|
|
|
447
|
+
| 판단 항목 「…」에 기한과 선택지가 있습니다 — 결정 블록(decision_brief.decisions)으로 쓰면 결정 모드로 섭니다 | 요청 절(`asks`)이 서고, `open_items[]` 가운데 기한(아래 줄과 같은 날짜 · 상대 기한)과 선택지(끝 괄호를 뺀 제목이 「…인가」·「…까」·「?」로 끝나는 물음, 또는 본문의 「…중 하나」·「가운데 어느」)가 함께 있는 항이 있다 — 「… 확인 요청」으로 끝나는 제목은 안 센다(「… 회신 요청」은 본문의 선택지로 가른다). `doc_type` 낱말과 무관하다(관보 v3 2026-10-07 — 전에는 「브리핑」 낱말이 신호였다). 정할 것이면 결정 블록으로 옮긴다(`decision-format.md`) |
|
|
448
|
+
| 브리핑에 `asks` 절이 없습니다 | `doc_type` 에 「브리핑」이 있는데 결정 요청 절이 없다 — 독자가 할 일이 없는 블로그 글이다(옛 결정 브리핑) |
|
|
449
|
+
| 판단 항목 「…」에 기한이 없습니다 / 확인 요청 「…」에 기한이 없습니다 — 본문 첫 문장에 날짜나 상대 기한(받으신 뒤 N일 안)을 적습니다 | `open_items[]` 제목·본문 어디에도 날짜(`2026년` · `2026. 9. 30` · `9월 30일`)나 수가 붙은 상대 기한(`N 일·주·개월·달·년·영업일` + `까지·이내·안`)이 없다. 맨 「까지·이내」는 기한이 아니다(「배포 전까지」는 걸린다). 제목이 「… 확인 요청」으로 끝나면 둘째 문구로 가른다. 기한 없는 판단 항목은 결정을 요청한 것이 아니다. 문구의 「권고」는 「판단 항목」으로 바꿨다(2026-09-11) — 검사기가 「권고」라고 부르면 원고에도 배어 든다 |
|
|
447
450
|
| 브리핑의 표에 「근거 등급」 열이나 행이 없습니다 | 어느 `sections[].tables[]` 에도 `labels.col_evidence`(기본 「근거 등급」)가 열(`cols`)로도, 행의 첫 칸(전치 행렬의 「견줄 것」)으로도 없다 — 선택지 비교표는 근거의 강도를 같이 보여야 한다 |
|
|
448
451
|
| 절 …의 …에 회차 서술이 있습니다 | 본문 절이 「이번 회차에 추가함」을 말한다 — 회차 변경점은 발행 이력(`history`)의 몫이다. 고객은 이 문서를 처음 읽는 사람이라 우리 작업 순서를 읽을 이유가 없다(SKILL 3b) |
|
|
449
452
|
| 절 …의 도판 「id」는 세로가 길어(w×h) 열람 화면에서 폭 N px 로 줄어 섭니다 | `.plate__img` 의 `max-height:78vh` 가 폭을 깎는다 — `760·h/w > 702`(전폭 1030). 위아래 두 장으로 나눈다(readability.md R9) |
|
|
@@ -454,7 +457,7 @@ python3 assets/render.py <report.json>
|
|
|
454
457
|
| 도판 「id」 캡션이 N자입니다 / 캡션이 N문장입니다 / 출처 줄이 N자입니다 | 캡션 60자 한 문장, 출처 40자(R11c) |
|
|
455
458
|
| 요약면 막대가 대기 N · 완료 N 인데 문서의 셈은 … 입니다 / 머리띠 요청 잔여가 N 인데 판단 항목은 N개입니다 | `bar` 의 대기(`wait`) 합이 미결 건 수·판단 항목 수 어느 것과도 다르거나, 완료 합이 나머지 건 수·전체 건 수 어느 것과도 다르다 / 손으로 적은 `remain` 이 판단 항목 수와 다르다. 대조만 하고 채우지 않는다. 건이 없는 문서의 막대·숫자가 아닌 막대 값·빈 `remain`·`stats` 는 대조하지 않는다(§3.3). **막대가 건이 아닌 다른 것을 세면 `bar_note` 에 셈 기준을 밝힌다 — `bar_note` 가 있으면 대조하지 않는다**(실측 2026-09-14: 막대를 세운 원고 셋이 모두 다른 셈이었고 셋 다 각주로 기준을 밝혀 두었다) |
|
|
456
459
|
| 요약면 현황 줄이 N자입니다 / 수치 칸 라벨 「…」이 N자입니다 / 요약 N번째 문단 본문이 N자입니다 | 현황 80자, 라벨 16자, 요약 본문 160자(R11d) |
|
|
457
|
-
| 절 … 도입문이 N자입니다 / 여백 주석 k 가 N자입니다 / 판단 항목 N 본문이 N자입니다 | 도입문 90, 여백 주석 30/45/40, 판단 항목 220자(R11e·f) |
|
|
460
|
+
| 절 … 도입문이 N자입니다 / 여백 주석 k 가 N자입니다 / 판단 항목 N 본문이 N자입니다 | 도입문 90, 여백 주석 30/45/40, 판단 항목 220자(R11e·f) — 보고 모드 한정. 결정 모드는 칸이 네 문장의 뜻을 진다(`decision-format.md` 2절) |
|
|
458
461
|
| 금칙어 「패턴」에 걸린 자리가 N곳입니다 — 경로 「적중」 · …(넘으면 「그 밖 M곳」). 이 문서의 forbid 목록에 든 표현입니다. 포털은 경고로 셉니다. 로컬 렌더(build.py guard)는 렌더된 HTML 에 같은 표현이 남으면 멈춥니다 | 서버 `report_publish.php report_forbid_warnings()`(2026-09-26). 문서의 `forbid` 패턴을 발행 데이터의 글자 칸마다(`data` 한 칸만 뺌 — 렌더러가 안 그리는 `generated_by`·`work` 포함) PCRE(`u`)로 맞춘다. 자리는 5곳까지, 패턴은 앞 50개·한 개 200자까지. 렌더러에는 넘기지 않고 발행을 막지 않는다 — 로컬 렌더와 판정이 갈릴 수 있다(content-pipeline §4.3) |
|
|
459
462
|
| forbid 가운데 세지 못한 패턴이 N개 있습니다 — forbid.i 「패턴」(까닭) · …. 이 패턴들의 적중은 0 이 아니라 미확인입니다 | 같은 함수. 글자가 아님 · 200자 넘음 · 정규식으로 읽히지 않음 · 빈 문자열에 맞아 모든 자리에 걸림 · 실행 상한(까닭은 PCRE 문구 그대로 「끝까지 세지 못함 — …」) · 50개 넘음(「앞 50개만 셈(넘친 K개)」). 조용히 건너뛰면 「금칙어 0」으로 읽혀서 알린다 |
|
|
460
463
|
|
|
@@ -465,14 +468,17 @@ python3 assets/render.py <report.json>
|
|
|
465
468
|
경고가 하나라도 있으면 **그것부터 고친다.**
|
|
466
469
|
경고를 남긴 채 고객에게 링크를 보내지 마라.
|
|
467
470
|
|
|
468
|
-
**통과 기준은 이 한 곳에 둔다 — 통과 = 작성자 몫 ⚠0.** 원고로 고칠 수
|
|
469
|
-
나머지는 전부 0 으로 만든다.
|
|
471
|
+
**통과 기준은 이 한 곳에 둔다 — 통과 = 작성자 몫 ⚠0.** 원고로 고칠 수 없거나 고치지 않아도 되는 경고는 아래 일곱뿐이고,
|
|
472
|
+
나머지는 전부 0 으로 만든다. 일곱은 핸드오프와 공개·교체 승인 물음에 사유 한 줄을 남기고 넘긴다.
|
|
470
473
|
|
|
471
474
|
| 작성자 몫이 아닌 경고 | 왜 | 누구 몫 |
|
|
472
475
|
|---|---|---|
|
|
473
476
|
| 「고객사 로고가 SVG 로 등록돼 있어 표지에 못 싣습니다」·「표지용 파생본이 아직 없습니다」 | 소속처 로고 설정의 상태다 | 소속처 관리 화면(사람) |
|
|
477
|
+
| 「도해 굽기가 서버에서 실패한 그림이 N장 있습니다」와 그 그림의 「…를 그리지 못해 대기 상자로 두었습니다 — <서버 탓 사유>」(§10-1 — 굽기 꺼짐 · 고정 판 없음 · Node · 시간) | 그 서버가 도해를 새로 굽지 않는다(장치 표의 서버 조건). 원고는 맞다 — 도해를 빼서 경고를 지우지 않는다(관보 v3 의 원인 조사: 「경고 0」을 맞추려고 도해를 뺐다) | 서버(사람) — 굽기가 켜진 서버의 다시 굽기가 그린다. 로컬 `render.py` 는 굽기를 켜고 부르므로 거기서 그림이 서는지 본다 |
|
|
474
478
|
| 「바깥에서 받아 오는 것이 있습니다」 — 그 호스트가 **본문 링크**(`[글자](주소)`·맨 주소·건 `source_url`)뿐일 때 | 입고 검사가 `<a href>` 호스트까지 센다(§11-6). 누르는 링크는 받아 오는 자원이 아니다. `<img src>` 등으로 뜨면 작성자 몫 | 서버 검사 수리 전까지 사람이 호스트 목록을 대조 |
|
|
475
|
-
| 경어체 경고 — 읽는 법(`guide`)의 요청 한 줄에서만 날 때 | 요청 자리(§
|
|
479
|
+
| 경어체 경고 — 읽는 법(`guide`)의 요청 한 줄에서만 날 때 | 요청 자리(§14-2)인데 자리로 못 가려 두 문체 관문 모두 센다 | 사람이 자리를 확인 |
|
|
480
|
+
| 「화면을 말했는데 독자가 볼 증거가 없는 곳」 — 확인 방법이 볼 자리로 독자 자기 화면(어디를 열면)만 둔 곳 | 확인 방법은 독자가 그 결과를 볼 자리 + 우리가 그것을 본 때·환경이고, 볼 자리로 독자 자기 화면만 두는 것도 허용한다(2026-10-01 사용자 결정 ①). 렌더러는 「…, 8. 23. 운영 관리자 웹에서 봄」 같은 꼬리를 증거로 받지 않는다 — 그 꼬리 한 줄이 캡처 대신 경고를 지우는 가장 싼 길이 되기 때문이다(2026-10-02) | 작성자가 그 곳 수(N곳)를 공개·교체 승인 물음에 싣고(결정 ③) 사람이 판단한다 — 캡처를 실으면 사라진다 |
|
|
481
|
+
| 「화면을 말했는데 독자가 볼 증거가 없는 곳」 — 그 화면 주장을 받치는 것이 우리가 센 결과 표(기기별·조건별 결과)뿐인 곳 | 표는 우리가 옮겨 적은 글이라 독자가 그 화면을 보지 못한다 — 렌더러는 표를 화면 주장의 증거로 치지 않는다(2026-10-02, 표 한 장이 캡처 대신 경고를 지우는 길이 되지 않게). 기기·조건마다 다 찍어 싣지 못하는 자리가 있다 | 대표 화면 하나를 찍어 그 건에 실으면 사라진다. 못 실으면 작성자가 그 곳 수(N곳)를 공개·교체 승인 물음에 싣고 사람이 판단한다 |
|
|
476
482
|
| 레포의 렌더러·서버 관문이 운영보다 앞선 동안, 새 규칙대로 고친 자리에 운영 `dry_run` 이 옛 규칙으로 내는 경고 | 운영은 배포된 판으로 센다 — 되돌리면 새 규칙에 걸리고, 배포되면 사라진다 | 새 판에서 0 인지 먼저 잰다 — 렌더러 경고는 레포 작업본을 부르는 로컬 `render.py`, 서버 문체 관문·입고 검사·서식 등록부 칸은 레포 개발 스택의 `dry_run`(절차: genetics lim `cases/dev-스택이-OrbStack-덧판https-base_url으로-떠-있으면-…`). 0 이면 핸드오프에 「배포 뒤 해소」 한 줄 |
|
|
477
483
|
|
|
478
484
|
요청 절의 경어체는 이제 예외가 아니다. 두 문체 관문(서버 `report_tone.php report_tone_warnings()`·로컬 `tone.mjs`)은 같은 요청 자리(`open_items[].body`·`cta`·
|
|
@@ -492,32 +498,36 @@ python3 assets/render.py <report.json>
|
|
|
492
498
|
|
|
493
499
|
| ⚠ | 문턱 | 처방 |
|
|
494
500
|
|---|---|---|
|
|
495
|
-
| 절 N 「이름」이 글로만 서 있습니다(M자) | 산문 400자 이상인데
|
|
501
|
+
| 절 N 「이름」이 글로만 서 있습니다(M자) — 장치 목록의 절 장치 중 하나를 세우십시오 | 산문 400자 이상인데 장치 목록(`private/builder/devices.py`)의 절 장치 0. 건 절(`kind:"cases"`)은 건 다섯 칸의 글과 건에 묶인 표·인용·도판까지 함께 잰다(2026-10-01 — 전에는 건 절이 셈 밖이라 그림 0 인 공개판이 ⚠0 이었다) | 그 절의 요지를 표·흐름도·차트·원문 인용·도해·도판 가운데 하나로 세운다 — 고르는 법은 내용 모양(`visual-first.md` §4 장치 표) |
|
|
496
502
|
| %s 인용 %d 에 출처 줄이 없습니다 — 원본 위치 한 구절(주소·쪽·행)을 적습니다 | `quotes[]` 에 `source_text`·`source_url` 둘 다 없다(`%s` 는 「절 N」 또는 「건 NN-n」) | 원문의 위치 한 구절(주소·쪽·행)을 적는다(§11-8) |
|
|
497
|
-
|
|
|
498
|
-
| 절 %s 도해 「%s」가 %d바이트입니다 — 상한 %d바이트, 노드를 줄이거나 도판(PNG)으로 싣습니다 | `diagrams[].svg` 가 250,000B 초과 | 도해를 나누거나 PNG 도판으로 |
|
|
499
|
-
| 절 %s 도해 「%s」에 viewBox 가 없거나 svg 가 아닙니다 — 폭을 알 수 없어 싣지 않습니다 | 루트 `<svg>` 에 viewBox 가 없다 | `diagram.mjs export` 로 굳힌 SVG 를 넣는다(§11-9) |
|
|
503
|
+
| %s 도해 「%s」의 글자가 표시 %dpx 로 섭니다 — %dpx 이상이 되게 wide 로 두거나 노드를 줄입니다 | 굽은 도해의 가장 작은 font-size × (표시 폭 ÷ viewBox 폭) < 15px(readability R1 과 같은 잣대 — 고정 판이 15px 로 굽으므로 대개 서지 않는다) | `wide: true` 로 전폭에 세우거나 노드·라벨을 줄인다(§11-9) |
|
|
500
504
|
| 절 %s 시계열 「%s」의 표식 「%s」가 점에 없습니다 — marks[].x 는 points[].x 와 같은 값이어야 섭니다 | `charts[].marks[].x` 가 어느 `points[].x` 와도 같지 않다 | 점의 x 값 그대로 적는다(§11-7) |
|
|
501
505
|
| 절 %s 시계열 「%s」의 표식 라벨 「%s」와 「%s」가 %.0fpx 겹칩니다 — 라벨을 줄이거나 하나를 빼고 세로선만 남깁니다 | 표식 라벨은 전부 같은 높이(`T+13`)에 서고 렌더러가 밀어내지 않는다 — 가까운 표식 둘의 글자가 포개진다. 폭은 전각 1.0 · 공백 0.28 · 그 밖 0.55 로 어림한다(`_lblw`) | 라벨을 줄이거나, 하나는 `label` 없이 두어 세로선만 남긴다(§11-7) |
|
|
502
|
-
| 절 %s 도해 「%s」의
|
|
503
|
-
| 절 %s 도해 「%s
|
|
504
|
-
|
|
|
506
|
+
| 절 %s 도해 「%s」의 svg 칸(미리 구운 SVG)은 싣지 않습니다 — %s | `diagrams[].svg` — 작성자가 굳혀 넣던 SVG 칸은 2026-10-07(설계 문서 10 의 4번)부터 싣지 않는다. 원본(설계 데이터)이 문서 밖에 남아 다시 굽거나 고칠 수 없었다. 같은 칸에 `ir` · `compare` 가 있으면 그것을 굽고, svg 칸만 있으면 그림 번호도 안 잡는다 | 구조 · 흐름 · 순서 · 상태 그림은 설계 데이터(`ir`)로 넣는다 — 서버가 굽는다. 수치 · 띠 그림은 차트(§11-4 · §11-7)나 도판(§11-1)으로 |
|
|
507
|
+
| 절 %s 도해 「%s」에 설계 데이터(ir · compare)가 없어 싣지 않았습니다 | 도해 칸에 `ir` · `compare` · `svg` 가 모두 없다 | 설계 데이터를 넣거나 그 칸을 뺀다 |
|
|
508
|
+
| %s 도해 「%s」: 저장소 근거는 서버에서 잴 수 없어 뺐습니다(meta.repository · components[].sources) — 그림은 근거 칸 없이 굽습니다 | 구성도 설계 데이터에 저장소 근거(`meta.repository` · `components[].sources` — Archify 가 `--repo-root` 의 git 으로 커밋 · 줄을 대조하는 칸)가 있다. 서버에는 고객 저장소가 없어 그 칸만 걷고 그림은 굽는다(대표 2026-10-07 — 원본 엔진은 그림 전체를 거절한다). 정지 그림에는 원래 근거가 안 나온다 | 그대로 두어도 그림은 선다. 근거를 독자에게 보이려면 부록 표로 |
|
|
509
|
+
| %s 도해 「%s」를 그리지 못해 대기 상자로 두었습니다 — %s | 첫 `%s` 는 그림 자리(「절 N」 · 결정 장 그림 칸이면 그 자리 이름). 렌더러가 고정 판 Archify 로 `diagrams[].ir`(다섯 종류) · `compare` 를 굽지 못했다. 그림 번호 · id · 캡션 · alt 는 그 자리에 선다(관보가 절차도를 직접 그리던 옛 그리기는 걷었다 — 2026-10-07). 사유는 둘로 갈린다 — **원고 탓**: 엔진 거절(「Archify 거절(코드): …」 — 엔진 진단을 한 줄에 다 싣는다(「 / 」로 잇는다): 노드보다 긴 라벨 「~Npx … node "id" (Wpx)」 · 보조 설명 「needs ~Npx … provides Ppx」 · 필요한 폭) · 다섯 종류 밖 · `compare` 의 `base` · `head` 가 구성도가 아님 · 주소로 가져온 로고(`brand` 객체) · 그림 글 속 §N.N · 그림 250,000B 초과 · 문서의 그림 속성 합 60,000 초과. **서버 탓**: 도해 굽기가 꺼져 있어 새로 굽지 않음(꺼진 서버는 캐시에 굽혀 있는 그림만 싣는다) · 고정 판 Archify 가 없음 · Node 를 실행할 수 없음 · N초 안에 끝나지 않음 · 문서의 굽기 시간을 다 씀 · 산출물에서 그림을 찾지 못함 · 비교 영수증을 읽지 못함 · 「Archify 실행 실패(코드): …」(신호로 죽음 · 힙 초과 · 엔진 경계 코드 `internal/*` 같은 것 — 「거절」이라 부르지 않는다) | 원고 탓이면 사유대로 설계 데이터를 고친다 — 라벨 · 보조 설명이면 그 노드의 `width` 를 라벨은 N 이상, 보조 설명은 N + (W − P) 이상으로(또는 글을 줄인다), 폭이면 `wide: true` 로 두거나 그림을 나누고(설계 문서 `DESIGN-gazette-diagrams.md` 8 의 한도), 속성 합이면 그림 · 장면 수를 줄인다. 서버 탓이면 원고를 고치지 않는다 — 그 대기 상자에 미완 표지(`data-dgx-wait`)가 서서 포털이 그 판을 다시 굽기 후보로 적고, 서버가 바로잡히면 다시 굽기가 그린다(아래 「서버에서 실패한 그림」 줄이 함께 선다) |
|
|
510
|
+
| %s 도해 「%s」에 Archify 구성 경고가 %d건 있습니다 — %s | 엔진 산출물 검사(`check-render-output`)가 오류가 아닌 경고로 센 것(미세 구간 · 교차 · 라벨 간격 — 그림은 선다) | 경고 코드 옆 괄호의 연결을 다시 잇는다 |
|
|
511
|
+
| 도해 굽기가 서버에서 실패한 그림이 %d장 있습니다 — 서버 설정 탓이라 원고를 고칠 일이 아닙니다(서버가 바로잡히면 다시 굽기가 그립니다) | 위 「서버 탓」 사유로 대기 상자가 된 그림의 수(문서 한 벌에 한 줄). 그 서버에서는 매번 되풀이될 수 있다 — 운영 FPM 의 실행 메모리 거부처럼 서버 설정이 원인이다 | 원고를 고치지 않는다. 작성자 몫이 아니다 — 서버(사람)가 바로잡으면 다음 다시 굽기가 그 판을 다시 굽는다 |
|
|
512
|
+
| 절 %s 도해 「%s」에 ir 와 compare 가 함께 있습니다 — %s | 한 도해 칸에 `ir` 와 `compare` 를 함께 줬다 — `compare`(두 판 비교)를 그리고 `ir` 는 쓰지 않는다 | 한 칸에는 하나만 둔다 — 비교면 `compare`, 한 장이면 `ir` |
|
|
513
|
+
| %s 도해 「%s」: 두 판 비교 그림에는 장면(meta.views)을 싣지 않습니다 | `compare` 의 `base` · `head` 에 `meta.views` 가 있다 | 장면은 비교가 아닌 구성도에 둔다 |
|
|
514
|
+
| %s 도해 「%s」의 장면 %d개를 싣지 않았습니다 — 문서의 그림 속성이 %d개에 닿음(포털 입고 상한 100,000) | 장면마다 그림을 한 장씩 더 실어, 굽은 그림(본 그림 · 장면) 속성 합이 60,000 을 넘었다(넘으면 포털 입고 검사가 문서 전체를 거절한다) | 장면 수를 줄이거나 그림을 나눈다 |
|
|
505
515
|
| 절 N 「이름」의 k번째 문단이 M자입니다 | 문단 한 개 220자 초과(세 줄) | 두 문장으로 끊거나 수치를 표로 내린다 |
|
|
506
516
|
| 절 N 「이름」 산문에 참조 번호가 M개입니다 | 산문(문단·도입문·여백 주석)에 6.6·2.12a 같은 번호 4개 이상. 원래 이름(`MySQL 8.0`·`v4.2`)은 걷고 세고, 문서가 이름 바로 뒤에 쓴 판 번호는 홀로 선 자리(「8.0 행」)에서도 세지 않는다(2026-09-26) | 번호는 표·건·판단 항목에만, 산문은 뜻으로 잇는다. 경고를 피하려고 판 번호를 「새 버전」 같은 말로 바꾸지 않는다 |
|
|
507
517
|
| 판단 요청 N항이 산문으로만 섭니다 | `open_items` 6항 이상인데 asks 절에 표·흐름도 0 | 한눈표(항 · 지금 · 그대로 두면 · 바꾸면 — 두 길 대칭, 권고 열·시한 칩 없음) + 관문 흐름도(§11-2). |
|
|
508
518
|
| 핵심 굵게 표기가 한 곳도 없습니다 | 산문 3,000자 이상, `**…**` 도 편집기 굵게 구간도 0 | 절마다 핵심 한 구절을 `**…**` 로 굵게(§11-6). 문단 절반이 굵으면 굵기가 위계를 못 나른다. |
|
|
509
519
|
| 과정 어휘가 %d곳에 있습니다(%s 「%s」 …) — 독자는 앞 회차·회신·판을 모릅니다. 정해진 것은 사실로 배경에, 결정 요청에는 열린 것만 | 원고의 글자 자리 어디든(`history`·`labels`·`forbid`·`origin`·`file`·`source_url`·`href`·`data`·`out`·`css`·`render` 제외)에 정규식 `정해짐 \| 회신 대기 \| 남은 물음 \| 정해진 것 \| 이미 정해진 \| 남은 것 (하나·둘·셋·넷) \| (N·첫·두·세)판 \| 정한 사항 \| 결정(한·된) 사항 \| (미 앞이 아닌) 결정임` 이 1곳 이상. 앞 `%s` 는 자리 경로를 5곳까지(「경로 「낱말」 · …」, 2026-09-26), 뒤 `%s` 는 마지막 자리의 걸린 낱말 — 한 곳이면 경로 하나와 낱말 하나. 주체 없는 결정 명사(「정한 사항」)는 누가·어디서 정했는지 없이 결정 경로를 사실처럼 싣는다 — 「미결정임」·표지 칸 이름 「결정 사항」·「나머지 사항」은 안 건다 | 회차 낱말(「이번 회차」)만이 아니라 **진행 상태 어휘와 구조**가 금지다 — 상태 열(「상태: 정해짐/회신 대기」)·「~ 그대로(변화 없음)」도 같다. 정해진 것은 **사실**로 요지(배경)에, 결정 요청 절에는 **지금 열린 것만**. 회차의 자리는 `history` 하나. 원고는 직전 판의 차분이 아니라 **독자의 0 상태에서 다시 쓴다** — 판마다 「처음 읽는 사람이 이 절에서 무엇을 알아야 하나」를 다시 묻는다(SKILL 3b · readability R11h) |
|
|
510
520
|
| 절 %s 표 「%s」 제목이 개수로 진행 상태를 세고 있습니다 — 제목은 내용을 말해야 합니다 | `tables[].caption` 이 「…(하나·둘·셋·넷)과 … (하나·둘·셋·넷)」으로 끝난다 | 표 제목은 내용을 말한다 — 「정해진 것 셋과 남은 것 하나」처럼 상태를 세지 않는다(SKILL 3b) |
|
|
511
|
-
| 권고 낱말이 %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 의견은 이름에 「의견」이 든 절
|
|
512
|
-
| 도판 「%s」 출처 줄에 원본 위치가 없습니다 — 쪽·행·주소·건 § 가운데
|
|
521
|
+
| 권고 낱말이 %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 의견은 이름에 「의견」이 든 절 **하나**에만. 결정 모드는 `opinion` 칸만 면제다 |
|
|
522
|
+
| 도판 「%s」 출처 줄에 원본 위치가 없습니다 — 쪽·행·주소·건 § 가운데 하나를, 화면 캡처면 화면 이름 · 날짜를 적습니다 | `assets[]` 가운데 `role:"figure"` · `provider:"user-provided"`(고객·제3자 자료에서 낸 도판. 그린 도판 `deterministic`·서버가 그린 삽화 `higgsfield` 는 세지 않음. 파일로 싣는 합성은 `user-provided` 라 센다 — 출처 줄에 건 § 나 부록 N 한 구절(결정 절처럼 건보다 앞에 서는 도판은 부록 N — 뒤 절 § 는 아래 「앞 절이 뒤 절을 가리키는 곳」에 걸린다))이고 보이는 출처 줄 `source_text` 에(`source_url` 은 도판에 그려지지 않아 보지 않는다) 정규식 `\d+\s*쪽 \| \d+\s*행 \| https?:// \| 건 § \| §\s*\d \| 부록\s*\d` 이 하나도 없다. **화면 캡처의 위치** — 출처 줄에 화면·창·페이지 이름과 날짜(「10. 1.」·「2026-10-01」·「10월 1일」)가 함께 서면 원본 위치로 친다(2026-10-01 사용자 결정 ②). `%s` 는 `id` | 출처 줄은 원본 위치 한 구절(readability R12e). 캡처는 「주문 목록 화면 · 8. 23.」 — 경고를 맞추려고 뜻 없는 「부록 N」을 붙이지 않는다. 흐리다·못 연다고 쓰기 전에 원본을 잰다 |
|
|
513
523
|
| 도판 「%s」 출처 줄에 제작 설명이나 그림 번호가 있습니다(「%s」) — 위치 한 구절만, 제작 기록은 origin 으로 | `role:"figure"` 전부(provider 무관)의 `source_text` 를 주소를 지운 뒤 정규식 `(합성·재현)(이며·임·함·한 것·했) \| 예시(이며·임·라) \| (실제·실기기) 화면이 아님 \| 도안이 아님 \| 자리 표시 \| 규격(과 문구)?의 출처 \| 찍(음·은 것) \| 배율 \| N배 밀도 \| 크롭 \| 잘라 \| 자름 \| 그림 N-N` 으로 센다. **캡션은 보지 않는다** — 캡션의 한 낱말 「— 합성」·「재현」·「갈무리」는 정직성 이름표다. 출처 줄에서도 맨 낱말 「합성」·「재현」은 안 걸고 서술형만 건다. 「골밀도」 같은 값 이름은 「N배 밀도」가 아니라 안 걸린다 | 출처 줄에는 위치 한 구절만. 만든 방식·결정 경로는 `origin`(렌더 안 됨)과 도판 HTML 머리 주석에. 바깥 원본이 없는 우리 도안·흐름은 출처 줄을 비운다(readability R12e) |
|
|
514
524
|
| 표 「%s」 주석이 %d문장입니다 — ※ 주석은 %d문장 안 | `tables[].note` 문장 3 이상(둘째 `%d` 는 상한 2). 문장은 렌더러가 문장 블록을 세우는 판별(`boundary.py` — 날짜 마침표 「2026. 9. 30.」·「9. 8.」은 경계가 아님)로 센다. | 두 문장 안으로, 나머지는 본문·건으로(readability R12a) |
|
|
515
525
|
| 판단 항목 「%s」 본문이 %d문장입니다 — %d문장 안 | `open_items[].body` 문장 5 이상(둘째 `%d` 는 상한 4 · 자수 220 은 §10 의 R11f 행이 따로 센다) | 기한과 두 길 이름 → 길마다 달라지는 것 → 근거 절 번호까지 네 문장. 상세는 건에(readability R12b) |
|
|
516
526
|
| 앞 절이 뒤 절을 가리키는 곳이 %d개입니다(%s) — 낱말·규칙은 첫 등장 자리에서 풀고, 뒤 절이 앞 절을 되짚는 방향만 둡니다(readability R12h) | 절 i(배열 순서, 1부터)의 산문 — `sections[].name·sub·lede·paragraphs` · `tables[].caption·cols·rows·note` · `flow.caption·note`·`rows[].no`(건 좌표 꼴 `^§?\d{1,2}[-.]\d{1,2}$` 의 앞 숫자)·`cells[].text·note` · `marg(why/key/advice)` · 그 절이 `kind:"cases"` 면 같은 그룹 `cases[].symptom·cause·fix·how_to_check·remaining` 과 건에 묶인 표 `cases[].tables[].caption·cols·rows·note` · `kind:"asks"` 면 `cta[]`·`open_items[].title·body` · `sections[].plates` 가 가리키는 `assets[].caption·source_text` — 에서 정규식 `§\s*(\d+)\.\d+` 와 `(?<![\d.])(\d{1,2})절` 의 앞 숫자가 i 보다 큰 것을 센다. 「N차 … 제N절」(남의 문서의 절 번호, 예 「검수 보고 4차 제5절」)은 건너뛴다. `summary[].lead·body` 와 `refs[]` 는 세지 않는다 — 요약 근거 게이트(§8)가 `refs` 로 서고 「해당 절」·「근거」 단추가 되므로 뜀이 아니다. `%s` 는 자리와 걸린 낱말 최대 3개 | 낱말·규칙·예시 선언은 **첫 등장 자리에서 한 구절**로 풀고, 뒤 절 번호 대신 그 자리에서 뜻이 서는 말을 둔다. 근거 건은 `refs` 로만. 뒤 절이 앞 절을 되짚는 방향(05절에서 「03절 표」)은 둔다(readability R12h · SKILL 0.5단계 7행) |
|
|
517
|
-
| 표 「%s」의 「%s」 열은 모든 행이 같습니다 — 차이를 못 나르는 열은 주석으로 | `doc_type` 에 「브리핑」 · `kind:"asks"` 절의 `tables[]` 가운데 행이 셋 이상인 표에서, 첫 열을 뺀 한 열이 모든 행에서 같은 값(빈 칸 아님)이다. asks 밖 절(일정 표 「누가」 열 등)·행 둘 이하·빈 칸뿐인 열은 안 센다 | 그 열을 빼고 ※ 주석 한 줄로(visual-first §5). 선택지를 가르는 열만 한눈표에 둔다
|
|
527
|
+
| 표 「%s」의 「%s」 열은 모든 행이 같습니다 — 차이를 못 나르는 열은 주석으로 | `doc_type` 에 「브리핑」 · `kind:"asks"` 절의 `tables[]` 가운데 행이 셋 이상인 표에서, 첫 열을 뺀 한 열이 모든 행에서 같은 값(빈 칸 아님)이다. asks 밖 절(일정 표 「누가」 열 등)·행 둘 이하·빈 칸뿐인 열은 안 센다 | 그 열을 빼고 ※ 주석 한 줄로(visual-first §5). 선택지를 가르는 열만 한눈표에 둔다 |
|
|
518
528
|
| 건 행 이름 「%s」 낱말이 %d곳에도 쓰였습니다(%s) — 한 낱말은 한 장치에만, 다른 자리는 다른 낱말로 | 데이터가 준 `labels` 의 `symptom`·`cause`·`fix`·`check` 값이 `kind≠cases` 절의 `sub`·`tables[].caption`·`tables[].cols` 에 낱말로 선다(뒤에 조사 하나까지 같은 낱말 — 「판단력」·「판단이다」는 다른 낱말). 괄호 안은 자리 이름 최대 3개. `labels` 를 안 준 기본 이름·건 절 자신·절 이름·도입문·산문은 안 본다 | 의견 절의 열·부제는 「의견」으로(§3.5 · visual-first §3) |
|
|
519
529
|
| 선택지를 「길」로 부른 곳이 %d곳 있습니다(%s 「%s」 …) — 「길」은 스킬의 장치 이름입니다. 원고에서는 선택지를 그것이 실제로 무엇인지로 부릅니다 | 글자 자리 전부(과정 어휘와 같은 자리 — `history`·`labels`·`origin` 등 제외)에서 정규식 `RX_GIL`(gazette.py) — 「두 길의」「복제본 길」「고른 길별」「지나는 길과」, 앞말이 선택지를 세는 말인 「어느 길이」「두 길이」, 칸 하나가 「길」인 열 머리는 걸리고 「막대 길이」「길게」「길다」는 안 걸린다. `%s` 둘은 과정 어휘 행과 같은 꼴(자리 5곳까지 · 마지막 낱말) | 선택지는 그것이 실제로 무엇인지(고객이 부르는 이름)로 — 「복제본 전환」「직접 업그레이드」「현행 유지」. 「길」은 스킬 문서 안의 장치 이름일 뿐이다(SKILL 반드시 지키는 것 12) |
|
|
520
|
-
| 해라체 명령이 %d곳 있습니다(%s 「%s」 …) — 독자가 할 일은 요청 자리에만 하십시오체로, 그 밖은 우리·사물·화면이 주어인 개조식입니다. 확인 방법은
|
|
530
|
+
| 해라체 명령이 %d곳 있습니다(%s 「%s」 …) — 독자가 할 일은 요청 자리에만 하십시오체로, 그 밖은 우리·사물·화면이 주어인 개조식입니다. 확인 방법은 결과를 볼 자리와 우리가 본 때·환경(「그 주문이 목록 첫 줄에 나타남({{그림:id}}), 8. 23. 운영 관리자 웹에서 봄」), 캡션·Advice 는 볼 자리의 이름으로 | 글자 자리 전부(「길」과 같은 자리)에서 정규식 `RX_CMD`(gazette.py) — 낱말 끝 「보라·하라·열라·누르라·찾으라·읽으라·두라·말라·가라·보시오·하시오」 뒤에 마침표·공백·닫는 따옴표가 오거나 글이 끝나면 센다. 「보라색」(한글이 이어짐)·「정할 것」(명사구)은 안 센다. `%s` 둘은 과정 어휘 행과 같은 꼴(자리 5곳까지 · 마지막 낱말) | 확인 방법은 독자가 그 결과를 볼 자리(이 문서의 그림·영상·원문, 또는 독자 자기 화면의 어디) + 우리가 그것을 본 때·환경 — 우리가 안 본 결과는 남은 것 칸에만(2026-10-01 사용자 결정. 9/26 의 「화면이 주어인 결과」를 고쳐 씀). 캡션·Advice 는 볼 자리의 이름(「03절 대조표」), 독자에게 부탁할 것은 요청 자리에서 하십시오체(5·5a). 경위: 캡션 규칙 「무엇을 보라는 것인지」가 캡션이 됐다(2026-09-17) |
|
|
521
531
|
| 대화 이력 낱말이 %d곳에 있습니다(%s) — 독자는 이 문서를 만든 대화를 모릅니다. 합의·요청된 내용을 사실로 적습니다 | 과정 어휘와 같은 글자 자리(`tenant` 도 뺌)에서 정규식 `RX_TALK`(gazette.py) — 지난 대화를 가리키는 앞말 + (띄어쓰기) + 대화에서 끝난 일. 앞말 「앞서·지난번(에)·이전에·이미」 뒤에 「합의·협의」의 끝난 꼴(`_TALK_DONE` — 한·했·된·하신·하였·되었·해 주신·드린·함·됨)이나 「말씀드린·요청하신·안내드린」이 오면 센다. 「논의」의 끝난 꼴은 「지난번(에)·이전에·이미」 뒤에서만 센다 — 「앞서 논의한 바와 같이」는 문서가 제 앞 절을 되짚는 말이다. 앞말 없이 「요청하신 대로」·「말씀하신 대로」도 센다. 안 세는 것: 「앞에서」(문서 안 자리 — 「앞에서 논의한 대로」·「앞에서 말씀드린」), 절차를 말하는 「○○ 전에」·「사전에」·「○○에 앞서」(「적용 전에 협의함」·「적용에 앞서 합의한」), 끝나지 않은 꼴(「협의하여」·「협의 후」·「협의가 필요」·「이미 협의 중」), 앞말 없는 「합의한 일정」. 칸마다 한 번 세고 `%s` 는 「경로 「낱말」」 5곳까지(넘으면 「그 밖 N곳」) | 합의·요청된 내용을 **사실**로 적는다 — 누가 언제 말했는지가 아니라 무엇이 정해졌는지(SKILL 3b) |
|
|
522
532
|
| 책임 낱말 「탓」이 %d곳에 있습니다(%s) — 원인은 대상의 원래 이름과, 그것이 어떻게 동작했는지로 적습니다 | 같은 자리에서 정규식 `RX_BLAME`(gazette.py) — 앞에 한글이 붙지 않은 「탓」 가운데, 뒤가 한글이 아니거나(글 끝·띄어쓰기·문장부호) 조사·서술격 조사로 **시작**하는 것을 센다. 조사 목록은 반려 이름과 같은 낱말 경계 `_JOSA_HEAD` — 「으로·까지·부터·보다·처럼·마다·조차·마저·한테·밖에」와 한 글자 「은·는·이·가·을·를·의·에·께·로·와·과·도·만·나·라·란·랑·인·일·임·입·였·뿐·들」. 첫머리만 보므로 뒤에 무엇이 이어지든(「탓이었습니다」·「탓으로만」) 세고, 자리에는 뒤에 붙은 한글까지 짚는다. 「남탓」(앞에 한글)·「탓하기」·「탓할」(조사 아닌 한글)은 다른 낱말이라 안 센다 | 원인은 대상의 원래 이름과 그것이 어떻게 동작했는지로. 참조 번호 경고를 피하려고 판 번호를 「새 버전 탓」으로 바꿔 적지 않는다 — 판 번호는 이제 참조 번호로 세지 않는다(2026-09-22 반려) |
|
|
523
533
|
| 소속처가 반려한 이름이 %d곳에 있습니다(%s) — 작업하며 지은 이름은 문서 안에서 정의해도 독자가 모릅니다. 독자 화면의 원래 이름으로(%s) | 그 소속처의 반려 이름 목록(소속처 결정 장의 `rejected_names` 칸 — 이름마다 가장 새 결정이 이기고 뒤집힌 결정은 뺀다)이 렌더러에 왔을 때, 보이는 글자 전부(`history`·`labels` 포함 — `uid`·`id`·`plates`·`refs`·`tenant` 와 `origin`·`file` 등은 뺌)에서 이름마다 센다. 목록은 포털 발행·모의 발행이면 서버가(배포 뒤), 로컬 `render.py` 와 발행 직전 훅이면 MCP `list_rejected_names` 로 받아 얹는다 — 목록이 안 오면 이 행은 0 이 아니라 미확인이다(표 아래 「목록을 얻는 길」). 낱말 사이 띄어쓰기는 있든 없든 같은 이름이고, 앞에 한글이 붙거나 뒤에 조사 아닌 한글이 붙으면 다른 낱말이다(「예비판정」). 이름에 `near`(함께 설 낱말)가 있으면 그 낱말이 같은 문장 12자 안에 설 때만 센다. 첫 `%s` 는 원고에 적힌 글자로 자리 5곳까지, 둘째 `%s` 는 「이름 → 목록의 use」 | 0단계 이름 대응표의 독자 화면·문서 이름으로 바꾼다(SKILL 반드시 지키는 것 12). 목록은 그날 반려된 이름만 모은다 — 반려를 `remember_decision` 으로 적을 때 그 결정의 `rejected_names` 칸에 적는다(SKILL 9a단계 7행). 목록 밖의 새 이름은 독자 검토 이름 물음(`names`)과 사람 눈 |
|
|
@@ -544,11 +554,13 @@ python3 assets/render.py <report.json>
|
|
|
544
554
|
| %s 의 표 「%s」에 %s 가 없어 싣지 못했습니다%s | 표에 제목·행·열 머리 가운데 무엇이든 있는데 `cols` 나 `rows` 가 비어 그릴 수 없다. 열 머리를 `head`·`headers`·`columns`·`header` 로 적었으면 그 이름을 짚는다. **표가 빠지면 뒤 표 번호가 전부 당겨진다** | 열 머리의 이름은 `cols` 다 |
|
|
545
555
|
| 절 %s 의 plates 배열 순서와 그림 번호가 다릅니다(전폭 「%s」 뒤에 본문 단 「%s」) — 차트·흐름도·본문 단 도판이 먼저 번호를 받습니다 | 한 절 `plates` 에서 `wide:true` 도판 뒤에 본문 단 도판이 적혔다 — 전폭은 그리드 밖이라 번호를 뒤에 받는다 | `plates` 를 본문 단 → 전폭 순서로 적는다 |
|
|
546
556
|
| 작성일이 한 값이 아닙니다(%s) — 표지 「작성」 · 판권지 「작성」 · 발행 이력 마지막 date 는 공개하는 날 한 값으로(공개 직전 update_report 한 번) | 표지 `meta` 의 「작성」 행 · 판권지 `colophon.rows` 의 「작성」 행(`rows` 가 없으면 표지를 그대로 쓰므로 안 셈) · `history` 마지막 `date` — 셋에서 년·월·일을 0 채움으로 읽어(「2026.08.24」 = 「2026. 8. 24.」, 범위는 첫 날짜) 값이 둘 이상이다. 자리가 둘 미만이면 안 센다. `cover_date` 는 수치의 기준일이라 대조하지 않는다(§3.1) | 공개 직전에 한 번, 세 자리를 공개하는 날로 맞춘다 — SKILL 8단계 「수정 절차」로(받은 판에서 출발 · `body_rev` 를 실어 교체 — SKILL 3c · 체크리스트 10단계). 표기를 한 꼴로 맞추는 것은 사람 눈(§3.5) |
|
|
557
|
+
| 화면을 말했는데 독자가 볼 증거가 없는 곳이 %d곳(%d건)입니다(%s) — 실제 화면·영상·원문을 그 건 plates 에 싣거나 {{그림:id}} 로 가리킵니다. 안 본 것이면 남은 것 칸으로 옮깁니다 | 건 다섯 칸과 절의 문단·흐름도 칸(`text`·`note`)을 문장으로 나눠(렌더러 문장 블록과 같은 자르기) **관찰 주장**을 센다 — 화면 낱말(목록·첫 줄·항목·페이지와 조사 붙은 줄·행 포함)이나 「」 인용 + 보이는 동사(뜸·보임·표시됨·나옴·켜짐·열림·띄움 …, 습니다체 「보입니다·뜹니다·표시됩니다」와 과거형 「나타났·보였·나왔·표시됐」 포함) · 조작(누르면·넣으면·저장하면·작성하면·보내면)이나 자리(단계·칸에) + 결과(진행됨·막힘·통과함·가입됨·저장됨 …, 습니다체 포함)나 보이는 동사 · 확인 방법 칸에서만 앱·웹·이용자 맥락의 결과. **표 칸(건·절 `tables`)은 세지 않는다** — 확인 프로필·조건표의 기대 결과, 위험 표의 계획, 기기별로 센 결과라 실물이 설 수 없다(2026-10-02 실측 — 지난 원고 14벌에서 표 칸까지 세면 작성자가 고칠 수 없는 지적이 42.5% 였고, 빼고 31.6%). 안 세는 문장: 「수 있·수 없」 가능성 · 「」 인용 없는 지시문·물음(「…는지 확인.」·「…는지 본다」 — 「…는지 확인함·했음·됨」·「…는지 봄」은 우리 기록이라 센다) · 끝이 확인 안 했음이고 관찰 동사가 그 목적어 안에 안긴 것(「…뜨는지는·…뜨는 것은·…뜨기까지의 시간은 + 확인하지 않았음」 — 같은 문장의 앞 절이 관찰 주장이면 센다: 구분 부호(「—」·「,」·「 - 」·「;」·「:」·「·」) 앞 끝맺은 절 「…보임 — 화면은 확인하지 않았음」, 이음 어미(「…지만·…으나·…는데·…고·…며·…면서」)로 끝난 관찰·결과·확인 기록 절 「…나타나지만 실기기는 보지 않았음」) · 낱말 오탐 셋(빌드·버전·번호·타깃·구성·배포본과 함께 선 「위젯 … 나옴」에 화면 낱말이 없을 때 · 누르기·넣기 같은 조작이나 화면·칸 같은 자리가 없는 「들어감」 · 번호 표식 목록 머리의 「띄우는」). 그 건(절)에 증거가 하나라도 있으면 안 센다 — `plates` 의 캡처·녹화·합성·문서 갈래 · `quotes` · 문장의 `{{그림:id}}` 가 가리킨 그런 도판(건이면 그 건 어느 칸이든) · 출처 줄·캡션이 `§N.M` 으로 그 건을 가리키는 절 도판 · 문장이 원문·출처를 말할 때의 건 `source_url`. 표(`tables`)는 증거로 치지 않는다 — 우리가 센 결과 표로만 받친 화면 주장은 §10 통과 기준 표의 행. 단 건 증거가 덮지 못하는 문장 둘 — 문장의 `{{그림:id}}` 가 전부 도안인 것(도해 `diagrams[]`·흐름도 `flow:N` 토큰도 도안 — 자기 그림으로만 잰다) · 「코드상·코드로 봄·코드 기준·도안 기준·설계상」처럼 화면 밖 근거를 스스로 밝힌 것. 도판 갈래(`gazette.py asset_evidence_kind()`): `role:"video"` 녹화 → 캡션 「실제 화면 아님」·「— 도안」·「— 재현」 도안 → AI 합성(`provider:"higgsfield"` · `origin` 의 Higgsfield·이미지 생성·참조 그림·도안 PNG) 도안 → 캡션 「— 합성」 합성 → `provider:"user-provided"` 캡처 → `origin`·출처 줄·캡션의 촬영·캡처·갈무리·녹화·스크린샷·실기기·시뮬레이터·에뮬레이터·「시험 기기 화면」·「… 제공)」 캡처 → 「찍어·찍은·찍음」은 `origin` 에 도안·그린·그리고·개념도·도해·재현·생성이 없을 때만 캡처 → 그 밖 도안. `assets[].evidence` 칸은 아직 읽지 않는다(도구 스키마와 함께 들인다) — 그래서 지금은 「문서」 갈래가 서지 않고, 원문은 `quotes`·건 `source_url` 로 싣는다. 헤지·층 낱말(「화면 미확인」·「(확인 전)」)과 「…것을 확인함」·「…것까지 확인함」은 지우지 않고, 확인 방법 끝의 「…, 8. 23. 운영 관리자 웹에서 봄」 꼬리도 증거로 받지 않는다(독자 자기 화면만 볼 자리로 둔 확인 방법은 §10 표의 행). `%s` 는 「건 NN-n 칸 이름 「문장 앞 24자」」 5곳까지(넘으면 「그 밖 N곳」), 건 수는 걸린 건·절의 수 | 화면을 말했으면 그 화면을 싣는다 — 캡처·녹화를 그 건 `plates` 에 두거나 문장에서 `{{그림:id}}` 로 가리키고, 찍은 환경·날짜는 캡션 꼬리에(「… · 운영 관리자 웹 · 8. 23. 촬영」, §11-1 — 그 꼬리의 「촬영」이 그린 판으로 구운 캡처도 캡처로 가른다). 도안은 설명이지 증거가 아니다. 우리가 안 본 것이면 확인 방법에서 빼 남은 것 칸에 「…는 확인하지 않았음」으로 옮긴다(2026-10-01 사용자 결정). 위 두 예외 밖에서는 건 단위로 재므로 실물 하나가 그 건의 다른 주장까지 덮는다 — 그 실물이 그 주장을 보이는지는 독자 검토·사람 눈 |
|
|
558
|
+
| 캡처 도판 「%s」 이 너무 작습니다(%d×%d) — 자리 표시면 실물로 바꿉니다 | 캡처 갈래(위 행의 `asset_evidence_kind()`) 도판이 긴 변 300px 미만이거나 짧은 변 100px 미만이다(`Doc.CAPTURE_MIN_LONG`·`CAPTURE_MIN_SHORT`). 치수는 실린 바이트(`data` — PNG·GIF·WebP·JPEG 머리)에서 읽고, 바이트가 없는 도판(로컬의 `file`·`source`, 받은 판)은 재지 않는다. 한 도판은 두 자리에 서도 한 번 센다(2026-10-02 — 본보기의 13×6 회색 자리 표시가 「캡처」로 갈려 증거 관문을 넘겼고, 베낀 원고는 실물 없이 ⚠0 이 된다) | 찍은 실물로 바꾼다. 실물이 아닌 그림이면 캡션에 「— 도안」을 달아 증거에서 뺀다 |
|
|
547
559
|
|
|
548
560
|
위 표에서 여섯째 행(과정 어휘)부터 끝까지는 `gazette.py` 의 문구 **그대로**다(`%d`·`%s` 는 수·이름이 들어가는 자리) — 문구를 바꾸면 양쪽을 같이 바꾼다.
|
|
549
561
|
예외는 **서버**라고 적은 반려 이름 네 행이다 — 렌더러가 아니라 포털(`report_publish.php report_rejected_names()`·`report_build_checked()`)의 문구라 자리를 `%` 대신 「N」·「M」·「까닭」으로 적었다.
|
|
550
562
|
정규식의 `\|` 는 표 칸이라 그렇게 적은 것이고 실제로는 `|` 다. 전부 ⚠ 이며 거절이 아니고, `dry_run` 과 로컬 `render.py` 두 경로에 다 실린다.
|
|
551
|
-
집행자: 렌더러 ⚠ — 「차이를 못 나르는 열」은 `gazette.py Doc.brief_checks()`, 나머지는 `gazette.py Doc.text_scan()`.
|
|
563
|
+
집행자: 렌더러 ⚠ — 「차이를 못 나르는 열」은 `gazette.py Doc.brief_checks()`, 「독자가 볼 증거」는 `gazette.py Doc.evidence_scan()`(판정 정규식·도판 갈래는 모듈 상수·함수라 훅·발행 뒤 대조가 같은 것을 쓴다), 「작은 캡처」는 `gazette.py Doc.plate_scan()`, 나머지는 `gazette.py Doc.text_scan()`.
|
|
552
564
|
대화 이력 · 「탓」 · 반려 이름 · 대조 규칙 넷 행은 `text_scan()` 이 부르는 `gazette.py Doc.reader_word_scan()` 이고, 렌더 없이 부르는 `gazette.py coined_scan()` 이 같은 함수라 같은 문장을 낸다(발행 직전 훅이 부르는 자리).
|
|
553
565
|
|
|
554
566
|
**목록을 얻는 길** — 렌더러는 반려 이름 목록을 스스로 찾지 않는다. 부르는 쪽이 cfg 의 `rejected_names` 칸으로 얹고,
|
|
@@ -626,11 +638,11 @@ CSS 로는 못 한다. 우측 판독부에 남는 것은 문서 전체의 사실
|
|
|
626
638
|
| 자리 | 칸 |
|
|
627
639
|
|---|---|
|
|
628
640
|
| 그림 자체 | `assets[]` 에 `role: "figure"` · `id` · `alt`(접근성 계약) |
|
|
629
|
-
| 제공자 | `provider: "user-provided"` 이면 **`origin` 이 필수다** — 누가 제공했는지. 비우면 서버가 발행을 거절한다(「출처를 못 적는 자산은 고객 문서에 싣지 않습니다」). 만든 방식(
|
|
641
|
+
| 제공자 | `provider: "user-provided"` 이면 **`origin` 이 필수다** — 누가 제공했는지. 비우면 서버가 발행을 거절한다(「출처를 못 적는 자산은 고객 문서에 싣지 않습니다」). 만든 방식(제작 도구·배율·자르기 좌표·스크립트 이름)과 결정 경로도 `origin` 에 적는다 — 렌더되지 않는다. 찍은 환경·날짜는 증거 범위라 캡션 꼬리로 보인다(아래 캡션 행) |
|
|
630
642
|
| 그림 바이트 | `file`(**로컬 절대경로**) 또는 `source`(허용 호스트 https). 둘 다 주면 `file` 이 이긴다 |
|
|
631
643
|
| 영상 | `role: "video"` · `provider: "r2"` — 바이트는 문서에 안 싣는다. `file` 에 로컬 mp4 절대경로를 주면 도구가 올리고 `ref`(영상 자리 번호)를 채운다. **`thumbs`**(시크바 썸네일 판)도 도구가 발행 때 ffmpeg 로 굽는다 — 보통 적지 않는다. `thumbs: null` 이면 판을 뺀다. 되읽은 판을 고쳐 되돌려 보낼 때는 받은 `ref`·`thumbs` 를 그대로 두면 다시 안 올리고 서버가 저장된 판을 잇는다(`mcp/genetics.mjs` 의 영상 갈래 · 렌더러 `gazette.py` 의 `<video data-thumbs…>`) |
|
|
632
|
-
| 캡션 | `assets[].caption` — 번호 뒤에 붙는다. **번호는 적지 않는다**(자리가 매긴다). **한 문장으로** — 마침표가 둘이면 문장 분리가 캡션을 줄로 가르고 렌더러가 ⚠ 로 센다(부연은 괄호·가운뎃점으로). 정직성은 끝의 한 낱말(「— 도안」·「— 재현」·「— 합성」)이면
|
|
633
|
-
| 출처 | `assets[].source_text` — 독자가 원본에 닿는 **위치 한 구절**(쪽·행·주소·건 § 가운데 하나, readability R12e). 제작 메타는 `origin` 에만, 바깥 원본이 없는 우리 도안·흐름은 비운다 |
|
|
644
|
+
| 캡션 | `assets[].caption` — 번호 뒤에 붙는다. **번호는 적지 않는다**(자리가 매긴다). **한 문장으로** — 마침표가 둘이면 문장 분리가 캡션을 줄로 가르고 렌더러가 ⚠ 로 센다(부연은 괄호·가운뎃점으로). 정직성은 끝의 한 낱말(「— 도안」·「— 재현」·「— 합성」)이면 된다 — 도안은 설명이지 증거가 아니고, 「— 합성」은 실제 캡처와 옮겨 적은 글자를 합친 것만 증거다(AI 로 그린 합성 — `origin` 에 Higgsfield·참조 그림 — 은 렌더러가 도안으로 가른다, §10-1 「독자가 볼 증거」). **캡처·영상은 끝에 증거 범위 한 구절** — 찍은 환경(독자가 부르는 화면·기기 이름)·날짜·옮겨 적은 부분을 가운뎃점으로 잇는다(「… · 운영 관리자 웹 · 8. 23. 촬영」·「… · 알림 문구는 옮겨 적음」 — 대시를 늘리지 않는다). 그 꼬리의 「촬영」은 그린 판으로 구운 캡처를 렌더러가 캡처로 가르는 표지이기도 하다. 제작 도구·배율·자르기 좌표·스크립트 이름은 `origin` 에만(2026-10-01 사용자 결정 ②). 판정 칩은 렌더러가 문장 블록 밖에 붙인다(2026-09-09) |
|
|
645
|
+
| 출처 | `assets[].source_text` — 독자가 원본에 닿는 **위치 한 구절**(쪽·행·주소·건 § 가운데 하나, readability R12e). 캡처는 「화면 이름 · 날짜」(「주문 목록 화면 · 8. 23.」)가 위치다 — 형식을 맞추려고 「부록 N」을 붙이지 않는다. 제작 메타는 `origin` 에만, 바깥 원본이 없는 우리 도안·흐름은 비운다 |
|
|
634
646
|
| 놓을 절 | `sections[].plates: ["그-id", ...]` — **여기 안 적으면 자리가 없어 안 실린다**(⚠). 본문 단 도판을 먼저, 전폭을 뒤에 적는다(순서가 번호와 갈리면 ⚠). 한 건의 근거인 화면은 절이 아니라 **그 건**에 적는다 — `cases[].plates`(11-10절). 건 안은 늘 본문 단 폭이라 전폭 자산은 절에 둔다(건에 두면 ⚠) |
|
|
635
647
|
| 전폭 | `assets[].wide: true` — 두 단 밖, 절 끝에 문서 폭(readability §1 기준 창의 전폭)으로 선다. 그 절의 그림 번호는 본문 단 도판 뒤다 |
|
|
636
648
|
|
|
@@ -791,49 +803,31 @@ CSS 로는 못 한다. 우측 판독부에 남는 것은 문서 전체의 사실
|
|
|
791
803
|
실측(2026-08-24): 34자 캡션 하나가 지적 1건을 만들었고, 그 설명을 `note` 로 내려 18자로 줄이자
|
|
792
804
|
0건이 됐다. 설명하고 싶은 것은 전부 `note` 의 몫이다.
|
|
793
805
|
|
|
794
|
-
## 11-4.
|
|
806
|
+
## 11-4. 차트 — 막대 · 점(수를 눈으로 견주게 한다)
|
|
795
807
|
|
|
796
|
-
|
|
797
|
-
정당하다 — 발행물은 내용을 검사하지 않는 업로드물이고, 포털과 **같은 오리진**에 전 고객사의
|
|
798
|
-
열람 링크를 쥔 관리 화면이 함께 산다. 차트 하나 때문에 그 문을 열 값이 아니다.
|
|
799
|
-
실측(2026-08-24): 같은 CSP 아래에서 인라인 스크립트는 차단되고 인라인 SVG 와 `:checked` CSS
|
|
800
|
-
인터랙션은 그대로 돈다.
|
|
808
|
+
언제 막대 · 점 · 시계열을 고르나 · 둘 수 있는 칸 · 한도는 장치 표(`visual-first.md` §4)가, 칸 꼴은 도구 스키마가 정본이다. 여기는 둘에 없는 까닭만 적는다.
|
|
801
809
|
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
810
|
+
**렌더러가 정지 SVG 로 그린다**(관보 v3 ② · 2026-10-07). 캔버스 · 스크립트는 쓸 수 없다 — 열람 CSP 가 `default-src 'none'` 이고
|
|
811
|
+
`script-src` 를 안 연다. 발행물은 내용을 검사하지 않는 업로드물이고 포털과 **같은 오리진**에 전 고객사의 열람 링크를 쥔 관리 화면이
|
|
812
|
+
함께 산다 — 차트 하나 때문에 그 문을 열 값이 아니다(실측 2026-08-24: 인라인 스크립트는 차단, 인라인 SVG 와 `:checked` 는 그대로 돈다).
|
|
813
|
+
전에는 HTML 막대 + CSS 로 지었고, 행마다 그리드를 따로 세워 **한 차트 안에서 행마다 축척이 갈렸다**(133초 막대가 61초 막대보다 짧았다).
|
|
814
|
+
이제 축척은 차트마다 한 번이고, 폭마다 따로 짠 SVG 두 장 가운데 그림이 놓이는 단의 폭에 맞는 것이 서서 글자가 줄지 않는다.
|
|
815
|
+
값 · 이름 · 설명은 원고 글자 그대로 그림에 서고 화면 낭독 목록으로도 한 번 실린다.
|
|
805
816
|
|
|
806
817
|
```json
|
|
807
818
|
"charts": [
|
|
808
|
-
{
|
|
809
|
-
"
|
|
810
|
-
|
|
811
|
-
"
|
|
812
|
-
|
|
813
|
-
{ "label": "감량 5kg 미만", "value": "100,957", "note": "25.9%" }
|
|
814
|
-
],
|
|
815
|
-
"note": "10kg 이상 감량이 안내되는 이용자가 3,199명에서 72,660명으로 늘어남."
|
|
816
|
-
}
|
|
819
|
+
{ "caption": "개선안 적용 시 권장량 분포", "unit": "명",
|
|
820
|
+
"rows": [ { "label": "감량 10~20kg", "value": "48,537", "note": "12.5%" },
|
|
821
|
+
{ "label": "감량 5kg 미만", "value": "100,957", "note": "25.9%", "partial": true } ],
|
|
822
|
+
"ref": [ { "value": "50,000", "label": "목표" } ],
|
|
823
|
+
"note": "10kg 이상 감량이 안내되는 이용자가 3,199명에서 72,660명으로 늘어남." }
|
|
817
824
|
]
|
|
818
825
|
```
|
|
819
826
|
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
| `rows[].label` | 막대 이름 |
|
|
825
|
-
| `rows[].value` | 값. **표기 그대로 적는다** |
|
|
826
|
-
| `rows[].a` · `.b` | `toggle` 이 있을 때 두 축의 값 |
|
|
827
|
-
| `rows[].note` | 값 아래 작은 글자 |
|
|
828
|
-
| `toggle` | `{a, b}` — 두 축 이름. 주면 `:checked` 로 갈아 낀다 |
|
|
829
|
-
|
|
830
|
-
**값은 표기 그대로 적는다.** `118716` 이 아니라 `"118,716"` 이다. 셈에서는 콤마를 걷어내므로
|
|
831
|
-
폭 계산에는 지장이 없고, **데이터가 표기를 정해야** 같은 문서의 표와 막대가 서로 다른 표기로
|
|
832
|
-
갈리지 않는다. 실측(2026-08-24): 원시 정수로 넣었더니 위의 표는 `356,895명`, 바로 아래 막대는
|
|
833
|
-
`198430명` 으로 한 절 안에서 표기가 갈렸다.
|
|
834
|
-
|
|
835
|
-
**`toggle` 의 체크박스는 스크립트가 아니라 상태다.** 라벨이 그 상태의 스위치가 되므로
|
|
836
|
-
키보드로도 닿는다. 두 축을 견줄 일이 없으면 넣지 않는다.
|
|
827
|
+
**값은 표기 그대로 적는다.** `118716` 이 아니라 `"118,716"` 이다. 셈에서는 콤마를 걷어내므로 축척에는 지장이 없고, **데이터가 표기를
|
|
828
|
+
정해야** 같은 문서의 표와 차트가 서로 다른 표기로 갈리지 않는다(실측 2026-08-24: 원시 정수로 넣었더니 위의 표는 `356,895명`, 바로 아래 막대는 `198430명`).
|
|
829
|
+
|
|
830
|
+
**`toggle` 의 체크박스는 스크립트가 아니라 상태다.** 두 축은 한 축척이라 갈아 껴도 길이를 견줄 수 있다. 두 축을 견줄 일이 없으면 넣지 않는다.
|
|
837
831
|
|
|
838
832
|
## 11-5. 증거 등급 — 실었으면 얼마나 믿어도 되는지 함께 적는다
|
|
839
833
|
|
|
@@ -852,6 +846,9 @@ CSS 로는 못 한다. 우측 판독부에 남는 것은 문서 전체의 사실
|
|
|
852
846
|
| `조사 보고` | 2차 출처를 경유해 확인함. 원문 대조는 안 함 |
|
|
853
847
|
| `미확인` | 널리 쓰이나 1차 출처를 특정하지 못함 |
|
|
854
848
|
|
|
849
|
+
**`verdict` 는 바깥 원본(문서·원문)을 실은 도판·인용에만 붙인다.** 우리가 그린 도해·도판에는 붙이지 않는다 —
|
|
850
|
+
그린 도해마다 「직접 확인」 칩이 서자 독자는 FCG 가 직접 해 본 것으로 읽었다(2026-10-01 사용자 결정 · 처음 읽는 독자 검토 심각도 4).
|
|
851
|
+
|
|
855
852
|
**왜 강제하는가.** 실사례(2026-08-24): 원판이 3단으로 나눠 둔 이 축을 포털본이 통째로 버렸고,
|
|
856
853
|
그 결과 2차 출처와 미확인 주장이 **사실로 단언돼** 고객에게 나갔다. 심지어 원 문서가 이미
|
|
857
854
|
철회한 인용 하나가 그대로 남아 있었다. 증거를 실으면서 등급을 안 붙이면 문서가 실제보다
|
|
@@ -932,15 +929,14 @@ AWS 요금 조사(2026-09)에서 트래픽·로그·DB 용량이 8월 1일 앞
|
|
|
932
929
|
|
|
933
930
|
| 칸 | 뜻 |
|
|
934
931
|
|---|---|
|
|
935
|
-
| `kind` | `"series"`. 없으면
|
|
932
|
+
| `kind` | `"series"`. 없으면 막대 · 점 차트다(§11-4) |
|
|
936
933
|
| `points[].x` · `.y` | x 는 `YYYY-MM-DD` 가 기본(달 눈금과 달별 글자 행을 자동으로 세운다). 그 밖의 문자열도 된다(여섯 눈금). y 는 표기 그대로 |
|
|
937
934
|
| `marks[].x` · `.label` | 사건 세로선. x 는 어느 `points[].x` 와 **같은 값**이어야 선다(아니면 ⚠) |
|
|
938
935
|
| `summary[]` | `{label, value, note?}` — 글자 행을 손으로 줄 때. 없으면 달마다 평균·최대를 자동으로 적는다 |
|
|
939
936
|
| `unit` · `caption` · `note` | 막대와 같다 |
|
|
940
937
|
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
막대와 같은 원칙(그림이 안 보여도 문서가 선다). 그림 번호는 막대·흐름도·도판과 한 셈이다.
|
|
938
|
+
막대와 같은 정지 SVG 두 폭이다 — 기본 모양은 점과 선(`form` position — 0 이 아닌 날에만 점과 값), `form` length 면 날마다 막대.
|
|
939
|
+
값을 전부 글자로 남길 수 없으므로 **달마다 평균·최대**가 글자 행으로 남는다 — 그림이 안 보여도 문서가 선다. 그림 번호는 막대·흐름도·도판과 한 셈이다.
|
|
944
940
|
|
|
945
941
|
## 11-8. 원문 인용 — 문구를 원문 그대로 (2026-09-16)
|
|
946
942
|
|
|
@@ -970,44 +966,16 @@ AWS 요금 조사(2026-09)에서 트래픽·로그·DB 용량이 8월 1일 앞
|
|
|
970
966
|
번호는 없다 — 그림·표가 아니다. (2026-09-17 까지 렌더러는 주석과 달리 kind 블록 **뒤**에 붙였다 — 같은 날 코드를 이 문장에 맞췄다.)
|
|
971
967
|
한 건에 딸린 인용(그 건의 거절문·회신)은 `cases[].quotes` 로 **그 건 안**에 둔다(11-10절) — 절에 두면 첫 건의 것처럼 읽힌다.
|
|
972
968
|
|
|
973
|
-
## 11-9. 도해 —
|
|
974
|
-
|
|
975
|
-
구조·흐름·순서·데이터 흐름·상태 전이는 Archify(`tt-a1i/archify`, 에이전트 스킬)로 그린다. 관보에는 그 산출물의
|
|
976
|
-
**정지 SVG 만** 인라인으로 앉힌다 — 절차는 스킬 `references/diagrams.md`, 굳히는 도구는 `assets/diagram.mjs`.
|
|
977
|
-
|
|
978
|
-
```json
|
|
979
|
-
"diagrams": [
|
|
980
|
-
{ "id": "upgrade-path", "caption": "업그레이드가 지나는 세 관문",
|
|
981
|
-
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1200 520\">…</svg>",
|
|
982
|
-
"alt": "스냅샷 복원 → 시험 → 운영 적용", "verdict": "직접 확인", "wide": true,
|
|
983
|
-
"origin": "archify workflow v2 · ir/upgrade-path.workflow.json" }
|
|
984
|
-
]
|
|
985
|
-
```
|
|
986
|
-
|
|
987
|
-
| 칸 | 뜻 |
|
|
988
|
-
|---|---|
|
|
989
|
-
| `ir` | **Archify workflow IR 그대로**(`schema_version:2`·`diagram_type:"workflow"`·lanes·phases·nodes·edges·mainPath). 관보가 **자기 활자(15px)·장 색**으로 다시 그린다 — Archify 의 SVG 는 8~11px 활자라 전폭에서도 10px 에 그친다(실측 2026-09-16). `svg` 가 같이 있으면 `svg` 가 이긴다 |
|
|
990
|
-
| `svg` | `diagram.mjs export` 가 굳힌 SVG 문자열(workflow 밖 종류의 길 — R1 ⚠ 를 감수하고 크게 보기로 읽힌다). 서버가 다시 걷는다 — 스크립트·스타일·foreignObject·이벤트·애니메이션·외부 href(문서 안 `#`·`data:image/` 만 남는다). 루트 width/height 는 버리고 viewBox 로 선다 |
|
|
991
|
-
| `id` | `{{그림:id}}` 로 가리키는 이름 · 메모가 무는 `data-uid` |
|
|
992
|
-
| `caption` · `alt` · `source_text` · `verdict` · `note` | 도판과 같다. 우리가 그린 도해의 출처 줄은 비운다(R12e) |
|
|
993
|
-
| `wide` | 전폭(1030px). 글자가 표시 15px 에 못 미치는 넓은 도해는 켠다 — 그리드 밖, 절 끝에 선다 |
|
|
994
|
-
| `origin` | 렌더 안 됨 — IR 경로·생성 도구를 남긴다 |
|
|
995
|
-
|
|
996
|
-
관보가 `ir` 에서 읽는 칸(그 밖은 무시한다 — `groups`·`views`·`semanticChecks`·`brand`·좌표 힌트):
|
|
969
|
+
## 11-9. 도해 — 설계 데이터를 쓰면 렌더러가 굽는다
|
|
997
970
|
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
| `phases[].label` · `.fromCol` · `.toCol` | 위 단계 띠(열 묶음) |
|
|
1003
|
-
| `nodes[].id` · `.lane` · `.col` · `.label` · `.sublabel` · `.type` · `.variant` | 상자 — `type:security`·`variant:security` 는 위험색 테두리, `type:external`·`variant:dashed` 는 파선 |
|
|
1004
|
-
| `edges[].from` · `.to` · `.label` · `.variant` | 간선 — 오른쪽 열로 가면 곧은 선·꺾인 선, 같은 열이나 왼쪽으로 가면 위 채널 |
|
|
1005
|
-
| `mainPath` | 그 순서로 이어진 노드·간선을 장 색 굵은 선으로 |
|
|
1006
|
-
|
|
1007
|
-
**기본은 `ir` 다.** Archify 가 검증한 workflow IR 을 그대로 넣으면 관보가 레인·단계·노드·간선·주 경로를 15px 활자로 그린다 — 되돌아가는 간선은 위 채널, 위험(security)은 위험색 테두리, 외부(external)·점선은 파선. 노드 라벨은 두 줄까지(넘치면 ⚠). architecture·sequence·dataflow·lifecycle 은 `svg` 로.
|
|
971
|
+
구조 · 흐름 · 순서 · 상태 · 구성의 변화는 Archify 설계 데이터(`ir` 한 장 · 두 판 비교 `compare: {base, head}`)로 `sections[].diagrams[]` 에 넣는다 —
|
|
972
|
+
렌더러가 저장소의 고정 판 Archify 로 관보 글자 기준(15px)에 맞춰 정지 SVG 를 굽는다. 관보가 절차도를 직접 그리던 옛 그리기와 미리 구운
|
|
973
|
+
`svg` 칸은 2026-10-07 에 걷었다(그 칸은 ⚠ 로 말하고 싣지 않는다 — 원본이 문서 밖에 남아 다시 굽거나 고칠 수 없었다).
|
|
974
|
+
종류 · 둘 수 있는 칸 · 서버 조건 · 한도는 장치 표(`visual-first.md` §4)와 `diagrams.md` 1절이, 칸 꼴은 도구 스키마가, 쓰는 법은 `diagrams.md` 2절이 정본이다.
|
|
1008
975
|
|
|
1009
|
-
|
|
1010
|
-
|
|
976
|
+
못 구우면 같은 번호 · 같은 캡션의 대기 상자가 서고 ⚠ 가 사유를 말한다 — 원고 탓(엔진 거절 — 고칠 값이 사유에)과 서버 탓(굽기 꺼짐 · Node —
|
|
977
|
+
원고를 고칠 일이 아니다, §10 통과 기준 표)을 가른다(§10-1). 우리가 그린 도해의 출처 줄과 `verdict` 는 비운다(R12e · §11-5).
|
|
978
|
+
그림 번호는 차트 → 흐름도 → 도해 → 도판 순으로 자리가 매긴다.
|
|
1011
979
|
|
|
1012
980
|
## 11-10. 건에 묶는 근거 — `cases[].quotes` · `tables` · `plates` (2026-09-17)
|
|
1013
981
|
|
|
@@ -1034,14 +1002,15 @@ AWS 요금 조사(2026-09)에서 트래픽·로그·DB 용량이 8월 1일 앞
|
|
|
1034
1002
|
- 절 칸(`sections[].tables`·`plates`·`quotes`)은 **절 전체에 걸치는 근거**의 자리로 남는다 — 조치 전후 대조표처럼 여러 건이 함께 읽는 표.
|
|
1035
1003
|
- 없는 id 를 `cases[].plates` 에 적으면 서버가 발행을 거절한다(절 `plates` 와 같은 게이트). 「어느 절에도 안 걸린 도판」 ⚠ 는 건 `plates` 도 자리로 센다.
|
|
1036
1004
|
- `{{그림:<id>}}` 토큰은 건 도판도 가리킨다(번호 셈이 한 벌).
|
|
1005
|
+
- 확인 방법(`how_to_check`)은 독자가 그 결과를 볼 자리와 우리가 본 때·환경이다 — 볼 자리가 이 건의 캡처·영상이면 그 문장에서 `{{그림:<id>}}` 로 가리킨다(본보기 건 04-1: 「주문서를 작성해 저장하면 새로고침 없이 그 주문이 목록 첫 줄에 나타남({{그림:order-saved}}), 8. 23. 운영 관리자 웹에서 봄」 — 그림 가리킴 괄호도 문장당 괄호 하나에 들고, 때·환경은 쉼표 뒤에 이어 대시를 늘리지 않는다). 화면·동작을 말한 건에 그런 근거가 없으면 렌더러가 센다(§10-1 「독자가 볼 증거」) — 독자 자기 화면만 볼 자리로 둔 확인 방법도 센다(그 수는 승인 물음에, §10 표).
|
|
1037
1006
|
- 편집기(`lim-report` 서식)는 절의 `quotes`·`tables` 와 마찬가지로 이 칸을 아직 모른다 — 편집기로 고쳐 발행하면 빠진다(발행 데이터 정본일 때만 산다).
|
|
1038
1007
|
|
|
1039
1008
|
집행자: 렌더러 `gazette.py Doc.case_evidence()` · 서버 `report_publish.php report_data_validate()`(건 `plates` 게이트) · 시험 `tests/builder.test.py` 「건별 근거」.
|
|
1040
1009
|
|
|
1041
1010
|
## 12. 판정 밖의 두 모드 — 가르치는 문서 · R&D 브리핑
|
|
1042
1011
|
|
|
1043
|
-
독자가 **판정**하는 문서(검수 보고)와 **배우는**
|
|
1044
|
-
|
|
1012
|
+
독자가 **판정**하는 문서(검수 보고)와 **배우는** 문서는 같은 서식, 다른 서사다. 12.0~12.7 이 가르치는 문서다.
|
|
1013
|
+
**결정하는** 문서는 결정 블록을 쓴다 — 결정 모드(`decision-format.md`). 12.3b~12.6b 는 그리로 옮긴 자리의 머리만 남긴다.
|
|
1045
1014
|
|
|
1046
1015
|
### 12.0 이 절이 생긴 사건
|
|
1047
1016
|
|
|
@@ -1076,13 +1045,12 @@ AWS 요금 조사(2026-09)에서 트래픽·로그·DB 용량이 8월 1일 앞
|
|
|
1076
1045
|
|---|---|---|
|
|
1077
1046
|
| 판정한다 (검수·회신·결재) | 검수 보고 | 요약 → 대조표 → 건별 필드표 → 확인 요청 |
|
|
1078
1047
|
| 배운다 (유지보수·인수·온보딩·사후분석) | **가르치는 문서** | 학습목표 → 원리 → 붕괴 → 처방 → 적용 → 연습 |
|
|
1079
|
-
| 결정한다 (도입 여부·옵션 선택·예산·일정) |
|
|
1048
|
+
| 결정한다 (도입 여부·옵션 선택·예산·일정) | **결정 요청** | 결정 블록 — 결정 모드로 결정마다 한 장, 뼈대는 렌더러(`decision-format.md`) |
|
|
1080
1049
|
|
|
1081
1050
|
트리거: 기술보고서 · 인수인계 · 온보딩 문서 · 포스트모템 ·
|
|
1082
1051
|
「다음 사람이 읽고 이해해야」 · 「왜 이렇게 됐는지 설명하는 문서」.
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
뼈대의 **순서**를 세는 자는 없다 — 사람의 눈(§12.6b). 결정한다 뼈대에 「권고」가 앞에 서지 않는 까닭은 §12.3b 첫 문단.
|
|
1052
|
+
결정 트리거: R&D 브리핑 · 기술 도입 검토 · 타당성 검토 · 결정 요청서 · 「할지 말지 정해야」 · 「조사한 걸 정리해서 결정하게」 — 결정 블록.
|
|
1053
|
+
요청 절의 판단 항목에 기한과 선택지가 있는데 결정 블록이 없으면 렌더러가 결정 블록으로 쓰라고 알린다(§10).
|
|
1086
1054
|
|
|
1087
1055
|
### 12.3 서사 공식 — 의존 순서로 가르친다
|
|
1088
1056
|
|
|
@@ -1107,58 +1075,9 @@ AWS 요금 조사(2026-09)에서 트래픽·로그·DB 용량이 8월 1일 앞
|
|
|
1107
1075
|
「더 좋은 검사를 붙였다」가 아니라 **「그 부류가 존재할 수 없게 했다」**로 처방을 프레임한다.
|
|
1108
1076
|
적용 사례가 원리를 되짚지 않고 혼자 서면 그것은 본문이 아니라 부록감이다.
|
|
1109
1077
|
|
|
1110
|
-
### 12.3b 브리핑 서사 공식 —
|
|
1111
|
-
|
|
1112
|
-
정부 R&D 최종보고서(국가연구개발혁신법 시행규칙 별지 서식)·미 육군 결정문(BLUF)·영국 정부
|
|
1113
|
-
Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구한다 — 결론이 첫 쪽에, 권고마다 기한,
|
|
1114
|
-
선택지는 그대로 두는 길까지, 근거에는 등급, 앞선 기술에는 성숙도, 마지막은 회신 뒤 일정. 관보 문법 위에 그것을 이렇게 놓는다 —
|
|
1115
|
-
다만 **결정권이 고객에게 있는 문서**에서는 「권고」가 앞에 서지 않는다. 판단 항목은 고객이 고를 **물음**으로 서고,
|
|
1116
|
-
두 길의 결과는 **대칭**으로, FCG 의견은 **한 절 한 자리**로 물러난다(실사례 2026-09-11, 고객사 결정 브리핑 —
|
|
1117
|
-
권고가 제목·표 열·요약면에 배어 「답정너 틀」로 반려).
|
|
1078
|
+
### 12.3b 브리핑 서사 공식 — 결정 블록으로 옮김
|
|
1118
1079
|
|
|
1119
|
-
|
|
1120
|
-
|---|---|---|
|
|
1121
|
-
| 정할 것과 기한(BLUF) | 정할 것 한 줄 · 기한 한 줄. 결론(권고)이 아니라 **물음**이 먼저 선다 | `notice.text` 한 줄 + `subtitle`. `cta` 는 기본 `[]` — `.urgent` 상자에 권고를 세우지 않는다 |
|
|
1122
|
-
| 판단 항목 | 고객이 고를 **물음**. 본문 첫 문장이 기한과 두 길의 이름 | `open_items[]` — `title` 물음문 · `body` 첫 문장 「…까지 — 그대로 둘지, 바꿀지」 · `priority:"must"` 쓰지 않음(「가장 시급」 배지가 한 길을 먼저 판정한다) — §12.5b. 결정 뒤 독자의 둘째 할 일(시험판 확인 등)은 두 번째 건 「… 확인 요청」(§12.5b 끝) |
|
|
1123
|
-
| 타이밍 | 회신 기한 · 수치의 기준일 | `meta` 「회신 기한」 행 · `notice.text` · 판단 항목 본문 첫 문장 — 세 자리. 수치의 기준일은 `cover_date`(§3.1 — 작성일과 다를 때 두는 자리까지)를 따르고, `colophon.mark` 는 **기준일**만 적어 기한을 되풀이하지 않는다(readability R12f). 작성일·이력 날짜는 §3.5 `history[]` 행 |
|
|
1124
|
-
| 두 길의 결과 | 항마다 「지금 · 그대로 두면 · 바꾸면」을 **대칭**으로. 한 길의 결과만 있는 열 금지. 길이 셋 이상(도안 결재형)이면 행이 선택지, 열이 **이용자가 보는 것**(모양 · 누르면 · 넘기면 · 앱의 선례)만 — 편익·해악·불확실성은 선택지 비교 행렬 한 곳에(같은 행을 두 표에 세우지 않는다, readability R12c) | `asks` 절 `tables[]` **한 곳** — 열 「항 · 지금 · 그대로 두면 · 바꾸면」(도안 결재형은 「도안 · 모양 · 누르면 · 앱의 선례」). 권고 열·시한 칩 없음. 모든 행이 같은 값인 열은 ※ 주석으로(렌더러 ⚠) |
|
|
1125
|
-
| 배경 | 무엇을 왜 검토했는가 — 요지 브리핑판. **앞선 결정을 사실로 쓰는 조건**: 결정권이 고객에게 있는 항은 고객이 정한 기록(회신 원문·회의록·결정문)이 있고 그 항이 원문에서 실제로 닫혀 있을 때만(「정해야 함·차기」로 남아 있지 않을 때) 사실로 쓴다. 기록이 없거나 FCG·내부 대화에서 정했으면 사실로 쓰지 않고 결정 물음이나 FCG 의견 절로 둔다. FCG 권한 안의 작업 결정(작업 순서·일정)은 「FCG 작업」으로 사실 서술한다. 본문에는 결정 출처·날짜를 적지 않는다 — 확인은 원고 밖 결정 장부(작업 폴더 `decisions.json`, 발행 안 함)에서 한다 | `summary` **4~6문단**(칸 수의 정본은 SKILL.md 4~6단계). 결정에 직접 닿는 문단만 `body`(세 문장 안), 근거 문단은 `lead` 한 줄 + `refs` 로 두고 `body` 는 비운다 — 본문은 건이 가진다(readability R12g). 집행자: 결정 기록 확인은 사람 눈과 독자 검토 「사실 대조」 관점(`decisions`) · 주체 없는 결정 명사는 렌더러 ⚠(§10-1 과정 어휘) · 문단 모양은 「구조」 관점 |
|
|
1126
|
-
| 선택지 비교 | **견줄 것 × 길** 전치 행렬 — 행이 견줄 것(편익 · 해악/비용 · 불확실성 · 이행 장벽 · 성숙도 · 근거 등급 · 정할 자리 · 다시 볼 때), 열이 길. **판정 열 없음**. **지금 열린 판단 항목의 선택지를 모두 열로 세운다** — 검토했으나 고르게 하지 않는 길은 더 둘 수 있다. 앞선 결정으로 이미 닫힌 물음의 길은 요지 한 줄과 건으로 내린다. 물음이 바뀐 판에서는 행렬부터 다시 짠다 | `kind:"note"` 절 + `tables[]`. 「하지 않기로 한 것」 절은 두지 않는다 — 그 내용은 이 표의 「정할 자리」·「다시 볼 때」 행이 받는다. 「근거 등급」은 여기서 **행의 첫 칸**으로 서고, §10 검사는 열과 행 첫 칸을 다 본다 |
|
|
1127
|
-
| 근거 | 물음 → 관찰 → 판단 → 재현 방법 → 남은 불확실성 | `kind:"cases"` 절. `labels` 로 필드표 라벨을 바꾼다(`symptom`→물음 · `cause`→관찰 · `fix`→판단 · `check`→재현 방법). `grades` = 근거 등급 4단 · 요지 문단 끝 근거 이름 `labels.refs` 는 「근거 건」 — 기본 「해당 절」 뒤에 건 번호(`04-1`)가 서면 절 번호로 읽힌다 |
|
|
1128
|
-
| 한눈에 | 근거 전체의 강도 대조 | `kind:"status"` 절(대조표) |
|
|
1129
|
-
| FCG 의견 | 낼지 말지는 따로 정한다 — 내면 **한 절 한 자리**, 표 한 장(선택지 · 의견 · 까닭 · 근거 — **선택지마다 한 행**) | `kind:"note"` 절 하나, 이름에 「의견」. 부제·표 열에도 「의견」을 쓰고 건 행 이름(`labels` — 「판단」 등)은 쓰지 않는다(§10-1 「건 행 이름」). 제목 · 표 열 · 칩 · 여백 주석 · 요약면에는 권고를 배지 않는다 |
|
|
1130
|
-
| 바꾸는 길의 위험 | 바꾸는 길로 갔을 때의 위험과 완화. 없으면 「해당 없음」과 그 근거 | `kind:"note"` 절 + `tables[]` |
|
|
1131
|
-
| 회신 뒤 일정 | 고른 길별로 회신 뒤 누가 무엇을 언제. 독자에게 시험판·검수 확인을 청하면 **확인 프로필** 표를 함께 둔다(아래) | 마지막 `kind:"note"` 절 |
|
|
1132
|
-
| 사전 | 등급 기준 · 확률 어휘 · 성숙도 대응표 · 검증 환경 | `appendix[]` |
|
|
1133
|
-
|
|
1134
|
-
**확인 프로필(시험판·검수)** — 독자가 무엇을 만들어 무엇을 보면 되는지의 표. 경계마다 **포함 쪽·제외 쪽 두 행**을 두고 `≤`·`<` 가 행 이름에
|
|
1135
|
-
드러나게 쓴다. 날짜로 정해지는 경계는 확인일 기준 상대값(「확인일 기준 7일 전」)과 계산 예 하나를 둔다. 앱에서 만들 수 없는 조건은 행을 지우지 않고 대안을 적는다.
|
|
1136
|
-
각 행은 판정 코드나 정의로 확인한 뒤 싣는다 — 문서의 나이·키 같은 정의가 앱의 정의(예: 만 나이와 세는 나이)와 같은지 먼저 본다. 집행자: 사람 눈.
|
|
1137
|
-
|
|
1138
|
-
**선택지 대칭 불변식** — 대칭은 표 한 장이 아니라 문서 전체가 지킨다. 넷.
|
|
1139
|
-
- (a) 선택지의 **이름·수·순서**가 한눈표 · 선택지 비교 행렬 · FCG 의견 표 · 도판 칩 · 조건표에서 같다.
|
|
1140
|
-
- (b) 선택지마다 **같은 잣대**로 채운다 — 한 선택지만 부연하지 않는다. 도판이면 같은 촬영 규격·같은 틀(readability R13a).
|
|
1141
|
-
- (c) FCG 의견 표는 **선택지마다 한 행**이다.
|
|
1142
|
-
- (d) 한 선택지만 가진 자료(합성·실사)는 선택지 도판들 **뒤, 그 절 맨 끝**에 둔다. 그 한 길이 FCG 의견이 권하는 길과 같으면 그림이 답을 먼저 말하므로 캡션에 목적(크기 감 등)을 밝히거나 뺀다.
|
|
1143
|
-
|
|
1144
|
-
조건표(뜨는 조건 등)는 각 행을 모든 선택지 도안과 앱 코드에 대조한다 — 선택지마다 값이 다르면 행을 갈라 쓰고, 대조 없이 「공통」이라 적지 않는다(visual-first 「화면 도안」 6행).
|
|
1145
|
-
도안 결재형 본보기는 `assets/example/report-briefing-designs.json`, 두 길 기본형은 `report-briefing.json`.
|
|
1146
|
-
|
|
1147
|
-
**분량은 1:3:25 다** — `guide`(1쪽에서 결정) : `summary`+`asks`(3쪽) : `parts` 본문(25쪽) : `appendix`(그 뒤).
|
|
1148
|
-
첫 쪽만 읽고 결정할 수 있어야 하고, 본문은 그 결정을 **검증**하러 오는 사람을 위한 것이다. 읽는 법(`guide`) 물음이 그 첫 쪽의 길이다 — 무엇을 정하는가 · 선택지는 어디서 보는가 · 원본은 어디서 직접 보는가(0.5단계 5a) · 시간이 없다면 어디를 보는가.
|
|
1149
|
-
|
|
1150
|
-
단서 셋.
|
|
1151
|
-
- 브리핑은 content-pipeline §4.2 유형 **J(삭제)와 충돌한다** — 검수 보고에서 「채택되지 않은 대안」은 지우지만,
|
|
1152
|
-
브리핑에서는 **두 길이 다 본체**다. 한 길의 결과만 있는 표는 견줌이 아니라 동의 요청이다.
|
|
1153
|
-
- `grades` 하향 규율은 GRADE 와 같다 — 직접 실험이 아니면 한 단 내리고, 이해관계가 있는 출처면 또 한 단 내린다.
|
|
1154
|
-
올려서 적으면 그 한 건이 문서 전체의 신뢰를 깎는다(SKILL.md 3단계).
|
|
1155
|
-
- `asks` 절과 `summary` 절은 **한 절씩**이다. 판단 항목이 여러 절에 흩어지면 독자가 무엇을 답해야 하는지 모른다.
|
|
1156
|
-
FCG 의견도 **한 절**이다 — 두 자리부터는 권고가 문서에 배어 든다.
|
|
1157
|
-
|
|
1158
|
-
집행자 — 기한 없는 판단 항목 · `asks` 절 없음 · 「근거 등급」 열이나 행 없음은 §10 렌더러 ⚠,
|
|
1159
|
-
권고 낱말 · 표 주석 문장 수 · 판단 항목 문장 수 · 결정 요청 절 표의 동일값 열 · 건 행 이름과 선택지 기호 충돌 · 주체 없는 결정 명사는 §10-1 렌더러 ⚠.
|
|
1160
|
-
도판 사이 대칭 · 합성 자리 · 조건표와 도안의 대조는 독자 검토 「도판」 관점, 앞선 결정의 기록은 「사실 대조」 관점(`decisions`).
|
|
1161
|
-
두 길 대칭(같은 잣대) · FCG 의견 한 자리 · `cta` `[]` · 판정 열 없음 · 확인 프로필은 **사람의 눈**(§12.6b).
|
|
1080
|
+
결정 모드에서는 칸·거절·알림이 진다 — `decision-format.md`. 이미 나간 옛 결정 브리핑은 받은 판의 뼈대 그대로 고친다(SKILL 8단계 「수정 절차」 — 옛 본문은 2026-10-06 전 판의 이 파일).
|
|
1162
1081
|
|
|
1163
1082
|
### 12.4 본문 / 대장 분리
|
|
1164
1083
|
|
|
@@ -1185,46 +1104,9 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
|
|
|
1185
1104
|
끝에 복습 지침을 단다 — 판단 항목은 요청 자리라 하십시오체다(「N절을 다시 읽어 보시기 바랍니다」, SKILL 반드시 지키는 것 5).
|
|
1186
1105
|
- `cta` 는 이 문서 전체에서 독자가 지킬 **단 하나의 행동 규칙**이다.
|
|
1187
1106
|
|
|
1188
|
-
### 12.5b `open_items` 의 세 번째 용법 — 결정
|
|
1189
|
-
|
|
1190
|
-
검수 보고에서는 확인 요청, 가르치는 문서에서는 연습문제, 브리핑에서는 **결정 물음**이다 —
|
|
1191
|
-
고객이 고르는 물음이고, FCG 가 내리는 권고가 아니다.
|
|
1192
|
-
|
|
1193
|
-
```json
|
|
1194
|
-
{"title": "[방식 A] 를 다음 분기에 들일 것인가, 지금 방식을 그대로 둘 것인가",
|
|
1195
|
-
"body": "12월 31일까지 「[방식 A] 로 바꿈」과 「그대로 둠」 중 하나로 회신해 주시기 바랍니다. 그대로 두면 첫 화면 정확도 61% 가 이어지고, 바꾸면 82% 가 되며 1월에 검증 환경을 먼저 세웁니다. 우리 의견은 사실과 갈라 따로 두었습니다.",
|
|
1196
|
-
"refs": ["4.1", "4.2"]}
|
|
1197
|
-
```
|
|
1107
|
+
### 12.5b `open_items` 의 세 번째 용법(결정 물음) — 결정 블록으로 옮김
|
|
1198
1108
|
|
|
1199
|
-
|
|
1200
|
-
감추고, 「…을 권고함 — 채택 여부 회신 필요」는 답을 정해 놓고 동의만 받는다.
|
|
1201
|
-
- `body` 첫 문장이 **기한과 두 길의 이름**. 기한이 없으면 렌더러가 ⚠ 로 센다(§10 「판단 항목 「…」에 기한이 없습니다」).
|
|
1202
|
-
본문은 4문장 안(§10-1).
|
|
1203
|
-
- 근거는 `refs` 로만 두고, 본문은 **그 자리에서 자족**한다 — 길마다 달라지는 값(정확도·비용·작업)을 본문에 한 구절로 적고,
|
|
1204
|
-
뒤 절의 건 번호(`§4.1`)·절 번호 낱말(「03절」)을 본문에 쓰지 않는다. asks 절은 대개 첫 절이라 그 번호는 전부 뒤 절이고,
|
|
1205
|
-
독자는 항목 하나만 읽고 두 길 중 하나를 고를 수 있어야 한다(readability R12h · 렌더러 ⚠ §10-1 「앞 절이 뒤 절을 가리키는 곳」).
|
|
1206
|
-
`refs` 는 「근거」 단추가 되어 되짚기이지 뜀이 아니다. `§n.n` 은 건·판단 항목 앵커로만 바뀌므로 note 절을 `§5.1` 로 적으면 죽은 링크가 된다(content-pipeline §3). 「권고함」은 여기 쓰지 않는다 —
|
|
1207
|
-
의견은 이름에 「의견」이 든 절 한 곳의 몫이다. `priority:"must"` 도 쓰지 않는다 — 「가장 시급」 배지가 한 길을 먼저 판정한다.
|
|
1208
|
-
- 요청 자리라 **본문** 종결은 하십시오체다(§14-2). 제목은 물음(「…할 것인가」)으로 두고 「…하시겠습니까?」로 묻지 않는다(SKILL 5a 제목 행 · 질문형 꼴은 §14-1 끝).
|
|
1209
|
-
|
|
1210
|
-
집행자: 기한 · 문장 수 · 제목의 권고 낱말 · 본문의 뒤 절 번호는 렌더러 ⚠(§10 · §10-1) · 물음 꼴과 두 길 이름은 없음 — 사람의 눈(§12.6b).
|
|
1211
|
-
|
|
1212
|
-
**결정 문서의 둘째 할 일 — 확인 요청.** 결정 물음 말고 독자가 해야 할 일이 하나 더 있으면(시험판 화면 확인 등) `open_items` 의
|
|
1213
|
-
**두 번째 건**으로 둔다. 제목은 「… 확인 요청」, 본문 첫 문장에 상대 기한(「<독자 화면의 채널 이름> 앱을 받으신 뒤 7일 안에」)을 넣는다.
|
|
1214
|
-
확인할 앱·환경은 독자 화면에 보이는 채널 이름으로 부른다(SKILL 0단계 물음 5) — 「시험판」 같은 작업 이름은 쓰지 않는다(SKILL 반드시 지키는 것 12).
|
|
1215
|
-
|
|
1216
|
-
```json
|
|
1217
|
-
{"title": "<독자 화면의 채널 이름> 앱에서 고른 도안의 화면 확인 요청",
|
|
1218
|
-
"body": "<독자 화면의 채널 이름> 앱을 받으신 뒤 7일 안에 확인 프로필 표의 네 경우대로 보이는지 확인해 주시기 바랍니다. 표와 다르게 보이면 그 화면을 회신해 주시기 바랍니다.",
|
|
1219
|
-
"refs": ["4.2"]}
|
|
1220
|
-
```
|
|
1221
|
-
|
|
1222
|
-
- 표지 `meta`·`notice` 에는 사실문으로만 올린다(「<독자 화면의 채널 이름> 앱 확인은 받으신 뒤 7일 안」). 요청 문장은 이 건 하나에만 둔다.
|
|
1223
|
-
- 표지·현황 줄·다른 절에 「확인 부탁드립니다」를 흩어 두지 않는다 — 요청은 요청 절에만(SKILL 반드시 지키는 것 5). `guide`(읽는 법)에는 이 건을 가리키는 요청 한 줄을 둘 수 있다(「<독자 화면의 채널 이름> 앱 확인은 확인 프로필 표의 네 경우로 부탁드립니다」 꼴, 2026-09-15 사용자 결정).
|
|
1224
|
-
- 제목이 「… 확인 요청」으로 끝나면 렌더러가 기한 ⚠ 를 「확인 요청 「…」에 기한이 없습니다」로 가른다 — 결정 물음 문구(「결정을 요청한 것이 아닙니다」)로 오분류되지 않는다.
|
|
1225
|
-
- 무엇을 확인하면 되는지는 §12.3b 「확인 프로필」 표가 받는다.
|
|
1226
|
-
|
|
1227
|
-
집행자: 기한과 문구 가름은 렌더러 ⚠(`gazette.py Doc.brief_checks()`) · 할 일이 표지·읽는 법 첫 물음에 서는지는 독자 검토 「결정권자」 관점 · 사람의 눈.
|
|
1109
|
+
결정 모드에서는 칸·거절·알림이 진다 — `decision-format.md`. 이미 나간 옛 결정 브리핑은 받은 판의 뼈대 그대로 고친다(SKILL 8단계 「수정 절차」 — 옛 본문은 2026-10-06 전 판의 이 파일).
|
|
1228
1110
|
|
|
1229
1111
|
### 12.6 검수 항목
|
|
1230
1112
|
|
|
@@ -1239,29 +1121,9 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
|
|
|
1239
1121
|
- [ ] 스타일부터 만지고 있지 않은가?
|
|
1240
1122
|
**절 구성이 확정되기 전의 CSS 작업은 전부 낭비다**
|
|
1241
1123
|
|
|
1242
|
-
### 12.6b 브리핑 검수 항목 —
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
- [ ] 첫 쪽(`guide`·`notice`)만 읽고 **무엇을 언제까지 정해야 하는지** 알 수 없는가 (없음 — 사람의 눈)
|
|
1247
|
-
- [ ] 기한이 없는 판단 항목이 있는가 (렌더러 ⚠ §10)
|
|
1248
|
-
- [ ] **권고 낱말**(권고 · 기각 · 하지 않기로)이 제목 · 표 열 · 칩 · 절 이름 · 여백 주석 · 요약면에 있는가
|
|
1249
|
-
(렌더러 ⚠ §10-1 「권고 낱말이 …」 — 표 칸 안의 칩과 `cases[]` 는 사람의 눈)
|
|
1250
|
-
- [ ] FCG 의견이 **두 자리 이상**인가 — 의견 절 밖에서 「권고안은 …」이 되풀이되는가
|
|
1251
|
-
(없음 — 사람의 눈. 렌더러 관문은 「의견」이 든 절을 건너뛴다)
|
|
1252
|
-
- [ ] **한 길의 결과만** 있는가 — 「바꾸면」만 있고 「그대로 두면」이 없는 표 · 항 · 도판 (없음 — 사람의 눈)
|
|
1253
|
-
- [ ] 선택지마다 **같은 틀 · 같은 잣대**가 아닌가 — 한 선택지만 합성 · 실사 · 크게 · 먼저 · 부연인가, 선택지의 이름 · 수 · 순서가 표 · 의견 표 · 도판 칩에서 갈리는가,
|
|
1254
|
-
조건표가 모든 선택지 도안과 맞지 않는가 (§12.3b 대칭 불변식 — 독자 검토 「도판」 관점 · 동일값 열·기호 충돌은 렌더러 ⚠ §10-1 · 그 밖은 사람의 눈)
|
|
1255
|
-
- [ ] 앞선 결정을 **기록 확인 없이** 사실로 썼는가 — 결정권이 고객에게 있는 항인데 고객이 닫은 기록이 원고 밖 장부에 없는가 (「사실 대조」 관점 · 사람의 눈)
|
|
1256
|
-
- [ ] 그림 출처 줄에 **원본 위치**(쪽 · 행 · 주소 · 건 §)가 없거나, 「흐림」·「확인 불가」처럼 독자가 확인을 **포기하게** 하거나, 제작 설명(합성이며 · 자리 표시 · 배율)·그림 번호가 섞였는가
|
|
1257
|
-
(원본 위치·제작 메타는 렌더러 ⚠ §10-1 · 포기 문구는 없음 — 사람의 눈)
|
|
1258
|
-
- [ ] 고객이 **못 여는 링크**가 있는가 — 눌리는 외부 링크는 건의 `source_url` · 글자 안의 맨 주소 · `[글자](주소)` 셋이다(§11-6) (없음 — 사람의 눈)
|
|
1259
|
-
- [ ] 같은 항의 이름 · 기한이 **네 번 이상** 서는가 (없음 — 사람의 눈, readability R12f)
|
|
1260
|
-
- [ ] 사실 · 인용 · 우리 판단이 한 문장에 섞여 있는가(등급이 다른 것을 한 문장에 두면 강한 쪽으로 읽힌다) (없음 — 사람의 눈)
|
|
1261
|
-
- [ ] 「앞선 기술」이라고 적었는데 성숙도(표에 어느 단계인지)가 없는가 (없음 — 사람의 눈)
|
|
1262
|
-
- [ ] 마지막 절이 회신 뒤 일정이 아니라 요약이나 감상인가 (없음 — 사람의 눈)
|
|
1263
|
-
- [ ] 부록을 안 읽으면 결정을 못 하는가(그러면 부록이 아니라 본문이다) (없음 — 사람의 눈)
|
|
1264
|
-
- [ ] 다 읽고 독자가 할 일이 없는가 — 그러면 블로그 글이다 (`asks` 절 없음은 렌더러 ⚠ §10 · 그 밖은 사람의 눈)
|
|
1124
|
+
### 12.6b 브리핑 검수 항목 — 결정 블록으로 옮김
|
|
1125
|
+
|
|
1126
|
+
결정 모드에서는 칸·거절·알림이 진다 — `decision-format.md`. 칸이 지지 못하는 넷(선택지 사이 서술 깊이 · 판단이 문장 칸에 섞임 · 말투 · 고객이 못 여는 링크)은 처음 읽는 독자가 본다(`decision-format.md` 6절). 이미 나간 옛 결정 브리핑은 받은 판의 뼈대 그대로 고친다(SKILL 8단계 「수정 절차」 — 옛 본문은 2026-10-06 전 판의 이 파일).
|
|
1265
1127
|
|
|
1266
1128
|
### 12.7 근거
|
|
1267
1129
|
|
|
@@ -1274,26 +1136,20 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
|
|
|
1274
1136
|
- **측정폭** — 긴 행은 시선 복귀 비용이다.
|
|
1275
1137
|
구체 수치와 한글 글줄 폭 근거는 `gazette-report` 스킬에 있다.
|
|
1276
1138
|
|
|
1277
|
-
### 12.7b
|
|
1139
|
+
### 12.7b 근거 강도·부정 서술의 근거
|
|
1278
1140
|
|
|
1279
|
-
결정 문서
|
|
1280
|
-
- **미 육군 결정문·BLUF**(Army Regulation 25-50 / 정보요약 관행) — 요지를 첫 문장에. 독자는 첫 문장만 읽고 나머지는 검증한다. → `notice.text` 한 줄(정할 것·기한). 결정권이 고객에게 있는 문서에서는 그 첫 줄이 결론(권고)이 아니라 **물음**이다 — `cta` 기본 `[]`(§12.3b).
|
|
1281
|
-
- **영국 정부 Submissions**(Civil Service 「Writing for ministers」) — 「Issue · Timing · Recommendation · Background · Options · Risks · Handling」. 결정 요청에는 회신 기한이 반드시 붙는다. → `open_items` 기한 ⚠. Recommendation 은 결정권이 고객에게 있는 문서에서 **의견 절 하나**로 물러난다(§12.3b).
|
|
1282
|
-
- **WHO/SUPPORT Tools STP13**(Lavis 외, 2009) — 정책 브리프는 1:3:25(요약 1쪽 : 핵심 3쪽 : 본문 25쪽). 옵션마다 편익·해악·비용·불확실성·이행 장벽 다섯 칸. → 선택지 전치 행렬의 행(§12.3b)과 분량 비율.
|
|
1283
|
-
- **국가연구개발혁신법 시행규칙 별지 최종보고서 서식** · KISTEP 보고서 표준 — 연구 목표 대비 달성도 · 활용 계획 · 기대 효과가 본문 요소다. 결정 문서의 마지막 절이 「회신 뒤 일정」(활용 계획의 결정 문서판)인 이유.
|
|
1284
|
-
- **Google 설계 문서 관행(Non-Goals)** · Amazon 6-pager · RFC 7322 · ANSI/NISO Z39.18(과학기술보고서 서식) — 범위 밖(Non-Goals)은 부록이 아니라 본문에서 이유와 함께 선다. 결정권이 고객에게 있는 문서에서는 따로 절을 두지 않고 선택지 표의 「정할 자리」·「다시 볼 때」 행이 받는다(§12.3b).
|
|
1141
|
+
결정 문서 뼈대의 근거(BLUF · Submissions · 1:3:25 · Non-Goals)는 결정 모드의 뼈대로 옮겼다(`decision-format.md` 1절).
|
|
1285
1142
|
|
|
1286
1143
|
근거의 강도·확률 어휘.
|
|
1287
1144
|
- **ICD 203**(미 정보공동체 분석 기준) · **Kent 확률 어휘** — 추정에는 확률 어휘 사전이 붙고, 출처의 신뢰도와 정보의 신뢰도를 구분한다. → `appendix` 확률어 사전.
|
|
1288
|
-
- **GRADE**(Guyatt 외, 2008) — 근거 등급은 연구 설계에서 시작해 편향·간접성·이해관계로 **하향**한다. → `grades` 하향
|
|
1289
|
-
- **TRL**(NASA 1~9) — 「앞선 기술」에는 성숙도 단계가 붙어야 비교가 된다. → 선택지 표 「성숙도」 행.
|
|
1145
|
+
- **GRADE**(Guyatt 외, 2008) — 근거 등급은 연구 설계에서 시작해 편향·간접성·이해관계로 **하향**한다. → `grades` 하향 규율 — 직접 실험이 아니면 한 단 내리고, 이해관계가 있는 출처면 또 한 단 내린다.
|
|
1290
1146
|
|
|
1291
1147
|
부정 서술·나쁜 소식 전달(사람·조직·국가를 배제의 주어로 세우지 않는 이유).
|
|
1292
1148
|
- **Williams(2007) 사회적 배제** · **Baumeister 외(2001) 「Bad is stronger than good」** — 배제·부정 신호는 같은 크기의 긍정보다 크게 작용한다. 배제 서술 하나가 문서 전체의 인상을 정한다.
|
|
1293
1149
|
- **Bies & Shapiro(1987) 인과적 설명** · **Langer & Rodin(1976) 통제감** — 거절에 이유가 붙으면 부당하다는 판단이 크게 준다. 선택지가 남으면 통제감이 유지된다. → 부정 하나에 원인·기준·재검토·선택지 넷.
|
|
1294
|
-
- **SPIKES**(Baile 외, 2000) · **Covello 27/9/3** · **Sandman 위험 소통** — 나쁜 소식은 상대가 아는 것을 먼저 확인하고, 27단어·9초·3요점 안에, 감정과 사실을 분리해 전한다. → 요약 4
|
|
1150
|
+
- **SPIKES**(Baile 외, 2000) · **Covello 27/9/3** · **Sandman 위험 소통** — 나쁜 소식은 상대가 아는 것을 먼저 확인하고, 27단어·9초·3요점 안에, 감정과 사실을 분리해 전한다. → 요약 4칸의 순서.
|
|
1295
1151
|
- **Sherman & Cohen(2002) 자기 확인** — 나쁜 소식 앞에 상대의 가치·성취를 한 문장 확인하면 방어적 해석이 준다. → 「상대가 이미 잘 둔 것 한 문장」.
|
|
1296
|
-
- **자기결정이론(Deci & Ryan)** — 「해야 한다」는 자율성을 깎고, 선택지를 남긴 제안은 안 그렇다. →
|
|
1152
|
+
- **자기결정이론(Deci & Ryan)** — 「해야 한다」는 자율성을 깎고, 선택지를 남긴 제안은 안 그렇다. → 선택지를 대칭으로 남기고 판단은 한 자리에 둔다(결정 블록은 `opinion` 칸).
|
|
1297
1153
|
- **Google · Microsoft 오류 메시지 지침** — 「무엇이 안 되는가」가 아니라 「무엇을 하면 되는가」를 먼저. 사용자를 주어로 한 부정(「You cannot」)을 피한다. → 조건 주어 규칙(SKILL.md 10번, content-pipeline 유형 K).
|
|
1298
1154
|
- **IDEO 「How might we」** · **Stokes(2006)** — 제약을 질문으로 바꾸면 선택지가 생긴다. 「[조건]이면 [기준] 때문에 [결과] — [선택지]」 틀의 마지막 칸.
|
|
1299
1155
|
|
|
@@ -1374,7 +1230,7 @@ Submissions·WHO/SUPPORT 정책 브리프(1:3:25)가 **같은 뼈대**를 요구
|
|
|
1374
1230
|
|
|
1375
1231
|
### 한 문장 한 줄
|
|
1376
1232
|
|
|
1377
|
-
**렌더러가 한다.**
|
|
1233
|
+
**렌더러가 한다.** 결정 모드는 문장 표식을 새기되 문단으로 세운다(2026-10-06 사용자 승인) — 아래는 보고 모드다.
|
|
1378
1234
|
원고는 문장을 이어 붙여 써도 된다 — `sentbreak.py` 가 `boundary.py` 를 물고 와서
|
|
1379
1235
|
문장마다 `<span class="sn">` 을 새기고, 이어지는 줄만 내어쓴다.
|
|
1380
1236
|
낱말은 하나도 안 바뀐다.
|