$ git clone https://github.com/zkdeal/zkdeal-examples.git apps-examples Cloning into 'apps-examples'... $ git -C apps-examples checkout 54f329a04569f452ad0d32be1239ad86407a9c22 HEAD is now at 54f329a $ jq -c '{appId,selector:.callRules[0].selector,callRules:(.callRules|length)}' \ > apps-examples/packages/minimal-app/app.capabilities.json {"appId":"minimal-counter","selector":"0x7cf5dab0","callRules":1} $ cd apps-examples && docker run --rm \ > --mount "type=bind,src=$PWD,dst=/src,readonly" -w /tmp \ > node:22-bookworm@sha256:0557ac14e0d45d02ed563067b82856ca5e7aa3437fa28d98d4350ea9c3d9494a \ > bash -lc 'cp -a /src/packages/minimal-app . && cd minimal-app && npm run build && npm test' Built /tmp/minimal-app/dist/minimal-counter.app.json ok 1 - the capability manifest and executable definition stay in sync ok 2 - the one allowed action increments state without mutating the prior state ok 3 - a selector outside the allowlist is rejected and state remains unchanged ok 4 - malformed arguments and uint256 overflow are rejected ok 5 - the room rule binds exactly the declared caller, target, selector and call kind # tests 5 # pass 5 # fail 0