@lapxo/bound 0.1.2 → 0.1.4
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 +5 -5
- package/TARGET.bound +27 -20
- package/dist/cli/accept.js +112 -71
- package/dist/cli/owner.js +3 -0
- package/dist/cli/verb.js +54 -12
- package/dist/fold/configures.js +3 -1
- package/dist/fold/digests.js +7 -1
- package/dist/fold/kept.js +5 -1
- package/dist/fold/observed.d.ts +1 -0
- package/dist/fold/observed.js +30 -11
- package/dist/fold/readers.d.ts +2 -0
- package/dist/fold/readers.js +3 -3
- package/dist/fold/region-declarations.d.ts +2 -0
- package/dist/fold/region-declarations.js +13 -0
- package/dist/fold/resolved.js +9 -1
- package/dist/fold/second.js +3 -0
- package/dist/host/adapters/transport/http.d.ts +5 -0
- package/dist/host/adapters/transport/http.js +28 -0
- package/dist/host/capsule-process.d.ts +2 -1
- package/dist/host/capsule-process.js +4 -3
- package/dist/host/capsule.d.ts +1 -0
- package/dist/host/capsule.js +11 -7
- package/dist/host/cell-receipts.js +1 -1
- package/dist/host/content-needed.d.ts +5 -0
- package/dist/host/content-needed.js +8 -0
- package/dist/host/content-store.d.ts +8 -0
- package/dist/host/content-store.js +31 -0
- package/dist/host/lifetime.d.ts +1 -0
- package/dist/host/lifetime.js +40 -0
- package/dist/host/objects.js +1 -1
- package/dist/host/ports/transport.d.ts +1 -0
- package/dist/host/ports/transport.js +48 -0
- package/dist/host/process-lifetime.d.ts +11 -0
- package/dist/host/process-lifetime.js +12 -0
- package/dist/host/read-only.d.ts +3 -0
- package/dist/host/read-only.js +9 -0
- package/dist/host/release.js +2 -1
- package/dist/host/selected-capsules.js +38 -12
- package/dist/host/selected-topos.d.ts +5 -5
- package/dist/host/selected-topos.js +9 -36
- package/dist/host/source-content.d.ts +5 -3
- package/dist/host/source-content.js +36 -30
- package/dist/land/leaving.js +4 -0
- package/dist/land/ledger.js +3 -0
- package/dist/observe/identity.d.ts +2 -0
- package/dist/observe/identity.js +3 -3
- package/dist/observe/regions.js +2 -2
- package/dist/observe/run.d.ts +2 -1
- package/dist/observe/run.js +10 -4
- package/dist/render/receipts.js +2 -1
- package/package.json +2 -2
- package/receipts.bound +73 -72
|
@@ -2,9 +2,11 @@ export interface ContentPort {
|
|
|
2
2
|
readonly algorithms: ReadonlySet<string>;
|
|
3
3
|
readonly read: (digest: string) => Uint8Array | undefined;
|
|
4
4
|
readonly write: (digest: string, bytes: Uint8Array) => void;
|
|
5
|
-
readonly fetch: (url: string) => Promise<Uint8Array>;
|
|
5
|
+
readonly fetch: (url: string, digest?: string) => Promise<Uint8Array>;
|
|
6
6
|
}
|
|
7
7
|
/** Transport uses declared locations; only the requested digest admits bytes into the cache. */
|
|
8
|
-
export declare function resolveSelectedContent(lines: readonly string[], port: ContentPort): Promise<readonly string[]>;
|
|
8
|
+
export declare function resolveSelectedContent(lines: readonly string[], port: ContentPort, requested: readonly string[]): Promise<readonly string[]>;
|
|
9
9
|
/** Exact resource URLs; no repository checkout or inferred release. */
|
|
10
|
-
export declare function resolveSources(standing: readonly string[],
|
|
10
|
+
export declare function resolveSources(standing: readonly string[], requested: readonly string[]): Promise<void>;
|
|
11
|
+
/** A changed verified store is the only reason to retry. A repeated miss never loops or changes a named pin. */
|
|
12
|
+
export declare function resolveRequested<T>(resolve: (digest: string) => Promise<void>, fold: () => Promise<T>): Promise<T>;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { transportBytes } from "./ports/transport.js";
|
|
2
|
+
import { contentStore, verifiedContent } from "./content-store.js";
|
|
3
|
+
import { ContentNeeded } from "./content-needed.js";
|
|
1
4
|
import { createHash } from 'node:crypto';
|
|
2
|
-
import { readStanding } from '@lapxo/topos/standing';
|
|
3
5
|
import { parse, wireAt } from '@lapxo/topos/wire';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { ownLock, ownStore } from "../observe/runner.js";
|
|
6
|
+
import { landBlob } from "../land/ledger.js";
|
|
7
|
+
import { ownLock } from "../observe/runner.js";
|
|
7
8
|
/** Transport uses declared locations; only the requested digest admits bytes into the cache. */
|
|
8
|
-
export async function resolveSelectedContent(lines, port) {
|
|
9
|
+
export async function resolveSelectedContent(lines, port, requested) {
|
|
9
10
|
const fields = lines.flatMap(line => { const p = parse(line); return p.kind === 'fact' && p.value.fields.value !== 'withdraw' ? [p.value.fields] : []; });
|
|
10
11
|
const selectionIndex = (scope) => { const match = /(^|\/)uses\//.exec(scope); return match === null ? -1 : match.index + match[1].length; };
|
|
11
12
|
// A dependency constraint is not a content binding. Historical artifact records
|
|
@@ -21,7 +22,6 @@ export async function resolveSelectedContent(lines, port) {
|
|
|
21
22
|
if (urls.length)
|
|
22
23
|
locations.set(binding.value ?? '', [...new Set([...(locations.get(binding.value ?? '') ?? []), ...urls])]);
|
|
23
24
|
}
|
|
24
|
-
const roots = [...new Set(bindings.filter(f => selectionIndex(f.scope ?? '') >= 0).map(f => f.value ?? ''))];
|
|
25
25
|
const received = [];
|
|
26
26
|
const validate = (digest) => {
|
|
27
27
|
const split = digest.indexOf(':');
|
|
@@ -30,9 +30,6 @@ export async function resolveSelectedContent(lines, port) {
|
|
|
30
30
|
throw Error(`REFUSE·pin ${digest} digest is not admitted`);
|
|
31
31
|
return { algorithm, hex };
|
|
32
32
|
};
|
|
33
|
-
// Refuse malformed declared selections before materializing any dependency.
|
|
34
|
-
for (const binding of bindings)
|
|
35
|
-
validate(binding.value ?? '');
|
|
36
33
|
const ensure = async (digest) => {
|
|
37
34
|
const { algorithm, hex } = validate(digest);
|
|
38
35
|
const verify = (bytes) => {
|
|
@@ -48,12 +45,9 @@ export async function resolveSelectedContent(lines, port) {
|
|
|
48
45
|
throw Error(`REFUSE·pin ${digest} content unavailable · no declared source · not laid`);
|
|
49
46
|
let last;
|
|
50
47
|
for (const url of urls) {
|
|
51
|
-
const parsed = new URL(url);
|
|
52
|
-
if (!['https:', 'http:'].includes(parsed.protocol))
|
|
53
|
-
throw Error(`REFUSE·source ${url} needs an explicit transport adapter`);
|
|
54
48
|
let bytes;
|
|
55
49
|
try {
|
|
56
|
-
bytes = await port.fetch(url);
|
|
50
|
+
bytes = await port.fetch(url, digest);
|
|
57
51
|
}
|
|
58
52
|
catch (error) {
|
|
59
53
|
last = error;
|
|
@@ -66,17 +60,12 @@ export async function resolveSelectedContent(lines, port) {
|
|
|
66
60
|
}
|
|
67
61
|
throw Error(`REFUSE·source ${digest} ${last instanceof Error ? last.message : 'declared sources unavailable'}`);
|
|
68
62
|
};
|
|
69
|
-
for (const digest of new Set(
|
|
63
|
+
for (const digest of new Set(requested))
|
|
70
64
|
await ensure(digest);
|
|
71
|
-
for (const digest of roots) {
|
|
72
|
-
const topos = readStanding(Buffer.from(await ensure(digest)).toString('utf8'));
|
|
73
|
-
for (const dependency of topos.dependencies)
|
|
74
|
-
await ensure(dependency);
|
|
75
|
-
}
|
|
76
65
|
return received;
|
|
77
66
|
}
|
|
78
67
|
/** Exact resource URLs; no repository checkout or inferred release. */
|
|
79
|
-
export async function resolveSources(standing,
|
|
68
|
+
export async function resolveSources(standing, requested) {
|
|
80
69
|
const instrument = ownLock().flatMap(line => { const p = parse(line); return p.kind === 'fact' ? [p.value.fields] : []; });
|
|
81
70
|
const wire = wireAt(instrument, Number.MAX_SAFE_INTEGER);
|
|
82
71
|
if (wire === null)
|
|
@@ -86,19 +75,36 @@ export async function resolveSources(standing, materializeInstrument = false) {
|
|
|
86
75
|
if (p.kind !== 'fact')
|
|
87
76
|
return false;
|
|
88
77
|
const fields = p.value.fields;
|
|
89
|
-
return fields.scope?.startsWith('sources/') ||
|
|
78
|
+
return fields.scope?.startsWith('sources/') || fields.scope?.startsWith('dep/');
|
|
90
79
|
});
|
|
91
80
|
const received = await resolveSelectedContent([...standing, ...bindings], {
|
|
92
81
|
algorithms: wire.digests,
|
|
93
|
-
read: digest =>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
},
|
|
101
|
-
|
|
82
|
+
read: digest => { try {
|
|
83
|
+
return verifiedContent(digest).bytes;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (error instanceof ContentNeeded)
|
|
87
|
+
return undefined;
|
|
88
|
+
throw error;
|
|
89
|
+
} },
|
|
90
|
+
write: (digest, bytes) => { landBlob(contentStore(), digest, bytes); },
|
|
91
|
+
fetch: async (url, digest) => transportBytes(url, digest, [...ownLock(), ...standing]),
|
|
92
|
+
}, requested);
|
|
102
93
|
for (const digest of received)
|
|
103
94
|
process.stdout.write(`FETCHED ${digest} · verified\n`);
|
|
104
95
|
}
|
|
96
|
+
/** A changed verified store is the only reason to retry. A repeated miss never loops or changes a named pin. */
|
|
97
|
+
export async function resolveRequested(resolve, fold) {
|
|
98
|
+
const attempted = new Set();
|
|
99
|
+
for (;;) {
|
|
100
|
+
try {
|
|
101
|
+
return await fold();
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (!(error instanceof ContentNeeded) || attempted.has(error.digest))
|
|
105
|
+
throw error;
|
|
106
|
+
attempted.add(error.digest);
|
|
107
|
+
await resolve(error.digest);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
package/dist/land/leaving.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { readOnly } from "../host/read-only.js";
|
|
2
|
+
import { meets } from "../fold/closed.js";
|
|
1
3
|
import { fieldOf } from "../fold/claims.js";
|
|
2
4
|
import { sourced } from "./vouched.js";
|
|
3
5
|
import { observedClaims } from "../fold/observed.js";
|
|
@@ -14,6 +16,8 @@ export function coordinatesWithdrawn(root, store, signed, standing) {
|
|
|
14
16
|
.map((line) => fieldOf(line, 'scope').slice(family.length + 1));
|
|
15
17
|
if (!asked.length)
|
|
16
18
|
return { taken: [], refused: [] };
|
|
19
|
+
if (readOnly() && !meets(root, store, ''))
|
|
20
|
+
throw Error('REFUSE·withdraw current native receipts are required to judge file removal; fold the declared inputs first');
|
|
17
21
|
/** A run rewrites every block of a test file under one observation, so a block whose title moved still holds a row
|
|
18
22
|
* from an older one: what reads a file now is what the latest run of each test file wrote, and nothing older. */
|
|
19
23
|
const memo = observedClaims(root, store, { wait: false }).filter((line) => fieldOf(line, 'measure') === 'memo');
|
package/dist/land/ledger.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { requireEffects } from "../host/read-only.js";
|
|
1
2
|
import { appendFileSync, closeSync, dirname, existsSync, join, linkSync, mkdirSync, openSync, readFileSync, readSync, renameSync, rmSync, statSync, writeFileSync } from "../host/io.js";
|
|
2
3
|
import { storeRoot } from "../host/ports/store.js";
|
|
3
4
|
import { canonical, EXTENSION, PROTOCOL } from '@lapxo/topos/wire';
|
|
@@ -81,6 +82,7 @@ function landWhole(at, bytes) {
|
|
|
81
82
|
}
|
|
82
83
|
/** A file replaced whole: the bytes land in a temp beside it and the name moves in one rename, so a killed write keeps the temp, never a torn file under the name a later read parses. */
|
|
83
84
|
export function replaceWhole(at, bytes) {
|
|
85
|
+
requireEffects('persistent replacement');
|
|
84
86
|
mkdirSync(dirname(at), { recursive: true });
|
|
85
87
|
const part = `${at}.${process.pid}.part`;
|
|
86
88
|
writeFileSync(part, bytes);
|
|
@@ -124,6 +126,7 @@ export function landMemo(store, key, bytes) {
|
|
|
124
126
|
}
|
|
125
127
|
export const landEnvelope = (store, digest, bytes) => landWhole(storeAt(store, 'cas', 'envelopes', `${digest.slice(digest.indexOf(':') + 1)}.json`), bytes);
|
|
126
128
|
export function land(store, writer, lines) {
|
|
129
|
+
requireEffects('ledger admission');
|
|
127
130
|
const at = writerFile(store, writer);
|
|
128
131
|
return { at, appended: appendNew(at, lines) };
|
|
129
132
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReaderLifetime } from '@lapxo/topos/wire';
|
|
1
2
|
import type { Kind } from './run.ts';
|
|
2
3
|
/** Where a reader's vectors lie: in its package, beside its source, under the name of its module, the folder the wire's vector family names. */
|
|
3
4
|
export declare const vectorsOf: (module: string, standing: readonly string[]) => string;
|
|
@@ -13,6 +14,7 @@ export declare function identityOf(input: {
|
|
|
13
14
|
readonly code: string;
|
|
14
15
|
readonly lineage: readonly string[];
|
|
15
16
|
readonly kept: readonly string[];
|
|
17
|
+
readonly lifetime?: ReaderLifetime;
|
|
16
18
|
}): {
|
|
17
19
|
readonly by: string;
|
|
18
20
|
readonly lines: readonly string[];
|
package/dist/observe/identity.js
CHANGED
|
@@ -19,7 +19,7 @@ export function resetsOnEqualEmits(lines) {
|
|
|
19
19
|
}
|
|
20
20
|
return [...named.values()].filter((ats) => ats.size > 1).length;
|
|
21
21
|
}
|
|
22
|
-
function emitted(store, root, module, kind, cases) {
|
|
22
|
+
function emitted(store, root, module, kind, cases, lifetime) {
|
|
23
23
|
const laid = kind === 'process' ? mkdtempSync(join(tmpdir(), `${selfName()}-vectors-`)) : root;
|
|
24
24
|
try {
|
|
25
25
|
for (const one of kind === 'process' ? cases : []) {
|
|
@@ -28,7 +28,7 @@ function emitted(store, root, module, kind, cases) {
|
|
|
28
28
|
writeFileSync(join(laid, one.place, name), text);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
-
const rows = runReader(resolve(root, module), laid, cases.map((one) => ({ place: one.place, ...(kind === 'js' ? { text: one.text ?? '' } : {}) })));
|
|
31
|
+
const rows = runReader(resolve(root, module), laid, cases.map((one) => ({ place: one.place, ...(kind === 'js' ? { text: one.text ?? '' } : {}) })), lifetime);
|
|
32
32
|
if (cases.length && rows.every((mine) => !mine.length))
|
|
33
33
|
return undefined;
|
|
34
34
|
const said = rows.map((mine) => mine.filter((row) => !/^(cost|derived|vector-memo)\//.test(row.scope)).map((row) => JSON.stringify(row)).sort());
|
|
@@ -50,7 +50,7 @@ export function identityOf(input) {
|
|
|
50
50
|
const known = mine.find((line) => fieldOf(line, 'measure') === 'extension' && fieldOf(line, 'at') === `place:${key}`);
|
|
51
51
|
if (known !== undefined && fieldOf(known, 'value') === input.code)
|
|
52
52
|
return { by: input.code, lines: [] };
|
|
53
|
-
const emits = emitted(input.store, input.root, input.module, input.kind, JSON.parse(text).cases ?? []);
|
|
53
|
+
const emits = emitted(input.store, input.root, input.module, input.kind, JSON.parse(text).cases ?? [], input.lifetime);
|
|
54
54
|
if (emits === undefined)
|
|
55
55
|
return { by: input.code, lines: [] };
|
|
56
56
|
const by = input.code;
|
package/dist/observe/regions.js
CHANGED
|
@@ -23,11 +23,11 @@ import { coordinatesUnder, observeText } from "./files.js";
|
|
|
23
23
|
import { ownLock } from "./runner.js";
|
|
24
24
|
import { nameOf } from "../render/page.js";
|
|
25
25
|
import { placeLines, takenFor } from "../fold/place-inputs.js";
|
|
26
|
+
import { isRegionDeclaration } from "../fold/region-declarations.js";
|
|
26
27
|
const fact = (scope, value, form = 'alphabet', measure = 'fact') => canonical({ scope, role: 'writes', form, measure, value, by: 'fold', at: 'place:fold' });
|
|
27
28
|
const described = (local = []) => {
|
|
28
29
|
const lock = ownLock();
|
|
29
|
-
const
|
|
30
|
-
const eligible = (line) => fieldOf(line, 'scope').startsWith('region/') && measures.includes(fieldOf(line, 'measure')) && fieldOf(line, 'value') !== 'withdraw';
|
|
30
|
+
const eligible = (line) => isRegionDeclaration(line, lock);
|
|
31
31
|
const key = (line) => `${fieldOf(line, 'scope')} ${fieldOf(line, 'measure')}`;
|
|
32
32
|
const supplied = local.filter(eligible);
|
|
33
33
|
const overridden = new Set(supplied.map(key));
|
package/dist/observe/run.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ReaderLifetime } from '@lapxo/topos/wire';
|
|
1
2
|
export type Kind = 'js' | 'process';
|
|
2
3
|
/** The kinds this host starts. A reader of any other kind is signed and stays potential: nothing here runs it. */
|
|
3
4
|
export declare const runs: (kind: string) => kind is Kind;
|
|
@@ -26,5 +27,5 @@ export declare const hostOf: () => string;
|
|
|
26
27
|
* the file it is handed or alone when it reads the place by running it, as the region it was matched for when its
|
|
27
28
|
* capsule reads with several, and answers one list of claims per place.
|
|
28
29
|
*/
|
|
29
|
-
export declare function runReader(module: string, root: string, inputs: readonly Input[]): readonly (readonly Row[])[];
|
|
30
|
+
export declare function runReader(module: string, root: string, inputs: readonly Input[], limits?: ReaderLifetime): readonly (readonly Row[])[];
|
|
30
31
|
export {};
|
package/dist/observe/run.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { boundedProcess } from "../host/process-lifetime.js";
|
|
1
2
|
import { spawnSync } from 'node:child_process';
|
|
2
3
|
import { existsSync } from 'node:fs';
|
|
3
4
|
import { PROTOCOL } from '@lapxo/topos/wire';
|
|
@@ -13,7 +14,7 @@ export const hostOf = () => processOf('host');
|
|
|
13
14
|
* the file it is handed or alone when it reads the place by running it, as the region it was matched for when its
|
|
14
15
|
* capsule reads with several, and answers one list of claims per place.
|
|
15
16
|
*/
|
|
16
|
-
export function runReader(module, root, inputs) {
|
|
17
|
+
export function runReader(module, root, inputs, limits) {
|
|
17
18
|
if (!inputs.length)
|
|
18
19
|
return [];
|
|
19
20
|
const requests = inputs.map((input) => ({
|
|
@@ -23,12 +24,17 @@ export function runReader(module, root, inputs) {
|
|
|
23
24
|
const reader = readerOf(module);
|
|
24
25
|
if (!existsSync(reader.path))
|
|
25
26
|
throw new Error(`REFUSE·reader ${module} unavailable; its declared capability needs an admitted provider`);
|
|
26
|
-
const
|
|
27
|
-
|
|
27
|
+
const args = [...reader.flags, hostOf(), reader.path, module];
|
|
28
|
+
const ran = limits === undefined ? spawnSync(process.execPath, args, { cwd: root, input: JSON.stringify(requests), encoding: 'utf8', maxBuffer: 1 << 28 }) : boundedProcess(process.execPath, args, JSON.stringify(requests), limits, root);
|
|
29
|
+
if ('error' in ran && ran.error)
|
|
28
30
|
throw Object.assign(new Error(`${module}: reader process failed: ${ran.error.message}`), { cause: ran.error });
|
|
29
31
|
if (ran.status !== 0)
|
|
30
32
|
throw new Error(`${module}: reader exited ${ran.status ?? `with signal ${ran.signal}`}\n${ran.stderr ?? ''}${ran.stdout ?? ''}`);
|
|
31
33
|
if (ran.stderr)
|
|
32
34
|
process.stderr.write(ran.stderr);
|
|
33
|
-
return responsesOf(ran.stdout ?? '', inputs.length).map((answer) =>
|
|
35
|
+
return responsesOf(ran.stdout ?? '', inputs.length).map((answer) => {
|
|
36
|
+
if (answer.kind !== 'fact')
|
|
37
|
+
throw new Error(`REFUSE·reader ${module} · ${answer.why ?? 'no reading answered'}`);
|
|
38
|
+
return (answer.claims ?? []);
|
|
39
|
+
});
|
|
34
40
|
}
|
package/dist/render/receipts.js
CHANGED
|
@@ -23,7 +23,8 @@ export function receiptRegion(fold, at) {
|
|
|
23
23
|
const contract = wireLine(ownLock(), 'receipt-instrument');
|
|
24
24
|
const coordinate = contract === undefined ? undefined : fieldOf(contract, 'value');
|
|
25
25
|
const implementation = coordinate === undefined ? undefined : instrumentDigest(fold.store, sourceOf(), [], ownRoot(), ownLock());
|
|
26
|
-
|
|
26
|
+
// The current implementation seal is metadata, not an observation carried from a previous fold.
|
|
27
|
+
const observed = [...receiptsOf(fold).filter(line => !coordinate || fieldOf(line, 'scope') !== coordinate), ...(coordinate && implementation ? [canonical({ scope: coordinate, role: 'writes', form: 'alphabet', measure: 'digest', value: implementation, at: `place:${implementation}`, by: 'bound' })] : [])];
|
|
27
28
|
const hash = (bytes) => bytesDigest(fold.store, new TextEncoder().encode(bytes));
|
|
28
29
|
const head = keyOf(fold.store, 'attest');
|
|
29
30
|
const projection = receiptProjection(observed, fields, hash, head ? [head] : []);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lapxo/bound",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Read the bounds you already wrote, fold them, and name the contradictions.",
|
|
6
6
|
"main": "dist/cli/verb.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@lapxo/obligations": "0.3.5",
|
|
35
|
-
"@lapxo/topos": "0.1.
|
|
35
|
+
"@lapxo/topos": "0.1.9"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/node": "^20.0.0",
|
package/receipts.bound
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
bound-lock/1 at=place:sha256:
|
|
2
|
-
bound-lock/1 at=place:sha256:
|
|
3
|
-
bound-lock/1 at=place:sha256:
|
|
4
|
-
bound-lock/1 at=place:sha256:
|
|
5
|
-
bound-lock/1 at=place:sha256:
|
|
6
|
-
bound-lock/1 at=place:sha256:
|
|
7
|
-
bound-lock/1 at=place:sha256:
|
|
8
|
-
bound-lock/1 at=place:sha256:
|
|
9
|
-
bound-lock/1 at=place:sha256:
|
|
10
|
-
bound-lock/1 at=place:sha256:
|
|
11
|
-
bound-lock/1 at=place:sha256:
|
|
12
|
-
bound-lock/1 at=place:sha256:
|
|
13
|
-
bound-lock/1 at=place:sha256:
|
|
14
|
-
bound-lock/1 at=place:sha256:
|
|
15
|
-
bound-lock/1 at=place:sha256:
|
|
16
|
-
bound-lock/1 at=place:sha256:
|
|
17
|
-
bound-lock/1 at=place:sha256:
|
|
18
|
-
bound-lock/1 at=place:sha256:
|
|
19
|
-
bound-lock/1 at=place:sha256:
|
|
20
|
-
bound-lock/1 at=place:sha256:
|
|
21
|
-
bound-lock/1 at=place:sha256:
|
|
22
|
-
bound-lock/1 at=place:sha256:
|
|
23
|
-
bound-lock/1 at=place:sha256:
|
|
24
|
-
bound-lock/1 at=place:sha256:
|
|
25
|
-
bound-lock/1 at=place:sha256:
|
|
26
|
-
bound-lock/1 at=place:sha256:
|
|
27
|
-
bound-lock/1 at=place:sha256:
|
|
1
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:bbff6b8fc616 form=alphabet measure=observed role=writes scope= value=ab7da20ef55567fd
|
|
2
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=alphabet measure=observed role=writes scope= value=ab7da20ef55567fd
|
|
3
|
+
bound-lock/1 at=place:sha256:c79e6047c8b811fc107bf779ceae2c944f25a4b48d2391e74c78b532e479b4e8 by=reader:2c507e7fe764 form=alphabet measure=observed role=writes scope=./ value=c79e6047c8b811fc
|
|
4
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=alphabet measure=observed role=writes scope= value=c8df87bf85f05d4f
|
|
5
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:bbff6b8fc616 form=alphabet measure=text role=reads scope=capture/help value="closing: verbs fold land sign · flags --as --check --key --key-file --signer --place\n"
|
|
6
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:bbff6b8fc616 form=alphabet measure=text role=reads scope=capture/meeting value="INPUT [[\"Ana\",10,14],[\"Luis\",12,16],[\"room\",10,13],[\"boss\",18,20]]\nMEET {\"lo\":12,\"hi\":13}\nCONFLICT boss\nWITHDRAW boss {\"lo\":12,\"hi\":13}\n"
|
|
7
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=cli-exit-closed role=reads scope=cli/exit/closed value=0..0
|
|
8
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=cli-exit-refuse role=reads scope=cli/exit/refuse value=1..1
|
|
9
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=cli-exit-usage role=reads scope=cli/exit/usage value=2..2
|
|
10
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=cli-flags role=reads scope=cli/flags value=6..6
|
|
11
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=count role=reads scope=admission/one-boundary value=0..0
|
|
12
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=count role=reads scope=idempotent value=0..0
|
|
13
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=count role=reads scope=nothing-deleted value=0..0
|
|
14
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=count role=reads scope=offline value=0..0
|
|
15
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=count role=reads scope=one-writer value=0..0
|
|
16
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=count role=reads scope=resolve-by-url value=0..0
|
|
17
|
+
bound-lock/1 at=place:sha256:ab7da20ef55567fd8a85a49fff3ef412a55367b7046fcd4b5b0fbb1b332bb239 by=reader:c448c64e0bac form=interval measure=count role=reads scope=the-stranger value=0..0
|
|
18
|
+
bound-lock/1 at=place:sha256:c79e6047c8b811fc107bf779ceae2c944f25a4b48d2391e74c78b532e479b4e8 by=reader:2c507e7fe764 form=interval measure=unreceipted role=reads scope=door/unreceipted value=0..0
|
|
19
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/duplicate/src value=none
|
|
20
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/host value=none
|
|
21
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/key value=none
|
|
22
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/org value=none
|
|
23
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/path value=none
|
|
24
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/host value=0..0
|
|
25
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/key value=0..0
|
|
26
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/org value=0..0
|
|
27
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/path value=0..0
|
|
28
|
+
bound-lock/1 at=place:sha256:c8df87bf85f05d4f10c5e3e4011067fd84144738a09e83a9ed1bdf4d7c3078d0 by=reader:0f5306d0e183 form=interval measure=duplicate-bodies role=reads scope=duplicate/src value=0..0
|
|
28
29
|
bound-lock/1 at=cone:0abeb4d9e38dbbf12bf63c9e20e50b4066f7cae49b2a42a0b93e3ee6ea34aedb by=judge form=alphabet measure=status role=writes scope=law/a-fact-is-a-printed-line value=present
|
|
29
30
|
bound-lock/1 at=cone:0abeb4d9e38dbbf12bf63c9e20e50b4066f7cae49b2a42a0b93e3ee6ea34aedb by=judge form=alphabet measure=cone role=writes scope=law/a-fact-is-a-printed-line value=samples/yes/a-fact-is-a-printed-line.json|samples/no/a-fact-is-a-printed-line.json
|
|
30
31
|
bound-lock/1 at=cone:957f15a6bf76172db7ad6fc3ad985d3a2d29d53b0d7f26496278534a6b27eaa5 by=judge form=alphabet measure=status role=writes scope=law/a-refuse-plants value=present
|
|
@@ -35,57 +36,57 @@ bound-lock/1 at=cone:9b1915d477c82eba64f0b9a7928018db772788398ca8a13afd438831417
|
|
|
35
36
|
bound-lock/1 at=cone:9b1915d477c82eba64f0b9a7928018db772788398ca8a13afd438831417ee43a by=judge form=alphabet measure=cone role=writes scope=law/three-verbs value=samples/yes/three-verbs.json|samples/no/three-verbs.json
|
|
36
37
|
bound-lock/1 at=cone:f4bf42894d608f16e39cb757609c9d0a82f50b31749b13599a4fc5ee303fcdf8 by=judge form=alphabet measure=status role=writes scope=law/verify-agrees value=present
|
|
37
38
|
bound-lock/1 at=cone:f4bf42894d608f16e39cb757609c9d0a82f50b31749b13599a4fc5ee303fcdf8 by=judge form=alphabet measure=cone role=writes scope=law/verify-agrees value=samples/yes/verify-agrees.json|samples/no/verify-agrees.json
|
|
38
|
-
bound-lock/1 at=cone:
|
|
39
|
-
bound-lock/1 at=cone:
|
|
40
|
-
bound-lock/1 at=cone:
|
|
41
|
-
bound-lock/1 at=cone:
|
|
39
|
+
bound-lock/1 at=cone:38393cb6f8e1d9c0c7afd2c6faf7a953232e0edbb57f1029e50c0f828ddf4197 by=judge form=alphabet measure=id role=writes scope=view/citation-file value=cff
|
|
40
|
+
bound-lock/1 at=cone:38393cb6f8e1d9c0c7afd2c6faf7a953232e0edbb57f1029e50c0f828ddf4197 by=judge form=alphabet measure=cone role=writes scope=view/citation-file value=CITATION.cff
|
|
41
|
+
bound-lock/1 at=cone:2207bfb7237fd7dbf4e4fb11f070cf4ec126ae7db52044504795b64eccfc9e0c by=judge form=alphabet measure=id role=writes scope=view/explanation value=idea|what-holds|refuses
|
|
42
|
+
bound-lock/1 at=cone:2207bfb7237fd7dbf4e4fb11f070cf4ec126ae7db52044504795b64eccfc9e0c by=judge form=alphabet measure=cone role=writes scope=view/explanation value=docs/why.md
|
|
42
43
|
bound-lock/1 at=cone:5af7aa019f81d75b150501e03cf4c96cce75f87d47ed0922c1f3179c14e5e67d by=judge form=alphabet measure=id role=writes scope=view/guide value=seq
|
|
43
44
|
bound-lock/1 at=cone:5af7aa019f81d75b150501e03cf4c96cce75f87d47ed0922c1f3179c14e5e67d by=judge form=alphabet measure=cone role=writes scope=view/guide value=docs/guide.md
|
|
44
|
-
bound-lock/1 at=cone:
|
|
45
|
-
bound-lock/1 at=cone:
|
|
46
|
-
bound-lock/1 at=cone:
|
|
47
|
-
bound-lock/1 at=cone:
|
|
45
|
+
bound-lock/1 at=cone:0216dcddc9cc5cf08e750f1e10cbe17ad3408e9ee4b6aa3185ded9b880d1f9b0 by=judge form=alphabet measure=id role=writes scope=view/manifest-render value=text@3
|
|
46
|
+
bound-lock/1 at=cone:0216dcddc9cc5cf08e750f1e10cbe17ad3408e9ee4b6aa3185ded9b880d1f9b0 by=judge form=alphabet measure=cone role=writes scope=view/manifest-render value=package.json
|
|
47
|
+
bound-lock/1 at=cone:fa1469604beca94fbe698011c94bf0fedcdea56ce9b851809d8d99d13bc648a2 by=judge form=alphabet measure=id role=writes scope=view/readme-historical value=hero@3|commands@3|idea@3
|
|
48
|
+
bound-lock/1 at=cone:fa1469604beca94fbe698011c94bf0fedcdea56ce9b851809d8d99d13bc648a2 by=judge form=alphabet measure=cone role=writes scope=view/readme-historical value=README.md
|
|
48
49
|
bound-lock/1 at=cone:73e5f49f2c68ae68297168be62142f4c0310322535b892de92e7b5b71cbbd798 by=judge form=alphabet measure=id role=writes scope=view/reference value=term|set|ref
|
|
49
50
|
bound-lock/1 at=cone:73e5f49f2c68ae68297168be62142f4c0310322535b892de92e7b5b71cbbd798 by=judge form=alphabet measure=cone role=writes scope=view/reference value=docs/reference.md
|
|
50
51
|
bound-lock/1 at=cone:83acd4200e0d85822ec7758f1425c8ece7e8ca0523660aa6bf2f17484642a79e by=judge form=alphabet measure=id role=writes scope=view/release-workflow-render value=text@3
|
|
51
52
|
bound-lock/1 at=cone:83acd4200e0d85822ec7758f1425c8ece7e8ca0523660aa6bf2f17484642a79e by=judge form=alphabet measure=cone role=writes scope=view/release-workflow-render value=.github/workflows/release.yml
|
|
52
53
|
bound-lock/1 at=cone:fd85558d34bab73004bfbaef02834284a34899a49d582069417ffb79be54e0a6 by=judge form=alphabet measure=id role=writes scope=view/usage-profile value=text@3
|
|
53
54
|
bound-lock/1 at=cone:fd85558d34bab73004bfbaef02834284a34899a49d582069417ffb79be54e0a6 by=judge form=alphabet measure=cone role=writes scope=view/usage-profile value=docs/usage.md
|
|
54
|
-
bound-lock/1 at=place:sha256:
|
|
55
|
-
|
|
56
|
-
bound-lock/1 at=place:sha256:
|
|
57
|
-
|
|
58
|
-
bound-lock/1 at=place:sha256:
|
|
59
|
-
bound-lock/1 at=place:sha256:
|
|
60
|
-
bound-lock/1 at=place:sha256:
|
|
61
|
-
bound-lock/1 at=place:sha256:
|
|
62
|
-
bound-lock/1 at=place:sha256:
|
|
63
|
-
bound-lock/1 at=place:sha256:
|
|
64
|
-
bound-lock/1 at=place:sha256:
|
|
65
|
-
bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/cli value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
|
|
66
|
-
bound-lock/1 at=place:sha256:f4491a96c7514fdaf076d7b428226db7c2004037054319d8db76826a97244deb by=bound form=interval measure=count role=writes scope=receipts/door value=1..1
|
|
67
|
-
bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/door value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
|
|
68
|
-
bound-lock/1 at=place:sha256:3b2a62bab9f7087a5c6f9d65d2a6c8a3ea09bc0a47596a07e66cec075abc1fac by=bound form=interval measure=count role=writes scope=receipts/duplicate value=1..1
|
|
69
|
-
bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/duplicate value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
|
|
70
|
-
bound-lock/1 at=place:sha256:e72a72f0c01f5a819e1d8e5545b7b98ed98203df92bb79553d90828d1006fcb8 by=bound form=interval measure=count role=writes scope=receipts/idempotent value=1..1
|
|
71
|
-
bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/idempotent value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
|
|
72
|
-
bound-lock/1 at=place:sha256:92a8a2d334a4d8e1b93b4535f49362faed71c2b836a68012f49c4c0f56fa8724 by=bound form=interval measure=count role=writes scope=receipts/instrument value=1..1
|
|
73
|
-
bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/instrument value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
|
|
55
|
+
bound-lock/1 at=place:sha256:2b9e2b300e99a774144996b034812d2f6630c230c70ad0cf39c2385b435cde31 by=bound form=alphabet measure=digest role=writes scope=instrument/implementation value=sha256:2b9e2b300e99a774144996b034812d2f6630c230c70ad0cf39c2385b435cde31
|
|
56
|
+
bound-lock/1 at=place:sha256:5a227f054030a40455a7b540aa60c3839f1cee0532a285dd60e788c78acd90f5 by=bound form=alphabet measure=digest role=writes scope=receipts value=sha256:86d74168cbb84387ed9c513e2b371dd3d51f8ac071b23dcf9f9fe7f14bb527be
|
|
57
|
+
bound-lock/1 at=place:sha256:1708944f6cdec2b588a774a8428c4593584a89e1950c6d229a64e078a82a93fc by=bound form=interval measure=count role=writes scope=receipts/ value=2..2
|
|
58
|
+
bound-lock/1 at=place:sha256:b640331baae474caedf5407440fde660bd5c636f60dc5240e0881835f0fcef7d by=bound form=interval measure=count role=writes scope=receipts/. value=1..1
|
|
59
|
+
bound-lock/1 at=place:sha256:f6727d0688d4d99d601e8fb543996618bb51310d2bb172895261501714c95584 by=bound form=interval measure=count role=writes scope=receipts/admission value=1..1
|
|
60
|
+
bound-lock/1 at=place:sha256:1a7d0d8e652f008f5d8e25b53f78755caf703bffdd80ab36a19838596d888590 by=bound form=interval measure=count role=writes scope=receipts/capture value=2..2
|
|
61
|
+
bound-lock/1 at=place:sha256:5b2bbc14f2d71c5b156a2900469191077ba537f6e8dc412293c7c8008752d7fb by=bound form=interval measure=count role=writes scope=receipts/cli value=4..4
|
|
62
|
+
bound-lock/1 at=place:sha256:1ba3aadc3fc9eb4c7bc601c7f5467c41929d79466313e908999d56a1cf50b08d by=bound form=interval measure=count role=writes scope=receipts/door value=1..1
|
|
63
|
+
bound-lock/1 at=place:sha256:ff7c3f1ad83d53e399d24f2638c01c15c895b76b1bf26d06c132f728b5ae56f5 by=bound form=interval measure=count role=writes scope=receipts/duplicate value=1..1
|
|
64
|
+
bound-lock/1 at=place:sha256:f2068c6936f87554740100696c1c533f1e109b1ec94e2c17287e08183e3f4ed4 by=bound form=interval measure=count role=writes scope=receipts/idempotent value=1..1
|
|
65
|
+
bound-lock/1 at=place:sha256:3b9e8da7aa8f1a10a4f01de3236c6ee36d02fde650e954440ac4a59f187e9884 by=bound form=interval measure=count role=writes scope=receipts/instrument value=1..1
|
|
74
66
|
bound-lock/1 at=place:sha256:24023fde10bc3f5ad0c60d2b04cca3907b111a5431c6d6f0fc1171a9c3a67c8c by=bound form=interval measure=count role=writes scope=receipts/law value=10..10
|
|
75
|
-
bound-lock/1 at=place:sha256:
|
|
76
|
-
bound-lock/1 at=place:sha256:
|
|
77
|
-
bound-lock/1 at=place:sha256:
|
|
78
|
-
bound-lock/1 at=place:sha256:
|
|
79
|
-
bound-lock/1 at=place:sha256:
|
|
80
|
-
bound-lock/1 at=place:sha256:
|
|
81
|
-
bound-lock/1 at=place:sha256:
|
|
82
|
-
bound-lock/1 at=place:sha256:
|
|
83
|
-
bound-lock/1 at=place:sha256:
|
|
84
|
-
bound-lock/1 at=place:sha256:
|
|
85
|
-
bound-lock/1 at=place:sha256:
|
|
86
|
-
bound-lock/1 at=place:sha256:
|
|
87
|
-
bound-lock/1 at=place:sha256:
|
|
88
|
-
bound-lock/1 at=place:sha256:
|
|
89
|
-
bound-lock/1 at=place:sha256:
|
|
90
|
-
bound-lock/1 at=place:sha256:
|
|
91
|
-
bound-lock/1 at=place:sha256:
|
|
67
|
+
bound-lock/1 at=place:sha256:95911622e93010cc4662b2daf80d1b412f49968d9409fd3357b9c5f9502d552b by=bound form=interval measure=count role=writes scope=receipts/literal value=4..4
|
|
68
|
+
bound-lock/1 at=place:sha256:dafbe0ac24795e387c523cdd1b5edfaaaa33bd55e34ee99ed51f12edc1b5c6ad by=bound form=interval measure=count role=writes scope=receipts/nothing-deleted value=1..1
|
|
69
|
+
bound-lock/1 at=place:sha256:ed596ff6a2b891871961af526dda7bbfd05e2a6aefc181d10a4ba3a2923007e2 by=bound form=interval measure=count role=writes scope=receipts/offline value=1..1
|
|
70
|
+
bound-lock/1 at=place:sha256:281c92fcd639c99b5cf2fbfde6def0825f5ea5b5e64a4810910ef25dd2fb74e7 by=bound form=interval measure=count role=writes scope=receipts/one-writer value=1..1
|
|
71
|
+
bound-lock/1 at=place:sha256:33de48fd74213538fb6c43cadb9a264ce08f58159d51e62b1b333c5b592e994e by=bound form=interval measure=count role=writes scope=receipts/resolve-by-url value=1..1
|
|
72
|
+
bound-lock/1 at=place:sha256:ded656218830b8bc739d6138f03c6cb586f3d24bfd44e4f9bf830a0abd95ccf9 by=bound form=interval measure=count role=writes scope=receipts/source value=5..5
|
|
73
|
+
bound-lock/1 at=place:sha256:5e4c70661ea67c16c9437b6b189e14d351c12e2c95432b0422b7f62abd014161 by=bound form=interval measure=count role=writes scope=receipts/the-stranger value=1..1
|
|
74
|
+
bound-lock/1 at=place:sha256:fa57d0e94c4564179cd375ca21dc974936fd08ec7b0e21d827bf8bce767b2729 by=bound form=interval measure=count role=writes scope=receipts/view value=16..16
|
|
75
|
+
bound-lock/1 at=place:sha256:0a01469a1b91d0c00123aeaaf6bfd35ffae8cba64dc06d7cc79029332a105ed8 by=bound form=alphabet measure=bytes role=writes scope=receipts/ value=sha256:0a01469a1b91d0c00123aeaaf6bfd35ffae8cba64dc06d7cc79029332a105ed8
|
|
76
|
+
bound-lock/1 at=place:sha256:0a01469a1b91d0c00123aeaaf6bfd35ffae8cba64dc06d7cc79029332a105ed8 by=bound form=alphabet measure=bytes role=writes scope=receipts/. value=sha256:0a01469a1b91d0c00123aeaaf6bfd35ffae8cba64dc06d7cc79029332a105ed8
|
|
77
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/admission value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
78
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/capture value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
79
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/cli value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
80
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/door value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
81
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/duplicate value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
82
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/idempotent value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
83
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/instrument value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
84
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/law value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
85
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/literal value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
86
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/nothing-deleted value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
87
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/offline value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
88
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/one-writer value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
89
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/resolve-by-url value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
90
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/source value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
91
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/the-stranger value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|
|
92
|
+
bound-lock/1 at=place:sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d by=bound form=alphabet measure=bytes role=writes scope=receipts/view value=sha256:b9206465188ba307a75919bbdbf6f69f2f69e0b8508ff424600810d1a16da85d
|