Commit 048a193
authored
plan(v2.15): SPEC-UTIL-004/005/006 backlog — Utility Performance optimizations (#707)
v2.14.0 Utility Hardening 리뷰(manager-quality multi-perspective)에서 식별된 3건의 performance 후보를 v2.15 SPEC draft로 문서화. 각 SPEC은 non-breaking 보장, P2 Medium priority, v2.14.0 머지 완료를 전제.
## SPECs
### SPEC-UTIL-004 — ast-grep ScanMultiple Goroutine Spawn Pattern Alignment
- IMP-V3U-022
- 목표: 세마포어 획득을 goroutine 외부로 이동 (MX validator validator.go:513 패턴 정렬)
- 파일: internal/hook/security/ast_grep.go
- 4 REQs / 3 ACs
- 의존: SPEC-UTIL-002 (이미 merge 예정)
### SPEC-UTIL-005 — walkSourceFiles Incremental Scan
- IMP-V3U-023
- 목표: post-tool-use 훅의 full-tree 재귀 탐색을 changed-files only incremental로 전환 (monorepo 90% latency 감소 타겟)
- 파일: internal/hook/quality/astgrep_gate.go
- 6 REQs / 4 ACs
- 의존: SPEC-UTIL-002 (이미 merge 예정)
### SPEC-UTIL-006 — analyzeFile Tree-sitter Parse Cache
- IMP-V3U-024
- 목표: 파일당 tree-sitter 파싱 1회로 축소 (함수별 반복 제거, 80% 시간 감소 타겟)
- 파일: internal/hook/mx/validator.go + internal/hook/mx/complexity/ (ParseFile + MeasureWithTree API 추가)
- 6 REQs / 4 ACs
- 의존: SPEC-UTIL-001 (이미 merge 예정)
## Suggested Implementation Order (risk × value)
1. SPEC-UTIL-004 — 최저 위험, 가장 빠른 win (세마포어 위치 변경)
2. SPEC-UTIL-005 — 중간 위험, 최고 사용자 가시성
3. SPEC-UTIL-006 — 최고 위험, 최대 코드 영역 (tree-sitter 메모리 lifecycle 주의)
## Cross-SPEC Dependencies
- UTIL-004 ↔ UTIL-001 (패턴 레퍼런스, not blocking)
- UTIL-005 ↔ UTIL-002 (exclusion 규칙 재사용, blocking)
- UTIL-006 ↔ UTIL-001 (complexity 패키지 확장, blocking)
- 모두 ↔ v2.14.0 main 머지 완료 (prerequisite)
## /moai run 시 해결 과제
- UTIL-005: internal/hook/payload.go의 ChangedFiles 필드 존재 여부 RED phase에서 검증 (없으면 Option B git diff fallback으로 scope 확장)
- UTIL-006: BenchmarkAnalyzeFile_BeforeCache baseline 측정 후 80% 감소 AC 확정
- UTIL-006: research.md 135 LOC → annotation cycle에서 trim 가능 (API design sketch 간소화)
## Source
- v2.14.0 code review (manager-quality) Warnings 3건: ast_grep.go:207-215, astgrep_gate.go:29-41, validator.go:196-223
- PR #703 body의 "Deferred (v2.15)" 섹션과 일치
🗿 MoAI <email@mo.ai.kr>1 parent c9f7cba commit 048a193
6 files changed
Lines changed: 670 additions & 0 deletions
File tree
- .moai/specs
- SPEC-UTIL-004
- SPEC-UTIL-005
- SPEC-UTIL-006
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
0 commit comments