diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..78d2fe9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,10 @@ +{ + "json.schemas": [ + { + "fileMatch": [ + "releases-v1.json" + ], + "url": "/releases-v1.schema.json" + } + ] +} diff --git a/README.md b/README.md index 0121749..e5c32b1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Single source of truth regarding past and future releases of the Polkadot SDK. -This repo contains a [JSON schema](./releases.schema.json) as schema for the [releases.json](./releases.json) file that tracks all SDK releases. +This repo contains a [JSON schema](./v1-releases.schema.json) as schema for the [releases.json](./v1-releases.json) file that tracks all SDK releases. The schema and releases file are suffixed with `v1` in case we ever do a breaking change to the format. ## Roadmap diff --git a/releases-v1.json b/releases-v1.json new file mode 100644 index 0000000..2d79187 --- /dev/null +++ b/releases-v1.json @@ -0,0 +1,56 @@ +{ + "Polkadot SDK": { + "recommended": { + "release": "stable2407", + "patch": "2" + }, + "releases": { + "stable2407": { + "state": "maintained", + "cutoff": "2024-04-29", + "publish": { + "when": "2024-04-29", + "tag": "polkadot-stable2407" + }, + "endOfLife": "2025-04-29", + "patches": { + "stable2407-1": { + "cutoff": "2024-08-14", + "publish": { + "when": "2024-08-15", + "tag": "polkadot-stable2407-1" + }, + "state": "maintained" + }, + "stable2407-2": { + "cutoff": "2024-08-28", + "publish": { + "estimated": "2024-08-30" + }, + "state": "planned" + }, + "stable2407-3": { + "cutoff": "2024-09-11", + "publish": { + "estimated": "2024-09-13" + }, + "state": "planned" + } + } + }, + "stable2410": { + "state": "planned", + "cutoff": { + "estimated": "2024-09-02" + }, + "publish": { + "estimated": "2024-09-25" + }, + "endOfLife": { + "estimated": "2025-09-25" + } + } + }, + "changelog": "https://github.com/paritytech/polkadot-sdk/releases/tag/$TAG" + } +} diff --git a/releases-v1.schema.json b/releases-v1.schema.json new file mode 100644 index 0000000..15d4bd7 --- /dev/null +++ b/releases-v1.schema.json @@ -0,0 +1,219 @@ +{ + "title": "Release Registry Schema", + "type": "object", + "propertyNames": { + "enum": [ + "Polkadot SDK", + "Fellowship Runtimes" + ] + }, + "patternProperties": { + "^(Polkadot SDK|Fellowship Runtimes)$": { + "$ref": "#/definitions/projectInfo" + } + }, + "additionalProperties": false, + "definitions": { + "projectInfo": { + "type": "object", + "properties": { + "recommended": { + "type": "object", + "properties": { + "release": { + "type": "string", + "pattern": "^stable2[45][01][0-9]$", + "description": "The recommended release to use" + }, + "patch": { + "type": "string", + "pattern": "^[1-9][0-9]*$", + "description": "The recommended patch number to use" + } + }, + "required": [ + "release" + ], + "additionalProperties": false, + "description": "The recommended version to use" + }, + "releases": { + "type": "object", + "patternProperties": { + "^stable2[45][01][0-9]$": { + "$ref": "#/definitions/releaseInfo" + } + }, + "additionalProperties": false + }, + "changelog": { + "type": "string", + "format": "uri", + "description": "The URL blueprint to the changelog. $TAG is a placeholder for the tag." + } + }, + "required": [ + "releases", + "recommended", + "changelog" + ], + "additionalProperties": false + }, + "releaseInfo": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "enum": [ + "stable" + ], + "description": "The kind of release" + }, + "cutoff": { + "$ref": "#/definitions/dateOrEstimated" + }, + "publish": { + "$ref": "#/definitions/publishInfo" + }, + "endOfLife": { + "$ref": "#/definitions/dateOrEstimated" + }, + "state": { + "$ref": "#/definitions/maintainedState" + }, + "patches": { + "type": "object", + "patternProperties": { + "^stable2[45][01][0-9]-[1-9]+$": { + "$ref": "#/definitions/patchInfo" + } + }, + "additionalProperties": false + } + }, + "required": [ + "cutoff", + "publish", + "endOfLife", + "state" + ], + "additionalProperties": false + }, + "patchInfo": { + "type": "object", + "properties": { + "cutoff": { + "$ref": "#/definitions/dateOrEstimated" + }, + "publish": { + "$ref": "#/definitions/publishInfo" + }, + "state": { + "$ref": "#/definitions/maintainedState" + } + }, + "required": [ + "cutoff", + "publish", + "state" + ], + "additionalProperties": false + }, + "dateOrEstimated": { + "oneOf": [ + { + "type": "string", + "format": "date", + "description": "An exact date" + }, + { + "type": "object", + "properties": { + "estimated": { + "type": "string", + "format": "date" + } + }, + "required": [ + "estimated" + ], + "description": "An estimated date" + } + ] + }, + "publishInfo": { + "oneOf": [ + { + "type": "object", + "description": "When the release was published, together with its tag.", + "properties": { + "when": { + "type": "string", + "format": "date" + }, + "tag": { + "type": "string" + } + }, + "required": [ + "when", + "tag" + ] + }, + { + "type": "object", + "properties": { + "estimated": { + "type": "string", + "format": "date" + } + }, + "required": [ + "estimated" + ], + "description": "The estimated date for publishing the release" + } + ] + }, + "maintainedState": { + "oneOf": [ + { + "type": "string", + "enum": [ + "planned", + "maintained" + ], + "description": "The release is either planned for a future date or currently maintained." + }, + { + "$ref": "#/definitions/deprecatedState" + } + ], + "description": "State of a release" + }, + "deprecatedState": { + "type": "object", + "properties": { + "deprecated": { + "type": "object", + "properties": { + "since": { + "type": "string", + "format": "date" + }, + "useInstead": { + "type": "string" + } + }, + "required": [ + "since", + "useInstead" + ] + } + }, + "required": [ + "deprecated" + ] + } + } +}