@motebit/protocol 0.8.0 → 1.0.0
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/LICENSE +198 -18
- package/NOTICE +19 -0
- package/README.md +37 -5
- package/dist/agent-settlement-anchor.d.ts +102 -0
- package/dist/agent-settlement-anchor.d.ts.map +1 -0
- package/dist/agent-settlement-anchor.js +18 -0
- package/dist/agent-settlement-anchor.js.map +1 -0
- package/dist/computer-use.d.ts +312 -0
- package/dist/computer-use.d.ts.map +1 -0
- package/dist/computer-use.js +86 -0
- package/dist/computer-use.js.map +1 -0
- package/dist/credential-anchor.d.ts +17 -2
- package/dist/credential-anchor.d.ts.map +1 -1
- package/dist/credential-anchor.js +3 -2
- package/dist/credential-anchor.js.map +1 -1
- package/dist/crypto-suite.d.ts +100 -0
- package/dist/crypto-suite.d.ts.map +1 -0
- package/dist/crypto-suite.js +93 -0
- package/dist/crypto-suite.js.map +1 -0
- package/dist/discovery.d.ts +87 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +9 -0
- package/dist/discovery.js.map +1 -0
- package/dist/dispute.d.ts +176 -0
- package/dist/dispute.d.ts.map +1 -0
- package/dist/dispute.js +9 -0
- package/dist/dispute.js.map +1 -0
- package/dist/goal-lifecycle.d.ts +129 -0
- package/dist/goal-lifecycle.d.ts.map +1 -0
- package/dist/goal-lifecycle.js +29 -0
- package/dist/goal-lifecycle.js.map +1 -0
- package/dist/index.d.ts +692 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -2
- package/dist/index.js.map +1 -1
- package/dist/memory-events.d.ts +140 -0
- package/dist/memory-events.d.ts.map +1 -0
- package/dist/memory-events.js +29 -0
- package/dist/memory-events.js.map +1 -0
- package/dist/migration.d.ts +180 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +9 -0
- package/dist/migration.js.map +1 -0
- package/dist/plan-lifecycle.d.ts +147 -0
- package/dist/plan-lifecycle.d.ts.map +1 -0
- package/dist/plan-lifecycle.js +36 -0
- package/dist/plan-lifecycle.js.map +1 -0
- package/dist/semiring.d.ts +16 -0
- package/dist/semiring.d.ts.map +1 -1
- package/dist/semiring.js +21 -0
- package/dist/semiring.js.map +1 -1
- package/dist/settlement-mode.d.ts +68 -0
- package/dist/settlement-mode.d.ts.map +1 -0
- package/dist/settlement-mode.js +8 -0
- package/dist/settlement-mode.js.map +1 -0
- package/dist/tool-mode.d.ts +46 -0
- package/dist/tool-mode.d.ts.map +1 -0
- package/dist/tool-mode.js +50 -0
- package/dist/tool-mode.js.map +1 -0
- package/package.json +8 -5
- package/dist/__tests__/branded-ids.test.d.ts +0 -2
- package/dist/__tests__/branded-ids.test.d.ts.map +0 -1
- package/dist/__tests__/branded-ids.test.js +0 -70
- package/dist/__tests__/branded-ids.test.js.map +0 -1
- package/dist/__tests__/semiring-laws.test.d.ts +0 -25
- package/dist/__tests__/semiring-laws.test.d.ts.map +0 -1
- package/dist/__tests__/semiring-laws.test.js +0 -231
- package/dist/__tests__/semiring-laws.test.js.map +0 -1
- package/dist/__tests__/semiring.test.d.ts +0 -2
- package/dist/__tests__/semiring.test.d.ts.map +0 -1
- package/dist/__tests__/semiring.test.js +0 -201
- package/dist/__tests__/semiring.test.js.map +0 -1
- package/dist/__tests__/traversal.test.d.ts +0 -2
- package/dist/__tests__/traversal.test.d.ts.map +0 -1
- package/dist/__tests__/traversal.test.js +0 -331
- package/dist/__tests__/traversal.test.js.map +0 -1
- package/dist/__tests__/trust-algebra.test.d.ts +0 -2
- package/dist/__tests__/trust-algebra.test.d.ts.map +0 -1
- package/dist/__tests__/trust-algebra.test.js +0 -105
- package/dist/__tests__/trust-algebra.test.js.map +0 -1
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Property-based tests for semiring laws using fast-check.
|
|
3
|
-
*
|
|
4
|
-
* These verify the algebraic invariants that every algorithm in the
|
|
5
|
-
* semiring package depends on — associativity, commutativity, identity,
|
|
6
|
-
* annihilation, distributivity — over thousands of random inputs rather
|
|
7
|
-
* than a handful of hand-picked examples.
|
|
8
|
-
*
|
|
9
|
-
* ### Determinism
|
|
10
|
-
*
|
|
11
|
-
* Fast-check defaults to a time-based seed, which means two CI runs
|
|
12
|
-
* can draw different inputs and expose different edge cases. That
|
|
13
|
-
* turns property tests into nondeterministic flakes under parallel
|
|
14
|
-
* monorepo execution — one of the 103 tests in this file fired
|
|
15
|
-
* intermittently during the pre-push hook. Fixed by pinning a seed:
|
|
16
|
-
* every run now draws the same input sequence, so a passing run is a
|
|
17
|
-
* reproducible guarantee, and a failing run is a bisectable
|
|
18
|
-
* counterexample instead of a ghost.
|
|
19
|
-
*
|
|
20
|
-
* If a new law fails locally but passes the fixed-seed CI run, bump
|
|
21
|
-
* `FC_NUM_RUNS` to explore more inputs, or switch the seed temporarily
|
|
22
|
-
* to confirm the counterexample isn't a cherry-pick.
|
|
23
|
-
*/
|
|
24
|
-
import { describe, it, beforeAll } from "vitest";
|
|
25
|
-
import fc from "fast-check";
|
|
26
|
-
import { TrustSemiring, CostSemiring, LatencySemiring, BottleneckSemiring, ReliabilitySemiring, BooleanSemiring, RegulatoryRiskSemiring, productSemiring, recordSemiring, } from "../index.js";
|
|
27
|
-
// Pin fast-check's seed so the property tests run deterministically.
|
|
28
|
-
// This makes CI runs reproducible and removes the "works locally,
|
|
29
|
-
// fails in CI once every N runs" flake class entirely. The number of
|
|
30
|
-
// runs per property stays at the default (100) — raising it would
|
|
31
|
-
// make the suite slower without changing the deterministic guarantee.
|
|
32
|
-
const FC_SEED = 0x5eed; // arbitrary fixed value, no security meaning
|
|
33
|
-
beforeAll(() => {
|
|
34
|
-
fc.configureGlobal({ seed: FC_SEED, numRuns: 100 });
|
|
35
|
-
});
|
|
36
|
-
// ── Approximate equality for floating-point ────────────────────────
|
|
37
|
-
/**
|
|
38
|
-
* Relative epsilon scaled by magnitude. Absolute 1e-10 tolerance is too
|
|
39
|
-
* tight when values reach ~1e6 (one ULP of 1e6 is ~1.2e-10), so
|
|
40
|
-
* associativity/distributivity checks would occasionally "fail" on
|
|
41
|
-
* perfectly-algebraic IEEE 754 math. Relative epsilon (1e-9 × the
|
|
42
|
-
* larger magnitude) plus a small absolute floor fixes both the
|
|
43
|
-
* large-value and near-zero cases.
|
|
44
|
-
*/
|
|
45
|
-
function tolerance(a, b) {
|
|
46
|
-
const scale = Math.max(Math.abs(a), Math.abs(b), 1);
|
|
47
|
-
return 1e-9 * scale + 1e-12;
|
|
48
|
-
}
|
|
49
|
-
function approxEq(a, b) {
|
|
50
|
-
if (a === b)
|
|
51
|
-
return true; // handles Infinity === Infinity
|
|
52
|
-
if (!isFinite(a) || !isFinite(b))
|
|
53
|
-
return false;
|
|
54
|
-
return Math.abs(a - b) <= tolerance(a, b);
|
|
55
|
-
}
|
|
56
|
-
/** `x <= y` with the same scaled tolerance approxEq uses. */
|
|
57
|
-
function approxLeq(x, y) {
|
|
58
|
-
if (x === y)
|
|
59
|
-
return true;
|
|
60
|
-
if (x === -Infinity || y === Infinity)
|
|
61
|
-
return true;
|
|
62
|
-
if (x === Infinity || y === -Infinity)
|
|
63
|
-
return false;
|
|
64
|
-
return x <= y + tolerance(x, y);
|
|
65
|
-
}
|
|
66
|
-
// ── Generic law checker ────────────────────────────────────────────
|
|
67
|
-
function semiringLaws(name, sr, arb, eq, opts) {
|
|
68
|
-
describe(`${name} — property-based semiring laws`, () => {
|
|
69
|
-
it("associativity of add: a + (b + c) = (a + b) + c", () => {
|
|
70
|
-
fc.assert(fc.property(arb, arb, arb, (a, b, c) => {
|
|
71
|
-
return eq(sr.add(a, sr.add(b, c)), sr.add(sr.add(a, b), c));
|
|
72
|
-
}));
|
|
73
|
-
});
|
|
74
|
-
it("associativity of mul: a * (b * c) = (a * b) * c", () => {
|
|
75
|
-
fc.assert(fc.property(arb, arb, arb, (a, b, c) => {
|
|
76
|
-
return eq(sr.mul(a, sr.mul(b, c)), sr.mul(sr.mul(a, b), c));
|
|
77
|
-
}));
|
|
78
|
-
});
|
|
79
|
-
it("commutativity of add: a + b = b + a", () => {
|
|
80
|
-
fc.assert(fc.property(arb, arb, (a, b) => {
|
|
81
|
-
return eq(sr.add(a, b), sr.add(b, a));
|
|
82
|
-
}));
|
|
83
|
-
});
|
|
84
|
-
it("additive identity: a + 0 = a = 0 + a", () => {
|
|
85
|
-
fc.assert(fc.property(arb, (a) => {
|
|
86
|
-
return eq(sr.add(a, sr.zero), a) && eq(sr.add(sr.zero, a), a);
|
|
87
|
-
}));
|
|
88
|
-
});
|
|
89
|
-
it("multiplicative identity: a * 1 = a = 1 * a", () => {
|
|
90
|
-
fc.assert(fc.property(arb, (a) => {
|
|
91
|
-
return eq(sr.mul(a, sr.one), a) && eq(sr.mul(sr.one, a), a);
|
|
92
|
-
}));
|
|
93
|
-
});
|
|
94
|
-
it("annihilation: a * 0 = 0 = 0 * a", () => {
|
|
95
|
-
fc.assert(fc.property(arb, (a) => {
|
|
96
|
-
return eq(sr.mul(a, sr.zero), sr.zero) && eq(sr.mul(sr.zero, a), sr.zero);
|
|
97
|
-
}));
|
|
98
|
-
});
|
|
99
|
-
it("left distributivity: a * (b + c) = (a * b) + (a * c)", () => {
|
|
100
|
-
fc.assert(fc.property(arb, arb, arb, (a, b, c) => {
|
|
101
|
-
const lhs = sr.mul(a, sr.add(b, c));
|
|
102
|
-
const rhs = sr.add(sr.mul(a, b), sr.mul(a, c));
|
|
103
|
-
return eq(lhs, rhs);
|
|
104
|
-
}));
|
|
105
|
-
});
|
|
106
|
-
it("right distributivity: (a + b) * c = (a * c) + (b * c)", () => {
|
|
107
|
-
fc.assert(fc.property(arb, arb, arb, (a, b, c) => {
|
|
108
|
-
const lhs = sr.mul(sr.add(a, b), c);
|
|
109
|
-
const rhs = sr.add(sr.mul(a, c), sr.mul(b, c));
|
|
110
|
-
return eq(lhs, rhs);
|
|
111
|
-
}));
|
|
112
|
-
});
|
|
113
|
-
if (opts?.idempotentAdd) {
|
|
114
|
-
it("idempotency of add: a + a = a", () => {
|
|
115
|
-
fc.assert(fc.property(arb, (a) => {
|
|
116
|
-
return eq(sr.add(a, a), a);
|
|
117
|
-
}));
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
it("closure: add result is in valid domain", () => {
|
|
121
|
-
fc.assert(fc.property(arb, arb, (a, b) => {
|
|
122
|
-
const r = sr.add(a, b);
|
|
123
|
-
// Result should be the same type and not NaN
|
|
124
|
-
return typeof r === typeof a && !(typeof r === "number" && isNaN(r));
|
|
125
|
-
}));
|
|
126
|
-
});
|
|
127
|
-
it("closure: mul result is in valid domain", () => {
|
|
128
|
-
fc.assert(fc.property(arb, arb, (a, b) => {
|
|
129
|
-
const r = sr.mul(a, b);
|
|
130
|
-
return typeof r === typeof a && !(typeof r === "number" && isNaN(r));
|
|
131
|
-
}));
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
// ── Arbitraries ────────────────────────────────────────────────────
|
|
136
|
-
// Trust/Reliability: values in [0, 1]
|
|
137
|
-
const unitArb = fc.double({ min: 0, max: 1, noNaN: true });
|
|
138
|
-
// Cost/Latency/RegulatoryRisk: non-negative including Infinity
|
|
139
|
-
// Use oneof to ensure Infinity appears in the test distribution
|
|
140
|
-
const nonNegArb = fc.oneof(fc.double({ min: 0, max: 1e6, noNaN: true }), fc.constant(Infinity), fc.constant(0));
|
|
141
|
-
// Bottleneck: non-negative including 0 and Infinity
|
|
142
|
-
const bottleneckArb = fc.oneof(fc.double({ min: 0, max: 1e6, noNaN: true }), fc.constant(Infinity), fc.constant(0));
|
|
143
|
-
const boolArb = fc.boolean();
|
|
144
|
-
// ── Run law checks on all concrete semirings ───────────────────────
|
|
145
|
-
// Trust: (max, *, 0, 1) — add is idempotent (max(a,a) = a)
|
|
146
|
-
semiringLaws("TrustSemiring", TrustSemiring, unitArb, approxEq, {
|
|
147
|
-
idempotentAdd: true,
|
|
148
|
-
});
|
|
149
|
-
// Cost: (min, +, Inf, 0) — tropical semiring, add is idempotent (min(a,a) = a)
|
|
150
|
-
semiringLaws("CostSemiring", CostSemiring, nonNegArb, approxEq, {
|
|
151
|
-
idempotentAdd: true,
|
|
152
|
-
});
|
|
153
|
-
// Latency: same algebra as Cost
|
|
154
|
-
semiringLaws("LatencySemiring", LatencySemiring, nonNegArb, approxEq, {
|
|
155
|
-
idempotentAdd: true,
|
|
156
|
-
});
|
|
157
|
-
// RegulatoryRisk: same algebra as Cost
|
|
158
|
-
semiringLaws("RegulatoryRiskSemiring", RegulatoryRiskSemiring, nonNegArb, approxEq, {
|
|
159
|
-
idempotentAdd: true,
|
|
160
|
-
});
|
|
161
|
-
// Bottleneck: (max, min, 0, Inf) — add is idempotent (max(a,a) = a)
|
|
162
|
-
semiringLaws("BottleneckSemiring", BottleneckSemiring, bottleneckArb, approxEq, {
|
|
163
|
-
idempotentAdd: true,
|
|
164
|
-
});
|
|
165
|
-
// Reliability: (max, *, 0, 1) — same algebra as Trust
|
|
166
|
-
semiringLaws("ReliabilitySemiring", ReliabilitySemiring, unitArb, approxEq, {
|
|
167
|
-
idempotentAdd: true,
|
|
168
|
-
});
|
|
169
|
-
// Boolean: (||, &&, false, true)
|
|
170
|
-
semiringLaws("BooleanSemiring", BooleanSemiring, boolArb, (a, b) => a === b, {
|
|
171
|
-
idempotentAdd: true,
|
|
172
|
-
});
|
|
173
|
-
// ── Product semiring ───────────────────────────────────────────────
|
|
174
|
-
describe("Product(Trust x Cost) — property-based", () => {
|
|
175
|
-
const ps = productSemiring(TrustSemiring, CostSemiring);
|
|
176
|
-
const productArb = fc.tuple(unitArb, nonNegArb);
|
|
177
|
-
const productEq = (a, b) => approxEq(a[0], b[0]) && approxEq(a[1], b[1]);
|
|
178
|
-
semiringLaws("Product(Trust x Cost)", ps, productArb, productEq, {
|
|
179
|
-
idempotentAdd: true,
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
// ── Record semiring ────────────────────────────────────────────────
|
|
183
|
-
describe("Record{trust, cost, latency} — property-based", () => {
|
|
184
|
-
const rs = recordSemiring({
|
|
185
|
-
trust: TrustSemiring,
|
|
186
|
-
cost: CostSemiring,
|
|
187
|
-
latency: LatencySemiring,
|
|
188
|
-
});
|
|
189
|
-
const recordArb = fc.record({
|
|
190
|
-
trust: unitArb,
|
|
191
|
-
cost: nonNegArb,
|
|
192
|
-
latency: nonNegArb,
|
|
193
|
-
});
|
|
194
|
-
const recordEq = (a, b) => approxEq(a.trust, b.trust) && approxEq(a.cost, b.cost) && approxEq(a.latency, b.latency);
|
|
195
|
-
semiringLaws("Record{trust, cost, latency}", rs, recordArb, recordEq, {
|
|
196
|
-
idempotentAdd: true,
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
// ── Monotonicity ───────────────────────────────────────────────────
|
|
200
|
-
// For semirings where add = max or add = min, verify monotonicity.
|
|
201
|
-
describe("monotonicity", () => {
|
|
202
|
-
it("TrustSemiring: if a <= b then a + c <= b + c", () => {
|
|
203
|
-
fc.assert(fc.property(unitArb, unitArb, unitArb, (a, b, c) => {
|
|
204
|
-
if (a > b)
|
|
205
|
-
return true; // only test when a <= b
|
|
206
|
-
return approxLeq(TrustSemiring.add(a, c), TrustSemiring.add(b, c));
|
|
207
|
-
}));
|
|
208
|
-
});
|
|
209
|
-
it("CostSemiring: if a <= b then a + c <= b + c (min is monotone)", () => {
|
|
210
|
-
fc.assert(fc.property(nonNegArb, nonNegArb, nonNegArb, (a, b, c) => {
|
|
211
|
-
if (a > b)
|
|
212
|
-
return true;
|
|
213
|
-
return approxLeq(CostSemiring.add(a, c), CostSemiring.add(b, c));
|
|
214
|
-
}));
|
|
215
|
-
});
|
|
216
|
-
it("ReliabilitySemiring: if a <= b then a + c <= b + c", () => {
|
|
217
|
-
fc.assert(fc.property(unitArb, unitArb, unitArb, (a, b, c) => {
|
|
218
|
-
if (a > b)
|
|
219
|
-
return true;
|
|
220
|
-
return approxLeq(ReliabilitySemiring.add(a, c), ReliabilitySemiring.add(b, c));
|
|
221
|
-
}));
|
|
222
|
-
});
|
|
223
|
-
it("BottleneckSemiring: if a <= b then a + c <= b + c", () => {
|
|
224
|
-
fc.assert(fc.property(bottleneckArb, bottleneckArb, bottleneckArb, (a, b, c) => {
|
|
225
|
-
if (a > b)
|
|
226
|
-
return true;
|
|
227
|
-
return approxLeq(BottleneckSemiring.add(a, c), BottleneckSemiring.add(b, c));
|
|
228
|
-
}));
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
//# sourceMappingURL=semiring-laws.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"semiring-laws.test.js","sourceRoot":"","sources":["../../src/__tests__/semiring-laws.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"semiring.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/semiring.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { TrustSemiring, CostSemiring, LatencySemiring, BottleneckSemiring, ReliabilitySemiring, BooleanSemiring, RegulatoryRiskSemiring, productSemiring, recordSemiring, mappedSemiring, } from "../index.js";
|
|
3
|
-
// Cover the barrel re-export (index.ts line 1+)
|
|
4
|
-
import * as barrel from "../index.js";
|
|
5
|
-
// ── Semiring Axiom Verification ─────────────────────────────────────
|
|
6
|
-
// If the axioms don't hold, every algorithm built on top is wrong.
|
|
7
|
-
function verifySemiringAxioms(name, sr, values, eq = (a, b) => a === b) {
|
|
8
|
-
describe(`${name} — semiring axioms`, () => {
|
|
9
|
-
it("⊕ is commutative: a ⊕ b = b ⊕ a", () => {
|
|
10
|
-
for (const a of values) {
|
|
11
|
-
for (const b of values) {
|
|
12
|
-
expect(eq(sr.add(a, b), sr.add(b, a))).toBe(true);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
it("⊕ is associative: (a ⊕ b) ⊕ c = a ⊕ (b ⊕ c)", () => {
|
|
17
|
-
for (const a of values) {
|
|
18
|
-
for (const b of values) {
|
|
19
|
-
for (const c of values) {
|
|
20
|
-
expect(eq(sr.add(sr.add(a, b), c), sr.add(a, sr.add(b, c)))).toBe(true);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
it("0 is additive identity: a ⊕ 0 = a", () => {
|
|
26
|
-
for (const a of values) {
|
|
27
|
-
expect(eq(sr.add(a, sr.zero), a)).toBe(true);
|
|
28
|
-
expect(eq(sr.add(sr.zero, a), a)).toBe(true);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
it("⊗ is associative: (a ⊗ b) ⊗ c = a ⊗ (b ⊗ c)", () => {
|
|
32
|
-
for (const a of values) {
|
|
33
|
-
for (const b of values) {
|
|
34
|
-
for (const c of values) {
|
|
35
|
-
const lhs = sr.mul(sr.mul(a, b), c);
|
|
36
|
-
const rhs = sr.mul(a, sr.mul(b, c));
|
|
37
|
-
expect(eq(lhs, rhs)).toBe(true);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
it("1 is multiplicative identity: a ⊗ 1 = 1 ⊗ a = a", () => {
|
|
43
|
-
for (const a of values) {
|
|
44
|
-
expect(eq(sr.mul(a, sr.one), a)).toBe(true);
|
|
45
|
-
expect(eq(sr.mul(sr.one, a), a)).toBe(true);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
it("0 annihilates: a ⊗ 0 = 0 ⊗ a = 0", () => {
|
|
49
|
-
for (const a of values) {
|
|
50
|
-
expect(eq(sr.mul(a, sr.zero), sr.zero)).toBe(true);
|
|
51
|
-
expect(eq(sr.mul(sr.zero, a), sr.zero)).toBe(true);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
it("⊗ distributes over ⊕: a ⊗ (b ⊕ c) = (a ⊗ b) ⊕ (a ⊗ c)", () => {
|
|
55
|
-
for (const a of values) {
|
|
56
|
-
for (const b of values) {
|
|
57
|
-
for (const c of values) {
|
|
58
|
-
const lhs = sr.mul(a, sr.add(b, c));
|
|
59
|
-
const rhs = sr.add(sr.mul(a, b), sr.mul(a, c));
|
|
60
|
-
expect(eq(lhs, rhs)).toBe(true);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
it("right distributivity: (b ⊕ c) ⊗ a = (b ⊗ a) ⊕ (c ⊗ a)", () => {
|
|
66
|
-
for (const a of values) {
|
|
67
|
-
for (const b of values) {
|
|
68
|
-
for (const c of values) {
|
|
69
|
-
const lhs = sr.mul(sr.add(b, c), a);
|
|
70
|
-
const rhs = sr.add(sr.mul(b, a), sr.mul(c, a));
|
|
71
|
-
expect(eq(lhs, rhs)).toBe(true);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
// ── Number equality with floating point tolerance ───────────────────
|
|
79
|
-
const numEq = (a, b) => Math.abs(a - b) < 1e-10 || a === b;
|
|
80
|
-
// ── Run axiom checks on all concrete semirings ──────────────────────
|
|
81
|
-
const trustValues = [0, 0.1, 0.3, 0.6, 0.9, 1];
|
|
82
|
-
verifySemiringAxioms("TrustSemiring", TrustSemiring, trustValues, numEq);
|
|
83
|
-
const costValues = [0, 0.5, 1, 5, 10, Infinity];
|
|
84
|
-
verifySemiringAxioms("CostSemiring", CostSemiring, costValues, numEq);
|
|
85
|
-
const latencyValues = [0, 100, 500, 1000, Infinity];
|
|
86
|
-
verifySemiringAxioms("LatencySemiring", LatencySemiring, latencyValues, numEq);
|
|
87
|
-
// RegulatoryRisk: (min, +, ∞, 0) — same algebra as Cost/Latency (tropical)
|
|
88
|
-
const riskValues = [0, 0.5, 1, 5, 10, Infinity];
|
|
89
|
-
verifySemiringAxioms("RegulatoryRiskSemiring", RegulatoryRiskSemiring, riskValues, numEq);
|
|
90
|
-
// Bottleneck: (max, min, 0, ∞) — annihilation check needs special care
|
|
91
|
-
// a ⊗ 0 = min(a, 0) = 0 ✓ and a ⊕ 0 = max(a, 0) = a ✓ (for a >= 0)
|
|
92
|
-
const bottleneckValues = [0, 0.5, 1, 10, Infinity];
|
|
93
|
-
verifySemiringAxioms("BottleneckSemiring", BottleneckSemiring, bottleneckValues, numEq);
|
|
94
|
-
verifySemiringAxioms("ReliabilitySemiring", ReliabilitySemiring, trustValues, numEq);
|
|
95
|
-
verifySemiringAxioms("BooleanSemiring", BooleanSemiring, [true, false]);
|
|
96
|
-
// ── Product Semiring ────────────────────────────────────────────────
|
|
97
|
-
describe("productSemiring", () => {
|
|
98
|
-
const ps = productSemiring(TrustSemiring, CostSemiring);
|
|
99
|
-
it("zero and one are correct", () => {
|
|
100
|
-
expect(ps.zero).toEqual([0, Infinity]);
|
|
101
|
-
expect(ps.one).toEqual([1, 0]);
|
|
102
|
-
});
|
|
103
|
-
it("add applies component-wise", () => {
|
|
104
|
-
expect(ps.add([0.5, 10], [0.8, 5])).toEqual([0.8, 5]);
|
|
105
|
-
});
|
|
106
|
-
it("mul applies component-wise", () => {
|
|
107
|
-
const result = ps.mul([0.9, 2], [0.8, 3]);
|
|
108
|
-
expect(result[0]).toBeCloseTo(0.72); // 0.9 × 0.8
|
|
109
|
-
expect(result[1]).toBeCloseTo(5); // 2 + 3
|
|
110
|
-
});
|
|
111
|
-
// Verify axioms on the product
|
|
112
|
-
const productValues = [
|
|
113
|
-
[0, Infinity],
|
|
114
|
-
[1, 0],
|
|
115
|
-
[0.5, 3],
|
|
116
|
-
[0.9, 1],
|
|
117
|
-
[0.3, 10],
|
|
118
|
-
];
|
|
119
|
-
verifySemiringAxioms("Product(Trust × Cost)", ps, [...productValues], (a, b) => numEq(a[0], b[0]) && numEq(a[1], b[1]));
|
|
120
|
-
});
|
|
121
|
-
// ── Record Semiring ─────────────────────────────────────────────────
|
|
122
|
-
describe("recordSemiring", () => {
|
|
123
|
-
const rs = recordSemiring({
|
|
124
|
-
trust: TrustSemiring,
|
|
125
|
-
cost: CostSemiring,
|
|
126
|
-
latency: LatencySemiring,
|
|
127
|
-
});
|
|
128
|
-
it("computes zero and one correctly", () => {
|
|
129
|
-
expect(rs.zero).toEqual({ trust: 0, cost: Infinity, latency: Infinity });
|
|
130
|
-
expect(rs.one).toEqual({ trust: 1, cost: 0, latency: 0 });
|
|
131
|
-
});
|
|
132
|
-
it("add picks best per dimension", () => {
|
|
133
|
-
const a = { trust: 0.5, cost: 10, latency: 200 };
|
|
134
|
-
const b = { trust: 0.8, cost: 5, latency: 300 };
|
|
135
|
-
const result = rs.add(a, b);
|
|
136
|
-
expect(result.trust).toBe(0.8); // max
|
|
137
|
-
expect(result.cost).toBe(5); // min
|
|
138
|
-
expect(result.latency).toBe(200); // min
|
|
139
|
-
});
|
|
140
|
-
it("mul composes per dimension", () => {
|
|
141
|
-
const a = { trust: 0.9, cost: 2, latency: 100 };
|
|
142
|
-
const b = { trust: 0.8, cost: 3, latency: 200 };
|
|
143
|
-
const result = rs.mul(a, b);
|
|
144
|
-
expect(result.trust).toBeCloseTo(0.72); // ×
|
|
145
|
-
expect(result.cost).toBe(5); // +
|
|
146
|
-
expect(result.latency).toBe(300); // +
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
// ── Mapped Semiring ─────────────────────────────────────────────────
|
|
150
|
-
describe("barrel re-export (index.ts)", () => {
|
|
151
|
-
it("exports all MIT protocol symbols", () => {
|
|
152
|
-
expect(barrel.TrustSemiring).toBeDefined();
|
|
153
|
-
expect(barrel.CostSemiring).toBeDefined();
|
|
154
|
-
expect(barrel.WeightedDigraph).toBeDefined();
|
|
155
|
-
expect(barrel.optimalPaths).toBeDefined();
|
|
156
|
-
// ProvenanceSemiring, buildAgentGraph, addDelegationEdges, RouteWeightSemiring
|
|
157
|
-
// are BSL exports from @motebit/semiring — tested there, not here.
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
describe("mappedSemiring", () => {
|
|
161
|
-
// Map cost semiring through milliseconds ↔ seconds conversion
|
|
162
|
-
const SecondsCost = mappedSemiring(CostSemiring, (ms) => ms / 1000, (s) => s * 1000);
|
|
163
|
-
it("preserves semiring structure through isomorphism", () => {
|
|
164
|
-
expect(SecondsCost.zero).toBe(Infinity);
|
|
165
|
-
expect(SecondsCost.one).toBe(0);
|
|
166
|
-
expect(SecondsCost.add(5, 3)).toBe(3); // min
|
|
167
|
-
expect(SecondsCost.mul(2, 3)).toBe(5); // mapped: (2000+3000)/1000
|
|
168
|
-
});
|
|
169
|
-
it("eq delegates through the mapping", () => {
|
|
170
|
-
expect(SecondsCost.eq(3, 3)).toBe(true);
|
|
171
|
-
expect(SecondsCost.eq(3, 4)).toBe(false);
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
// ── Semiring eq (value equality for convergence) ────────────────────
|
|
175
|
-
describe("Semiring eq — value equality for compound semirings", () => {
|
|
176
|
-
it("productSemiring eq compares both components", () => {
|
|
177
|
-
const TC = productSemiring(TrustSemiring, CostSemiring);
|
|
178
|
-
expect(TC.eq([0.8, 10], [0.8, 10])).toBe(true);
|
|
179
|
-
expect(TC.eq([0.8, 10], [0.9, 10])).toBe(false);
|
|
180
|
-
expect(TC.eq([0.8, 10], [0.8, 11])).toBe(false);
|
|
181
|
-
});
|
|
182
|
-
it("recordSemiring eq compares all fields", () => {
|
|
183
|
-
const Multi = recordSemiring({ trust: TrustSemiring, cost: CostSemiring });
|
|
184
|
-
expect(Multi.eq({ trust: 0.5, cost: 10 }, { trust: 0.5, cost: 10 })).toBe(true);
|
|
185
|
-
expect(Multi.eq({ trust: 0.5, cost: 10 }, { trust: 0.6, cost: 10 })).toBe(false);
|
|
186
|
-
expect(Multi.eq({ trust: 0.5, cost: 10 }, { trust: 0.5, cost: 11 })).toBe(false);
|
|
187
|
-
});
|
|
188
|
-
it("recordSemiring with nested eq propagates through fields", () => {
|
|
189
|
-
// Build a record where one field is itself a product (has non-trivial eq)
|
|
190
|
-
const Inner = productSemiring(TrustSemiring, CostSemiring);
|
|
191
|
-
const Outer = recordSemiring({ inner: Inner, lat: LatencySemiring });
|
|
192
|
-
expect(Outer.eq({ inner: [0.5, 3], lat: 10 }, { inner: [0.5, 3], lat: 10 })).toBe(true);
|
|
193
|
-
expect(Outer.eq({ inner: [0.5, 3], lat: 10 }, { inner: [0.5, 4], lat: 10 })).toBe(false);
|
|
194
|
-
});
|
|
195
|
-
it("primitive semirings do not define eq (defaults to ===)", () => {
|
|
196
|
-
expect(TrustSemiring.eq).toBeUndefined();
|
|
197
|
-
expect(CostSemiring.eq).toBeUndefined();
|
|
198
|
-
expect(BooleanSemiring.eq).toBeUndefined();
|
|
199
|
-
});
|
|
200
|
-
});
|
|
201
|
-
//# sourceMappingURL=semiring.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"semiring.test.js","sourceRoot":"","sources":["../../src/__tests__/semiring.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traversal.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/traversal.test.ts"],"names":[],"mappings":""}
|