genetics-mcp 2.18.3 → 2.19.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.
@@ -29,7 +29,22 @@ node ~/.claude/skills/archify/bin/archify.mjs doctor
29
29
  `diagram.mjs` 는 `--archify <dir>` → `ARCHIFY_DIR` → `~/.claude/skills/archify` → `~/.agents/skills/archify`
30
30
  → `~/.cursor/skills/archify` → `~/.codex/skills/archify` 순으로 찾는다. 없으면 설치 안내와 함께 멈춘다(exit 2).
31
31
 
32
- ## 2. 절차 — IR 을 쓰고, 굳히고, 재고, 앉힌다
32
+ ## 1.5 실측이 정한 두 길 — `ir`(기본) 과 `svg`(예외)
33
+
34
+ Archify 의 SVG 는 노드 라벨 11px · 부제·간선 라벨 8px · 범례 7.5px 를 800px 넘는 viewBox 에 놓는다(화면+줌 전제, 자체 계약은
35
+ 「투영 6px 이상」). 관보는 인쇄 우선이라 어떤 글자도 15px 아래로 못 내려가는데(R1), 전폭 1030px 에서도 그 SVG 는 표시 10px 에
36
+ 그친다 — 3열 단일 레인(viewBox 808)도 10.2px 였다(2026-09-16 실측, 프리셋 넷 모두 같음). 글자를 키우면 Archify 의 노드 상자·라벨
37
+ 마스크가 깨진다. 그래서:
38
+
39
+ | 길 | 언제 | 무엇을 넣나 | 가독성 |
40
+ |---|---|---|---|
41
+ | **`ir`** (기본) | `workflow`(절차·관문·runbook) | Archify validate 를 통과한 IR **그대로** | 관보가 15px 활자·장 색으로 다시 그린다 — R1 자동 충족 |
42
+ | `svg` (예외) | architecture · sequence · dataflow · lifecycle | `diagram.mjs export` 의 SVG | R1 ⚠ 를 감수, 크게 보기(1400px)로 읽힌다. 인쇄에서는 작다 |
43
+
44
+ `ir` 길에서 Archify 는 **저작·검증 도구**다(타입 스키마·주 경로·간선 의미·검증 영수증). 그린 HTML 은 화면용 부속물로
45
+ 문서 밖 링크에 둘 수 있다.
46
+
47
+ ## 2. 절차 — IR 을 쓰고, 검증하고, 앉힌다(`ir` 길) / 굳히고 재서 앉힌다(`svg` 길)
33
48
 
34
49
  1. **종류를 고른다** — Archify `SKILL.md` 의 Type router: `architecture`(구성 요소·경계) · `workflow`(절차·관문·runbook)
35
50
  · `sequence`(호출 순서) · `dataflow`(파이프라인·계보) · `lifecycle`(상태 전이). 모르면
@@ -56,16 +71,18 @@ node ~/.claude/skills/archify/bin/archify.mjs doctor
56
71
  5. **잰다** — 위 명령이 함께 잰다: 바이트(≤ 250,000) · viewBox · 가장 작은 글자 × (표시 폭 ÷ viewBox 폭) ≥ 15px(R1) ·
57
72
  세로/폭 ≤ 1.8(R9). ✗ 면 exit 3 — 렌더러도 같은 ⚠ 를 내므로 **여기서 고친다**: 넓은 도해는 `--wide`(표시 1030px),
58
73
  그래도 모자라면 노드·라벨을 줄인다. 글자를 키우는 것은 Archify 의 몫이 아니다 — 도해를 쪼갠다.
59
- 6. **앉힌다** — `report.json`:
74
+ 6. **앉힌다** — `report.json`. `ir` 길은 4·5 를 건너뛰고 IR 을 그대로 넣는다:
60
75
  ```json
61
76
  "diagrams": [{
62
77
  "id": "upgrade-path", "caption": "업그레이드가 지나는 세 관문",
63
- "svg": "<svg …>…</svg>", "alt": "스냅샷 복원 → 시험 → 운영 적용",
64
- "verdict": "직접 확인", "wide": true,
78
+ "ir": { "schema_version": 2, "diagram_type": "workflow", "meta": {"title": "…"}, "lanes": [...], "nodes": [...], "edges": [...] },
79
+ "alt": "스냅샷 복원 → 시험 → 운영 적용", "verdict": "직접 확인", "wide": true,
65
80
  "origin": "archify workflow v2 · ir/upgrade-path.workflow.json"
66
81
  }]
67
82
  ```
68
- `svg` 는 파일 내용을 문자열로 넣는다(JSON 이스케이프). `origin` 은 렌더 안 됨 — IR 경로를 남긴다.
83
+ `svg` 길은 `"svg": "<svg …>…</svg>"` 로(파일 내용을 문자열로, JSON 이스케이프). `origin` 은 렌더 안 됨 — IR 경로를 남긴다.
84
+ `ir` 길의 관보 규칙: 노드 라벨은 열 폭에서 15px 두 줄까지(넘치면 ⚠) · 부제 한 줄 · 되돌아가는 간선은 위 채널 ·
85
+ `security` 는 위험색 테두리 · `external`·`dashed` 는 파선 · `mainPath` 는 장 색 굵은 선 · `groups` 는 그리지 않는다.
69
86
  그림 번호는 차트 → 흐름도 → 도해 → 도판 순으로 자리가 매긴다. 본문에서 `{{그림:upgrade-path}}` 로 가리킨다.
70
87
  7. **로컬 렌더 → dry_run** — 다른 장치와 같다. 렌더러 ⚠ 문구는 `lim-portal-format.md` §10-1.
71
88
 
@@ -455,6 +455,9 @@ python3 assets/render.py <report.json>
455
455
  | 절 %s 도해 「%s」가 %d바이트입니다 — 상한 %d바이트, 노드를 줄이거나 도판(PNG)으로 싣습니다 | `diagrams[].svg` 가 250,000B 초과 | 도해를 나누거나 PNG 도판으로 |
456
456
  | 절 %s 도해 「%s」에 viewBox 가 없거나 svg 가 아닙니다 — 폭을 알 수 없어 싣지 않습니다 | 루트 `<svg>` 에 viewBox 가 없다 | `diagram.mjs export` 로 굳힌 SVG 를 넣는다(§11-9) |
457
457
  | 절 %s 시계열 「%s」의 표식 「%s」가 점에 없습니다 — marks[].x 는 points[].x 와 같은 값이어야 섭니다 | `charts[].marks[].x` 가 어느 `points[].x` 와도 같지 않다 | 점의 x 값 그대로 적는다(§11-7) |
458
+ | 절 %s 도해 「%s」의 ir 는 %s 입니다 — 관보가 직접 그리는 것은 workflow 뿐, 다른 종류는 svg 로 굳혀 넣습니다 | `diagrams[].ir.diagram_type` 이 `workflow` 가 아니다 | Archify 로 그린 뒤 `diagram.mjs export` 의 svg 를 넣는다(§11-9) |
459
+ | 절 %s 도해 「%s」의 노드 「%s」 라벨이 두 줄을 넘습니다 — 낱말을 줄이거나 wide 로 두십시오 | 노드 폭(열 폭 − 간격)에서 15px 글자로 두 줄을 넘는 라벨 | 라벨을 줄이거나 `wide: true` |
460
+ | 절 %s 도해 「%s」의 노드 「%s」가 없는 레인 「%s」를 가리킵니다 | `nodes[].lane` 이 `lanes[].id` 에 없다 | Archify validate 를 먼저 통과시킨다 |
458
461
  | 절 N 「이름」의 k번째 문단이 M자입니다 | 문단 한 개 220자 초과(세 줄) | 두 문장으로 끊거나 수치를 표로 내린다 |
459
462
  | 절 N 「이름」 산문에 참조 번호가 M개입니다 | 산문(문단·도입문·여백 주석)에 6.6·2.12a 같은 번호 4개 이상 | 번호는 표·건·판단 항목에만, 산문은 뜻으로 잇는다 |
460
463
  | 판단 요청 N항이 산문으로만 섭니다 | `open_items` 6항 이상인데 asks 절에 표·흐름도 0 | 한눈표(항 · 지금 · 그대로 두면 · 바꾸면 — 두 길 대칭, 권고 열·시한 칩 없음) + 관문 흐름도(§11-2). |
@@ -890,13 +893,27 @@ AWS 요금 조사(2026-09)에서 트래픽·로그·DB 용량이 8월 1일 앞
890
893
 
891
894
  | 칸 | 뜻 |
892
895
  |---|---|
893
- | `svg` | `diagram.mjs export` 가 굳힌 SVG 문자열. 서버가 다시 걷는다 — 스크립트·스타일·foreignObject·이벤트·애니메이션·외부 href(문서 안 `#`·`data:image/` 만 남는다). 루트 width/height 는 버리고 viewBox 로 선다 |
896
+ | `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` 가 이긴다 |
897
+ | `svg` | `diagram.mjs export` 가 굳힌 SVG 문자열(workflow 밖 종류의 길 — R1 ⚠ 를 감수하고 크게 보기로 읽힌다). 서버가 다시 걷는다 — 스크립트·스타일·foreignObject·이벤트·애니메이션·외부 href(문서 안 `#`·`data:image/` 만 남는다). 루트 width/height 는 버리고 viewBox 로 선다 |
894
898
  | `id` | `{{그림:id}}` 로 가리키는 이름 · 메모가 무는 `data-uid` |
895
899
  | `caption` · `alt` · `source_text` · `verdict` · `note` | 도판과 같다. 우리가 그린 도해의 출처 줄은 비운다(R12e) |
896
900
  | `wide` | 전폭(1030px). 글자가 표시 15px 에 못 미치는 넓은 도해는 켠다 — 그리드 밖, 절 끝에 선다 |
897
901
  | `origin` | 렌더 안 됨 — IR 경로·생성 도구를 남긴다 |
898
902
 
899
- 관문(⚠, §10-1): 바이트 250,000 초과 · viewBox 없음 · **가장 작은 글자 × (표시 폭 ÷ viewBox 폭) < 15px**(readability R1).
903
+ 관보가 `ir` 에서 읽는 칸(그 밖은 무시한다 — `groups`·`views`·`semanticChecks`·`brand`·좌표 힌트):
904
+
905
+ | IR 칸 | 관보에서 |
906
+ |---|---|
907
+ | `diagram_type` | `workflow` 만 그린다 |
908
+ | `lanes[].id` · `.label` | 가로 띠와 왼쪽 이름 |
909
+ | `phases[].label` · `.fromCol` · `.toCol` | 위 단계 띠(열 묶음) |
910
+ | `nodes[].id` · `.lane` · `.col` · `.label` · `.sublabel` · `.type` · `.variant` | 상자 — `type:security`·`variant:security` 는 위험색 테두리, `type:external`·`variant:dashed` 는 파선 |
911
+ | `edges[].from` · `.to` · `.label` · `.variant` | 간선 — 오른쪽 열로 가면 곧은 선·꺾인 선, 같은 열이나 왼쪽으로 가면 위 채널 |
912
+ | `mainPath` | 그 순서로 이어진 노드·간선을 장 색 굵은 선으로 |
913
+
914
+ **기본은 `ir` 다.** Archify 가 검증한 workflow IR 을 그대로 넣으면 관보가 레인·단계·노드·간선·주 경로를 15px 활자로 그린다 — 되돌아가는 간선은 위 채널, 위험(security)은 위험색 테두리, 외부(external)·점선은 파선. 노드 라벨은 두 줄까지(넘치면 ⚠). architecture·sequence·dataflow·lifecycle 은 `svg` 로.
915
+
916
+ 관문(⚠, §10-1): 바이트 250,000 초과 · viewBox 없음 · **가장 작은 글자 × (표시 폭 ÷ viewBox 폭) < 15px**(readability R1, `svg` 길에만).
900
917
  `diagram.mjs` 가 같은 잣대로 먼저 재므로 렌더러 ⚠ 는 마지막 그물이다. 그림 번호는 차트 → 흐름도 → 도해 → 도판 순.
901
918
 
902
919
  ## 12. 판정 밖의 두 모드 — 가르치는 문서 · R&D 브리핑
@@ -97,9 +97,11 @@ get_case(tenant, "work/<slug>.md")
97
97
 
98
98
  ### 훅이 없을 때
99
99
 
100
- 세포 미설치 기계나 codex 에서는 소속 한 줄이 안 옵니다. 그때는 **사람에게 일의 이름을 묻습니다.**
101
- 일의 목록은 군체 화면에 있고, 이름을 지어내거나 세션 목록에서 추측하지 않습니다.
102
- `search_cases` 로 「일」을 검색하는 것도 답이 아닙니다 — 소속은 사람이 누른 것만입니다.
100
+ 세포 미설치 기계나 codex 에서는 소속 한 줄이 안 옵니다. 열린 일이 **이미 있으면** 사람에게
101
+ 일의 이름을 묻거나 군체 화면에서 고르게 합니다. 열린 일이 **0건이면** 군체 화면으로 보내지
102
+ 않습니다 — 고를 일이 없습니다. 그 과업의 결정을 `remember_decision` 에 남기되 `work` 에
103
+ 열쇠를 적습니다. 저장 즉시 「계획」으로 섭니다. 이름을 세션 목록에서 추측하지 않습니다.
104
+ `search_cases` 로 「일」을 검색하는 것도 소속 확정이 아닙니다 — 소속은 사람이 누른 것만입니다.
103
105
 
104
106
  ## 커밋·배포 직전의 의식
105
107
 
@@ -135,7 +137,8 @@ get_case(tenant, "work/<slug>.md")
135
137
 
136
138
  ## 무엇을 하지 않는가
137
139
 
138
- - **내 일을 스스로 정하지 않습니다.** 소속은 사람이 군체 화면에서 누릅니다.
140
+ - **세션 소속을 스스로 확정하지 않습니다.** 열린 일이 있으면 소속은 사람이 군체 화면에서 누릅니다.
141
+ - **열린 일이 0건이면 군체 화면으로 보내지 않습니다.** 정문은 `remember_decision` 의 `work` 열쇠다.
139
142
  - **세포·훅·소속처를 대신 세우지 않습니다.** 안 서 있으면 말하고 멈춥니다.
140
143
  - **두뇌 초안을 사실로 옮기지 않습니다.** 「요약이지 관측이 아니다」는 표제가 붙은 이유입니다.
141
144
  - **동기화를 핑계로 남의 작업분을 정리하지 않습니다.** 읽는 것과 고치는 것은 다른 결정입니다.