openvibers/openvibe.network Commits
Live may submit its AI clip picks to Bench (live.clip) (#541)
Changes
@@@ -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 thatnnew file mode 100644@@@ -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');
@@ -721,6 +721,10 @@ const DEFAULT_GRANTS = [
@@ -721,6 +721,10 @@ const DEFAULT_GRANTS = [
// Games submits each AI duel as a Bench task, two priced seat entries, and one automatic outcome.
// 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']
...['bench.task.create', 'bench.round.create', 'bench.entry.create', 'bench.judgement.cast']
.map((cap) => ['games', cap, 'openvibe.bench', []]),
.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
// 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
// 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
// content today; the answer is cached at most 60 s and dropped on network.consent.changed, and a service that
new file mode 100644
new file mode 100644
@@ -0,0 +1,19 @@
@@ -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');