<!-- FILE: _St/test_list.md | ROLE: sort 전체 테스트 상태·진행률 -->
# test_list — 패키지 v324

| ID | 상태 | 모듈 | 테스트 파일 | 검증 기능 | 완료 기준 | 현재 결과 | 실패 원인 | 다음 작업 | 관련 문서 |
|---|---|---|---|---|---|---|---|---|---|
| T-STRUCT-001 | [완료] | 전체 | 구조 검사 | 실제 사용 모듈·base_root 확인 | 6개 현재 모듈과 `mnt/d/_St` 구조 일치 | OK | - | 회귀 유지 | ai_read.md |
| T-IG-001 | [완료] | IG | test_ext_module.js | URL 직접 다운로드 경로 | direct handler 존재 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-IG-002 | [완료] | IG | test_ext_module.js | 구형 물리 마우스·원점·클릭 검증 제거 | 폐기 토큰 없음 | OK | - | 회귀 유지 | ai_read_삭제.md |
| T-IG-003 | [완료] | IG | test_ext_module.js | 메인 `IG account` | username·fallback | OK | - | 실제 Chrome 확인 | ai_read_완료.md |
| T-IG-004 | [완료] | IG | test_ext_module.js | Side 계정·No 분리 | 독립 라벨 | OK | - | 실제 Chrome 확인 | ai_read_완료.md |
| T-IG-005 | [완료] | IG | test_ext_module.js | `🗑️` 계정 제외 | 수집·카운트 제외 | OK | - | 실제 polling 확인 | ai_read_완료.md |
| T-WS-001 | [완료] | WS | test_ws8771_module.py | 파일·JSON·보고서·MEDIA_SAVED | 공통 handler | OK | - | Windows 회귀 | ai_read_완료.md |
| T-WS-002 | [완료] | WS | test_ws8771_module.py | 구형 마우스 자동화 제거 | 주 다운로드에 물리 클릭 경로 없음 | OK | - | 회귀 유지 | ai_read_삭제.md |
| T-AUTO-001 | [완료] | Auto | test_auto8700_module.py | 현재 관리 서비스 구성 | 실제 등록 서비스만 시작·감시 | OK | - | 회귀 유지 | ai_read.md |
| T-AUTO-8780-001 | [완료] | Auto↔Analyze | test_auto8700_module.py | 8780 자동 실행·API health | start=true·health ok | OK | - | 실제 Windows 확인 | ai_read_완료.md |
| T-STORAGE-001 | [완료] | Shared | test_shared_storage.py | SQLite v1~v7 | WAL·FK·필수 테이블·views_available 비파괴 migration | OK | - | 회귀 유지 | ai_read.md |
| T-STORAGE-002 | [완료] | Shared | test_shared_storage.py | MySQL v45·v46 추가형 | 기존 v44 파괴 없음 | OK | - | 서버 적용 전 검토 | ai_read.md |
| T-STORAGE-003 | [완료] | Shared | test_shared_storage.py | 10분 통계 UPSERT | bucket·sample 일치 | OK | - | 실시간 연결 | ai_read_완료.md |
| T-MEDIA-LOCAL-001 | [완료] | Shared | test_shared_storage.py | 5개 다운로드 경로 공통 저장 | 자산·post·sync 일치 | OK | - | 실제 다운로드 회귀 | ai_read_완료.md |
| T-MEDIA-WIRE-001 | [완료] | IG↔WS↔Shared | 고정 테스트 | 전체·필터·Top·개별 연결 | source·event 일치 | OK | - | 실제 Windows 회귀 | ai_read_완료.md |
| T-MVP-LOCAL-001 | [완료] | Shared | test_shared_storage.py | 계정·게시물 repository | upsert·조회·삭제 | OK | - | observation 연결 | ai_read.md |
| T-MVP-PAGE-001 | [완료] | Analyze8780 | test_analyze8780_module.py | 페이지 조회 API | LIMIT·정렬 일치 | OK | - | 실제 UI 확인 | ai_read.md |
| T-DELETE-001 | [완료] | Analyze/Shared | 고정 테스트 | 계정·게시물 soft-delete | 숨김·DELETE queue | OK | - | 실제 Side 확인 | ai_read_완료.md |
| T-POST-URL-001 | [완료] | WS↔Shared↔Analyze | 고정 테스트 | 게시물 canonical URL | scope URL 저장·표시 차단 | OK | - | 실제 Explore 다운로드 확인 | ai_read_완료.md |
| T-BROWSER-LIFECYCLE-001 | [완료] | Auto↔IG | test_ext_module.js, test_ext_tab_replacement_v279d.js | 자동 전환 후 Chrome·replacement 탭 유지 | Chrome 창 유지, 준비된 새 탭 유지, 직전 자동 탭만 종료 | OK | - | 실제 Windows 확인 | ai_read_완료.md |
| T-WS-DIALOG-001 | [완료] | WS | test_ws8771_module.py | Save As 보조 fallback | 파일명 판별·Enter·이동 코드 유지 | OK | - | 주 흐름으로 복원 금지 | ai_read_완료.md |
| T-AUTO-HEALTH-001 | [완료] | Auto↔Analyze | test_auto8700_module.py | 8780 HTTP health 1회 | 반복 refresh 호출 1회 | OK | - | 실제 콘솔 확인 | ai_read_완료.md |
| T-AUTO-UI-001 | [완료] | Auto | test_auto8700_module.py | main-thread 총괄 UI·종료 | UI main thread, 관리 서비스 종료, Chrome 유지 | OK | - | Windows 회귀 | ai_read_완료.md |
| T-AUTO-WIN-001 | [검증대기] | Auto↔WS↔Analyze↔RTC | test_auto8700_module.py, 실제 Windows 로그 | 총괄 창 표시·종료 정책 | WS·RTC 종료, Chrome·Analyze8780 유지 | UNKNOWN | v250 종료 기준 변경 후 실제 로그 없음 | Auto X 종료 뒤 PID·포트 확인 | ai_read_패치.md |
| T-WIN-001 | [완료] | IG↔WS | 실제 Windows 로그 | MP4/JPG 직접 다운로드 | 파일·JSON·보고서 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-AUTO-DOWNLOAD-001 | [완료] | IG↔WS | 실제 Chrome·Windows 로그 | 자동 조건 다운로드 액션 | 수동 클릭 없이 첫 파일 저장 | OK | - | AD 회귀 유지 | ai_read_완료.md |
| T-IG-MAIN-LABEL-001 | [코드반영] | IG | test_ext_module.js, test_ext_main_ui.js | Side 계정·No 분리·Main 계정 전용 표시 | Side 별도 No 유지, Main은 IG 계정만 표시, 현재 선택 강조 | OK | 실제 Chrome 렌더링 미확인 | Side No·Main 계정 전용 화면 확인 | ai_read_패치.md |
| T-IG-WS-GUIDE-001 | [코드반영] | IG | test_ext_module.js, test_ext_main_ui.js | WS 미연결 설치 안내 분리·자동 표시 | 진행 현황 아래 안내, `_St.zip`·Auto8700 실행 문구, 연결 시 숨김 | OK | 실제 Windows/Chrome 상태 전환 로그 미확인 | WS OFF/ON 상태와 안내 실행 경로 확인 | ai_read_패치.md |
| T-ANALYZE-SIDEBAR-001 | [완료] | Analyze8780 | test_analyze8780_module.py | 좌측 계정 압축 목록·검색·직접 선택 | 190~230px, 200개 조회, 클릭 상세, `?account=` 자동 선택 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-ANALYZE-WIN-001 | [검증대기] | Analyze8780 | 실제 Windows | 8780 UI·운영 DB | 화면·데이터 보존 | UNKNOWN | 실제 환경 없음 | 실제 실행 | ai_read_패치.md |
| T-SIDE-DELETE-001 | [검증대기] | IG↔Analyze | 실제 Chrome | 삭제 후 `🗑️` 표시 | 30초 내 반영 | UNKNOWN | 실제 Chrome 없음 | 실제 실행 | ai_read_패치.md |
| T-ACCOUNT-SAVE-001 | [완료] | IG | test_ext_module.js | `💾 저장` 버튼 | 명시 저장·blur 자동저장 없음 | OK | - | 실제 Chrome 확인 | ai_read_완료.md |
| T-ACCOUNT-SQLITE-001 | [완료] | IG↔Analyze↔Shared | 고정 테스트 | username 수집목록 SQLite 동기화 | 프로필 변경 후 동일 목록 복원 | OK | - | 실제 Chrome 프로필 확인 | ai_read_완료.md |
| T-WS-STDOWN-001 | [완료] | WS↔Shared | test_ws8771_module.py | `_StDown/instagram/계정` fallback | 완료 파일 이동·MEDIA_SAVED | OK | - | CDP 주 흐름 유지 | ai_read_완료.md |
| T-CDP-DOWNLOAD-001 | [폐기] | Auto↔IG | 실제 Windows | CDP 다운로드 위치 지정 | 실제 확장 Chrome에 적용 | FAIL | CDP Chrome과 확장 Chrome 불일치 | WS 직접 저장으로 대체 | ai_read_삭제.md |
| T-WS-DIRECT-001 | [완료] | IG↔WS | test_ext_module.js, test_ws8771_module.py, 실제 Windows 로그 | URL 직접 저장 | 저장창 없이 `_StDown/instagram/계정/원본파일명` 생성 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-FILE-META-001 | [완료] | WS↔Shared↔Analyze | 고정 테스트 | 계정 폴더·원본 파일명 DB 표시 | folder/file/relative path 일치 | OK | - | 실제 UI 확인 | ai_read_완료.md |
| T-LOG-POLICY-001 | [완료] | 전체 문서 | 문서 검사 | 기능 체크형 로그 운영 기준 | 5개 ai_read/test 문서에 상태·중복방지·예외추적 기준 존재 | OK | - | 기능별 소스 적용은 별도 작업 | ai_read.md |
| T-AUTO-CHECK-001 | [코드반영] | IG↔WS | test_ext_module.js, test_ext_private_views_auto_download.js, test_ws8771_module.py | 자동 다운로드 기능 체크 로그·AD-03 선행 게이트 | AD-01~AD-07·한국어·중복방지, AD-03 완료 전 AD-04/05 금지 | OK | v268 실제 로그에서 AD-03 실패 뒤 다운로드 진행 확인; v270 즉시 다운로드·AD-03 게이트 코드 반영 후 실검증 없음 | 비공개 조회수 Top 1 실제 자동실행 로그 확인 | ai_read_패치.md |
| T-AUTO-AD03-GATE-001 | [코드반영] | IG↔WS | test_ext_private_views_auto_download.js, 실제 Chrome·Windows 로그 | No001 snapshot 대상 연결·AD-03 다운로드 게이트 | Main 시각 No 없이 snapshot rank/shortcode/owner/URL 확인, 실패 시 즉시 중단, 성공 뒤에만 AD-04/05 | OK | 정적·단위 회귀 OK, 실제 v270 자동실행 미확인 | 조회수 비공개 Top 1 실제 AD-03→AD-04→AD-05 순서 확인 | ai_read_패치.md |
| T-PROGRESS-LOG-001 | [검증대기] | WS | test_ws8771_module.py, 실제 Windows 로그 | 프로젝트 진행로그·상세로그·실패로그 연결 | 진행로그 판정, 검색표식, 실패 발췌, 중복방지 | OK | AD-03 복구·AD-06/07 성공 판정 누락 | 후속 로그 판정 수정 | ai_read_패치.md |
| T-IG-MAIN-DIAG-001 | [완료] | IG | test_ext_main_ui.js | Main 진단 축소·Side 시각화 연동 | CDP 옆 토글, 상시영역 숨김, 날짜·막대 동일 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-SIDE-CDP-START-001 | [예정] | IG↔Auto | test_ext_module.js, 실제 Windows 로그 | CDP 없이 예약 Side 자동시작 | 예약 시간에 CDP 대기 없이 시작, 0=현재 화면·1=목록 첫 줄 | UNKNOWN | 미수정 | 다음 버전 단일 목표 | ai_read_패치.md |
| T-HTML-REPORT-THUMB-001 | [완료] | WS | test_ws8771_module.py, 실제 브라우저 | 계정 HTML/index.htm 게시시각·고정 썸네일·전체보기 | 게시시각, 320px 카드, 8780 계정 링크 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-AUTO-MP4-COUNT-001 | [폐기] | IG | test_ext_module.js | `총`을 현재 계정 MP4만으로 표시 | MP4만 총계로 오해시키는 문구 제거 | SKIP | 전체 실행 누적이 없고 JPG·완료 게시물과 모순 | v259 현재 계정/전체 실행 집계로 대체 | ai_read_삭제.md |
| T-AUTO-RUN-COUNT-001 | [검증대기] | IG | test_ext_module.js, test_ext_progress_eta_v279ccc.js, 실제 Chrome 로그 | 현재 계정·전체 실행 다운로드 집계·전체 진행률 | 게시물·MP4·JPG 분리, 실제 자산 예정/완료 중복 제거, 자동종료 전 100% 금지, No 없는 상태에 No--- 미표시 | OK | 정적 회귀 OK, 실제 다계정 화면 집계·진행률 미확인 | 2개 이상 계정에서 개별 파일 완료와 전체 진행률·최종 100% 확인 | ai_read_패치.md |
| T-SIDE-MIN-FILTER-001 | [완료] | IG | test_ext_module.js, 실제 Chrome | 댓글·하트 최소 필터 | 두 조건 AND 적용, Top 개수·No·자동대상 일치 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-SIDE-PRIVATE-VIEW-RANK-001 | [완료] | IG | test_ext_module.js, test_ext_private_views_auto_download.js, 실제 Chrome·Windows 사용자 확인 | 조회수 비공개 참여합산 Top N·자동 다운로드 | views=-1/views_available=0, 활성 하트·댓글·리포스트 AND 후 원값 단순합산, No001 snapshot 자동 다운로드 | OK | - | 실제 비공개 후보 1개 다운로드·다음 계정 URL 이동 회귀 유지 | ai_read_완료.md |
| T-SIDE-SAVE-COUNT-001 | [예정] | IG | 미정 | 저장 수 수집·참여점수 확장 | 안정적인 저장 수 필드 확인 후 저장×5 적용 | UNKNOWN | 수집 필드 미확정 | 실제 응답 필드 확인 후 별도 버전 | ai_read_패치.md |
| T-OBS-CENTRAL-1H-001 | [코드반영] | IG↔WS↔PHP↔Analyze | test_ext_module.js, test_ws8771_module.py, test_yellow_php_static.py, 운영 로그 | 통계 연동 계정별 UTC 1시간 송수신 | batch 원자 저장·requested=saved·같은 bucket 조회·성공 chunk shortcode signature만 기록 | OK | 운영 yellow.php/MySQL 송수신 로그 미확인 | 통계 연동 ON 후 upsert/list·변경 없음 skip 확인 | ai_read_패치.md |
| T-DIRECT-FILENAME-001 | [예정] | IG↔WS | test_ext_module.js, test_ws8771_module.py, 실제 파일 로그 | canonical 고유 파일명·JSON file_name | raw CDN명 미사용, No00·shortcode 이름 일치 | UNKNOWN | 미수정 | 후속 작업 | ai_read_패치.md |
| T-ITEM-ONLY-001 | [완료] | IG↔Analyze↔Shared | test_ext_module.js, test_analyze8780_module.py, test_shared_storage.py | 다운로드 없이 현재 페이지 통계 수집 | 현재 계정/shortcode scope·views_available·sort/source·수집시각을 10분 저장 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-DATE-CHART-001 | [예정] | WS↔Analyze | 미정 | 수집일자 기준 sort_by 차트 | collected_at 일자별 시계열 | UNKNOWN | 미구현 | 후속 작업 | ai_read_패치.md |
| T-AUTO-V249-FLOW-001 | [완료] | IG↔WS | test_ext_auto_v249_regression.js, test_ext_module.js, 실제 Windows 로그 | v249 계정 이동·swipe·캐시 보완 + v260 시작 탭 보존 | 새 시작의 활성 Instagram 탭 1개 보존, 전체 탭 검색·마지막 탭 복구 없음, 4.5초 대기 후 진행 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-OBS-WIRE-001 | [코드반영] | IG↔Analyze↔Shared | test_ext_module.js, test_analyze8780_module.py, test_shared_storage.py | 현재 페이지 observation batch | 실제 수신만 저장, URL 전환 cache 초기화, account/shortcode scope, 동일 10분 UPSERT | OK | 실제 Chrome·운영 SQLite 로그 미확인 | 다계정 전환·10분 내 재수집 확인 | ai_read_패치.md |
| T-SIDE-STATS-MODE-001 | [코드반영] | IG | test_ext_module.js, test_ext_main_ui.js, 실제 Chrome | 톱니바퀴 통계 단독·통계 연동 설정 | 기본 단독, 연동 선택 저장, Side 상태 개수 표시, 공유 d-none·0 | OK | 실제 Side 설정 저장·재시작 화면 미확인 | 모드 변경·재시작·상태 표시 확인 | ai_read_패치.md |
| T-SERVER-STATS-001 | [코드반영] | PHP/MySQL | test_yellow_php_static.py, 운영 SQL | 중앙 1시간 통계 이력 UPSERT·조회 | collector+shortcode+UTC hour 고유, transaction rollback, shortcode별 최신 수신 | OK | 운영 재수집 후 ig_media_stat_hour 0→증가 로그 없음 | v248 배포·통계 연동 실행 후 테이블 확인 | ai_read_패치.md |
| T-MVP-MEMBER-001 | [예정] | Server | 미정 | 수집자·device token | 인증·중복 방지 | UNKNOWN | 미구현 | 3단계 | ai_read.md |
| T-MVP-GROUP-001 | [예정] | Server/UI | 미정 | 그룹·공개범위 | ACL | UNKNOWN | 미구현 | 4단계 | ai_read.md |
| T-MVP-RESEARCH-001 | [예정] | UI/Server | 미정 | 대본·카테고리·평가·후킹 | 검색·권한 | UNKNOWN | 미구현 | 5단계 | ai_read.md |

| T-SERVER-ERROR-BODY-001 | [완료] | WS↔PHP | test_ws8771_module.py, 실제 Windows 로그 | HTTP 500 응답 body 보존 | status·stage·message·누락컬럼 유지 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-MYSQL-SCHEMA-001 | [코드반영] | PHP↔MySQL | test_yellow_php_static.py | schema_check·v47 통계 스키마 | 새 ig_media 컬럼·ig_media_stat_hour 필수 컬럼 확인 | OK | 최신 PHP v47 운영 배포·schema_check 로그 없음 | 배포 후 schema_check | ai_read_패치.md |
| T-SERVER-INSERT-001 | [검증대기] | WS↔PHP↔MySQL | 실제 서버 로그 | media_insert 등록 | video/image HTTP 200·ok=1 | FAIL | schema_check의 SHOW TABLES LIKE ? 문법 오류 | v241 배포 후 동일 shortcode 재검증 | ai_read_패치.md |

| T-AUTO-RECOVERY-001 | [코드반영] | Auto↔WS↔Analyze↔RTC | test_auto8700_module.py, test_ws8771_module.py | 관리 서비스 개별 종료 자동복구 | X·정상·비정상·포트 down 모두 재실행, 전체종료만 제외 | OK | 실제 Windows 종료 방식별 로그 미확인 | WS X·단축키·taskkill·Analyze/RTC 종료 실검증 | ai_read_패치.md |
| T-ACCOUNT-NORMALIZE-001 | [코드반영] | IG↔Analyze↔Shared | test_ext_module.js, test_shared_storage.py | `@account` 중복 제거·삭제 no-retry·입력순서 보존 | 저장 표시 통일, tombstone 우선, 삭제 URL 미생성, 일반 저장 자동정렬 없음 | OK | 실제 Chrome 저장·자동이동 미확인 | Chrome 저장·새로고침·자동실행 확인 | ai_read_패치.md |
| T-SIDE-WS-ONLY-001 | [코드반영] | IG↔WS | test_ext_module.js, test_ws8771_module.py, 실제 Chrome·Windows 로그 | 구형 다운로드 UI 제거·WS 단일 저장 경로 | 구형 UI·downloads 권한 없음, root=instagram, 계정 폴더 분리, WS 실패 시 전 경로 중단 | OK | 실제 WS OFF/ON 화면·다운로드 로그 미확인 | Side UI와 수동·전체·필터·Top 실검증 | ai_read_패치.md |
| T-HTML-REPORT-REBUILD-001 | [코드반영] | IG↔WS | test_ext_module.js, test_ws8771_module.py, 실제 생성 HTML | 기존 계정 보고서 전체 재생성·8780 링크 | 부모 JSON 기준 상위 HTML+index.htm 생성, folder_name fallback 계정 링크 | OK | 실제 `_StDown` 전체 재생성 미실행 | `lilys_home` 포함 실제 보고서 재생성·링크 확인 | ai_read_패치.md |
| T-TOP-TARGET-META-001 | [코드반영] | IG↔WS↔PHP | test_ext_module.js, test_ws8771_module.py, 운영 MySQL | Top 목표·후보 수·수집 순위 분리 | top_n=사용자 목표, rank_total=후보 수, rank_no=수집 당시 순위 | OK | 운영 collect event 재수집 미확인 | Top 목표 4 실행 후 MySQL 값 확인 | ai_read_패치.md |
| T-SIDE-ANALYZE-LINK-001 | [완료] | IG↔Analyze | test_ext_side_account_link_ui.js, test_ext_main_ui.js, 실제 Chrome | Side 8780 실제 링크·동적 계정 URL | health OK 때 href 활성, 실패 때 href 제거, `target=_blank`, `rel=noopener noreferrer`, 강제 창 열기 없음 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-AUTO-ANALYZE-KEEP-001 | [코드반영] | Auto↔Analyze | test_auto8700_module.py, 실제 Windows | Auto 종료 뒤 Analyze8780 유지 | 8780 PID·페이지 유지, 중복 실행 없음, 소스변경 재시작 유지 | OK | 실제 Windows 종료 로그 없음 | Auto X 종료·재실행·소스변경 확인 | ai_read_패치.md |

| T-INJECT-DOWNLOAD-META-001 | [코드반영] | IG↔WS | test_ext_module.js, test_ws8771_module.py, 실제 Chrome·Windows 로그 | Injection 수동 Image/Video 전체 메타 병합·정확한 ✅ 표시 | shortcode+asset+index 일치, 전체 통계·URL·caption 저장, 해당 버튼만 ✅ | OK | 개별 게시물 MP4와 Side 썸네일 수동 다운로드는 사용자 확인; 전체 메타·정확한 ✅·carousel은 미확인 | JPG·재클릭·carousel·생성 JSON 메타 확인 | ai_read_패치.md |

| T-ANALYZE-MEDIA-BADGE-001 | [코드반영] | Analyze8780↔Shared | test_analyze8780_module.py, 실제 브라우저 | JPG/MP4 이미지 배지·이미지 16:9·링크 rel 유지 | has_jpg/has_mp4, JPG·MP4·JPG · MP4, image-only 16:9, noopener noreferrer, 미다운로드 통계 유지 | OK | 실제 8780 브라우저 렌더링 미확인 | MP4/JPG/둘 다/미다운로드 카드 화면 확인 | ai_read_패치.md |

| T-AUTO-TARGET-COMPLETE-001 | [코드반영] | IG | test_ext_auto_target_completion.js, test_ext_auto_wait_resume.js, 실제 Chrome·Windows 로그 | 실제 저장 완료 shortcode Top목표·기간/All time 끝 판정·상태 제목 | 대상 0개도 실제 계정 n/n 전체 순회 후 자동종료, 완료 결과 n/n 유지, 다음 실행 위치만 0/n 초기화 | OK | v257 실제 중간 강제완료 실패를 v260 queue_completed guard로 코드 수정했으나 실제 Chrome 재검증 없음 | 대상 0개 44계정 순회·44/44 종료·다음 입력 0/44 확인 | ai_read_패치.md |
| T-AUTO-WAIT-RESUME-001 | [완료] | IG | test_ext_auto_wait_resume.js, 실제 Chrome 사용자 검증 | 다른 탭·창 사용 시 자동 무한 대기·사유 알림·같은 단계 재개 | 계정 위치·전체 집계 유지, 원래 자동 탭 복귀 시 동일 단계 자동 재개 | OK | - | WS 단절·Instagram 외 주소는 별도 실제 검증 유지 | ai_read_완료.md |

| T-EXT-MEMORY-001 | [코드반영] | IG | test_ext_memory_windowing.js, test_ext_virtual_list.js, 실제 Chrome 작업관리자·스크롤 | 대량 게시물 Base64·반복전송·이미지 디코딩 메모리 보호 | Base64 미생성, 변경시/30초만 전체 전달, 전체 카드 DOM 유지, 화면 밖 img src/srcset 해제, 16:9 고정, 전체 순위 유지 | OK | 실제 600~800개 Chrome 메모리 회수량 미확인 | 128·600개에서 스크롤/메모리/재로딩 확인 | ai_read_패치.md |
| T-EXT-VIRTUAL-SCROLL-ANCHOR-001 | [폐기] | IG | 실제 Chrome 스크롤 | 120카드 가상 DOM·spacer·anchor 보정 | 128개 경계에서 반짝임·왕복 없음 | SKIP | v258 실제 하단 스크롤에서 뒤로 갔다 내려가며 화면 반짝임 확인 | v259 전체 DOM·이미지 해제로 대체 | ai_read_삭제.md |
| T-EXT-DOM-STABLE-001 | [코드반영] | IG | test_ext_virtual_list.js, test_ext_memory_windowing.js, 실제 Chrome 스크롤 | 전체 카드 DOM 고정·화면 밖 이미지 자원 해제 | 스크롤 중 카드 추가/삭제·행측정·spacer·scrollBy 없음, src/srcset만 해제/복원 | OK | 실제 Chrome 128·600개 장시간 스크롤 미확인 | 하단 왕복·빠른 휠·이미지 재표시·메모리 확인 | ai_read_패치.md |
| T-OBS-INCREMENTAL-001 | [코드반영] | IG↔WS↔Analyze | test_ext_stats_incremental.js, 실제 Chrome·WS 로그 | 같은 1시간 신규·변경 shortcode 증분 송수신·100개 batch | 첫 전송 뒤 시간 전체 잠금 금지, 신규/변경만 100개씩 전송, 성공 chunk만 완료키 기록 | OK | 실제 `전송 12` 이후 스크롤 신규 전송 증가 로그 미확인 | 통계 연동 ON에서 250개 이상 스크롤·100/100/나머지 전송 확인 | ai_read_패치.md |
| T-OBS-LOCAL-DEDUP-001 | [코드반영] | IG↔Analyze↔Shared | test_ext_stats_incremental.js, test_analyze8780_module.py, test_shared_storage.py | 새 10분 구간 실제 통계 변경분만 SQLite 저장 | 최초 저장, 동일 통계·메타면 전체 쓰기 없음, 메타 변경만 갱신, 변경 통계만 이력 저장, 정상 조회수 보존 | OK | 실제 10분 이상 운영 SQLite 행 증가 로그 미확인 | 동일값 20분 유지·지표 1개 변경·재시작 후 중복 방지 확인 | ai_read_패치.md |

| T-SIDE-TAB-REREAD-001 | [완료] | IG | test_ext_side_reread_restart_ui.js, 실제 Chrome | 페이지 reload·swipe 없는 현재 탭 재읽기 | Main 동일 payload 억제 해제, 현재 DOM·캐시 재스캔, Side 카드 재전송 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-AUTO-PROGRESS-CONTINUE-001 | [코드반영] | IG | test_ext_side_reread_restart_ui.js, test_ext_auto_control_eta_v274.js, 실제 Chrome | 사용자 중지 후 화면 리스트 번호에서 새 시작 | 중단 스냅샷은 표시만 보존, `시작`은 현재 화면 index만 사용; 2/3 중단→1/3 수정→시작 시 AS-03=1/3 | OK | 정적 회귀 OK, 실제 Chrome 2/3→1/3 재시작 미확인 | 2/3에서 중단→1/3 수정→시작 후 첫 계정/AS-03 확인 | ai_read_패치.md |
| T-SIDE-OPERATOR-UI-001 | [코드반영] | IG | test_ext_side_reread_restart_ui.js, 실제 Chrome | queue 계정명·방식 2/3 재배치·구 안내 삭제 | 현재 주소 계정명, 필터 결과 방식 2 위, Top 방식 3 아래, 부정확한 영문 안내 없음 | OK | 실제 화면 정렬 미확인 | Side 실제 배치와 계정 전환 표시 확인 | ai_read_패치.md |
| T-SIDE-CURRENT-ACCOUNT-ADD-001 | [폐기] | IG | 이전 test_ext_side_account_link_ui.js, 실제 Chrome | 자동 현재계정추가 대상 판정 | profile/Main hover/단일 owner 자동 판정 | SKIP | MAIN hover 충돌과 불필요한 400ms polling 때문에 v279aaaa에서 폐기 | Side 카드 명시 클릭 방식 사용 | IG ai_read_삭제.md |
| T-ACCOUNT-ORDER-SAVE-001 | [완료] | IG↔Shared | test_ext_module.js, test_shared_storage.py, 실제 Chrome | 계정 추가 끝 삽입·일반 저장 순서 보존·명시 정렬 | 저장만 누르면 화면 순서 유지, 정렬 버튼에서만 오름차순, 정렬 시 진행상태 리셋 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-EXPLORE-HOVER-ACCOUNT-001 | [폐기] | IG | test_ext_main_hover_disabled_v279aaa.js, 실제 Chrome | MAIN hover 계정 전달·강조 | hover 비활성 상태에서 다운로드·페이지 응답 정상 | SKIP | hover 계통 활성 시 JPG unload·응답 없음 재현, 비활성 시 정상 | 비활성 유지 | IG ai_read_삭제.md |

| T-IG-SPA-INJECTION-001 | [완료] | IG | test_ext_spa_injection.js, 실제 Chrome 사용자 검증 | SPA 게시물·Reels 인젝션·계정 재연동 | fetch/History/DOM/video 재판정, F5 없는 Explore→p·Reels 최초/다음 이동, 현재 shortcode 계정 적용 | OK | - | 회귀 유지 | ai_read_완료.md |


| T-EXPLORE-POPUP-RETURN-001 | [코드반영] | IG | test_ext_spa_injection.js, 실제 Chrome | Explore 상세 팝업 닫기 후 전체 인젝션 유지 | `/explore/ ↔ /p|reel|reels/{code}`에서 전체 media map 유지·F5 불필요 | OK | 실제 팝업 복귀 화면 미확인 | 여러 카드 인젝션 상태에서 팝업 열기·닫기 반복 | ai_read_패치.md |
| T-EXPLORE-HOVER-DELAY-001 | [완료] | IG | test_ext_spa_injection.js, 실제 Chrome | hover 통과 오감지 방지 | 200ms 전 leave는 미변경, 확정 선택은 Side 이동 중 유지 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-MAIN-DOM-DIAG-COPY-001 | [완료] | IG | test_ext_spa_injection.js, 실제 Chrome DOM진단복사.txt | Main 누락 DOM 진단복사 | URL·가시 링크·인젝션 수·data-code·첫 누락 HTML 복사 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-MAIN-NAV-VISUAL-HIDE-001 | [폐기] | IG | test_ext_spa_injection.js | 사용자용 No 이동 메뉴 숨김·숨은 DOM 유지 | v266에서 시각 DOM 완전 제거·내부 handler 분리로 대체 | SKIP | 숨은 `IGBLUE_NoNav_*` DOM 유지 방식 폐기 | `T-MAIN-RANK-VISUAL-REMOVE-001` 유지 | ai_read_삭제.md |
| T-MAIN-RANK-VISUAL-REMOVE-001 | [검증대기] | IG | test_ext_rank_visual_removal.js, test_ext_main_ui.js, 실제 Chrome | Main 순위 시각 UI·Main 설정 제거 | Main No000·Rank badge·순위 종류 행·1/Prev/Current/Next/마지막 부재, Side 순위 설정 유지 | OK | 정적 회귀 OK, 실제 Chrome 화면 미확인 | Side 순위 유지와 Main 부재 동시 확인 | ai_read_패치.md |
| T-SIDE-RANK-RESTORE-001 | [완료] | IG | test_ext_rank_visual_removal.js, test_ext_main_ui.js, test_ext_module.js, 실제 Chrome | v266 과삭제 Side No/rank 복원 | Side No000·Rank badge·순위 탭·저장/복원·실시간 갱신, Main 체크/payload 없음 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-HOME-INJECT-SOURCE-DIAG-001 | [완료] | IG | test_ext_home_injection_source_diagnostic.js, 실제 Chrome 사용자 확인 | 홈 중복 인젝션 생성경로 색상·상세 진단 | H/D/B 출처색과 duplicate_codes로 실제 중복 경로 구분 | OK | - | H_IMAGE_LINK+D_VIDEO_LINK 조합 회귀 유지 | ai_read_완료.md |
| T-MAIN-INTERNAL-NONAV-001 | [검증대기] | IG | test_ext_rank_visual_removal.js, test_ext_auto_wait_resume.js, 실제 Chrome 자동실행 | NoNav DOM 없는 내부 Current/Next·shortcode 이동 | internal state/handler 준비, 현재 순번 shortcode 카드 일치, go_no 이동·중지·이어하기 유지 | OK | 정적 회귀 OK, 실제 자동실행 미확인 | Top 3 이상 자동실행·중지·이어하기 확인 | ai_read_패치.md |
| T-HOME-INJECT-DUPLICATE-001 | [완료] | IG | test_ext_home_explore_recovery.js, 실제 Chrome | 홈 동영상 게시물 중복 인젝션 제거 | 같은 article·shortcode에서 visible video가 있으면 H_IMAGE_LINK 차단, D_VIDEO_LINK 카드 1개만 유지 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-EXPLORE-SPA-ENTRY-RECOVERY-001 | [완료] | IG | test_ext_home_explore_recovery.js, test_ext_spa_injection.js, DOM 진단, 실제 Chrome | 홈→Explore SPA 첫 진입 인젝션 복구·원인 로그 | fetch clone+Response json/text 수집, 0~8초 재스캔, INJ-01~05와 media_map/capture counter 출력 | OK | - | 회귀 유지 | ai_read_완료.md |

| T-AUTO-IMMEDIATE-TOP-001 | [완료] | IG | test_ext_immediate_top_download.js, test_ext_auto_target_completion.js, 실제 Chrome·Windows 사용자 확인 | Top 후보 즉시 다운로드·완료 후 swipe 계속·끝에서 다음 계정 이동 | 첫 pending 후보 snapshot 즉시 AD-03→저장, 완료 shortcode 재다운로드 없음, 목표 미달은 탐색 계속, 날짜/게시물 끝에서 현재 완료 수 유지 후 다음 계정 | OK | - | 실제 후보 1개 다운로드·다음 계정 URL 이동 회귀 유지 | ai_read_완료.md |

| T-INJECT-OVERLAY-MODE-001 | [코드반영] | IG | test_ext_overlay_mode_bridge.js, 실제 Chrome | Side 3단계 인젝션 표시 설정 bridge | detail=통계+버튼, download=버튼만, none=전체 숨김, 저장·즉시 변경 전달 | OK | 정적·helper 실행 회귀 OK, 실제 Chrome 3모드 전환 미확인 | 3모드 선택·새로고침·SPA 이동·콘솔 오류 확인 | ai_read_패치.md |
| T-VISUAL-SIDE-MAIN-001 | [완료] | IG | test_ext_visual_settings_download_status.js, 실제 Chrome 사용자 확인 | Metric bars·Date border Use/Side/Main 독립 저장·적용 | main을 side로 덮지 않고 storage·Side·Main 각각 선택 상태 유지, 현재 입력값 기본값 적용 | OK | - | 회귀 유지 | ai_read_완료.md |
| T-MAIN-DOWNLOAD-STATUS-001 | [코드반영] | IG | test_ext_visual_settings_download_status.js, test_ext_manual_download_global_highlight_v317.js, 실제 Chrome | Side 닫힘 수동 MP4 다운로드 상태 강조 | Chrome storage 설정만으로 정확한 shortcode·asset 카드에 start→done/error 표시, 완료 버튼 `다운` 유지 | OK | v316 실제 사용자 확인에서 체크 ON이어도 수동 표시 없음 | Side 닫고 수동 MP4 클릭 실제 확인 | ai_read_패치.md |

| T-AUTO-INDEXED-START-001 | [코드반영] | IG | test_ext_account_queue_v273.js, test_ext_auto_control_eta_v274.js, 실제 Chrome | 0/N 현재페이지와 1/N 이상 지정 URL 시작 분리 | 0/N 비 Instagram이면 실행 진입 없이 안내·자동시작 가능, 1/N 이상은 지정 URL을 background tabs.update로 먼저 로드 | UNKNOWN | 1/N 직접 시작은 사용자 확인; v273 0/N은 대기상태 진입·새 탭 혼선 확인, v274 코드 수정 후 실제 재검증 없음 | 0/N 비 Instagram 안내·버튼 상태와 1/N 회귀 확인 | ai_read_패치.md |
| T-AUTO-DELETED-ACCOUNT-001 | [코드반영] | IG↔Analyze↔Shared | test_ext_account_queue_v273.js, test_analyze8780_module.py, test_shared_storage.py, 실제 Chrome | 없어진 계정 명시 판정·휴지통 SQLite 저장·다음 URL | 동일 username의 명시적 not_found만 🗑️ 저장, 재오픈 없이 같은 활성 index의 다음 URL, private/auth/delay 오판 없음 | OK | 실제 Instagram 없어진 계정·인증·비공개 화면 검증 없음 | 없어진 계정과 비공개/로그인 계정을 연속 목록에서 확인 | ai_read_패치.md |
| T-ACCOUNT-DB-FILE-001 | [코드반영] | IG↔Analyze↔Shared↔WS | test_ext_account_queue_v273.js, test_analyze8780_module.py, test_shared_storage.py, 실제 Windows | 수집계정 SQLite 파일 열기·새 파일·다른이름 저장·선택 유지 | Shared/data 안전 파일명, 비덮어쓰기, 선택 JSON 지속, DB 전환 뒤 목록·index 0, Analyze·WS 같은 선택 DB 사용 | OK | 단위·HTTP API OK, 실제 Side·재실행·다운로드 저장 검증 없음 | 세 버튼 전환·재실행·선택 DB의 계정/통계/다운로드 확인 | ai_read_패치.md |

| T-AUTO-CONTROL-STATE-001 | [코드반영] | IG | test_ext_auto_control_eta_v274.js, 실제 Chrome | 사용자 중지·자동종료 후 제어 상태 복구 | 중지 완료·자동종료 완료 뒤 시작 사용 가능, 중지 사용 불가, 자동실행 사용 설정 유지, stopping 고착 없음 | UNKNOWN | 정적 회귀 OK, 실제 Chrome 중지·자동종료 재검증 없음 | 중지·자동종료 각각 버튼 상태 확인 | ai_read_패치.md |
| T-AUTO-TAB-ID-UI-001 | [코드반영] | IG | test_ext_auto_control_eta_v274.js, test_ext_side_operator_manual_v275.js, 실제 Chrome | 방식 3 tab_id 단일 표시 | Top sorted 자동 개수 앞 1곳만 표시, 유효 대상 숫자·미확정 `-`, 자동실행 버튼 사이·하단 중복 없음 | UNKNOWN | 정적 DOM·상태 함수 회귀 OK, 실제 탭 전환·종료 검증 없음 | Instagram/비Instagram/탭닫기/중지 후 표시 확인 | ai_read_패치.md |
| T-AUTO-ETA-001 | [검증대기] | IG | test_ext_auto_control_eta_v274.js, test_ext_progress_eta_v279ccc.js, 실제 Chrome·Windows | 전체 계정·Top목표 종료예상 | 최근 성공 세트 20개 전체 처리시간 이동평균+설정 대기시간, 표본 전 계산중, 초 단위 표시, 완료 0초 | OK | 정적·VM 계약 OK, 실제 장시간 자동실행 ETA 검증 없음 | 첫 세트 전 계산중·이후 갱신·중지/재실행 최근 20개 유지 확인 | ai_read_패치.md |
| T-SIDE-AUTO-LABEL-TAB-001 | [코드반영] | IG | test_ext_side_operator_manual_v275.js, 실제 Chrome | 자동실행 한국어 UI·기본 체크·설정 우측 정렬 | 저장값 없음이면 자동실행 사용 ON, 명시 OFF 유지, 표시명 `자동실행 사용/시작/중지`, 톱니바퀴 오른쪽 | OK | 정적 회귀 OK, 실제 Side 재로딩·화면 배치 미확인 | 기본값/명시 OFF/톱니바퀴 위치 확인 | ai_read_패치.md |
| T-SIDE-ACCOUNT-CARD-SELECT-001 | [코드반영] | IG | test_ext_side_account_click_v279aaaa.js, test_ext_side_account_link_ui.js, test_ext_module.js, 실제 Chrome | Side 카드 IG 계정 클릭 전용 대상 선택 | 초기 `IG 계정 선택`, 클릭 계정 버튼 표시·선택 강조, 자동 tracking 없음, 클릭만으로 저장 없음 | OK | 정적 회귀 OK, 실제 여러 카드 클릭·저장 미확인 | 다른 계정 카드 연속 클릭·계정추가·저장 확인 | IG ai_read_패치.md |
| T-MANUAL-DOWNLOAD-START-001 | [코드반영] | IG | test_ext_side_operator_manual_v275.js, test_ext_visual_settings_download_status.js, 실제 Chrome | 수동 MP4 클릭 즉시 시작 강조 | Side/Main 수동 MP4 클릭 순간 정확한 shortcode·asset_kind·media_index start, 이후 성공/부분/실패 전환, 자동 경로 비변경; JPG는 v323 원래 브라우저 다운로드로 분리 | OK | payload·bridge 정적 회귀 OK, 실제 수동 MP4 화면 검증 없음 | 수동 MP4 클릭 즉시 해당 카드 강조·결과 전환 확인 | ai_read_패치.md |
| T-EXT-RUNTIME-DIAG-001 | [폐기] | IG | test_ext_runtime_diagnostic_v276.js | v276 Runtime 진단 | v279a에서 10초 DOM/heap/Long Task/V scan/pagehide 진단 제거 | SKIP | unload·페이지 이동 부하 후보이며 실사용 기능 아님 | 0Byte 폐기 유지·복원 금지 | IG ai_read_삭제.md |
| T-SIDE-CDP-GATE-001 | [코드반영] | IG↔Auto | test_ext_side_control_save_v277.js, test_ext_download_restore_v279aa.js, 실제 Chrome | Auto8700 기본·CDP 예약옵션 분리 | Auto8700 미실행 시 설치 안내 우선, 일반 자동은 WS 기준, CDP:X는 예약만 제한 | OK | 정적 회귀 OK, 실제 X/O 화면 전환 미확인 | Auto8700 OFF→ON·CDP X→O에서 안내와 버튼 확인 | ai_read_패치.md |
| T-SIDE-POPUP-HANDOFF-001 | [코드반영] | IG | test_ext_side_control_save_v277.js, 실제 Chrome | ↗ 새 창 동일 Instagram 탭 연결 확인 뒤 기존 Side 닫기 | 자동실행 중 차단, popup tab_id 일치 확인 후 Side close, 실패·API 미지원 시 기존 Side 유지 | OK | 정적 계약 OK, 실제 tab/global Side Panel handoff 미확인 | 대기 상태 성공·tab 불일치·close 실패·자동실행 중 차단 확인 | ai_read_패치.md |
| T-MEDIA-SAVE-SELECT-001 | [코드반영] | IG↔WS↔Analyze | test_ext_side_control_save_v277.js, test_ws8771_module.py, 실제 Chrome·Windows | Video 저장 선택과 metadata 보존 | Video 저장 ON/OFF가 MP4 요청에만 적용되고 Image 저장 선택 UI는 없으며 caption·통계·퍼머링크·직접링크 metadata는 JSON/HTML/Analyze에 보존 | OK | 저장 정책 helper·WS JSON·metadata HTML 단위 OK, 실제 MP4/SQLite/8780 조합 미확인 | Video 저장 ON/OFF 수동·Filtered 실행 후 파일·JSON·HTML·SQLite·8780 비교 | ai_read_패치.md |
| T-AUTO-CACHE-RECOVERY-001 | [보류] | IG↔WS | test_ext_download_cache_recovery_v278.js, test_ext_private_views_auto_download.js, 실제 Chrome·Windows | v262 snapshot/Side 직접 URL 다운로드 회복 | Main active 정보 누락 시 exact No·shortcode·owner·실제 자산 URL로 복구 | FAIL | 사용자 v278 실제 확인에서 순회·metadata만 처리되고 MP4/JPG 미저장 | v279c v262 exact 경로로 대체 | ai_read_삭제.md |
| T-AUTO-CDP-LAUNCH-001 | [코드반영] | Auto↔IG | Auto8700/test_auto8700_module.py, 실제 Windows | 자동실행·CDP모드 실행의 실제 CDP Chrome 준비·복구 | 8700+Instagram Runtime 확인, PUT/Target.createTarget 탭 생성, 수동 창 표시, 전용 CDP만 재실행, 일반 Chrome 유지 | OK | 정적·단위 회귀 OK, 실제 Windows 창 실행 로그 없음 | 자동실행·설정 버튼과 stale CDP 복구 확인 | ai_read_패치.md |

| T-IG-V279A-DOWNLOAD-001 | [보류] | IG | test_ext_download_v262_bridge_v279a.js, 실제 Chrome | v279a 1차 다운로드 복구 | 수동 다운로드 및 unload 정상 | FAIL | legacy MAIN downloader 잔존, Auto8700 미실행 시 수동 차단 | v279aa 교정 | IG ai_read_삭제.md |
| T-IG-V279AA-DOWNLOAD-001 | [보류] | IG | test_ext_download_restore_v279aa.js, 실제 Chrome | 수동 fallback·안내 우선순위 | 설치 안내·Side/WS 다운로드 정상, MAIN JPG unload 없음 | FAIL | 설치 안내와 MAIN Injection OFF Side 자동 MP4/JPG는 OK, MAIN ON JPG 클릭 시 unload·응답 없음 | v279aaa hover 분리 진단 | IG ai_read_삭제.md |
| T-IG-V279AAA-HOVER-001 | [완료] | IG | test_ext_main_hover_disabled_v279aaa.js, 실제 Chrome 사용자 검증 | MAIN hover 계통 비활성 진단 | Auto8700 ON/OFF Main JPG·MP4 실제 저장, unload·응답 없음 미발생 | OK | - | hover 비활성 회귀 유지 | IG ai_read_완료.md |
| T-IG-V279AAAA-ACCOUNT-001 | [코드반영] | IG | test_ext_side_account_click_v279aaaa.js, 실제 Chrome | 수집계정 Side 클릭 전용 선택 | 400ms/Main polling 없음, 클릭한 IG 계정만 버튼 표시, 추가·저장 분리 | OK | 실제 Chrome 연속 선택·추가·저장 미확인 | Side 계정 2개 연속 선택 후 추가·SQLite 저장 확인 | IG ai_read_패치.md |
| T-IG-V279B-DOWNLOAD-STATUS-001 | [코드반영] | IG | test_ext_download_status_preserve_v279b.js, 실제 Chrome | 다운로드 시작 전 상태 보존·실제 시작 초기화 | 기존 표시 유지 또는 빈 상태, 실제 start에서만 초기화, 자동종료 후 마지막 파일 상세 유지 | OK | 정적 회귀 OK, 실제 Chrome 연속 실행 미확인 | 완료 상태에서 새 자동실행·계정 이동·다음 다운로드·자동종료 확인 | IG ai_read_패치.md |
| T-IG-V279BB-MAIN-SCOPE-001 | [보류] | IG | test_ext_main_scope_auto_restore_v279bb.js, 실제 Chrome | MAIN hover 스코프 오류 제거 | 외부 IIFE 지역변수 직접 참조 없음·이후 코드 실행 | FAIL | 스코프 오류는 제거됐으나 사용자 실제 v279bb 자동 실행에서 MP4/JPG 0개 | v279c v262 자동 경로로 대체 | IG ai_read_삭제.md |
| T-IG-V279C-AUTO-V262-RESTORE-001 | [완료] | IG↔WS | test_ext_auto_v262_exact_restore_v279c.js, test_ext_auto_target_completion.js, 실제 Chrome·Windows 사용자 확인 | v262 Side snapshot MP4/JPG 자동 direct 복원 | 자동 자산은 mp4/jpg만, WS8771 direct, 실제 파일 또는 중복 후처리 성공 때만 완료 | OK | 정적·VM OK, 사용자 연속 실행에서 실제 MP4/JPG 경로·WS direct·자동종료 확인 | v279cc URL 이동 회귀에서 유지 | IG ai_read_완료.md |
| T-IG-V279CC-NAV-UNLOAD-READY-001 | [폐기] | IG | test_ext_navigation_unload_guard_v279cc.js, 실제 Chrome | 기존 탭 URL 재사용·지속 unload guard | 중간 다계정 자동완료와 파일 저장 | FAIL | 중간 전환은 성공했으나 자동종료 후 클릭 응답 없음·unload 경고 재발 | v279d 새 탭 교체로 대체 | IG ai_read_삭제.md |
| T-IG-V279D-TAB-REPLACE-001 | [완료] | IG | test_ext_tab_replacement_v279d.js, test_ext_navigation_unload_guard_v279cc.js, 실제 Chrome | 새 탭 준비 후 이전 자동 탭 종료 | 새 비활성 탭 ready→활성화→이전 tab_id 종료, 다음 계정·다운로드 계속 | OK | CDP:O 2계정·3계정, 파일 18/18, 자동종료 확인 | v280 OWNER 인계 회귀 유지 | IG ai_read_완료.md |
| T-IG-V280-TAB-OWNER-001 | [검증대기] | IG | test_ext_tab_control_v280.js, test_ext_tab_replacement_v279d.js, 실제 Chrome | 최근 탭 이력·OWNER 2단계 인계·Main 진단 | 새 tab_id 세션 반영→OWNER commit→이전 탭 종료, 최근 20개·generation·run_seq 표시 | OK | 정적 회귀 OK, CDP:X→O 실제 인계 미확인 | CDP:X→O 및 CDP:O에서 3계정 연속 OWNER 인계 확인 | IG ai_read_패치.md |
| T-IG-V281-CDP-LIFECYCLE-001 | [검증대기] | Auto↔IG | IG_StYellow/test_ext_cdp_lifecycle_preload_v281.js, Auto8700/test_auto8700_module.py, 실제 Chrome | CDP 새 문서 unload 선차단·수명주기 source/stack 로그 | bootstrap target→Page.addScript→Runtime 설치→Instagram 이동, unload 차단, beforeunload/pagehide 추적, 다음 계정 계속 | OK | 정적·생성 JS 행동 모형 OK, 실제 Chrome 미확인 | CDP:O 3계정에서 CL-01~04·BLOCKED/EVENT·자동종료 확인 | ai_read_패치.md |
| T-IG-V282-UI-COMPACT-001 | [검증대기] | IG | IG_StYellow/test_ext_ui_compact_v282.js, test_ext_main_ui.js, 실제 Chrome | MAIN 진단 단일화·정적 복사 패널·SIDE 1부터 | CDP/탭/OWNER 한 줄, 클릭 전체 복사, _/□, 자동 재렌더링 없음, 0/N에서만 1부터 활성·클릭 시 1/N | OK | 정적 회귀 OK, 실제 Chrome 배치·클립보드·선택 유지·버튼 상태 미확인 | MAIN 복사/축소/상세와 Side 0→1·1 이상/실행 중 비활성 확인 | ai_read_패치.md |
| T-IG-V286-AUTO-FRESH-TAB-CDP-CLOSE-001 | [검증대기] | IG↔Auto | IG_StYellow/test_ext_auto_fresh_tab_cdp_close_v286.js, Auto8700/test_auto8700_module.py, test_verification_checklist.py, 실제 Chrome·Windows | 자동 시작 fresh tab·Explore snapshot 차단·exact CDP target 강제 종료 | 0/N 목록1 새 탭, 사용자 탭 보존, 이전/오류/마지막 auto target 제거, 자동 WS·수동 다운로드 회귀 | OK | 실제 자동 2계정·이전/마지막 target·12파일 OK, 오류 탭·수동 경로 미확인 | 오류 탭 강제 종료와 수동 다운로드 실제 검증 | ai_read_패치.md |

| T-IG-V286-WIN-AUTO-001 | [완료] | IG↔Auto↔WS | 실제 Windows 로그 20260804_190432/190441 | 계정별 fresh tab·이전/마지막 target 종료·자동 WS 파일 | 2계정 6게시물 12파일, TC-02 두 번, 자동종료 | OK | - | 오류 탭·수동 경로 별도 회귀 | ai_read_완료.md |
| T-ANALYZE-V287-UI-001 | [검증대기] | Analyze↔Shared | Analyze8780/test_analyze8780_module.py, test_analyze8780_ui.js, Shared/test_shared_storage.py, 실제 Windows | DB 선택·전체 계정 검색·50/100/200/10000 페이지·ApexCharts 최근50 | 정적/단위 OK, 실제 DB 전환·400개 페이지·hover tooltip 화면 확인 | OK | 실제 Windows UI 로그 없음 | 8780에서 DB 2개·400개 게시물·네 검색 규칙·차트 hover 확인 | Analyze ai_read_패치.md |
| T-ANALYZE-V288-LIKE-DB-001 | [검증대기] | Analyze↔Shared | Analyze8780/test_analyze8780_module.py, test_analyze8780_ui.js, Shared/test_shared_storage.py, 실제 Windows | raw LIKE·계정 헤더·✓·DB 번호 단일 클릭 | `tem%` 즉시 결과, social_accounts 검색/전체, quick_check OK, select/번호/활성 DB 일치 | OK | 코드·HTTP OK, 실제 브라우저 단일 클릭·입력 동작 로그 없음 | 8780에서 `tem%`·✓·DB 1..N 한 번 클릭 확인 | Analyze ai_read_패치.md |
| T-ANALYZE-V288-MEDIA-OPEN-001 | [검증대기] | Analyze↔Shared | Analyze8780/test_analyze8780_module.py, 실제 Windows | 저장 폴더·MP4/JPG 원본 열기 | 허용 root 폴더 탐색기, localhost inline MIME, MP4 Range 206 | OK | 단위 launcher·HTTP Range OK, 실제 Windows 탐색기·Chrome 재생 미확인 | 폴더·MP4·JPG 클릭 확인 | Analyze ai_read_패치.md |
| T-ANALYZE-V288-POST-DELETE-001 | [검증대기] | Analyze↔Shared | Analyze8780/test_analyze8780_module.py, 실제 Windows | 게시물 개별 DB·통계·미디어 삭제 | posts/FK 통계/media_assets/실제 파일 삭제, 공유 경로 차단, 재다운로드 가능 | OK | 임시 DB·파일 OK, 실제 D:\_StDown 삭제·재다운로드 미확인 | 실제 게시물 1건 삭제 후 파일·DB·재다운로드 확인 | Analyze ai_read_패치.md |
| T-ANALYZE-V289-CHART-001 | [검증대기] | Analyze8780 | Analyze8780/test_analyze8780_ui.js, 실제 Windows | 차트 결측 null·기간·기록 수·Y축 설정 | 정적 JS OK, 실제 결측 선 단절과 설정 반영 | OK | 실제 브라우저 로그 없음 | null 포함 게시물에서 선 단절·기간·Y축 확인 | Analyze ai_read_패치.md |
| T-ANALYZE-V289-MEDIA-001 | [검증대기] | Analyze8780↔Shared | Analyze8780/test_analyze8780_module.py, test_analyze8780_ui.js, 실제 Windows | 로컬 JPG 우선·MP4 재생·파일/폴더 열기 | API/정적 계약 OK, 실제 카드 재생·탐색기 확인 | OK | 실제 Windows 브라우저 로그 없음 | JPG/MP4/둘 다 카드와 탐색기 확인 | Analyze ai_read_패치.md |

| T-AUTO-V291-SEEN-JPG-001 | [검증대기] | Auto8700↔Shared↔Analyze8780 | Auto8700/test_auto8700_module.py, 실제 Chrome·Windows | 이미 본 현재 게시물 JPG response body 자동 저장 | currentSrc=응답 URL, JPEG 완전성, 재요청 없음, _StDown 파일·SQLite 등록·8780 표시 | OK | 정적·단위만 OK, 실제 Chrome 응답 body·화면 연결 미확인 | 게시물 1개 열기 후 JPG 파일·DB·8780 카드 확인 | ai_read_패치.md |

| T-THUMB-292-01 | [완료] | IG_StYellow/Auto8700 | test_ext_auto_thumbnail_settings_v292.js, test_auto8700_module.py | 2단계 설정 기본값과 8707 매핑 | JS OK, Python 28 passed | OK | 실제 Chrome 검증 | ai_read_패치.md |
| T-THUMB-292-02 | [검증대기] | Auto8700 | 실제 Windows 실행 | Explorer 차단, 단일/프로필/프로필 릴스 허용 | _StDown 파일 이벤트 확인 | UNKNOWN | 사용자 실행 로그 확인 | ai_read_패치.md |
| T-THUMB-293-01 | [검증대기] | IG_StYellow | test_ext_auto_thumbnail_settings_v293.js, 실제 Chrome | 톱니바퀴 자동 섬네일 2단계 설정 표시·저장·복원 | 탭 표시, 기본값, 전체 OFF 하위 비활성, Save 후 재열기 값 유지, 8707 전달 | OK | 정적 40개 OK, 실제 Chrome UI 로그 없음 | 톱니바퀴에서 값 변경·Save·재열기 및 local.json 확인 | ai_read_패치.md |

| T-CACHE-001 | [코드반영] | Cache8701 | test_cache8701_module.py | URL·페이지·메타 파싱 | pytest OK | UNKNOWN | Windows CDP 실행 검증 | Cache8701/ai_read_패치.md |
| T-CACHE-002 | [검증대기] | Cache8701+IG | test_ext_cache8701_bridge_v294.js | Side→8701 전달 | Node OK + CI-01 로그 | UNKNOWN | 실제 Side 수집 실행 | Cache8701/ai_read_패치.md |
| T-CACHE-003 | [검증대기] | Cache8701 | test_cache8701_module.py | CDP body→파일 저장 | CI-02~CI-06 + pmonit 생성 | UNKNOWN | 실제 Chrome 검증 | Cache8701/ai_read_패치.md |
| T-CACHE-004 | [검증대기] | Auto8700↔Cache8701 | test_auto8700_module.py, test_cache8701_module.py, 실제 Windows | 실제 CDP 포트·flattened 독립 session | `/api/cdp/connection` port=8700, generation 안정, CI-02 session, target 교체 재연결 | OK | 정적만 OK, 실제 Chrome session 로그 없음 | CI-00~CI-06와 owner 교체 로그 확인 | Cache8701/ai_read_패치.md |
| T-CACHE-005 | [검증대기] | Cache8701↔Shared | Cache8701/test_cache8701_module.py, Shared/test_shared_storage.py, 실제 Windows | shortcode+실제확장자 저장·중복 DB 등록 | 정적 OK, CI-06 db/post_id/asset_id/file 및 신규 파일명 실제 확인 | OK | Windows 신규 v296 로그 없음 | 신규 이미지 1건 CI-05·CI-06와 파일명 확인 | Cache8701/ai_read_패치.md |
| T-ANALYZE-V296-LOCAL-001 | [폐기] | Analyze8780↔Shared | v296 이전 테스트 | legacy 파일 DB 복구·숫자 asset URL 표시 | v297 shortcode 가상 경로로 대체 | SKIP | `_thumbnail`·`_auto_seen` 자동복구와 asset id URL 폐기 | v297 회귀 금지 유지 | Analyze8780/ai_read_삭제.md |
| T-ANALYZE-V297-STDOWN-VIRTUAL-001 | [검증대기] | Analyze8780↔Shared | Analyze8780/test_analyze8780_module.py, test_analyze8780_ui.js, Shared/test_shared_storage.py, 실제 Windows | `_StDown/instagram` 가상 경로·shortcode 실제확장자 자동 발견·숫자 asset URL 제거 | 정적/단위 OK, 실제 이미지·MP4·경로복사·Explorer 파일 선택 확인 | OK | 실제 Windows UI 로그 없음 | 8780 갱신 후 `/_StDown/instagram/...` src·경로 복사·폴더 열기 확인 | Analyze8780/ai_read_패치.md |

| T-V303-CDP-STATE-001 | [검증대기] | IG_StYellow↔Auto8700 | test_ext_v303_core_regression.js, test_auto8700_module.py, 실제 Chrome | Side/Background CDP 상태 원본·Main 표시 전용 | 정적 OK, 새로고침·URL 이동 후 1초 이내 O 및 실제 통신 실패 때만 X | OK | 실제 Chrome 로그 없음 | 새로고침·URL 이동·CDP 종료/복구 로그 확인 | ai_read_패치.md |
| T-V303-CACHE-IMAGE-001 | [검증대기] | IG_StYellow↔Cache8701↔Shared | test_ext_v303_core_regression.js, test_cache8701_module.py, test_shared_storage.py, 실제 Windows | Cache Image 실제확장자 저장·SQLite·최소 index·Video 독립 | 정적 OK, 실제 파일·DB·8780 표시 확인 | OK | 실제 Windows 신규 저장 로그 없음 | Cache Image 1건 신규/중복 실행 | ai_read_패치.md |
| T-V303-SWIPE-DATE-001 | [검증대기] | IG_StYellow | test_ext_v303_core_regression.js, 기존 자동 회귀, 실제 Chrome | 기존 대상 0개 Swipe·날짜 경계·다음 URL | 정적 OK, 날짜 범위 안 Swipe 지속 후 경계에서 다음 URL | OK | 실제 Chrome 대상 0개 로그 없음 | 3계정 조건 0개 시나리오 실행 | ai_read_패치.md |
| T-V303-EXPLORER-CLICK-001 | [검증대기] | IG_StYellow | test_ext_v303_core_regression.js, 실제 Chrome | EXT 전후 Explorer 검색 섬네일 기본 이동 | 원본 href·기본 클릭 유지, 게시물 페이지 이동 | OK | 실제 Chrome 클릭 로그 없음 | EXT 로딩 전/후 각각 섬네일 클릭 | ai_read_패치.md |
| T-CACHE-V304-OWNER-ACTIVE-001 | [검증대기] | Cache8701↔Auto8700 | Cache8701/test_cache8701_module.py, 실제 Windows | 비활성 OWNER 상태 Cache Image 감시 유지 | owner_active=false여도 cdp_alive+targets이면 CI-02 session 유지, 신규 파일·SQLite 처리 | OK | 정적 테스트 OK, 실제 Windows 신규 저장 로그 없음 | OWNER 비활성 상태에서 신규 이미지 1건 CI-01~CI-06 확인 | Cache8701/ai_read_패치.md |
| T-CACHE-V304-FILE-LOG-001 | [검증대기] | IG↔Cache8701 | IG_StYellow/test_ext_cache8701_logging_v304.js, Cache8701/test_cache8701_module.py, 실제 Windows | `8701에 로깅` 선택·실행별 단일 파일·20개 회전 | 체크 ON 시 새 로그 파일, 20개 기존 상태에서 오래된 1개 삭제 후 총 20개, CI-00~CI-06 기록 | OK | 정적 테스트 OK, 실제 Windows 로그 파일 미확인 | 설정 ON→Cache 재시작→파일 생성·21회 실행 회전 확인 | Cache8701/ai_read_패치.md |

| T-CACHE-305-01 | [코드반영] | Cache8701 | test_cache8701_module.py | tab_id별 관찰·매칭 격리 | 교차 탭 매칭 0건 | OK | 실제 Windows Showing 10 검증 |
| T-IG-305-01 | [코드반영] | IG_StYellow | test_ext_cache8701_bridge_v294.js | Showing A 자동전송·리스트 시작·복사 | 정적 회귀 통과 | OK | Chrome 실검증 |
| T-AUTO-FILE-RESTART-DEBOUNCE-001 | [코드반영] | Auto8700 | Auto8700/test_auto8700_module.py, 실제 Windows 로그 | 소스 변경 마지막 시각 + 3초 서비스별 1회 재실행 | 같은 서비스 연속 변경은 worker 1개·deadline 갱신·재실행 1회, 다른 서비스는 병렬 worker | OK | 정적 35 passed, 실제 Windows 연속 저장/병렬 재실행 미확인 | 같은 파일 연속 저장과 WS/Cache 동시 변경 로그에서 AR-01~03 확인 | Auto8700/ai_read_패치.md |
| T-IG-V307-STOP-DISPLAY-001 | [코드반영] | IG_StYellow | test_ext_side_reread_restart_ui.js, 실제 Chrome | 사용자 자동 중단 시 이전 진행 표시 보존 | 중단 직전 현재주소/전체목록/집계 유지 + 마지막 줄 `⛔ 자동 중단`, 사유/이어하기 덮어쓰기 없음 | OK | 정적 회귀 OK, 실제 Side 중단 화면 미확인 | 자동 실행 중 중단 후 복사 내용 확인 | IG_StYellow/ai_read_패치.md |
| T-ACCOUNT-MOD-DBLCLICK-001 | [코드반영] | IG | test_ext_account_queue_modifier_doubleclick_v307.js, 실제 Chrome | 수집계정 줄 modifier 더블클릭 열기 | Shift=새창, Ctrl=새탭, 일반 더블클릭 유지, 클릭한 username URL 일치 | OK | 실제 Chrome 미확인 | 서로 다른 계정 줄 Shift/Ctrl 더블클릭 검증 | IG ai_read_패치.md |

| T-CDP-V307-FINAL-O-001 | [완료] | Auto8700↔IG_StYellow | Auto8700/test_auto8700_module.py, IG_StYellow/test_ext_cdp_final_gate_v307.js, 실제 Chrome | CDP 최종 O·EXT 최초 1회 refresh | Runtime.evaluate=2 → EXT reload 1회 → 현재 Page.reload 1회 → EXT/content manifest version 일치 후에만 O | OK | 실제 Windows CR-01~03·EXT/content v307·CDP:O 확인 | 회귀 유지 | Auto8700/ai_read_패치.md, IG_StYellow/ai_read_패치.md |
| T-VERSION-V307-MANIFEST-001 | [완료] | IG_StYellow↔Auto8700↔Cache8701 | manifest.json, test_ext_module.js, test_auto8700_module.py, test_cache8701_module.py | 화면·복사·서비스 버전 manifest 동기화 | manifest 2.3.8.3070/2.3.8.307, 탭 제어·Content·Side 전역 버전, Auto/Cache 2.3.8.307 | OK | 실제 Side 복사 화면 v307 + EXT/content v307 확인 | 회귀 유지 | ai_read_패치.md |
| T-CDP-V308-EXT-INSTALL-001 | [코드반영] | Auto8700↔IG_StYellow | Auto8700/test_auto8700_module.py, 실제 Chrome | EXT 설치 여부·프로젝트 경로 교정·최초 reload | 미설치=loadUnpacked, 경로불일치=uninstall+loadUnpacked, 동일경로=유지, 이후 reload 1회·버전검증 후 O | OK | 단위 38 passed, 실제 Chrome 미확인 | 미설치/폴더이동/동일경로 3케이스 CR-01~04 확인 | Auto8700/ai_read_패치.md |
| T-UI-V309-AUTO-SQUARE-001 | [코드반영] | Auto8700 | Auto8700/test_auto8700_module.py, 실제 Windows | `_` 34x34 보라색 `ㅁ` 최소창 | `_`→ㅁ 하나, ㅁ→전체 UI, 기존 520px compact 없음 | OK | 정적 OK, 실제 Windows 미확인 | 실제 `_`/ㅁ 왕복과 위치 보존 확인 | Auto8700/ai_read_패치.md |
| T-UI-V309-TRAY-001 | [코드반영] | Auto8700↔WS8771↔Shared | Auto8700/test_auto8700_module.py, WS8771/test_ws8771_module.py, Shared/test_shared_windows_tray.py, 실제 Windows | `.` 시스템 Tray 이동·복원 | Tray icon 생성 성공 후 화면 숨김, icon 클릭 복원, X 종료 시 icon 정리, 실패 시 화면 유지 | OK | 정적/단위 OK, 실제 Windows 미확인 | Auto/WS 각각 `. → Tray → 복원 → X` 확인 | ai_read_패치.md |
| T-UI-V310-TRAY-ICON-001 | [코드반영] | Shared↔Auto8700↔WS8771↔RTC8790_8791 | Shared/test_shared_windows_tray.py, RTC8790_8791/test_rtc8790_tray_startup_v310.py, 실제 Windows | EXT 기반 공용 Tray 아이콘 | 공용 ICO 존재, 3개 앱 icon_path 일치, 파일 아이콘 로드, fallback 안전 | OK | 정적/단위 OK, 실제 Windows 아이콘 미확인 | Auto/WS/RTC Tray 아이콘 육안 확인 | ai_read_패치.md |
| T-RTC-V310-TRAY-START-001 | [코드반영] | RTC8790_8791↔Shared | RTC8790_8791/test_rtc8790_tray_startup_v310.py, 실제 Windows | RTC 실행 즉시 Tray 숨김·복원 | 시작 메인창 미노출, Tray 성공 시 숨김 유지, 실패 시 창 표시, 클릭 복원, `.` 재숨김, X cleanup | OK | 정적/단위 OK, 실제 Windows 미확인 | RTC 실행→Tray→복원→재숨김→X 확인 | RTC8790_8791/ai_read.md |
| T-IG-V311-SHUFFLE-001 | [코드반영] | IG_StYellow | IG_StYellow/test_ext_account_shuffle_v311.js, 실제 Chrome | 수집계정 수동 `섞기`·완전 다른 순서·이력 저장 | 2개 이상 순서 변경, 기존 순서와 다름, Chrome storage history 누적, dirty 표시 | OK | 정적 OK, 실제 Chrome 미확인 | 3계정 이상에서 연속 3회 섞기·storage history 확인 | IG_StYellow/ai_read_패치.md |
| T-IG-V311-AUTO-SHUFFLE-001 | [코드반영] | IG_StYellow | IG_StYellow/test_ext_account_shuffle_v311.js, 실제 Chrome | `자동섞기` 1/N 시작 직전 1회 | 1/N 새 시작=섞기 후 1번 시작, 0/N·2/N·continuation=미실행 | OK | 정적 OK, 실제 Chrome 미확인 | 자동섞기 ON으로 1/3·2/3 각각 시작해 AS-SH-01 확인 | IG_StYellow/ai_read_패치.md |
| T-IG-V311-DBG-CONSOLE-001 | [코드반영] | IG_StYellow | IG_StYellow/test_ext_account_shuffle_v311.js, 실제 Chrome Console | 반복 `[IG_DBG]` 콘솔 출력 억제 | Side/Content/Background/Main IG_DBG console gate OFF, snapshot 저장 유지 | OK | 정적 OK, 실제 Console 미확인 | Instagram 1분 관찰해 반복 `[IG_DBG]` 미출력 확인 | IG_StYellow/ai_read_패치.md |
| T-IG-V312-EXPLORE-SCROLL-001 | [완료] | IG_StYellow | IG_StYellow/test_ext_explore_clips_scroll_v312.js, 실제 Chrome | Explorer Swipe/scroll 후 clips medias metadata 수집 | fill_items·one_by_two 유지 + medias[].media·medias[].clips.items 수집, 새 카드 overlay 연속 적용 | OK | 사용자 실제 Chrome Swipe/scroll 인젝션 확인 OK | 회귀 유지 | IG_StYellow/ai_read_패치.md |
| T-EXT-313 | [검증대기] | IG_StYellow | test_ext_side_random_delay_schedule_v313.js | 썸네일100·섞기 유지·JPG일반저장폐기·랜덤초·방식1/2숨김·예약랜덤분 | 정적 회귀 OK + 실제 Chrome 실동작 확인 | OK | 실제 Chrome 검증 | ai_read_패치.md |
| T-EXT-314 | [검증대기] | IG_StYellow | test_ext_side_hidden_modes_v314.js, 실제 Chrome | 다운로드 방식1/2 d-none 강제 숨김 + v313 Side 기능 보존 | 방식1/2 DOM 유지·항상 비표시, 섞기/자동섞기·썸네일100·랜덤초/분 유지 | OK | 실제 Chrome 검증 | Side 상태 갱신/재열기 뒤 방식1/2 비표시 확인 | IG_StYellow/ai_read_패치.md |
| T-IG-V315-MANUAL-MP4-001 | [폐기] | IG_StYellow | 실제 Chrome, v315 회귀 | PY/WS 미실행 Background Chrome filename fallback | 사용자 실제 확인에서 CDN 토큰 기본명/무확장 발생으로 폐기 | FAIL | v315 실제 Chrome에서 무확장·긴 토큰명 재현 | v316 원래 MAIN injection downloader로 대체 | ai_read_삭제.md |
| T-IG-WS-V315-EDIT-COPY-001 | [폐기] | IG_StYellow↔WS8771 | 실제 Windows v315 | WS worker/thread-direct FolderBrowserDialog 편집폴더 선택 | 실제 picker가 보여야 함 | FAIL | 사용자 실제 Windows에서 폴더 선택창 미표시 | v316 Tk GUI main-thread picker로 대체 | ai_read_삭제.md |
| T-IG-V316-MANUAL-ORIGINAL-001 | [검증대기] | IG_StYellow | test_ext_manual_offline_original_download_v316.js, test_ext_edit_copy_manual_filename_v315.js, 실제 Chrome | PY/WS 미연결 수동 원래 injection 다운로드 | WS 미연결이면 Background가 파일명 저장하지 않고 MAIN fetch/Blob/a.download, Video 기본 `shortcode.mp4`; 자동은 fallback 금지 | OK | 정적 회귀 OK, 실제 Chrome 미확인 | 모든 PY/WS 종료 후 Explorer/프로필/Reels Video 수동 클릭 확인 | IG_StYellow/ai_read_패치.md |
| T-IG-WS-V316-EDIT-COPY-001 | [폐기] | IG_StYellow↔WS8771 | v316 구현 | 자동종료 다중 편집폴더 복사 | 사용 목적과 불일치하여 폐기 | FAIL | 편집 대상은 수동으로 고른 1개인데 자동 여러 개 누적 기준으로 잘못 구현 | v317 수동 1건 기준 사용 | ai_read_삭제.md |

| T-IG-V317-GLOBAL-HIGHLIGHT-001 | [코드반영] | IG_StYellow | test_ext_manual_download_global_highlight_v317.js | Side 닫힘 상태 수동 다운로드 강조·완료 `다운` | active 설정은 Chrome storage만 사용, 수동 start에 shortcode/asset 포함, offline MAIN도 상태 발생 | OK | 실제 Chrome 미확인 | Side 닫고 수동 MP4 실제 확인 | IG_StYellow/ai_read_패치.md |
| T-IG-WS-V317-MANUAL-EDIT-COPY-001 | [완료] | IG_StYellow↔WS8771 | test_ext_edit_copy_manual_filename_v315.js, WS8771/test_ws8771_module.py | 수동 MP4 1건 완료 직후 편집폴더 picker/복사 | 체크 ON + MANUAL_SINGLE + WS 저장 완료 → 방금 MP4 하나 → Tk main-thread picker → copy2 | OK | 사용자 실제 Windows: 수동 MP4 다운로드→picker→선택→1건 복사 OK | 회귀 유지 | ai_read_패치.md |

| T-IG-V318-EDIT-FOLDER-OPEN-001 | [코드반영] | IG_StYellow↔WS8771 | IG_StYellow/test_ext_edit_folder_open_runtime_v318.js, 실제 Windows | picker 선택 후 `편집폴더 열기` 활성/재오픈 복원 | picker 성공 target_folder→chrome.storage.session→Side 활성, 클릭→ig_open_folder | OK | 정적 회귀 OK, 실제 버튼 클릭 미확인 | 수동 MP4→picker 선택→Side 열기 버튼 활성→클릭 같은 폴더 확인 | IG_StYellow/ai_read_패치.md |
| T-WS-V319-EDIT-OPEN-PROMPT-001 | [코드반영] | WS8771↔IG_StYellow | WS8771/test_ws8771_edit_folder_open_prompt_v319.py, WS8771/test_ws8771_module.py, IG_StYellow/test_ext_edit_folder_open_runtime_v318.js, 실제 Windows | 수동 MP4 편집복사 완료 후 `폴더를 열까요?` 확인/취소 + Side 버튼 공존 | picker→1건 copy2 성공→askyesno; 확인=ig_open_folder, 취소=무동작; target_folder 응답 유지 | OK | 정적/단위 회귀 OK, 실제 Windows 팝업 미확인 | 확인/취소 각각 실행 후 Side `편집폴더 열기` 확인 | ai_read_패치.md |

| T-DIST-V320-BUILD-META-001 | [코드반영] | AutoDistribute | AutoDistribute/test_autodistribute.py | 정수 build·local/server `_St_ver.html`·SHA256·ZIP-first/meta-last 업로드 | build 역행 없음, ZIP hash 일치, WinSCP put 순서 정확 | OK | 실제 v4 서버 meta 업로드 미확인 | 실제 v4 배포 후 HTTP `_St_ver.html` 확인 | ai_read_패치.md |
| T-AUTO-V320-UPDATE-001 | [코드반영] | Auto8700 | Auto8700/test_auto8700_update_v320.py | 시작 build 비교·publisher skip·TEMP updater | server>local만 UPDATE, local-newer/PUBLISHER는 다운로드 금지, SHA256/path 검증 | OK | 실제 사용자 Windows 적용 미확인 | server build 상승 테스트 | Auto8700/ai_read_패치.md |
| T-AUTO-V320-WIN-E2E-001 | [검증대기] | Auto8700↔Server | 실제 Windows UP-01~UP-08 로그 | 사용자 자동업데이트 전체 흐름 | 다운로드→검증→Auto 종료→overlay→새 Auto 재실행→local build 일치 | UNKNOWN | 실제 새 build 배포 후 실행 필요 | 일반 사용자 PC에서 1회 실제 업데이트 | Auto8700/ai_read_패치.md |
| T-IG-V321-SETTINGS-OPEN-001 | [폐기] | IG_StYellow | test_ext_settings_open_without_target_v321.js | target 비의존 설정열기 가정 | 실제 원인이 아니므로 폐기 | FAIL | v319 전역 선언 accidental deletion이 실제 원인 | v322 복원 회귀 사용 | IG_StYellow/ai_read_삭제.md |
| T-IG-V322-SETTINGS-MODAL-001 | [완료] | IG_StYellow | test_ext_settings_modal_restore_v322.js, 실제 Chrome | v317 설정 전역 복원·톱니 클릭 Settings 모달 | 복원 전역 존재, v317 handler 유지, T() 실행 후 settingsModal 생성, 실제 Chrome 표시 | OK | 사용자 실제 Chrome v322 Settings 정상 표시 확인 | 회귀 유지 | ai_read_완료.md |

| T-IG-V323-MANUAL-JPG-001 | [완료] | IG_StYellow | test_ext_jpg_manual_original_v323.js, 실제 Chrome 사용자 확인 | Side/Main 수동 JPG 원래 브라우저 저장 | WS8771 direct/자동집계 미사용 + MAIN fetch/Blob/a.download | OK | - | 회귀 유지 | ai_read_완료.md, IG_StYellow/ai_read_완료.md |
| T-IG-V323-AUTO-MP4-ONLY-001 | [검증대기] | IG_StYellow↔Cache8701 | test_ext_jpg_manual_original_v323.js, 실제 Chrome | 자동 MP4-only·JPG Cache 전담 | 자동 kinds/loop/UI/ETA에 JPG 없음, JPG 자동 저장은 Cache8701 | OK | Node 회귀 OK, 실제 v323 자동 MP4-only 화면 미확인 | 2계정 Top1에서 MP4 2개만 집계·자동종료 확인 | ai_read_패치.md, ai_read_삭제.md |
| T-AUTO-V324-HOURLY-UPDATE-001 | [검증대기] | Auto8700↔Server | Auto8700/test_auto8700_update_hourly_v324.py, 실제 Windows 로그 | 시작 1회 + 매 정시 build 확인 | 다음 HH:00 예약, source=hourly, publisher skip, server>local만 updater 후 정상종료 | OK | 단위 6개/전체 pytest 157 passed, 실제 정시 Windows 로그·새 build 적용 미확인 | 다음 정시 UP-H-00→UP-01/02 확인, 일반 사용자 새 build 1회 적용 | Auto8700/ai_read_패치.md |

완료: 63 / 전체: 186 = 34%
