LiveReleaseDeployedPayload live.release.deployed@1

Generated at from openvibe-contracts v0.33.0 and openvibe-sdk v0.5.0.

Version
1.0.0
Owner
live
Visibility
first-party
Status
active
Compatibility
backward
Decision
ADR-004
Schema
https://openvibe.network/contracts/events/payloads/live.release.deployed.v1.json

live.release.deployed v1 (OpenVibe.Live server/events/release-events.js envelopeFor, called by server/chat/deploy-notice.js announce). The first boot that runs commits never announced before: queued in the transaction that records them as announced (site setting deploy_last_announced), so a restart without new code emits nothing and a crash before that commit announces again on the next boot with the same subject. A consumer keys on subject.id (the head commit) to fold repeats. The commit subjects are public already (Live chat and /updates); the consumer decides what is shown. Envelope: subject { type: release, id: <head commit, 40 hex> }, visibility internal, priority low, actor service:live.

Fields

FieldTypeRequiredDescriptionConstraints
serviceconstyes
  • = "live"
releasestringyesThe head commit's short sha as git abbreviated it (its first 12 characters when the head is not in the list).
  • pattern ^[0-9a-f]{7,40}$
commitstringyesThe head commit (the envelope subject id).
  • pattern ^[0-9a-f]{40}$
previousstring | nullyesThe head announced before this one; null on the first announcement.
  • pattern ^[0-9a-f]{40}$
commit_countintegeryesHow many new commits were found (git log previous..head, at most 40; only the head on a first run or after history was rewritten).
  • minimum 1
  • maximum 40
commitsarray of objectyesThe new commits, newest first.
  • minItems 1
  • maxItems 40
  • items: no other fields
commits[].hashstringyes
  • pattern ^[0-9a-f]{40}$
commits[].shortstringyes
  • pattern ^[0-9a-f]{4,40}$
commits[].subjectstringyesThe commit subject, cut to 200 characters.
  • maxLength 200
commits[].datestring | nullyesAuthor date (git %aI, with the author's UTC offset).
  • format date-time
deployed_atstringyesWhen this boot announced it (UTC).
  • format date-time
notes_urlconstyes
  • = "https://openvibe.live/updates"

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: first-announcement
{
  "service": "live",
  "release": "4c70332",
  "commit": "4c703326b23d8bc16c857117707e0a5f96eb587c",
  "previous": null,
  "commit_count": 1,
  "commits": [
    {
      "hash": "4c703326b23d8bc16c857117707e0a5f96eb587c",
      "short": "4c70332",
      "subject": "Channel links carry the @",
      "date": "2026-09-23T14:12:56-07:00"
    }
  ],
  "deployed_at": "2026-09-23T21:20:05.114Z",
  "notes_url": "https://openvibe.live/updates"
}
Valid: two-commits
{
  "service": "live",
  "release": "4c70332",
  "commit": "4c703326b23d8bc16c857117707e0a5f96eb587c",
  "previous": "62261cae3b1f0d7c9e2a4b5d6f708192a3b4c5d6",
  "commit_count": 2,
  "commits": [
    {
      "hash": "4c703326b23d8bc16c857117707e0a5f96eb587c",
      "short": "4c70332",
      "subject": "Channel links carry the @",
      "date": "2026-09-23T14:12:56-07:00"
    },
    {
      "hash": "49fe04f1a2b3c4d5e6f708192a3b4c5d6e7f8091",
      "short": "49fe04f",
      "subject": "Chat settings also live in the OpenVibe.Network user module",
      "date": "2026-09-23T13:40:02-07:00"
    }
  ],
  "deployed_at": "2026-09-23T21:20:05.114Z",
  "notes_url": "https://openvibe.live/updates"
}
Rejected: no-commits
{
  "service": "live",
  "release": "4c70332",
  "commit": "4c703326b23d8bc16c857117707e0a5f96eb587c",
  "previous": "62261cae3b1f0d7c9e2a4b5d6f708192a3b4c5d6",
  "commit_count": 0,
  "commits": [],
  "deployed_at": "2026-09-23T21:20:05.114Z",
  "notes_url": "https://openvibe.live/updates"
}
Rejected: other-service
{
  "service": "chat",
  "release": "4c70332",
  "commit": "4c703326b23d8bc16c857117707e0a5f96eb587c",
  "previous": "62261cae3b1f0d7c9e2a4b5d6f708192a3b4c5d6",
  "commit_count": 2,
  "commits": [
    {
      "hash": "4c703326b23d8bc16c857117707e0a5f96eb587c",
      "short": "4c70332",
      "subject": "Channel links carry the @",
      "date": "2026-09-23T14:12:56-07:00"
    },
    {
      "hash": "49fe04f1a2b3c4d5e6f708192a3b4c5d6e7f8091",
      "short": "49fe04f",
      "subject": "Chat settings also live in the OpenVibe.Network user module",
      "date": "2026-09-23T13:40:02-07:00"
    }
  ],
  "deployed_at": "2026-09-23T21:20:05.114Z",
  "notes_url": "https://openvibe.live/updates"
}
Rejected: short-head
{
  "service": "live",
  "release": "4c70332",
  "commit": "4c70332",
  "previous": "62261cae3b1f0d7c9e2a4b5d6f708192a3b4c5d6",
  "commit_count": 2,
  "commits": [
    {
      "hash": "4c703326b23d8bc16c857117707e0a5f96eb587c",
      "short": "4c70332",
      "subject": "Channel links carry the @",
      "date": "2026-09-23T14:12:56-07:00"
    },
    {
      "hash": "49fe04f1a2b3c4d5e6f708192a3b4c5d6e7f8091",
      "short": "49fe04f",
      "subject": "Chat settings also live in the OpenVibe.Network user module",
      "date": "2026-09-23T13:40:02-07:00"
    }
  ],
  "deployed_at": "2026-09-23T21:20:05.114Z",
  "notes_url": "https://openvibe.live/updates"
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('live.release.deployed@1', value);   // { valid, errors: [{ path, message }] }