# CRM AppRelease `0.17.0`

This immutable CRM AppRelease preserves the complete `0.16.0` metadata and
sfcrm handler surface. It closes the two consumer-owned L0 requirements for the
independent Integration handoff:

```text
provider webhook
  -> Integration
  -> IntegrationBindingView
  -> AcceptCommand(runtime.flow.execute)
```

`catalog.consumer.integration-binding-view.v1` and
`runtime.commands.accept.v1` are required L0 capabilities, not sfcrm provided
capabilities. Catalog can therefore authorize the Integration workload without
inventing an sfcrm route, handler, Gateway, or second metadata authority.

- App: `io.nexuscrm.sfcrm`
- semantic version: `0.17.0`
- AppReleaseDigest:
  `sha256:7c6b5d99a9ab41e1128920c08e7ca521a458762d30b4dea3f9b2449a0b0bc641`
- MetadataBundleDigest:
  `sha256:f7c08674bbb679f8cc2a2fa4a669c468692e18e9395fbb150ecccf90647d33ca`
- component count: `69`
- sfcrm provided capability count: `11` (unchanged)
- source input revision: `c0c8423c170c01ec2a214957b13f8e366632d94b`
- source tree digest:
  `sha256:b06e9c9ea64cfc15400818b4e88cc8598e162a1d94373cabfda2ea5bfb867e97`
- contract module: `v0.2.20`

The command registration still selects only the neutral command kind and
payload format. Catalog derives the exact authorized Integration workload,
immutable Flow definition/version, and connector context from the installed
release and revision-bound Integration binding. Provider payload verification,
credentials, callbacks, and external effects remain owned by the independent
Integration service.

`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.

This release does not activate an AppInstallation, publish an AppService image,
switch traffic, or change production metadata.

Rebuild and verify:

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