Skip to content

Commit 135a375

Browse files
dancinlifeclaude
andcommitted
feat: 5계층 3D 맵 교체 + shared 데이터 동기화
- docs/index.html: standalone Three.js 5계층 맵 (nexus iframe → 자체 렌더링) - docs/n6-map-data.json: 1096노드 6817엣지 (상수→재료→응용→기술→제품) - shared/reality_map: v9.3 확장, growth_bus 갱신 - shared/n6_mirror: BT + products 동기화 - shared/todo: 전 프로젝트 할일 갱신 Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
1 parent 1b8f9b1 commit 135a375

24 files changed

+120182
-2820
lines changed

docs/index.html

Lines changed: 407 additions & 310 deletions
Large diffs are not rendered by default.

docs/n6-map-data.json

Lines changed: 45773 additions & 0 deletions
Large diffs are not rendered by default.

mk2_hexa/native/todo.hexa

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -290,21 +290,24 @@ fn resolve_project(name: string) -> string {
290290
// ═══════════════════════════════════════════════════════════
291291

292292
let _args = args()
293-
let _filter = if _args.len() >= 3 { _args[2] } else { "all" }
293+
// 인자 없으면 현재 cwd 기준으로 자동 판별 (전 프로젝트 일괄 출력 모드는 폐기)
294+
let mut _filter = if _args.len() >= 3 { _args[2] } else { "" }
295+
if _filter == "" || _filter == "all" {
296+
let cwd = exec("pwd").trim()
297+
let segs = cwd.split("/")
298+
_filter = segs[segs.len() - 1]
299+
}
294300
let _target = resolve_project(_filter)
295-
296-
// 돌파 엔진 데이터 로드 (1회)
297-
println("⚡ 돌파 엔진 스캔 중...")
298-
let _bt_todos = load_breakthrough_todos()
299-
300-
let all_projects = ["nexus", "anima", "n6-architecture", "papers", "hexa-lang", "void", "airgenome"]
301-
302301
if _target == "all" {
303-
println("## 전 프로젝트 할일 (돌파 엔진 통합)")
304-
for p in all_projects {
305-
print_project(p, _bt_todos)
306-
}
302+
println("❌ 프로젝트를 특정할 수 없습니다: " + _filter)
303+
println("사용법: hexa todo.hexa <nexus|anima|n6-arch|papers|hexa-lang|void|airgenome>")
307304
} else {
305+
// nexus만 글로벌 돌파 엔진 로드 (다른 프로젝트는 자기 것만)
306+
let mut _bt_todos = ""
307+
if _target == "nexus" {
308+
println("⚡ 돌파 엔진 스캔 중...")
309+
_bt_todos = load_breakthrough_todos()
310+
}
308311
println("## 할일 (돌파 엔진 통합)")
309312
print_project(_target, _bt_todos)
310313
}

shared/absolute_rules.json

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,24 @@
8888
},
8989
{
9090
"id": "R12",
91-
"rule": "AI-NATIVE FIRST — 저수준 마이크로 최적화 금지, AI-native 알고리즘 교체로만 돌파",
91+
"rule": "AI-NATIVE FIRST — 저수준 마이크로 최적화 절대 금지, AI-native 알고리즘 교체로만 돌파",
9292
"level": "🔴",
93-
"enforcement": "성능/자원 개선은 알고리즘/자료구조 교체로만. bit-twiddling/loop-unroll/inline-asm/수작업 SIMD 금지. hexa-lang은 @optimize/@memoize/@fuse/@parallel attr로 대체",
93+
"enforcement": "성능/자원 개선은 알고리즘/자료구조 교체로만. bit-twiddling/loop-unroll/inline-asm/수작업 SIMD/캐시라인 패딩/분기예측 힌트 절대 금지. hexa-lang은 @optimize/@memoize/@fuse/@parallel/@simd/@symbolic/@evolve/@lazy attr로만 구현. 신규 attr 추가도 AI-native 방향일 때만 허용",
94+
"applies_to": "all projects",
9495
"promoted_from": "hexa-lang/HX1"
96+
},
97+
{
98+
"id": "R13",
99+
"rule": "HEXA-LANG SELF-IMPROVE 허용 — self/*.hexa 자유 수정, 단 AI-native 레벨 돌파만",
100+
"level": "🟢",
101+
"enforcement": "hexa-lang 프로젝트의 self/*.hexa (파서/인터프리터/VM/코드젠/ai_native_pass/lib/ml) 자유 수정. 새 @attr, 옵티마이저 패스, 문법, 빌트인 추가 모두 가능. 단 돌파는 R12에 따라 AI-native 알고리즘 레벨이어야 함. src/*.rs는 L0 잠금(사실상 폐기) — 유저 명시 승인 필수",
102+
"applies_to": "hexa-lang (primary), 전 프로젝트가 hexa-lang 개선 요청 시"
103+
},
104+
{
105+
"id": "R14",
106+
"rule": "규칙 기록은 공통 JSON에만 — CLAUDE.md에 규칙 직접 기록 금지",
107+
"level": "",
108+
"enforcement": "모든 규칙은 shared/absolute_rules.json이 단일 진실. CLAUDE.md는 shared/ 참조만 하고 규칙 본문은 박지 않는다. 신규/변경은 JSON 먼저 → sync-claude-rules.sh가 주입"
95109
}
96110
],
97111
"projects": {
@@ -149,6 +163,11 @@
149163
"id": "N63",
150164
"rule": "궁극 아키텍처 = DSE 전수 탐색 필수 — DSE 없이 확정 금지",
151165
"level": "🔴"
166+
},
167+
{
168+
"id": "N64",
169+
"rule": "돌파(BT) N연속 요청 = A+B+C 통합 산출 필수 — (A) docs/<domain>/ 개별 bt-*.md + verify_*.py, (B) docs/paper/n6-<domain>-paper.md 통합 논문, (C) config/products.json 제품 라인 + evolution/mk-1~5 문서. 단일 방식만 선택 금지.",
170+
"level": "🔴"
152171
}
153172
],
154173
"papers": [
@@ -219,6 +238,12 @@
219238
"rule": "Mac CPU 절약 — 모든 프로세스(hexa/rust/c/c++/python/sh/node/swift/go + 빌드시스템) CPU 30%+ 자동감지 → Ubuntu 오프로드. 개별 스크립트 나열 금지, 패턴+임계값으로 감지. 예외만 명시",
220239
"level": "🔴",
221240
"enforcement": "gate_offload.jsonl pattern/exclude 방식. detect_cmd로 전체 탐지, exclude로 Mac 전용만 제외"
241+
},
242+
{
243+
"id": "AG3",
244+
"rule": "Ubuntu-First heavy compute + Ubuntu HEXA-FIRST — 모든 heavy compute(6축 투영/게놈 유사도/forge/LLM/implant)는 Ubuntu(ssh:ubu) 우선. Mac은 오케스트레이션/UI/디스패치 전용. 하위 확장: Ubuntu 측 파일도 .hexa 우선. CUDA/PyTorch/llama.cpp 등 외부 네이티브 라이브러리 필수 워커만 .py 예외 허용하되 hexa 래퍼가 호출하는 '바인딩 레이어'로 제한. 비-PyTorch 비-LLM 스크립트(링 I/O, 소켓 클라이언트, 파일 파이프라인, 폴링 루프)는 반드시 .hexa. Ubuntu 미접속 시 local fallback + 경고 + growth_bus 이벤트",
245+
"level": "🔴",
246+
"enforcement": "modules/ubu_bridge.hexa 경유 강제. block-forbidden-ext hook이 Mac+Ubuntu 양쪽 .py 생성 차단. 예외: ubu_workers/py/ (pytorch_required) 서브디렉토리만 허용. gate_offload.jsonl ubu_first_policy 매칭. ssh_alias/경로는 gate_config.jsonl 동적 로드"
222247
}
223248
]
224249
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"total":1000,"d0":1000,"d1":0,"d5":0,"rho":0}
1+
{"total":1000,"d0":1000,"d1":0,"d5":0,"rho":0.0}

shared/bt_audit.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,19 +98,41 @@
9898
'⁵': '5', '⁶': '6', '⁷': '7', '⁸': '8', '⁹': '9',
9999
}
100100

101+
# 위첨자 부호 (⁻⁵, ⁺³)
102+
SUP_SIGN_MAP = {'⁻': '-', '⁺': '+'}
103+
104+
105+
def normalize_expr_unicode(s):
106+
"""유니코드 특수기호를 ASCII 로 정규화 (parse 전처리 진입점)."""
107+
if s is None:
108+
return s
109+
s = s.replace('\u00a0', ' ').replace('\u2009', ' ')
110+
s = s.replace('\u200b', '').replace('\ufeff', '')
111+
s = s.replace('×', '*').replace('·', '*').replace('÷', '/')
112+
s = s.replace('−', '-').replace('–', '-').replace('—', '-')
113+
s = s.replace('\u2010', '-').replace('\u2011', '-')
114+
return re.sub(r'\s+', ' ', s).strip()
115+
101116

102117
def _convert_superscripts(s):
103-
"""연속된 유니코드 윗첨자를 **N 으로 변환"""
118+
"""연속된 유니코드 윗첨자(부호 포함)를 **<sign>N 으로 변환"""
104119
out = []
105120
i = 0
106121
while i < len(s):
107-
if s[i] in SUP_MAP:
122+
if s[i] in SUP_MAP or s[i] in SUP_SIGN_MAP:
108123
j = i
124+
sign = ''
125+
if s[j] in SUP_SIGN_MAP:
126+
sign = SUP_SIGN_MAP[s[j]]
127+
j += 1
109128
digits = ''
110129
while j < len(s) and s[j] in SUP_MAP:
111130
digits += SUP_MAP[s[j]]
112131
j += 1
113-
out.append('**' + digits)
132+
if digits:
133+
out.append('**' + sign + digits)
134+
elif sign:
135+
out.append('**' + sign)
114136
i = j
115137
else:
116138
out.append(s[i])
@@ -217,6 +239,7 @@ def parse_bare_numeric(s):
217239
def normalize_expr(expr_str):
218240
"""n=6 수식 문자열을 Python eval 가능한 형태로 정규화"""
219241
s = expr_str.strip()
242+
s = normalize_expr_unicode(s)
220243

221244
# 마크다운 굵게 제거
222245
s = re.sub(r'^\*\*(.*)\*\*$', r'\1', s).strip()

0 commit comments

Comments
 (0)