@byollm/conformance 0.1.0-alpha.57 → 0.1.0-alpha.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/{chunk-TM4U4GRF.js → chunk-3N7FYXDP.js} +115 -113
- package/dist/chunk-3N7FYXDP.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +10 -3
- package/dist/index.js +1 -1
- package/package.json +4 -4
- package/dist/chunk-TM4U4GRF.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
> [!WARNING]
|
|
2
|
-
> **Alpha (`0.1.0-alpha.
|
|
2
|
+
> **Alpha (`0.1.0-alpha.58`) — under active development. Don't use this yet.**
|
|
3
3
|
>
|
|
4
4
|
> Install it deliberately: `npm install @byollm/conformance@alpha`.
|
|
5
5
|
>
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
> packages published and `@byollm/server` did not: a Sigstore
|
|
80
80
|
> transparency-log 409 on its provenance attestation. The workflow's
|
|
81
81
|
> "already published" guard correctly refuses to resume a partial publish,
|
|
82
|
-
> so `0.1.0-alpha.
|
|
82
|
+
> so `0.1.0-alpha.58` is that release, whole.
|
|
83
83
|
>
|
|
84
84
|
> If you run the Supabase adapter, `alpha.21` needs
|
|
85
85
|
> `20260819010000_completed_by_lease_id.sql`: alpha.19 shipped §3.6's
|
|
@@ -29,7 +29,6 @@ import {
|
|
|
29
29
|
signRequest
|
|
30
30
|
} from "@byollm/protocol";
|
|
31
31
|
import {
|
|
32
|
-
Allowlist,
|
|
33
32
|
Budgets,
|
|
34
33
|
IngressLog,
|
|
35
34
|
SpendLedger,
|
|
@@ -116,12 +115,10 @@ function daemonConfig(options) {
|
|
|
116
115
|
async function pairDaemon(target, options) {
|
|
117
116
|
const home = await mkdtemp(join(tmpdir(), "byollm-conformance-"));
|
|
118
117
|
const loaded = daemonConfig({
|
|
119
|
-
offer: options.offer
|
|
118
|
+
offer: options.offer,
|
|
120
119
|
subscription: options.subscription ?? false,
|
|
121
120
|
...options.metered === void 0 ? {} : { metered: options.metered }
|
|
122
121
|
});
|
|
123
|
-
const allowlist = new Allowlist(join(home, "allow.json"));
|
|
124
|
-
await allowlist.load();
|
|
125
122
|
const budgets = new Budgets(
|
|
126
123
|
join(home, "budgets.json"),
|
|
127
124
|
loaded.config.community
|
|
@@ -139,7 +136,6 @@ async function pairDaemon(target, options) {
|
|
|
139
136
|
const capabilities = loaded.routes.map((route) => ({
|
|
140
137
|
kind: route.kind,
|
|
141
138
|
service: route.service,
|
|
142
|
-
isDefault: true,
|
|
143
139
|
backendId: route.backendId,
|
|
144
140
|
backendClass: route.backendClass,
|
|
145
141
|
model: route.model,
|
|
@@ -210,7 +206,6 @@ async function pairDaemon(target, options) {
|
|
|
210
206
|
},
|
|
211
207
|
daemonVersion: "conformance",
|
|
212
208
|
loaded,
|
|
213
|
-
allowlist,
|
|
214
209
|
budgets,
|
|
215
210
|
spend,
|
|
216
211
|
ingress,
|
|
@@ -219,7 +214,6 @@ async function pairDaemon(target, options) {
|
|
|
219
214
|
return {
|
|
220
215
|
runner,
|
|
221
216
|
backend,
|
|
222
|
-
allowlist,
|
|
223
217
|
runnerId: result.pairing.runnerId,
|
|
224
218
|
owner: result.pairing.owner,
|
|
225
219
|
keys: await deviceIdentity.load(Date.now()),
|
|
@@ -509,13 +503,19 @@ var CHECKS = [
|
|
|
509
503
|
title: "a runner token is bound to exactly the approving user",
|
|
510
504
|
musts: ["PAIR_ONE_USER", "PAIR_INTERACTIVE"],
|
|
511
505
|
async run(target) {
|
|
512
|
-
const alice = await pairDaemon(target, {
|
|
506
|
+
const alice = await pairDaemon(target, {
|
|
507
|
+
owner: "alice",
|
|
508
|
+
offer: "private"
|
|
509
|
+
});
|
|
513
510
|
try {
|
|
514
511
|
assert(
|
|
515
512
|
alice.owner === await ownerIdFor(target, "alice"),
|
|
516
513
|
`runner was bound to "${alice.owner}", not to the approving user`
|
|
517
514
|
);
|
|
518
|
-
const bob = await pairDaemon(target, {
|
|
515
|
+
const bob = await pairDaemon(target, {
|
|
516
|
+
owner: "bob",
|
|
517
|
+
offer: "private"
|
|
518
|
+
});
|
|
519
519
|
assert(
|
|
520
520
|
bob.owner !== alice.owner,
|
|
521
521
|
"two different approvers produced the same runner owner"
|
|
@@ -547,7 +547,10 @@ var CHECKS = [
|
|
|
547
547
|
title: "an enqueued job runs on the owner's daemon and the result comes back",
|
|
548
548
|
musts: ["CLAIM_REQUIRES_CAPABILITY", "RESULT_IDEMPOTENT"],
|
|
549
549
|
async run(target) {
|
|
550
|
-
const daemon = await pairDaemon(target, {
|
|
550
|
+
const daemon = await pairDaemon(target, {
|
|
551
|
+
owner: "alice",
|
|
552
|
+
offer: "private"
|
|
553
|
+
});
|
|
551
554
|
try {
|
|
552
555
|
const job = await target.enqueue({
|
|
553
556
|
kind: "llm.generate",
|
|
@@ -577,7 +580,10 @@ var CHECKS = [
|
|
|
577
580
|
title: "a daemon is never handed a kind it did not advertise",
|
|
578
581
|
musts: ["KIND_TYPED_ONLY", "CLAIM_REQUIRES_CAPABILITY"],
|
|
579
582
|
async run(target) {
|
|
580
|
-
const daemon = await pairDaemon(target, {
|
|
583
|
+
const daemon = await pairDaemon(target, {
|
|
584
|
+
owner: "alice",
|
|
585
|
+
offer: "private"
|
|
586
|
+
});
|
|
581
587
|
try {
|
|
582
588
|
const job = await target.enqueue({
|
|
583
589
|
kind: "llm.chat",
|
|
@@ -605,7 +611,6 @@ var CHECKS = [
|
|
|
605
611
|
{
|
|
606
612
|
kind: "llm.generate",
|
|
607
613
|
service: "local",
|
|
608
|
-
isDefault: true,
|
|
609
614
|
backendId: "openai-http",
|
|
610
615
|
backendClass: "http",
|
|
611
616
|
model: "echo-model",
|
|
@@ -626,7 +631,11 @@ var CHECKS = [
|
|
|
626
631
|
title: "a job whose runner vanished is offered again, losing nothing",
|
|
627
632
|
musts: ["LEASE_RECLAIMABLE", "LEASE_HONORED"],
|
|
628
633
|
async run(target) {
|
|
629
|
-
const dead = await pairDaemon(target, {
|
|
634
|
+
const dead = await pairDaemon(target, {
|
|
635
|
+
owner: "alice",
|
|
636
|
+
label: "dead",
|
|
637
|
+
offer: "private"
|
|
638
|
+
});
|
|
630
639
|
const job = await target.enqueue({
|
|
631
640
|
kind: "llm.generate",
|
|
632
641
|
payload: prompt("work"),
|
|
@@ -645,7 +654,8 @@ var CHECKS = [
|
|
|
645
654
|
await advance(target, target.leaseMs + 500);
|
|
646
655
|
const alive = await pairDaemon(target, {
|
|
647
656
|
owner: "alice",
|
|
648
|
-
label: "alive"
|
|
657
|
+
label: "alive",
|
|
658
|
+
offer: "private"
|
|
649
659
|
});
|
|
650
660
|
try {
|
|
651
661
|
const reclaimed = await claimOne(target, alive);
|
|
@@ -690,21 +700,15 @@ var CHECKS = [
|
|
|
690
700
|
},
|
|
691
701
|
{
|
|
692
702
|
id: "C005_AUDIENCE_MATRIX",
|
|
693
|
-
title: "all
|
|
703
|
+
title: "all four audience x offer-scope combinations behave as specified",
|
|
694
704
|
musts: ["AUDIENCE_BOTH_SIDES", "NAMED_LOCAL_ALLOWLIST"],
|
|
695
705
|
async run(target) {
|
|
696
706
|
const expected = {
|
|
697
707
|
"private:private": false,
|
|
698
708
|
"private:team": false,
|
|
699
|
-
"private:public": false,
|
|
700
709
|
"team:private": false,
|
|
701
|
-
"team:team": false
|
|
702
|
-
// refused locally —
|
|
703
|
-
"team:public": true,
|
|
704
|
-
"public:private": false,
|
|
705
|
-
"public:team": false,
|
|
706
|
-
// refused locally — allowlist is empty
|
|
707
|
-
"public:public": true
|
|
710
|
+
"team:team": false
|
|
711
|
+
// refused locally — nothing admits alice
|
|
708
712
|
};
|
|
709
713
|
for (const audience of AUDIENCES) {
|
|
710
714
|
for (const offer of OFFER_SCOPES) {
|
|
@@ -749,7 +753,7 @@ var CHECKS = [
|
|
|
749
753
|
* established out of band, and that admission is a property of the asker
|
|
750
754
|
* rather than of the request.
|
|
751
755
|
*/
|
|
752
|
-
title: "a team job
|
|
756
|
+
title: "a team job is refused by a device whose upstream cannot say who the asker is, and is not offered to it again",
|
|
753
757
|
musts: ["NAMED_LOCAL_ALLOWLIST", "REFUSAL_NOT_REOFFERED"],
|
|
754
758
|
async run(target) {
|
|
755
759
|
const bob = await pairDaemon(target, { owner: "bob", offer: "team" });
|
|
@@ -771,21 +775,6 @@ var CHECKS = [
|
|
|
771
775
|
!reoffered.some((job) => job.id === refused.id),
|
|
772
776
|
"a server re-offered a job to the runner that refused it"
|
|
773
777
|
);
|
|
774
|
-
await bob.allowlist.add(
|
|
775
|
-
{ origin: target.origin, owner: await ownerIdFor(target, "alice") },
|
|
776
|
-
Date.now()
|
|
777
|
-
);
|
|
778
|
-
const allowed = await target.enqueue({
|
|
779
|
-
kind: "llm.generate",
|
|
780
|
-
payload: prompt("after"),
|
|
781
|
-
owner: "alice",
|
|
782
|
-
audience: "team"
|
|
783
|
-
});
|
|
784
|
-
await bob.runner.tick();
|
|
785
|
-
await waitFor(
|
|
786
|
-
async () => (await target.job(allowed.id))?.state === "ok",
|
|
787
|
-
{ what: "the allowed named job to run" }
|
|
788
|
-
);
|
|
789
778
|
} finally {
|
|
790
779
|
await bob.dispose();
|
|
791
780
|
}
|
|
@@ -798,19 +787,15 @@ var CHECKS = [
|
|
|
798
787
|
async run(target) {
|
|
799
788
|
const bob = await pairDaemon(target, {
|
|
800
789
|
owner: "bob",
|
|
801
|
-
offer: "
|
|
790
|
+
offer: "team",
|
|
802
791
|
subscription: true
|
|
803
792
|
});
|
|
804
793
|
try {
|
|
805
|
-
await bob.allowlist.add(
|
|
806
|
-
{ origin: target.origin, owner: await ownerIdFor(target, "alice") },
|
|
807
|
-
Date.now()
|
|
808
|
-
);
|
|
809
794
|
const job = await target.enqueue({
|
|
810
795
|
kind: "llm.generate",
|
|
811
796
|
payload: prompt("someone else's work"),
|
|
812
797
|
owner: "alice",
|
|
813
|
-
audience: "
|
|
798
|
+
audience: "team"
|
|
814
799
|
});
|
|
815
800
|
await bob.runner.tick();
|
|
816
801
|
await sleep(80);
|
|
@@ -848,7 +833,10 @@ var CHECKS = [
|
|
|
848
833
|
// declared in a spec, absent from the registry, and tested all along.
|
|
849
834
|
musts: ["REVOCATION_HONORED", "REVOCATION_IMMEDIATE"],
|
|
850
835
|
async run(target) {
|
|
851
|
-
const daemon = await pairDaemon(target, {
|
|
836
|
+
const daemon = await pairDaemon(target, {
|
|
837
|
+
owner: "alice",
|
|
838
|
+
offer: "private"
|
|
839
|
+
});
|
|
852
840
|
try {
|
|
853
841
|
await target.revokeRunner(daemon.runnerId);
|
|
854
842
|
const job = await target.enqueue({
|
|
@@ -876,7 +864,10 @@ var CHECKS = [
|
|
|
876
864
|
title: "cancel aborts a running job's backend call",
|
|
877
865
|
musts: ["CANCEL_HONORED"],
|
|
878
866
|
async run(target) {
|
|
879
|
-
const daemon = await pairDaemon(target, {
|
|
867
|
+
const daemon = await pairDaemon(target, {
|
|
868
|
+
owner: "alice",
|
|
869
|
+
offer: "private"
|
|
870
|
+
});
|
|
880
871
|
try {
|
|
881
872
|
daemon.backend.hangMs = 3e4;
|
|
882
873
|
const job = await target.enqueue({
|
|
@@ -904,7 +895,10 @@ var CHECKS = [
|
|
|
904
895
|
title: "the first terminal outcome wins",
|
|
905
896
|
musts: ["RESULT_IDEMPOTENT"],
|
|
906
897
|
async run(target) {
|
|
907
|
-
const daemon = await pairDaemon(target, {
|
|
898
|
+
const daemon = await pairDaemon(target, {
|
|
899
|
+
owner: "alice",
|
|
900
|
+
offer: "private"
|
|
901
|
+
});
|
|
908
902
|
try {
|
|
909
903
|
const job = await target.enqueue({
|
|
910
904
|
kind: "llm.generate",
|
|
@@ -945,7 +939,10 @@ var CHECKS = [
|
|
|
945
939
|
after?.outcome?.text === "the answer that counts",
|
|
946
940
|
`a second result overwrote the first (${String(after?.outcome?.text)})`
|
|
947
941
|
);
|
|
948
|
-
const stranger = await pairDaemon(target, {
|
|
942
|
+
const stranger = await pairDaemon(target, {
|
|
943
|
+
owner: "alice",
|
|
944
|
+
offer: "private"
|
|
945
|
+
});
|
|
949
946
|
try {
|
|
950
947
|
const foreign = await postResult(target, stranger, {
|
|
951
948
|
jobId: job.id,
|
|
@@ -975,8 +972,11 @@ var CHECKS = [
|
|
|
975
972
|
title: "a dependent job waits for its dependency, across two daemons",
|
|
976
973
|
musts: ["DEPENDS_ON_GATING", "TTL_EXPIRY"],
|
|
977
974
|
async run(target) {
|
|
978
|
-
const alice = await pairDaemon(target, {
|
|
979
|
-
|
|
975
|
+
const alice = await pairDaemon(target, {
|
|
976
|
+
owner: "alice",
|
|
977
|
+
offer: "private"
|
|
978
|
+
});
|
|
979
|
+
const bob = await pairDaemon(target, { owner: "bob", offer: "private" });
|
|
980
980
|
try {
|
|
981
981
|
const first = await target.enqueue({
|
|
982
982
|
kind: "llm.generate",
|
|
@@ -1049,7 +1049,10 @@ var CHECKS = [
|
|
|
1049
1049
|
title: "a dependent job's TTL starts when it becomes claimable, not at enqueue",
|
|
1050
1050
|
musts: ["TTL_EXPIRY"],
|
|
1051
1051
|
async run(target) {
|
|
1052
|
-
const daemon = await pairDaemon(target, {
|
|
1052
|
+
const daemon = await pairDaemon(target, {
|
|
1053
|
+
owner: "alice",
|
|
1054
|
+
offer: "private"
|
|
1055
|
+
});
|
|
1053
1056
|
try {
|
|
1054
1057
|
daemon.backend.hangMs = target.ttlMs * 2;
|
|
1055
1058
|
const first = await target.enqueue({
|
|
@@ -1085,28 +1088,8 @@ var CHECKS = [
|
|
|
1085
1088
|
// the granted device is refused rather than recorded.
|
|
1086
1089
|
musts: ["PROVENANCE_NAMES_DEVICE"],
|
|
1087
1090
|
async run(target) {
|
|
1088
|
-
const bob = await pairDaemon(target, { owner: "bob", offer: "
|
|
1091
|
+
const bob = await pairDaemon(target, { owner: "bob", offer: "team" });
|
|
1089
1092
|
try {
|
|
1090
|
-
const community = await target.enqueue({
|
|
1091
|
-
kind: "llm.generate",
|
|
1092
|
-
payload: prompt("run this anywhere"),
|
|
1093
|
-
owner: "alice",
|
|
1094
|
-
audience: "public"
|
|
1095
|
-
});
|
|
1096
|
-
await bob.runner.tick();
|
|
1097
|
-
await waitFor(
|
|
1098
|
-
async () => (await target.job(community.id))?.state === "ok",
|
|
1099
|
-
{ what: "the community job to complete" }
|
|
1100
|
-
);
|
|
1101
|
-
const delivered = await target.job(community.id);
|
|
1102
|
-
assert(
|
|
1103
|
-
delivered?.provenance?.untrusted === true,
|
|
1104
|
-
"a public result was not marked untrusted"
|
|
1105
|
-
);
|
|
1106
|
-
assert(
|
|
1107
|
-
delivered.provenance.runnerOwner === "bob",
|
|
1108
|
-
"the result did not carry the runner's owner"
|
|
1109
|
-
);
|
|
1110
1093
|
const own = await target.enqueue({
|
|
1111
1094
|
kind: "llm.generate",
|
|
1112
1095
|
payload: prompt("my own"),
|
|
@@ -1131,7 +1114,10 @@ var CHECKS = [
|
|
|
1131
1114
|
title: "every executed prompt is in the ingress log before it runs",
|
|
1132
1115
|
musts: ["INGRESS_LOGGED_BEFORE_EXECUTION"],
|
|
1133
1116
|
async run(target) {
|
|
1134
|
-
const daemon = await pairDaemon(target, {
|
|
1117
|
+
const daemon = await pairDaemon(target, {
|
|
1118
|
+
owner: "alice",
|
|
1119
|
+
offer: "private"
|
|
1120
|
+
});
|
|
1135
1121
|
let ticking = Promise.resolve();
|
|
1136
1122
|
try {
|
|
1137
1123
|
daemon.backend.hangMs = 3e4;
|
|
@@ -1206,7 +1192,7 @@ var CHECKS = [
|
|
|
1206
1192
|
async run(target) {
|
|
1207
1193
|
const bob = await pairDaemon(target, {
|
|
1208
1194
|
owner: "bob",
|
|
1209
|
-
offer: "
|
|
1195
|
+
offer: "team",
|
|
1210
1196
|
// Pointed at localhost — which changes nothing, because a named
|
|
1211
1197
|
// provider's cost comes from the registry, not from an address
|
|
1212
1198
|
// ({@link MUSTS.COST_NOT_CONFIGURABLE}).
|
|
@@ -1221,15 +1207,11 @@ var CHECKS = [
|
|
|
1221
1207
|
bob.loaded.routes.every((route) => route.cost === "metered"),
|
|
1222
1208
|
"a metered provider was read as free because of its base URL"
|
|
1223
1209
|
);
|
|
1224
|
-
await bob.allowlist.add(
|
|
1225
|
-
{ origin: target.origin, owner: await ownerIdFor(target, "alice") },
|
|
1226
|
-
Date.now()
|
|
1227
|
-
);
|
|
1228
1210
|
const job = await target.enqueue({
|
|
1229
1211
|
kind: "llm.generate",
|
|
1230
1212
|
payload: prompt("spend someone else's money"),
|
|
1231
1213
|
owner: "alice",
|
|
1232
|
-
audience: "
|
|
1214
|
+
audience: "team"
|
|
1233
1215
|
});
|
|
1234
1216
|
await bob.runner.tick();
|
|
1235
1217
|
await sleep(80);
|
|
@@ -1245,7 +1227,7 @@ var CHECKS = [
|
|
|
1245
1227
|
const availability = await target.runnerAvailability({
|
|
1246
1228
|
kind: "llm.generate",
|
|
1247
1229
|
owner: "alice",
|
|
1248
|
-
audience: "
|
|
1230
|
+
audience: "team"
|
|
1249
1231
|
});
|
|
1250
1232
|
assert(
|
|
1251
1233
|
!availability.available,
|
|
@@ -1273,7 +1255,7 @@ var CHECKS = [
|
|
|
1273
1255
|
async run(target) {
|
|
1274
1256
|
const bob = await pairDaemon(target, {
|
|
1275
1257
|
owner: "bob",
|
|
1276
|
-
offer: "
|
|
1258
|
+
offer: "team",
|
|
1277
1259
|
metered: {
|
|
1278
1260
|
// The generic backend pointed at a remote address. No registry entry
|
|
1279
1261
|
// says what this costs; it is metered because of where it goes
|
|
@@ -1290,30 +1272,15 @@ var CHECKS = [
|
|
|
1290
1272
|
"a remote backend was treated as free"
|
|
1291
1273
|
);
|
|
1292
1274
|
assert(
|
|
1293
|
-
bob.loaded.routes.every((route) => route.offerScope === "
|
|
1275
|
+
bob.loaded.routes.every((route) => route.offerScope === "team"),
|
|
1294
1276
|
"a deliberately shared metered backend was narrowed anyway"
|
|
1295
1277
|
);
|
|
1296
|
-
await bob.allowlist.add(
|
|
1297
|
-
{ origin: target.origin, owner: await ownerIdFor(target, "alice") },
|
|
1298
|
-
Date.now()
|
|
1299
|
-
);
|
|
1300
|
-
const first = await target.enqueue({
|
|
1301
|
-
kind: "llm.generate",
|
|
1302
|
-
payload: prompt("work bob agreed to pay for"),
|
|
1303
|
-
owner: "alice",
|
|
1304
|
-
audience: "public"
|
|
1305
|
-
});
|
|
1306
|
-
await bob.runner.tick();
|
|
1307
|
-
await waitFor(
|
|
1308
|
-
async () => (await target.job(first.id))?.state === "ok",
|
|
1309
|
-
{ what: "a consented metered job to run" }
|
|
1310
|
-
);
|
|
1311
1278
|
await bob.spend.record("primary", 900, Date.now());
|
|
1312
1279
|
const second = await target.enqueue({
|
|
1313
1280
|
kind: "llm.generate",
|
|
1314
1281
|
payload: prompt("work past the ceiling"),
|
|
1315
1282
|
owner: "alice",
|
|
1316
|
-
audience: "
|
|
1283
|
+
audience: "team"
|
|
1317
1284
|
});
|
|
1318
1285
|
const seenBefore = bob.backend.seen.length;
|
|
1319
1286
|
await bob.runner.tick();
|
|
@@ -1347,8 +1314,16 @@ var CHECKS = [
|
|
|
1347
1314
|
title: "two runners racing one job \u2014 exactly one gets it",
|
|
1348
1315
|
musts: ["CLAIM_ATOMIC"],
|
|
1349
1316
|
async run(target) {
|
|
1350
|
-
const a = await pairDaemon(target, {
|
|
1351
|
-
|
|
1317
|
+
const a = await pairDaemon(target, {
|
|
1318
|
+
owner: "alice",
|
|
1319
|
+
label: "laptop",
|
|
1320
|
+
offer: "private"
|
|
1321
|
+
});
|
|
1322
|
+
const b = await pairDaemon(target, {
|
|
1323
|
+
owner: "alice",
|
|
1324
|
+
label: "desktop",
|
|
1325
|
+
offer: "private"
|
|
1326
|
+
});
|
|
1352
1327
|
try {
|
|
1353
1328
|
const job = await target.enqueue({
|
|
1354
1329
|
kind: "llm.generate",
|
|
@@ -1429,7 +1404,10 @@ var CHECKS = [
|
|
|
1429
1404
|
title: "a runner advertises only what is installed and healthy",
|
|
1430
1405
|
musts: ["CAPABILITY_IS_DETECTED"],
|
|
1431
1406
|
async run(target) {
|
|
1432
|
-
const daemon = await pairDaemon(target, {
|
|
1407
|
+
const daemon = await pairDaemon(target, {
|
|
1408
|
+
owner: "alice",
|
|
1409
|
+
offer: "private"
|
|
1410
|
+
});
|
|
1433
1411
|
try {
|
|
1434
1412
|
daemon.backend.healthy = false;
|
|
1435
1413
|
const advertised = await daemon.runner.detectCapabilities();
|
|
@@ -1467,7 +1445,10 @@ var CHECKS = [
|
|
|
1467
1445
|
// check does not establish.
|
|
1468
1446
|
musts: ["KIND_NO_CODE"],
|
|
1469
1447
|
async run(target) {
|
|
1470
|
-
const daemon = await pairDaemon(target, {
|
|
1448
|
+
const daemon = await pairDaemon(target, {
|
|
1449
|
+
owner: "alice",
|
|
1450
|
+
offer: "private"
|
|
1451
|
+
});
|
|
1471
1452
|
const SMUGGLED = ["command", "argv", "model", "baseUrl"];
|
|
1472
1453
|
try {
|
|
1473
1454
|
let refused = false;
|
|
@@ -1652,7 +1633,10 @@ var CHECKS = [
|
|
|
1652
1633
|
title: "authentication is a signature over the request, not a secret",
|
|
1653
1634
|
musts: ["REQUESTS_SIGNED_NOT_BEARER"],
|
|
1654
1635
|
async run(target) {
|
|
1655
|
-
const daemon = await pairDaemon(target, {
|
|
1636
|
+
const daemon = await pairDaemon(target, {
|
|
1637
|
+
owner: "alice",
|
|
1638
|
+
offer: "private"
|
|
1639
|
+
});
|
|
1656
1640
|
try {
|
|
1657
1641
|
const body = JSON.stringify({
|
|
1658
1642
|
protocolVersion: PROTOCOL_VERSION2,
|
|
@@ -1724,7 +1708,10 @@ var CHECKS = [
|
|
|
1724
1708
|
title: "a release acts on the lease it names, not whatever lease exists",
|
|
1725
1709
|
musts: ["LEASE_SCOPED_BY_GRANT"],
|
|
1726
1710
|
async run(target) {
|
|
1727
|
-
const daemon = await pairDaemon(target, {
|
|
1711
|
+
const daemon = await pairDaemon(target, {
|
|
1712
|
+
owner: "alice",
|
|
1713
|
+
offer: "private"
|
|
1714
|
+
});
|
|
1728
1715
|
try {
|
|
1729
1716
|
const job = await target.enqueue({
|
|
1730
1717
|
kind: "llm.generate",
|
|
@@ -1764,7 +1751,10 @@ var CHECKS = [
|
|
|
1764
1751
|
title: "a claim carries routing metadata and no work",
|
|
1765
1752
|
musts: ["STUB_METADATA_EXHAUSTIVE"],
|
|
1766
1753
|
async run(target) {
|
|
1767
|
-
const daemon = await pairDaemon(target, {
|
|
1754
|
+
const daemon = await pairDaemon(target, {
|
|
1755
|
+
owner: "alice",
|
|
1756
|
+
offer: "private"
|
|
1757
|
+
});
|
|
1768
1758
|
try {
|
|
1769
1759
|
await target.enqueue({
|
|
1770
1760
|
kind: "llm.generate",
|
|
@@ -1829,7 +1819,10 @@ var CHECKS = [
|
|
|
1829
1819
|
musts: ["ENVELOPE_SEALED_AND_SIGNED"],
|
|
1830
1820
|
async run(target) {
|
|
1831
1821
|
const secret = "a prompt nobody should read from storage";
|
|
1832
|
-
const daemon = await pairDaemon(target, {
|
|
1822
|
+
const daemon = await pairDaemon(target, {
|
|
1823
|
+
owner: "alice",
|
|
1824
|
+
offer: "private"
|
|
1825
|
+
});
|
|
1833
1826
|
try {
|
|
1834
1827
|
const job = await target.enqueue({
|
|
1835
1828
|
kind: "llm.generate",
|
|
@@ -1868,7 +1861,10 @@ var CHECKS = [
|
|
|
1868
1861
|
title: "a daemon refuses work not signed by the site it pinned",
|
|
1869
1862
|
musts: ["ENVELOPE_SEALED_AND_SIGNED"],
|
|
1870
1863
|
async run(target) {
|
|
1871
|
-
const daemon = await pairDaemon(target, {
|
|
1864
|
+
const daemon = await pairDaemon(target, {
|
|
1865
|
+
owner: "alice",
|
|
1866
|
+
offer: "private"
|
|
1867
|
+
});
|
|
1872
1868
|
try {
|
|
1873
1869
|
const keys = await daemon.identityKeys();
|
|
1874
1870
|
const relay = generateKeys(Date.now());
|
|
@@ -1919,7 +1915,10 @@ var CHECKS = [
|
|
|
1919
1915
|
// is not proving possession, and a forger writes whatever it likes.
|
|
1920
1916
|
musts: ["ENVELOPE_SEALED_AND_SIGNED", "PROVENANCE_NAMES_DEVICE"],
|
|
1921
1917
|
async run(target) {
|
|
1922
|
-
const daemon = await pairDaemon(target, {
|
|
1918
|
+
const daemon = await pairDaemon(target, {
|
|
1919
|
+
owner: "alice",
|
|
1920
|
+
offer: "private"
|
|
1921
|
+
});
|
|
1923
1922
|
try {
|
|
1924
1923
|
const job = await target.enqueue({
|
|
1925
1924
|
kind: "llm.generate",
|
|
@@ -1978,7 +1977,7 @@ var CHECKS = [
|
|
|
1978
1977
|
title: "a claim is not answered with work the claimer may not run",
|
|
1979
1978
|
musts: ["AUDIENCE_BOTH_SIDES"],
|
|
1980
1979
|
async run(target) {
|
|
1981
|
-
const bob = await pairDaemon(target, { owner: "bob", offer: "
|
|
1980
|
+
const bob = await pairDaemon(target, { owner: "bob", offer: "team" });
|
|
1982
1981
|
try {
|
|
1983
1982
|
const priv = await target.enqueue({
|
|
1984
1983
|
kind: "llm.generate",
|
|
@@ -1995,7 +1994,7 @@ var CHECKS = [
|
|
|
1995
1994
|
kind: "llm.generate",
|
|
1996
1995
|
payload: prompt("anyone may run this"),
|
|
1997
1996
|
owner: "alice",
|
|
1998
|
-
audience: "
|
|
1997
|
+
audience: "team"
|
|
1999
1998
|
});
|
|
2000
1999
|
const second = await claimRaw(target, bob);
|
|
2001
2000
|
assert(
|
|
@@ -2012,7 +2011,10 @@ var CHECKS = [
|
|
|
2012
2011
|
title: "a claimed stub carries no list of who may run the job",
|
|
2013
2012
|
musts: ["ROSTER_NOT_DISCLOSED"],
|
|
2014
2013
|
async run(target) {
|
|
2015
|
-
const daemon = await pairDaemon(target, {
|
|
2014
|
+
const daemon = await pairDaemon(target, {
|
|
2015
|
+
owner: "alice",
|
|
2016
|
+
offer: "private"
|
|
2017
|
+
});
|
|
2016
2018
|
try {
|
|
2017
2019
|
const job = await target.enqueue({
|
|
2018
2020
|
kind: "llm.generate",
|
|
@@ -2164,4 +2166,4 @@ export {
|
|
|
2164
2166
|
miscoveredMusts,
|
|
2165
2167
|
formatReport
|
|
2166
2168
|
};
|
|
2167
|
-
//# sourceMappingURL=chunk-
|
|
2169
|
+
//# sourceMappingURL=chunk-3N7FYXDP.js.map
|