fullseye

범용 알고리즘을 구현 가능하게 만들기 — algo-c 대응 로드맵

日本語 · English · 简体中文 · 繁體中文 · 한국어 · Deutsch

사용자 요청(2026-08-16): https://github.com/okumuralab/algo-c(오쿠무라 하루히코(奥村晴彦) 『[개정신판] C언어에 의한 표준 알고리즘 사전』전체 소스)에 있는 것과 같은 범용 알고리즘도 Fullseye에서 구현할 수 있게 하고 싶다.

솔직한 현재 인식: Fullseye는 현재 이미지 알고리즘 설계 AI(op 레지스트리 = image/region/ feature/contour/volume의 sort, 진화 + holdout gate + Python→C codegen). 범용 알고리즘 (정렬/탐색/그래프/수론/암호/압축)은 이미지 sort에 올라가지 않으므로 언어·타입·codegen 확장이 필요하다. 이는 여러 세션에 걸친 작업이다. 본 doc은 그 확정 계획(다음 세션이 full context로 실행할 정본)이다.

algo-c의 카테고리(서적 목차·구현 대상 맵)

※ 엄밀한 망라는 repo의 /src를 정본으로 한다.

분야 대표 알고리즘 Fullseye에서의 수용처
수치계산 방정식(이분법/Newton), 수치적분(Simpson/Romberg), 연립일차(Gauss/LU), 보간(spline), FFT 기존 dsp(FFT) + 신규 numeric op 계열
난수·통계 Mersenne Twister, 분포, 통계량 신규 rng/stat op(결정적 seed)
정렬 quick/heap/merge/shell/radix 신규 array sort + seq 타입
탐색 이분탐색, 해시, BST/AVL/B-tree 신규 array/map op
문자열 KMP/BM/Rabin-Karp, 편집거리, 정규표현식 신규 text 타입 + op
그래프 DFS/BFS, Dijkstra, Warshall-Floyd, MST, 최대유량 신규 graph 타입 + op
기하 볼록껍질, 선분교차, 보로노이 기존 pcseg/기하 + 신규 geom2d
수론·암호 소수, GCD, RSA, MD5/SHA, AES 신규 numtheory/crypto(교육용·honest 공개)
데이터 압축 Huffman, LZ/LZW, 산술부호화 신규 compress op
DP/탐색 8-queens, 배낭문제, DP fscript의 제어흐름 + array

구현 아키텍처(확정 방침)

Fullseye의 기존 자산을 범용으로 확장한다. 이미지 AI의 초점은 흐리지 않는다(범용 op는 별도 tier / opt-in).

  1. 타입 시스템 확장: 현재 6+1 sort(image/region/feature/contour/match/any/volume)에 seq(1-D 배열)/text(문자열)/graph/scalar를 추가(ops.py의 sort·fslib 타입).
  2. fscript의 범용 언어화: 이미 if/for/while·대입·튜플이 있다. 배열/문자열 리터럴, 인덱싱, procedure(함수)를 단계적으로 추가(현재는 언어 스코프를 좁히는 결정이었으므로, 범용 tier는 별도 프로파일로 해금). 정본 = docs/FSCRIPT_DECISION.md의 A/B 분기를 재검토.
  3. op 레지스트리 확장: algo-c의 각 알고리즘을 op(name/in-out sort/params/c_stmt)로 등록. 기존 Python→C codegen(engine.to_python/to_c) + difftest(honest gate: Python이 oracle, C를 차분 검증)을 그대로 재사용 → 「C로 구현 가능하다」를 실측으로 보증.
  4. honest gate: algo-c의 C를 참조 구현으로 difftest에 넣고, Fullseye codegen의 C와 수치/비트 일치를 검증(기존 gate의 확장). 원 코드의 라이선스(algo-c = 서적 부속, 이용조건 확인 필요)를 존중하고, 그대로 베끼지 않고 사양으로부터 재구현(공개 공개 정책).

단계 계획(다음 세션 이후)

honest한 한계와 규율


P1 완료 기록(2026-08-16, Opus5[1m]/ultracode)

최소 실증 「Fullseye는 범용 알고리즘도 C 생성할 수 있고, C 일치를 honest 실측할 수 있다」를 달성.

P1 적대적 리뷰 후 강화(2026-08-16, [[feedback_no_solo_ai_judgment]])

본 세션의 자작 코드에 독립 적대적 리뷰(Workflow 4개 렌즈=알고리즘 정확성 / codegen·C 안전 / gate 건전성 / 통합·초점 안전, 22 findings)를 실시. 전건을 내가 1차 코드 검증(v11 규율)하여 진짜 결함을 수정:

다음(P2 이후)

P3 완수 기록 — 문자열 op(2026-08-17, Opus5[1m]/ultracode, graph-loop-engineering)

문자열 알고리즘 3종을 algo tier에 추가. 「문자열 = 코드포인트 열을 float64로 운반」(Unicode 스칼라는 < 2^53이므로 엄밀)로 기존 float64 바이너리 harness에 무개조로 실린다(새 wire 타입 불필요). 값은 등가비교만(정수 코드로 엄밀)·위치/거리는 엄밀 정수 → C-vs-Python bit 일치이면서 Python-vs-oracle은 EXACT(tol 0).

P3 문자열 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

독립 적대적 리뷰 Workflow(4개 렌즈·각 finding을 검증 에이전트가 실 코드/실 compile로 확인) = 3 findings 전부 CONFIRMED(그중 2건은 동일 근본원인을 다른 렌즈가 보고). 1차 검증 후 전건 수정:

P2 완수 기록 — gauss_solve(2026-08-16, Opus5[1m]/ultracode, graph-loop-engineering)

연립일차방정식 Gauss 소거(부분 피벗)를 추가하여 P2 수치계산을 완수. 사용자 지시대로 graph-loop-engineering 스킬로 raptor work-graph에 노드화하고, tool driver에 무인 실행시켰다(2층 방침= breadth는 work-graph의 difftest 게이트, 적대적 findings 채택 여부·push는 세션의 human checkpoint).

P2 gauss 적대적 리뷰 후 강화(2026-08-16, [[feedback_no_solo_ai_judgment]])

자작 gauss 코드에 독립 적대적 리뷰 Workflow(4개 렌즈=numeric 정확성 / C 안전 / gate 건전성 / 통합·피복, 각 finding을 검증 에이전트가 실행 재현). 5 findings 중 4 CONFIRMED를 1차 코드 검증 후 전건 수정:

P1.5b 완수 기록 — Studio에 general tier를 read-only 표시(2026-08-17, Opus5[1m]/ultracode)

op 브라우저에 general(algo) tier를 표시. 이미지 초점을 흐리지 않는 설계 = general op는 seq/scalar의 별도 계산 모델이므로 read-only(이미지 파이프라인에 넣지 않음).

P4 완수 기록 — 그래프 op(2026-08-17, Opus5[1m]/ultracode, bonus)

그래프 알고리즘 3종을 algo tier에 추가(후보 외지만 사용자 「전부 진행해」+7-8h 자율에 따른 보너스). 그래프를 입력 seq에 팩([n, m, (u,v,w)*m], 무방향; dijkstra는 src 전치 [n, m, src, ...])해 기존 float64 harness에 싣는다.

P5 완수 기록 — 수론·압축·교육용 해시(2026-08-17, Opus5[1m]/ultracode, graph-loop-engineering)

범용 알고리즘 5종을 algo tier에 추가하여 algo-c 로드맵(P1→P5)을 완수. 정수를 float64로 운반 (exact < 2^53)하므로 새 wire 타입 불필요. 비트/정수 연산은 C 측에서 unsigned long long/unsigned int로 cast해서 수행하고, double로 되돌린다(결과는 < 2^53이므로 exact). 전 5개 op가 exact(C==Python bit 일치이면서 Python==독립 oracle tol 0).

P5 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

자작 P5 코드에 독립 적대적 리뷰 Workflow(4개 렌즈=algorithm-correctness / C-safety-codegen / gate-honesty / integration-focus, 각 finding을 검증 에이전트가 실 compile/실행으로 재현, 18 agents). 14 raw → 9 CONFIRMED / 5 REFUTED. 전 CONFIRMED를 내가 1차 재현(직접 ziglang compile·실행)한 후 수정. 특기할 만한 것은 「gate가 자작 guard를 falsify할 수 있는가」에 대한 깊은 파고듦:

P6 완수 기록 — 계산기하(2026-08-17, Opus5[1m]/ultracode, 12h 자율·graph-loop-engineering)

기하 알고리즘 3종을 algo tier에 추가(algo-c 로드맵 P1→P5 완수 후의 확장=P6. 당초 TOC의 「기하=볼록껍질/ 선분교차」에 대응). 이미지 tier의 윤곽/영역처리로의 가교이기도 하다. 2-D 점을 입력 seq에 팩하고, 정수좌표 (각 [-100000, 100000])로 모든 방향판정/신발끈합을 엄밀한 정수로 만든다(부동소수 나눗셈을 일절 사용하지 않음)=C bit 일치이면서 Python==독립 oracle tol 0.

P6 적대적 리뷰(2026-08-17, [[feedback_no_solo_ai_judgment]])

2건의 독립 적대적 리뷰 Workflow(각 finding을 검증 에이전트가 실 compile/실행/스트레스로 재현)를 병행 실시:

P7 완수 기록 — 선분교차(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

기하 툴킷을 1 op 확장: segments_intersect(KIND_REDUCE) = 2개의 닫힌 선분 [x1,y1,x2,y2,x3,y3,x4,y4]가 교차하는지 (1.0/0.0). 이미지의 직선/윤곽 해석으로의 가교. CLRS 33.1의 정수 orientation 법(proper crossing = 끝점이 상대 선을 엄밀히 가로지름 + 4가지 공선 on-segment 특수 케이스). 정수좌표 [-100000,100000]에서 외적은 엄밀(|cross| ≤ 8e10이 long long에 수용됨)= C bit 일치. oracle = sympy.geometry의 Segment 교차(기호계산=orientation과는 전혀 다른 방법). 실측: 고정 8케이스 정답 + sympy와 2970개 랜덤 정수 선분쌍에서 mismatch 0(공선 중복/T자/끝점공유/near-miss를 포함). 퇴화(점) 선분은 sympy가 Segment를 만들 수 없으므로 holdout에서 제외(op는 일반 orientation 로직으로 동작하지만 미gate=공개). difftest passed(python exact / C bit 일치 / c_verified), work-graph 노드 무인 done(전 algo op 24가 gate화).

P7 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

3개 렌즈 적대적 리뷰(검증 에이전트가 실 compile/실행으로 재현) = 1 raw → 1 CONFIRMED(MED·gate-honesty). op 자체는 올바르다(sympy와 전 일치)만, difftest holdout이 d1/d3/d4의 on-segment 특수 케이스(끝점이 상대 선분의 내부에 놓임=공유 끝점 없음) 를 단독 이유로 하는 1.0 판정으로서 한 번도 구동하지 않아, 그 분기를 뺀 wrong op를 gate가 통과시킨다(50개 holdout의 판정이 하나도 바뀌지 않음). 자체 재현으로 확정(d3+d4 drop 변이가 passed=True·[0,0,10,0,3,0,3,5]→0.0 오류). 수정=각 on_seg 분기(d1/d2/d3/d4)를 단독 이유로 하는 고정 holdout 케이스(끝점이 상대 내부·축 평행 4 + 대각 2)를 추가 → 각 분기를 빼면 difftest가 FAIL(d1/d2/d3/d4 모두 passed=False)을 자체 확인. 기지해 테스트에도 끝점-내부 4케이스를 추가. 전 스위트 4765 → 4772 passed / 0 failed(+7)·ruff clean· mypy 신규 0.

P8 완수 기록 — 탐색/선택(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

탐색/선택 알고리즘 2종을 algo tier에 추가(기하에서 다른 도메인으로 옮겨 tier를 균등화). 비교 기반으로 임의의 (NaN-free) double을 다룬다=결과는 index 또는 기존 요소이므로 exact(tol 0)·C bit 일치.

P8 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

2개 렌즈 적대적 리뷰(실 compile/실행 검증) = 1 raw → 1 CONFIRMED(LOW·correctness). 정확성 불변이지만 성능 결함: kth_smallest의 quickselect가 단일 pivot Lomuto이므로 all-equal/저카디널리티 대입력에서 O(n²)(median-of-three는 중복을 보호하지 않음·n=40000 all-equal에서 7.44s, sorted/reverse는 고속). 테스트는 holdout n≤30·타이밍 테스트가 sorted만으로 미포착. 자매인 quicksort는 이미 3-way(Dutch flag) partition을 사용. 수정=kth_smallest를 3-way(Dutch national flag) partition으로 재작성(equal-band로 중복을 접어→all-equal을 O(n)으로·비교만+순서 비의존으로 C==Python==sorted()[k] parity 유지). 자체 재현으로 확인=all-equal n=40000이 7.44s → 0.0019s(O(n)화)·correctness 5000 cases mism 0·difftest bit 일치. 타이밍 테스트를 sorted/reverse/all_equal/few_distinct로 확대(회귀를 실제로 가드).

P9 완수 기록 — 통계/집계(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

통계 op 2종을 algo tier에 추가: count_distinct(distinct 값 수=정수 count) / mode_value(최빈값·작은 쪽이 tie 승리). 비교 기반(임의의 NaN-free double)·결과는 count 또는 기존 요소이므로 exact(tol 0). 양 op 모두 copy를 sort → run 주사(결과는 순서 비의존으로 C의 qsort와 Python의 sorted가 달라도 bit 일치). oracle=len(set()) / collections.Counter(독립 메커니즘). ★proactive 견고화: mode_value의 제로 mode에서 ±0.0 혼재 시, C의 unstable qsort와 Python의 stable sort로 반환값의 부호가 어긋나 bit 불일치가 될 수 있음 → + 0.0으로 −0.0→+0.0 정준화(다른 값은 불변)로 C==Python을 견고하게(rle_encode의 signed-zero 공개와 같은 계열). 실측: 각 5000개 랜덤 케이스에서 oracle mismatch 0·difftest passed(python exact / C bit 일치 / c_verified). 전 algo op 28이 gate화. ruff clean·mypy 신규 0.

P9 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

2개 렌즈 적대적 리뷰(실 compile/실행/변이 검증) = 1 raw → 1 CONFIRMED(MED·gate-safety). 정확성 불변이지만 gate coverage gap: mode_value의 +0.0 정준화를 빼는 변이를 holdout이 falsify할 수 없다(유일한 signed-zero 케이스 [0.0,-0.0,0.0]이 양 backend에서 +0.0-last로 정렬 → 정준화 삭제해도 bit 일치). 코멘트가 담보한다고 주장하는 bit-check가 정준화를 한 번도 실제로 구동하지 않는다. 수정= -0.0이 run 말미에 오지 않는 [0.0,-0.0]·[-0.0,0.0]을 holdout에 추가(양 순서=qsort tie 순서에 무관하게 한쪽은 반드시 발산). 자체 재현으로 확인=정준화 삭제 변이가 difftest FAIL·현행(정준화완료) 코드는 추가 케이스에서 bit 일치 pass. 전 스위트 4787 → 4796 passed / 0 failed.

P10 완수 기록 — 수론(제2부)(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

수론 op 2종을 추가(P5의 정수 메커니즘 위에·category numtheory를 공유). 정수를 float64로 운반(exact <2^53)·honest 영역에서 전 모듈러 곱이 uint64/long long에 수용됨=C bit 일치이면서 Python==독립 oracle tol 0.

P10 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

2개 렌즈 적대적 리뷰(실 compile/실행/변이 검증) = 1 raw → 1 CONFIRMED(MED·c-safety-gate). op 자체는 올바르고 overflow-safe (353개 적대적 케이스로 검증)이지만, modular_inverse의 holdout이 선언 영역 2^53을 구동하지 않아(in-domain m이 ~1e9에 그침), C의 long long→int 폭축소 변이(2^53 영역을 무너뜨림)가 gate를 bit 일치로 통과. 자매인 pow_mod(base=exp=2^53을 핀) / gcd_seq(2^53 가드 끝) / is_prime(near-2^32)은 같은 종류의 변이를 포착하는데 modular_inverse만 미대응. 수정=2^53 끝 케이스([2, 2^53−1] coprime→inverse· large coprime near 2^53·[2^52, 2^53] both even→−1)를 holdout에 추가(Bezout 연산이 |q·s|~2m~2^54를 구동). 자체 재현으로 확인= long long→int 변이가 difftest FAIL·baseline은 bit 일치 pass. oracle(pow)은 이미 대응완료이므로 holdout만 추가. 전 스위트 녹색.

P11 완수 기록 — 비트 조작(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

비트 조작 op 2종을 추가: xor_reduce(전 요소의 bitwise XOR) / popcount_total(전 요소의 1비트 총수=Kernighan). 비음수 정수를 float64로 운반하고, 영역 [0, 2^53−1]에서 전 값을 53비트에 담는다(XOR 결과도 < 2^53=exact·popcount는 작은 정수)= C bit 일치이면서 Python==독립 oracle(functools.reduce(operator.xor) / builtin int.bit_count()=Kernighan과는 다른 메커니즘) tol 0. 양 op 모두 passed=True·python exact / C bit 일치 / c_verified. 각 3000개 랜덤 케이스에서 oracle mism 0을 사전 실측. fail-soft=음수/비정수/≥2^53→0.0. 전 algo op 32가 gate화. ruff clean(FURB161로 bin().count('1').bit_count()화)·mypy 신규 0.

P11 적대적 리뷰 결과(2026-08-17, [[feedback_no_solo_ai_judgment]])

2개 렌즈 적대적 리뷰 Workflow(correctness + gate-safety, wf_7d130631-c0f) = findings 0(결함 없음). 리뷰어1은 {findings:[]}, 리뷰어2는 「게이트 mutation testing(구현을 부수어 게이트가 잡는가)」 도중 window 압축으로 중단 (결과 미산출). 규율에 따라, 죽은 background를 되살리지 않고, 내가 같은 mutation test를 1차 검증으로 완수: xor_reduce/popcount_total 의 대표 7개 변이(빈 초기화 acc=1 / OR 오용 / 2^53 영역 경계 off-by-one / 음수 가드 제거 / Kernighan→shift[popcount≠bitlength] / +2 오류 / 2^53 admit)를 holdout에 대해 실행 → 전 7개 변이를 독립 oracle이 포착(oracle_err > 0). 결론=P11 게이트는 falsifying·확정 결함 없음(fed093a는 정당·follow-up commit 불필요).

P12 완수 기록 — 확장 유클리드 호제법(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

수론 op 1종을 추가(P5의 정수 메커니즘 + P10의 Bezout 불변량 위에·category numtheory를 공유=P5+P10+P12). extended_gcd(KIND_MAP): 입력 [a, b](비음수 정수 ≤ 2^53) → 출력 [g, x, y](엄밀 3값, a·x + b·y = g = gcd(a,b)), 영역 외는 [] fail-soft. 반복판 two-variable sweep으로 계수를 계산. 계수는 엄밀(불변량 |q·s| = |old_s − new_s| ≤ 2·max(a,b) ≤ 2^54 가 C의 long long에 수용됨)이므로 C == Python bit 일치. domain은 [0, 2^53] inclusive(2^53은 exact·계수 |x|,|y| ≲ 2^52도 float64로 exact).

P12 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

3개 렌즈 적대적 리뷰 Workflow(correctness / c-safety+gate-honesty / integration, 각 finding을 검증 에이전트가 실 compile/ 실행의 mutation으로 재현, 5 agents·125 tool uses) = 2 raw(동일 근본원인) → 1 CONFIRMED(MED·gate-cannot-falsify). op 자체는 올바르다(200k + 전 끝에서 검증·재귀 oracle과 비발산·in-domain에서 long long overflow 없음)만, difftest holdout의 영역 외 케이스가 전부 operand a([2^53+2,3]/[2.5,7]/[-1,7])이고, 유일한 bad-b 케이스 [7,NaN]은 NaN이 bd>=0.0에서 단락되어 b의 3개 가드절을 하나도 단독 구동하지 않는다 → b 쪽 가드의 편측 퇴행(a/b는 복붙 대칭이므로 plausible)이 양쪽 게이트 절반을 통과(P5/P7/P9/P10과 같은 gate-coverage 교훈). 자체 재현으로 확정: bd>=0 / bd<=2^53 / bd==int를 _PY/_C 양쪽에서 삭제 → 모두 passed=True(MISSED), 대칭인 a 쪽 삭제는 전부 passed=False(CAUGHT·a의 영역 끝이 holdout에 있으므로). 수정=[valid_a, finite_bad_b] 케이스([3, 2^53+2]·[7,-1]·[7,2.5]) 를 holdout과 fail-soft 테스트에 추가 → 재실측으로 b 쪽 3개 삭제가 전부 CAUGHT(passed=False, pydiff=inf)·baseline은 70 cases에서 bit 일치 pass. ★검증 에이전트의 honest한 정정을 채택(finding의 과잉 주장은 각하): 「bd<=2^53 삭제는 b=2^62에서 C long long overflow UB」는 부정확 — b=2^62에서 C(long long)와 Python(bignum)은 bit 일치(overflow 없음). 진짜 오류는 출력의 정밀도 손실(Bezout 계수가 > 2^53에서 float64로 엄밀 표현 불가능해 a·x+b·y==g가 깨짐)이며, b<=2^53 상한은 이 정밀도를 지킨다. 메커니즘은 오류지만 결함과 remedy는 성립=채택.

P13 완수 기록 — 최근접점쌍(분할정복)(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

계산기하를 1 op 확장(P6/P7에 이은 geometry 제2탄): closest_pair(KIND_REDUCE) = 2-D 정수 점군의 최소 제곱거리분할정복(CLRS 33.4)으로 구한다. 입력 [x0,y0,x1,y1,...](2n개·정수좌표 [-1e5,1e5]) → 출력=최소 제곱 유클리드 거리 (정수 엄밀). 제곱거리만(sqrt 없음)이므로 long long/정수 float64에 닫혀, C==Python bit 일치. 최대 제곱거리 = (2e5)²×2 = 8e10 < 2^53=exact. fail-soft=점 <2(n<4) / 홀수길이 / 좌표가 비정수·[-1e5,1e5] 영역 외 → -1.0.

P13 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

3개 렌즈 적대적 리뷰 Workflow(correctness / c-safety+gate-honesty / integration, 각 finding을 검증 에이전트가 실 compile/ 실행의 mutation으로 재현) = 3개 렌즈가 동일 근본원인으로 수렴 → 1 CONFIRMED(severity=내 초기 평가 MED / 검증 에이전트는 HIGH =gate-honesty 실패[gate가 잘못된 op를 green-light]를 무겁게 봄. honest 공개로서 양론 병기·수정 내용은 동일). op 자체는 올바르다(30k+16k 적대적 케이스에서 전수조사와 mism 0)만, difftest holdout이 strip의 y-scan을 immediate neighbor(j==i+1)보다 앞으로 구동하지 않아 → strip 전방주사를 j==i+1만으로 잘라내는 regression을 gate가 falsify할 수 없다(7-이웃 정리는 「최대 7」이지 「1」이 아니므로, y 순서로 비인접인 최근접 쌍이 실재할 수 있다). 자체 재현으로 확정: 주사를 range(i+1, min(i+2, sc))로 잘라낸 mutation을 _PY/_C 양쪽에 적용 → passed=True(MISSED). falsify하는 최소 케이스를 정수 격자로 탐색해 발견(예 [0,-6,-2,-2,4,-3,-5,3]= 최근접 쌍이 y 순서로 2개 떨어짐 → full/전수조사 20이지만 j==i+1-only는 25). 수정=strip 내에서 최근접 쌍이 y-sorted로 비인접이 되는 3케이스 ([0,-6,-2,-2,4,-3,-5,3]→20 / [-4,5,-1,-3,0,-1,3,-3]→5 / [-1,-6,-1,0,-5,-4,1,-4,4,4]→8)를 holdout과 기지값 테스트에 추가 → 재실측으로 j==i+1-only mutation이 CAUGHT(passed=False, pydiff=12)·baseline은 61 cases에서 bit 일치 pass·다른 5개 mutation도 회귀 없음. 기존 6개 mutation(strip 생략/sq y 무시/좌표 상하한/정수성/빈 strip)에 더해 strip 주사 깊이도 falsify 가능해짐(P12의 gate-coverage 교훈을 geometry의 strip 주사로 확장).

P14 완수 기록 — Huffman 최적 프리픽스 부호 비용(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

데이터 압축을 1 op 확장(P5 rle_encode에 이은 compress 제2탄): huffman_cost(KIND_REDUCE) = 기호 빈도 [f0,f1,...] (비음수 정수 ≤2^40)에 대한 최적 프리픽스(Huffman) 부호의 최소 총비용=전 내부노드의 결합가중치 합(=Σ freq×부호길이). ★핵심=최적비용은 tie 불변(기호별 부호길이는 tie 처리에 따라 달라지지만, 총비용은 빈도 다중집합으로 일의)이므로 C와 Python이 동등가중 요소를 다른 순서로 꺼내도 총합은 동일=bit 일치가 깔끔하게 성립. 정수를 long long으로 운반(영역 가드로 < 2^54로 속박=overflow 없음).

P14 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

3개 렌즈 적대적 리뷰 Workflow(correctness / c-safety+gate-honesty / integration, 각 finding을 검증 에이전트가 실 mutation으로 재현) = 3 CONFIRMED(모두 overflow bail 경계의 gate-coverage·op 자체는 올바르고 tie 불변도 50k+4k+20k로 확정완료). correctness 계열의 지적 0 (tie 불변 claim·2큐법의 최적성은 견고). CONFIRMED는 모두 「merge-total>2^53의 fail-soft 경계」의 망라:

P15 완수 기록 — 최장 증가 부분수열의 길이(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

탐색/선택을 1 op 확장(P8 binary_search/kth_smallest에 이은 search 제2탄·DP/patience sorting의 신규 알고리즘 계열): lis_length(KIND_REDUCE) = 임의의 NaN-free double 열의 최장 강증가 부분수열(LIS)의 길이patience sorting으로 구한다. 비교만(값에 산술을 가하지 않음)이므로 길이는 배열 고유로 일의=C==Python bit 일치. tails[k]에 길이 k+1의 증가 부분수열의 최소 말미를 두고, 각 요소에서 tails[mid] < x(bisect_left·강증가) 위치를 치환 또는 말미 확장(O(n log n)). 빈→0.0, NaN 혼재→-1.0 fail-soft(x != x로 검출).

P15 적대적 리뷰 결과(2026-08-17, [[feedback_no_solo_ai_judgment]])

3개 렌즈 적대적 리뷰 Workflow(correctness / c-safety+gate-honesty / integration, mutation 검증) = findings 0(전 렌즈 지적 없음). patience sorting의 강증가 비교·NaN 가드·tails 버퍼 안전·O(n²) DP oracle의 독립성·holdout의 강증가 단독 구동을 검증했고, falsify 가능한 결함은 검출되지 않음. 사전의 mutation 3/3 포착(강증가 <<=/NaN 가드/이분탐색 방향)과 40k DP 일치로 gate는 견고.

P16 완수 기록 — 전도수(마스터 정렬법)(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

통계를 1 op 확장(P9 count_distinct/mode_value에 이은 stat 제2탄): count_inversions(KIND_REDUCE) = 임의의 NaN-free double 열의 전도수(i<j이면서 a[i] > a[j]인 쌍의 수)를 계수 병합정렬로 O(n log n)에 구한다. 비교만(값에 산술 없음)이므로 count는 배열 고유로 일의 =C==Python bit 일치. 병합 시 우측 열을 먼저 취할 때마다 남은 좌측 열 수를 가산(고전적). count는 비음수 정수이므로 -1.0이 safe sentinel: NaN→-1.0 fail-soft, 빈/단일→0.0. 등가는 전도가 아니다(tie로 좌측을 먼저 취함=arr[i] <= arr[j]).

P16 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

★worktree 격리 리뷰의 첫 적용이 성공: 3개 렌즈 × 격리 git worktree(각 에이전트가 cd76da0으로부터 자기 전용 copy를 만들어 mutation) → 본 repo의 algo.py는 시종 clean(검증 에이전트도 「real repo는 read only·격리 worktree에서 mutation·뒷정리 완료」라고 명기). P14의 오염 문제를 구조적으로 해소. 결과=2 CONFIRMED(둘 다 LOW)·correctness 계열 0(op는 올바름):

P17 완수 기록 — 최대 부분수열합(Kadane 법)(2026-08-17, Opus5[1m]/ultracode, 12h 자율)

탐색/최적화를 1 op 확장(P8 binary_search/kth_smallest·P15 lis_length에 이은 search 제3탄): max_subarray(KIND_REDUCE) = 정수값 double 열의 연속 부분수열의 최대합Kadane의 O(n) 리셋 주사(cur = max(0, cur+x); best = max(best, cur))로 구한다. 빈 부분수열을 허용(합 0)하므로 답은 항상 ≥ 0 (전 음수→0.0)=-1.0이 safe sentinel. 정수 영역(각 |x| ≤ 2^52이면서 절댓값의 진행합 ≤ 2^52)에서 전 부분합을 엄밀 정수 < 2^53으로 유지 → 답은 엄밀· C==Python bit 일치. 독립 오라클(전 O(n²) 부분수열의 전수조사 최대)은 정수 덧셈의 결합법칙이므로 Kadane과 엄밀히 일치. fail-soft -1.0 = NaN / inf / 비정수 / |x| > 2^52 / 진행합 오버플로우.

P17 적대적 리뷰 후 강화(2026-08-17, [[feedback_no_solo_ai_judgment]])

worktree 격리 리뷰(4 에이전트·3개 렌즈 + 적대적 verify) = 1 CONFIRMED(LOW·gate-honesty) / refuted 0. 검증 에이전트는 격리 worktree에서 전부 재현하고, 본 repo의 algo.py 무오염(status --porcelain은 auto의 SESSION_SUMMARY뿐)을 명기. correctness/integration 계열 0(op는 올바름):

2026-09-03: 적대적 리뷰(algo + C codegen)의 수정 8건