# CRM AppRelease `0.25.0`

This immutable CRM AppRelease preserves the complete `0.24.0` Salesforce
route surface and closes the production Catalog/Runtime selection for Approval
reads. Approval mutation and read routes remain one sfcrm-owned lifecycle
surface, but they are published as two L1 handler capabilities because Runtime
admits their two neutral capabilities through distinct immutable serving
receipts.

`0.24.0` proved a complete one-to-one selection for its 15 handlers, but that
proof did not cover every remaining Runtime dependency. Its combined Approval
handler selected `runtime.approvals.execute.v1` and left
`runtime.approvals.read.v1` without either a serving selection or a supported
consumer-only owner. `0.25.0` adds the missing Approval read binding and a
stronger publication gate that rejects this entire incomplete-deployment
class.

The Flow/Standard Action consolidation from `0.24.0` remains unchanged. This
release adds no Salesforce route, RPC, Runtime engine, serving binary, Gateway,
metadata authority, or fallback.

- App: `io.nexuscrm.sfcrm`
- semantic version: `0.25.0`
- AppReleaseDigest:
  `sha256:54d644b33adbfdbf266ed00eb20a7454d4f1c74709ab445eda598aaef77cc255`
- MetadataBundleDigest:
  `sha256:87afb74b6c384286a776f1ab4be50ccb9f11f1e0a8b8b24b032b41d9c8f2ba96`
- component count: `70` (unchanged)
- sfcrm provided capability count: `16`
- source input revision: `c1ad9c880c33a159010eb0e07e019588118131a5`
- source tree digest:
  `sha256:f1acf49a6b10080201562a08cb040c01b902e0830982478ab7b448502d617901`
- contract module: `v0.2.26`
- wire module: `wire-go/v0.1.24`

This release changes no production routing, active metadata, Flow state, BOM,
or deployed service. Historical `0.24.0` remains immutable and reproducible.

`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.25.0-source \
  c1ad9c880c33a159010eb0e07e019588118131a5
cd tools/crm-app-release
GOWORK=off go test ./... -count=1
GOWORK=off go run . build \
  --pack-root /tmp/nexuscrm-app-packs-0.25.0-source/salesforce-crm-standard \
  --output /tmp/crm-app-package-0.25.0.json
cmp /tmp/crm-app-package-0.25.0.json \
  ../../releases/io.nexuscrm.sfcrm/0.25.0/app-package.json
GOWORK=off go run . verify \
  --package ../../releases/io.nexuscrm.sfcrm/0.25.0/app-package.json \
  --attestation ../../releases/io.nexuscrm.sfcrm/0.25.0/publisher-attestation.json \
  --public-key ../../releases/io.nexuscrm.sfcrm/0.25.0/publisher-public-key.json
```
