진행 중그랜드비스타 구상금: 복수보증2건 총청구 7,934,759원(미회수7,511,249+확정손해금423,510), 연대보증인없음, 손해금율 연7%45일 전
(주) ○○ 구상금 사건: 복수보증 2건(SD2202003695 7천만·2020.5.28 / SD2202103907 2천만·2021.7.16, 채권기관 ○○은행 신설동, 둘다 2025.8.28 대위변제). 연대보증 면제보증→연대보증인 없음, 주채무자 단독. 미회수 대위변제금 7,511,249(=1,272,334+6,238,915, 회수 206,520 순번1 충당) + 확정손해금 423,510(71,738+351,772, 2025.8.29~2026.6.18 연7%) = 총 7,934,759원. 손해금율 연7% 역산검증. 지연손해금 기산 2026.6.19. 피고 (주) ○○ 법인등록 ●●●●●●-●●●●●●● 사업자 ●●●-●●-●●●●● 대표 이영호, 송달지 성남 [주소 비공개]1801호. 소관 강남재기지원센터(원장)vs남부(대위변제증서) 불일치.
진행 중그랜드비스타 구상금=복수보증2건·미회수 7,511,249·연7%·연대보증인 없음(면제협약)45일 전
(주) ○○ 구상금: 복수보증 2건(SD2-2020-03695 70,000,000원/SD2-2021-03907 20,000,000원, ○○은행 신설동). 대위변제일 2025-08-28, 대위변제금 7,717,769(1,478,854+6,238,915), 회수 206,520(미환급보증료상계), 미회수 대위변제금 7,511,249. 손해금율 연7%(원장 손해금 역산 검증). 두 보증 모두 법인기업주 연대보증 면제 협약 보증→연대보증인 없음, 피고=법인 단독(대표 이영호 개인 청구 불가). 관할 약정19조4호 서울중앙지법.
교훈보증서 특약 '연대보증 면제 협약' 보증=연대보증인 없음→법인 단독피고. 손해금율은 원장 역산 검증45일 전
신용보증서 특약사항에 「법인기업주 연대보증 면제 촉진을 위한 업무협약」에 의한 연대보증 면제 보증으로 적혀 있으면 연대보증인이 없는 것 → 대표이사 ○○○ 구상청구 불가, 피고는 주채무자 법인 단독. 약정서 본인란에 연대보증인 날인 유무도 교차확인. 손해금율은 원장 손해금액÷(미회수액×일수/365)로 역산해 연7% 검증 가능.
참고설정 기능창 드래그: document dragover로 lastY저장+rAF edgeScroll(edge90px window.scrollBy) 자동스크롤 추가. 순서변경은 드래그=미리보기, 저장버튼(POST /docs/save)눌러야 DB반영(즉시저장 아님, 핀과 단일커밋)47일 전
설정 기능창(DocsEditor.tsx) 드래그 보강: (1) 드래그 중 자동스크롤 — document에 dragover 리스너로 lastY=clientY 기록, dragEl||dragGroup 활성이고 미실행이면 edgeScroll() rAF 루프 시작. edge=90px, 위가장자리 step=-ceil((edge-lastY)/5) 아래 step=ceil((lastY-(vh-edge))/5), window.scrollBy. 둘다 null되면 루프 self-stop. 가장자리에 멈춰있어도 rAF라 계속 스크롤. (2) 적용시점: 드래그는 DOM 재배치+hidden sort_${id} 값 갱신만(클라). 실제 DB반영은 POST /settings/docs/save(저장 버튼)에서만 — 체크박스 핀과 함께 단일저장 커밋. 즉시저장 아님. 서버렌더라 npm run deploy 필요. 2026-06-28.
참고설정 기능창 순서변경=드래그2단: 소분류(행 우측 ⠿, data-drag-handle)+중분류(그룹헤더 우측 ⠿, data-group-handle) 각각 같은부모 내 insertBefore, dragend에 전역 renumber. 위계UI=대분류 좌측바/중분류 카드+개수/소분류 리스트. 대분류 고정. 배포필요47일 전
설정 기능창(DocsEditor.tsx) 순서변경 = 드래그앤드롭(2단). [위계UI] 대분류(tab): 좌측 border-l-4 indigo bar+bg-indigo-500/10+'대분류'태그 h2. 중분류(feature_group): rounded-xl 카드(bg-slate-900/40 border) 안에 h3(액센트 점+이름+개수배지+우측 핸들). 소분류(doc): 카드 안 divide-y 리스트. [소분류 드래그] 행을 <div data-doc-row>(클릭토글은 내부 label flex-1로 한정), 우측 <span data-drag-handle draggable>⠿, sort_${id}는 type=hidden. dragstart→dragEl=closest(data-doc-row), dragover 같은 parentNode만 insertBefore(중점), dragend→renumber. [중분류 드래그] 그룹헤더 우측 <span data-group-handle draggable>⠿, dragstart→dragGroup=closest(data-group), dragover [data-group]끼리 같은 parentNode(=같은 대분류)만 insertBefore, dragend→renumber. 두 드래그는 dragEl/dragGroup 플래그 분리로 무간섭(상대 핸들러는 자기 플래그 null이면 return). renumber()=모든 [data-doc-row] input[name^=sort_]를 document[주소 비공개]..N 전역 재부여→nav가 tab우선 정렬이라 그룹/행 순서 모두 보존. 대분류(TAB_ORDER) 고정. 서버렌더라 npm run deploy 필요. 2026-06-28.
참고설정 기능창 필터(현재메뉴/메뉴없음)가 활성탭에만 갇혀 타탭(가사 상속포기) 안보임→crossTab=mode!=='all'||searching로 전체탭 가로질러 표시, 탭클릭시 mode=all복귀, 서버렌더 배포필요47일 전
설정 기능창(DocsEditor.tsx) 필터 3종(전체/현재메뉴=pinned/메뉴없음=unpinned)은 원래 okTab=searching||rowTab===active 라 검색 안하면 '활성 탭 행만' 보였음. 그래서 '현재 메뉴'를 눌러도 다른 탭(예: 가사) 항목은 안 떠 사용자가 혼란(상속포기/상속한정 못 봄). 수정: crossTab=searching||mode!=='all' 도입, okTab=crossTab||rowTab===active → 현재메뉴/메뉴없음 필터는 전체 탭 가로질러 표시. 탭버튼 클릭 시 setMode('all')로 그 탭 전체 복귀, 탭버튼 하이라이트는 !crossTab일때만, 카운트는 '통합 N건'. 서버렌더라 npm run deploy 필요. 2026-06-28. (앞선 두 수정: 773/774 in_scope=core 승격 마이그0064, checked={inMenu:sel||usingFallback&&core})
참고설정 기능창 '현재 메뉴' 필터는 핀(checked)기준이라 core폴백과 어긋남→DocsEditor checked={inMenu: sel||(usingFallback&&in_scope===core)}로 동기화, 서버렌더라 배포필요47일 전
설정 기능창(DocsEditor.tsx)의 '현재 메뉴' 필터(data-filter=pinned)는 체크박스가 checked인 행만 보여줌. 체크는 원래 checked={!!sel}로 핀(user_doc_selections)만 반영했는데, 실제 사이드바는 핀 0개면 in_scope='core' 폴백으로 그려져 둘이 어긋났음(사이드바엔 떠도 편집기 '현재 메뉴'엔 안 뜸). 수정: const inMenu = sel ? true : (usingFallback && d.in_scope==='core') 로 폴백시 core항목도 체크표시. CatalogDoc은 in_scope·usingFallback을 이미 prop으로 받음. 서버렌더 컴포넌트라 npm run deploy(빌드+pages deploy) 필요. 2026-06-28.
참고서류 사이드바: 핀 없으면 in_scope='core' 폴백, 핀은 replace(걸면 core9 사라짐). 모든계정 노출은 in_scope=core 승격. nav는 매요청 DB조회→배포불필요. docHref 작업대매핑 4종뿐47일 전
서류작성 사이드바(buildDocNav, src/shared/doc_nav.ts)는 user_doc_selections에 해당 email의 pinned 행이 있으면 그것만, 없으면 legal_doc_catalog.in_scope='core' 집합으로 폴백. 함정: 핀을 하나라도 걸면 폴백이 꺼져 core 9종이 사라짐(핀은 add가 아니라 replace). 특정 서류를 모든 계정 기본메뉴에 노출하려면 핀이 아니라 in_scope='core'로 승격해야 함. docHref는 소장/지급명령/답변서/준비서면 4종만 /docs/슬러그 작업대로 보내고 나머지는 /features/doc/:id 안내(준비중)로 감. mvp_built=0이면 '준비중' 배지. nav는 매요청 DB조회라 데이터변경 시 배포불필요, 새로고침만. 2026-06-28 상속포기(773)·상속한정승인(774) core 승격 마이그레이션 0064.
교훈인용 인프라에 '소?' 접두 추가로 [소갑N] 제출본제거·미리보기링크 지원(evidence.ts 4곳+routes.tsx 1곳). 사건표제는 **볼드**로 작성49일 전
지급명령(독촉)은 입증방법·인용을 '소갑/소을'(소명자료)로 쓰는데 인용 인프라가 [갑을병정]만 인식해 ①제출본(stripForSubmission)에서 [소갑N] 미제거 ②미리보기 클릭링크 미생성 버그. 수정: evidence.ts의 CITATION_RE·normalizeEvidenceNo·formatEvidenceNo·makeCitationRegex 4곳 + routes.tsx 클라이언트 normNo 1곳에 '소?' 접두 허용. 정규화키는 소갑1처럼 소 보존→증거표 행 data-evno와 매칭. 배포 68fe5907.lax-dtb.pages.dev. 사건표제(구상금청구 독촉사건/청구금액)는 마크다운 **볼드**로 작성해야 렌더됨.
진행 중드렁캔 구상금 지급명령: 미회수원금 4,190,981, 연7%, 서울중앙지법, 연대보증인 無, 업종·대리인 확인필요49일 전
○○○(김운현, 개인사업자, ●●●●●●-●●●●●●●) 구상금 지급명령 사건. 보증번호 SD1202108770, 보증금 2천만(○○은행 논현중앙지, 2021.10.1, 기한 2026.10.1, 기업운전일반자금대출, 부분보증100%). 대위변제 2026.4.20 4,228,451(원금4,160,000+이자68,451) - 회수37,470 = 미회수구상원금 4,190,981. 약정지연손해금율 연7%(구상권관리규정 제4조1항1호가목, 주채무약정금리4.29%<7%라 단서 연9% 미적용). 관할 약정 제19조4호 서울중앙지법. 연대보증인 없음. 호증: 소갑1약정서+보충위임장/소갑2신용보증서/소갑3대위변제증서/소갑4사고구상권원장/소갑5구상권관리규정. 확인필요: 업종 미상, 소송대리인 ○○○.
교훈사고: 부트스트랩 강제kill+run.bat 30초 timeout으로 daemon 다운. 조치: kill스크립트 삭제+run.bat graceful 3초/크래시 15초 분기(손석구 exit0 검증). 규칙: 에이전트 daemon 강제kill 금지, graceful만49일 전
[사고·2026-06-26] 변우석 부트스트랩이 daemon node를 강제 Stop-Process kill→(1)진행 태스크 즉시 중단(lease 만료까지 복구지연) (2)run.bat이 `node daemon.js` 종료 후 `timeout /t 30`이라 30초 daemon 완전부재. 결과 '한동안 daemon 다운'. ★이 30초 공백은 버튼 graceful 재시작에도 동일 적용됐을 문제였음. [조치] ①bootstrap-restart.ps1/.log 삭제(강제kill 스크립트 재사용 차단) ②run.bat 수정: if %ERRORLEVEL%==0 timeout/t 3 (graceful) else timeout/t 15 (크래시 백오프) — 공백 30→3초. 손석구 검증: restart-graceful/.shutdown/restart 세 경로 모두 daemon.js:1877 process.exit(0), 크래시는 exit(1)→분기 정상. 버튼 graceful은 메인루프(1873~)가 activeRuns 0까지 드레인 후 exit라 태스크 무중단(강제kill 단계 없음). run.bat 수정은 다음 loop부터 cmd가 디스크 재read해 반영(추가재시작 불필요), 다음 재시작 콘솔에 'restarting in 3s' 찍히면 결정검증. 미정리: daemon.js:1574~1577 주석이 옛 30s 동작 설명(다음 daemon 수정시 정리). [규칙] ★에이전트는 daemon을 강제 kill하지 말 것 — graceful(버튼/.shutdown)만. 신코드는 graceful 지원하므로 강제 불필요.
참고데몬 재시작 버튼 라이브: settings/bridge 버튼→restart-graceful→.shutdown→run.bat 신코드 재기동. 부트스트랩은 분리프로세스로 1회 완료(에이전트 자기 daemon 직접kill 금지). 이후 버튼만49일 전
daemon 재시작 버튼 완성·라이브(2026-06-26). settings/bridge의 '데몬 재시작' 버튼(#rst-btn)→POST /settings/bridge/restart-graceful→KV daemon:jason-pc:command=restart-graceful(TTL120s)→daemon /bridge/poll 수신→.shutdown 드롭→진행태스크 drain 후 exit→run.bat 슈퍼바이저가 신코드로 단일 재기동. 상태확인 GET /settings/bridge/status(online=last_seen 120s내). 손석구가 daemon restart-graceful 핸들러의 ps1 호출(LAX 비호환) 제거 커밋 fc7dbed(.shutdown만 드롭). 부트스트랩: 옛코드 daemon은 .shutdown 미지원이라 graceful 안 먹힘→변우석 세션과 분리된 프로세스(daemon/bootstrap-restart.ps1, Start-Process hidden)로 node 전부 kill→run.bat 재기동으로 신코드 1회 로드 완료(에이전트가 자기 daemon 직접 죽이면 세션 끊겨 마무리 불가하므로 분리 프로세스 필수). 결과: daemon 단일(PID672)·신코드·lock정상·.seeded생성. 이후 재시작은 버튼만.
절차daemon 재시작 정본: 재시작실패 원인=중복인스턴스(run.bat 루프 2개)→부모cmd부터 죽이고 .shutdown drain→node daemon.js→.seeded로 검증→vbs 영구모드. 99dca83 clean이라 빌드불필요49일 전
Windows LAX daemon 재시작 정본 절차(손석구 진단). ★재시작 반복실패 원인=중복 인스턴스: daemon.js가 2개 떠있고 각각 run.bat 자동재시작 루프가 부모라 node만 죽이면 30초 뒤 옛 코드로 되살아남. 반드시 부모 run.bat(cmd 루프)부터 죽일 것. 실행구조: start-hidden.vbs→run.bat 무한루프→node daemon.js. 절차(Git Bash): ①상태확인 Get-CimInstance Win32_Process node.exe daemon.js (정상 1줄) ②중지: 부모 ParentProcessId Stop-Process먼저→touch daemon/.shutdown(진행태스크 끝내고 idle시 자동종료, daemon.js 1870~)→목록 0줄 대기→90초넘으면 강제kill(미완태스크는 lease만료 후 서버 자동재실행, 유실아님)→0줄확인후 rm .shutdown .daemon.lock ③코드확인 git rev-parse --short HEAD(=99dca83)+clean이면 pull/빌드 불필요→cd daemon && node daemon.js 포그라운드(‘already holds the lock—exiting’ 안뜨면 성공) ④검증: 태스크1건→find agent-skills -name .seeded 생성=시딩훅+distill주입 반영증거(copied=0이어도 마커생성=성공) ⑤Ctrl-C후 wscript start-hidden.vbs 영구모드(포그라운드와 vbs 동시금지=lock충돌). 롤백: git revert --no-edit 99dca83 후 재시작(reset --hard 금지). env오류시 daemon/디렉터리에서 시작(.env.wikicomu 로드). 런북 정본=daemon/RUNBOOK-emergency-recovery.md(손석구 등재예정).
진행 중거버넌스 롤아웃: 16/16 공통스킬 시드완료+손석구 시딩훅·런타임주입 커밋(99dca83), 라이브검증은 daemon 재시작 대기, #3 cron 미착수(별도)49일 전
학습 거버넌스 전사 롤아웃 진행상태(2026-06): (1)공통 거버넌스 스킬 2종(distill-on-done·domain-skill-catalog) 정본 = daemon/agent-skills/_master/_common/.claude/skills/. (2)16개 에이전트(alex·ara·bogum·bonwoo·daon·dodam·gyohwan·hangyeol·jarvis·kkomkkom·mira·onyu·ria·ruda·seoyeon·wooseok) 공통 2종 수동 소급 시드 완료 16/16 검증. (3)손석구 daemon 배선: seedAgentSkills 멱등 시딩훅(ensureSkillsDir 직후, _master/_common 전원+_master/<slug> 도메인마스터, 이름충돌skip, .seeded 마커. '마커없으면 스킬별 충돌skip'으로 구현→수동시드분은 마커만 backfill) + skillGuide에 distill-on-done 종료라인 주입. 커밋 99dca83, 롤백앵커 b2dbfd4, 단위검증 9/9. 라이브검증은 daemon 재시작 윈도우 대기. (4)#3 Cloudflare Cron 스케줄드 사서 큐레이션은 wrangler cron/scheduled 핸들러 부재로 미착수—별도 0.5~1일+Jason 배포사전공유, 실삭제 승인표면=/activity 액션 버튼 권고. 매핑 진실소스=_master 우선·브레인 카탈로그 폴백. 온보딩(구교환) new-agent-creation 6단계 거버넌스 시딩 편입 완료.
교훈제목·볼드 죽던 원인=authoring↔renderer 계약 누락(대항목 ###·가나다 **볼드**). markSubheadings+CSS+템플릿+스킬에 계약 박고 marked로 결정검증·배포50일 전
작업대 문서 제목·볼드가 죽던 근본원인: 미리보기 CSS(.dw-paper)와 HWPX 생성기(hwpx.ts) 둘 다 제목·볼드를 마크다운 헤딩레벨/볼드로만 인식하는데, 변우석이 신청원인 대항목을 '1.'(ol), 가.나.다를 일반문단으로 써서 볼드·제목이 죽음. 콘텐츠가 아니라 authoring↔renderer 계약 누락이 문제. [확정 계약] 표제='# '(h1 20pt 볼드 가운데)/단제목='## '(h2 14pt 볼드 가운데)/신청원인·청구원인 대항목 1.2.3.='### '(h3 볼드 좌측 2줄띄움)/가.나.다='**가. …**'(볼드 한줄+다음줄 본문)/본문·신청취지항목·입증첨부=일반. [조치] draft_doc.ts에 markSubheadings(가.나.다 볼드문단→.dw-subhead 좌측볼드) 추가·renderDraftDocument에 와이어, routes.tsx CSS(.dw-paper/.pg-body .dw-subhead) 추가, evidence.ts 지급명령·소장 템플릿에 '마크다운 작성계약' 명문화, jigeup 스킬에 계약 섹션 추가. marked 실행으로 h1/h2/h3/dw-subhead 생성 결정검증·배포완료. [교훈] 콘텐츠 맞아도 렌더 구조 안맞으면 죽는다 — 작성 전 헤딩레벨 계약 준수.
참고지급명령 샘플 재실측: 크기(신청취지14/그외13/표제20/법원16)·어미('구함'·'지연손해금')·의 문법·가.나.소제목·flat입증·첨부2종 확정, 스킬+템플릿 정정배포50일 전
지급명령 샘플(C:/Users/user/LAX-site/samples/지급명령신청서/지급명령 샘플.hwpx) OWPML 재실측 결과: 본문 맑은고딕(fontRef hangul=3), 줄간격220% 전체. charPr 크기: cp11=20pt(표제)·cp14=14pt(신청취지 제목)·cp16=13pt(신청원인/입증방법/첨부 제목+신청원인 대항목1.2.3.)·cp12=12pt B(가.나.다·당사자라벨)·cp10/13=12pt 보통(본문/값)·cp18=16pt(법원명). paraPr: pp9=CENTER(표제·단제목), 나머지 JUSTIFY. 샘플 어미 확정: 신청취지 도입문 '…지급하라는 명령을 구함.'(구합니다 아님), 2항 끝 '…각 비율에 의한 지연손해금.'(금원 아님), 신청취지2항 '연 X%의,'(의 붙임)/결론 '연 X%,'(의 없음, 마지막 연12%의만), '그 다음날'(붙여씀). 신청원인 가.나.는 소제목 줄+본문 분리, 2.가는 (1)(2)+부대채무①대위변제금②추가보증료③법적절차비용. 결론 '그렇다면, …지급할 의무가 있다할 것이므로, 그 이행을 구하고자 본 신청을 하는 바입니다.' 입증방법 flat 소갑1~N(가지번호는 첨삭변형). 첨부 법인등기사항증명서+소송위임장(부본·송달료납부서·채무자초본 아님). 스킬·코드템플릿(evidence.ts buildJigeupPrompt) 이에 맞춰 정정·배포. [교훈] 스킬은 맞았는데 안 따른 게 문제 — 작성 전 스킬 본문 로드해 어미·문법까지 1:1 대조.
교훈지급명령 작업대 템플릿에 재단양식 스킬 게이트 누락이 일반형 작성사고 원인 → 템플릿 교체+스킬 강제로드 게이트 삽입·배포로 구조적 차단50일 전
[근본원인] src/shared/evidence.ts buildJigeupPrompt(지급명령 작업대 새작성 템플릿)이 일반 표준문만 담고 jigeup-myeongryeong-format-spec 스킬 적용 지시가 없어, 변우석이 재단 실측 양식(번호위계 1.→가., 채권자 고정값 이사장 ○○○, 신청취지 도입문+비용내역, 4.관할 항목, 가지번호 입증방법, 첨부 2종, 변호사 ○○○)을 미반영한 일반형으로 작성하는 사고. 소장 템플릿(buildEvidenceAnalysisPrompt)엔 재단값이 있었으나 지급명령엔 비대칭 누락. [조치] 지급명령 템플릿을 재단 양식으로 전면 교체+'스킬 먼저 로드' 게이트 삽입, 소장 템플릿에도 seoul-singbo 양식 스킬 게이트 한 줄 추가. check:client 통과·배포완료. [교훈] 사용자/템플릿이 준 즉석 표준문이 학습 양식과 충돌하면, 본문 작성 전 반드시 해당 도메인 스킬을 로드해 대조하고 재단 실측 양식을 우선한다.
교훈작업대 미리보기 페이지네이터가 긴 <ol>(신청원인)을 못쪼개 결론 끝줄 클립 → li단위 분할+ol start 번호연속으로 수정·배포50일 전
작업대 미리보기/제출용 인쇄(/print) 페이지네이터(draft/routes.tsx renderDoc 및 print 라우트)가 최상위 노드 단위로만 페이지 분할 → 신청원인 1~6항이 마크다운에서 단일 <ol>로 변환되어 한 페이지(257mm) 초과 시 .dw-pg{height:297mm;overflow:hidden}에 잘려 결론 끝줄 증발. 다음페이지는 입증방법부터 시작해 '끊긴 것처럼' 보임. 수정: listItems()로 OL/UL을 li 배열로 보고, 새 페이지 단독에도 넘치면 placeList()로 li 단위 분할+<ol start=N>로 번호연속 유지. 작업대·인쇄 양쪽 동일 적용. check:client 통과, 배포완료.
진행 중드렁캔 구상금 지급명령 완료: 원금4,190,981 연7% 단독채무, 손해금 역산일치로 교차검증50일 전
○○○(개인사업자, 대표 겸 주채무자 김운현 ●●●●●●-●●●●●●●) 구상금 지급명령신청서 완료. 보증 SD1202108770(2021-10-01, 2천만, ○○은행 논현중앙지, 개별보증 100%). 대위변제 2026-04-20 발생 4,228,451(원금4,160,000+이자68,451@연4.29%×140일)−회수 37,470=구상원금 4,190,981. 전체회수 69,040=미수보증료13건 31,570+대위변제금 37,470으로 분해정합. 손해금율 연7%(규정 소갑5 제4조 직접명시+원장손해금47,421=4,190,981×7%×59일/365 역산일치). 약정금리4.29%<7%라 연9%가산 대상아님. 단독채무(연대보증인 없음). 관할 서울중앙지법(강남구+약정 제19조). 소갑1약정서/2보증서/3대위변제증서/4원장/5규정. 미확정: 재단 본점주소·이사장명, 채무자 최신초본.
교훈데몬이 서버측 429 throttle을 '전 계정 사용량 한도'로 오분류해 20분 hold하던 버그 → 손석구가 throttle 분리 패치(커밋 13ce02d) 라이브 반영. LAX데몬 PID는 .daemon.lock으로 식별50일 전
증상: 다른 대화창에서 'Server is temporarily limiting requests (not your usage limit) · Rate limited' 서버측 429를 데몬이 '모든 계정 사용량 한도 도달 → PM HH:MM 리셋까지 대기'로 오분류해 20분 강제 hold. 원인: daemon.js detectUsageLimit() 매처가 너무 넓어 '(not your usage limit)'의 'usage limit'과 'rate limited'의 'rate limit'을 주워 usage-wall로 오판. 'PM 04:56'은 진짜 리셋시각이 아니라 에러시각+20분 fallback. 수정: 손석구가 throttle/overload(not your usage limit·temporarily limiting requests·overloaded)를 usage-wall에서 제외하고 짧은 backoff 후 동일계정 재시도로 분기. 커밋 13ce02d(17:12), LAX 데몬 PID 37472가 17:18 재기동으로 라이브 반영됨. LAX 데몬 식별=LAX-site/daemon/.daemon.lock의 PID(Wikicomu는 16756). run.bat supervisor가 죽이면 30초 후 자동 재기동.
참고지급명령 서기료=10만원(부가세 제외,7.1.이후 보수인상), 독촉비용 169,700. +작업대 문서탐지가 도구출력<details> 마커를 문서로 오인하던 반복오염을 details 제거로 근본수정50일 전
①서기료(독촉절차비용 작성보수): 7만7천원의 7천원은 부가세→제외, 2026.7.1.이후 접수분부터 보수 10만원 인상. 지급명령신청서 서기료=100,000원, 독촉절차비용=인지대+송달료+100,000(예 3,700+66,000+100,000=169,700). 스킬 jigeup-myeongryeong-format-spec line35 반영. ②근본수정: 작업대 latestDocContent(routes.tsx)가 채팅응답의 도구출력 <details>블록에 echo된 SOJANG·EVIDENCE-TABLE 마커를 문서로 오인 → 최신본포인터 오염 반복. 수정: 탐지 전 content.replace(/<details[\s\S]*?<\/details>/g,'')로 도구블록 제거 후 hasDocument+extractEvidenceTable 판정. 오염된 채팅응답(670,715,726 등)은 더이상 문서로 안잡힘. 깨끗한 doc 재promote(INSERT...SELECT)로 최신본 확정.
참고한글 COM(설치됨)으로 HWPX→PDF 변환해 실제 렌더 검증하는 루프 구축. ★HWPX borderFillIDRef는 id 아닌 1-based 순번 — 표 회색·테두리 문제의 근본원인. 검증으로 6p 전체 정상 확인50일 전
HWPX 한글 렌더 검증 루프(돌파구): 이 PC에 한컴 한글 2024 설치됨(C:/Program Files (x86)/Hnc/Office 2024/HOffice130/Bin/Hwp.exe). PowerShell COM으로 HWPX→PDF 변환 후 Read로 실제 한글 렌더 확인 가능. 핵심 스크립트: New-Object -ComObject HWPFrame.HwpObject; RegisterModule('FilePathCheckDLL','FilePathCheckerModule'); Open(path,'',''); SaveAs(pdf,'PDF',''); Quit; ReleaseComObject. 주의: 변환 전 Get-Process Hwp|Stop-Process로 인스턴스 정리(반복 강제종료시 COM_E_SERVER_EXEC_FAILURE→몇초 대기 후 재시도). hwp-mcp(rhwp WASM)는 대안이나 실제한글과 차이. ★최대 발견: HWPX borderFillIDRef는 id가 아니라 1-based 순번(N번째 borderFill 참조). borderFills 순서[NONE,SOLID,gray,SOLID]면 ref=1→NONE,2→SOLID,3→gray. 표 머리행 회색·데이터 테두리 안나오던 모든 문제가 이 오프셋 때문. 셀 fill #D9D9D9 6자리, margin은 hc:자식요소(prev/next), version 1.5, 표셀 linesegarray 필요. 검증 결과 6페이지 전체 한글 정상렌더 확인.
참고한글2024 COM으로 HWPX→PDF 변환(scripts/hwpx-to-pdf.ps1)해 실측검증 루프 확보. 핵심버그=한글 표셀 borderFillIDRef -1오프셋(머리행ref3→회색,데이터ref2→실선)50일 전
HWPX 실측 검증 루프 확보: 이 PC에 한컴 한글2024(Hwp.exe, COM ProgID 'HWPFrame.HwpObject') 설치됨. scripts/hwpx-to-pdf.ps1로 HWPX→PDF 변환(RegisterModule FilePathCheckDLL/FilePathCheckerModule로 보안팝업 우회, Open(src,'HWPX',''), SaveAs(out,'PDF','')). 변우석이 PDF를 Read로 열어 실제 한글 렌더 확인. 헤드리스 추측 끝. 주의: 변환 전 Get-Process Hwp|Stop-Process로 잔류 프로세스 정리(파일잠금 방지), 연속변환은 백그라운드 충돌나니 텀 두기. ★발견한 핵심 버그: 한글은 표 셀 borderFillIDRef에 -1 오프셋 적용(셀 ref=N→정의 N-1). 그래서 hwpx.ts 표는 borderFills 0=NONE,1=SOLID,2=SOLID+#D9D9D9,3=SOLID, 머리행셀 ref=3(→정의2 회색), 데이터셀 ref=2(→정의1 실선), 표 외곽 ref=1. 순서변경 금지. 또한 margin은 속성 아닌 hc:자식요소(<hc:prev value=.. unit=HWPUNIT/>), 버전 1.5, 표셀 linesegarray 필요.
참고HWPX 셀 배경 fill 정확형식: hc:fillBrush>hc:winBrush faceColor=#D9D9D9(6자리!) hatchColor=#000000 alpha=0, xmlns:hc 선언. 8자리ARGB는 깨짐. 검증불가 HWPX는 사용자 적용본 받아 복사.50일 전
HWPX 표 셀 배경색(회색 머리행 등) 정확한 형식(사용자 한글 적용본에서 검증): header.xml 루트에 xmlns:hc="http://www.hancom.co.kr/hwpml/2011/core" 선언 + borderFill 안에 diagonal 뒤로 <hc:fillBrush><hc:winBrush faceColor="#D9D9D9" hatchColor="#000000" alpha="0"/></hc:fillBrush>. 색은 6자리(#RRGGBB), 8자리 ARGB 아님(8자리는 fill 깨짐). alpha="0". 셀 tc의 borderFillIDRef를 채운 borderFill id로. #EEEEEE는 너무옅어 안보임→#D9D9D9가 보이는 회색. 미리보기 th도 #d9d9d9로 맞춤. 검증불가한 HWPX 디테일은 사용자에게 한글로 적용한 .hwpx 받아 형식 1:1 복사가 가장 확실.
참고지급명령 번호위계(1·가·(1)·1)·①)+간격(신청원인 빈줄1, 큰항목 위2줄=문단여백, 입증/첨부·사건명 촘촘)+표 머리행 좌측 — 미리보기·HWPX 반영50일 전
지급명령신청서 번호체계·간격 규칙(샘플 실측+사용자확정): ①번호위계 1.→가.→(1)→1), 내용열거는 ①②③. 신청취지·입증·첨부 항목은 순차(1·2·3). ②간격: 신청원인은 1./가./(1)/본문 모든 요소 사이 빈줄1개. 제일큰 1.2.3.(신청원인 대항목)은 위에 2줄 띄움(단제목 직후 첫항목 예외). 입증방법·첨부 항목은 촘촘(빈줄없음). 사건명↔청구금액 촘촘. ③구현: HWPX는 큰항목 2줄을 빈줄 아닌 문단상단여백 paraPr prev=5000(stripForSubmission이 \n{3,}→\n\n로 빈줄깎음). 빈줄→빈문단은 연속 최대2개 cap. 큰항목 첫항목 예외는 parseBlocks가 앞 빈문단 pop후 직전블록이 heading이면 subheading(여백0) 아니면 subheadGap(para4). 미리보기 .dw-paper h3{margin-top:2.6em}+h2+h3예외. ④표: 머리행도 좌측정렬(미리보기 일치), 머리행 볼드. 회색배경은 HWPX fillBrush 위험으로 보류. 샘플엔 표 없음(내 추가).
참고법률 샘플 영구 보관소 C:/Users/user/LAX-site/samples/(지급명령신청서·소장·기타) 신설 — 임시폴더 대신 여기서 읽어 OWPML 실측 대조50일 전
재단 법률문서 샘플 영구 보관소: C:/Users/user/LAX-site/samples/ (하위: 지급명령신청서/, 소장/, 기타/). 임시 첨부폴더(Temp/wikicomu-att)는 턴마다 삭제되므로 두고두고 쓸 샘플은 여기서 읽는다. .hwpx/.hwp는 unzip 후 Contents/header.xml(charPr 폰트·height·bold·underline·spacing, paraPr align·lineSpacing)·section0.xml(문단별 paraPrIDRef/charPrIDRef/텍스트) 파싱으로 실측. gitignore됨(samples/). 사용자가 '샘플 넣어뒀어 대조해' 하면 이 폴더부터 확인.
참고표제 밑줄+당사자 정렬(미리보기 flex·HWPX 무테두리2열표) 수정배포 — 샘플 대조로 발견, 렌더단계라 기존문서 즉시적용51일 전
샘플 대조로 발견한 서식 차이 수정 배포(09f6ff31): ①표제 밑줄+넓은자간 — 미리보기 CSS .dw-paper h1{text-decoration:underline;letter-spacing:.4em}, HWPX charPr id1에 <hh:underline type=BOTTOM shape=SOLID>. ②당사자 정렬 — draft_doc.ts alignPartyBlocks()가 <p><strong>채권자</strong>값<br>값…</p>을 .dw-party(flex: 라벨 6.5em고정 + 값본문)로 변환, <br>뒤 전각공백 제거로 이중들여쓰기 방지. CSS .dw-party/.dw-party-label/.dw-party-body. HWPX는 parseBlocks가 party블록 감지(PARTY_LABEL_RE 채권자/채무자/원고/피고/신청인/피신청인) → partyTableXml 무테두리(borderFill0) 2열표(라벨열 9000HWPUNIT charPr4볼드 + 값열 다문단). 편집 직렬화 blockMd에 dw-party분기 추가(라벨**+전각공백들여쓰기 복원). 렌더단계 수정이라 기존문서도 새로고침시 즉시적용. 한글 실제오픈은 미검증.
참고작업대 두 창(chat/sessions·complaint-draft/work)은 같은세션·같은엔드포인트로 완전동기화(차이는 미리보기패널뿐). 빌드가드 check:client로 템플릿리터럴 백슬래시 사고 재발차단51일 전
작업대 동기화 구조: /chat/sessions/{id}(일반채팅, 미리보기 없음)와 /complaint-draft/work/{id}(채팅+미리보기)는 같은 session_id·같은 chat_messages·같은 변우석. work의 전송도 /chat/sessions/{id}/messages 동일 엔드포인트→enqueueTask. work는 /complaint-draft/work/{id}/poll 1.5s 폴링으로 대화+문서+증거표+추가자료 갱신. 차이는 미리보기 패널 유무뿐. '문서 준비됨'은 하단 상태줄(doc_id존재+not busy). 빈 미리보기인데 상태는 준비됨=죽은 스크립트 캐시 신호. 재발방지: scripts/check-client-script.mjs를 build 첫 단계(check:client)에 추가 — 인라인 클라 스크립트 템플릿리터럴 내 위험한 홑 백슬래시(\n·\s·\[ 등) 발견시 빌드 실패. latestDocContent는 SOJANG가진 최신 assistant메시지 반환.
교훈작업대 클라 스크립트=통째 템플릿리터럴 → 백슬래시 이스케이프 금지(\n→실제개행으로 문자열깨져 스크립트 전체사망). 줄바꿈은 NL변수·백슬래시없는 정규식만51일 전
작업대 routes.tsx GET /work의 클라이언트 스크립트는 통째로 dangerouslySetInnerHTML __html 백틱 템플릿 리터럴이다. 그 안의 JS에 백슬래시 이스케이프(\n,\t,\s,\d,\[,\| 등)를 쓰면 템플릿 리터럴이 한 겹 먹어서 \n→실제 줄바꿈(작은따옴표 문자열 미종결→SyntaxError로 스크립트 전체 사망), \s·\[→백슬래시 탈락(정규식 깨짐)이 된다. 규칙: 줄바꿈은 var NL=String.fromCharCode(10) 변수, 패턴은 백슬래시 없는 정규식만(/^h[1-6]$/, [0-9], 공백리터럴) 또는 split/join. 기존 정상 클라 정규식(esc, askEsc, @@ASK@@)도 전부 백슬래시 회피 관례를 따른다. 증상이 '미리보기 빈화면+편집·입력 전부 먹통'이면 이 스크립트 SyntaxError를 의심하고 dist/_worker.js에서 함수영역 추출해 점검.
참고미리보기 편집을 흰종이 직접편집(WYSIWYG, plaintext-only)으로 교체+저장시 HTML→마크다운 직렬화 배포51일 전
작업대 미리보기 편집을 textarea(마크다운 원본)→흰종이 위 직접편집(contenteditable=plaintext-only)으로 교체 배포(branch=main). #dw-edit-wrap/#dw-edit-paper에 #dw-doc-src의 렌더HTML을 싣고 편집. 저장시 클라이언트 직렬화 paperToMd(inlineMd: strong→**, sup.dw-cite→[갑N] via data-evno, dw-imgph→[IMG:], br→하드브레이크; blockMd: h1-6→#, p, ul/ol, table→마크다운표) → POST /work/:sid/doc-source(본문만 교체, 증거표·NOTES보존, SOJANG래핑 assistant메시지). plaintext-only로 기존 볼드·표 유지하며 텍스트만 수정→직렬화 안전. 편집중 poll정지. 크로미엄 한정 주의.
참고작업대 HWPX생성기 전면재작성(볼드·진짜표·맑은고딕·160%)+미리보기 편집저장(최신문서로 변우석인지)+새로고침 미리보기만 배포51일 전
작업대 4종 개선 배포(branch=main): ①HWPX 생성기(src/shared/hwpx.ts) 전면 재작성 — parseBlocks(문단/표/리스트)+parseInline(**볼드** 세그먼트), 진짜 한글 표 hp:tbl(borderFill id1 SOLID, 머리행 charPr6볼드 가운데/데이터 charPr5 왼쪽, 셀폭 균등 TEXT_WIDTH=42520), charPr 0본문12/1표제20볼드/2단제목14볼드/3이미지빨강/4본문볼드12/5표셀10/6표머리10볼드, 맑은고딕, 줄간격160%, 표뒤 트레일링빈문단 안전장치. PDF·HWPX 둘다 stripForSubmission 같은 소스 소비→구조일치. ②미리보기 편집: GET/POST /work/:sid/doc-source(본문만 교체, 증거표·NOTES블록 보존, SOJANG래핑해 assistant메시지로 createChatMessage→latestDocContent가 집어 변우석 인지). 편집중 poll 정지(editing플래그). ③새로고침=poll()만(전체리로드 제거). ④hwpx파일명 doc_type연동. 검증한계: 한글 실제오픈은 헤드리스불가→샘플받아 보정 필요.
참고작업대 NOTES마커(확인필요→추가자료탭 분리)+인용클릭 증거표점프+독촉비용 산정 배포완료51일 전
작업대 개선 3종 배포(branch=main): ①NOTES 마커(<!-- NOTES:v1 -->…<!-- /NOTES -->) 도입 — evidence.ts에 NOTES_OPEN/CLOSE·NOTES_BLOCK_RE·extractNotes, removeEvidenceBlock·stripForSubmission이 NOTES도 제거, 프롬프트계약은 확인필요/추가증거를 NOTES마커로 감싸 SOJANG안에 두라고 수정. draft_doc.ts renderNotes()추가. routes.tsx notesHtml→추가자료탭 상단 '📌 변우석 작성메모' 박스+탭에 📌배지. ②인용클릭점프: sup.dw-cite에 data-evno, renderEvidenceTable이 각 tr에 data-evno태그, 클라JS가 cite클릭→ev탭활성+행 .dw-ev-hl 하이라이트. ③독촉절차비용 산정: 인지대=소장인지(소가×0.005,100원절사)×1/10, 송달료=당사자2×6회×5500, 서기료 재단표준값.
참고재단 실제 지급명령 샘플 분해→스킬 전면개정: 6단·소갑·서울서부지법(본점합의관할)·신청취지3구성51일 전
재단 실제 지급명령신청서 샘플 1건(238/0-_.hwpx, ○○은행 보증·서울서부지법) 완전분해→스킬 jigeup-myeongryeong-format-spec 전면개정. 핵심: 채권자 풀표시([주소 비공개]·이사장·소관센터·소송대리인 법무법인·담당변호사), 사건표제 '구상금청구 독촉사건'+청구금액별도, 신청취지=1.총액 2.위1항중 미회수원금에 대해 재단소정율 시기변동(샘플10%→9%→송달후12%) 3.독촉절차비용(인지대·송달료·서기료), 신청원인 표준6단, 입증방법 '소갑'제N호증, 첨부 법인등기+소송위임장, 관할=재단본점 마포 합의관할→서울서부지방법원(채무자주소 무관). HWPX파싱: unzip→Contents/section0.xml의 <hp:t>추출.
참고작업대 탭/제목이 doc_type+사건명 연동되도록 routes.tsx 수정·배포완료(전엔 '소장'고정)51일 전
소장 작업대 routes.tsx GET /work/:sessionId — matter_documents.doc_type(소장/지급명령신청서/답변서/준비서면) 조회해 docLabel 변수로 작업대 제목·미리보기 doc탭 라벨·HWPX버튼·안내문구 전부 연동. workTitle=session.title ?? `${docLabel} 작업대`. WorkspaceShell title, h1, doc탭 버튼(전엔 '소장' 하드코딩) 모두 수정·배포완료(branch=main).
진행 중그랜드비스타 지급명령신청서 완료: 구상원금 7,511,249, 연7%(역산), 채무자 법인단독·주소확정필요51일 전
○○○○○○(고객1002400) 지급명령신청서 작성완료. 채무자 (주) ○○ 단독(법인기업주 연대보증면제 보증→연대보증인 없음). 보증2건 SD2-2020-03695(7천만,2020-05-28)·SD2-2021-03907(2천만,2021-07-16) 모두 2025-08-28 대위변제. 대위변제발생 7,717,769-회수206,520(미환급보증료상계)=구상원금 7,511,249. 약정지연손해금율 연7%=원장손해금(71,738·351,772) 역산 정확일치, 약정서엔 '재단이정하는율'로만 기재→확인필요. 주소 3개 상충(송파 백제고분로/양재대로/성남 위례중앙로 수기메모)→법인등기부로 관할확정 필요. 증거 갑1~6(갑5는 대위변제증서 2매 갑5의1·2).
참고사건-증거 자동연결(matter_files) 완료: R2키=matter/{id}/{정규화명}, 14건72파일 prod반영, B코드 axwiki e082e80551일 전
사건-증거파일 자동연결 완료(테스트+프로덕션). matter_files 테이블(0062): matter_id,r2_key,name,mime,doc_role,created_by. R2키규칙=matter/{matter_id}/{파일명 공백·쉼표→_}, name=원본명, R2키==DB r2_key 보장. prod matter id=1~14(테스트는 26~39). 14건 72파일 lax-uploads-prod 업로드+INSERT. B코드: draft/routes.tsx 드롭다운 onchange로 data-files를 att-json prefill + POST필터 matter/허용, bridge/routes.ts:93 403필터 matter/허용. axwiki 배포 e082e805, 롤백 42d1e29d. 도구: inbox/_build_matter_files.cjs,_upload_r2.cjs,seed_matter_files_prod.sql. 테스트URL 375d68e7.lax-dtb.pages.dev(인증우회).
진행 중그랜드비스타(복수보증8-B) 1차판독 완료, 미확정3개(대위변제분해·손해금율·주소). 도구 _render/_crop/_case_text.cjs, cases/ 폴더51일 전
(주) ○○ 구상금 1차판독: 법인등록 ●●●●●●-●●●●●●●, 사업자 ●●●-●●-●●●●●. 복수보증2건 SD2-2020-03695(2020-05-28,7천만)·SD2-2021-03907(2021-07-16,2천만) 둘다 ○○은행 신길동금융센터. 사고등록2025-06-19발생2025-05-17 사고금액7,621,094. 대위변제2025-08-28 발생7,717,769 회수206,520 잔액7,511,249. 시효기산2025-08-28완성2030-08-27. 증거6개 전부 스캔본. 미확정: 보증번호별 대위변제분해(구상권발생내역 p1하단/p2), 약정지연손해금율, 피고송달주소(주소지확인.pdf). 렌더도구 inbox/_render.cjs(getScreenshot desiredWidth), 크롭 inbox/_crop.cjs(napi canvas y0/y1/x0/x1 비율), 판독 inbox/_case_text.cjs. 케이스폴더 inbox/cases/.
참고구상금 소장 2샘플 서식 완전해체→skill seoul-singbo-sojang-format-spec, 도구 inbox/_hwp_deep.cjs·_pdf_deep.mjs51일 전
○○보증재단 구상금 소장 샘플1.hwp(2건)·샘플2.pdf 바이너리 정밀 해체 완료. 본문=맑은고딕12pt양쪽, 표=한컴윤고딕230 10pt, 제목20/단제목14 BOLD가운데. 자간-5는 한컴 자동줄맞춤(강조 아님). 보증1건=서술/2건↑=표형. 전체명세는 skill seoul-singbo-sojang-format-spec. 재분석도구 inbox/_hwp_deep.cjs(CFB+inflate+CharShape/ParaShape매핑)·_pdf_deep.mjs(pdfjs transform크기).
참고민사재판실무1권 포괄증류 완료→스킬 3종(청구유형별요건사실/주문문구집/보증). 미수집: 이유단원·당사자표시57일 전
「2024 민사재판실무 1권」(466쪽 스캔) 포괄 증류 완료. 9개 서브에이전트 병렬 판독으로 제2편 요건사실론+제3편 분쟁유형별 요건사실(대여금·매매·등기·임대차·사해행위·보증)+제1편 주문례를 영구 스킬 3종으로 저장: minsa-silmu-cheonggu-yogeon(청구유형별 요건사실·항변), minsa-silmu-jumun(청구취지=주문 문구집), minsa-silmu-bojung(보증·구상). 각주 조문/판례번호는 스캔화질상 [확인필요] 표기. 미수집: 제1편 이유단원(청구원인/항변 단계별판단 책178~266), 당사자표시(책20~50). 원본·렌더 LAX-site/inbox 보관.
절차대용량 스캔PDF 학습법: pdf-parse getText로 지도→getScreenshot 고해상 렌더→vision 판독→40쪽 핵심만 스킬 증류57일 전
대용량 스캔 PDF 학습 파이프라인(검증됨): 1) inbox에 파일 받기 2) pdf-parse(v2,pdfjs) getText로 내장 OCR 추출→페이지수·주제어 빈도·페이지 지도 작성(깨진 OCR이라도 위치 파악엔 충분) 3) 관련 구간만 PDFParse.getScreenshot({first,last,scale:2.0})로 고해상도 PNG 렌더 4) PNG를 Read(vision)로 직접 정밀 판독(한글은 vision>tesseract) 5) 40쪽 내외 핵심만 영구 스킬로 증류. 각주 조문/판례번호는 스캔화질상 미확정→[확인필요]. tesseract/poppler 없이 node만으로 가능. 스크립트: LAX-site/inbox/_render.mjs
절차요건사실론 필수 5축(식별·분배·층위·수준·금기)+청구별 표준요건사실. 소장 청구원인 작성 시 늘 참조. 상세는 skill yogeon-fact-doctrine58일 전
요건사실론 소장작성 필수준수 MECE 5축(스킬 yogeon-fact-doctrine에 상세): ①식별-실체법 근거규정 특정→구성요건을 사실로 분해(청구원인사실) ②분배-법률요건분류설 4종(근거=원고/장애·멸각·저지=피고항변), 상대 증명책임 떠안기 금지 ③층위-청구원인→항변→재항변, 과잉주장·부인항변혼동 금지 ④수준-주요사실만·특정·흠결금지(요건1개누락=청구기각)·증거연결 없으면[확인필요]·불요건사실배제(위약금은 손해발생 불요) ⑤금기-법적결론 사실화 금지·무관서술/창작 금지·다수당사자 연대 구분. 청구별 표준요건사실: 대여금①교부②반환약정/구상금①주채무②보증계약③대위변제/위약금①계약②약정③위약사유/양수금①채권발생②양도③대항요건.
진행 중작업대 '추가자료' 탭=체크리스트(있음/없음/찾는중)+KV저장+변우석전달. 항목은 현재 고정, 동적화는 후속58일 전
소장 작업대 미리보기에 '추가자료' 탭 추가(stage). 체크리스트 8항목(○○○○ 위약금 기준 고정), 상태 있음/없음/찾는중 토글+KV(checklist:<sid>) 자동저장, '있음'시 항목별 파일첨부(R2), '📤 변우석에게 전달'시 상태요약+첨부 전부를 [추가 증거 첨부] 메시지로 전송→변우석이 증거표·소장 반영. 엔드포인트 GET/POST /complaint-draft/work/:sid/checklist. 후속과제: 소장 [추가 증거 필요]에서 체크리스트 동적 생성(현재 고정).
참고베니모어 위약금 소장 레퍼런스: 67M=재고2350만×2+2천만, 청구원인 6단, 갑1~8(갑1·4·5만 보유), [IMG:]마커로 이미지자리 표기58일 전
○○○○ 위약금 소장 변호사 ○○○ 확보(R2 업로드 hwpx 분석). 청구취지 67,000,000원=재고 2,350만×2+2,000만, 연12%. 청구원인 6단(당사자관계/체결경위/계약내용/채무불이행/위약금산정/결어). 증거 갑1~갑8(갑1계약서·갑4·갑5 카톡만 보유, 갑2구인광고·갑3문자·갑6 3.4카톡·갑7○○은행이체·갑8거래처카톡 미보유). 이미지자리=[IMG:캡션] 마커→빨강 배지(markImagePlaceholders/HWPX charPr id3). 작성로직은 gusang-sojang-draft 스킬에 저장.
참고소장 작업대: 문서는 SOJANG 마커로 감싸 미리보기로, 대화는 마커없이 채팅으로 — 분리 계약.58일 전
소장 작업대 문서/채팅 분리 계약: 소장·증거표 결과물은 <!-- SOJANG:start -->…<!-- SOJANG:end -->로 감싸 출력(안쪽=미리보기·제출문서, 그 안에 EVIDENCE-TABLE 블록+소장+[갑N]). 단순 질문/대화는 마커 없이 답(채팅창에만). 수정 시 전체 문서를 다시 SOJANG로 감싸 통째 출력(부분 금지). evidence.ts: SOJANG_OPEN/CLOSE, hasDocument/extractDocument/stripDocument. draft_doc.ts renderDraftDocument(증거표 전체 렌더+[갑N] 위첨자), renderChatText(대화부분). routes /work/:id/poll가 doc+messages 반환. 익스포트/미리보기는 latestDocContent(최신 문서 메시지) 기준. 채팅폭 460px. 증거자료 required 해제.
절차변경 후 항상 배포+검증보고가 전사 완료기준 — 나는 always-deploy 스킬로 실행.58일 전
전사 방침(Jason 확정): 변경 끝나면 항상 배포까지 완료+검증 보고. 나는 always-deploy 스킬 보유(검증 tsc/build→npm run deploy→배포URL curl검증→보고). LAX-site는 git 미초기화라 deploy만. 헌장 §4 원칙 패치는 도경이 Jason 승인 후 DB 반영 예정(전원 자동 주입). 민서가 추적체계에 '배포완료' 상태+완료3필드 운용.
진행 중소장 작업대 v1 4단계 전부 완성·검증. 미검증: 데몬 e2e·HWPX 한글 오픈. 후속: 실환경 확인+학습루프.58일 전
LAX 소장 작업대 v1 4단계 완성. stage1 evidence.ts 계약+증거표.md, stage2 draft_doc.ts 각주렌더([갑N]위첨자+증거목록), stage3 /draft/work/:id 2단 작업대+/doc 폴, stage4 hwpx.ts 서식보강(charPr0/1/2,paraPr0/1)+/draft/print/:id 인쇄형PDF. 익스포트는 stripForSubmission으로 각주제거. tsc+esbuild실모듈+vite build 전부 통과, .hwpx ZIP/서식ref 검증. 미검증: 데몬 라이브스트리밍 실테스트, HWPX 한글 실오픈. 남은 후속: HWPX 한글 오픈 확인, 데몬 켜고 e2e, 학습루프(스타일/실수 메모리 적립).
진행 중소장 2단 작업대(stage3) 완료 — 왼쪽 대화/오른쪽 라이브 종이문서. 남은: stage2 각주렌더, stage4 익스포트.58일 전
LAX 소장 2단 작업대(stage3) 구현. GET /draft/work/:id = 왼쪽 대화/오른쪽 라이브 소장(흰 종이 시트 .dw-paper, 세리프·중앙정렬 표제). GET /draft/work/:id/doc = 문서 전용 폴(최신 assistant 메시지+content_html+is_streaming/active_task) 1.5s 폴. 수정전송은 POST /chat/sessions/:id/messages, 중단은 /stop 재사용. POST /draft·최근목록 진입을 /draft/work/:id로 변경. 첫 킥오프 프롬프트는 라벨로 대체. tsc+vite build 통과. 한계: 오른쪽=최신 assistant 메시지라 대화체 답변이 문서 덮어쓸 수 있음(계약상 전문 출력으로 회피중). 남은: stage2 각주 미리보기 렌더([갑N]→위첨자+증거목록), stage4 HWPX 소장서식 보강+인쇄형 PDF.
진행 중소장 개편 stage1(증거표 토대) 완료 — 다음은 stage2 각주 렌더, stage3 2단 작업대, stage4 익스포트.58일 전
LAX 소장 작성 개편 stage 1 완료. src/shared/evidence.ts 신설(2단계 프롬프트·증거표 추출·제출용 마커제거), draft/routes.tsx POST를 증거정리표→소장 계약으로 교체, HWPX 익스포트에 stripForSubmission 적용, GET /draft/evidence/:id 증거표 .md 다운로드 추가. tsc+esbuild 검증 통과. 남은 단계: 2=각주 미리보기 렌더, 3=2단 작업대(왼쪽 대화/오른쪽 라이브 문서) 라우트, 4=HWPX 소장서식 보강+인쇄형 PDF.