Files
HMDesign/docs/guidelines/ai-generation-stabilization-2026-10-10.md
T

7.8 KiB
Raw Blame History

HMDesign AI 화면 생성 오류 수정과 검증 근거

2026-10-10 기준 커밋 8f50e3fb00e315501be043df6ff06928bf87961c에서 AI 생성 지침과 Guard 증거 연결을 보강했다. Component·Pattern 구현, Theme·Typography·Spacing·대표 Story는 변경하지 않았다. 실제 실행기와 수정 화면은 D:/디자인시스템/HMDesign-AI-CrossModel-Test/stabilization-20261010에 별도로 관리한다. 실험 파일은 HMDesign GitHub 저장소에 포함하지 않는다.

요청한 수정과 로컬 검증은 통과했다. T01의 사용자 CSS Intent와 미실행 T03는 NOT VERIFIED를 유지한다. 새 AI 모델·Claude·하위 에이전트 호출은 0회이며 기존 10/12회 사용·잔여 2회와 STOP 기록을 보존했다.

수정과 영향 범위

문제 수정 영향
High T02 공개 exports/types와 실제 파일 목록 우선 탐색을 명시. 실행기 STOP에 원본 명령·exit·DEPENDENCY_EXPLORATION 위치를 기록 의존성 탐색 오류를 생성/Build 실패와 구분. 과거 중단 화면은 재생성하지 않음
High T06 복합 검색 예외는 명령 전체가 literal 읽기 + 최종 rg인 경우로 제한. compiler는 실행 위치에서 탐지 suffix만 보고 앞선 실패를 무시하는 문제 방지. vite.config.ts 읽기를 Build로 오분류하지 않음
Medium T06 수정 복제본의 .page-content에 position:relative 1줄 추가. LNB/AI 지침에 숨김 알림·스크롤 측정 Usage 추가 원본 화면 FAIL을 보존하며 main의 위치 기준만 수정
Medium T02 모바일 ID 수정 복제본 ID cell span에 whitespace-nowrap. DataTable 문서에 size/minSize의 DOM 연결 한계와 가독성 예제 추가 ID 전체 값과 기존 14px 글꼴 보존. 제목 wrapping과 표 내부 스크롤 유지
Medium T01 Guard guard-evidence.mjs에 선택적 cssEvidence 측정·issue/문서 SHA 연결 추가 실제 스타일과 승인 의도 분리. REUSE-003를 자동 PASS로 바꾸지 않음

HMDesign 변경 파일은 AGENTS.md, ai-screen-contract.md, ai-generation-guard.md, LNB/DataTable/DashboardLayout 문서, guard-evidence.mjs와 그 테스트 및 이 보고서다. 기존 ai-generation-guard.mjs의 위반 규칙과 모든 기존 테스트 본문은 보존했다. 신규 UI API·Component·Story를 만들지 않았다.

실제 로컬 검증

검사 결과
실행기 기존 테스트 22/22 EXECUTED PASS; 원본 test/proof 파일 보존
실행기 추가 검사 16/16 EXECUTED PASS; 실제 High T02/T06 사건 재생 포함
설치된 실행기 테스트 후보와 SHA 일치. launcher syntax PASS; 로컬 VM에서 외부 spawn 전 차단 PASS
Guard 기존 회귀 63/63 EXECUTED PASS; 위반 탐지·미검증 보존
Guard 증거 연결 기존 5 + 신규 6 = 11/11 EXECUTED PASS
수정 T02/T06 각각 Typecheck/Build exit 0; 독립 의존성 재설치 없음
HMDesign 원본 npm run typecheck 및 npm run build exit 0
Build 경고 기존 앱 bundle 500kB 초과 및 bundler callback timing 안내. 오류 없음
T06 상태 검사 네 폭에서 초기·조회·무결과·초기화·완료/disabled/focus·내부 마지막 JOB-024 접근 PASS
T02 ID 검사 네 폭에서 전체 ID 한 줄·ellipsis 없음·제목 wrapping·마지막 열 접근·조회/초기화 PASS
T01 CSS 네 폭 × 네 상태 × 변수/color/background/border = 64/64 PASS; 공식 문서 SHA와 issue 연결
Navigation T06 LNB_ONLY, T02 GNB_ONLY, T01 DASHBOARD_ONLY. 모바일 메뉴 Enter/Escape/focus 복귀 4건 PASS

새 CSS 근거는 실제 Guard source/contract 해시에 연결한다. 측정 status는 actual/expected 비교로 계산하며 mismatch는 FAIL이다. 문서 근거가 없거나 stale·범위 밖이면 NOT VERIFIED다. 실제 스타일 PASS는 사용자 의도 승인을 의미하지 않는다.

화면 새 Guard 원본 status 새 정적 새 Runtime 새 결합
수정 T06 복제본 NOT VERIFIED PASS PASS PASS
수정 T02 복제본 NOT VERIFIED PASS PASS PASS
원본 T01 새 증거 NOT VERIFIED NOT VERIFIED PASS NOT VERIFIED

T01 원래 Guard/Runtime/결합 증거는 그대로 보존한다. 증거 연결 도구 변경으로 contract 해시가 달라져 새 Guard와 브라우저 측정을 별도로 생성했다. 기존 Runtime의 해시를 새 값으로 옮기지 않았다. T01의 새 cssEvidence만 PASS이며 원본 REUSE-003와 CSS Intent 검토는 NOT VERIFIED다.

화면 측정 전후

높이 900px의 동일 Chrome 로컬 환경에서 측정했다. T06 변경 후 아래 문서 높이는 다섯 검사 상태 모두 같고, absolute 숨김 알림의 offsetParent는 MAIN이며 크기는 1×1px이다. 실제 알림 문구와 완료 후 tab focus도 확인했다.

폭 기존 T06 문서 높이 수정 후 문서 높이 바깥 scrollY 기존 T02 ID 줄 수 수정 후 ID 줄 수 수정 후 ID cell 폭
390 6581 900 0 5 1 79.27px
768 3481 900 0 2 1 79.27px
1280 2417 900 0 1 1 112.20px
1440 2417 900 0 1 1 127.39px

기존 측정은 이전 보고서/browser-probe.json의 원본 FAIL 및 ID 근거를 재사용했다. 변경 후 측정은 이번 실행이다. 수정 화면의 main 내부 스크롤은 보존하며 페이지 가로 overflow가 없다. 기존 T06 배경·높이 분배·간격과 T02 font-size 14px/line-height 20px/색/padding은 그대로다.

증거 보존과 검증 최적화

원본 T02/T06 app source, 기존 evaluation 파일 105개, authorization, STOP, session-launches와 기존 22개 test/proof의 해시 보존을 감사했다. 실제 resume-control의 controller와 launcher만 허용 범위에서 바꾸고 이전 두 파일을 revision4-preserved로 보존했다. 유지보수 manifest와 신규 로컬 proof는 별도 파일이다. launcher는 executionEnabled:false에서 외부 모델 spawn 전에 중단한다. 기존 승인 해시를 자동 갱신하거나 STOP을 해제하지 않았다.

과거 공통 80/80은 frozen f78cc206의 역사적 결과로만 재사용한다. 현재 HEAD 전체 회귀 인증으로 확장하지 않는다. 이번 변경에 Component/Theme/대표 Story 변경이 없어 전체 292 Story·전체 Component 테스트·기존 성공 화면 재생성을 반복하지 않았다. Guard 계약에 영향을 받은 세 화면의 증거는 새로 연결했다. npm의 pretypecheck/prebuild 공통 package build가 각각 실행된 것은 표준 hook 중복이며 별도 회귀 재검사로 집계하지 않는다.

브라우저 측정 도구의 최초 textbox/searchbox locator 오류와 favicon 404 진단은 별도 기록이다. 오류 URL이 기본 /favicon.ico임을 확인해 선택적 진단으로 보존했으며 JS·CSS·font·실제 앱 console 오류는 PASS 조건에서 계속 검사했다. 해당 도구 수정으로 실패한 측정을 재개했고 통과한 Guard는 source/contract freshness 확인 후 재사용했다.

남은 미검증과 다음 실험 조건

T01 사용자 CSS Intent, High T02 생성 코드 품질, High T06 화면, T03 Medium/High, 실제 스크린리더·물리 touch·Safe Area와 미실행 동적 테마 상태는 NOT VERIFIED다. 관련 원본 점수·FAIL을 변경하지 않았다. 현재 실험 자료와 로컬 실행기 검증은 준비돼 있으며 모델 실행은 계속 중단 상태다. 향후 T03 재개는 별도 사용자 지시와 새 실행기/proof 해시를 연결한 승인 기록이 필요하다.

D-01/D-02, 퍼블리셔 추가 확정 사항, 기존 Foundation/Theme/Component 스타일과 Story ID는 변경하지 않았다. 공식 Gitea에 접근하거나 수정하지 않았고 이전·GitHub 연결 해제·ZIP 배포는 수행하지 않았다. GitHub commit/push SHA와 KST 작업 시간은 독립 실험 경로의 FINAL_REPORT.md에 기록한다.