{
  "schemaVersion": "1.0",
  "title": "Cal.diy connector changelog",
  "description": "Use this page to decide whether a Cal.diy connector change requires a new artifact, migration, or caller update. It records only changes that can be established from the reviewed source range.",
  "canonical": "https://getaip.org/docs/connectors/cal-diy/changelog",
  "route": "/docs/connectors/cal-diy/changelog",
  "source": "docs/connectors/cal-diy/changelog.md",
  "protocol": "Agent Interoperability Protocol",
  "protocolVersion": "1.0",
  "section": "Connectors",
  "documentType": "Connector",
  "language": "en",
  "downloads": {
    "md": "/docs/download/connectors/cal-diy/changelog.md",
    "txt": "/docs/download/connectors/cal-diy/changelog.txt",
    "json": "/docs/download/connectors/cal-diy/changelog.json",
    "pdf": "/docs/download/connectors/cal-diy/changelog.pdf"
  },
  "content": {
    "format": "text/markdown",
    "markdown": "---\ntitle: Cal.diy connector changelog\ndescription: >-\n  Track the reviewed connector snapshot, compatibility pins, migrations, and\n  deprecations without treating unreleased source as a published release\nkind: reference\naudience: operator\nappliesTo: \"1.x\"\nwritingStandard: \"aip-docs/1.0\"\nlastReviewedRevision: \"97be86e9efedf07ecf1783b03800f683f107fb04\"\nconnector: cal-diy\n---\n\n# Cal.diy connector changelog\n\nUse this page to decide whether a Cal.diy connector change requires a new\nartifact, migration, or caller update. It records only changes that can be\nestablished from the reviewed source range.\n\n> **Release status:** the reviewed snapshot is not a tagged release. The latest\n> tag in the reviewed repository is `v1.0.0`; the pinned documentation revision\n> is five commits later and still declares workspace version `1.0.0`. Never use\n> the version string alone to identify these different source states.\n\n## Identify the exact version\n\n| Identity | Published `v1.0.0` baseline | Reviewed source snapshot |\n|---|---|---|\n| Source commit | `034a520608eea44e6b14e61c34734bd402d989c0` | `97be86e9efedf07ecf1783b03800f683f107fb04` |\n| Source position | Tagged | Five commits after the tag |\n| Publication status | Published tag in the reviewed repository | Unreleased source; no later tag or changelog entry |\n| Workspace and image version | `1.0.0` | `1.0.0` |\n| Native AIP version | `1.0` | `1.0` |\n| Cal.diy business capabilities | 81 | 81 |\n| Target connector placement | Bundled release topology | Separately built and admitted standalone host |\n\nAn operator record for the reviewed snapshot needs the full source commit,\nsource-tree state, immutable image digest, manifest digest, connector version\nID, release ID, and upstream identity. A tag or `1.0.0` image label cannot\nsubstitute for that tuple.\n\n## Reviewed source snapshot\n\nThe entries below describe the Cal.diy-relevant difference between `v1.0.0`\nand `97be86e9`. They are source changes, not proof that an artifact was built,\npublished, deployed, or qualified.\n\n### Added\n\n- A dedicated `aip-host-cal-diy` binary and common standalone-host image path.\n- Registry admission, tenant-scoped routing, replica leases, health reporting,\n  drain, and recovery integration in the connector-fleet topology.\n- Cluster-safe webhook replay fencing through durable profile-state\n  compare-and-set.\n- A standalone-host webhook ingestion boundary that persists mapped events\n  before acknowledging a provider delivery.\n- Product-image and controlled-fleet qualification procedures for the Cal.diy\n  host.\n\n### Changed\n\n- Manifest compatibility metadata now reports 81 business operations, 38\n  operator-only route exclusions, and two deprecated-alias exclusions.\n- The trusted credential issuer is exposed as the stable\n  `cal_diy_deployment` connector constant and remains part of the immutable\n  contract.\n- Runtime ownership moves from an in-process connector inside the bundled\n  daemon to one admitted standalone host per Cal.diy account boundary.\n- Webhook replay state in the standalone topology is shared across replicas;\n  it is not an in-memory, per-process duplicate fence.\n\nThe 81 capability IDs are not a post-tag expansion. The material change is how\nthat stable business catalog is packaged, admitted, routed, and recovered.\n\n### Security boundary made explicit\n\nThe reviewed connector inventories 38 provider routes that remain in an\noperator control plane. They cover credential, OAuth, browser callback,\nexternal integration, and ownership-verification workflows. The connector\ndoes not make those routes agent-callable merely because they exist upstream.\n\nThis inventory documents an existing trust boundary. It does not add 38\ncapabilities and does not authorize direct calls around the connector.\n\n### Deprecated or excluded\n\n| Surface | Current status | Replacement |\n|---|---|---|\n| Singular `GET /v2/calendars/{calendar}/event/{event_uid}` | Excluded deprecated provider alias | `cap:cal_diy:calendar.event.get` on the plural `/events/` route |\n| Singular `PATCH /v2/calendars/{calendar}/event/{event_uid}` | Excluded deprecated provider alias | `cap:cal_diy:calendar.event.update` on the plural `/events/` route |\n| Booking-create `meetingUrl` | Accepted by the schema but marked deprecated | Structured `location` with the appropriate location variant |\n| Free-form booking-create location string | Accepted for compatibility but marked deprecated | A supported structured `location` object |\n\nThe source defines no removal date for either deprecated input form. Avoid new\nuse, migrate stored templates and callers, and treat a future removal as a\nschema and compatibility change requiring its own release entry.\n\n## Apply the required migration\n\n| Change encountered | Required action | Do not do |\n|---|---|---|\n| Bundled connector to standalone host | Follow the bounded bundled-to-fleet migration; preserve tenant, account, credential, idempotency, approval, transaction, provider-effect, webhook, and recovery evidence | Start both routes for the same mutations without explicit fencing |\n| New standalone artifact at the same workspace version | Admit a new immutable connector version and bind its exact source, image, manifest, and release identities | Replace an existing version record or identify it only as `1.0.0` |\n| Singular calendar-event provider alias | Select the canonical AIP capability and its published schema | Rewrite only the path text while bypassing AIP governance |\n| Deprecated `meetingUrl` or free-form location | Convert the caller to a structured `location` input and test the exact schema | Depend on an undocumented removal date |\n| Provider revision or API-version pin changes | Update source-owned mappings, regenerate contract artifacts, and requalify the affected operations | Override `cal-api-version` at runtime to conceal drift |\n\nThe process migration must not be combined with capability renames or schema\nchanges. Stabilize the standalone topology first, accept its evidence, and\nthen introduce a separately versioned contract change.\n\n## Retain the compatibility pins\n\nThe reviewed snapshot selects these values in source:\n\n| Surface | Pin |\n|---|---|\n| Connector ID | `cal-diy` |\n| Connector profile | `aip.connector.cal_diy.v1` |\n| Manifest format | `aip-manifest/v1` |\n| Cal.diy upstream commit | `f00434927386c9ecdcbd7e6c5f82d22044a245bc` |\n| General and booking API | `2024-08-13` |\n| Slot API | `2024-09-04` |\n| Event-type API | `2024-06-14` |\n| Private-link controller default | `2024-04-15` |\n| Schedule API | `2024-06-11` |\n| Webhook payload and header version | `2021-10-20` |\n| Standalone version-ID shape | `cver_cal_diy_1_0_0_<release-id>` |\n\nThese pins describe the connector contract, not every Cal.diy deployment.\nChanging a provider deployment without changing the connector source does not\nsilently establish compatibility with the new deployment.\n\n## Decide when a new connector version is required\n\nCreate and admit a new immutable connector version when a change affects any\nof these properties:\n\n- capability IDs, schemas, contracts, risk, approval, retry, or transaction\n  semantics;\n- provider method, path, API version, request partition, or response mapping;\n- credential issuer, required scopes, tenant or account binding, or secret\n  resolution;\n- webhook signature, version, replay scope, destination policy, or event\n  mapping;\n- artifact bytes, dependencies, manifest digest, upstream baseline, or host\n  lifecycle behavior.\n\nA documentation clarification alone does not require a connector version. It\nstill needs the source revision that proves the corrected statement.\n\n## Record future entries completely\n\nEach future entry should state:\n\n1. release or explicit unreleased status and UTC review date;\n2. full source commit and tree state;\n3. connector, image, manifest, catalog, and upstream identities;\n4. added, changed, fixed, security-relevant, deprecated, and removed surfaces;\n5. caller, operator, storage, webhook, and provider migration actions;\n6. rollback and compatibility boundary;\n7. exact qualification result and retained evidence, or `not_run`;\n8. deprecation introduction, replacement, and removal date only when source or\n   release policy defines them.\n\nDo not backfill release history from filenames, mutable tags, or source\npresence. Mark unknown history as unknown.\n\n## Related documentation\n\n- [AIP release notes](../../reference/release-notes.md)\n- [Migrate bundled connectors to the fleet](../../guides/migrate-bundled-connectors.md)\n- [Operator-only and excluded Cal.diy routes](reference/operator-only-and-excluded-routes.md)\n- [Cal.diy API versions and provider routes](reference/api-versions-and-provider-routes.md)\n- [Qualify the Cal.diy connector](qualification/README.md)\n",
    "text": "Cal.diy connector changelog\n\nUse this page to decide whether a Cal.diy connector change requires a new\nartifact, migration, or caller update. It records only changes that can be\nestablished from the reviewed source range.\n\nRelease status: the reviewed snapshot is not a tagged release. The latest\ntag in the reviewed repository is v1.0.0; the pinned documentation revision\nis five commits later and still declares workspace version 1.0.0. Never use\nthe version string alone to identify these different source states.\n\nIdentify the exact version\n\n| Identity | Published v1.0.0 baseline | Reviewed source snapshot |\n\n| Source commit | 034a520608eea44e6b14e61c34734bd402d989c0 | 97be86e9efedf07ecf1783b03800f683f107fb04 |\n| Source position | Tagged | Five commits after the tag |\n| Publication status | Published tag in the reviewed repository | Unreleased source; no later tag or changelog entry |\n| Workspace and image version | 1.0.0 | 1.0.0 |\n| Native AIP version | 1.0 | 1.0 |\n| Cal.diy business capabilities | 81 | 81 |\n| Target connector placement | Bundled release topology | Separately built and admitted standalone host |\n\nAn operator record for the reviewed snapshot needs the full source commit,\nsource-tree state, immutable image digest, manifest digest, connector version\nID, release ID, and upstream identity. A tag or 1.0.0 image label cannot\nsubstitute for that tuple.\n\nReviewed source snapshot\n\nThe entries below describe the Cal.diy-relevant difference between v1.0.0\nand 97be86e9. They are source changes, not proof that an artifact was built,\npublished, deployed, or qualified.\n\nAdded\n• A dedicated aip-host-cal-diy binary and common standalone-host image path.\n• Registry admission, tenant-scoped routing, replica leases, health reporting,\n  drain, and recovery integration in the connector-fleet topology.\n• Cluster-safe webhook replay fencing through durable profile-state\n  compare-and-set.\n• A standalone-host webhook ingestion boundary that persists mapped events\n  before acknowledging a provider delivery.\n• Product-image and controlled-fleet qualification procedures for the Cal.diy\n  host.\n\nChanged\n• Manifest compatibility metadata now reports 81 business operations, 38\n  operator-only route exclusions, and two deprecated-alias exclusions.\n• The trusted credential issuer is exposed as the stable\n  caldiydeployment connector constant and remains part of the immutable\n  contract.\n• Runtime ownership moves from an in-process connector inside the bundled\n  daemon to one admitted standalone host per Cal.diy account boundary.\n• Webhook replay state in the standalone topology is shared across replicas;\n  it is not an in-memory, per-process duplicate fence.\n\nThe 81 capability IDs are not a post-tag expansion. The material change is how\nthat stable business catalog is packaged, admitted, routed, and recovered.\n\nSecurity boundary made explicit\n\nThe reviewed connector inventories 38 provider routes that remain in an\noperator control plane. They cover credential, OAuth, browser callback,\nexternal integration, and ownership-verification workflows. The connector\ndoes not make those routes agent-callable merely because they exist upstream.\n\nThis inventory documents an existing trust boundary. It does not add 38\ncapabilities and does not authorize direct calls around the connector.\n\nDeprecated or excluded\n\n| Surface | Current status | Replacement |\n\n| Singular GET /v2/calendars/{calendar}/event/{eventuid} | Excluded deprecated provider alias | cap:caldiy:calendar.event.get on the plural /events/ route |\n| Singular PATCH /v2/calendars/{calendar}/event/{eventuid} | Excluded deprecated provider alias | cap:caldiy:calendar.event.update on the plural /events/ route |\n| Booking-create meetingUrl | Accepted by the schema but marked deprecated | Structured location with the appropriate location variant |\n| Free-form booking-create location string | Accepted for compatibility but marked deprecated | A supported structured location object |\n\nThe source defines no removal date for either deprecated input form. Avoid new\nuse, migrate stored templates and callers, and treat a future removal as a\nschema and compatibility change requiring its own release entry.\n\nApply the required migration\n\n| Change encountered | Required action | Do not do |\n\n| Bundled connector to standalone host | Follow the bounded bundled-to-fleet migration; preserve tenant, account, credential, idempotency, approval, transaction, provider-effect, webhook, and recovery evidence | Start both routes for the same mutations without explicit fencing |\n| New standalone artifact at the same workspace version | Admit a new immutable connector version and bind its exact source, image, manifest, and release identities | Replace an existing version record or identify it only as 1.0.0 |\n| Singular calendar-event provider alias | Select the canonical AIP capability and its published schema | Rewrite only the path text while bypassing AIP governance |\n| Deprecated meetingUrl or free-form location | Convert the caller to a structured location input and test the exact schema | Depend on an undocumented removal date |\n| Provider revision or API-version pin changes | Update source-owned mappings, regenerate contract artifacts, and requalify the affected operations | Override cal-api-version at runtime to conceal drift |\n\nThe process migration must not be combined with capability renames or schema\nchanges. Stabilize the standalone topology first, accept its evidence, and\nthen introduce a separately versioned contract change.\n\nRetain the compatibility pins\n\nThe reviewed snapshot selects these values in source:\n\n| Surface | Pin |\n\n| Connector ID | cal-diy |\n| Connector profile | aip.connector.caldiy.v1 |\n| Manifest format | aip-manifest/v1 |\n| Cal.diy upstream commit | f00434927386c9ecdcbd7e6c5f82d22044a245bc |\n| General and booking API | 2024-08-13 |\n| Slot API | 2024-09-04 |\n| Event-type API | 2024-06-14 |\n| Private-link controller default | 2024-04-15 |\n| Schedule API | 2024-06-11 |\n| Webhook payload and header version | 2021-10-20 |\n| Standalone version-ID shape | cvercaldiy100 |\n\nThese pins describe the connector contract, not every Cal.diy deployment.\nChanging a provider deployment without changing the connector source does not\nsilently establish compatibility with the new deployment.\n\nDecide when a new connector version is required\n\nCreate and admit a new immutable connector version when a change affects any\nof these properties:\n• capability IDs, schemas, contracts, risk, approval, retry, or transaction\n  semantics;\n• provider method, path, API version, request partition, or response mapping;\n• credential issuer, required scopes, tenant or account binding, or secret\n  resolution;\n• webhook signature, version, replay scope, destination policy, or event\n  mapping;\n• artifact bytes, dependencies, manifest digest, upstream baseline, or host\n  lifecycle behavior.\n\nA documentation clarification alone does not require a connector version. It\nstill needs the source revision that proves the corrected statement.\n\nRecord future entries completely\n\nEach future entry should state:\n1. release or explicit unreleased status and UTC review date;\n2. full source commit and tree state;\n3. connector, image, manifest, catalog, and upstream identities;\n4. added, changed, fixed, security-relevant, deprecated, and removed surfaces;\n5. caller, operator, storage, webhook, and provider migration actions;\n6. rollback and compatibility boundary;\n7. exact qualification result and retained evidence, or notrun;\n8. deprecation introduction, replacement, and removal date only when source or\n   release policy defines them.\n\nDo not backfill release history from filenames, mutable tags, or source\npresence. Mark unknown history as unknown.\n\nRelated documentation\n• AIP release notes (../../reference/release-notes.md)\n• Migrate bundled connectors to the fleet (../../guides/migrate-bundled-connectors.md)\n• Operator-only and excluded Cal.diy routes (reference/operator-only-and-excluded-routes.md)\n• Cal.diy API versions and provider routes (reference/api-versions-and-provider-routes.md)\n• Qualify the Cal.diy connector (qualification/README.md)\n"
  },
  "integrity": {
    "algorithm": "sha256",
    "sourceDigest": "f6f4a68f2d3591ba17d79d9f8e97884654e6ec46098745715ecdbbe62240b80f"
  }
}
