Commits
-
Events: events.openvibe.network answers 308 to openvibe.events (plan T7 layer 3) (#22)OpenVibers · 7 Oct 2026
b50f5b7 -
Events: shared 2.13.0, so the home's release notifications use openvibe.events (plan T7) (#21)OpenVibers · 7 Oct 2026
df5ed72 -
Events: openvibe.events serves the API and the realtime stream too (plan T7 layer 1) (#20)OpenVibers · 7 Oct 2026
5e955db -
Events: OpenVibe.Space publishes (source space); contracts 0.110.0, shared 2.12.0 (#19)OpenVibers · 7 Oct 2026
146187e -
Events: svc:run may publish run.* (OpenVibe.Run, plan T14); README lists every default source. (#18)OpenVibers · 7 Oct 2026
d86bb7d -
Events: the resource index (GET /api/v1/resources, events.subscription) under events.resource.read; contracts v0.107.0 (T13 step 8). (#17)OpenVibers · 7 Oct 2026
39ef455 -
Events: a product home for openvibe.events (browsers get the page, API clients the text index) and its vhost. (#16)OpenVibers · 7 Oct 2026
c910482 -
Add the cloud queue carrier (cloud-v1, SQS-compatible, QUEUE only, off unless CLOUD_QUEUE_URL is set) (#15)OpenVibers · 5 Oct 2026
a89573e -
Accept watch.* publishes from a svc:watch token (#14)OpenVibers · 5 Oct 2026
4d35c0d -
Post hourly queue-operation readings per project to Billing (#13)OpenVibers · 5 Oct 2026
12d2aae -
Merge pull request #12 from OpenVibers/agent/events-t7-step-4-openvibe-events-223737-muueitqgOpenVibers · 4 Oct 2026
ffd2133 -
Move pruned events into a replay tier and read both with one cursorOpenVibers · 4 Oct 2026
84ec8d9 -
Merge pull request #11 from OpenVibers/agent/events-t7-step-3-openvibe-events-175712-muu4i7hqOpenVibers · 4 Oct 2026
9e557a8 -
Add the nats-js-v1 JetStream STREAM carrier over the PostgreSQL recordOpenVibers · 4 Oct 2026
10b286c -
Key the ordered inbox by an unambiguous, untruncated subject key (#10)OpenVibers · 4 Oct 2026
a4c61ab -
Document subscription secret bounds and pin them with a test (#9)OpenVibers · 4 Oct 2026
c3584a8 -
Correct webhook signing and realtime auth wording in README (#8)OpenVibers · 3 Oct 2026
3842f78 -
Let any first-party service publish the network-wide provider. namespace (#7)OpenVibers · 3 Oct 2026
7c86ccd -
Implement the smallest T7 PR on current origin/main: an optional NATS… (#6)OpenVibers · 3 Oct 2026
73132d2 -
Bump openvibe-shared v2.2.0 → v2.5.0 (#5)OpenVibers · 3 Oct 2026
a145b66 -
Document v2 webhooks, ticketed SSE, and cursor pagination (#4)OpenVibers · 3 Oct 2026
4ae5f6e -
Let OpenVibe.Bot publish its bot. events as a known source (#3)OpenVibers · 2 Oct 2026
18a9a3c -
Move Events' shutdown onto openvibe-sdk/service gracefulStop (#2)OpenVibers · 2 Oct 2026
d0ac01a -
Carriers, the planner and explain (plan T7, ADR-042 decisions 2 and 5): pg-v1 (the poll, every class) and valkey-v1 (QUEUE: a Valkey stream per carrier class through openvibe-sdk/queue, whose consumers take a delivery with a targeted lease; TOPIC: realtime fan-out across Events processes over pub/sub, deduped by event id), with EWMA and a breaker per adapter. PostgreSQL stays the record and the lease the only thing that sends: a lost, late or duplicated stream item changes latency, never the outcome. server/fabric/planner.js places each (carrier class, ordering key) with openvibe-sdk/placement over resource offers and revisioned rate cards, with hysteresis, and keeps a key with a backlog on its carrier; deliveries record their carrier; delivery_placements (migration 0005) keeps each change of decision (pruned with the retention, the latest per key kept). EVENTS_CARRIERS / EVENTS_CARRIERS_DISABLED choose and switch off adapters (the rollback). at_most_once policies are not retried. Admin explain API: GET /api/v1/placement?event_type=&key= and /api/v1/placement/deliveries/:event/:subscription. A targeted claim locks its subscription row like the poll does (a race test on real PostgreSQL fails without it). npm test 20/21 (fabric's Valkey half needs test:pg) and test:pg 21/21.OpenVibers · 29 Sept 2026
d705349 -
Delivery policies and per-key ordering (plan T7, ADR-042 decisions 1 and 4): server/fabric/policy.js resolves an event type's events.delivery-policy@1 (the most specific delivery_policies pattern, else the default: domain, durability required, at least once, no ordering, which is exactly today's behaviour), derives its carrier class (STREAM for required durability with an ordering key, TOPIC for realtime_ephemeral, else QUEUE; never in an envelope) and its ordering key (the policy's key resolved against the envelope, else the subject, else the event type; never the seq). Fan-out writes ordering_key on every delivery (a replay keeps the original's). The claim now leases only the head of a key (no lower-seq pending or failed delivery of it, nothing of it leased, so a failing delivery holds its key back) and at most subscriptions.max_inflight per subscription (default 1, as before), re-checking both in the leasing UPDATE (READ COMMITTED); app claims stay under maxApp. Admin API GET/PUT/DELETE /api/v1/delivery-policies[/:pattern] and /resolve (validated against the contract). Migration 0004: delivery_policies, subscriptions.max_inflight, the key index. test/ordering.test.js: policy resolution, order under retries, two workers with a lease expiry, max_inflight 2; 10/10 runs on real PostgreSQL. npm test and test:pg 20/20.OpenVibers · 29 Sept 2026
351f4e9 -
Opaque cursors beside the global seq (plan T7, ADR-042 decision 7; openvibe-contracts v0.81.0): every answer that carries a seq also carries its cursor (publish results, pulls with next_cursor, single events, checkpoints with epoch and carrier), pull accepts after=<cursor>, the SSE id is the cursor and Last-Event-ID accepts a cursor or, for this release, a bare seq; a cursor from another retention epoch answers the gap shape, never a silent restart (migration 0003: store_epoch, consumer_checkpoints.epoch/carrier). seq, next_after_seq, latest_seq and X-OpenVibe-Seq are unchanged this release. test/cursor.test.js; answers validated against the contracts; npm test and test:pg 19/19 (verified).OpenVibers · 29 Sept 2026
2863954 -
One inbox (plan T7, ADR-042 decision 9): lib/client.js re-exports openvibe-sdk's PostgreSQL outbox and inbox (createPgOutbox, createPgInbox, outboxSchema, inboxSchema) and its own SQLite copies are gone, with better-sqlite3; the README shows the async, transaction-handle usage. test/outbox-inbox.test.js runs producer and consumer on embedded PostgreSQL: a rolled-back enqueue publishes nothing, a resend is a duplicate, a poisoned row is isolated, a down Events is retried after backoff, and a consumer crash before or after commit plus redelivery and replay yields exactly one effect. npm test and test:pg 18/18.OpenVibers · 29 Sept 2026
9b8b2b6 -
Deliveries are claimed with a database lease (plan T7, ADR-042 decision 3): the claim locks the subscription rows FOR UPDATE SKIP LOCKED and leases each one's next due delivery (lease_owner, lease_until; migration 0002, which also adds ordering_key and carrier for the planner), so any number of workers share the queue with at most one delivery in flight per subscription; the lease is re-checked in the UPDATE's own snapshot, because READ COMMITTED does not re-evaluate the candidate query's NOT EXISTS when another worker commits a lease just before the lock; an expired lease is claimable again (at least once) and a worker that lost its lease does not record its late result. First-party and developer-app candidates are fetched apart so app traffic never crowds first-party out of a claim. test/lease.test.js: two workers, every delivery exactly once and one in flight per subscription (it double-sent about every second run on PostgreSQL before the re-check), lease expiry, a lost lease. npm test and test:pg 18/18.OpenVibers · 29 Sept 2026
f7f592b -
Events on current pins (plan T7, A1 + A2): openvibe-contracts v0.80.0, openvibe-sdk v0.25.1, openvibe-shared v2.2.0 (no removed export was in use; behaviour unchanged); docs/replay-window-rollout.md and docs/capabilities-proposal/ deleted (superseded by Contracts' capability manifests; nothing linked them).OpenVibers · 29 Sept 2026
d42168e -
The SQLite era is gone (on PostgreSQL since 2026-09-28; no compatibility kept): the one-time migrate-to-postgres script, the *_DB_PATH settings (config, .env.example, systemd unit, test helpers), the unused better-sqlite3 dependency and its lockfile entries, and docs, docstrings and STATUS lines about SQLite or its rollback window. Reviewed independently before shipping. npm test 17/17 test files passed.OpenVibers · 29 Sept 2026
0076761