Commits
-
Contracts 0.77.0: agents, confirmations, the adaptive fabric and the resource index (roadmap section 4C). identity.subject-ref@1 gains the agent subject (agt_<ULID>); ids knows agt and cnf; principalSub accepts agents. events.event-envelope@1 gains optional on_behalf_of. capabilities.capability@1 gains optional sensitive, set on sixteen capabilities with external side effects. New: network.confirmation-request@1, events.delivery-policy@1 (delivery classes, per-key ordering, latency, retention tiers, routing objective, batching, residency, 64 KB ceiling), the first-party platform.* fabric contracts (resource-offer, workload-requirements, placement-result, placement-plan, rate-card, provider-state, cost-snapshot, capacity-snapshot), common.resource-summary@1, common.resource-list-result@1 and common.resource-cost@1. Fixtures and the regenerated bundle. npm test: 14065 checks passed; compat vs v0.76.0 without breaking changes.OpenVibers · 28 Sept 2026
7c16286d -
Contracts 0.76.0: the node registry (ADR-034 section 12, roadmap WS-X1). network.node@1 describes one machine of the platform: its roles (web, app, data, media-worker, ingest, edge-probe, edge-relay, edge-cache, gpu, staging, ci), region-level location, provider, an HTTPS beacon clients time for their round trip, and health. No addresses, capacity or secrets are public. network.node.report (internal, Host) with network.node-report-request@1 (POST /internal/nodes/report) sends the complete set of nodes an inventory knows; a node absent from a later report is marked down, never silently deleted. network.node-list-result@1 is GET /api/v1/nodes (public, ?role=, ?region=), the input of the SDK's geo nearest(). Fixtures (valid and invalid: public address, unknown role, bad country, plain-http beacon) and the regenerated OpenAPI and JSON Schema bundle. npm test: 13847 checks passed, compat vs v0.75.0 without breaking changes.OpenVibers · 28 Sept 2026
0f4cf3f7 -
v0.75.0: per-streamer AI budgets are AI quotas (roadmap WS-O task 2). ai.quota.attribution.manage (first-party): a service caps what runs attributed to one of its own entities may cost or request per hour or day (PUT /api/v1/attribution-quotas/{attribution}, ai.attribution-quota-put@1, optionally for a workflow prefix), reads it with the window's use (ai.attribution-quota@1) or removes it; the attribution's service must be the caller (Live: live:user:<id>). Over the cap a run is refused 429 quota.exceeded before any provider is called.OpenVibers · 28 Sept 2026
8cadcae5 -
v0.74.0: ai.credential-put@1 api_key is optional after the first put. The stored key is kept for a change of models or budget, and must be entered again to change provider or base_url, so a key never follows a new endpoint on its own (roadmap WS-O task 2).OpenVibers · 28 Sept 2026
59005a5a -
v0.73.0: a person's own provider key lives in OpenVibe.AI (roadmap WS-O task 2). ai.credential.manage (first-party): the service holding a person's consent stores their key (PUT /api/v1/credentials/{subject}, ai.credential-put@1: openai or anthropic, an https base_url, models per role, an optional budget_usd_per_day), reads it back without the key (ai.credential@1: a four-character hint and today's spend) or deletes it; only the storing service uses or changes it. ai.run-request@1 gains the optional credential { subject }: that provider with that key only, no fallback, never cached, the shared paid budget untouched, the credential's daily budget enforced; chat operations only.OpenVibers · 27 Sept 2026
872df271 -
v0.72.0: mod principals in Network (roadmap WS-M task 3, ADR-013). mods.grant.manage is active: the owning runtime registers an install's principal mod:<mod_id> (POST /internal/mods, network.mod-install-request@1: the manifest and the subset approved at install, the rest pending), approves or revokes one capability (POST /internal/mods/{id}/grants, network.mod-grant-change@1), revokes the install (POST /internal/mods/{id}/revoke) and reads them (GET /internal/mods[/{id}]). Only the owner or Network staff (staff.games.manage) change a mod. Adds network.mod-principal@1 and the event network.mod.grants_changed@1 (the complete approved set by revision, the change, runtime or staff), which Games consumes.OpenVibers · 27 Sept 2026
8cccacde -
v0.71.0: account export and deletion (roadmap WS-B task 7, ADR-033). Adds the events network.account.export_requested (export_id, subject, requested_at, deadline; each service pushes its part to POST /internal/account-exports/{id}/parts, network.account-export-part@1, capability network.account.export.contribute) and network.account.deleted (deletion_id, subject, aliases, requested_at, deleted_at; each service erases its rows once per deletion_id, keeps money rows pseudonymised, held media and tombstones under others' replies, and confirms at POST /internal/account-deletions/{id}/confirmations, network.account-deletion-confirmation@1, capability network.account.deletion.confirm), network.account-export@1, network.account-deletion@1 and network.account-data-receipt@1. Network's manifest lists the events and capabilities; Live, Chat, Community, Media and Games consume both.OpenVibers · 27 Sept 2026
421c8107 -
v0.70.0: network.user.token_valid_after gains the reason account_merged (a folded-in account's tokens end at the merge; its sessions moved to the survivor), and modules.namespace@1's description follows ADR-029 (both accounts have a record: the survivor keeps its own and gains only the top-level fields it lacks). Roadmap WS-B task 5.OpenVibers · 27 Sept 2026
1b76cbc6 -
v0.69.0: account merge (roadmap WS-B task 5, ADR-029). Adds the event network.subject.merged (merge_id, from, into, merged_at, initiated_by person|staff, split_until; visibility internal; each service repoints its own rows from the alias to the survivor, once per merge_id, dropping and counting what it cannot move), network.account-merge-result@1 (what Network moved as counts, replayed for a retry) and staff map 1.2.0 with staff.identity.merge (owner, since 1.2.0: account-recovery merges with a reason and an audit row). Network's manifest lists the event.OpenVibers · 27 Sept 2026
7d0661e2 -
v0.68.0: creator analytics from events (roadmap WS-E task 6). live.stream.ended gains an optional stats object (peak and average viewers, unique chatters, messages, watch minutes: counts only), network.creator-analytics-result@1 (a creator's daily and per-stream analytics, built on Network) and network.analytics.creator.read (first-party: the full figures for Live's creator dashboards; streams, minutes and peak viewers are public).OpenVibers · 26 Sept 2026
081a23ad -
v0.67.0: network.follows.write and network.follow-write-request@1 (ADR-030 step 4): a first-party product records a follow or unfollow on a person's behalf (PUT/DELETE /internal/follows/:type/:target), and Network keeps the graph and emits network.follow.*.OpenVibers · 26 Sept 2026
73fbe393 -
v0.66.0: incidents and maintenance on the status page (roadmap WS-N task 12). network.status-incident@1, network.status-incident-list@1 (public: active and the last 30 days) and network.status-incident-request@1 (open, or add an update), and the capability network.status.incident (internal; staff admins and the Host principal: ovhost incident / maintenance).OpenVibers · 26 Sept 2026
75b74116 -
v0.65.0: the follow graph on Network (roadmap WS-E task 4, ADR-030). Adds the events network.follow.created and network.follow.deleted (follower, target_type channel, target_id the channel owner's subject, notify flags, per-pair revision; subject visibility), network.follow-status-result@1 (public count plus the caller's own follow), network.follow-list-result@1 (a page of follows, never public) and the capability network.follows.read (first-party, never for apps).OpenVibers · 26 Sept 2026
34266487 -
v0.64.0: Wiki VIP spaces and pages (roadmap WS-K task 8). vip joins Wiki's visibilities (wiki.space@1, wiki.page@1, the space and page write requests, and the wiki.page.* / wiki.space.updated payloads): readable by the space's roles and the viewers OpenVibe.VIP admits as members of the space owner (vip.resource.policy.evaluate, resource wiki/page or wiki/space, fallback wiki:gated_page). Never in search, sitemaps or feeds. Widening only.OpenVibers · 26 Sept 2026
37546a90 -
v0.63.0: project usage rollups (roadmap WS-N task 4, ADR-014). New common.usage-recorded@1: one closed hour (or day) of one developer project's use of one capability in one environment, as the owning service counted it: project_id, env, capability, optional dimension (job type or tool), unit, window, window_start/window_end, quantity, errors, error_codes (up to 20) and samples (up to 10 recent failures: time, code, status, trace id, job/event/run/object id), plus revision; totals, not deltas, so a re-sent window replaces the earlier one; never a subject, app, address, session, input or message. New event types tools.usage.recorded (a Tools satellite's hour of a project's jobs, per tools.job.create or tools.tool.run) and events.usage.recorded (events.app.publish in events with refusals as errors; events.app.subscribe in deliveries with failed attempts as errors), both common.usage-recorded@1; the Tools and Events manifests produce them and Network consumes both. New network.project-usage-result@1 for GET /api/v1/projects/:project/usage on Network (daily rows, totals, recorded quotas with what their window used, errors by code and recent sampled failures). Fixtures; npm test checks each <service>.usage.recorded is the common payload, owned by its service and consumed by Network, and that a rollup carries no identity and at most ten samples. Additive (compat vs v0.62.0: no breaking changes).OpenVibers · 26 Sept 2026
6f32032a -
v0.62.0: operator alerts (roadmap WS-H task 11). Capability network.operator.alert (internal; POST /internal/operator/alerts on Network, granted to the Host principal) with network.operator-alerts-request@1 (the complete set of alerts firing at one source: fingerprint, name, severity, summary, description, service, started_at) and network.operator-alerts-result@1 (firing, opened, reminded, resolved, notified). Network pages the owner when an alert opens, once a day while it stays open, and when it resolves.OpenVibers · 26 Sept 2026
24c51f23 -
v0.61.0: a person's realtime topic and realtime tickets (roadmap WS-E task 3, WS-F task 1; ADR-005 amendment 2). New event type network.notification.created (payload network.notification.created@1): Network's outbox, in the transaction that stores a notification; subject the recipient, visibility subject, actor system:network; id, type, category, priority, service, created_at and the unread count, never the title, message, link or sender. "user:<id>" is that event type with subject visibility: the badge subscribes to network.notification.* and gets its own only. New identity.realtime-ticket-claims@1 (a two-minute single-use RS256 ticket for Events' /realtime/stream?ticket=; issuer <network>/realtime, typ and purpose realtime, audience openvibe.events only, so it never passes for a session) and network.realtime-ticket-result@1 (POST /api/v1/realtime/ticket). Network manifest produces the event; fixtures; npm test checksOpenVibers · 26 Sept 2026
2df73656 -
ADR-007 amendment 2026-09-26 (WS-S task 1): SQLite is the reviewed store for every service; Events, Chat and Billing measured on production (the busiest minute two orders of magnitude under SQLite's capacity; Billing's money paths serialised by the single writer) and the measured thresholds that would move a service to PostgreSQLOpenVibers · 26 Sept 2026
a1162486 -
v0.60.0: release manifest 1.2.0 (roadmap WS-P task 7, ADR-016 amendment 2): client_generation, min_client_generation (a tab below it reloads when safe, reason required) and shell { version, components } (a tab whose shell differs is prompted, never updated in place); fixturesOpenVibers · 26 Sept 2026
f3852ee9 -
v0.59.0: Media namespaces and grants (WS-G task 2): media.object.list and media.object.delete (public, namespace-scoped), media.object@1 and media.object-list@1OpenVibers · 26 Sept 2026
0c626d5d -
Media namespaces and grants (roadmap WS-G task 2), unreleased: media.object.list and media.object.delete, public and active and namespace-scoped, so Media's five verbs (read, list, write, delete, transform) each have a capability per namespace. New contracts media.object@1 (a v2 object, with its namespace) and media.object-list@1 (a page of the object list), with fixtures; the Media manifest lists the new ids. media.derivative.create stays planned and says Media accepts it as the transform verb; media.lifecycle.read/transition say which verbs guard their routes. identity.service-token-claims@1 (description and a fixture): a developer app token's ns carries its project_id and app.<project_id>.*. Generated files regenerated. Additive (compat vs v0.58.0: no breaking changes); CHANGELOG under Unreleased, no version bumpOpenVibers · 26 Sept 2026
a4f281ae -
v0.58.0 (continued): the release notification is its own event type, host.release.published@1; host.deploy.activated@1 is the tenant shape onlyOpenVibers · 26 Sept 2026
36d560ea -
v0.58.0: host.deploy.activated@1, the release notification (WS-P task 9, ADR-016 amendment 1)OpenVibers · 26 Sept 2026
4988f126 -
v0.57.2: ADR-029 account merge, ADR-030 follow graph, ADR-031 S3-compatible surface (WS-B 5, WS-E 4, WS-N 8 decisions)OpenVibers · 26 Sept 2026
71296f39 -
v0.57.1: ADR-024 amendment 1 (theme preference stays Network data; reviewed community themes; allow-listed theme values; openvibe-theme@1 import/export)OpenVibers · 26 Sept 2026
ff4299d0 -
v0.57.0: chat.room.message.created (public rooms only, visibility public) and chat.room.message.deleted (redacts) with payload contracts and fixtures; Chat produces both (WS-I task 9)OpenVibers · 26 Sept 2026
740aa993 -
v0.56.1: ADR-005 amendment 1: presence is ephemeral, in Chat's delivery plane (room user lists over its WebSocket, GET /api/chat/online for other products), never an Events topic; hidden or unknown reads offline. test/presence-policy.test.js (WS-F task 2)OpenVibers · 26 Sept 2026
158e70d2 -
v0.56.0: live.loyalty namespace (channel points per channel, Arena level and XP; private) and the loyalty-is-never-money policy test (WS-K task 9)OpenVibers · 26 Sept 2026
78971cbb -
v0.55.1: lifecycle declarations follow the shutdown and fencing fixes (WS-P task 1 follow-ups); manifest text only. tools: every process, the gateway included, stops through the shared graceful stop (timers and workers, HTTP drain 4 s with Connection: close, usage flush, databases and pools, exit 0 within 5 s); games: deadlineSeconds 0 -> 10 (unit 30): refuse connections and upgrades, stop the simulation and timers, announce and close every socket with 1012 (each close saves the character), save the world, drain, await mirror, summaries and outbox, close world.db; community: subscriptions, profile and search scans, Discord relay and events outbox stopped with their work in flight awaited before the DB closes; media: leases fencing is a real lease_token matched by renew, checkpoint, succeed, fail and cancel, stale holders refused and counted; network: timers, pollers and the event relay stopped, analytics and DB closed, Connection: close drain (8 s); ai: the ai.run.* relay stopped after the runs drain. Generated OpenAPI carries the new versionOpenVibers · 26 Sept 2026
7aa1dc01 -
v0.55.0: lifecycle declarations (WS-P task 1): registry.service-manifest@1 gains an optional lifecycle block (liveness endpoint and what it proves; shutdown signal, deadlineSeconds, drains, workers, note; startupRecovery resumes by kind; rollback conditions, window and blockers; contracts.range; leases claims with holder, expiry and fencing; { none: reason } where a part does not apply), filled for all 31 manifests from each service's code and systemd units; tests: every manifest declares all six, running services have a concrete liveness (their health path) and shutdown, libraries none, contracts.range equals contractRanges, every lifecycle field is described; fixtures for a lifecycle, a library and five invalid shapesOpenVibers · 26 Sept 2026
22fd274e