Skip to content

fix: add Jarvis Consumer RC package loop#830

Merged
artemgetmann merged 1 commit into
mainfrom
codex/jarvis-consumer-rc-fast-20260531
May 31, 2026
Merged

fix: add Jarvis Consumer RC package loop#830
artemgetmann merged 1 commit into
mainfrom
codex/jarvis-consumer-rc-fast-20260531

Conversation

@artemgetmann
Copy link
Copy Markdown
Owner

Review Fast Path

  • User path fixed: local Jarvis Consumer RC validation can use /Applications/Jarvis Consumer.app without waiting on Apple notarization.
  • Proof: bash -n scripts/package-jarvis-consumer-rc.sh scripts/package-consumer-mac-app.sh scripts/package-consumer-mac-app-fast.sh scripts/rebuild-relaunch-consumer-mac-app.sh scripts/open-consumer-mac-app.sh scripts/package-openclaw-mac-dist.sh; pnpm exec vitest run test/scripts/jarvis-consumer-rc-package.test.ts test/scripts/consumer-product-rename.test.ts; node --import tsx scripts/consumer-runtime-identity.ts json --instance jarvis-consumer-rc; git diff --check.
  • Shared-state footgun removed: RC wrapper pins app name, install path, bundle id, and jarvis-consumer-rc instance identity while explicitly avoiding /Applications/Jarvis.app, OPENCLAW_CONSUMER_STABLE_TCC_IDENTITY=1, and shared ai.openclaw.gateway bootout/replacement.
  • Still hurts: full --fast/--notarize install runs were intentionally not executed because another worker owns the current /Applications/Jarvis Consumer.app notarization job.

Why This Matters

  • Local product validation needs a stable side-by-side RC app that does not inherit the slow public release ceremony.
  • Notarized distribution remains available as an explicit mode when the artifact is meant for users.

Scope Boundary

  • Added scripts/package-jarvis-consumer-rc.sh for the stable RC loop.
  • Documented the two commands in apps/macos/README.md.
  • Added static packaging guard tests.
  • Did not touch /Applications/Jarvis.app, Render/backend, shared gateway runtime, or the active one-off notarization worker.

Verification

  • bash -n scripts/package-jarvis-consumer-rc.sh scripts/package-consumer-mac-app.sh scripts/package-consumer-mac-app-fast.sh scripts/rebuild-relaunch-consumer-mac-app.sh scripts/open-consumer-mac-app.sh scripts/package-openclaw-mac-dist.sh passed.
  • pnpm exec vitest run test/scripts/jarvis-consumer-rc-package.test.ts test/scripts/consumer-product-rename.test.ts passed: 2 files, 7 tests.
  • node --import tsx scripts/consumer-runtime-identity.ts json --instance jarvis-consumer-rc returned isolated label ai.openclaw.consumer.jarvis-consumer-rc.gateway, port 31417, and state dir under ~/Library/Application Support/OpenClaw/instances/jarvis-consumer-rc/.openclaw.
  • git diff --check passed.

AI Assistance

  • AI-assisted
  • Testing degree: targeted

@artemgetmann
Copy link
Copy Markdown
Owner Author

Fast RC install proof

Ran from codex/jarvis-consumer-rc-fast-20260531 at commit 5ab98cccee:

bash scripts/package-jarvis-consumer-rc.sh --fast

Result: exit 0.

Key output from the installed app verifier:

  • path=/Applications/Jarvis Consumer.app
  • display_name=Jarvis Consumer
  • bundle_id=ai.openclaw.consumer.mac.consumer-rc
  • instance_id=jarvis-consumer-rc
  • signing_authority=Developer ID Application: ARTEM GETMAN (SKDYY4SBVV)
  • team_id=SKDYY4SBVV
  • code_format=app bundle with Mach-O universal (x86_64 arm64)
  • gateway_port=31417
  • gateway_launchd_label=ai.openclaw.consumer.jarvis-consumer-rc.gateway
  • Gatekeeper rejected as Unnotarized Developer ID, expected for --fast because this proof intentionally did not run --notarize.

Independent after-checks:

stat -f 'Jarvis.app after: path=%N mtime=%m ctime=%c size=%z inode=%i' /Applications/Jarvis.app

Result matched the before snapshot exactly:

  • before: mtime=1778746797 ctime=1778901176 size=96 inode=399335438
  • after: mtime=1778746797 ctime=1778901176 size=96 inode=399335438
/usr/libexec/PlistBuddy -c 'Print CFBundleDisplayName' -c 'Print CFBundleIdentifier' -c 'Print OpenClawConsumerInstanceID' '/Applications/Jarvis Consumer.app/Contents/Info.plist'

Result:

Jarvis Consumer
ai.openclaw.consumer.mac.consumer-rc
jarvis-consumer-rc
codesign --verify --deep --strict --verbose=2 '/Applications/Jarvis Consumer.app'
codesign -dv --verbose=4 '/Applications/Jarvis Consumer.app'

Result:

  • /Applications/Jarvis Consumer.app: valid on disk
  • /Applications/Jarvis Consumer.app: satisfies its Designated Requirement
  • Authority=Developer ID Application: ARTEM GETMAN (SKDYY4SBVV)
  • TeamIdentifier=SKDYY4SBVV

Shared/default gateway after-check:

launchctl print gui/$(id -u)/ai.openclaw.gateway

Result stayed on /Applications/Jarvis.app/Contents/Resources/OpenClawRuntime/openclaw/dist/index.js, port 18789, label ai.openclaw.gateway, pid 49665. No shared gateway bootout/replacement happened.

Isolated RC gateway after-check:

launchctl print gui/$(id -u)/ai.openclaw.consumer.jarvis-consumer-rc.gateway

Result:

  • state running
  • label ai.openclaw.consumer.jarvis-consumer-rc.gateway
  • entrypoint /Users/user/Library/Application Support/OpenClaw/instances/jarvis-consumer-rc/.openclaw/lib/openclaw-bundled/dist/index.js
  • port 31417
  • OPENCLAW_CONSUMER_INSTANCE_ID=jarvis-consumer-rc
  • profile consumer-jarvis-consumer-rc

Cleanup:

  • SwiftPM dirtied apps/macos/Package.resolved; restored it with git restore apps/macos/Package.resolved per task instructions.
  • Final git status --short --branch is clean.

Not run: --notarize, per proof boundary.

@artemgetmann artemgetmann merged commit 7a166bf into main May 31, 2026
4 of 9 checks passed
@artemgetmann artemgetmann deleted the codex/jarvis-consumer-rc-fast-20260531 branch May 31, 2026 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant