-
hanyul released this
2026-10-20 10:34:07 +09:00 LINKS 1.0.16
이 릴리스는 이전 릴리스 1.0.15(
37f9ca3af3) 위에 VX/VX Ace 실행 준비 소요 시간 단축(T79 A·B·C·D)과 북마크 저장·ARCA pin 변경 자동 재준비를 더했습니다. 최종 소스는79c115dc9c, 루트 패키지는 1.0.16, ARCA pin은 exact 0.1.21(변경 없음)입니다. schema 변경은 없습니다(infra/schema·infra/migrations는 1.0.15와 동일).업그레이드: 1.0.15 → 1.0.16은
sh update.sh만 실행합니다- 갱신 방법: 배포 디렉터리에서
sh update.sh만 실행합니다.reset.sh는 실행하지 않습니다. - schema: migration이 없으므로
update.sh는[4/6]에서 pending migration을 출력하지 않습니다. 1.0.15 image를 rollback pin으로 지정하면 같은 DB로 되돌아갑니다. - 배포 파일 변경:
update.sh가 받는 5개 파일 중compose.yaml(catalog 환경 변수LINKS_RUNTIME_REPREPARE_ON_PIN_CHANGE한 줄, 기본true)과ops/runtime-package-coordinator.sh(상주 claim worker 프로토콜)가 바뀌었고update.sh가 둘을 설치합니다. 두 파일은 1.0.16 worker image와 짝이므로 1.0.15 image와 섞어 쓰지 않습니다.ops/deploy-registry.sh(update.sh),reset.sh,infra/docker/Caddyfile은 1.0.15와 byte 단위로 같습니다..env.example에 위 키가 추가됐지만 선택 항목이라.env.production에 할 일은 없습니다.
cd /volume1/docker/links sh update.sh운영자 작업은 없습니다. 기존 MV/MZ·VX/VX Ace 실행 버전, 세이브, RTP, 설정은 그대로입니다. 원본 game library는 읽기 전용으로 유지합니다. 갱신 뒤 설치본의 첫 재준비는 원본을 한 번 더 복사한 뒤 기존 sealed input과 대조하고(copy-then-dedupe), 기존 CAS object의 첫 재사용은 전체 검증 1회로 검증 기록을 남깁니다. ARCA pin이 같으므로 catalog 기동 때의 pin 변경 재준비 sweep은 대상이 없습니다.
변경 내용
A. package job 검증·container 축소(
apps/worker,ops/)- VX/VX Ace package job은 ARCA release set(contracts 결속 포함)을 job당 한 번(
claim) 전체 검증하고,stage·publish는 그 identity 기록을 확인만 합니다(다르면 전체 검증). - coordinator는 job마다 상주 claim worker 하나를 두어 3초마다 lease를 갱신하고 Builder 진행을 중계하며, lease를 잃으면 Builder를 멈춥니다(stdin stage/
end프레이밍,end가 순서 장벽). Builder 밖 container 시작은 job당 6→4,cleanupAttempts·capability 확인은 job당 1회입니다.
B. CAS object 검증 기록(
packages/runtime-builder)- game·RTP CAS object의 전체 검증 결과를 object 옆 봉인된
<hash>.verified.json에 남깁니다. 이후 준비의 import와 build job의 load는 stat identity가 같으면 archive 재hash를 생략하고, 기록이 없거나 identity가 다르면 전체 검증으로 돌아가며 손상 object는 거부합니다. - GC는 마지막 참조가 사라진 RGSS portable object를 기록과 함께 수거합니다.
C. 원본 본문 1회 읽기(
packages/scanner,packages/contracts,apps/web)- 최초 검사 pass는 경로·size·mtime·ctime만 열거하고(VX는
Game.ini만 읽음) 복사 pass가 hash와 봉인을 한 번에 수행합니다. verify-source는 파일을 읽지 않고 목록 metadata digest를 대조합니다. 준비당 원본 읽기 횟수는 MV/MZ 2→1회, VX/VX Ace 3→1회입니다. - 나이 판정으로 대기를 생략하지 않는 경로는 두 번째 관찰을 유지하고, 복사 전후 identity·size·mtime·ctime·파일 집합 비교와 복사 중 변경의
RUNTIME_SOURCE_CHANGED는 그대로입니다. partial 사본의 identity는 쓰기 descriptor에 결속합니다. - 준비 화면은 MV/MZ 4단계·VX/VX Ace 5단계를 번호로 표시합니다. 준비 상태 API의
inspectionPass·operation값이 이에 맞춰 바뀌었습니다.
D. 자동 준비 요청(
apps/api,packages/db)- 북마크 저장(
PUT /bookmarks/{installationId})이 저장한 사용자의 실행 준비를 요청합니다. 같은 설치본의 준비 중 요청은 설치본 잠금 아래에서 replay하고, 요청 실패는 북마크 응답에 영향을 주지 않습니다. - ARCA pin을 바꾼 image의 catalog는 기동 때 한 번 다른 release로 만든
rgss-wasmreadyactive build의 재준비를 마지막 준비 요청자 이름으로 priority -20에 요청합니다(LINKS_RUNTIME_REPREPARE_ON_PIN_CHANGE, 기본 켬). 발급 여부는 서버가 쓴 audit(after.trigger: arca-pin·after.release)로 설치본·release마다 한 번만 판정하고, worker가 없거나 준비 중이면 30분간 1분·그 뒤 10분 간격으로 다시 돕니다./runtime-preparations/mine은 자동 요청을 숨기고 관리자 감사 기록 API는trigger를 반환합니다.
검증과 남은 범위
- PASS(릴리스 소스
79c115d, 코디네이터 실행): static(Prettier·ESLint·typecheck·docs-static), 전체 unit 186 files·1,669 tests, schema 40 files·288 tests(빈 DB fresh 적용과 baseline+0001~0005 사슬 적용의 구조 등가 포함), 문서 검사,git diff --check,run-catalog-browser(Chromium 153, 21개 단언, 오류 0), no-cache frozen install image build(이미지 안 root 1.0.16·migration 5개·자동 갱신 표식), foundation,run-browsermatrix(MZ·MV × Chromium·Firefox browser-acceptance 4개와 guest-play-acceptance 4개),run-runtime-workers. - PASS(브랜치별 작업자·독립 리뷰어 실행): 합성 fixture의 읽기 횟수 unit(VX 3→1, MV/MZ 2→1, release 3→1, CAS 재hash 0), lease 상실 → Builder 중단·cancel → attempt 실패, 검증 기록 누락·identity 불일치의 전체 검증 fallback과 손상 object 거부, 복사 중 변경 →
RUNTIME_SOURCE_CHANGED, 북마크·pin sweep schema test(동시 저장 action 1개, release당 자동 요청 1회, 요청자 변경·동시 catalog·재시작에 추가 job 0), 독립 Sol 리뷰(A 3회·B 2회·C 2회·D 3회) 병합 가능. - 변경 전 실측(운영 NAS, 2026-10-19, 재준비 1건, 1,716 파일·436 MB): enqueue→package 완료 231 s, 그중 container·Compose 비용 약 145 s. 변경 뒤 같은 NAS·설치본 재측정은 배포 뒤 실행 예정(NOT RUN).
- 알려진 제한·NOT RUN: 실제 VX/VX Ace 게임의 브라우저 타이틀·save/load 확인, 실제 모바일 기기·실제 망, 실제 오디오 출력, 격리 dind의 1.0.15→1.0.16
update.sh리허설.
배포 이미지와 파일
- Git annotated tag는 1.0.16이고 최종 소스는
79c115dc9c(branchmain)입니다. - 단일 linux/amd64 이미지:
git.2ex.dev/hanyul/links:1.0.16=git.2ex.dev/hanyul/links:latest(index digestsha256:4994796a90bb7c54b866be8c4104b12adbb70f6cc0c8f0ce2e6a605a5f12c09c, 로컬 image ID와 동일). - release asset은 없습니다. 배포 파일은
update.sh가 tag에서 HTTPS로 받습니다.
Downloads 2
-
Source code (zip)
0
2026-10-20 10:34:07 +09:00 -
Source code (tar.gz)
0
2026-10-20 10:34:07 +09:00
- 갱신 방법: 배포 디렉터리에서