untracked files on main: dceb101 feat(#63): IMP-34 R1 donor capacity measured bound (u1+u2)

This commit is contained in:
kmlee1 committed 2026-05-21 22:07:41 +09:00
commit 8f085a28d3
3220 files changed
+985495

No files matched your search

@@ -0,0 +1 @@
[{"id": 21777, "html_url": "https://gitea.hmac.kr/Kyeongmin/C.E.L_Slide_test2/issues/28#issuecomment-21777", "pull_request_url": "", "issue_url": "https://gitea.hmac.kr/Kyeongmin/C.E.L_Slide_test2/issues/28", "user": {"id": 28, "login": "Kyeongmin", "login_name": "", "source_id": 0, "full_name": "이경민", "email": "kyeongmin@noreply.localhost", "avatar_url": "https://gitea.hmac.kr/avatars/d883a35f9197b080b2a0c535c3f9357dcd5c7d40b3c42bd8f40218cb94609a8e", "html_url": "https://gitea.hmac.kr/Kyeongmin", "language": "", "is_admin": false, "last_login": "0001-01-01T00:00:00Z", "created": "2025-12-30T10:51:04+09:00", "restricted": false, "active": false, "prohibit_login": false, "location": "", "website": "", "description": "", "visibility": "public", "followers_count": 0, "following_count": 0, "starred_repos_count": 1, "username": "Kyeongmin"}, "original_author": "", "original_author_id": 0, "body": "[Claude #1] Stage 1 problem-review — IMP-28 L4 (`_parse_json` 중복 cleanup, claimed-3-module → actual-4-module)\n\n## 1. Root cause\n\nThe Phase Q AI-flow modules each grew their own `_parse_json` helper to extract JSON payloads from Kei / Claude API responses. INSIGHT-MAP §5 L4 (`docs/architecture/PHASE-Q-INSIGHT-TO-22STEP-MAP.md:152`) and PHASE-Q-AUDIT.md §2.11 L4 (`docs/architecture/PHASE-Q-AUDIT.md:1215`) catch this as a cleanup-only 별 axis (\"Phase R' cleanup 또는 Phase Z utility 통합 axis 활성 시 *중복 제거 별도 판단*\"). Verified factually per RULE 5 (value + path + upstream + unknown surface):\n\n### 1-a. Issue body misidentifies the third module — actual surface is 4 modules, not 3\n\nIssue body + INSIGHT-MAP §5 L4 + PHASE-Q-AUDIT.md §2.11 L4 all state: \"pipeline / content_editor / html_generator 의 `_parse_json` 중복 제거 (3 module)\". `html_generator.py` factually has **no** `_parse_json` definition or invocation:\n\n- `Grep \"_parse_json|def _parse|json\\.loads|JSONDecode\" src/html_generator.py` → **no matches**.\n- `Grep \"json\" src/html_generator.py` → single hit at L14 (`import json`) only.\n- `git log --all -S\"def _parse_json\" -- src/html_generator.py` → empty (the symbol has never existed in `html_generator.py`).\n\nPHASE-Q-AUDIT.md §2.9 (`docs/architecture/PHASE-Q-AUDIT.md:895-955`) enumerates html_generator's surface and lists NO `_parse_json` — only `generate_slide_html` / `_call_claude` / `regenerate_area` / `build_area_prompt` / `_build_phase_t_supplement` / `_calc_indent` / `normalize_mdx` / `_slice_mdx_sections` / `_map_sections_for_role` / `_extract_keywords_from_hints` / `_get_definitions` / `_get_conclusion` / `_replace_img_placeholder`. The §2.11 cross-references to §2.9 for `_parse_json` (e.g., line 1161, 1180, 1215) are factually wrong.\n\nActual `_parse_json` definition sites (`Grep \"def _parse_json\" src/`):\n\n| module | def line | callers (def-line excluded) | call-site count |\n|---|---|---|---|\n| `src/content_editor.py` | 446 | 211, 432 | 2 |\n| `src/design_director.py` | 1071 | 527, 633 | 2 |\n| `src/kei_client.py` | 892 | 239, 345, 396, 511, 623, 737, 773, 877, 1022, 1117, 1254, 1347, 1459 | 13 |\n| `src/pipeline.py` | 2085 | 1850 | 1 |\n\n**Total: 4 defs + 18 call sites across 4 modules**, not 3. The issue body's \"3 module / pipeline + content_editor + html_generator\" framing is one module wrong (html_generator → actually design_director) and one module missing (kei_client). This re-scope is material to Stage 2.\n\n### 1-b. Two implementation variants — `simple` (pipeline) vs `full` (others)\n\nThe four `_parse_json` definitions are **not identical**. They split into two distinct variants:\n\n| variant | modules | body shape | bullet-prefix preprocessing | notes |\n|---|---|---|---|---|\n| **SIMPLE** | `pipeline.py:2085-2099` | 3 regex patterns (` ```json...``` ` → ` ```...``` ` → `\\{.*\\}`) over raw input | NO | Bare regex extraction only |\n| **FULL** | `content_editor.py:446-478`, `design_director.py:1071-1103`, `kei_client.py:892-925` | same 3-pattern regex tried twice (original input + bullet-stripped clone) | YES (strips leading `- ` / `* ` per line before second pass) | Docstring: \"Kei API가 마크다운 리스트 접두사(- )를 붙여 응답하는 경우에도 처리\" |\n\nCross-comparing FULL variant body byte-by-byte: `content_editor` (`src/content_editor.py:446-478`), `design_director` (`src/design_director.py:1071-1103`), and `kei_client` (`src/kei_client.py:892-925`) are **functionally identical** (differences are limited to one comment line in `kei_client` — see L897-898 — and whitespace; the bullet-stripping logic + regex pattern set + outer `for target in [text, cleaned]` loop is character-identical across the three).\n\n→ The cleanup is **not** a flat 4-into-1 dedup. It is a 2-axis decision: (i) does the unified utility absorb the SIMPLE caller (pipeline.py:1850) by adopting FULL semantics — bullet preprocessing applied unconditionally — or (ii) does the unified utility expose a fLine truncated