# CRM AppRelease `0.9.0`

This immutable CRM AppRelease adds the proof-bearing record-view attachment
capability required by the D2A record-view ownership slice. It preserves every
capability published by `0.8.0`.

- App: `io.nexuscrm.sfcrm`
- semantic version: `0.9.0`
- AppReleaseDigest:
  `sha256:3e52144394d3d7b486d419a6fee9249f3d860e6f671e52c9ec9ec500ad6d6a73`
- MetadataBundleDigest:
  `sha256:7b4d07dd9d5ea5e3586c13c20039f952dd2cec0b90ee8b158f9ed12174f85913`
- component count: `62`, exactly one per component in the source
  `salesforce-crm-standard/pack.json`
- source input revision: `87baa38e5fba0bef2d9261092092e56a9f9a764c`

The AppManifest declares exactly seven L1 service-handler capabilities:

- `io.nexuscrm.sfcrm.query.v1` requires `runtime.records.query.v1`;
- `io.nexuscrm.sfcrm.record-mutation.v1` requires
  `runtime.records.mutate.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`;
- `io.nexuscrm.sfcrm.ui.record-view-attachments.v1` requires
  `runtime.records.resolve-attachment-sources.v1`;
- `io.nexuscrm.sfcrm.ui.record-view-read.v1` requires
  `runtime.records.read-record-view.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.9.0-source \
  87baa38e5fba0bef2d9261092092e56a9f9a764c
cd tools/crm-app-release
GOWORK=off go test ./... -count=1
GOWORK=off go run . build \
  --pack-root /tmp/nexuscrm-app-packs-0.9.0-source/salesforce-crm-standard \
  --output /tmp/crm-app-package-0.9.0.json
cmp /tmp/crm-app-package-0.9.0.json \
  ../../releases/io.nexuscrm.sfcrm/0.9.0/app-package.json
GOWORK=off go run . verify \
  --package ../../releases/io.nexuscrm.sfcrm/0.9.0/app-package.json \
  --attestation ../../releases/io.nexuscrm.sfcrm/0.9.0/publisher-attestation.json \
  --public-key ../../releases/io.nexuscrm.sfcrm/0.9.0/publisher-public-key.json
```
