POSA_Copyrighter/docs/INDEX.md
changukyu 76a06f2ff1 docs: CLAUDE.md / PROJECT_MAP 신설, 7/11 체크리스트 재확인
세션 진입 문서가 없어 41.6k 라인 · 70모듈 구조를 매번 재발견하고 있었다.

- CLAUDE.md: 진입점 + 이 프로젝트에만 해당하는 규칙(폐쇄망 의존성 금지,
  app-*.js 로드 순서 계약, SCORER_VERSION 갱신 의무, 직렬화 라운드트립 불변식,
  LLM 은 실모델로 프로브, cp949 비ASCII 출력 주의)
- docs/PROJECT_MAP.md: 파일·라우트·스키마 위치, app-*.js 로드 순서, 알려진 부채
- README: verify 명령, app-*.js 구조, 인증 스로틀 동작 설명

7/11 리메디에이션 체크리스트를 코드와 대조해 갱신했다. 미체크 항목 중 6건은
이미 수정돼 있었고(naver 멀티페이지 쿼터, #10 Origin/Referer CSRF, env_file
BOM, daily-limit fail-open, __main__ 경로 앵커링, 그리고 Batch 8 전체가
Batch 6 과 중복) 각 줄에 확인 근거를 남겼다. 남은 미체크는 전부 근거가 기재된
명시적 연기다.
2026-08-08 09:49:55 +09:00

5.6 KiB

Project INDEX

  • 2026-08-08 · 프로젝트 분석 후 인프라·구조·보안 정비 — 원격 백업 복구(20커밋이 로컬에만 있었음: main 2 + 작업브랜치 18 → Forgejo push), 단일 verify 게이트 신설(verify.ps1 + pytest.ini + ruff.toml, ruff 0.12.0 dev 핀; 린트 18건 정리), app.js 5,428줄 → app-*.js 15개 분할(순수 라인범위 추출로 바이트 단위 라운드트립 검증, 로드 순서를 정적 테스트로 고정), 보안 2종 실수정(SSRF DNS-rebinding TOCTOU — 단일 DNS 해석 후 그 답변으로만 연결하는 _guarded_create_connection; 실패 인증 스로틀 — 자격증명 제시 실패만 10회/60초, 429+Retry-After), 7/11 체크리스트 재확인(6건은 이미 수정돼 있던 낡은 항목, Batch 8 은 Batch 6 과 중복이라 정리), CLAUDE.md·docs/PROJECT_MAP.md 신설. E2E 플레이크(업로드 대기 10초 → UPLOAD_ANALYSIS_TIMEOUT_MS 30초) 해소. pytest 562 passed(착수 전 533/1 failed), 린트 클린. 실렌더 확인: 큐·케이스 심사 정상 렌더, 스크립트 15개 전부 200, 새로고침 후 콘솔 메시지 0

  • 2026-07-24 · 멀티에이전트 프로젝트 점검(에이전트 109, 적대적 검증 포함) — pytest 377/379, 런타임 스모크 9/9 통과, 신규 CONFIRMED 43건(HIGH 7) + 7/11 체크리스트 중 3건 실수정 확인 + 기능 제안 상위 5 선정 → docs/reviews/2026-07-24-project-review.md

  • 2026-07-26 · 운영자 콘솔 실렌더 검증 + 결함 5종 수정 (d20e6d6) — 서버 기동 불가(cp949에서 em-dash UnicodeEncodeError로 프로세스 사망, 납품 환경 치명) · 요약이 모델이 못 본 78건을 "연결 근거"로 주장(B단계가 절반만 막았음) · grounded/droppedClaims 미영속화 · app.js가 서버 그룹 분류를 자체 매핑으로 덮어씀 · 기본 모델이 클라이언트/배선에서 불일치(미설치 모델 지목). 실렌더 확인: 출처 표기 그룹 자체 섹션 렌더, [E1,E2...] 인용 2단 요약, sourceIds 78→10, qwen2.5:7b 6.0초. pytest 534 passed

  • 2026-07-25 · C단계: 출처 신호 2종 (5a9fcc0) — EXIF/IPTC 권리 표기 추출(화이트리스트 6필드, GPS·시리얼·Make/Model 미판독) + 방송캡처 포렌식(레터박스·자막밴드·프레임크기, 독립 카테고리 2개 이상). 하나의 EvidenceSource.PROVENANCE·하나의 GUI 그룹으로 배관 12곳 비용 1회 지불. 둘 다 0점 라벨(캘리브레이션 전). 실측: 실제 이미지 6장에서 캡처 오탐 0·권리메타 히트 0(정밀도 확인, 가치는 이 코퍼스에서 미입증). XMP/C2PA는 defusedxml 미반입으로 제외. pytest 531 passed

  • 2026-07-25 · 실모델 프로브로 형식 예시 반향 결함 발견·차단 (6bbaaf6) — qwen2.5:0.5b가 프롬프트의 형식 예시를 그대로 출력하며 실제 라벨 12개를 전부 인용해 집합 포함 검사를 통과. 가짜 transport 테스트로는 불가능한 발견. 기본 모델을 실측으로 qwen2.5:7b 확정(0.5b 55.7s 계약위반 / 7b 8.8s 준수 / qwen3:8b 35.7s 준수)

  • 2026-07-25 · B단계: LLM을 요약기에서 증거 판독기로 (6be263a) — 입력 화이트리스트 9필드+상위 12건 상한(promotion_reason 제외), format=json 구조화 인용 + 라벨 집합 포함 검사로 미인용 claim 폐기, 기본 모델 0.5B→3B 및 num_ctx/num_predict/keep_alive/timeout 노출, 시드 LLM 호출을 _write_lock 밖으로(시드당 20건 상한). 잠금 이동이 만든 provider 커버리지 회귀(요약 존재하는데 not_run 보고)를 나레이션 후 재계산으로 수정. pytest 515 passed

  • 2026-07-25 · 실사용 투입 전 T0 4종 + 임베딩 정책 개정 구현 — (T0-1) initialRiskScore/initialRiskBand/scorerVersion 각인, (T0-2) YuNet 얼굴검출 교체 + 인물 등급(identifiable/background) 도입 및 라운드트립 보존, (T0-3) 판정 시점 피처 스냅샷(라벨 순환 차단), (T0-4) 모델·프롬프트 버전 + latency_ms 스탬프. Scene Embedding Policy 신설로 임베딩 금지 범위를 생체 식별로 축소(얼굴 임베딩 금지는 landmark·descriptor 추가로 강화). YuNet 가중치는 models/(gitignore) + offline-install.md에 sha256 반입 절차. pytest 502 passed(착수 전 463). 실측: 6장 기준 검출 378ms(YuNet) vs 654ms(Haar), 2장에서 등급 판정이 갈림

  • 2026-07-25 · AI 기능 확장 브레인스토밍(에이전트 14: 5렌즈 발산 30건 → 적대적 실현가능성 검증 6건 REFUTED → 심사 3인 채점) — 1위 「LLM 예산·계측·입력 경계」 7.90(만장일치). 검증 중 실측으로 확인: 판정 라벨 0건·operatorStatus 292행 전부 None·밴드 high 4/medium 2/low 0(4건 100점 포화)·_perceptual_hash는 pHash가 아닌 8x8 평균해시. 문서의 WAL 미설정 주장은 검증 결과 오류로 정정(이미 적용됨) → docs/brainstorms/2026-07-25-ai-capability-expansion-brainstorm.md

  • 2026-07-24 · 위 점검의 전체 remediation + 신규 기능 5종 구현 — HIGH 7·MEDIUM 15·LOW 21 및 F1~F5(키보드 심사·일괄 판정/메모 프리셋·지문 중복 인덱스·판정 내보내기·백업 복구) 완료. cv2 환경 드리프트 복구(OpenCV 5.0.0 제거). pytest 457 passed(착수 전 377/2 failed), 실서버 스모크 및 백업 복구 왕복 검증. GUI 스펙의 "일괄 승인/반려 금지(v1)" 제약은 가드레일 조건부로 개정 이력 남기고 해제 → docs/reviews/2026-07-24-implementation-checklist.md