← 목록
기타 2026-07-30 5KB 읽기 4분

작업1 — crowny-deacon 장부 스케일 근본수리

개요

crowny-deacon(deacon.crowny.org:9772) 티켓.psv가 75,744B(캡 초과)까지 자란 상태에서 ①서버 조회가 장부 꼬리를 못 보는 무증상 오류(완료 티켓 재claim·신규 티켓 미발견) ②장부압축.한선이 65,535B 절단분만 압축·원자 rename → T72~T111 40 ID 유실(복구됨, feedback_장부압축_65535절단_유실사고.md) 두 사고 재발을 근본 차단하는 3건 수리.

라이브 data/는 읽기만, 수정 없음 — 정리는 사용자 실행으로 별도 진행 중.

무엇을 했는지

1. 장부압축.한선 — 크기 게이트 + 안전 경로 + 자가검증

  • 파일크기(경로): 체계("(wc -c < ... ) 2>/dev/null")로 VM 읽기 캡과 무관하게 바이트 크기 확인.
  • 60,000B 초과 시 VM 읽기()를 완전히 우회하는 안전 경로(압축하기_안전)로 전환 — perl이
파일을 직접 open→last-wins dedup→open 별도 파일 write까지 전량 처리(python 미사용, perl만).
  • _고유ID수_외부(경로): perl 기반 독립 오라클로 유니크 ID 수를 계산. VM 경로/안전 경로 양쪽
모두 압축 전 입력 고유ID수 vs 압축 후 산출 고유ID수를 비교해 다르면 원본 무접촉 중단 ([중단] 자가검증 불일치 ... 출력, tmp 산출물 삭제, rename 안 함). 안전 경로는 추가로 tmp 파일 자체를 재검증한 뒤에만 원자 rename.
  • 백업하기읽기()+쓰기() 대신 cp -p로 교체 — 백업 자체가 65,535B에서 잘리던 구멍 제거.
  • 함정: perl -ne '...' file1 file2 형태는 -n의 암묵 <> 다이아몬드가 두 번째 인자(출력경로)
까지 입력파일로 삼켜버려 $ARGV[1]이 불안정했음(실측, exit 1) → -e로 바꿔 open(my $in,...) 으로 입력파일을 직접 열도록 수정.

2. 미션장부.한선 — 결과요약 300자 절단 + 전문 파일 참조

  • 티켓기록3(유일한 실제 append 지점)에서 _결과요약절단(티켓ID, 결과요약) 경유:
300자 초과 시 전문을 data/보고/<티켓ID>.txt에 저장하고, 장부에는 300자 절단본 + …[전문:<경로>] 참조만 기록. 300자 이하는 그대로 통과.

3. 미션장부.한선 — 읽기 캡 가드

  • _PSV읽기(파일)_장부캡점검(파일) 추가: 60,000B 초과 시
체계("echo '[장부캡경고] ... ' >&2")로 stderr 경고 발령(파일당 1회, 맵으로 중복 억제). 무증상 캡 초과를 유증상으로 전환.

E2E 검증 결과 (격리 사본, /private/tmp/.../scratchpad/작업1/)

  1. 75KB 장부 압축: 입력 75,744B, 유니크 ID 112개(perl 오라클) → 안전 경로 실행 →
출력 33,890B, 유니크 ID 112개(perl 오라클 재확인) — 완전 보존, diff 로 ID 집합 일치 확인(IDS_MATCH).
  1. 60KB 미만 회귀: 4,032B(61행, 20 ID×3버전) → 기존 VM 경로 → 20행, 20 ID, last-wins
정상(최신 rev만 남음).
  1. 결과요약 절단+참조: 1,500자 결과요약 입력 → 장부 저장값 407자(300+참조태그),
data/보고/T1.txt에 전문 1,500자 그대로 저장 확인. 300자 이하 입력은 그대로 통과 확인.

컴파일: CROWNY_STRICT=1 hanseonc_high, stderr 2>/dev/null 분리(toau 오염 방지) — 장부압축.한선·미션장부.한선 모두 STRICT 0경고.

관련 파일

  • /Users/ef/crowny-deacon/장부압축.한선 (수정, 배포 완료)
  • /Users/ef/crowny-deacon/한선씨/미션장부.한선 (수정, 배포 완료)
  • 컴파일 산출(검증용, 라이브 미교체): /tmp/작업1-장부압축-LIVE.toau, /tmp/작업1-미션장부-LIVE.toau
  • 격리 검증 사본: /private/tmp/claude-501/-Users-ef/2013923d-e997-42d7-a6e8-cac6215717b5/scratchpad/작업1/
  • 사고 기록: /Users/ef/.claude/projects/-Users-ef/memory/feedback_장부압축_65535절단_유실사고.md

잔여 이슈

  • 라이브 /Users/ef/crowny-deacon/장부압축.toau는 아직 재빌드/재배포 안 됨 — 소스(.한선)만
수정·검증 완료. 실제 운영 반영은 hanseonc_high 장부압축.한선 > 장부압축.toau 재빌드 + plist(bootout→압축→bootstrap) 사이클로 적용 필요(별도 승인 후 진행 권장, 이 작업 범위 밖).
  • 라이브 data/티켓.psv(75,744B) 자체의 정리(압축 실행)는 사용자가 별도 진행 중 — 이 작업은
손대지 않음.
  • _장부캡_경고발령됨은 프로세스 메모리 내 맵이라 서버 재기동마다 리셋됨(의도된 동작 — 재기동
직후 최초 1회는 다시 경고).