-
hanyul released this
2026-10-16 16:14:34 +09:00 LINKS 1.0.12
이 릴리스는 이전 릴리스 1.0.11(
8484a44e3d) 위에 ARCA를 0.1.20으로 올리고, 0.1.19 이하 Builder로 만든 VX/VX Ace 게임을 다시 준비할 때 실패하던 결함을 고쳤습니다. 최종 소스는8843007119, 루트 패키지는 1.0.12, ARCA pin은 exact 0.1.20입니다. schema 변경이 없어 migration이 없습니다.업그레이드: 1.0.11 → 1.0.12는
sh update.sh만 실행합니다- 갱신 방법: 배포 디렉터리에서
sh update.sh만 실행합니다.reset.sh는 실행하지 않습니다. - schema 변경 없음: DB schema는 1.0.11과 같습니다(
f7fe92f3…).update.sh는Pending migrations:줄을 출력하지 않습니다(대기 migration 0개). - 배포 파일 변경 없음:
update.sh가 받는 5개 파일(compose.yaml,infra/docker/Caddyfile,update.sh,reset.sh,ops/runtime-package-coordinator.sh)은 1.0.11과 byte 단위로 같습니다. 아무 파일도 설치하지 않고 image만 바뀝니다..env.example도 바뀌지 않아.env.production에 할 일이 없습니다. coordinator가 image에 든 ARCA 0.1.20 Builder OCI archive(61.9 MB)를 load합니다.
cd /volume1/docker/links sh update.sh성공하면 단계 표시 6줄 뒤에
Updated to 1.0.12 (catalog 5440e5292d11), runtime.package ready.가 출력됩니다. 격리 gate에서postgrescontainer는 다시 만들어지지 않았습니다(DB 중단 0초). 원본 game library는 읽기 전용으로 유지합니다. 이번 게시 작업에서 개발·운영 DB 초기화나 NAS 배포는 실행하지 않았습니다.기존 VX/VX Ace 게임은 "새 준비 필요"로 바뀝니다. ARCA release manifest와 Builder digest가 달라졌기 때문입니다. 로그인 사용자가 게임을 다시 준비하면 새 실행 버전(generation)이 만들어지고, 이때 서버에 보관된 게임 archive는 그대로 재사용됩니다(다시 만들지 않음, 세이브 호환 유지). 다만 브라우저 캐시는 새 build 기준이라 첫 실행 때 게임을 다시 다운로드합니다. MV/MZ 게임은 영향이 없습니다. RTP 재준비·설정 변경·DB 작업·artifact 삭제 같은 운영자 작업은 없습니다.
변경 내용
ARCA 0.1.20 pin
@rgss23/arca를 exact 0.1.20으로 올렸습니다(SA-06 빠른 시작·heap 축소 release). LINKS에는 가산 변경이며 기존 heap 경로를 유지합니다. 0.1.20의 지연 콘텐츠·선부팅·폴더 실행은 아직 적용하지 않았습니다(후속 후보).- 키보드·터치 패드 입력의
keyboard.minimumPressMs는 SDK 기본값 50 ms를 그대로 씁니다. - 새 Builder manifest의
payload.archive.chunks를 보존해 host-launch의 game·RTP descriptor로 SDK에 넘깁니다. LINKS CAS의artifact.json과 DB 형식은 바뀌지 않습니다.
이전 Builder object 재사용(결함 수정)
- 0.1.20 Builder는 같은 입력에 0.1.19와 byte가 같은 archive를 만들고 manifest에
chunks만 더합니다. 1.0.11까지는 0.1.19로 준비한 게임을 다시 준비하면 CAS import가ARTIFACT_INVALID로 실패했습니다(기존 RGSS 게임 전부 재준비 불가). - 이제 새 manifest가 보관 manifest와
chunks추가만 다를 때 보관 object와 descriptor를 그대로 재사용합니다(reused=true,chunks: null). 그 밖의 차이는 계속 거부합니다. descriptor가 유지되므로 이전 build에서 만든 세이브를 새 build에서 그대로 읽습니다.
검증과 남은 범위
- PASS: 브랜치 gate(고유 Compose project, BuildKit cache 없는 frozen install)
- 설치본 identity: ARCA 0.1.20 release manifest
a6dac661…, Builder digestsha256:6b0f47fa…, npm integritysha512-b4QlYh…(lockfile·registry metadata·registry tarball 일치). - static(Prettier·ESLint·typecheck·docs-static), 전체 unit 153 files·1,263 tests, schema 34 files·235 tests, 문서 검사,
git diff --check, deploy 기록기 96·reset 기록기 30 case, Compose config 3조합과 Watchtower label, foundation. arca-npm-check(+ 3 files·40 tests), RGSS release-set·runtime-binding(67 files)·Builder(합성 VX Ace: chunks game 1, 이전 Builder objectreused-without-chunks)·Builder 입력 5 case, Player DPR·터치 패드(Chromium·Firefox), browser acceptancemz-chromium(12개 단언, 공유 링크 게스트 실행).
- 설치본 identity: ARCA 0.1.20 release manifest
- PASS: 릴리스 gate(Compose v2.20.1, NAS 조건)
- 환경: 격리
docker:24.0.2-dind, 공식 Docker Compose v2.20.1 binary(게시 checksum 일치), stager 1026:100,./databind store, library 최상위0:0 000+ 1026 ACL, 합성 HTTPS release 서버와 합성 TLS registry. - 1.0.11 설치에서 합성 MZ ready build, ARCA 0.1.19 Builder로 만든 합성 VX Ace ready build, 로그인 사용자 세이브(MZ·VX Ace).
- 설치된 1.0.11
sh update.sh→ 1.0.12: exit 0(53초),Pending migrations:줄 없음(schemacurrent, 이력 변화 없음), 설치 0·배포 파일 크기·mtime 불변, 12개 service network 불일치 0·unhealthy 0·모두 Watchtower 제외, readiness PASS, catalog·Player 1.0.12·ARCA 0.1.20, Builder imagergss23-builder:0.1.20=sha256:a2c4940d…(Docker 24 config digest).postgres재생성 없음. - VX Ace 설치본이 "새 준비 필요"(
needs-preparation, 요청 가능)로 바뀌고, 준비 요청 → package job 성공 → 0.1.20 새 generation 게시. 두 build가 같은 game artifact 행을 쓰고 CAS 파일의 bytes·mtime·inode가 1.0.11 때와 같음(보관 object 재사용, manifest에chunks없음). Player로 실행(rgss-wasm, host-launch·game archive 200, bytes 일치), 1.0.11에서 만든 세이브가 새 build에서 200(같은 ETag·bytes, 이전 build 출처). - 1.0.12에서 처음 준비한 두 번째 합성 VX Ace는 CAS manifest와 host-launch game descriptor에 같은
chunks(sha256, 1 MiB, digest 1개)가 있음. MZ build·세이브 불변. 재-update exit 0(12초), 변경 없음, 확인 반복 PASS. - gate에서 게시된 두 package(재사용 object·chunks 포함)를 실제 ARCA runtime(heap 경로)에서 실행: 키보드·터치 패드 입력, Player 음량·음소거 조절, DPR 표시 PASS(Chromium).
- 환경: 격리
- 리뷰: R64 '병합 가능'. R64 P2(기존 결함: generic artifact GC가 3파일 RGSS portable CAS object를 거부해 참조가 모두 사라진 object가 수거되지 않음, 삭제 위험은 없고 저장 공간 누수 가능)는 이 릴리스에서 고치지 않고 개발 계획의 후속 항목으로 기록했습니다.
- 알려진 제한·NOT RUN: 실제 VX/VX Ace 게임과 실제 RTP, 실제 오디오 출력(합성 게임에 소리 없음), 실제 모바일 기기, 실제 NAS 갱신, 지연 콘텐츠·선부팅, browser matrix의
mv-chromium·mz-firefox·mv-firefox.
배포 이미지와 파일
- Git annotated tag는 1.0.12이고 최종 소스는
8843007119입니다(branchrelease-1.0.12). - 단일 linux/amd64 이미지:
git.2ex.dev/hanyul/links:1.0.12=git.2ex.dev/hanyul/links:latest - 원격 digest:
sha256:5440e5292d11d2a6a0e518d50ffc3218b6893e970c274f3acb500aea61e0b6bb - release asset은 없습니다.
update.sh가 tag1.0.12의 5개 배포 파일을 HTTPS로 받습니다(1.0.11과 같은 내용). 대응은update.sh=ops/deploy-registry.sh,reset.sh=ops/reset-registry.sh이고, 나머지는compose.yaml·infra/docker/Caddyfile·ops/runtime-package-coordinator.sh입니다.
Downloads 2
-
Source code (zip)
0
2026-10-16 16:14:34 +09:00 -
Source code (tar.gz)
0
2026-10-16 16:14:34 +09:00
- 갱신 방법: 배포 디렉터리에서