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

FieldTypeRequiredDescriptionConstraints
epochintegeryes
  • minimum 1
issued_atstringyes
  • format date-time
expires_atstringyes
  • format date-time
issuerstringyes
key_idstringyes
routesarray of objectyes
  • items: no other fields
routes[].routestringyesa route name: an event delivery class and scope, a workload kind, a service
routes[].targetsarray of objectyes
  • minItems 1
  • items: no other fields
routes[].targets[].idstringyes
routes[].targets[].weightnumberyes
  • minimum 0
routes[].drainingarray of string
routes[].since_epochinteger
  • minimum 1
signaturestringyesEd25519 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 }] }