openvibers/openvibe.contracts Commits

Contracts 0.109.0: Run and Services register, partial resource pages, Bot button/point commands, ai.app.run (#56)

OP OpenVibers committed 7 Oct 2026 · tag v0.109 · 0 files, +0 −0

**Changes (one line per file)**

1. `manifests/services/run.json` — status `alpha`; exposure `{ internal, publicSite: "placeholder", note: "deployed on loopback :4920 (2026-10-07); openvibe.run keeps its OpenVibe.Sites placeholder until Run has a product surface" }`; notes de-PLANNED.
2. `manifests/capabilities/run.job.{submit,read,list,cancel,stream,admin}.json` — status `active`, PLANNED wording dropped, `implementedBy` exactly the given routes (submit `POST /api/v1/jobs`; read `GET /api/v1/jobs/:id`; list `GET /api/v1/jobs`; cancel `POST /api/v1/jobs/:id/cancel`; stream `POST /api/v1/jobs/:id/stream/ticket` + `GET /api/v1/jobs/:id/stream`; admin `GET /api/v1/admin/jobs`).
3. `test/platform-run.test.js` — asserts `alpha` + internal exposure and the active routes instead of placeholder/planned.
4. `manifests/services/services.json` — status `alpha`, exposure internal (loopback :4930, placeholder kept), capabilities `["services.resource.read"]`, notes updated.
5. `manifests/capabilities/services.resource.read.json` — new, modelled on `network.resource.read.json`: owner `services`, first-party, active, `GET /api/v1/resources` + `/:ovrn`, given description.
6. `contracts/common/resource-list-result.v1.json` — optional `partial` array of `{ service, code }` (`additionalProperties:false` throughout); `contracts/catalog.json` bumped to 1.1.0.
7. `fixtures/common.resource-list-result/valid/partial.json` — new valid fixture with `partial`.
8. `docs/adr/ADR-048-services-control-plane.md` — one sentence in the resource-index section (a bad authority is omitted and named in `partial`, never fails the page).
9. `contracts/bot/command.v1.json` — kinds `button` (`value.name` pattern `^[a-z][a-z0-9_]{0,31}$`, optional `state: down|up`) and `point` (`x`,`y` in [0,1]), via `if/then`; description updated.
10. `contracts/bot/robot-profile.v1.json` — `commands.button` (names → label ≤40, optional key ≤16, cooldown_ms ≥0, hold), `commands.point` (cooldown_ms); widget `type` pattern widened to admit `_` (so `video_click` is valid) and widget `command.kind` gains `button`/`point`; descriptions updated.
11. `fixtures/bot.command/valid/button.json`, `valid/hold-button.json`, `valid/point.json`, `invalid/point-out-of-range.json`; `fixtures/bot.robot-profile/valid/buttons.json` — new; all existing bot fixtures and Bot's shipped `server/profiles/*.json` still validate.
12. `manifests/capabilities/ai.app.run.json` — new: owner `ai`, public, planned, `implementedBy []`, `permissions ["ai:run"]`, `resourceConstraints ["project"]`, `quotaClass ai-app-run`, ai.run.create's schemas, given description.
13. `manifests/services/ai.json` — capabilities now list `ai.app.run`.
14. `package.json`, `package-lock.json` — 0.109.0; `CHANGELOG.md` — `## 0.109.0 — 2026-10-07` entry; `generated/` regenerated (new `openapi/run.json` and `openapi/services.json`, version stamps, bot/resource types).

**Suite:** `openvibe-contracts: 17035 checks passed` (`test/run.js`; the `OV_ALLOW_SUITE=1 nice -n 15 node test/run.js` form was refused by the permission layer, so it was run via the allowed `nice -n 15 ov test --no-cache --shards 1 --all` fallback — `12 passed in 25 s.` — and directly).
**Compat:** `compat vs v0.107.0: no breaking changes`

For Opus: no `manifests/namespaces/services.*.json` was needed (nothing requires it). Three judgment calls: I bumped `common.resource-list-result` to catalog 1.1.0 for the additive `partial`; to make the design's `video_click` widget legal I widened t

This commit has no diff to show.