@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.
Files changed (52) hide show
  1. package/README.md +5 -5
  2. package/TARGET.bound +27 -20
  3. package/dist/cli/accept.js +112 -71
  4. package/dist/cli/owner.js +3 -0
  5. package/dist/cli/verb.js +54 -12
  6. package/dist/fold/configures.js +3 -1
  7. package/dist/fold/digests.js +7 -1
  8. package/dist/fold/kept.js +5 -1
  9. package/dist/fold/observed.d.ts +1 -0
  10. package/dist/fold/observed.js +30 -11
  11. package/dist/fold/readers.d.ts +2 -0
  12. package/dist/fold/readers.js +3 -3
  13. package/dist/fold/region-declarations.d.ts +2 -0
  14. package/dist/fold/region-declarations.js +13 -0
  15. package/dist/fold/resolved.js +9 -1
  16. package/dist/fold/second.js +3 -0
  17. package/dist/host/adapters/transport/http.d.ts +5 -0
  18. package/dist/host/adapters/transport/http.js +28 -0
  19. package/dist/host/capsule-process.d.ts +2 -1
  20. package/dist/host/capsule-process.js +4 -3
  21. package/dist/host/capsule.d.ts +1 -0
  22. package/dist/host/capsule.js +11 -7
  23. package/dist/host/cell-receipts.js +1 -1
  24. package/dist/host/content-needed.d.ts +5 -0
  25. package/dist/host/content-needed.js +8 -0
  26. package/dist/host/content-store.d.ts +8 -0
  27. package/dist/host/content-store.js +31 -0
  28. package/dist/host/lifetime.d.ts +1 -0
  29. package/dist/host/lifetime.js +40 -0
  30. package/dist/host/objects.js +1 -1
  31. package/dist/host/ports/transport.d.ts +1 -0
  32. package/dist/host/ports/transport.js +48 -0
  33. package/dist/host/process-lifetime.d.ts +11 -0
  34. package/dist/host/process-lifetime.js +12 -0
  35. package/dist/host/read-only.d.ts +3 -0
  36. package/dist/host/read-only.js +9 -0
  37. package/dist/host/release.js +2 -1
  38. package/dist/host/selected-capsules.js +38 -12
  39. package/dist/host/selected-topos.d.ts +5 -5
  40. package/dist/host/selected-topos.js +9 -36
  41. package/dist/host/source-content.d.ts +5 -3
  42. package/dist/host/source-content.js +36 -30
  43. package/dist/land/leaving.js +4 -0
  44. package/dist/land/ledger.js +3 -0
  45. package/dist/observe/identity.d.ts +2 -0
  46. package/dist/observe/identity.js +3 -3
  47. package/dist/observe/regions.js +2 -2
  48. package/dist/observe/run.d.ts +2 -1
  49. package/dist/observe/run.js +10 -4
  50. package/dist/render/receipts.js +2 -1
  51. package/package.json +2 -2
  52. 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[], materializeInstrument?: boolean): Promise<void>;
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 { blobAt, landBlob } from "../land/ledger.js";
5
- import { observeFile } from "../observe/files.js";
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(bindings.filter(f => f.scope?.startsWith('dep/') && f.role === 'reads').map(f => f.value ?? '')))
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, materializeInstrument = false) {
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/') || (fields.scope?.startsWith('dep/') && (fields.role !== 'reads' || (materializeInstrument && !!fields.needs)));
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 => observeFile(blobAt(ownStore(), digest)),
94
- write: (digest, bytes) => { landBlob(ownStore(), digest, bytes); },
95
- fetch: async (url) => {
96
- const response = await fetch(url, { signal: AbortSignal.timeout(30000) });
97
- if (!response.ok)
98
- throw Error(`HTTP ${response.status}`);
99
- return new Uint8Array(await response.arrayBuffer());
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
+ }
@@ -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');
@@ -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[];
@@ -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;
@@ -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 measures = ['lines', 'receipts', 'reads', wordOn(lock, 'region-coordinate', lock), wordOn(lock, 'region-leaf', lock)];
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));
@@ -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 {};
@@ -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 ran = spawnSync(process.execPath, [...reader.flags, hostOf(), reader.path, module], { cwd: root, input: JSON.stringify(requests), encoding: 'utf8', maxBuffer: 1 << 28 });
27
- if (ran.error)
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) => (answer.claims ?? []));
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
  }
@@ -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
- const observed = [...receiptsOf(fold), ...(coordinate && implementation ? [canonical({ scope: coordinate, role: 'writes', form: 'alphabet', measure: 'digest', value: implementation, at: `place:${implementation}`, by: 'bound' })] : [])];
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.2",
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.8"
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:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb by=reader:bbff6b8fc616 form=alphabet measure=observed role=writes scope= value=1e59e9487e0c7e29
2
- bound-lock/1 at=place:sha256:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb by=reader:c448c64e0bac form=alphabet measure=observed role=writes scope= value=1e59e9487e0c7e29
3
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=alphabet measure=observed role=writes scope= value=82fe2a1cdfef232a
4
- bound-lock/1 at=place:sha256:a01b65b584b8fca7fc21b082bb5382010eb7e39088e93eed9b62f848d1efe179 by=reader:2c507e7fe764 form=alphabet measure=observed role=writes scope=./ value=a01b65b584b8fca7
5
- bound-lock/1 at=place:sha256:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb by=reader:bbff6b8fc616 form=alphabet measure=text role=reads scope=capture/help value="admission-checkout: verbs fold land sign · flags --as --check --key --key-file --signer --place\n"
6
- bound-lock/1 at=place:sha256:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb 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:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb 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:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb 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:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb 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:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb by=reader:c448c64e0bac form=interval measure=cli-flags role=reads scope=cli/flags value=6..6
11
- bound-lock/1 at=place:sha256:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb by=reader:c448c64e0bac form=interval measure=count role=reads scope=idempotent value=0..0
12
- bound-lock/1 at=place:sha256:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb by=reader:c448c64e0bac form=interval measure=count role=reads scope=nothing-deleted value=0..0
13
- bound-lock/1 at=place:sha256:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb by=reader:c448c64e0bac form=interval measure=count role=reads scope=offline value=0..0
14
- bound-lock/1 at=place:sha256:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb by=reader:c448c64e0bac form=interval measure=count role=reads scope=one-writer value=0..0
15
- bound-lock/1 at=place:sha256:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb by=reader:c448c64e0bac form=interval measure=count role=reads scope=resolve-by-url value=0..0
16
- bound-lock/1 at=place:sha256:1e59e9487e0c7e29c11b4dff71aaa2ff5e2a331860f08cae8d834152a3177bfb by=reader:c448c64e0bac form=interval measure=count role=reads scope=the-stranger value=0..0
17
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/duplicate/src value=none
18
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/host value=none
19
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/key value=none
20
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/org value=none
21
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/path value=none
22
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/host value=0..0
23
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/key value=0..0
24
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/org value=0..0
25
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/path value=0..0
26
- bound-lock/1 at=place:sha256:82fe2a1cdfef232a395e34381b10b62de9ae82fdb81c440946f6e844933d0f05 by=reader:0f5306d0e183 form=interval measure=duplicate-bodies role=reads scope=duplicate/src value=0..0
27
- bound-lock/1 at=place:sha256:a01b65b584b8fca7fc21b082bb5382010eb7e39088e93eed9b62f848d1efe179 by=reader:2c507e7fe764 form=interval measure=unreceipted role=reads scope=door/unreceipted value=0..0
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:4292d62653bf8b34ace44df7d63dd12682cce5eaea39c8512f48e147dca718e1 by=judge form=alphabet measure=id role=writes scope=view/citation-file value=cff
39
- bound-lock/1 at=cone:4292d62653bf8b34ace44df7d63dd12682cce5eaea39c8512f48e147dca718e1 by=judge form=alphabet measure=cone role=writes scope=view/citation-file value=CITATION.cff
40
- bound-lock/1 at=cone:7a5a827c8ab936737b9da72412171bb04548dea9fdc94a746a5a5930e2211e8b by=judge form=alphabet measure=id role=writes scope=view/explanation value=idea|what-holds|refuses
41
- bound-lock/1 at=cone:7a5a827c8ab936737b9da72412171bb04548dea9fdc94a746a5a5930e2211e8b by=judge form=alphabet measure=cone role=writes scope=view/explanation value=docs/why.md
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:067095e4453bdfa7289c8b77b509ec31a01ae659269fa58e5ce5bd044bb1f98f by=judge form=alphabet measure=id role=writes scope=view/manifest-render value=text@3
45
- bound-lock/1 at=cone:067095e4453bdfa7289c8b77b509ec31a01ae659269fa58e5ce5bd044bb1f98f by=judge form=alphabet measure=cone role=writes scope=view/manifest-render value=package.json
46
- bound-lock/1 at=cone:5c88adaa88cf2d08504c88d19da3a5d9ca79ab7daca95518d9148e8b999f017f by=judge form=alphabet measure=id role=writes scope=view/readme-historical value=hero@3|commands@3|idea@3
47
- bound-lock/1 at=cone:5c88adaa88cf2d08504c88d19da3a5d9ca79ab7daca95518d9148e8b999f017f by=judge form=alphabet measure=cone role=writes scope=view/readme-historical value=README.md
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:1f51a966c0b5a4436f4794fdb49accc9ccb374be101875a84ce7706c74456585 by=bound form=alphabet measure=digest role=writes scope=instrument/implementation value=sha256:1f51a966c0b5a4436f4794fdb49accc9ccb374be101875a84ce7706c74456585
55
-
56
- bound-lock/1 at=place:sha256:38cffb32270b1fb2d20d20780d4067bab680143e644b45d11d469cd9e6afa09c by=bound form=alphabet measure=digest role=writes scope=receipts value=sha256:00a64627484a759e94ec545eb5a33cd36d014a5c30c6c2e4ac895e9c93dc87a9
57
-
58
- bound-lock/1 at=place:sha256:e4410fae0c1ed17811a8270307e03c0430454d2af3ecfc8f9c6ec3cc9d8c6400 by=bound form=interval measure=count role=writes scope=receipts/ value=2..2
59
- bound-lock/1 at=place:sha256:12cdd83040b43da2dfc289a3ccaa3f0eee25999811e3dd3fc98b4144fb73b86b by=bound form=alphabet measure=bytes role=writes scope=receipts/ value=sha256:12cdd83040b43da2dfc289a3ccaa3f0eee25999811e3dd3fc98b4144fb73b86b
60
- bound-lock/1 at=place:sha256:c139cc42748b2ece6d728ed12df20282e5aca9b6116ecfeed93cac1c6ebaf924 by=bound form=interval measure=count role=writes scope=receipts/. value=1..1
61
- bound-lock/1 at=place:sha256:12cdd83040b43da2dfc289a3ccaa3f0eee25999811e3dd3fc98b4144fb73b86b by=bound form=alphabet measure=bytes role=writes scope=receipts/. value=sha256:12cdd83040b43da2dfc289a3ccaa3f0eee25999811e3dd3fc98b4144fb73b86b
62
- bound-lock/1 at=place:sha256:83ac0ba7618e1c99a643cd3778a3a024e881baa2b6618a05d8b519f18427cad4 by=bound form=interval measure=count role=writes scope=receipts/capture value=2..2
63
- bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/capture value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
64
- bound-lock/1 at=place:sha256:fee29d63168a9e603471291bf2d94220c40d8a4b0c7835dd6be32d4cc3858bbd by=bound form=interval measure=count role=writes scope=receipts/cli value=4..4
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:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/law value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
76
- bound-lock/1 at=place:sha256:1a8833c3e1e9cfa9c89c437605c9a40e1ca1b41de188c918004afdd8008c317a by=bound form=interval measure=count role=writes scope=receipts/literal value=4..4
77
- bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/literal value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
78
- bound-lock/1 at=place:sha256:96e1ec3e4e80102099785e608d7e9d34b387b69dda9c8d8f70bc5ff52f76bb8e by=bound form=interval measure=count role=writes scope=receipts/nothing-deleted value=1..1
79
- bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/nothing-deleted value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
80
- bound-lock/1 at=place:sha256:a42ff6e261f257df1cf68a7d96c992e356818d34d293e7b094c22af2dd064e5d by=bound form=interval measure=count role=writes scope=receipts/offline value=1..1
81
- bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/offline value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
82
- bound-lock/1 at=place:sha256:ba413473f8f9622fce61e80caf4c26ee74e2c8e847cb3c6a510e1d8e535e1ad7 by=bound form=interval measure=count role=writes scope=receipts/one-writer value=1..1
83
- bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/one-writer value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
84
- bound-lock/1 at=place:sha256:a9b844716b2addcea27e2cecdce64fdb87df9e4d94aaf48f4a642ee0b760f1b5 by=bound form=interval measure=count role=writes scope=receipts/resolve-by-url value=1..1
85
- bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/resolve-by-url value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
86
- bound-lock/1 at=place:sha256:0f6af9d527081810070aeb8e5df78e2e5ef56893fff2f995505f24ad845f3686 by=bound form=interval measure=count role=writes scope=receipts/source value=5..5
87
- bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/source value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
88
- bound-lock/1 at=place:sha256:ba39ecd64ab6d52954a2c6509e98825092d6d52c719707dc33599bff85a3bfe3 by=bound form=interval measure=count role=writes scope=receipts/the-stranger value=1..1
89
- bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/the-stranger value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
90
- bound-lock/1 at=place:sha256:94cad2b845d4a89330040bc0d0e062260ecc114b8dc7a092b2b072ab1fa7dcad by=bound form=interval measure=count role=writes scope=receipts/view value=16..16
91
- bound-lock/1 at=place:sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014 by=bound form=alphabet measure=bytes role=writes scope=receipts/view value=sha256:6a61a4c6fcdb2c128638dd568c351d41fa0fbd53ab82c2c021b0e1c992243014
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