LAXworkspace
알림 · 보고서
오프라인입력 4.5M (캐시 97%) · 출력 45.5K
새 대화
세션 목록
⚠ 로컬 데몬이 오프라인입니다 — 메시지는 큐에 쌓였다가 데몬이 켜지면 처리됩니다.
🗜 이 대화가 길어졌습니다 — 컨텍스트 압축 또는 새 세션을 권장합니다.
jarvis의 요청: [HQ 자비스 · 작업 지시] LAX 브레인 고아 페이지 108건 정리 건이다. Jason 승인 완료. ## 상황 app.wikicomu.com의 LAX 브레인 그래프를 보면 노드 174개 중 **108개가 고아**(아무 페이지와도 연결 안 됨), 분리된 섬 112개다. 고아 비율 62%. 그래프가 사실상 점 뿌린 상태다. 미라(위키커뮤 사서)가 양쪽 D1을 실측해 원인을 분해했다. **전부 lax-db 또는 LAX-site 코드가 상류**이고, wikicomu-kr 쪽은 순수 미러(diff 0건)라 거기서 고치면 up-sync가 덮어쓴다. 그래서 네 소관이다. ## 확정된 원인과 고칠 위치 | 그룹 | 건수 | 원인 | 고칠 곳 | |---|---|---|---| | decision | 48 | **lax-db `projects` 테이블이 0행** → 빌더가 `decisions LEFT JOIN projects`로 링크를 다는데 ptitle이 전부 NULL → links=[] | lax-db `projects`에 LAX 프로젝트 행 추가 + `decisions.project_id` 연결 후 rebuild-brain. 또는 `LAX-site/src/shared/brain.ts` 빌더에 프로젝트 없을 때 fallback 링크 | | actor | 22 | 빌더가 모든 actor에 `{to:'Wikicomu'}` 링크를 다는데 lax 브레인에 `Wikicomu` 슬russ그가 0건 → 전부 dangling(25회) | `LAX-site/src/shared/brain.ts`에서 `to:'Wikicomu'` → `'LAX'`로 바꾸고 `LAX` 앵커 페이지 생성 | | 재라벨 36 | 36 | 2026-08-02에 내가 `brain='wikicomu'` 오분류를 `'lax'`로 재라벨한 것들. LAX 에이전트가 STORE_WIKI로 쌓은 실무 지식인데 본문에 `[[링크]]`가 아예 없음 | lax-db 본문에 `[[대상]]` 추가 후 재싱크. 상위 허브(예: `LAX 제품`, `소장 작업대`, `과금`)를 세우고 part-of로 매다는 게 정공법 | | 기타 auto | 2 | 빌더 링크 누락 | 동일 빌더 | **주의 2가지** 1. lax-db의 auto 페이지 120건은 `buildBrainFromCompanyData`가 `DELETE ... sources LIKE '%auto:company-data%'` 후 재생성한다. **손으로 고쳐도 rebuild-brain 한 번에 날아간다** — 빌더 코드를 고쳐야 지속된다. 2. 엣지는 본문 파싱이 아니라 `brain_pages.links` JSON 필드에서만 만들어진다. `to`가 같은 brain에 실존하는 slug가 아니면 엣지가 버려진다. 본문에 `[[...]]`만 써두면 그래프에 안 나온다(현재 lax에 그런 페이지 17건 있음). ## 재발 방지 (같이 부탁한다) 근본 원인은 `LAX-site/daemon/daemon.js`(미라 확인: 1345-1347행 부근)의 STORE_WIKI 프롬프트가 링크를 요구하지 않는 것이다. "본문에 기존 페이지를 `[[제목]]`으로 최소 1개 연결" 을 의무화해 달라. 이거 없이는 지금 108건을 다 메워도 다음 주에 또 쌓인다. (위키커뮤 데몬 쪽 같은 수정은 내가 지금 한다.) ## 확인이 필요한 불일치 1건 `lax-brain/company/wiki/*.md`는 18개인데 lax-db의 비-auto 페이지는 54건이다. md→D1 단방향만으로는 설명이 안 된다. STORE_WIKI 외 다른 쓰기 경로가 있는지, 아니면 md가 정리된 것인지 네가 알고 있나? 36건 작업 전에 이게 정리돼야 한다. ## 답해줄 것 1. 위 4그룹 중 네가 바로 착수 가능한 것과, 막히는 것(권한·판단 필요) 2. md 18 vs D1 54 불일치의 정체 3. 예상 소요와 착수 시점 4. 설계에서 내가 틀린 것이 있으면 지적해라 작업 대상은 lax-db와 LAX-site다. **Wikicomu-site는 건드리지 마라**(내 소관). 비가역 삭제(DROP, 조건 없는 DELETE 등)는 헌장대로 Jason 사전 승인이 필요하니, 필요하면 먼저 보고해라.

자비스 지시 받았다. 실측부터 한다.

명령 · ls C:/Users/user/lax-brain/company/wiki/ | head -60; echo "--- count ---"; ls C:/Users/use…
ls C:/Users/user/lax-brain/company/wiki/ | head -60; echo "--- count ---"; ls C:/Users/user/lax-brain/company/wiki/ | wc -l; echo "--- inbox ---"; ls C:/Users/user/lax-brain/_inbox/ 2>/dev/null | head -40
명령 · cd C:/Users/user/LAX-site && ls && echo "--- wrangler ---" && cat wrangler.toml 2>/dev/nul…
cd C:/Users/user/LAX-site && ls && echo "--- wrangler ---" && cat wrangler.toml 2>/dev/null | head -40
명령 · cd C:/Users/user/LAX-site && npx wrangler d1 execute lax-db --remote --json --command "SEL…
cd C:/Users/user/LAX-site && npx wrangler d1 execute lax-db --remote --json --command "SELECT COUNT(*) n, SUM(CASE WHEN sources LIKE '%auto:company-data%' THEN 1 ELSE 0 END) auto, SUM(CASE WHEN links IS NULL OR links='[]' OR links='' THEN 1 ELSE 0 END) nolink FROM brain_pages WHERE brain='lax'" 2>&1 | tail -30
명령 · cd C:/Users/user/LAX-site && grep -n "Wikicomu\|projects\|auto:company-data" src/shared/br…
cd C:/Users/user/LAX-site && grep -n "Wikicomu\|projects\|auto:company-data" src/shared/brain.ts | head -60
명령 · cd C:/Users/user/LAX-site && npx wrangler d1 execute lax-db --remote --json --command "SEL…
cd C:/Users/user/LAX-site && npx wrangler d1 execute lax-db --remote --json --command "SELECT sources, COUNT(*) n FROM brain_pages WHERE brain='lax' AND sources NOT LIKE '%auto:company-data%' GROUP BY sources ORDER BY n DESC" 2>&1 | tail -60
명령 · cd C:/Users/user/LAX-site && file src/shared/brain.ts && wc -c src/shared/brain.ts && grep…
cd C:/Users/user/LAX-site && file src/shared/brain.ts && wc -c src/shared/brain.ts && grep -c "" src/shared/brain.ts
명령 · cd C:/Users/user/LAX-site && npx wrangler d1 execute lax-db --remote --json --command "SEL…
cd C:/Users/user/LAX-site && npx wrangler d1 execute lax-db --remote --json --command "SELECT slug, substr(title,1,40) t, substr(sources,1,30) s, substr(updated_at,1,10) u, CASE WHEN links IS NULL OR links='[]' THEN 0 ELSE 1 END L FROM brain_pages WHERE brain='lax' AND sources NOT LIKE '%auto:company-data%' ORDER BY u" 2>&1 | python -c "import sys,json; d=json.load(sys.stdin); [print(r['u'],'|',r['L'],'|',r['slug'][:38],'|',r['t'][:30],'|',r['s'][:26]) for r in d[0]['results']]"
📖 읽기 · brain.ts
C:/Users/user/LAX-site/src/shared/brain.ts
명령 · cd C:/Users/user/LAX-site && grep -rn "buildBrainFromCompanyData" src/ --include=*.ts | he…
cd C:/Users/user/LAX-site && grep -rn "buildBrainFromCompanyData" src/ --include=*.ts | head; echo "=== bridge/wiki ==="; grep -rn "bridge/wiki\|upsertBrainPage" src/ --include=*.ts | head -20
명령 · cd C:/Users/user/LAX-site && grep -n "STORE_WIKI" daemon/daemon.js | head -20
📖 읽기 · daemon.js
C:/Users/user/LAX-site/daemon/daemon.js
📖 읽기 · daemon.js
C:/Users/user/LAX-site/daemon/daemon.js
명령 · cd C:/Users/user/LAX-site && grep -n "BRAIN_DIR\s*=\|BRAIN_REPO\|sync-brain\|syncBrain" da…
cd C:/Users/user/LAX-site && grep -n "BRAIN_DIR\s*=\|BRAIN_REPO\|sync-brain\|syncBrain" daemon/daemon.js | head -20
명령 · cd C:/Users/user/LAX-site && npx wrangler d1 execute lax-db --remote --json --command "SEL…
cd C:/Users/user/LAX-site && npx wrangler d1 execute lax-db --remote --json --command "SELECT slug, CASE WHEN links IS NULL OR links='[]' THEN 0 ELSE 1 END L, substr(sources,1,24) s FROM brain_pages WHERE brain='lax' AND sources NOT LIKE '%auto:company-data%' ORDER BY slug" 2>&1 > /tmp/nonauto.json; python -c "
import json,re
raw=open('/tmp/nonauto.json',encoding='utf8').read()
i=raw.find('[')
d=json.loads(raw[i:])
rs=d[0]['results']
print(len(rs))
for r in rs: print(r['L'],'|',r['slug'][:45],'|',r['s'][:22])
"