openvibers/openvibe.contracts Commits
v0.9.0: registry.release-manifest@1 (GET /release.json, ADR-016)
Changes
@@@ -107,6 +107,16 @@"visibility": "public","compatibility": "backward","status": "active"++ },++ {++ "id": "registry.release-manifest",++ "version": "1.0.0",++ "owner": "network",++ "schema": "registry/release-manifest.v1.json",++ "visibility": "public",++ "compatibility": "backward",++ "status": "active",++ "adr": "ADR-016"}]}nnew file mode 100644@@@ -0,0 +1,23 @@++{++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/registry/release-manifest.v1.json",++ "title": "ReleaseManifest",++ "description": "What a running web surface is serving (GET /release.json, ADR-016). Open clients compare it on focus and reconnect; a client outside the supported window is prompted and reloads only when that is safe.",++ "type": "object",++ "required": ["service", "release", "released_at", "contracts_version", "min_client_release", "mixed_version_window_hours"],++ "additionalProperties": false,++ "properties": {++ "service": { "type": "string", "pattern": "^[a-z][a-z0-9-]{1,39}$" },++ "release": { "type": "string", "pattern": "^[0-9a-f]{7,40}$", "description": "The deployed commit (short sha)." },++ "released_at": { "type": "string", "format": "date-time", "description": "Commit time of the release." },++ "booted_at": { "type": "string", "format": "date-time" },++ "contracts_version": { "type": ["string", "null"], "description": "openvibe-contracts version the service runs against." },++ "packages": {++ "type": "object",++ "description": "Versions of the platform packages the page loads (openvibe-shared, openvibe-sdk, ...).",++ "additionalProperties": { "type": "string" }++ },++ "min_client_release": { "type": ["string", "null"], "description": "Oldest client release still supported; null while every client in the window is." },++ "mixed_version_window_hours": { "type": "integer", "minimum": 0 }++ }++}nnew file mode 100644@@@ -0,0 +1,8 @@++{++ "service": "live",++ "release": "main",++ "released_at": "2026-09-23T01:28:10Z",++ "contracts_version": "0.8.0",++ "min_client_release": null,++ "mixed_version_window_hours": 24++}nnew file mode 100644@@@ -0,0 +1,7 @@++{++ "service": "live",++ "release": "8a678c8",++ "released_at": "2026-09-23T01:28:10Z",++ "contracts_version": "0.8.0",++ "min_client_release": null++}nnew file mode 100644@@@ -0,0 +1,10 @@++{++ "service": "live",++ "release": "8a678c8",++ "released_at": "2026-09-23T01:28:10Z",++ "booted_at": "2026-09-23T01:31:52Z",++ "contracts_version": "0.8.0",++ "packages": { "openvibe-shared": "1.0.0", "openvibe-sdk": "0.2.2" },++ "min_client_release": null,++ "mixed_version_window_hours": 24++}@@@ -800,6 +800,72 @@}}}++ },++ "registry.release-manifest": {++ "version": "1.0.0",++ "owner": "network",++ "status": "active",++ "schema": {++ "$schema": "https://json-schema.org/draft/2020-12/schema",++ "$id": "https://openvibe.network/contracts/registry/release-manifest.v1.json",++ "title": "ReleaseManifest",++ "description": "What a running web surface is serving (GET /release.json, ADR-016). Open clients compare it on focus and reconnect; a client outside the supported window is prompted and reloads only when that is safe.",++ "type": "object",++ "required": [++ "service",++ "release",++ "released_at",++ "contracts_version",++ "min_client_release",++ "mixed_version_window_hours"++ ],++ "additionalProperties": false,++ "properties": {++ "service": {++ "type": "string",++ "pattern": "^[a-z][a-z0-9-]{1,39}$"++ },++ "release": {++ "type": "string",++ "pattern": "^[0-9a-f]{7,40}$",++ "description": "The deployed commit (short sha)."++ },++ "released_at": {++ "type": "string",++ "format": "date-time",++ "description": "Commit time of the release."++ },++ "booted_at": {++ "type": "string",++ "format": "date-time"++ },++ "contracts_version": {++ "type": [++ "string",++ "null"++ ],++ "description": "openvibe-contracts version the service runs against."++ },++ "packages": {++ "type": "object",++ "description": "Versions of the platform packages the page loads (openvibe-shared, openvibe-sdk, ...).",++ "additionalProperties": {++ "type": "string"++ }++ },++ "min_client_release": {++ "type": [++ "string",++ "null"++ ],++ "description": "Oldest client release still supported; null while every client in the window is."++ },++ "mixed_version_window_hours": {++ "type": "integer",++ "minimum": 0++ }++ }++ }}}}@@@ -251,3 +251,35 @@ export interface ModuleRecord {*/updated_by?: string;}++++/** [email protected] (owner: network) */++/**++ * What a running web surface is serving (GET /release.json, ADR-016). Open clients compare it on focus and reconnect; a client outside the supported window is prompted and reloads only when that is safe.++ */++export interface ReleaseManifest {++ service: string;++ /**++ * The deployed commit (short sha).++ */++ release: string;++ /**++ * Commit time of the release.++ */++ released_at: string;++ booted_at?: string;++ /**++ * openvibe-contracts version the service runs against.++ */++ contracts_version: string | null;++ /**++ * Versions of the platform packages the page loads (openvibe-shared, openvibe-sdk, ...).++ */++ packages?: {++ [k: string]: string | undefined;++ };++ /**++ * Oldest client release still supported; null while every client in the window is.++ */++ min_client_release: string | null;++ mixed_version_window_hours: number;++}@@@ -1,6 +1,6 @@{"name": "openvibe-contracts",-- "version": "0.8.0",++ "version": "0.9.0","description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.","main": "index.js","types": "generated/typescript/index.d.ts",
@@ -107,6 +107,16 @@
@@ -107,6 +107,16 @@
"visibility": "public",
"visibility": "public",
"compatibility": "backward",
"compatibility": "backward",
"status": "active"
"status": "active"
+ },
+ {
+ "id": "registry.release-manifest",
+ "version": "1.0.0",
+ "owner": "network",
+ "schema": "registry/release-manifest.v1.json",
+ "visibility": "public",
+ "compatibility": "backward",
+ "status": "active",
+ "adr": "ADR-016"
}
}
]
]
}
}
new file mode 100644
new file mode 100644
@@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
+{
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/registry/release-manifest.v1.json",
+ "title": "ReleaseManifest",
+ "description": "What a running web surface is serving (GET /release.json, ADR-016). Open clients compare it on focus and reconnect; a client outside the supported window is prompted and reloads only when that is safe.",
+ "type": "object",
+ "required": ["service", "release", "released_at", "contracts_version", "min_client_release", "mixed_version_window_hours"],
+ "additionalProperties": false,
+ "properties": {
+ "service": { "type": "string", "pattern": "^[a-z][a-z0-9-]{1,39}$" },
+ "release": { "type": "string", "pattern": "^[0-9a-f]{7,40}$", "description": "The deployed commit (short sha)." },
+ "released_at": { "type": "string", "format": "date-time", "description": "Commit time of the release." },
+ "booted_at": { "type": "string", "format": "date-time" },
+ "contracts_version": { "type": ["string", "null"], "description": "openvibe-contracts version the service runs against." },
+ "packages": {
+ "type": "object",
+ "description": "Versions of the platform packages the page loads (openvibe-shared, openvibe-sdk, ...).",
+ "additionalProperties": { "type": "string" }
+ },
+ "min_client_release": { "type": ["string", "null"], "description": "Oldest client release still supported; null while every client in the window is." },
+ "mixed_version_window_hours": { "type": "integer", "minimum": 0 }
+ }
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
+{
+ "service": "live",
+ "release": "main",
+ "released_at": "2026-09-23T01:28:10Z",
+ "contracts_version": "0.8.0",
+ "min_client_release": null,
+ "mixed_version_window_hours": 24
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
+{
+ "service": "live",
+ "release": "8a678c8",
+ "released_at": "2026-09-23T01:28:10Z",
+ "contracts_version": "0.8.0",
+ "min_client_release": null
+}
new file mode 100644
new file mode 100644
@@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
+{
+ "service": "live",
+ "release": "8a678c8",
+ "released_at": "2026-09-23T01:28:10Z",
+ "booted_at": "2026-09-23T01:31:52Z",
+ "contracts_version": "0.8.0",
+ "packages": { "openvibe-shared": "1.0.0", "openvibe-sdk": "0.2.2" },
+ "min_client_release": null,
+ "mixed_version_window_hours": 24
+}
@@ -800,6 +800,72 @@
@@ -800,6 +800,72 @@
}
}
}
}
}
}
+ },
+ "registry.release-manifest": {
+ "version": "1.0.0",
+ "owner": "network",
+ "status": "active",
+ "schema": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "$id": "https://openvibe.network/contracts/registry/release-manifest.v1.json",
+ "title": "ReleaseManifest",
+ "description": "What a running web surface is serving (GET /release.json, ADR-016). Open clients compare it on focus and reconnect; a client outside the supported window is prompted and reloads only when that is safe.",
+ "type": "object",
+ "required": [
+ "service",
+ "release",
+ "released_at",
+ "contracts_version",
+ "min_client_release",
+ "mixed_version_window_hours"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "service": {
+ "type": "string",
+ "pattern": "^[a-z][a-z0-9-]{1,39}$"
+ },
+ "release": {
+ "type": "string",
+ "pattern": "^[0-9a-f]{7,40}$",
+ "description": "The deployed commit (short sha)."
+ },
+ "released_at": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Commit time of the release."
+ },
+ "booted_at": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "contracts_version": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "openvibe-contracts version the service runs against."
+ },
+ "packages": {
+ "type": "object",
+ "description": "Versions of the platform packages the page loads (openvibe-shared, openvibe-sdk, ...).",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "min_client_release": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Oldest client release still supported; null while every client in the window is."
+ },
+ "mixed_version_window_hours": {
+ "type": "integer",
+ "minimum": 0
+ }
+ }
+ }
}
}
}
}
}
}
@@ -251,3 +251,35 @@ export interface ModuleRecord {
@@ -251,3 +251,35 @@ export interface ModuleRecord {
*/
*/
updated_by?: string;
updated_by?: string;
}
}
+
+/** [email protected] (owner: network) */
+/**
+ * What a running web surface is serving (GET /release.json, ADR-016). Open clients compare it on focus and reconnect; a client outside the supported window is prompted and reloads only when that is safe.
+ */
+export interface ReleaseManifest {
+ service: string;
+ /**
+ * The deployed commit (short sha).
+ */
+ release: string;
+ /**
+ * Commit time of the release.
+ */
+ released_at: string;
+ booted_at?: string;
+ /**
+ * openvibe-contracts version the service runs against.
+ */
+ contracts_version: string | null;
+ /**
+ * Versions of the platform packages the page loads (openvibe-shared, openvibe-sdk, ...).
+ */
+ packages?: {
+ [k: string]: string | undefined;
+ };
+ /**
+ * Oldest client release still supported; null while every client in the window is.
+ */
+ min_client_release: string | null;
+ mixed_version_window_hours: number;
+}
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-contracts",
"name": "openvibe-contracts",
- "version": "0.8.0",
+ "version": "0.9.0",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"description": "Machine-readable contracts for the OpenVibe network: schemas, manifests, ids, error envelope, capability checks.",
"main": "index.js",
"main": "index.js",
"types": "generated/typescript/index.d.ts",
"types": "generated/typescript/index.d.ts",