openvibers/openvibe.network Commits

Live may submit its AI clip picks to Bench (live.clip) (#541)

OP OpenVibers committed 10 days ago · 0d1c5fe509 · 2 files, +23 −0

Tasks, rounds and entries on openvibe.bench for the private kind live.clip (Bench #105); people judge them blind,
so Live casts no judgements.

Changes

ddiff --git a/server/identity/principals.js b/server/identity/principals.js
iindex f279a8dc..0668db2e 100644
---- a/server/identity/principals.js
++++ b/server/identity/principals.js
@@@ -721,6 +721,10 @@ const DEFAULT_GRANTS = [
// Games submits each AI duel as a Bench task, two priced seat entries, and one automatic outcome.
...['bench.task.create', 'bench.round.create', 'bench.entry.create', 'bench.judgement.cast']
.map((cap) => ['games', cap, 'openvibe.bench', []]),
++ // Live measures its AI clip picks blind (item 151, Bench #105, the private kind live.clip): one task per held-out
++ // stretch, a round per comparison, each policy's pick (or abstention) as an entry. It casts no judgements: people do.
++ ...['bench.task.create', 'bench.round.create', 'bench.entry.create']
++ .map((cap) => ['live', cap, 'openvibe.bench', []]),
// The consent registry (L24, 2026-10-31; contracts 0.256.0): a service asks before it uses a person's content or
// likeness for AI or data, through POST /internal/consent/check. These are the first-party services that use
// content today; the answer is cached at most 60 s and dropped on network.consent.changed, and a service that
ddiff --git a/test/live-bench-grant.test.js b/test/live-bench-grant.test.js
nnew file mode 100644
iindex 00000000..af0fed6b
---- /dev/null
++++ b/test/live-bench-grant.test.js
@@@ -0,0 +1,19 @@
++/**
++ * Live's Bench grants (item 151, Bench #105): Live submits its AI clip picks to the private kind live.clip, and casts
++ * no judgements of its own (people judge them blind).
++ *
++ * node test/live-bench-grant.test.js
++ */
++'use strict';
++const assert = require('assert');
++const contracts = require('openvibe-contracts');
++const principals = require('../server/identity/principals');
++
++const rows = principals.DEFAULT_GRANTS.filter((g) => g[0] === 'live' && g[2] === 'openvibe.bench');
++assert.deepStrictEqual(rows.map((g) => g[1]).sort(), ['bench.entry.create', 'bench.round.create', 'bench.task.create'], 'tasks, rounds and entries; never a judgement');
++for (const g of rows) {
++ assert.deepStrictEqual(g[3], [], 'no namespaces');
++ const cap = contracts.capabilities.get(g[1]);
++ assert.ok(cap, `${g[1]} is a capability`);
++}
++console.log('live bench grant: ok');