Skip to content

[작업] 현재 코드 전용 Node 테스트 기반을 구축한다 #9

Description

@OstenHun

현재 코드 전용 테스트 기반과 Linux + Node.js 20 필수 CI를 구축합니다. PR #10의 CI는 통과했으며 비작성자 최신-head 리뷰와 병합이 남아 있습니다. Windows PowerShell은 선택적 호환성 확인입니다.

문제

작업 시작 당시 develop@71f2069에는 typecheckbuild만 있고 자동화된 test 스크립트와 테스트 파일이 없었습니다. 이 상태에서는 PR #3·#5·#6으로 병합된 Discord·Diagnostic·YAML 전환 코드를 현재 저장소에서 반복 검증할 수 없고, #4의 집중 검증과 #7의 가짜 종단 간 검증도 공통 실행 진입점을 가질 수 없습니다.

분석

경로 A는 기존 tsx 개발 의존성과 Node 내장 node:test를 사용해 현재 코드 전용 최소 테스트 기반을 추가하는 것입니다. 새 테스트 프레임워크와 잠금 파일 변경을 피하고, Linux + Node.js 20에서 재현 가능한 필수 제품 검증을 먼저 고정할 수 있어 선택합니다. Windows PowerShell 검증은 선택적 로컬 개발 호환성 확인으로 둡니다. 테스트와 npm 명령은 PowerShell 또는 Bash 전용 문법에 의존하지 않습니다. 실패 모드는 테스트 탐색 패턴이 플랫폼별로 달라지거나 테스트가 네트워크·프로세스 환경을 암묵적으로 사용하는 것입니다.

경로 B는 Vitest 같은 별도 프레임워크를 추가하는 것입니다. 기능은 풍부하지만 지금 필요한 실행 진입점보다 의존성·설정·잠금 파일 변경이 큽니다.

경로 C는 #4와 #7이 각자 테스트 러너를 추가하는 것입니다. 초기 작업은 짧지만 중복 설정과 서로 다른 실행 의미가 생기며, #7이 선행 테스트 기반을 스스로 충족했다고 잘못 주장할 수 있습니다.

실행

  • 유형: Task
  • 필수 검토 역할: 현재 Diagnostic/YAML 경계를 이해하는 비작성자 검토자
  • 대상 브랜치: develop
  • 권장 작업 브랜치: feature/donghun-current-code-test-foundation
  • 영향을 받는 계약 또는 PRD: AGENTS.md의 필수 로컬 검증, PRD 04의 개발 순서 1과 현재 코드 전용 테스트 진입 조건
  • 파일 또는 인터페이스: package.json, tsconfig.test.json, tests/run-tests.mjs, tests/unit/**, .github/workflows/current-code-validation.yml; 기존 src/** 공개 동작은 변경하지 않음
  • 명시적 비목표: [작업] LangChain 진단 출력의 순서와 tool_call_id 참조를 보존한다 #4 출력 포트, canonical Run/Evidence/Tool Call 저장소, Report Agent/리포트/Discord 전달, 실제 원천 어댑터, PRD·스키마 변경, 실제 자격 증명 또는 제품의 외부 네트워크 호출
  • 의존성: origin/develop@71f2069의 현재 코드와 기존 tsx; #4와 독립적으로 진행하며 #7의 자동 테스트 기반 선행조건을 충족하는 작업
  • 마이그레이션 또는 롤백: 데이터·런타임 마이그레이션 없음. 실패 시 테스트 스크립트·설정·테스트 파일과 CI workflow만 되돌리며 제품 실행 경로는 유지

최소 구현 범위는 다음과 같습니다.

  • npm test가 TypeScript 테스트를 결정적으로 탐색하고 실행하며 실패 시 non-zero로 종료합니다.
  • 기존 코드의 순수 경계에서 성공과 거부 경로를 모두 검증합니다. 우선 대상은 도구 catalog parser/registry와 임시 Discord 표시·포매팅 경계입니다.
  • 테스트는 fake 또는 메모리 입력만 사용하고 OpenAI, Discord, Prometheus, Loki, AMDB Backend와 실제 네트워크를 호출하지 않습니다.
  • .claude/**, scripts/validate_skeleton.py, tests/fixtures/monitoring/**, 과거 MCP 자산을 가져오거나 성공 근거로 사용하지 않습니다.
  • 테스트를 위해 src/** 동작 변경이 필요해지면 이 이슈 범위를 자동 확장하지 않고 별도 검토합니다.

결과

  • 인수 기준:
    • Linux + Node.js 20에서 npm ci, npm test, npm run typecheck, npm run build가 모두 통과합니다. Windows PowerShell은 선택적 로컬 호환성 검증입니다.
    • 테스트 파일이 1개 이상 발견·실행되며, 의도적으로 실패시킨 표본에서 명령이 non-zero로 종료되는 탐색 검증을 기록합니다.
    • 기존 모듈의 유효 입력 성공 경로와 잘못된 입력 거부 경로가 각각 1개 이상 자동 검증됩니다.
    • 실제 자격 증명, 프로세스의 비밀정보 값, 운영 원천, OpenAI와 Discord 네트워크 호출은 0회입니다.
    • 새 런타임 의존성을 추가하지 않고 기존 tsx와 Node 내장 테스트 러너만 사용합니다.
    • npm test, npm run typecheck, npm run build가 통과하고 정확한 Node/npm/OS 환경과 실행 결과를 PR에 기록합니다.
    • [작업] LangChain 진단 출력의 순서와 tool_call_id 참조를 보존한다 #4 또는 [기능] 정본 리포트를 조립·영속화한 뒤 Discord로 전달한다 #7 구현·완료, P0 Delivery Status 승격을 주장하지 않습니다.
  • 필수 제품 검증 환경: GitHub Actions의 Linux(Ubuntu) + Node.js 20, npm ci로 잠금 파일 그대로 설치. 테스트는 실제 자격 증명과 외부 서비스 호출 없이 실행합니다. 저장소 checkout과 공개 npm 의존성 설치를 위한 네트워크는 사용합니다.
  • 선택적 로컬 호환성 검증: Windows PowerShell. 이 결과로 필수 Linux + Node.js 20 검증을 대체하지 않습니다.
  • 성공 임계값: 발견 누락 0건, 테스트 실패 은폐 0건, 실제 외부 호출 0건, 네 필수 명령 실패 0건
  • 첨부할 증거: 테스트 이름과 개수, 의도적 실패 탐색 확인, npm test·npm run typecheck·npm run build 출력, git diff --check

위험 경계

  • 위험: standard
  • 실제 자격 증명 또는 운영 환경 접근 필요: no
  • 비밀정보, 개인정보, 공개 API, 변경 작업 또는 파괴적 데이터 작업 고려사항: 테스트에서 실제 자격 증명과 외부 서비스 네트워크를 사용하지 않으며 fixture에 원시 provider/source output을 넣지 않습니다.
  • 차단 요인과 다음 차단 해제 조건: 최신 head에 대한 비작성자 검토와 develop 병합이 남아 있습니다. 병합 전에는 이 이슈를 닫지 않습니다. 구현 중 기존 src/** 변경이 필요하면 이 Task를 중단하고 별도 범위 검토가 필요합니다.

GitHub 담당자가 작업 항목 담당자입니다. Verify 전에 구체적인 비작성자 검토자를 PR에서 요청합니다.

검증 증거와 남은 완료 조건

  • 구현 PR: PR #10
  • 검증 head: 820b5e22641030c715fb2029f2f7047152a6c8b1
  • 필수 CI: Current code validation 실행 34255016082, Linux / Node.js 20 job success
  • 실제 환경: Ubuntu 24.04.4, Node v20.20.2, npm 10.8.2. npm ci, npm test(4 pass, 0 fail), npm run typecheck, npm run build 모두 통과했습니다.
  • 선택적 로컬 확인: Windows PowerShell, Node v24.13.0, npm 11.19.1에서 npm test, npm run typecheck, npm run build, git diff --check origin/develop...HEAD 통과. 샌드박스의 tsx 사용자 정보 조회 오류 후 테스트만 호스트에서 재실행했습니다.
  • 실패 전파 증거: 기존 c5400eb PR 기록의 임시 실패 테스트에서 4 pass, 1 fail, exit 1. 이번 CI 변경에서는 실패 주입을 재실행하지 않았습니다.
  • worud8457의 비작성자 최신-head 리뷰를 받습니다.
  • PR #10을 develop에 병합한 뒤 #9를 닫습니다. 자동 merge는 수행하지 않습니다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions