diff --git a/calm/draft/2026-03/README.md b/calm/draft/2026-03/README.md new file mode 100644 index 000000000..b92a80c84 --- /dev/null +++ b/calm/draft/2026-03/README.md @@ -0,0 +1,21 @@ +# CALM Draft 2026-03 + +This directory contains draft schemas and specifications for the CALM (Common Architecture Language Model) 1.3 release. + +## Deployment Decorator Schema + +This draft includes the deployment decorator schema, which provides a standardized way to annotate CALM architectures with deployment-related metadata. + +### Related Issues + +- **[#1908](https://github.com/finos/architecture-as-code/issues/1908)** - Deployment decorator schema +- **[#2183](https://github.com/finos/architecture-as-code/issues/2183)** - Update the deployment decorator to include target-type + +### Contents + +- `meta/` - Core CALM meta-schemas +- `standards/deployment/` - Deployment decorator standard and examples + +## Status + +**Draft** - This specification is under active development and subject to change. diff --git a/calm/draft/2183/meta/calm-timeline.json b/calm/draft/2026-03/meta/calm-timeline.json similarity index 76% rename from calm/draft/2183/meta/calm-timeline.json rename to calm/draft/2026-03/meta/calm-timeline.json index e8a18d60b..f9eea1276 100644 --- a/calm/draft/2183/meta/calm-timeline.json +++ b/calm/draft/2026-03/meta/calm-timeline.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/calm-timeline.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/calm-timeline.json", "$vocabulary": { "https://json-schema.org/draft/2020-12/vocab/core": true, "https://json-schema.org/draft/2020-12/vocab/applicator": true, @@ -8,7 +8,7 @@ "https://json-schema.org/draft/2020-12/vocab/meta-data": true, "https://json-schema.org/draft/2020-12/vocab/format-annotation": true, "https://json-schema.org/draft/2020-12/vocab/content": true, - "https://calm.finos.org/draft/2183/meta/core.json": true + "https://calm.finos.org/draft/2026-03/meta/core.json": true }, "$dynamicAnchor": "meta", "title": "Common Architecture Language Model (CALM) Timelines Schema", @@ -17,7 +17,7 @@ "$ref": "https://json-schema.org/draft/2020-12/schema" }, { - "$ref": "https://calm.finos.org/draft/2183/meta/timeline.json" + "$ref": "https://calm.finos.org/draft/2026-03/meta/timeline.json" } ] } \ No newline at end of file diff --git a/calm/draft/2183/meta/calm.json b/calm/draft/2026-03/meta/calm.json similarity index 77% rename from calm/draft/2183/meta/calm.json rename to calm/draft/2026-03/meta/calm.json index b510cb8f9..ed089b2ad 100644 --- a/calm/draft/2183/meta/calm.json +++ b/calm/draft/2026-03/meta/calm.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/calm.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/calm.json", "$vocabulary": { "https://json-schema.org/draft/2020-12/vocab/core": true, "https://json-schema.org/draft/2020-12/vocab/applicator": true, @@ -8,7 +8,7 @@ "https://json-schema.org/draft/2020-12/vocab/meta-data": true, "https://json-schema.org/draft/2020-12/vocab/format-annotation": true, "https://json-schema.org/draft/2020-12/vocab/content": true, - "https://calm.finos.org/draft/2183/meta/core.json": true + "https://calm.finos.org/draft/2026-03/meta/core.json": true }, "$dynamicAnchor": "meta", "title": "Common Architecture Language Model (CALM) Schema", @@ -17,7 +17,7 @@ "$ref": "https://json-schema.org/draft/2020-12/schema" }, { - "$ref": "https://calm.finos.org/draft/2183/meta/core.json" + "$ref": "https://calm.finos.org/draft/2026-03/meta/core.json" } ] } \ No newline at end of file diff --git a/calm/draft/2183/meta/control-requirement.json b/calm/draft/2026-03/meta/control-requirement.json similarity index 92% rename from calm/draft/2183/meta/control-requirement.json rename to calm/draft/2026-03/meta/control-requirement.json index c8508327c..b61c7161d 100644 --- a/calm/draft/2183/meta/control-requirement.json +++ b/calm/draft/2026-03/meta/control-requirement.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/control-requirement.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/control-requirement.json", "title": "Common Architecture Language Model Control Requirement", "description": "Schema for defining control requirements within the Common Architecture Language Model.", "type": "object", diff --git a/calm/draft/2183/meta/control.json b/calm/draft/2026-03/meta/control.json similarity index 96% rename from calm/draft/2183/meta/control.json rename to calm/draft/2026-03/meta/control.json index e7d25aa63..9802149f9 100644 --- a/calm/draft/2183/meta/control.json +++ b/calm/draft/2026-03/meta/control.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/control.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/control.json", "title": "Common Architecture Language Model Controls", "description": "Controls model requirements for domains. For example, a security domain contains a series of control requirements", "defs": { diff --git a/calm/draft/2183/meta/core.json b/calm/draft/2026-03/meta/core.json similarity index 99% rename from calm/draft/2183/meta/core.json rename to calm/draft/2026-03/meta/core.json index be5d94d43..34a38510a 100644 --- a/calm/draft/2183/meta/core.json +++ b/calm/draft/2026-03/meta/core.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/core.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/core.json", "title": "Common Architecture Language Model (CALM) Vocab", "type": "object", "properties": { diff --git a/calm/draft/2183/meta/decorators.json b/calm/draft/2026-03/meta/decorators.json similarity index 97% rename from calm/draft/2183/meta/decorators.json rename to calm/draft/2026-03/meta/decorators.json index 35315c4ab..792b91db6 100644 --- a/calm/draft/2183/meta/decorators.json +++ b/calm/draft/2026-03/meta/decorators.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/decorators.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/decorators.json", "title": "Common Architecture Language Model Decorators", "description": "Decorators attach supplementary information to multiple nodes and relationships simultaneously, enabling cross-cutting concerns like guides, threat models, business context, and deployment information", "defs": { diff --git a/calm/draft/2183/meta/evidence.json b/calm/draft/2026-03/meta/evidence.json similarity index 93% rename from calm/draft/2183/meta/evidence.json rename to calm/draft/2026-03/meta/evidence.json index e9978319d..604e0bf2e 100644 --- a/calm/draft/2183/meta/evidence.json +++ b/calm/draft/2026-03/meta/evidence.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/evidence.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/evidence.json", "title": "Common Architecture Language Model Evidence", "description": "Schema for defining evidence for control requirements within the Common Architecture Language Model.", "type": "object", diff --git a/calm/draft/2183/meta/flow.json b/calm/draft/2026-03/meta/flow.json similarity index 97% rename from calm/draft/2183/meta/flow.json rename to calm/draft/2026-03/meta/flow.json index 6f496664f..5368eded4 100644 --- a/calm/draft/2183/meta/flow.json +++ b/calm/draft/2026-03/meta/flow.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/flow.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/flow.json", "title": "Business Flow Model", "description": "Defines business flows that relate to technical architectures, allowing mapping of flows to technical components and attaching control requirements.", "defs": { diff --git a/calm/draft/2183/meta/interface.json b/calm/draft/2026-03/meta/interface.json similarity index 95% rename from calm/draft/2183/meta/interface.json rename to calm/draft/2026-03/meta/interface.json index 6101eb6bf..e76b7beed 100644 --- a/calm/draft/2183/meta/interface.json +++ b/calm/draft/2026-03/meta/interface.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/interface.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/interface.json", "title": "Common Architecture Language Model Interfaces", "defs": { "interface-definition": { diff --git a/calm/draft/2183/meta/timeline.json b/calm/draft/2026-03/meta/timeline.json similarity index 95% rename from calm/draft/2183/meta/timeline.json rename to calm/draft/2026-03/meta/timeline.json index 60143d9c3..d41f8ba7e 100644 --- a/calm/draft/2183/meta/timeline.json +++ b/calm/draft/2026-03/meta/timeline.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/timeline.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/timeline.json", "title": "Common Architecture Language Model (CALM) Timelines Vocab", "type": "object", "required": [ diff --git a/calm/draft/2183/meta/units.json b/calm/draft/2026-03/meta/units.json similarity index 97% rename from calm/draft/2183/meta/units.json rename to calm/draft/2026-03/meta/units.json index f9d5622ed..1e652b38f 100644 --- a/calm/draft/2183/meta/units.json +++ b/calm/draft/2026-03/meta/units.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://calm.finos.org/draft/2183/meta/units.json", + "$id": "https://calm.finos.org/draft/2026-03/meta/units.json", "title": "Common Architecture Language Model Units", "defs": { "time-unit": { diff --git a/calm/draft/2026-03/standards/README.md b/calm/draft/2026-03/standards/README.md new file mode 100644 index 000000000..edf249821 --- /dev/null +++ b/calm/draft/2026-03/standards/README.md @@ -0,0 +1,82 @@ +# FINOS Official CALM Standards + +This directory contains the official repository of standardized CALM decorator schemas and other reusable standards published and maintained by FINOS. + +## Purpose + +Standards in this directory represent validated, approved decorator schemas and cross-cutting architectural standards that organizations can use directly or extend for their specific needs. These standards enable consistent application of supplementary information across CALM architectures without modifying the core architecture definitions. + +## Organization + +Standards are organized by category to facilitate discovery and reuse: + +- **Deployment**: Deployment tracking decorators for various platforms (Kubernetes, AWS, Azure, etc.) +- **Security**: Security context decorators including threat models, compliance frameworks, and security controls +- **Business**: Business context decorators such as cost allocation, ownership, and organizational metadata +- **Operational**: Operational decorators including runbooks, SLAs, incident contacts, and support information +- **Observability**: Monitoring and observability decorators with dashboard links, alerting rules, and health checks +- **Guide**: Architectural decision records (ADRs) and design guidance decorators + +## Standard Types + +Each standard definition includes: + +- **Schema definition**: JSON Schema extending the base decorator schema +- **Required properties**: Mandatory fields for the decorator type +- **Optional properties**: Additional fields for enhanced context +- **Validation rules**: Constraints and patterns for data integrity +- **Documentation**: Usage examples and implementation guidelines + +## Decorator Standards + +Decorator standards define typed schemas that extend the base decorator schema (`decorators.json#/defs/decorator`). Each decorator standard: + +1. Constrains the `type` field to a specific value +2. Defines the structure of the `data` field +3. Can be further extended by more specific schemas +4. Maintains backward compatibility through versioning + +## Versioning + +All standards in this directory follow semantic versioning to ensure backward compatibility and clear evolution paths. + +## Publishing + +Standards in this directory are automatically published to the hosted CALM Hub when they are added, modified, or removed. This ensures that the latest approved standards are always available to the community. + +## Contributing + +To contribute new standards or modify existing ones: + +1. Follow the CALM decorator schema specification +2. Ensure your standard extends the base decorator schema using `allOf` +3. Provide clear documentation with comprehensive examples +4. Include test cases demonstrating valid and invalid instances +5. Submit a pull request with a detailed description of the standard's purpose and use cases + +## Usage + +Organizations can reference these standards directly in their decorator documents by using the appropriate `$schema` reference. + +```json +{ + "$schema": "https://calm.finos.org/standards/deployment/deployment.decorator.standard.json", + "unique-id": "my-deployment-001", + "type": "deployment", + "target": ["my-architecture.json"], + "applies-to": ["my-service"], + "data": { + "start-time": "2026-02-23T10:00:00Z", + "status": "completed" + } +} +``` + +## Standard vs Other CALM Concepts + +| Concept | Purpose | Location | +|---------|---------|----------| +| **Standard** | Reusable decorator schemas and cross-cutting patterns | `calm/standards/` | +| **Interface** | Communication protocol definitions | `calm/interfaces/` | +| **Control** | Compliance and governance requirements | `calm/controls/` | +| **Schema** | Core CALM meta-schemas | `calm/release/X.Y/meta/` | diff --git a/calm/draft/2026-03/standards/deployment/README.md b/calm/draft/2026-03/standards/deployment/README.md new file mode 100644 index 000000000..1a916861b --- /dev/null +++ b/calm/draft/2026-03/standards/deployment/README.md @@ -0,0 +1,92 @@ +# Deployment Decorator Standards + +This directory contains standardized deployment decorator schemas for tracking deployment information across various platforms and environments. + +## Overview + +Deployment decorators attach deployment tracking information to architecture elements without modifying the core architecture definition. They enable tracking of deployment status, timing, deployment details links, and platform-specific details across the architecture lifecycle. + +## Base Deployment Decorator + +The base deployment decorator standard (`deployment.decorator.standard.json`) defines common deployment attributes applicable across all platforms: + +- **start-time**: ISO 8601 timestamp of when the deployment started (required) +- **status**: Current deployment status (pending, in-progress, completed, failed, rolled-back) (required) +- **target-type**: Type of resources this decorator targets - must be ["architecture"] (required) +- **end-time**: ISO 8601 timestamp of when the deployment completed or failed +- **deployment-details**: URI linking to logs, metrics, or observability dashboards +- **notes**: Free-form notes or comments about the deployment + +## Platform-Specific Extensions + +Platform-specific deployment decorators extend the base deployment standard and add platform-specific attributes: + +- **Kubernetes**: Helm charts, clusters, namespaces (example provided) +- **AWS**: ECS services, CloudFormation stacks, regions +- **Azure**: Resource groups, subscriptions, deployment slots +- **Google Cloud**: Projects, regions, deployment managers + +## Usage + +### Basic Deployment Decorator + +```json +{ + "$schema": "https://calm.finos.org/draft/2026-03/standards/deployment/deployment.decorator.standard.json", + "unique-id": "api-service-deployment-001", + "type": "deployment", + "target": ["my-architecture.json"], + "target-type": ["architecture"], + "applies-to": ["api-service"], + "data": { + "start-time": "2026-02-23T10:00:00Z", + "end-time": "2026-02-23T10:05:00Z", + "status": "completed", + "deployment-details": "https://grafana.example.com/d/api-service", + "notes": "Successful deployment with zero downtime" + } +} +``` + +### Kubernetes Deployment Decorator (Example) + +```json +{ + "$schema": "https://calm.finos.org/draft/2026-03/standards/deployment/kubernetes.decorator.standard.json", + "unique-id": "k8s-deployment-001", + "type": "deployment", + "target": ["my-architecture.json"], + "target-type": ["architecture"], + "applies-to": ["api-service"], + "data": { + "start-time": "2026-02-23T10:00:00Z", + "end-time": "2026-02-23T10:08:00Z", + "status": "completed", + "deployment-details": "https://grafana.example.com/d/k8s-prod", + "notes": "Rolling update with new features", + "kubernetes": { + "helm-chart-version": "1.2.3", + "cluster": "prod-us-west-01", + "namespace": "production" + } + } +} +``` + +## Standard Inheritance + +``` +decorators.json (base decorator) + └── deployment.decorator.standard.json (deployment standard) + └── Platform-specific extensions (add platform sub-objects in data) +``` + +## Contributing + +To contribute new platform-specific deployment decorators: + +1. Use the base `deployment.decorator.standard.json` standard +2. Add platform-specific properties in a namespaced sub-object within `data` +3. Provide comprehensive examples demonstrating the platform-specific fields +4. Document all required and optional fields +5. Submit examples to the `examples/` directory diff --git a/calm/draft/2026-03/standards/deployment/deployment.decorator.standard.json b/calm/draft/2026-03/standards/deployment/deployment.decorator.standard.json new file mode 100644 index 000000000..81b2470fc --- /dev/null +++ b/calm/draft/2026-03/standards/deployment/deployment.decorator.standard.json @@ -0,0 +1,75 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://calm.finos.org/draft/2026-03/standards/deployment/deployment.decorator.standard.json", + "title": "CALM Deployment Decorator Standard", + "description": "Deployment decorator standard for tracking deployment information across various platforms and environments. Extends the base CALM decorator standard to add deployment-specific attributes.", + "allOf": [ + { + "$ref": "https://calm.finos.org/draft/2026-03/meta/decorators.json#/defs/decorator" + }, + { + "type": "object", + "properties": { + "type": { + "const": "deployment", + "description": "Must be 'deployment' for deployment decorators" + }, + "target-type": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "architecture" + ] + }, + "description": "Type of resources this decorator can target. Deployment decorators can only target architecture files." + }, + "data": { + "type": "object", + "properties": { + "start-time": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 timestamp indicating when the deployment started" + }, + "end-time": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 timestamp indicating when the deployment completed or failed" + }, + "status": { + "type": "string", + "enum": [ + "pending", + "in-progress", + "completed", + "failed", + "rolled-back" + ], + "description": "Current status of the deployment" + }, + "deployment-details": { + "type": "string", + "format": "uri", + "description": "URI linking to deployment logs, metrics, dashboards, or observability platform" + }, + "notes": { + "type": "string", + "description": "Free-form notes or comments about the deployment" + } + }, + "required": [ + "start-time", + "status" + ], + "additionalProperties": true + } + }, + "required": [ + "type", + "target-type", + "data" + ] + } + ] +} \ No newline at end of file diff --git a/calm/draft/2026-03/standards/deployment/examples/README.md b/calm/draft/2026-03/standards/deployment/examples/README.md new file mode 100644 index 000000000..f118141b3 --- /dev/null +++ b/calm/draft/2026-03/standards/deployment/examples/README.md @@ -0,0 +1,104 @@ +# Deployment Decorator Examples + +This directory contains example deployment decorator instances demonstrating various use cases and patterns. + +## Examples Overview + +| Example | Standard | Demonstrates | +|---------|--------|-------------| +| `simple-deployment.decorator.json` | Base deployment | Successful deployment with all optional fields | +| `kubernetes-deployment.decorator.json` | Kubernetes-specific | Multi-service deployment with Kubernetes details | +| `failed-deployment.decorator.json` | Base deployment | Failed deployment with rollback notes | +| `multi-target-deployment.decorator.json` | Kubernetes-specific | Coordinated deployment across multiple architectures | + +## Usage Patterns + +### Single Service Deployment + +The simplest case - tracking a deployment for one service in one architecture: + +```json +{ + "target": ["my-architecture.json"], + "applies-to": ["my-service"] +} +``` + +See: `simple-deployment.decorator.json` + +### Multi-Service Deployment + +Track a single deployment event that affects multiple services (e.g., coordinated release): + +```json +{ + "target": ["my-architecture.json"], + "applies-to": ["service-a", "service-b", "service-c"] +} +``` + +See: `kubernetes-deployment.decorator.json` + +### Cross-Architecture Deployment + +Track a deployment that spans multiple architecture documents: + +```json +{ + "target": [ + "frontend-architecture.json", + "backend-architecture.json" + ], + "applies-to": ["react-app", "api-gateway", "bff"] +} +``` + +See: `multi-target-deployment.decorator.json` + +### Failed Deployment + +Document deployment failures with context for troubleshooting: + +```json +{ + "data": { + "status": "failed", + "notes": "Deployment failed due to..." + } +} +``` + +See: `failed-deployment.decorator.json` + +## Platform-Specific Examples + +### Kubernetes + +When deploying to Kubernetes clusters, add Kubernetes-specific information as a sub-object: + +- Include Helm chart version +- Specify cluster and namespace + +See: `kubernetes-deployment.decorator.json` + +## Best Practices + +1. **Unique IDs**: Use descriptive unique-id values that include the service name and deployment identifier +2. **Target Type**: Always include `"target-type": ["architecture"]` as deployment decorators only target architecture files +3. **Timestamps**: Always use ISO 8601 format with timezone (preferably UTC) +4. **Deployment Details Links**: Link to deployment-specific dashboards or filtered log views +5. **Notes**: Include context about what changed, why, and any issues encountered + +## Validation + +Validate decorator instances using the CALM CLI: + +```bash +# Validate a deployment decorator +calm validate --schema https://calm.finos.org/draft/2026-03/standards/deployment/deployment.decorator.standard.json \ + simple-deployment.decorator.json + +# Validate a Kubernetes-specific deployment decorator +calm validate --schema https://calm.finos.org/draft/2026-03/standards/deployment/kubernetes.decorator.standard.json \ + kubernetes-deployment.decorator.json +``` diff --git a/calm/draft/2026-03/standards/deployment/examples/failed-deployment.decorator.json b/calm/draft/2026-03/standards/deployment/examples/failed-deployment.decorator.json new file mode 100644 index 000000000..990deda94 --- /dev/null +++ b/calm/draft/2026-03/standards/deployment/examples/failed-deployment.decorator.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://calm.finos.org/draft/2026-03/standards/deployment/deployment.decorator.standard.json", + "unique-id": "failed-deployment-example", + "type": "deployment", + "target": [ + "example-architecture.json" + ], + "target-type": [ + "architecture" + ], + "applies-to": [ + "payment-processor" + ], + "data": { + "start-time": "2026-02-23T08:15:00Z", + "end-time": "2026-02-23T08:23:45Z", + "status": "failed", + "deployment-details": "https://grafana.example.com/d/payment-processor-prod", + "notes": "Deployment failed due to database migration timeout. Rolling back to 2.9.1." + } +} \ No newline at end of file diff --git a/calm/draft/2026-03/standards/deployment/examples/kubernetes-deployment.decorator.json b/calm/draft/2026-03/standards/deployment/examples/kubernetes-deployment.decorator.json new file mode 100644 index 000000000..ef495c70d --- /dev/null +++ b/calm/draft/2026-03/standards/deployment/examples/kubernetes-deployment.decorator.json @@ -0,0 +1,27 @@ +{ + "$schema": "https://calm.finos.org/draft/2026-03/standards/deployment/kubernetes.decorator.standard.json", + "unique-id": "k8s-deployment-example", + "type": "deployment", + "target": [ + "example-architecture.json" + ], + "target-type": [ + "architecture" + ], + "applies-to": [ + "api-gateway", + "auth-service" + ], + "data": { + "start-time": "2026-02-23T14:30:00Z", + "end-time": "2026-02-23T14:42:15Z", + "status": "completed", + "deployment-details": "https://grafana.example.com/d/platform-services", + "notes": "Rolling update with new authentication features", + "kubernetes": { + "helm-chart-version": "2.1.0", + "cluster": "prod-eu-west-01", + "namespace": "platform" + } + } +} \ No newline at end of file diff --git a/calm/draft/2026-03/standards/deployment/examples/multi-target-deployment.decorator.json b/calm/draft/2026-03/standards/deployment/examples/multi-target-deployment.decorator.json new file mode 100644 index 000000000..d770f3a40 --- /dev/null +++ b/calm/draft/2026-03/standards/deployment/examples/multi-target-deployment.decorator.json @@ -0,0 +1,28 @@ +{ + "$schema": "https://calm.finos.org/draft/2026-03/standards/deployment/kubernetes.decorator.standard.json", + "unique-id": "multi-target-deployment-example", + "type": "deployment", + "target": [ + "frontend-architecture.json", + "backend-architecture.json" + ], + "target-type": [ + "architecture" + ], + "applies-to": [ + "react-web-app", + "mobile-bff", + "graphql-gateway" + ], + "data": { + "start-time": "2026-02-23T12:00:00Z", + "status": "in-progress", + "deployment-details": "https://datadog.example.com/dashboard/release-2024-02-23", + "notes": "Coordinated release across frontend and backend services for new feature rollout", + "kubernetes": { + "helm-chart-version": "3.0.0", + "cluster": "staging-us-central-01", + "namespace": "apps" + } + } +} \ No newline at end of file diff --git a/calm/draft/2026-03/standards/deployment/examples/simple-deployment.decorator.json b/calm/draft/2026-03/standards/deployment/examples/simple-deployment.decorator.json new file mode 100644 index 000000000..a95affd40 --- /dev/null +++ b/calm/draft/2026-03/standards/deployment/examples/simple-deployment.decorator.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://calm.finos.org/draft/2026-03/standards/deployment/deployment.decorator.standard.json", + "unique-id": "simple-deployment-example", + "type": "deployment", + "target": [ + "example-architecture.json" + ], + "target-type": [ + "architecture" + ], + "applies-to": [ + "web-service" + ], + "data": { + "start-time": "2026-02-23T10:00:00Z", + "end-time": "2026-02-23T10:05:30Z", + "status": "completed", + "deployment-details": "https://grafana.example.com/d/web-service-prod", + "notes": "Initial production deployment with baseline configuration" + } +} \ No newline at end of file diff --git a/calm/draft/2026-03/standards/deployment/kubernetes.decorator.standard.json b/calm/draft/2026-03/standards/deployment/kubernetes.decorator.standard.json new file mode 100644 index 000000000..1f089fe85 --- /dev/null +++ b/calm/draft/2026-03/standards/deployment/kubernetes.decorator.standard.json @@ -0,0 +1,49 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://calm.finos.org/draft/2026-03/standards/deployment/kubernetes.decorator.standard.json", + "title": "CALM Kubernetes Deployment Decorator Standard", + "description": "Kubernetes-specific deployment decorator standard. Extends the base deployment decorator with Kubernetes cluster, namespace, and Helm chart information.", + "allOf": [ + { + "$ref": "https://calm.finos.org/draft/2026-03/standards/deployment/deployment.decorator.standard.json" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "properties": { + "kubernetes": { + "type": "object", + "description": "Kubernetes-specific deployment information", + "properties": { + "helm-chart-version": { + "type": "string", + "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$", + "description": "Helm chart semantic version in format 'major.minor.patch'" + }, + "cluster": { + "type": "string", + "description": "Kubernetes cluster identifier or name" + }, + "namespace": { + "type": "string", + "description": "Kubernetes namespace where the resource is deployed", + "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$" + } + }, + "required": [ + "cluster", + "namespace" + ], + "additionalProperties": false + } + }, + "required": [ + "kubernetes" + ] + } + } + } + ] +} \ No newline at end of file