# CRM AppRelease `0.5.0`

This immutable CRM AppRelease adds the recycle-bin read capability required by
the D2A recycle-read ownership slice. It preserves the query,
related-list-count, and record-access capabilities from `0.4.0`.

- App: `io.nexuscrm.sfcrm`
- semantic version: `0.5.0`
- AppReleaseDigest:
  `sha256:bf40d8ee66eacc173df2c53a1da8cdb558e6c03efcc57781ec7d618799c76666`
- MetadataBundleDigest:
  `sha256:1509342f01cd4b648b4e1d69a0427ec849211e63caef702a00c9e543398072ec`
- component count: `61`, exactly one per component in the source
  `salesforce-crm-standard/pack.json`
- source input revision: `dcf005bd0f9ea4a45843d7889e6ac8cdc7f6d97b`

The AppManifest declares exactly four L1 service-handler capabilities:

- `io.nexuscrm.sfcrm.query.v1` requires `runtime.records.query.v1`;
- `io.nexuscrm.sfcrm.recycle-bin-read.v1` requires
  `runtime.records.list-recycle-bin.v1`;
- `io.nexuscrm.sfcrm.related-list-counts.v1` requires
  `runtime.records.related-counts.v1`;
- `io.nexuscrm.sfcrm.ui.record-access.v1` requires
  `runtime.records.evaluate-access.v1`.

`app-package.json` is canonical and reproducible from the exact source inputs.
`publisher-attestation.json` binds the release tuple and exact source
provenance. `publisher-public-key.json` is verification material, not publisher
trust; Catalog's independent trust authority must approve that exact key before
import. The AppRelease contains no service image identity. L2 binds the
independently published AppService image in its immutable BOM.

This artifact does not select an active AppInstallation, publish an AppService
image, switch Gateway traffic, or create a fallback. Those ownership changes
remain explicit L2 activation gates.

Rebuild and verify:

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