• ARCA 0.1.18

    ARCA 0.1.18 변경 사항

    이전 버전: 0.1.17. Builder OCI archive를 Docker Engine 24의 docker load도 읽을 수 있는 형식으로 바꾼 release다(LINKS 요청, Synology Container Manager Docker 24.0.2). native runtime(mkxp-z core JS·WASM)·SDK bundle·contracts는 0.1.17과 같다. 삭제된 공개 API는 없고 새 오류 code도 없다. rgss23-runtime-status-v1, inspection v1/fingerprint ABI, contracts schema, Builder subcommand·기본 출력·exit code는 그대로다.

    업그레이드 시 확인할 동작 변경

    • Builder archive 형식: rgss23-builder-<version>.oci.tar는 BuildKit docker exporter(type=docker, rewrite-timestamp, name=rgss23-builder:<version>)로 만든다. OCI image layout(oci-layout·index.json·blobs/sha256/)에 docker-save manifest.json(RepoTags rgss23-builder:<version>)이 추가돼 Docker 24와 25+의 docker load가 모두 읽는다(stdin·--input 모두). 파일 이름, MIME application/vnd.oci.image.layout.v1.tar, release pin(builderDigest = OCI manifest digest)과 contracts schema는 바뀌지 않았다. 0.1.17까지의 순수 OCI layout archive는 Docker 24에서 open …/blobs/json: no such file or directory로 실패했다.
    • load 뒤 image 참조(host가 바꿔야 할 것): image ID는 image store마다 다르다. Docker 24(graphdriver)는 image ID = config digest이고 RepoDigests를 기록하지 않아 manifest digest로 docker image inspect할 수 없다. Docker 25+ containerd image store는 image ID = manifest digest이고 config digest로는 inspect할 수 없다. host는 release-set 검증(manifest digest pin)은 그대로 두고 docker load 뒤 daemon이 resolve한 image ID로 실행한다. loadArcaBuilder()는 archive에서 두 digest를 읽어 resolve된 값을 imageId로 반환하므로 그 값을 쓰면 된다({ digest, imageId, imageName, loaded }, ArcaBuilderLoadResult 타입 추가, 가산).
    • archive 검증: npm package의 node/builder.mjs가 순수 JS tar reader로 OCI index→manifest→config→layer hash와 manifest.json의 Config·Layers가 같은 blob을 가리키는지 대조하며, PAX 길이 위장·BOM 이름·디렉터리 별칭·경로 탈출·대기 확장 header·잘못된 종료 marker를 ARCA_BUILDER_LOAD_FAILED로 거부한다. release verifier는 manifest.json을 필수로 요구한다.
    • artifact identity: Builder OCI archive bytes·digest와 npm tgz(npm README·deploy.d.ts·node/builder.mjs)가 바뀐다. runtime ZIP은 provenance.json·SHA256SUMS만, contracts tgz는 package.json만 0.1.17과 다르다.

    추가된 API·계약

    • @rgss23/arca /deploy: loadArcaBuilder() 반환에 imageId·imageName 추가(ArcaBuilderLoadResult). 기존 digest·loaded와 오류 code(ARCA_BUILDER_LOAD_FAILED, ARCA_BUILDER_DIGEST_MISMATCH, ARCA_BUILDER_DOCKER_UNAVAILABLE, ARCA_BUILDER_ARGUMENT_INVALID)는 그대로다. arcaBuilderRunArguments()는 image ID·tag·digest 어느 참조든 받는다.

    검증 범위와 알려진 제한

    • Docker 24.0.2: docker:24.0.2-dind container에서 0.1.18 archive를 stdin으로 docker load(exit 0), config digest로 inspect·실행 성공, manifest digest inspect 실패(예상). 기존 OCI-only archive는 같은 환경에서 LINKS 오류 재현.
    • Docker 29.8.0(containerd store): load exit 0, tag·manifest digest inspect 성공, config digest inspect 실패(예상).
    • release Builder gate·source-free consumer gate는 imageId로 inspect·package 실행 PASS.
    • Synology NAS 실환경, Linux 재현, 사람 acceptance, LINKS 적용은 NOT RUN이다. 0.1.17의 게임패드·터치 자동 근거와 NOT RUN 범위는 유지한다.

    게시 identity와 registry 검증은 현재 상태, 상세 값은 해당 release manifest/pin을 따른다.

    배포 검증

    • release source: 0c66b02e9d
    • manifest SHA-256: 73b00e8d661545c956050c0ec5b1165eeda7d93709e47a01e6271a15d7310771
    • Builder digest(pin): sha256:b9c21f02d74701b270b2f6bfafbf16a3a53d38d5081e2985bf137331abb38c4d · Builder config digest(Docker 24 image ID): sha256:e67870b93573c261541fd2ab713139bc52a775025170232bceb8b1b812bf210f
    • native runtime: rgss23-core.js 2f71fcaa…, rgss23-core.wasm d527ce81…(0.1.16·0.1.17과 동일).
    • 단위 테스트 469개, 타입 검사, release 회귀 45개(archive reader 8 포함), browser 도구 회귀 117개, runtime lock·native 진단 lock·native 준비 recipe 검증, git diff --check: PASS(2026-10-11).
    • release:build·release:verify·release:npm:test·release:reproduce(clean detached worktree, pin·세 artifact·Builder digest·npm tgz byte 동일): PASS(2026-10-11).
    • runtime image·named volume 재구축 뒤 clean rebuild export가 검증본과 byte 동일(JS·WASM·provenance): PASS.
    • npm: @rgss23/arca@0.1.18 (Forgejo registry).

    0.1.17 대비 전체 변경

    Downloads 9