장기 AI 진행내역

날짜별로 무엇을 바꿨는지, 현재 라이브 페이지에 실제로 반영된 엔진이 무엇인지, 그리고 아직 미반영 상태로 남아 있는 엔진이 무엇인지 한 번에 볼 수 있도록 정리했습니다. 아래에는 지금 실제로 따라가는 멀티 계획 구조를 같이 표시합니다.

현재 진행 플랜: 메인계획 1 · 메인계획 2

메인계획 1
Stockfish/NNUE식 검색엔진 강화안
1-1~1-6 1차 구현/검증·승격 차단 완료 라이브 미승격 canonical lock: artifacts/docs/main_plan1_current_canonical_lock_v1.md 기준 문서: artifacts/docs/main_plan1_plan_a_stockfish_nnue_engine_design_v1.md 리스크 정리: generated/cpp_engine/main_plan1_canonical_risk_resolution_report_v1.json 남은 실력 작업: generated/cpp_engine/main_plan1_remaining_strength_work_v1.json support-off ablation: generated/cpp_engine/main_plan1_support_off_ablation_v1.json 검증 리포트: generated/cpp_engine/main_plan1_stockfish_nnue_step1_1_1_2_validation_report_v1.json 1-3~1-4 리포트: generated/cpp_engine/main_plan1_stockfish_nnue_step1_3_1_4_validation_report_v1.json 1-5~1-6 리포트: generated/cpp_engine/main_plan1_stockfish_nnue_step1_5_1_6_validation_report_v1.json 기존 멀티 엔진/전이증거 플랜은 메인계획 1에서 제거 runtimeReady=false · real transfer evidence 0행 · long gate 미통과 최종 승격 기준은 프로젝트 내부 same-time long gate

메인계획 1은 이제 이전의 runtime 옵션 실험, 전이증거 채굴, shadow 비교 중심 계획이 아닙니다.
새 메인계획 1은 장기 전용 Stockfish/NNUE식 C++ 검색 엔진 강화안입니다. 목표는 보정값을 더 붙이는 것이 아니라, PVS/alpha-beta, iterative deepening, TT, 전술 확장, 장기 전용 NNUE, long gate를 중심으로 검색 엔진 자체의 체급을 올리는 것입니다.
현재 1-1부터 1-6까지는 C++ 엔진 기준으로 1차 구현과 검증 산출물을 만들었지만, 최강 달성 선언이나 라이브 교체 완료가 아닙니다. 이번 정리로 기존 plans/main_plan1_v5의 prior/posterior/transfer 문서는 legacy context로 격하했고, pass는 구현·스모크·계약 통과일 뿐 실력 향상 통과가 아님을 명시했습니다.
support-off ablation에서는 고정 깊이 best move는 같았지만 250ms time-budget best move는 달라져, support 신호가 명시적 최종 tie-break 권한은 없어도 시간제한 탐색에서는 사실상 선택 결과에 영향을 줄 수 있음을 확인했습니다. 다음 단계는 확장 동치 검증, 전술 실패군 재현, NNUE 실제 학습/전이, multi-position support-on/off ablation, same-time long gate로 장기 실력 향상 여부를 확인하는 것입니다.

1/5 완료 #2 regression 제거, 향상 미증명 rule/result mismatch 0 문서: artifacts/docs/main_plan1_remaining_strength_work_v1.md JSON: generated/cpp_engine/main_plan1_remaining_strength_work_v1.json

현재 1-1~1-6은 기반 정리와 안전 차단 단계입니다. 실제 실력 향상은 아래 5개 작업을 순서대로 통과해야 주장할 수 있습니다.
1. 대규모 JS-vs-C++ rule/result equivalence corpus는 623개 케이스, 12개 family, critical mismatch 0으로 통과했습니다. 근거: generated/cpp_engine/main_plan1_remaining_1_rule_result_equivalence_corpus_v1.json
보조 감사에서 발견한 king-capture 터미널 메타데이터 불일치는 C++ GameState::ApplyMove에서 착수 후 turn/position count를 JS와 동일하게 갱신하도록 수정했고, 4개 재현 케이스 재검증도 통과했습니다.
2. tactical failure-family replay gate의 regression 원인을 우선 수정했습니다. 원인은 과격한 current profile이 router survivor, protected slot, verification challenger, tie window를 한 번에 넓힌 점과 120ms replay의 시간 노이즈였습니다. C++ root search에는 repeat/palace 압박에서 반복 횟수, own legal, king escape, score lead를 악화시키는 조용한 continuation 후보에 보수적 penalty를 추가했고, replay 기본 profile은 regression_safe_baseline_equivalent_profile로 되돌렸습니다.
최신 fixed-depth/no-time-noise replay 결과는 59개 replay row, regressed family 0개, regressed case 0개입니다. 다만 safe profile이 baseline과 같아져 unstable_routing 증거가 빠졌고, improved case도 0개라서 regression 제거는 확인됐지만 실력 향상 증명은 아직 실패입니다. 근거: generated/cpp_engine/main_plan1_remaining_2_tactical_failure_family_replay_v1.json
3. NNUE를 feature smoke에서 실제 학습으로 넘기고, holdout, quiet-position filtering, root-decision transfer를 통과시킵니다.
4. multi-position support-on/off same-time ablation으로 support 신호가 검색 품질을 높이는지, 아니면 시간제한 hidden chooser로 작동하는지 분리합니다.
5. 위 네 게이트가 개선된 뒤에만 same-time 250ms/500ms/1500ms long gate를 재도전합니다.
아직 2~5가 남아 있으므로 promotionAllowed=false, runtimeReady=false를 유지합니다.

1차 구현/검증 완료 JS 기준 vs C++ 기준 대규모 동치 검증 TT key 상태 혼입 강화

강한 검색보다 먼저 장기 규칙과 상태 표현을 고정합니다. 궁성 대각, 상/마 멱, 포 다리, 빅장, 반복수, 장군 연쇄, no-move, 점수 판정, 포진 선택을 JS 기준과 C++ 기준에서 대량 비교합니다.
이번 1차 구현에서는 TT state key에 반복 카운트, 반복 규칙, 반복 한도, 무승부 판정 방식, pass streak, move count, winner 상태를 혼입하도록 확장했습니다. --equivalence-suite, --eval-smoke, 통합 검증 리포트는 통과했습니다.
이후 확장 동치 코퍼스에서 장군 연쇄, no-move/pass 계약, 점수 판정, terminal priority, 전체 포지션 히스토리 alias 위험까지 별도 family로 고정해 critical mismatch 0을 확인했습니다.

1차 구현/검증 완료 검색 전 후보 제거 금지 opening selector/root router 기본 off legacy prefilter는 명시 ablation 전용

최종 착수는 PVS/alpha-beta 검색, iterative deepening, TT, move ordering, 검증된 root score가 결정합니다. opening selector, root router, hard prefilter가 충분한 검색 전에 좋은 후보를 죽이는 구조는 제거하거나 강하게 제한합니다.
이번 1차 구현에서는 opening selector, root policy router, root bonus final tiebreak를 기본 비활성화했습니다. 기본 profile은 searchedDepth=3, nodes=3590, 후보 삭제 0으로 검색 중심 경로를 탔고, legacy prefilter profile은 비교 실험용으로만 남겼습니다.
policy와 prior는 후보를 정렬하고 검색 효율을 높이는 보조 신호로만 먼저 사용하며, 검색을 대체하지 않습니다.

1차 구현/검증 완료 checkmate loss / repeat-score loss 감소가 목표 quiescence / forcing-line / mate danger 검증

현재 장기전 약점은 평균 점수보다 체크메이트 패배, repeat-score 패배, 궁성 셔플, 무리한 침투 같은 종료 사유에서 드러납니다. 따라서 quiescence와 extension은 장군, 포 스크린, 궁성 위협, 왕 탈출 수 감소, 반복수 위험을 우선 다룹니다.
이번 1차 검증에서는 quiescence, mate danger extension, forcing-line extension, TT mate-score normalization이 존재하고 작동하는지 확인했습니다. tactical ablation sample에서 all-on 기준 평균 forcing-line extension은 84.375회, search smoke depth2는 nodes=773으로 통과했습니다.
휴리스틱을 계속 덧대는 방식이 아니라, 위험 후보가 root verification까지 살아남고 실제 검색으로 검증되는 구조를 목표로 합니다. 단, 감수 기준상 아직 체크메이트/반복/궁성/포 스크린 실패군이 실제로 감소했다는 long evidence는 아닙니다.

1차 feature 계약 구현 NNUE는 검색 대체가 아니라 평가 함수 HalfKP + 장기 문맥 feature smoke 통과

현재 HalfKP smoke 경로는 준비 신호일 뿐, 라이브 평가기로 충분하다고 보지 않습니다. 이번 1차 구현에서는 기존 HalfKP 옆에 장기 전용 문맥 feature 18개를 추가했습니다. 포함 범위는 기물/점수 맥락, 궁성 방어/공격, 적 왕 대상 포 스크린, 공격/수비 capture pressure, 왕 기동성, 체크 상태, 반복 카운트, pass/phase/cannon 맥락입니다.
학습은 deep search label, 공개 기보 포지션, self-play 포지션을 조합하되, 전술적으로 흔들리는 noisy position은 분리하거나 quiet-position 필터를 적용합니다. 현재 상태는 feature 계약과 smoke 통과이지, 학습 연결, posterior calibration, best-move transfer, 라이브 NNUE 승격이 아닙니다.

1차 구현/검증 완료 winnerLikelihood/supportTail은 실제 측정 전 승격 금지 policy/prior는 ordering·scheduling 전용

policy, prior, posterior, WDL은 최종 착수자가 아닙니다. 초기에는 후보 정렬, 탐색 예산 배분, 진단용 calibration에만 사용합니다.
이번 1차 구현에서는 기본 profile에서 opening selector, root router, root bonus tiebreak, external root prefilter, policy value gate가 최종 선택 권한을 갖지 않도록 검증했습니다. 추가 감수에서 발견된 동점 후보 정렬 누락도 보완해, 기본 profile에서는 최종 후보 정렬이 score-only deterministic comparator를 사용하고 support-signal tie sorting은 useRootBonusTiebreaks 명시 활성화 뒤로 격리됩니다. 또한 winnerLikelihoodsupportTail은 C++ root candidate 출력에서 여전히 null/unmeasured로 유지되어 최종 root 선택에 권한이 없습니다.
이 단계의 verdict는 pass_promotion_blocked입니다. 즉 보조 신호 권한 제한은 통과했지만, 실제 transfer/calibration이 없으므로 승격은 차단됩니다.

gate manifest 생성 promotion blocked short smoke는 실행 확인용일 뿐

메인계획 1의 승격 기준은 short smoke나 offline metric이 아닙니다. same-time 250ms/500ms/1500ms long match, 400수 제한, mirrored formation, tactical suite, failure-family replay, bridge soak를 통과해야 합니다.
이번 1차 구현에서는 main_plan1_stockfish_nnue_long_promotion_gate_manifest_v1.json으로 승격 게이트를 고정했습니다. 현재 증거 기준 500ms long은 0승 6패 2무, 1500ms long은 1승 7패이고, real transfer evidence도 0행이므로 promotionAllowed=false입니다.
새 C++ 엔진은 이전 C++ bestJS live baseline을 모두 기준으로 비교하며, checkmate loss, repeat-score loss, no-move failure, 후보 생존성 실패가 줄어들지 않으면 평균 점수가 좋아져도 통과로 보지 않습니다.

메인계획 2
C/C++ 속도 최적화 선행
안전 최적화 계속 진행 성능 하락 없는 경로 우선

메인계획 1과 별도로, 이후 stronger-label, oracle, self-play를 더 빠르게 돌리기 위해 엔진 계산 경로를 먼저 가볍게 만드는 작업도 계속 진행합니다. 현재는 search 의미를 바꾸지 않는 안전 최적화를 우선 기준으로 삼습니다.

완료 RelWithDebInfo / O3 / NDEBUG / LTO 반영

현재 기본 빌드를 RelWithDebInfo로 정리했고, 타깃 단위로 -O3, NDEBUG, LTO 분리까지 반영했습니다. 최적화 빌드의 depth2 search smoke는 기존 기록 nodes 2021에서 514까지 내려가며 실제 손실이 줄어든 것을 확인했습니다.

완료 workspace 재사용 / 직접 공격 판정 / 고정 seen 배열

합법 수 필터에서 pseudo move마다 보드를 복사하던 경로를 줄이고, workspace Apply/Undo 재사용, 직접 공격 판정, 고정 크기 seen 배열로 핫패스를 정리했습니다. depth2 search smoke 평균 시간은 53.60ms → 17.84ms로 내려갔습니다.

완료 64비트 position hash / packed move key / numeric TT-history

반복 판정, TT, history, root bonus의 std::string 경로를 줄이고 64비트 position hash, packed move key, 숫자 기반 TT/history로 바꿨습니다. depth2 search smoke 평균 시간은 17.84ms → 9.46ms, hard-position 4개 평균은 41.12ms → 6.58ms로 내려갔습니다.

완료 persistent bridge pool / cpp-workers 운영

PersistentCppBridgePool을 추가하고 --cpp-workers를 self-play와 stronger-label builder에 연결했습니다. self-play 8 seed / 4 ply / depth2 기준 총시간은 34846.85ms → 17751.00ms로 줄었고, margin builder 12행 기준도 6361.04ms → 6247.34ms로 소폭 개선됐습니다.

완료 의미 유지 smoke 통과

GameState 전체를 거치던 장군 판정Board workspace apply/undo로 바꾸고, targeted self-play에서는 한 ply당 legal move 목록을 재사용하도록 정리했습니다. depth2 smoke의 best move / score / nodes와 eval smoke는 그대로 유지됐고, self-play 8 seed / 4 ply / depth2 / no-aux / 1 worker 기준 총시간은 34846.85ms → 33147ms로 줄었습니다.

현재는 멀티 계획으로 운영합니다. 메인계획 1은 이제 Stockfish/NNUE식 검색엔진 강화안이고, 메인계획 2는 계속 속도 최적화 선행입니다. 메인계획 1은 artifacts/docs/main_plan1_plan_a_stockfish_nnue_engine_design_v1.md를 기준 문서로 삼고, 메인계획 2의 2-1~2-5까지는 현재 성능 하락 없는 안전 최적화 기준으로 유지합니다. 두 계획은 동시에 유지하고, 작업 종료 시마다 웹사이트 계획과 현재 상태를 계속 동기화합니다.

현재 상태 요약

현재 라이브 장기 페이지

브라우저 장기 페이지는 현재 janggi-engine.js?v=20260314bjanggi-mate-solver.js?v=20260314b를 직접 사용하고 있습니다. 저장 키는 계속 janggi-game-save-v2를 유지합니다.

AI 계산 경로

웹 워커 경로는 janggi-ai-worker.js 내부에서 janggi-policy-hybrid.js?v=20260315c, janggi-engine.js?v=20260315c, janggi-mate-solver.js?v=20260315c를 불러옵니다. 즉 현재는 라이브 페이지와 워커 경로의 자산 버전이 완전히 같지는 않습니다.

지금 가장 강한 개선 방향

지금은 단순히 기보나 시간을 더 늘리는 것보다, 메인계획 1: 장기 전용 Stockfish/NNUE식 C++ 검색 엔진 강화가 우선입니다. 최근 1500ms same-time long에서도 1승 7패에 머물렀기 때문에, 현재 병목은 계산량 자체보다 룰 상태 정합성, search/control 의미론, 후보 생존성, 반복/장군/궁성 전술 안정성이라고 보고 있습니다.

프로젝트 내부 공식 AI 대 AI long screening

이번 턴에는 JS 기준 엔진, refreshed C++ public baseline, soft weak-ranker 후보official_engine_registry_v2 기준으로 다시 묶고, 4 formation × mirrored 8게임 × 최대 400수 프로젝트 내부 long screening을 돌렸습니다. 점수 판정은 어느 한쪽 기물 점수가 10점 미만일 때만 허용했고, 실제로는 대부분 그 전에 결판이 났습니다. 결과는 refreshed baseline 0승 8패 0무, soft 후보 0승 7패 1무였습니다. soft 후보가 baseline보다 약간 덜 나빴지만 여전히 승격 기준에 못 미쳤고, 따라서 웹 라이브 엔진은 계속 JS 유지가 현재 결론입니다.

공개 장기 기보 수집 확장

이번 턴에는 기존 공개 출처를 다시 점검해 대한장기협회 75건 + 장기도사 직접 첨부 66건 = 141건의 직접 첨부 기준은 유지한 채, 장기도사 첨부 안에 숨겨져 있던 ZIP 묶음 13개를 다시 검사했습니다. 그 결과 이미 풀어둔 2개 ZIP 외에 추가 묶음을 더 확인했고, 새로운 .gib 222개와 .pan 10개를 로컬에 더 풀어 확보했습니다. 추가 네트워크 스캔도 함께 돌려 장기도사 1~20페이지, 대한장기협회 pds 121~260번 범위에는 새 직접 첨부가 없다는 점까지 확인했습니다.

공개 기보 원본 URL · 종류 레지스트리

대한장기협회 자료실 PDS

원본 URL: http://www.kja.or.kr/data_room/data.php
종류: 공식 대회 .gib 직접 첨부
현재 확보: 75건
중복 방지 기준: postIdcnt 조합, 로컬 파일명 kja_pds_###_##.gib 기준으로 대조

장기도사 ZIP 묶음 기보

종류: board_data 첨부 안에 포함된 압축 기보 묶음
현재 확인된 ZIP 첨부: 5, 27, 310, 381, 1319, 1331, 1383, 1448, 1449, 1648, 1756, 1941, 2539
현재 확보: ZIP 13개, 내부 .gib 총 251개, 이 중 이번 확장분 신규 .gib 222개
중복 방지 기준: ZIP은 downloadNo, 내부 기보는 추출 디렉터리 generated/kibo/external/janggidosa_zip_####와 파일명 기준으로 대조

공개 구글 드라이브 장기 기보 폴더

원본 URL: https://drive.google.com/drive/folders/1zRAiC61Z91GqeyAnWWtRDwbb9F7pr0J_
종류: 공개 폴더형 기보 아카이브
현재 확보: 하위 폴더 14개 / 파일 325개
세부 분류: KBS 장기 19, 기타 22, 엠게임 장기 13, 이동준의 장기 연구실 5, 장기 노트 카페 6, 장기사랑 아카데미 1, 카카오 장기 58, 포진법 19, 한게임 장기 182
중복 방지 기준: 루트 폴더 ID 1zRAiC61Z91GqeyAnWWtRDwbb9F7pr0J_, 하위 folder id, 개별 file id, 상대 경로를 같이 기록해 대조

현재 중복 방지 기준

지금부터는 새 기보를 받을 때 출처 URL, 자료 종류, 원본 식별자를 같이 적어 관리합니다. 직접 첨부는 postId/cnt 또는 downloadNo, ZIP 묶음은 downloadNo와 내부 파일명까지 같이 대조해 이미 확보한 자료를 다시 받지 않도록 유지합니다.

적용된 엔진

라이브 브라우저 장기 엔진 20260314b
현재 적용 규칙/평가/탐색

장기판 규칙 처리, 합법 수 검사, 반복/점수 판정, 기본 탐색과 평가를 담당하는 메인 엔진입니다. 현재 장기 페이지에서 실제로 사용 중인 엔진입니다.

라이브 메이트 솔버 20260314b
현재 적용 외통 보조

강제수와 외통 위협을 좁게 탐색하는 보조 경로입니다. 메인 엔진과 별도로 작동하며, 장군 연쇄와 탈출 수 감소를 우선 보는 쪽입니다.

정책 하이브리드 워커 20260315c
부분 적용 frequency prior + structured neural

웹 워커에서만 사용하는 AI 계산 경로입니다. frequency prior를 1차 후보로 유지하고, structured neural을 보조 신호로 쓰는 현재 프로젝트 기준을 반영합니다.

미반영 엔진

20260313g 기준 엔진
미반영 기준선

arena 비교 기준으로 많이 사용한 JS baseline입니다. 현재 라이브에 따로 올릴 필요는 없고, 비교 기준선으로만 유지하는 상태입니다.

20260319a 제한 연결 엔진
미반영 safe/mate-risk 보조 연결

safe 유지와 mate-risk 억제 성향을 루트 후보에 약하게 연결한 실험 엔진입니다. arena에서는 개선 신호가 있었지만, 아직 라이브 브라우저 엔진으로 고정할 만큼 검증이 충분하지 않습니다.

C++ baseline 엔진
미반영 공식 long screening 0승 7패 1무 / 평균 점수차 -58.13

규칙 동치, 탐색, TT, PVS, persistent bridge까지 구현된 별도 C++ 코어입니다. 400수 기준 공식 screening에서는 7판이 체크메이트 패배, 1판이 반복 무승부였습니다. 평균 점수 차는 C++ 기준 -58.13였습니다. 아직 브라우저 라이브 경로에 올릴 수준의 우세 신호는 부족합니다.

C++ + multi-head / pairwise ranker 보조
미반영 공식 long screening 0승 8패 / 평균 점수차 -48.75

pairwise ranker는 quick compare에서 decision flip을 만들고, 400수 기준 공식 screening에서는 8판 전부 체크메이트 패배로 끝났습니다. 평균 점수 차는 baseline보다 약간 덜 나쁜 -48.75였지만, 실제 대국 결과는 더 나빴습니다. 그래서 라이브 반영 대신 label sharpness와 연결 강도 재설계가 먼저입니다.

NNUE HalfKP smoke evaluator
미반영 일반화 부족

HalfKP feature 추출과 smoke 학습 경로는 성립했습니다. 하지만 holdout 일반화가 아직 약해서, 지금 단계에서 라이브 엔진 평가기로 교체하는 것은 맞지 않습니다.

날짜별 진행내역

2026-04-27
메인계획 1 canonical drift 정리와 다음 실력 게이트 고정

main_plan1_current_canonical_lock_v1.md로 현재 메인계획 1 기준을 Stockfish/NNUE식 C++ 검색엔진 강화안으로 고정했습니다. 기존 plans/main_plan1_v5 문서는 legacy context로 격하했고, 단계 번호 충돌과 pass 의미 오해를 차단했습니다.
새 통합 리포트 main_plan1_canonical_risk_resolution_report_v1.json의 verdict는 canonical_fixed_promotion_blocked입니다. support-off ablation은 명시적 최종 tie-break 권한 차단은 유지되지만 time-budget ordering 영향이 있음을 보여주므로, 다음 실력 증명은 multi-position support-on/off ablation과 long gate가 필요합니다.

2026-04-27
메인계획 1-5~1-6 보조 신호 권한 제한과 long gate 차단

1-5는 policy/prior/posterior/WDL이 최종 착수자가 아니라 ordering, scheduling, calibration 진단용 보조 신호로만 남도록 기본 profile을 검증했습니다. 최종 선택 개입 경로는 opening selector, root router, root bonus tiebreak, external root prefilter, policy value gate를 모두 꺼둔 상태에서만 production/default 통과로 인정하며, 기본 최종 후보 정렬도 score-only로 고정했습니다.
1-6은 main_plan1_stockfish_nnue_long_promotion_gate_manifest_v1.json으로 승격 게이트를 고정했고, 현재 verdict는 pass_promotion_blocked입니다. real transfer evidence 0행, runtimeReady=false, 500ms long 0승 6패 2무, 1500ms long 1승 7패라서 라이브 승격은 차단됩니다.

2026-04-27
메인계획 1-3~1-4 전술 안정화와 장기 NNUE feature 계약

1-3은 기존 C++ 검색 코어의 quiescence, mate danger extension, forcing-line extension, TT mate-score normalization을 통합 검증 리포트로 묶어 확인했습니다. 1-4는 HalfKP만으로 충분하다고 보지 않고, 장기 전용 문맥 feature 18개를 C++ feature extractor와 NNUE smoke 출력에 추가했습니다.
검증 리포트 main_plan1_stockfish_nnue_step1_3_1_4_validation_report_v1.json의 verdict는 pass입니다. 단, 이것은 검색 안정성과 feature 계약의 1차 통과이며, 전술 실패군 감소, 학습 연결, posterior calibration, long-game strength, 라이브 NNUE 승격은 아닙니다.

2026-04-27
메인계획 1-1~1-2 1차 구현과 감수 검증

룰/상태 정합성 단계에서는 C++ TT state key에 반복 카운트, 반복 규칙, 반복 한도, 무승부 판정 방식, pass streak, move count, winner 상태를 포함하도록 확장했습니다. 검색 코어 단계에서는 opening selector, root policy router, root bonus final tiebreak를 기본 비활성화해, 최종 착수 결정이 충분한 검색 전에 보조 신호로 우회되지 않도록 바꿨습니다.
통합 검증 리포트 main_plan1_stockfish_nnue_step1_1_1_2_validation_report_v1.json의 verdict는 pass입니다. 단, 감수 기준상 이것은 조건부 통과이며, 확장 JS-vs-C++ 동치 검증, 장군 연쇄/빅장/no-move pass 계약, TT history alias, same-time long gate는 다음 승격 게이트로 남겨둡니다.

2026-04-27
메인계획 1을 Stockfish/NNUE식 장기 엔진 강화안으로 재정의

공개 장기 엔진 기준선과 현재 C++ 산출물을 다시 대조해, 메인계획 1을 Stockfish/NNUE식 검색엔진 강화안으로 고정했습니다. 새 메인계획 1은 보정값을 추가하는 경로가 아니라 PVS/alpha-beta, TT, iterative deepening, tactical extension, 장기 전용 NNUE, long promotion gate를 중심으로 C++ 검색 엔진의 체급을 올리는 경로입니다. 라이브 교체 완료가 아니라 생산 방향 확정과 안전 게이트 게시이며, runtimeReady=false 상태에서는 기존 JS 라이브 엔진을 유지합니다.

2026-03-17
JS multi-head 학습 정리와 제한 연결

loss balance, tiny 검증, mate 라벨 밀도 보강, source bias 완화, gamesplit 교정, small full training, holdout 재평가를 거쳤고, 이후 v9a 계열 보조 신호를 기반으로 20260319a 제한 연결 실험까지 진행했습니다.

2026-03-21
C++ 엔진 코어와 NNUE 준비 경로 구축

C++ 보드/규칙 엔진, 탐색, 평가 함수, JSON stdio 브리지, frequency prior 연결, multi-head auxiliary bridge, persistent 세션, HalfKP feature extractor, targeted self-play, NNUE smoke 학습까지 이어지는 별도 코어를 구축했습니다.

2026-03-22
stronger-label / pairwise ranker 품질 개선

state-level split 누수 제거, fail-soft stronger-label builder, challenger mix 재설계, practical acceptance 기준 재설계를 진행했습니다. practical acceptance는 acceptedPairs를 2개에서 5개로 늘리는 데 성공했지만, 아직 depth2 quick compare에서 target hit 개선까지는 이어지지 않았습니다.

2026-03-23
프로젝트 내부 공식 엔진 레지스트리와 AI 대 AI long screening

현재 웹 기준 JS 엔진과 C++ 후보 2종을 공식 레지스트리로 정리하고, persistent bridge 기반 공식 매치 러너로 4 formation × mirrored 8게임 × 최대 400수 screening을 진행했습니다. 종료 규칙은 400수 도달 시 점수 판정으로 바꿨지만, 실제로는 대부분 그 전에 체크메이트로 끝났습니다. 결과는 baseline 0승 7패 1무, ranker 후보 0승 8패였습니다. 그래서 현재 판단은 웹 메인 JS 유지 + C++ 후보 추가 보강입니다.

2026-03-23
공개 기보 재스캔과 숨은 ZIP 기보 확장

기존 공개 출처를 다시 스캔하면서 장기도사 직접 첨부 66건 중 ZIP으로 위장된 첨부 13개를 식별했습니다. 이 중 기존에 풀어둔 1941, 2539 외에도 추가 묶음을 해제해 .gib 222개를 더 확보했습니다. 동시에 장기도사 1~20페이지, 대한장기협회 pds 121~260번까지 추가 점검했지만 새 직접 첨부는 발견되지 않았습니다.

2026-03-23
공개 구글 드라이브 장기 기보 폴더 전체 다운로드

공개 드라이브 폴더 1zRAiC61Z91GqeyAnWWtRDwbb9F7pr0J_를 재귀적으로 읽어 하위 폴더 14개, 파일 325개를 전체 다운로드했습니다. 하위 분류는 한게임 장기 182개, 카카오 장기 58개, KBS 장기 19개 등이었고, 원본 folder id와 개별 file id까지 함께 기록해 이후 중복 다운로드를 막도록 정리했습니다.

현재 판단: 라이브 반영 우선순위는 새 엔진 종류를 더 늘리는 것이 아니라, 메인계획 1 기준으로 C++ 검색 엔진의 룰 정합성, 후보 생존성, 반복/장군/궁성 전술 안정성, 장기 전용 NNUE, long gate를 차례로 닫는 것입니다.

현재 상태 설명

적용 경로는 살아 있고, 검증 경로도 만들어졌다

JS 라이브 엔진, 워커 기반 정책 하이브리드, C++ 코어, NNUE 준비, pairwise ranker 경로까지 전부 이어지는 구조는 이미 생겼습니다.

하지만 실전 승부력 향상으로 확정된 것은 아직 라이브 JS 계열뿐이다

실험 엔진들은 decision flip이나 pair 증가 같은 중간 신호는 만들고 있지만, 라이브 교체를 정당화할 만큼 안정적인 승부력 향상은 아직 부족합니다.

그래서 미반영 상태를 유지하는 이유

지금 미반영 엔진들은 대체로 데이터 규모 부족, target hit 개선 미확인, 브라우저 라이브 경로 검증 부족 중 하나의 이유로 보류 중입니다.

이 문서는 날짜별 실험 흐름과 현재 적용/미반영 상태를 관리하기 위한 안내 페이지입니다. 라이브 장기 페이지의 실제 교체 기준은 앞으로도 실전 승부력과 안정성을 우선으로 유지하며, 위 1~6단계 플랜과 실제 진행 상태도 계속 함께 갱신합니다.