Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .github/workflows/s3-docs-sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
workflow_dispatch: {}
push:
branches: ['main']
paths: ['docs/**', '.github/workflows/s3-docs-sync.yml']
paths: ['docs/**']

jobs:
sync-to-s3:
Expand Down Expand Up @@ -43,10 +43,9 @@ jobs:
aws-secret-access-key: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
aws-region: us-east-1

# draft/2025-03 stays because OpenRewrite's rewrite-prethink declares it: #3507.
- name: Sync docs to S3
run: |
aws s3 sync build s3://calm.finos.org/ --delete --include "*" --exclude "advent/*" --exclude "draft/2025-03/*" --exclude "interfaces/*" --exclude "release/*" --exclude "samples/*" --exclude "standards/*" --exclude "video/*" --exclude "workshop/*"
aws s3 sync build s3://calm.finos.org/ --delete --include "*" --exclude "advent/*" --exclude "draft/*" --exclude "interfaces/*" --exclude "release/*" --exclude "samples/*" --exclude "standards/*" --exclude "video/*" --exclude "workshop/*"
working-directory: "docs"

- name: Invalidate CloudFront cache
Expand Down
34 changes: 34 additions & 0 deletions .github/workflows/s3-draft-sync.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Sync Drafts to S3

# No --delete: draft/2025-03 is on calm.finos.org but not in calm/draft (#3507).
# s3-docs-sync.yml excludes draft/*, so its --delete does not remove the drafts either.

permissions:
contents: read

on:
workflow_dispatch: {}
push:
branches: ['main']
paths: ['calm/draft/**', '.github/workflows/s3-draft-sync.yml']

jobs:
sync-to-s3:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@e1253824e5c10ff9df46874f81ed3ec929e19cfd # v6
with:
aws-access-key-id: ${{ secrets.AWS_S3_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Sync calm/draft folder to S3
run: |
aws s3 sync calm/draft s3://${{ vars.AWS_S3_BUCKET }}/draft

- name: Invalidate CloudFront cache
run: |
aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION_ID }} --paths "/draft/*"
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ This is the **FINOS Architecture as Code** monorepo. It holds the tools for the
| Repository | Owns | Send here |
|---|---|---|
| [architecture-as-code](https://github.com/finos/architecture-as-code) | This repository: the tools, the docs site and CALM Lab. The tools get the schema from the `@finos/calm-schema` npm package (see [CALM Schema Updates](#calm-schema-updates)) | Tool changes, the documentation site, examples that the tools use |
| [calm-schema](https://github.com/finos/calm-schema) | The CALM Meta Schema, its tests and `CHANGELOG.md`, the interface definitions. Published to npm and to `calm.finos.org` | Schema changes, schema releases, interface definitions. Do not change a schema here: `calm/` holds only CALM's own architecture |
| [calm-schema](https://github.com/finos/calm-schema) | The CALM Meta Schema, its tests and `CHANGELOG.md`, the interface definitions. Published to npm and to `calm.finos.org` | Schema changes, schema releases, interface definitions. Do not change a schema here: `calm/` holds only CALM's own architecture and the 2026-03 draft, which [#3533](https://github.com/finos/architecture-as-code/issues/3533) deletes |
| [calm-governance](https://github.com/finos/calm-governance) | Project-wide governance, the Maintainer roster, contribution guidelines, the Code of Conduct. No code | Governance and roster changes |

Clone the three repositories side by side, with the same parent directory. Start the agent here and
Expand All @@ -46,7 +46,7 @@ against `finos/<repo>`.

```
architecture-as-code/
├── calm/ # CALM's own architecture
├── calm/ # CALM's own architecture and the 2026-03 schema draft
├── cli/ # TypeScript CLI (@finos/calm-cli)
├── calm-hub/ # Java/Quarkus REST API backend
├── calm-hub-ui/ # React frontend for CALM Hub
Expand Down
21 changes: 21 additions & 0 deletions calm/draft/2026-03/README.md
Original file line number Diff line number Diff line change
@@ -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.
23 changes: 23 additions & 0 deletions calm/draft/2026-03/meta/calm-timeline.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$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,
"https://json-schema.org/draft/2020-12/vocab/validation": true,
"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/2026-03/meta/core.json": true
},
"$dynamicAnchor": "meta",
"title": "Common Architecture Language Model (CALM) Timelines Schema",
"allOf": [
{
"$ref": "https://json-schema.org/draft/2020-12/schema"
},
{
"$ref": "https://calm.finos.org/draft/2026-03/meta/timeline.json"
}
]
}
23 changes: 23 additions & 0 deletions calm/draft/2026-03/meta/calm.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$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,
"https://json-schema.org/draft/2020-12/vocab/validation": true,
"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/2026-03/meta/core.json": true
},
"$dynamicAnchor": "meta",
"title": "Common Architecture Language Model (CALM) Schema",
"allOf": [
{
"$ref": "https://json-schema.org/draft/2020-12/schema"
},
{
"$ref": "https://calm.finos.org/draft/2026-03/meta/core.json"
}
]
}
33 changes: 33 additions & 0 deletions calm/draft/2026-03/meta/control-requirement.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$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",
"properties": {
"control-id": {
"type": "string",
"description": "The unique identifier of this control, which has the potential to be used for linking evidence"
},
"name": {
"type": "string",
"description": "The name of the control requirement that provides contextual meaning within a given domain"
},
"description": {
"type": "string",
"description": "A more detailed description of the control and information on what a developer needs to consider"
}
},
"required": [
"control-id",
"name",
"description"
],
"examples": [
{
"control-id": "CR-001",
"name": "Access Control",
"description": "Ensure that access to sensitive information is restricted."
}
]
}
64 changes: 64 additions & 0 deletions calm/draft/2026-03/meta/control.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$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": {
"control-detail": {
"type": "object",
"properties": {
"requirement-url": {
"type": "string",
"description": "The requirement schema that specifies how a control should be defined"
},
"config-url": {
"type": "string",
"description": "The configuration of how the control requirement schema is met"
},
"config": {
"type": "object",
"description": "Inline configuration of how the control requirement schema is met"
}
},
"required": [
"requirement-url"
],
"oneOf": [
{
"required": [
"config-url"
]
},
{
"required": [
"config"
]
}
]
},
"controls": {
"type": "object",
"patternProperties": {
"^[a-zA-Z0-9-]+$": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "A description of a control and how it applies to a given architecture"
},
"requirements": {
"type": "array",
"items": {
"$ref": "#/defs/control-detail"
}
}
},
"required": [
"description",
"requirements"
]
}
}
}
}
}
Loading
Loading