# CRM AppRelease `0.22.0`

This immutable CRM AppRelease preserves the complete `0.21.0` metadata and
consumer handlers. It adds the sfcrm-owned read-only UI Apps handler and
declares its existing private Runtime dependencies:

```text
AppMetadataViewV2 + ReadEffectivePermissions
```

The handler serves the established `/ui-api/apps` Salesforce route through the
one private Platform target. Runtime owns trusted delegation, immutable Catalog
selection, effective authorization, and revision/generation receipts. sfcrm
owns the Salesforce-compatible response projection. It consumes the published
application-navigation component from the same immutable AppMetadataViewV2 and
does not install a repository, administrative, process-local, or legacy
fallback. Missing, stale, mixed-revision, duplicate, or malformed authority
fails closed.

- App: `io.nexuscrm.sfcrm`
- semantic version: `0.22.0`
- AppReleaseDigest:
  `sha256:9ecb8b4cd58117164e6e060211ed4a0e6e3d5c4ed4824319dc0f56703449ec80`
- MetadataBundleDigest:
  `sha256:7a8313c7d5640ffe88c09a9ef37b5b3b556bb34bd76459d74ae052197626f8e1`
- component count: `70` (unchanged)
- sfcrm provided capability count: `15`
- source input revision: `63140ce127cc4e82142ea0275fd6270f50702c10`
- source tree digest:
  `sha256:76adef554856e2a8f0d1eed8dabee3c16e0b43750fff768d2792fa0ad1aed1de`
- contract module: `v0.2.25`
- wire module: `wire-go/v0.1.23`

This release adds no RPC, Runtime engine, Worker family, serving binary,
Gateway, metadata authority, process-local fallback, deployment configuration,
or production activation. Production routing, metadata, Flow state, BOM, and
deployed services remain unchanged.

`app-package.json` is canonical and reproducible from the exact source input.
`publisher-attestation.json` binds that package to its source revision.
`publisher-public-key.json` is verification material only; it does not create
publisher trust.

Rebuild and verify:

```bash
git worktree add /tmp/nexuscrm-app-packs-0.22.0-source \
  63140ce127cc4e82142ea0275fd6270f50702c10
cd tools/crm-app-release
GOWORK=off go test ./... -count=1
GOWORK=off go run . build \
  --pack-root /tmp/nexuscrm-app-packs-0.22.0-source/salesforce-crm-standard \
  --output /tmp/crm-app-package-0.22.0.json
cmp /tmp/crm-app-package-0.22.0.json \
  ../../releases/io.nexuscrm.sfcrm/0.22.0/app-package.json
GOWORK=off go run . verify \
  --package ../../releases/io.nexuscrm.sfcrm/0.22.0/app-package.json \
  --attestation ../../releases/io.nexuscrm.sfcrm/0.22.0/publisher-attestation.json \
  --public-key ../../releases/io.nexuscrm.sfcrm/0.22.0/publisher-public-key.json
```
