PlacementPlan platform.placement-plan@1
Generated at from
openvibe-contracts v0.79.0 and
openvibe-sdk v0.25.0.
- Version
- 1.0.0
- Owner
- network
- Visibility
- first-party
- Status
- active
- Compatibility
- backward
- Decision
- ADR-034
- Schema
https://openvibe.network/contracts/platform/placement-plan.v1.json
A signed, expiring route plan (roadmap WS-Z3 and WS-Z9): which carrier or pool serves each route. Every SDK and service caches the last valid plan and keeps working while the control plane is unreachable; unsigned or expired plans are refused.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
epoch | integer | yes |
| |
issued_at | string | yes |
| |
expires_at | string | yes |
| |
issuer | string | yes | ||
key_id | string | yes | ||
routes | array of object | yes |
| |
routes[].route | string | yes | a route name: an event delivery class and scope, a workload kind, a service | |
routes[].targets | array of object | yes |
| |
routes[].targets[].id | string | yes | ||
routes[].targets[].weight | number | yes |
| |
routes[].draining | array of string | |||
routes[].since_epoch | integer |
| ||
signature | string | yes | Ed25519 over the canonical JSON of every other field, base64url |
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: signed
{
"epoch": 43,
"issued_at": "2026-09-28T23:00:00Z",
"expires_at": "2026-09-29T00:00:00Z",
"issuer": "network",
"key_id": "route-2026-09",
"routes": [
{
"route": "events:background",
"targets": [
{
"id": "valkey-streams",
"weight": 1
}
],
"draining": [
"pg-delivery"
],
"since_epoch": 43
}
],
"signature": "c2lnbmF0dXJl"
}Rejected: empty-targets
{
"epoch": 1,
"issued_at": "2026-09-28T23:00:00Z",
"expires_at": "2026-09-28T23:00:00Z",
"issuer": "network",
"key_id": "k",
"routes": [
{
"route": "r",
"targets": []
}
],
"signature": "s"
}Rejected: unsigned
{
"epoch": 43,
"issued_at": "2026-09-28T23:00:00Z",
"expires_at": "2026-09-28T23:00:00Z",
"issuer": "network",
"key_id": "k",
"routes": []
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('platform.placement-plan@1', value); // { valid, errors: [{ path, message }] }