Published in openvibe-contracts v0.114.0 (docs/adr/ADR-008-shared-packages.md), rendered as is.

ADR-008: Shared package publication and release manifests

Status: Accepted 2026-09-22; implementation in progress (OpenVibe.Shared). Amended 2026-09-25 (one copy: libraries take openvibe-shared as a peer).

Context and current evidence

openvibe-shared lived in Network and was hand-rsynced into four repositories; copies had diverged (Live user-card.js; ov-icons.js in three consumers).

Decision

Alternatives considered

Migration consequences

Consumers move one at a time, smallest first (Community, Media, Tools, Sites, Live).

Rollback

A consumer can pin the previous tag.

Acceptance tests

No repository contains a vendored copy (CI drift check); navbar stays under its size budget.

Amendment 2026-09-25: libraries take openvibe-shared as a peer (one copy per product)

Context. openvibe-publishing pinned its own openvibe-shared tag, so a product that used both could install two copies. It then had to bump both pins in lockstep, or serve one Frame with another library's helpers.

Decision.

Consequences. Bumping Shared is one pin per product. A library that needs a newer Shared raises its peer floor, and the product's CI then fails until it upgrades. It never ends up with a silent second copy. The same rule applies to any future library built on Shared.

Acceptance. test/pin-drift.test.js in OpenVibe.Shared: a nested second copy fails; one hoisted copy and a pnpm store linked from two places pass. On 2026-09-25 every consumer checked had one copy: Blog, Wiki, Network, and each of the eight Tools apps.