openvibers/openvibe.contracts Commits

Add T1 Universal Fabric contracts

OP OpenVibers committed 1 Oct 2026 · b0b8ce8ed4 · 35 files, +3031 −3


Changes

ddiff --git a/CHANGELOG.md b/CHANGELOG.md
iindex a62c4df9..df51a6b5 100644
---- a/CHANGELOG.md
++++ b/CHANGELOG.md
@@@ -4,6 +4,12 @@ All notable changes to `openvibe-contracts`. Releases are git tags (`vX.Y.Z`) th
from `https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/<tag>`. Before v0.30.0,
the notes were in the tag and commit messages (`git tag -n1`).
++## Unreleased — T1 Universal Fabric
++
++Add nine public `platform.*@1` schemas: usage and telemetry samples; node capabilities and
++service instances; runtime, storage, delivery, agent, and harness offers. Each has valid and
++invalid fixtures. ADR-034 is proposed. Generated types and bundle include all nine.
++
## 0.83.0 — 2026-09-29
**Host site configuration** (plan T12 J3): the capability `host.site.config` (active, first-party, `host:write`, project
ddiff --git a/README.md b/README.md
iindex ac11702e..4c323c77 100644
---- a/README.md
++++ b/README.md
@@@ -2,7 +2,8 @@
> Machine-readable contracts for the whole OpenVibe network.
--**Status:** alpha, v0.75.0 (first released in Wave 1). 540 schemas in `contracts/catalog.json`, 31 service manifests, 205 capability manifests, 13 namespace manifests and the staff capability map. Service repositories run `openvibe-contracts-check` and the pin-drift check in CI, and deployed services verify service and app tokens with `serviceAuth` in production. Consumers pin release tags (each repository's `STATUS.json` names its pin; `node scripts/docs-currency.js <root>` checks that it matches `package.json`).
++**Status:** alpha, v0.75.0 (first released in Wave 1). 589 schemas in `contracts/catalog.json`, 31 service manifests, 205 capability manifests, 13 namespace manifests and the staff capability map. Service repositories run `openvibe-contracts-check` and the pin-drift check in CI, and deployed services verify service and app tokens with `serviceAuth` in production. Consumers pin release tags (each repository's `STATUS.json` names its pin; `node scripts/docs-currency.js <root>` checks that it matches `package.json`).
++
**Plan:** OpenVibe Development Roadmap, Wave 1 (implementation plan rev 3, §3.1 and §18.11).
**License:** AGPL-3.0 (same as every OpenVibe service).
ddiff --git a/STATUS.json b/STATUS.json
iindex 224f781b..540cb73f 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -9,7 +9,7 @@
"deployment": "none of its own: a library and artifact repository published as release tags; services pin a tag and deploy it with their own releases",
"contracts": "openvibe-contracts v0.75.0 (this package; the newest tag)",
"features": [
-- "540 JSON Schemas with valid and invalid fixtures",
++ "589 JSON Schemas with valid and invalid fixtures",
"31 service manifests with lifecycle declarations",
"205 capability manifests and the staff capability map",
"13 user-module namespace manifests",
@@@ -19,5 +19,5 @@
"compatibility check against the previous tag (scripts/compat.js)",
"documentation-currency check (scripts/docs-currency.js)"
],
-- "updated": "2026-09-28"
++ "updated": "2026-09-30"
}
ddiff --git a/contracts/catalog.json b/contracts/catalog.json
iindex b970c25e..aaa63a6a 100644
---- a/contracts/catalog.json
++++ b/contracts/catalog.json
@@@ -5300,6 +5300,96 @@
"status": "active",
"adr": "ADR-034"
},
++ {
++ "id": "platform.usage-sample",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "platform/usage-sample.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active",
++ "adr": "ADR-034"
++ },
++ {
++ "id": "platform.telemetry-sample",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "platform/telemetry-sample.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active",
++ "adr": "ADR-034"
++ },
++ {
++ "id": "platform.node-capabilities",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "platform/node-capabilities.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active",
++ "adr": "ADR-034"
++ },
++ {
++ "id": "platform.service-instance",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "platform/service-instance.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active",
++ "adr": "ADR-034"
++ },
++ {
++ "id": "platform.runtime-offer",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "platform/runtime-offer.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active",
++ "adr": "ADR-034"
++ },
++ {
++ "id": "platform.storage-offer",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "platform/storage-offer.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active",
++ "adr": "ADR-034"
++ },
++ {
++ "id": "platform.delivery-offer",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "platform/delivery-offer.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active",
++ "adr": "ADR-034"
++ },
++ {
++ "id": "platform.agent-offer",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "platform/agent-offer.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active",
++ "adr": "ADR-034"
++ },
++ {
++ "id": "platform.harness-offer",
++ "version": "1.0.0",
++ "owner": "network",
++ "schema": "platform/harness-offer.v1.json",
++ "visibility": "public",
++ "compatibility": "backward",
++ "status": "active",
++ "adr": "ADR-034"
++ },
{
"id": "events.delivery-policy",
"version": "1.0.0",
ddiff --git a/contracts/platform/agent-offer.v1.json b/contracts/platform/agent-offer.v1.json
nnew file mode 100644
iindex 00000000..70edeb37
---- /dev/null
++++ b/contracts/platform/agent-offer.v1.json
@@@ -0,0 +1,123 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/agent-offer.v1.json",
++ "title": "AgentOffer",
++ "description": "Agent model capacity and token pricing (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "harness",
++ "provider",
++ "model",
++ "context_limits",
++ "concurrency",
++ "price_per_1k_tokens",
++ "availability_windows"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "harness": {
++ "type": "string",
++ "description": "Registered harness offer id"
++ },
++ "provider": {
++ "type": "string"
++ },
++ "model": {
++ "type": "string"
++ },
++ "context_limits": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "input_tokens": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "output_tokens": {
++ "type": "integer",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "input_tokens",
++ "output_tokens"
++ ]
++ },
++ "concurrency": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "price_per_1k_tokens": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "fresh_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "cached_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "output_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ }
++ },
++ "required": [
++ "fresh_usd",
++ "cached_usd",
++ "output_usd"
++ ]
++ },
++ "availability_windows": {
++ "type": "array",
++ "items": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "start": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "end": {
++ "type": "string",
++ "format": "date-time"
++ }
++ },
++ "required": [
++ "start",
++ "end"
++ ]
++ },
++ "description": "Empty means no time restriction"
++ }
++ },
++ "examples": [
++ {
++ "id": "agent-1",
++ "harness": "harness-1",
++ "provider": "example-ai",
++ "model": "model-1",
++ "context_limits": {
++ "input_tokens": 128000,
++ "output_tokens": 8192
++ },
++ "concurrency": 4,
++ "price_per_1k_tokens": {
++ "fresh_usd": 0.003,
++ "cached_usd": 0.001,
++ "output_usd": 0.01
++ },
++ "availability_windows": []
++ }
++ ]
++}
ddiff --git a/contracts/platform/delivery-offer.v1.json b/contracts/platform/delivery-offer.v1.json
nnew file mode 100644
iindex 00000000..97783e6e
---- /dev/null
++++ b/contracts/platform/delivery-offer.v1.json
@@@ -0,0 +1,102 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/delivery-offer.v1.json",
++ "title": "DeliveryOffer",
++ "description": "Transport and edge delivery capacity with cache policy and pricing (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "transports",
++ "regions",
++ "edge",
++ "price_per_gb_usd",
++ "price_per_request_usd",
++ "cache_rules"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "transports": {
++ "type": "array",
++ "items": {
++ "type": "string",
++ "enum": [
++ "http",
++ "hls",
++ "rtmp",
++ "srt",
++ "ws"
++ ]
++ },
++ "minItems": 1,
++ "uniqueItems": true
++ },
++ "regions": {
++ "type": "array",
++ "items": {
++ "type": "string"
++ },
++ "minItems": 1
++ },
++ "edge": {
++ "type": "boolean"
++ },
++ "node": {
++ "type": "string"
++ },
++ "price_per_gb_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "price_per_request_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "cache_rules": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "enabled": {
++ "type": "boolean"
++ },
++ "ttl_seconds": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "max_object_mb": {
++ "type": "number",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "enabled"
++ ]
++ }
++ },
++ "examples": [
++ {
++ "id": "delivery-1",
++ "transports": [
++ "http",
++ "hls"
++ ],
++ "regions": [
++ "us-west"
++ ],
++ "edge": true,
++ "node": "node-1",
++ "price_per_gb_usd": 0.02,
++ "price_per_request_usd": 1e-05,
++ "cache_rules": {
++ "enabled": true,
++ "ttl_seconds": 300,
++ "max_object_mb": 100
++ }
++ }
++ ]
++}
ddiff --git a/contracts/platform/harness-offer.v1.json b/contracts/platform/harness-offer.v1.json
nnew file mode 100644
iindex 00000000..cd6afb4d
---- /dev/null
++++ b/contracts/platform/harness-offer.v1.json
@@@ -0,0 +1,142 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/harness-offer.v1.json",
++ "title": "HarnessOffer",
++ "description": "Registered coding or agent harness, its access method, limits, and price (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "name",
++ "provider",
++ "capabilities",
++ "address",
++ "price",
++ "limits"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "name": {
++ "type": "string"
++ },
++ "provider": {
++ "type": "string"
++ },
++ "capabilities": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "host_access": {
++ "type": "boolean"
++ },
++ "mcp": {
++ "type": "boolean"
++ },
++ "long_autonomy": {
++ "type": "boolean"
++ },
++ "resume": {
++ "type": "boolean"
++ }
++ },
++ "required": [
++ "host_access",
++ "mcp",
++ "long_autonomy",
++ "resume"
++ ]
++ },
++ "address": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "kind": {
++ "type": "string",
++ "enum": [
++ "api",
++ "cli",
++ "mcp"
++ ]
++ },
++ "target": {
++ "type": "string",
++ "description": "Endpoint URI, executable, or MCP server name"
++ }
++ },
++ "required": [
++ "kind",
++ "target"
++ ]
++ },
++ "price": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "amount_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "unit": {
++ "type": "string",
++ "description": "Billing unit"
++ }
++ },
++ "required": [
++ "amount_usd",
++ "unit"
++ ]
++ },
++ "limits": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "max_duration_seconds": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "max_concurrent_runs": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "max_context_tokens": {
++ "type": "integer",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "max_duration_seconds",
++ "max_concurrent_runs"
++ ]
++ }
++ },
++ "examples": [
++ {
++ "id": "harness-1",
++ "name": "Example Agent",
++ "provider": "example-ai",
++ "capabilities": {
++ "host_access": true,
++ "mcp": true,
++ "long_autonomy": true,
++ "resume": true
++ },
++ "address": {
++ "kind": "cli",
++ "target": "example-agent"
++ },
++ "price": {
++ "amount_usd": 0.1,
++ "unit": "hour"
++ },
++ "limits": {
++ "max_duration_seconds": 7200,
++ "max_concurrent_runs": 4,
++ "max_context_tokens": 128000
++ }
++ }
++ ]
++}
ddiff --git a/contracts/platform/node-capabilities.v1.json b/contracts/platform/node-capabilities.v1.json
nnew file mode 100644
iindex 00000000..8da04750
---- /dev/null
++++ b/contracts/platform/node-capabilities.v1.json
@@@ -0,0 +1,177 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/node-capabilities.v1.json",
++ "title": "NodeCapabilities",
++ "description": "Node hardware, placement regions, tags, and operating costs (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "node_id",
++ "cpu",
++ "arch",
++ "memory_mb",
++ "storage",
++ "network",
++ "regions",
++ "tags",
++ "costs"
++ ],
++ "properties": {
++ "node_id": {
++ "type": "string"
++ },
++ "cpu": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "cores": {
++ "type": "number",
++ "minimum": 0
++ },
++ "threads": {
++ "type": "integer",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "cores"
++ ]
++ },
++ "arch": {
++ "type": "string",
++ "description": "CPU architecture"
++ },
++ "memory_mb": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "gpu": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "model": {
++ "type": "string"
++ },
++ "count": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "vram_mb": {
++ "type": "integer",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "model",
++ "count"
++ ]
++ },
++ "storage": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "capacity_gb": {
++ "type": "number",
++ "minimum": 0
++ },
++ "available_gb": {
++ "type": "number",
++ "minimum": 0
++ },
++ "kind": {
++ "type": "string"
++ }
++ },
++ "required": [
++ "capacity_gb"
++ ]
++ },
++ "network": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "ingress_mbps": {
++ "type": "number",
++ "minimum": 0
++ },
++ "egress_mbps": {
++ "type": "number",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "ingress_mbps",
++ "egress_mbps"
++ ]
++ },
++ "regions": {
++ "type": "array",
++ "items": {
++ "type": "string"
++ },
++ "minItems": 1
++ },
++ "tags": {
++ "type": "array",
++ "items": {
++ "type": "string"
++ }
++ },
++ "costs": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "per_hour_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "egress_per_gb_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ }
++ },
++ "required": [
++ "per_hour_usd"
++ ]
++ }
++ },
++ "examples": [
++ {
++ "node_id": "node-1",
++ "cpu": {
++ "cores": 8,
++ "threads": 16
++ },
++ "arch": "x86_64",
++ "memory_mb": 16384,
++ "gpu": {
++ "model": "L4",
++ "count": 1,
++ "vram_mb": 24576
++ },
++ "storage": {
++ "capacity_gb": 500,
++ "available_gb": 300,
++ "kind": "ssd"
++ },
++ "network": {
++ "ingress_mbps": 1000,
++ "egress_mbps": 1000
++ },
++ "regions": [
++ "us-west"
++ ],
++ "tags": [
++ "gpu",
++ "edge"
++ ],
++ "costs": {
++ "per_hour_usd": 0.2,
++ "egress_per_gb_usd": 0.01
++ }
++ }
++ ]
++}
ddiff --git a/contracts/platform/runtime-offer.v1.json b/contracts/platform/runtime-offer.v1.json
nnew file mode 100644
iindex 00000000..ea7f953c
---- /dev/null
++++ b/contracts/platform/runtime-offer.v1.json
@@@ -0,0 +1,124 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/runtime-offer.v1.json",
++ "title": "RuntimeOffer",
++ "description": "Available execution capacity for code on a node (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "kind",
++ "region",
++ "node",
++ "limits",
++ "price",
++ "availability",
++ "constraints"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "kind": {
++ "type": "string",
++ "enum": [
++ "container",
++ "process",
++ "wasm",
++ "vm",
++ "function"
++ ]
++ },
++ "region": {
++ "type": "string"
++ },
++ "node": {
++ "type": "string"
++ },
++ "limits": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "cpu_cores": {
++ "type": "number",
++ "minimum": 0
++ },
++ "memory_mb": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "duration_seconds": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "concurrency": {
++ "type": "integer",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "cpu_cores",
++ "memory_mb"
++ ]
++ },
++ "price": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "amount_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "unit": {
++ "type": "string",
++ "enum": [
++ "second",
++ "hour",
++ "invocation"
++ ]
++ }
++ },
++ "required": [
++ "amount_usd",
++ "unit"
++ ]
++ },
++ "availability": {
++ "type": "string",
++ "enum": [
++ "available",
++ "limited",
++ "unavailable"
++ ]
++ },
++ "constraints": {
++ "type": "array",
++ "items": {
++ "type": "string"
++ }
++ }
++ },
++ "examples": [
++ {
++ "id": "runtime-1",
++ "kind": "container",
++ "region": "us-west",
++ "node": "node-1",
++ "limits": {
++ "cpu_cores": 2,
++ "memory_mb": 4096,
++ "duration_seconds": 3600
++ },
++ "price": {
++ "amount_usd": 0.05,
++ "unit": "hour"
++ },
++ "availability": "available",
++ "constraints": [
++ "first-party"
++ ]
++ }
++ ]
++}
ddiff --git a/contracts/platform/service-instance.v1.json b/contracts/platform/service-instance.v1.json
nnew file mode 100644
iindex 00000000..ec618da1
---- /dev/null
++++ b/contracts/platform/service-instance.v1.json
@@@ -0,0 +1,77 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/service-instance.v1.json",
++ "title": "ServiceInstance",
++ "description": "One running instance registered in a cell (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "service",
++ "version",
++ "cell",
++ "node",
++ "region",
++ "endpoints",
++ "state",
++ "started_at"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "service": {
++ "type": "string"
++ },
++ "version": {
++ "type": "string"
++ },
++ "cell": {
++ "type": "string"
++ },
++ "node": {
++ "type": "string"
++ },
++ "region": {
++ "type": "string"
++ },
++ "endpoints": {
++ "type": "array",
++ "items": {
++ "type": "string",
++ "format": "uri"
++ },
++ "minItems": 1
++ },
++ "state": {
++ "type": "string",
++ "enum": [
++ "starting",
++ "ready",
++ "degraded",
++ "draining",
++ "stopped"
++ ]
++ },
++ "started_at": {
++ "type": "string",
++ "format": "date-time"
++ }
++ },
++ "examples": [
++ {
++ "id": "inst-1",
++ "service": "media",
++ "version": "1.4.0",
++ "cell": "cell-west",
++ "node": "node-1",
++ "region": "us-west",
++ "endpoints": [
++ "https://media.internal.example"
++ ],
++ "state": "ready",
++ "started_at": "2026-09-30T10:00:00Z"
++ }
++ ]
++}
ddiff --git a/contracts/platform/storage-offer.v1.json b/contracts/platform/storage-offer.v1.json
nnew file mode 100644
iindex 00000000..a153a1f9
---- /dev/null
++++ b/contracts/platform/storage-offer.v1.json
@@@ -0,0 +1,125 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/storage-offer.v1.json",
++ "title": "StorageOffer",
++ "description": "Durable storage capacity and operation pricing (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "class",
++ "capacity_gb",
++ "price_per_gb_month_usd",
++ "price_per_operation_usd",
++ "region",
++ "node",
++ "durability",
++ "lifecycle_rules"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "class": {
++ "type": "string",
++ "enum": [
++ "hot",
++ "warm",
++ "cold"
++ ]
++ },
++ "capacity_gb": {
++ "type": "number",
++ "minimum": 0
++ },
++ "price_per_gb_month_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "price_per_operation_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "region": {
++ "type": "string"
++ },
++ "node": {
++ "type": "string"
++ },
++ "durability": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "replicas": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "target_nines": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Advertised durability nines"
++ }
++ },
++ "required": [
++ "replicas"
++ ]
++ },
++ "lifecycle_rules": {
++ "type": "array",
++ "items": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "after_days": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "action": {
++ "type": "string",
++ "enum": [
++ "transition",
++ "expire"
++ ]
++ },
++ "target_class": {
++ "type": "string",
++ "enum": [
++ "hot",
++ "warm",
++ "cold"
++ ]
++ }
++ },
++ "required": [
++ "after_days",
++ "action"
++ ]
++ }
++ }
++ },
++ "examples": [
++ {
++ "id": "storage-1",
++ "class": "warm",
++ "capacity_gb": 1000,
++ "price_per_gb_month_usd": 0.02,
++ "price_per_operation_usd": 1e-05,
++ "region": "us-west",
++ "node": "node-1",
++ "durability": {
++ "replicas": 3,
++ "target_nines": 9
++ },
++ "lifecycle_rules": [
++ {
++ "after_days": 90,
++ "action": "transition",
++ "target_class": "cold"
++ }
++ ]
++ }
++ ]
++}
ddiff --git a/contracts/platform/telemetry-sample.v1.json b/contracts/platform/telemetry-sample.v1.json
nnew file mode 100644
iindex 00000000..5fb9abdf
---- /dev/null
++++ b/contracts/platform/telemetry-sample.v1.json
@@@ -0,0 +1,126 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/telemetry-sample.v1.json",
++ "title": "TelemetrySample",
++ "description": "Universal operation observation for routing and autoscaling, with product dimensions in extra (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "service",
++ "operation",
++ "at"
++ ],
++ "properties": {
++ "service": {
++ "type": "string"
++ },
++ "project": {
++ "type": "string",
++ "pattern": "^prj_[0-9A-HJKMNP-TV-Z]{26}$"
++ },
++ "subject": {
++ "type": "string"
++ },
++ "resource": {
++ "type": "string"
++ },
++ "provider": {
++ "type": "string"
++ },
++ "node": {
++ "type": "string"
++ },
++ "cell": {
++ "type": "string"
++ },
++ "region": {
++ "type": "string"
++ },
++ "operation": {
++ "type": "string"
++ },
++ "at": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "latency_ms": {
++ "type": "number",
++ "minimum": 0
++ },
++ "queue_delay_ms": {
++ "type": "number",
++ "minimum": 0
++ },
++ "ttfb_ms": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Time to first byte in milliseconds"
++ },
++ "throughput_per_second": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Operation units per second"
++ },
++ "bytes": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "status": {
++ "type": "string"
++ },
++ "cache_status": {
++ "type": "string"
++ },
++ "cost_estimate": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "route_epoch": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "trace_id": {
++ "type": "string"
++ },
++ "extra": {
++ "type": "object",
++ "description": "Product-specific scalar dimensions; no payloads or secrets",
++ "additionalProperties": {
++ "type": [
++ "string",
++ "number",
++ "boolean"
++ ]
++ }
++ }
++ },
++ "examples": [
++ {
++ "service": "media",
++ "project": "prj_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "subject": "user:usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "resource": "object-1",
++ "provider": "local",
++ "node": "node-1",
++ "cell": "cell-west",
++ "region": "us-west",
++ "operation": "deliver",
++ "at": "2026-09-30T10:00:00Z",
++ "latency_ms": 28,
++ "queue_delay_ms": 2,
++ "ttfb_ms": 11,
++ "throughput_per_second": 1048576,
++ "bytes": 4096,
++ "status": "ok",
++ "cache_status": "hit",
++ "cost_estimate": 0.0001,
++ "route_epoch": 3,
++ "trace_id": "tr-42",
++ "extra": {
++ "transport": "http"
++ }
++ }
++ ]
++}
ddiff --git a/contracts/platform/usage-sample.v1.json b/contracts/platform/usage-sample.v1.json
nnew file mode 100644
iindex 00000000..3b93c0c7
---- /dev/null
++++ b/contracts/platform/usage-sample.v1.json
@@@ -0,0 +1,95 @@
++{
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/usage-sample.v1.json",
++ "title": "UsageSample",
++ "description": "One metered usage reading with retry-safe attribution (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "idempotency_key",
++ "service",
++ "operation",
++ "quantity",
++ "unit",
++ "at",
++ "source"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "idempotency_key": {
++ "type": "string",
++ "description": "Stable across retries"
++ },
++ "service": {
++ "type": "string"
++ },
++ "project": {
++ "type": "string",
++ "pattern": "^prj_[0-9A-HJKMNP-TV-Z]{26}$"
++ },
++ "subject": {
++ "type": "string"
++ },
++ "resource": {
++ "type": "string"
++ },
++ "provider": {
++ "type": "string"
++ },
++ "node": {
++ "type": "string"
++ },
++ "cell": {
++ "type": "string"
++ },
++ "region": {
++ "type": "string"
++ },
++ "operation": {
++ "type": "string"
++ },
++ "quantity": {
++ "type": "number",
++ "minimum": 0
++ },
++ "unit": {
++ "type": "string"
++ },
++ "at": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "cost_estimate": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "source": {
++ "type": "string"
++ }
++ },
++ "examples": [
++ {
++ "id": "use-1",
++ "idempotency_key": "media:delivery:1",
++ "service": "media",
++ "project": "prj_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "subject": "user:usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "resource": "object-1",
++ "provider": "local",
++ "node": "node-1",
++ "cell": "cell-west",
++ "region": "us-west",
++ "operation": "deliver",
++ "quantity": 1.5,
++ "unit": "GiB",
++ "at": "2026-09-30T10:00:00Z",
++ "cost_estimate": 0.03,
++ "source": "media.egress"
++ }
++ ]
++}
ddiff --git a/fixtures/platform.agent-offer/invalid/missing-id.json b/fixtures/platform.agent-offer/invalid/missing-id.json
nnew file mode 100644
iindex 00000000..d5ddd9a9
---- /dev/null
++++ b/fixtures/platform.agent-offer/invalid/missing-id.json
@@@ -0,0 +1,16 @@
++{
++ "harness": "harness-1",
++ "provider": "example-ai",
++ "model": "model-1",
++ "context_limits": {
++ "input_tokens": 128000,
++ "output_tokens": 8192
++ },
++ "concurrency": 4,
++ "price_per_1k_tokens": {
++ "fresh_usd": 0.003,
++ "cached_usd": 0.001,
++ "output_usd": 0.01
++ },
++ "availability_windows": []
++}
ddiff --git a/fixtures/platform.agent-offer/valid/example.json b/fixtures/platform.agent-offer/valid/example.json
nnew file mode 100644
iindex 00000000..cf128121
---- /dev/null
++++ b/fixtures/platform.agent-offer/valid/example.json
@@@ -0,0 +1,17 @@
++{
++ "id": "agent-1",
++ "harness": "harness-1",
++ "provider": "example-ai",
++ "model": "model-1",
++ "context_limits": {
++ "input_tokens": 128000,
++ "output_tokens": 8192
++ },
++ "concurrency": 4,
++ "price_per_1k_tokens": {
++ "fresh_usd": 0.003,
++ "cached_usd": 0.001,
++ "output_usd": 0.01
++ },
++ "availability_windows": []
++}
ddiff --git a/fixtures/platform.delivery-offer/invalid/missing-id.json b/fixtures/platform.delivery-offer/invalid/missing-id.json
nnew file mode 100644
iindex 00000000..c6bf8bf1
---- /dev/null
++++ b/fixtures/platform.delivery-offer/invalid/missing-id.json
@@@ -0,0 +1,18 @@
++{
++ "transports": [
++ "http",
++ "hls"
++ ],
++ "regions": [
++ "us-west"
++ ],
++ "edge": true,
++ "node": "node-1",
++ "price_per_gb_usd": 0.02,
++ "price_per_request_usd": 1e-05,
++ "cache_rules": {
++ "enabled": true,
++ "ttl_seconds": 300,
++ "max_object_mb": 100
++ }
++}
ddiff --git a/fixtures/platform.delivery-offer/valid/example.json b/fixtures/platform.delivery-offer/valid/example.json
nnew file mode 100644
iindex 00000000..9890da98
---- /dev/null
++++ b/fixtures/platform.delivery-offer/valid/example.json
@@@ -0,0 +1,19 @@
++{
++ "id": "delivery-1",
++ "transports": [
++ "http",
++ "hls"
++ ],
++ "regions": [
++ "us-west"
++ ],
++ "edge": true,
++ "node": "node-1",
++ "price_per_gb_usd": 0.02,
++ "price_per_request_usd": 1e-05,
++ "cache_rules": {
++ "enabled": true,
++ "ttl_seconds": 300,
++ "max_object_mb": 100
++ }
++}
ddiff --git a/fixtures/platform.harness-offer/invalid/missing-id.json b/fixtures/platform.harness-offer/invalid/missing-id.json
nnew file mode 100644
iindex 00000000..5e074913
---- /dev/null
++++ b/fixtures/platform.harness-offer/invalid/missing-id.json
@@@ -0,0 +1,23 @@
++{
++ "name": "Example Agent",
++ "provider": "example-ai",
++ "capabilities": {
++ "host_access": true,
++ "mcp": true,
++ "long_autonomy": true,
++ "resume": true
++ },
++ "address": {
++ "kind": "cli",
++ "target": "example-agent"
++ },
++ "price": {
++ "amount_usd": 0.1,
++ "unit": "hour"
++ },
++ "limits": {
++ "max_duration_seconds": 7200,
++ "max_concurrent_runs": 4,
++ "max_context_tokens": 128000
++ }
++}
ddiff --git a/fixtures/platform.harness-offer/valid/example.json b/fixtures/platform.harness-offer/valid/example.json
nnew file mode 100644
iindex 00000000..474964af
---- /dev/null
++++ b/fixtures/platform.harness-offer/valid/example.json
@@@ -0,0 +1,24 @@
++{
++ "id": "harness-1",
++ "name": "Example Agent",
++ "provider": "example-ai",
++ "capabilities": {
++ "host_access": true,
++ "mcp": true,
++ "long_autonomy": true,
++ "resume": true
++ },
++ "address": {
++ "kind": "cli",
++ "target": "example-agent"
++ },
++ "price": {
++ "amount_usd": 0.1,
++ "unit": "hour"
++ },
++ "limits": {
++ "max_duration_seconds": 7200,
++ "max_concurrent_runs": 4,
++ "max_context_tokens": 128000
++ }
++}
ddiff --git a/fixtures/platform.node-capabilities/invalid/missing-node_id.json b/fixtures/platform.node-capabilities/invalid/missing-node_id.json
nnew file mode 100644
iindex 00000000..c12590d6
---- /dev/null
++++ b/fixtures/platform.node-capabilities/invalid/missing-node_id.json
@@@ -0,0 +1,33 @@
++{
++ "cpu": {
++ "cores": 8,
++ "threads": 16
++ },
++ "arch": "x86_64",
++ "memory_mb": 16384,
++ "gpu": {
++ "model": "L4",
++ "count": 1,
++ "vram_mb": 24576
++ },
++ "storage": {
++ "capacity_gb": 500,
++ "available_gb": 300,
++ "kind": "ssd"
++ },
++ "network": {
++ "ingress_mbps": 1000,
++ "egress_mbps": 1000
++ },
++ "regions": [
++ "us-west"
++ ],
++ "tags": [
++ "gpu",
++ "edge"
++ ],
++ "costs": {
++ "per_hour_usd": 0.2,
++ "egress_per_gb_usd": 0.01
++ }
++}
ddiff --git a/fixtures/platform.node-capabilities/valid/example.json b/fixtures/platform.node-capabilities/valid/example.json
nnew file mode 100644
iindex 00000000..626d0fb2
---- /dev/null
++++ b/fixtures/platform.node-capabilities/valid/example.json
@@@ -0,0 +1,34 @@
++{
++ "node_id": "node-1",
++ "cpu": {
++ "cores": 8,
++ "threads": 16
++ },
++ "arch": "x86_64",
++ "memory_mb": 16384,
++ "gpu": {
++ "model": "L4",
++ "count": 1,
++ "vram_mb": 24576
++ },
++ "storage": {
++ "capacity_gb": 500,
++ "available_gb": 300,
++ "kind": "ssd"
++ },
++ "network": {
++ "ingress_mbps": 1000,
++ "egress_mbps": 1000
++ },
++ "regions": [
++ "us-west"
++ ],
++ "tags": [
++ "gpu",
++ "edge"
++ ],
++ "costs": {
++ "per_hour_usd": 0.2,
++ "egress_per_gb_usd": 0.01
++ }
++}
ddiff --git a/fixtures/platform.runtime-offer/invalid/missing-id.json b/fixtures/platform.runtime-offer/invalid/missing-id.json
nnew file mode 100644
iindex 00000000..86e6ab8a
---- /dev/null
++++ b/fixtures/platform.runtime-offer/invalid/missing-id.json
@@@ -0,0 +1,18 @@
++{
++ "kind": "container",
++ "region": "us-west",
++ "node": "node-1",
++ "limits": {
++ "cpu_cores": 2,
++ "memory_mb": 4096,
++ "duration_seconds": 3600
++ },
++ "price": {
++ "amount_usd": 0.05,
++ "unit": "hour"
++ },
++ "availability": "available",
++ "constraints": [
++ "first-party"
++ ]
++}
ddiff --git a/fixtures/platform.runtime-offer/valid/example.json b/fixtures/platform.runtime-offer/valid/example.json
nnew file mode 100644
iindex 00000000..510a0f02
---- /dev/null
++++ b/fixtures/platform.runtime-offer/valid/example.json
@@@ -0,0 +1,19 @@
++{
++ "id": "runtime-1",
++ "kind": "container",
++ "region": "us-west",
++ "node": "node-1",
++ "limits": {
++ "cpu_cores": 2,
++ "memory_mb": 4096,
++ "duration_seconds": 3600
++ },
++ "price": {
++ "amount_usd": 0.05,
++ "unit": "hour"
++ },
++ "availability": "available",
++ "constraints": [
++ "first-party"
++ ]
++}
ddiff --git a/fixtures/platform.service-instance/invalid/missing-id.json b/fixtures/platform.service-instance/invalid/missing-id.json
nnew file mode 100644
iindex 00000000..ae2c7404
---- /dev/null
++++ b/fixtures/platform.service-instance/invalid/missing-id.json
@@@ -0,0 +1,12 @@
++{
++ "service": "media",
++ "version": "1.4.0",
++ "cell": "cell-west",
++ "node": "node-1",
++ "region": "us-west",
++ "endpoints": [
++ "https://media.internal.example"
++ ],
++ "state": "ready",
++ "started_at": "2026-09-30T10:00:00Z"
++}
ddiff --git a/fixtures/platform.service-instance/valid/example.json b/fixtures/platform.service-instance/valid/example.json
nnew file mode 100644
iindex 00000000..8f506b33
---- /dev/null
++++ b/fixtures/platform.service-instance/valid/example.json
@@@ -0,0 +1,13 @@
++{
++ "id": "inst-1",
++ "service": "media",
++ "version": "1.4.0",
++ "cell": "cell-west",
++ "node": "node-1",
++ "region": "us-west",
++ "endpoints": [
++ "https://media.internal.example"
++ ],
++ "state": "ready",
++ "started_at": "2026-09-30T10:00:00Z"
++}
ddiff --git a/fixtures/platform.storage-offer/invalid/missing-id.json b/fixtures/platform.storage-offer/invalid/missing-id.json
nnew file mode 100644
iindex 00000000..fd552b57
---- /dev/null
++++ b/fixtures/platform.storage-offer/invalid/missing-id.json
@@@ -0,0 +1,19 @@
++{
++ "class": "warm",
++ "capacity_gb": 1000,
++ "price_per_gb_month_usd": 0.02,
++ "price_per_operation_usd": 1e-05,
++ "region": "us-west",
++ "node": "node-1",
++ "durability": {
++ "replicas": 3,
++ "target_nines": 9
++ },
++ "lifecycle_rules": [
++ {
++ "after_days": 90,
++ "action": "transition",
++ "target_class": "cold"
++ }
++ ]
++}
ddiff --git a/fixtures/platform.storage-offer/valid/example.json b/fixtures/platform.storage-offer/valid/example.json
nnew file mode 100644
iindex 00000000..5197cf04
---- /dev/null
++++ b/fixtures/platform.storage-offer/valid/example.json
@@@ -0,0 +1,20 @@
++{
++ "id": "storage-1",
++ "class": "warm",
++ "capacity_gb": 1000,
++ "price_per_gb_month_usd": 0.02,
++ "price_per_operation_usd": 1e-05,
++ "region": "us-west",
++ "node": "node-1",
++ "durability": {
++ "replicas": 3,
++ "target_nines": 9
++ },
++ "lifecycle_rules": [
++ {
++ "after_days": 90,
++ "action": "transition",
++ "target_class": "cold"
++ }
++ ]
++}
ddiff --git a/fixtures/platform.telemetry-sample/invalid/missing-service.json b/fixtures/platform.telemetry-sample/invalid/missing-service.json
nnew file mode 100644
iindex 00000000..e2b0ff07
---- /dev/null
++++ b/fixtures/platform.telemetry-sample/invalid/missing-service.json
@@@ -0,0 +1,24 @@
++{
++ "project": "prj_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "subject": "user:usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "resource": "object-1",
++ "provider": "local",
++ "node": "node-1",
++ "cell": "cell-west",
++ "region": "us-west",
++ "operation": "deliver",
++ "at": "2026-09-30T10:00:00Z",
++ "latency_ms": 28,
++ "queue_delay_ms": 2,
++ "ttfb_ms": 11,
++ "throughput_per_second": 1048576,
++ "bytes": 4096,
++ "status": "ok",
++ "cache_status": "hit",
++ "cost_estimate": 0.0001,
++ "route_epoch": 3,
++ "trace_id": "tr-42",
++ "extra": {
++ "transport": "http"
++ }
++}
ddiff --git a/fixtures/platform.telemetry-sample/valid/example.json b/fixtures/platform.telemetry-sample/valid/example.json
nnew file mode 100644
iindex 00000000..41fe6df4
---- /dev/null
++++ b/fixtures/platform.telemetry-sample/valid/example.json
@@@ -0,0 +1,25 @@
++{
++ "service": "media",
++ "project": "prj_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "subject": "user:usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "resource": "object-1",
++ "provider": "local",
++ "node": "node-1",
++ "cell": "cell-west",
++ "region": "us-west",
++ "operation": "deliver",
++ "at": "2026-09-30T10:00:00Z",
++ "latency_ms": 28,
++ "queue_delay_ms": 2,
++ "ttfb_ms": 11,
++ "throughput_per_second": 1048576,
++ "bytes": 4096,
++ "status": "ok",
++ "cache_status": "hit",
++ "cost_estimate": 0.0001,
++ "route_epoch": 3,
++ "trace_id": "tr-42",
++ "extra": {
++ "transport": "http"
++ }
++}
ddiff --git a/fixtures/platform.usage-sample/invalid/missing-id.json b/fixtures/platform.usage-sample/invalid/missing-id.json
nnew file mode 100644
iindex 00000000..6edaae2b
---- /dev/null
++++ b/fixtures/platform.usage-sample/invalid/missing-id.json
@@@ -0,0 +1,17 @@
++{
++ "idempotency_key": "media:delivery:1",
++ "service": "media",
++ "project": "prj_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "subject": "user:usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "resource": "object-1",
++ "provider": "local",
++ "node": "node-1",
++ "cell": "cell-west",
++ "region": "us-west",
++ "operation": "deliver",
++ "quantity": 1.5,
++ "unit": "GiB",
++ "at": "2026-09-30T10:00:00Z",
++ "cost_estimate": 0.03,
++ "source": "media.egress"
++}
ddiff --git a/fixtures/platform.usage-sample/valid/example.json b/fixtures/platform.usage-sample/valid/example.json
nnew file mode 100644
iindex 00000000..ceb7767d
---- /dev/null
++++ b/fixtures/platform.usage-sample/valid/example.json
@@@ -0,0 +1,18 @@
++{
++ "id": "use-1",
++ "idempotency_key": "media:delivery:1",
++ "service": "media",
++ "project": "prj_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "subject": "user:usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "resource": "object-1",
++ "provider": "local",
++ "node": "node-1",
++ "cell": "cell-west",
++ "region": "us-west",
++ "operation": "deliver",
++ "quantity": 1.5,
++ "unit": "GiB",
++ "at": "2026-09-30T10:00:00Z",
++ "cost_estimate": 0.03,
++ "source": "media.egress"
++}
ddiff --git a/generated/json-schema/bundle.json b/generated/json-schema/bundle.json
iindex 57117289..db33bcc3 100644
---- a/generated/json-schema/bundle.json
++++ b/generated/json-schema/bundle.json
@@@ -58278,6 +58278,1142 @@
}
}
},
++ "platform.usage-sample": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/usage-sample.v1.json",
++ "title": "UsageSample",
++ "description": "One metered usage reading with retry-safe attribution (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "idempotency_key",
++ "service",
++ "operation",
++ "quantity",
++ "unit",
++ "at",
++ "source"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "idempotency_key": {
++ "type": "string",
++ "description": "Stable across retries"
++ },
++ "service": {
++ "type": "string"
++ },
++ "project": {
++ "type": "string",
++ "pattern": "^prj_[0-9A-HJKMNP-TV-Z]{26}$"
++ },
++ "subject": {
++ "type": "string"
++ },
++ "resource": {
++ "type": "string"
++ },
++ "provider": {
++ "type": "string"
++ },
++ "node": {
++ "type": "string"
++ },
++ "cell": {
++ "type": "string"
++ },
++ "region": {
++ "type": "string"
++ },
++ "operation": {
++ "type": "string"
++ },
++ "quantity": {
++ "type": "number",
++ "minimum": 0
++ },
++ "unit": {
++ "type": "string"
++ },
++ "at": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "cost_estimate": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "source": {
++ "type": "string"
++ }
++ },
++ "examples": [
++ {
++ "id": "use-1",
++ "idempotency_key": "media:delivery:1",
++ "service": "media",
++ "project": "prj_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "subject": "user:usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "resource": "object-1",
++ "provider": "local",
++ "node": "node-1",
++ "cell": "cell-west",
++ "region": "us-west",
++ "operation": "deliver",
++ "quantity": 1.5,
++ "unit": "GiB",
++ "at": "2026-09-30T10:00:00Z",
++ "cost_estimate": 0.03,
++ "source": "media.egress"
++ }
++ ]
++ }
++ },
++ "platform.telemetry-sample": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/telemetry-sample.v1.json",
++ "title": "TelemetrySample",
++ "description": "Universal operation observation for routing and autoscaling, with product dimensions in extra (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "service",
++ "operation",
++ "at"
++ ],
++ "properties": {
++ "service": {
++ "type": "string"
++ },
++ "project": {
++ "type": "string",
++ "pattern": "^prj_[0-9A-HJKMNP-TV-Z]{26}$"
++ },
++ "subject": {
++ "type": "string"
++ },
++ "resource": {
++ "type": "string"
++ },
++ "provider": {
++ "type": "string"
++ },
++ "node": {
++ "type": "string"
++ },
++ "cell": {
++ "type": "string"
++ },
++ "region": {
++ "type": "string"
++ },
++ "operation": {
++ "type": "string"
++ },
++ "at": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "latency_ms": {
++ "type": "number",
++ "minimum": 0
++ },
++ "queue_delay_ms": {
++ "type": "number",
++ "minimum": 0
++ },
++ "ttfb_ms": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Time to first byte in milliseconds"
++ },
++ "throughput_per_second": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Operation units per second"
++ },
++ "bytes": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "status": {
++ "type": "string"
++ },
++ "cache_status": {
++ "type": "string"
++ },
++ "cost_estimate": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "route_epoch": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "trace_id": {
++ "type": "string"
++ },
++ "extra": {
++ "type": "object",
++ "description": "Product-specific scalar dimensions; no payloads or secrets",
++ "additionalProperties": {
++ "type": [
++ "string",
++ "number",
++ "boolean"
++ ]
++ }
++ }
++ },
++ "examples": [
++ {
++ "service": "media",
++ "project": "prj_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "subject": "user:usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
++ "resource": "object-1",
++ "provider": "local",
++ "node": "node-1",
++ "cell": "cell-west",
++ "region": "us-west",
++ "operation": "deliver",
++ "at": "2026-09-30T10:00:00Z",
++ "latency_ms": 28,
++ "queue_delay_ms": 2,
++ "ttfb_ms": 11,
++ "throughput_per_second": 1048576,
++ "bytes": 4096,
++ "status": "ok",
++ "cache_status": "hit",
++ "cost_estimate": 0.0001,
++ "route_epoch": 3,
++ "trace_id": "tr-42",
++ "extra": {
++ "transport": "http"
++ }
++ }
++ ]
++ }
++ },
++ "platform.node-capabilities": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/node-capabilities.v1.json",
++ "title": "NodeCapabilities",
++ "description": "Node hardware, placement regions, tags, and operating costs (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "node_id",
++ "cpu",
++ "arch",
++ "memory_mb",
++ "storage",
++ "network",
++ "regions",
++ "tags",
++ "costs"
++ ],
++ "properties": {
++ "node_id": {
++ "type": "string"
++ },
++ "cpu": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "cores": {
++ "type": "number",
++ "minimum": 0
++ },
++ "threads": {
++ "type": "integer",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "cores"
++ ]
++ },
++ "arch": {
++ "type": "string",
++ "description": "CPU architecture"
++ },
++ "memory_mb": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "gpu": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "model": {
++ "type": "string"
++ },
++ "count": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "vram_mb": {
++ "type": "integer",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "model",
++ "count"
++ ]
++ },
++ "storage": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "capacity_gb": {
++ "type": "number",
++ "minimum": 0
++ },
++ "available_gb": {
++ "type": "number",
++ "minimum": 0
++ },
++ "kind": {
++ "type": "string"
++ }
++ },
++ "required": [
++ "capacity_gb"
++ ]
++ },
++ "network": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "ingress_mbps": {
++ "type": "number",
++ "minimum": 0
++ },
++ "egress_mbps": {
++ "type": "number",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "ingress_mbps",
++ "egress_mbps"
++ ]
++ },
++ "regions": {
++ "type": "array",
++ "items": {
++ "type": "string"
++ },
++ "minItems": 1
++ },
++ "tags": {
++ "type": "array",
++ "items": {
++ "type": "string"
++ }
++ },
++ "costs": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "per_hour_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "egress_per_gb_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ }
++ },
++ "required": [
++ "per_hour_usd"
++ ]
++ }
++ },
++ "examples": [
++ {
++ "node_id": "node-1",
++ "cpu": {
++ "cores": 8,
++ "threads": 16
++ },
++ "arch": "x86_64",
++ "memory_mb": 16384,
++ "gpu": {
++ "model": "L4",
++ "count": 1,
++ "vram_mb": 24576
++ },
++ "storage": {
++ "capacity_gb": 500,
++ "available_gb": 300,
++ "kind": "ssd"
++ },
++ "network": {
++ "ingress_mbps": 1000,
++ "egress_mbps": 1000
++ },
++ "regions": [
++ "us-west"
++ ],
++ "tags": [
++ "gpu",
++ "edge"
++ ],
++ "costs": {
++ "per_hour_usd": 0.2,
++ "egress_per_gb_usd": 0.01
++ }
++ }
++ ]
++ }
++ },
++ "platform.service-instance": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/service-instance.v1.json",
++ "title": "ServiceInstance",
++ "description": "One running instance registered in a cell (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "service",
++ "version",
++ "cell",
++ "node",
++ "region",
++ "endpoints",
++ "state",
++ "started_at"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "service": {
++ "type": "string"
++ },
++ "version": {
++ "type": "string"
++ },
++ "cell": {
++ "type": "string"
++ },
++ "node": {
++ "type": "string"
++ },
++ "region": {
++ "type": "string"
++ },
++ "endpoints": {
++ "type": "array",
++ "items": {
++ "type": "string",
++ "format": "uri"
++ },
++ "minItems": 1
++ },
++ "state": {
++ "type": "string",
++ "enum": [
++ "starting",
++ "ready",
++ "degraded",
++ "draining",
++ "stopped"
++ ]
++ },
++ "started_at": {
++ "type": "string",
++ "format": "date-time"
++ }
++ },
++ "examples": [
++ {
++ "id": "inst-1",
++ "service": "media",
++ "version": "1.4.0",
++ "cell": "cell-west",
++ "node": "node-1",
++ "region": "us-west",
++ "endpoints": [
++ "https://media.internal.example"
++ ],
++ "state": "ready",
++ "started_at": "2026-09-30T10:00:00Z"
++ }
++ ]
++ }
++ },
++ "platform.runtime-offer": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/runtime-offer.v1.json",
++ "title": "RuntimeOffer",
++ "description": "Available execution capacity for code on a node (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "kind",
++ "region",
++ "node",
++ "limits",
++ "price",
++ "availability",
++ "constraints"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "kind": {
++ "type": "string",
++ "enum": [
++ "container",
++ "process",
++ "wasm",
++ "vm",
++ "function"
++ ]
++ },
++ "region": {
++ "type": "string"
++ },
++ "node": {
++ "type": "string"
++ },
++ "limits": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "cpu_cores": {
++ "type": "number",
++ "minimum": 0
++ },
++ "memory_mb": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "duration_seconds": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "concurrency": {
++ "type": "integer",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "cpu_cores",
++ "memory_mb"
++ ]
++ },
++ "price": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "amount_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "unit": {
++ "type": "string",
++ "enum": [
++ "second",
++ "hour",
++ "invocation"
++ ]
++ }
++ },
++ "required": [
++ "amount_usd",
++ "unit"
++ ]
++ },
++ "availability": {
++ "type": "string",
++ "enum": [
++ "available",
++ "limited",
++ "unavailable"
++ ]
++ },
++ "constraints": {
++ "type": "array",
++ "items": {
++ "type": "string"
++ }
++ }
++ },
++ "examples": [
++ {
++ "id": "runtime-1",
++ "kind": "container",
++ "region": "us-west",
++ "node": "node-1",
++ "limits": {
++ "cpu_cores": 2,
++ "memory_mb": 4096,
++ "duration_seconds": 3600
++ },
++ "price": {
++ "amount_usd": 0.05,
++ "unit": "hour"
++ },
++ "availability": "available",
++ "constraints": [
++ "first-party"
++ ]
++ }
++ ]
++ }
++ },
++ "platform.storage-offer": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/storage-offer.v1.json",
++ "title": "StorageOffer",
++ "description": "Durable storage capacity and operation pricing (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "class",
++ "capacity_gb",
++ "price_per_gb_month_usd",
++ "price_per_operation_usd",
++ "region",
++ "node",
++ "durability",
++ "lifecycle_rules"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "class": {
++ "type": "string",
++ "enum": [
++ "hot",
++ "warm",
++ "cold"
++ ]
++ },
++ "capacity_gb": {
++ "type": "number",
++ "minimum": 0
++ },
++ "price_per_gb_month_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "price_per_operation_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "region": {
++ "type": "string"
++ },
++ "node": {
++ "type": "string"
++ },
++ "durability": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "replicas": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "target_nines": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Advertised durability nines"
++ }
++ },
++ "required": [
++ "replicas"
++ ]
++ },
++ "lifecycle_rules": {
++ "type": "array",
++ "items": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "after_days": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "action": {
++ "type": "string",
++ "enum": [
++ "transition",
++ "expire"
++ ]
++ },
++ "target_class": {
++ "type": "string",
++ "enum": [
++ "hot",
++ "warm",
++ "cold"
++ ]
++ }
++ },
++ "required": [
++ "after_days",
++ "action"
++ ]
++ }
++ }
++ },
++ "examples": [
++ {
++ "id": "storage-1",
++ "class": "warm",
++ "capacity_gb": 1000,
++ "price_per_gb_month_usd": 0.02,
++ "price_per_operation_usd": 0.00001,
++ "region": "us-west",
++ "node": "node-1",
++ "durability": {
++ "replicas": 3,
++ "target_nines": 9
++ },
++ "lifecycle_rules": [
++ {
++ "after_days": 90,
++ "action": "transition",
++ "target_class": "cold"
++ }
++ ]
++ }
++ ]
++ }
++ },
++ "platform.delivery-offer": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/delivery-offer.v1.json",
++ "title": "DeliveryOffer",
++ "description": "Transport and edge delivery capacity with cache policy and pricing (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "transports",
++ "regions",
++ "edge",
++ "price_per_gb_usd",
++ "price_per_request_usd",
++ "cache_rules"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "transports": {
++ "type": "array",
++ "items": {
++ "type": "string",
++ "enum": [
++ "http",
++ "hls",
++ "rtmp",
++ "srt",
++ "ws"
++ ]
++ },
++ "minItems": 1,
++ "uniqueItems": true
++ },
++ "regions": {
++ "type": "array",
++ "items": {
++ "type": "string"
++ },
++ "minItems": 1
++ },
++ "edge": {
++ "type": "boolean"
++ },
++ "node": {
++ "type": "string"
++ },
++ "price_per_gb_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "price_per_request_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "cache_rules": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "enabled": {
++ "type": "boolean"
++ },
++ "ttl_seconds": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "max_object_mb": {
++ "type": "number",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "enabled"
++ ]
++ }
++ },
++ "examples": [
++ {
++ "id": "delivery-1",
++ "transports": [
++ "http",
++ "hls"
++ ],
++ "regions": [
++ "us-west"
++ ],
++ "edge": true,
++ "node": "node-1",
++ "price_per_gb_usd": 0.02,
++ "price_per_request_usd": 0.00001,
++ "cache_rules": {
++ "enabled": true,
++ "ttl_seconds": 300,
++ "max_object_mb": 100
++ }
++ }
++ ]
++ }
++ },
++ "platform.agent-offer": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/agent-offer.v1.json",
++ "title": "AgentOffer",
++ "description": "Agent model capacity and token pricing (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "harness",
++ "provider",
++ "model",
++ "context_limits",
++ "concurrency",
++ "price_per_1k_tokens",
++ "availability_windows"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "harness": {
++ "type": "string",
++ "description": "Registered harness offer id"
++ },
++ "provider": {
++ "type": "string"
++ },
++ "model": {
++ "type": "string"
++ },
++ "context_limits": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "input_tokens": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "output_tokens": {
++ "type": "integer",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "input_tokens",
++ "output_tokens"
++ ]
++ },
++ "concurrency": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "price_per_1k_tokens": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "fresh_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "cached_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "output_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ }
++ },
++ "required": [
++ "fresh_usd",
++ "cached_usd",
++ "output_usd"
++ ]
++ },
++ "availability_windows": {
++ "type": "array",
++ "items": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "start": {
++ "type": "string",
++ "format": "date-time"
++ },
++ "end": {
++ "type": "string",
++ "format": "date-time"
++ }
++ },
++ "required": [
++ "start",
++ "end"
++ ]
++ },
++ "description": "Empty means no time restriction"
++ }
++ },
++ "examples": [
++ {
++ "id": "agent-1",
++ "harness": "harness-1",
++ "provider": "example-ai",
++ "model": "model-1",
++ "context_limits": {
++ "input_tokens": 128000,
++ "output_tokens": 8192
++ },
++ "concurrency": 4,
++ "price_per_1k_tokens": {
++ "fresh_usd": 0.003,
++ "cached_usd": 0.001,
++ "output_usd": 0.01
++ },
++ "availability_windows": []
++ }
++ ]
++ }
++ },
++ "platform.harness-offer": {
++ "version": "1.0.0",
++ "owner": "network",
++ "status": "active",
++ "schema": {
++ "$schema": "https://json-schema.org/draft/2020-12/schema",
++ "$id": "https://openvibe.network/contracts/platform/harness-offer.v1.json",
++ "title": "HarnessOffer",
++ "description": "Registered coding or agent harness, its access method, limits, and price (T1 Universal Fabric; ADR-034 proposed).",
++ "$comment": "Additive optional fields may extend this v1 contract.",
++ "type": "object",
++ "additionalProperties": false,
++ "required": [
++ "id",
++ "name",
++ "provider",
++ "capabilities",
++ "address",
++ "price",
++ "limits"
++ ],
++ "properties": {
++ "id": {
++ "type": "string"
++ },
++ "name": {
++ "type": "string"
++ },
++ "provider": {
++ "type": "string"
++ },
++ "capabilities": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "host_access": {
++ "type": "boolean"
++ },
++ "mcp": {
++ "type": "boolean"
++ },
++ "long_autonomy": {
++ "type": "boolean"
++ },
++ "resume": {
++ "type": "boolean"
++ }
++ },
++ "required": [
++ "host_access",
++ "mcp",
++ "long_autonomy",
++ "resume"
++ ]
++ },
++ "address": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "kind": {
++ "type": "string",
++ "enum": [
++ "api",
++ "cli",
++ "mcp"
++ ]
++ },
++ "target": {
++ "type": "string",
++ "description": "Endpoint URI, executable, or MCP server name"
++ }
++ },
++ "required": [
++ "kind",
++ "target"
++ ]
++ },
++ "price": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "amount_usd": {
++ "type": "number",
++ "minimum": 0,
++ "description": "Estimated USD"
++ },
++ "unit": {
++ "type": "string",
++ "description": "Billing unit"
++ }
++ },
++ "required": [
++ "amount_usd",
++ "unit"
++ ]
++ },
++ "limits": {
++ "type": "object",
++ "additionalProperties": false,
++ "properties": {
++ "max_duration_seconds": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "max_concurrent_runs": {
++ "type": "integer",
++ "minimum": 0
++ },
++ "max_context_tokens": {
++ "type": "integer",
++ "minimum": 0
++ }
++ },
++ "required": [
++ "max_duration_seconds",
++ "max_concurrent_runs"
++ ]
++ }
++ },
++ "examples": [
++ {
++ "id": "harness-1",
++ "name": "Example Agent",
++ "provider": "example-ai",
++ "capabilities": {
++ "host_access": true,
++ "mcp": true,
++ "long_autonomy": true,
++ "resume": true
++ },
++ "address": {
++ "kind": "cli",
++ "target": "example-agent"
++ },
++ "price": {
++ "amount_usd": 0.1,
++ "unit": "hour"
++ },
++ "limits": {
++ "max_duration_seconds": 7200,
++ "max_concurrent_runs": 4,
++ "max_context_tokens": 128000
++ }
++ }
++ ]
++ }
++ },
"events.delivery-policy": {
"version": "1.0.0",
"owner": "events",
ddiff --git a/generated/typescript/index.d.ts b/generated/typescript/index.d.ts
iindex e974e26f..90ee3224 100644
---- a/generated/typescript/index.d.ts
++++ b/generated/typescript/index.d.ts
@@@ -47367,6 +47367,309 @@ export interface CapacitySnapshot {
reported_at: string;
}
++/** [email protected] (owner: network) */
++/**
++ * One metered usage reading with retry-safe attribution (T1 Universal Fabric; ADR-034 proposed).
++ */
++export interface UsageSample {
++ id: string;
++ /**
++ * Stable across retries
++ */
++ idempotency_key: string;
++ service: string;
++ project?: string;
++ subject?: string;
++ resource?: string;
++ provider?: string;
++ node?: string;
++ cell?: string;
++ region?: string;
++ operation: string;
++ quantity: number;
++ unit: string;
++ at: string;
++ /**
++ * Estimated USD
++ */
++ cost_estimate?: number;
++ source: string;
++}
++
++/** [email protected] (owner: network) */
++/**
++ * Universal operation observation for routing and autoscaling, with product dimensions in extra (T1 Universal Fabric; ADR-034 proposed).
++ */
++export interface TelemetrySample {
++ service: string;
++ project?: string;
++ subject?: string;
++ resource?: string;
++ provider?: string;
++ node?: string;
++ cell?: string;
++ region?: string;
++ operation: string;
++ at: string;
++ latency_ms?: number;
++ queue_delay_ms?: number;
++ /**
++ * Time to first byte in milliseconds
++ */
++ ttfb_ms?: number;
++ /**
++ * Operation units per second
++ */
++ throughput_per_second?: number;
++ bytes?: number;
++ status?: string;
++ cache_status?: string;
++ /**
++ * Estimated USD
++ */
++ cost_estimate?: number;
++ route_epoch?: number;
++ trace_id?: string;
++ /**
++ * Product-specific scalar dimensions; no payloads or secrets
++ */
++ extra?: {
++ [k: string]: (string | number | boolean) | undefined;
++ };
++}
++
++/** [email protected] (owner: network) */
++/**
++ * Node hardware, placement regions, tags, and operating costs (T1 Universal Fabric; ADR-034 proposed).
++ */
++export interface NodeCapabilities {
++ node_id: string;
++ cpu: {
++ cores: number;
++ threads?: number;
++ };
++ /**
++ * CPU architecture
++ */
++ arch: string;
++ memory_mb: number;
++ gpu?: {
++ model: string;
++ count: number;
++ vram_mb?: number;
++ };
++ storage: {
++ capacity_gb: number;
++ available_gb?: number;
++ kind?: string;
++ };
++ network: {
++ ingress_mbps: number;
++ egress_mbps: number;
++ };
++ /**
++ * @minItems 1
++ */
++ regions: [string, ...string[]];
++ tags: string[];
++ costs: {
++ /**
++ * Estimated USD
++ */
++ per_hour_usd: number;
++ /**
++ * Estimated USD
++ */
++ egress_per_gb_usd?: number;
++ };
++}
++
++/** [email protected] (owner: network) */
++/**
++ * One running instance registered in a cell (T1 Universal Fabric; ADR-034 proposed).
++ */
++export interface ServiceInstance {
++ id: string;
++ service: string;
++ version: string;
++ cell: string;
++ node: string;
++ region: string;
++ /**
++ * @minItems 1
++ */
++ endpoints: [string, ...string[]];
++ state: "starting" | "ready" | "degraded" | "draining" | "stopped";
++ started_at: string;
++}
++
++/** [email protected] (owner: network) */
++/**
++ * Available execution capacity for code on a node (T1 Universal Fabric; ADR-034 proposed).
++ */
++export interface RuntimeOffer {
++ id: string;
++ kind: "container" | "process" | "wasm" | "vm" | "function";
++ region: string;
++ node: string;
++ limits: {
++ cpu_cores: number;
++ memory_mb: number;
++ duration_seconds?: number;
++ concurrency?: number;
++ };
++ price: {
++ /**
++ * Estimated USD
++ */
++ amount_usd: number;
++ unit: "second" | "hour" | "invocation";
++ };
++ availability: "available" | "limited" | "unavailable";
++ constraints: string[];
++}
++
++/** [email protected] (owner: network) */
++/**
++ * Durable storage capacity and operation pricing (T1 Universal Fabric; ADR-034 proposed).
++ */
++export interface StorageOffer {
++ id: string;
++ class: "hot" | "warm" | "cold";
++ capacity_gb: number;
++ /**
++ * Estimated USD
++ */
++ price_per_gb_month_usd: number;
++ /**
++ * Estimated USD
++ */
++ price_per_operation_usd: number;
++ region: string;
++ node: string;
++ durability: {
++ replicas: number;
++ /**
++ * Advertised durability nines
++ */
++ target_nines?: number;
++ };
++ lifecycle_rules: {
++ after_days: number;
++ action: "transition" | "expire";
++ target_class?: "hot" | "warm" | "cold";
++ }[];
++}
++
++/** [email protected] (owner: network) */
++/**
++ * Transport and edge delivery capacity with cache policy and pricing (T1 Universal Fabric; ADR-034 proposed).
++ */
++export interface DeliveryOffer {
++ id: string;
++ /**
++ * @minItems 1
++ */
++ transports: ["http" | "hls" | "rtmp" | "srt" | "ws", ...("http" | "hls" | "rtmp" | "srt" | "ws")[]];
++ /**
++ * @minItems 1
++ */
++ regions: [string, ...string[]];
++ edge: boolean;
++ node?: string;
++ /**
++ * Estimated USD
++ */
++ price_per_gb_usd: number;
++ /**
++ * Estimated USD
++ */
++ price_per_request_usd: number;
++ cache_rules: {
++ enabled: boolean;
++ ttl_seconds?: number;
++ max_object_mb?: number;
++ };
++}
++
++/** [email protected] (owner: network) */
++/**
++ * Agent model capacity and token pricing (T1 Universal Fabric; ADR-034 proposed).
++ */
++export interface AgentOffer {
++ id: string;
++ /**
++ * Registered harness offer id
++ */
++ harness: string;
++ provider: string;
++ model: string;
++ context_limits: {
++ input_tokens: number;
++ output_tokens: number;
++ };
++ concurrency: number;
++ price_per_1k_tokens: {
++ /**
++ * Estimated USD
++ */
++ fresh_usd: number;
++ /**
++ * Estimated USD
++ */
++ cached_usd: number;
++ /**
++ * Estimated USD
++ */
++ output_usd: number;
++ };
++ /**
++ * Empty means no time restriction
++ */
++ availability_windows: {
++ start: string;
++ end: string;
++ }[];
++}
++
++/** [email protected] (owner: network) */
++/**
++ * Registered coding or agent harness, its access method, limits, and price (T1 Universal Fabric; ADR-034 proposed).
++ */
++export interface HarnessOffer {
++ id: string;
++ name: string;
++ provider: string;
++ capabilities: {
++ host_access: boolean;
++ mcp: boolean;
++ long_autonomy: boolean;
++ resume: boolean;
++ };
++ address: {
++ kind: "api" | "cli" | "mcp";
++ /**
++ * Endpoint URI, executable, or MCP server name
++ */
++ target: string;
++ };
++ price: {
++ /**
++ * Estimated USD
++ */
++ amount_usd: number;
++ /**
++ * Billing unit
++ */
++ unit: string;
++ };
++ limits: {
++ max_duration_seconds: number;
++ max_concurrent_runs: number;
++ max_context_tokens?: number;
++ };
++}
++
/** [email protected] (owner: events) */
/**
* How an event type is carried (roadmap WS-Z3 task 2): its delivery class sets the minimum semantics, which a publisher's intent may raise and never lower; ordering is per key; the route planner picks the carrier.
ddiff --git a/test/platform-fabric.test.js b/test/platform-fabric.test.js
nnew file mode 100644
iindex 00000000..be0f6176
---- /dev/null
++++ b/test/platform-fabric.test.js
@@@ -0,0 +1,31 @@
++'use strict';
++const assert = require('assert');
++const contracts = require('..');
++
++const names = [
++ 'usage-sample', 'telemetry-sample', 'node-capabilities', 'service-instance',
++ 'runtime-offer', 'storage-offer', 'delivery-offer', 'agent-offer', 'harness-offer',
++];
++
++let checks = 0;
++for (const name of names) {
++ const id = `platform.${name}`;
++ const entry = contracts.resolve(`${id}@1`);
++ assert.strictEqual(entry.visibility, 'public');
++ assert.strictEqual(entry.version, '1.0.0');
++ assert.strictEqual(entry.adr, 'ADR-034');
++ const schema = contracts.schema(id);
++ assert.strictEqual(schema.additionalProperties, false);
++ assert.ok(schema.examples.length > 0, `${id} has examples`);
++ for (const example of schema.examples) {
++ assert.strictEqual(contracts.validate(id, example).valid, true, `${id} example validates`);
++ checks++;
++ for (const field of schema.required) {
++ const missing = { ...example };
++ delete missing[field];
++ assert.strictEqual(contracts.validate(id, missing).valid, false, `${id} requires ${field}`);
++ checks++;
++ }
++ }
++}
++console.log(`platform fabric: ${checks} example and required-field checks passed`);
ddiff --git a/test/run.js b/test/run.js
iindex 50c7e04f..1fd8f3f6 100644
---- a/test/run.js
++++ b/test/run.js
@@@ -861,6 +861,7 @@ sub(path.join(__dirname, 'loyalty-policy.test.js'));
sub(path.join(__dirname, 'presence-policy.test.js'));
// ── Generated output and compatibility gate ──────────────────────────────
++sub(path.join(__dirname, 'platform-fabric.test.js'));
sub(path.join(ROOT, 'scripts/generate.js'), '--check');
sub(path.join(ROOT, 'scripts/compat.js'));
{