@lapxo/bound 0.1.0 → 0.1.1

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.
@@ -8,7 +8,10 @@ import { ownLock, ownStore } from "../observe/runner.js";
8
8
  export async function resolveSelectedContent(lines, port) {
9
9
  const fields = lines.flatMap(line => { const p = parse(line); return p.kind === 'fact' && p.value.fields.value !== 'withdraw' ? [p.value.fields] : []; });
10
10
  const selectionIndex = (scope) => { const match = /(^|\/)uses\//.exec(scope); return match === null ? -1 : match.index + match[1].length; };
11
- const bindings = fields.filter(f => selectionIndex(f.scope ?? '') >= 0 || f.scope?.startsWith('dep/'));
11
+ // A dependency constraint is not a content binding. Historical artifact records
12
+ // use measure=id; explicit digest records still validate even when malformed.
13
+ const bindings = fields.filter(f => selectionIndex(f.scope ?? '') >= 0 ||
14
+ (f.scope?.startsWith('dep/') && (f.measure === 'digest' || /^[a-zA-Z][a-zA-Z0-9-]*:[a-f0-9]+$/.test(f.value ?? ''))));
12
15
  const locations = new Map();
13
16
  for (const binding of bindings) {
14
17
  const scope = binding.scope ?? '';
@@ -1,16 +1,15 @@
1
- type Signed = {
1
+ import type { SigningLot, SignatureRecord } from '../host/ports/signing.ts';
2
+ /** Prepare and verify a whole lot. No key material and no output/admission side effects. */
3
+ export declare function signConsentLot(lines: readonly string[], stamp: {
4
+ readonly epoch?: number;
5
+ readonly by: string;
6
+ readonly algorithm: string;
7
+ }, publicKey: string, admitted: readonly string[], invoke: (lot: SigningLot) => Promise<readonly SignatureRecord[]>): Promise<{
2
8
  readonly kind: 'fact';
3
- readonly line: string;
9
+ readonly lines: readonly string[];
4
10
  } | {
5
11
  readonly kind: 'refuse';
6
12
  readonly why: string;
7
- };
8
- /** A consent line (by=target, no sig) becomes the owner's claim: stamped with its epoch, then signed over the canonical bytes. */
9
- export declare function signConsentLine(line: string, privateKeyPem: string, stamp: {
10
- readonly epoch?: number;
11
- readonly by: string;
12
- readonly algorithm: string;
13
- }): Signed;
13
+ }>;
14
14
  export declare function verifiesOwnerLine(line: string, publicKeyPem: string, admitted: readonly string[]): boolean;
15
15
  export declare function verifiesFields(fields: Readonly<Record<string, string>>, publicKey: string, admitted: readonly string[]): boolean;
16
- export {};
package/dist/land/sign.js CHANGED
@@ -1,21 +1,44 @@
1
1
  import { canonical, parse, parseForSigning, signedBytes, signedFieldsOf } from '@lapxo/topos/wire';
2
- import { signBytes, verifyBytes } from "../host/adapters/keys/ed25519.js";
3
- /** A consent line (by=target, no sig) becomes the owner's claim: stamped with its epoch, then signed over the canonical bytes. */
4
- export function signConsentLine(line, privateKeyPem, stamp) {
2
+ import { verifyBytes } from "../host/adapters/keys/ed25519.js";
3
+ import { SigningFailure } from "../host/ports/signing.js";
4
+ function prepareConsentLine(line, stamp) {
5
5
  const got = parseForSigning(line);
6
6
  if (got.kind !== 'fact')
7
- return { kind: 'refuse', why: `REFUSE·accept not a claim line: ${got.why}` };
7
+ return { kind: 'refuse', why: 'REFUSE·accept not a claim line' };
8
8
  const fields = got.value.fields;
9
9
  const scope = fields['scope'] ?? '?';
10
10
  if (fields['sig'] !== undefined)
11
11
  return { kind: 'refuse', why: `REFUSE·accept ${scope} is already signed` };
12
- if (fields['by'] !== 'target') {
13
- return { kind: 'refuse', why: `REFUSE·accept ${scope} is by=${fields['by'] ?? '∅'}; only by=target lines are signed` };
14
- }
12
+ if (fields['by'] !== 'target')
13
+ return { kind: 'refuse', why: `REFUSE·accept ${scope} must be drafted by=target` };
15
14
  const covered = signedFieldsOf(fields, stamp.by);
16
15
  if (stamp.epoch !== undefined)
17
16
  covered['epoch'] = String(stamp.epoch);
18
- return { kind: 'fact', line: canonical({ ...covered, sig: signBytes(signedBytes(covered), privateKeyPem, stamp.algorithm) }) };
17
+ return { kind: 'fact', fields: covered };
18
+ }
19
+ /** Prepare and verify a whole lot. No key material and no output/admission side effects. */
20
+ export async function signConsentLot(lines, stamp, publicKey, admitted, invoke) {
21
+ const fields = [];
22
+ for (const line of lines) {
23
+ const prepared = prepareConsentLine(line, stamp);
24
+ if (prepared.kind === 'refuse')
25
+ return prepared;
26
+ fields.push(prepared.fields);
27
+ }
28
+ if (!fields.length)
29
+ return { kind: 'refuse', why: `REFUSE·signer ${stamp.by} empty lot` };
30
+ let records;
31
+ try {
32
+ records = await invoke({ bytes: fields.map(f => signedBytes(f)), keyId: stamp.by, algorithm: stamp.algorithm });
33
+ }
34
+ catch (error) {
35
+ return { kind: 'refuse', why: error instanceof SigningFailure ? error.message : `REFUSE·signer ${stamp.by} acquisition failed` };
36
+ }
37
+ if (records.length !== fields.length || records.some((record, i) => record.keyId !== stamp.by
38
+ || !verifyBytes(signedBytes(fields[i]), publicKey, record.signature, admitted))) {
39
+ return { kind: 'refuse', why: `REFUSE·signer ${stamp.by} signature does not verify` };
40
+ }
41
+ return { kind: 'fact', lines: fields.map((f, i) => canonical({ ...f, sig: records[i].signature })) };
19
42
  }
20
43
  export function verifiesOwnerLine(line, publicKeyPem, admitted) {
21
44
  const got = parse(line);
@@ -21,7 +21,8 @@ const moduleAt = fromBlob() ? undefined : fileURLToPath(import.meta.url);
21
21
  const runtimeAt = moduleAt === undefined ? '' : resolve(dirname(moduleAt), '..');
22
22
  const runtimeExtension = moduleAt === undefined ? '' : extname(moduleAt);
23
23
  export const ownRoot = () => (fromBlob() ? join(resolve(dirname(self()), '..', '..', '..'), 'bound') : resolve(runtimeAt, '..'));
24
- export const ownStore = () => join(ownRoot(), '..', EXTENSION);
24
+ export const ownStore = () => existsSync(join(ownRoot(), EXTENSION, 'ledger'))
25
+ ? join(ownRoot(), EXTENSION) : join(ownRoot(), '..', EXTENSION);
25
26
  /** The colocated public artifact is read without an unrelated parent's authority store. */
26
27
  // An act is judged by the instrument it started with, even when that act changes its colocated lock.
27
28
  let instrumentLock;
@@ -30,7 +31,9 @@ export const ownLock = () => {
30
31
  return instrumentLock;
31
32
  const lines = (observeText(join(ownRoot(), LOCK)) ?? '').split('\n').filter(isWire);
32
33
  const published = publicLock(lines);
33
- instrumentLock = published === undefined ? ownLockOf(join(ownRoot(), '..'), basename(ownRoot()), true) : foldClaims(published).standing;
34
+ instrumentLock = published === undefined
35
+ ? dirname(ownStore()) === ownRoot() ? ownLockOf(ownRoot(), '', true) : ownLockOf(join(ownRoot(), '..'), basename(ownRoot()), true)
36
+ : foldClaims(published).standing;
34
37
  return instrumentLock;
35
38
  };
36
39
  export const sourceOf = () => (fromBlob() ? join(ownRoot(), 'src', 'cli', 'verb.ts') : self());
package/docs/usage.md CHANGED
@@ -12,11 +12,11 @@ Start by asking for help and folding the project. If a selected view is unavaila
12
12
 
13
13
  ## Keys and coverage
14
14
 
15
- Use a named key already admitted by the project. The authority contract declares its public key, class and scope coverage. The private key is a matching PKCS8 PEM file outside the repository. Point `--key-file` at that file and `--key` at the admitted identifier.
15
+ Use a named key already admitted by the project. The authority contract declares its public key, class and scope coverage. Signing uses a declared port. The lock names `keys/<who> measure=signer value=<name>`; `signer/timeout` and `signer/response-bytes` bound each invocation. The built-in `file` port reads a matching PKCS8 PEM outside the repository through `--key-file`. For a command port, the host supplies a `BOUND_SIGNERS` registry mapping that admitted name to `{ "kind": "command", "executable": "...", "args": [] }`. A repository declaration cannot authorize a program. `--signer <name>` must match the admitted selection.
16
16
 
17
17
  A new device must have its public key and coverage admitted by an authority that already covers the intended scope. The CLI does not currently certify silent key creation or tap-to-sign. This guide does not substitute a self-authorized fixture key for the team's authority.
18
18
 
19
- For automation, supply the private key through the runner's secret storage to a temporary external file with restricted permissions. Do not print, commit or upload it. A source-control token and a Bound authority key have different purposes. Key rotation and revocation are changes to the admitted authority contract, not edits that erase prior signatures.
19
+ For automation through the file port, supply the private key through the runner's secret storage to a temporary external file with restricted permissions. A command signer receives the lot once as canonical signed bytes, one line per record in order. It returns one canonical wire response per record, containing `by` and `sig`, in that same order. Bound verifies the entire reply against the admitted public key before any admission. Timeout, nonzero exit, missing or invalid replies refuse the whole lot; raw signer output is not logged. Hosts can keep private keys outside Bound through this port. Key generation, storage and rotation belong to the host. Do not print, commit or upload it. A source-control token and a Bound authority key have different purposes. Key rotation and revocation are changes to the admitted authority contract, not edits that erase prior signatures.
20
20
 
21
21
  ## Proposal → signature → admission → reading
22
22
 
@@ -42,7 +42,7 @@ receipts.bound is native fold output. Do not write it by hand, use JSON from a t
42
42
 
43
43
  REFUSE·wire means the current grammar does not admit the record. REFUSE·pin/release means named authentic content or its closure is unavailable or does not match. REFUSE·view means the requested view cannot be rendered under its contract. Authority refusal means the signer is not covered. Keep the line and the failed exit status; follow an explicit fix without changing the named digest or dropping a conflicting statement.
44
44
 
45
- release/blocks is policy read by the fold. The existing policy is incomplete because it has no admitted category links. An incomplete policy is not READY and is not permission to fabricate selectors.
45
+ release/blocks is policy read by the fold. Its admitted category links select existing obligations. The fold prints each missing reading or crossed ceiling as BLOCK; a blocked or incomplete policy is not READY. Read the captured verdict for the exact candidate instead of inferring acceptance from a successful render.
46
46
 
47
47
  ## Repository and PR review
48
48
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lapxo/bound",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
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.7"
35
+ "@lapxo/topos": "0.1.8"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/node": "^20.0.0",
@@ -44,5 +44,21 @@
44
44
  },
45
45
  "bin": {
46
46
  "bound": "./dist/cli/verb.js"
47
- }
47
+ },
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "git+https://github.com/Lapxo/bound.git"
51
+ },
52
+ "homepage": "https://github.com/Lapxo/bound#readme",
53
+ "bugs": {
54
+ "url": "https://github.com/Lapxo/bound/issues"
55
+ },
56
+ "keywords": [
57
+ "cli",
58
+ "content-addressed",
59
+ "provenance",
60
+ "receipts",
61
+ "constraints",
62
+ "reproducible"
63
+ ]
48
64
  }
package/receipts.bound CHANGED
@@ -1,59 +1,92 @@
1
- bound-lock/1 at=place:sha256:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 by=reader:bbff6b8fc616 form=alphabet measure=observed role=writes scope=./ value=5b992d51db7b5a0f
2
- bound-lock/1 at=place:sha256:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 by=reader:c448c64e0bac form=alphabet measure=observed role=writes scope=./ value=5b992d51db7b5a0f
3
- bound-lock/1 at=place:sha256:98c2c50b1adf553235dabd55a808b78518dc0d1465c7e0fdbabdc69d73bd56c1 by=reader:2c507e7fe764 form=alphabet measure=observed role=writes scope=./ value=98c2c50b1adf5532
4
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=alphabet measure=observed role=writes scope=./ value=f1e4c278d0e13d05
5
- bound-lock/1 at=place:sha256:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 by=reader:bbff6b8fc616 form=alphabet measure=text role=reads scope=capture/help value="bound: verbs fold land sign · flags --as --check --key --key-file --out --place\n"
6
- bound-lock/1 at=place:sha256:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 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:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 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:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 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:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 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:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 by=reader:c448c64e0bac form=interval measure=cli-flags role=reads scope=cli/flags value=6..6
11
- bound-lock/1 at=place:sha256:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 by=reader:c448c64e0bac form=interval measure=count role=reads scope=idempotent value=0..0
12
- bound-lock/1 at=place:sha256:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 by=reader:c448c64e0bac form=interval measure=count role=reads scope=nothing-deleted value=0..0
13
- bound-lock/1 at=place:sha256:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 by=reader:c448c64e0bac form=interval measure=count role=reads scope=offline value=0..0
14
- bound-lock/1 at=place:sha256:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 by=reader:c448c64e0bac form=interval measure=count role=reads scope=one-writer value=0..0
15
- bound-lock/1 at=place:sha256:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 by=reader:c448c64e0bac form=interval measure=count role=reads scope=resolve-by-url value=0..0
16
- bound-lock/1 at=place:sha256:5b992d51db7b5a0fa1109ad3286a346ad024e31fa5f5aa67819698db86e06e34 by=reader:c448c64e0bac form=interval measure=count role=reads scope=the-stranger value=0..0
17
- bound-lock/1 at=place:sha256:98c2c50b1adf553235dabd55a808b78518dc0d1465c7e0fdbabdc69d73bd56c1 by=reader:2c507e7fe764 form=interval measure=unreceipted role=reads scope=door/unreceipted value=0..0
18
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/duplicate/src value=none
19
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/host value=none
20
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/key value=none
21
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/org value=none
22
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/path value=none
23
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/host value=0..0
24
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/key value=0..0
25
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/org value=0..0
26
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/path value=0..0
27
- bound-lock/1 at=place:sha256:f1e4c278d0e13d0524a44579172a98d05afa08a7aa3bc86e39b7b254ff1cd35d by=reader:0f5306d0e183 form=interval measure=duplicate-bodies role=reads scope=duplicate/src value=0..0
28
- bound-lock/1 at=place:sha256:c79ca8df7075ce8184e5c142b8736c3d8d71206340f2fe7256c28f47f5b2f5a2 by=bound form=alphabet measure=digest role=writes scope=instrument/implementation value=sha256:c79ca8df7075ce8184e5c142b8736c3d8d71206340f2fe7256c28f47f5b2f5a2
1
+ bound-lock/1 at=place:sha256:7c1117301f0b1ea3623a7e6ee08299c42d99d17337d90e0c24738cd2d4743700 by=reader:2c507e7fe764 form=alphabet measure=observed role=writes scope=./ value=7c1117301f0b1ea3
2
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=alphabet measure=observed role=writes scope= value=bc7f74f65fd8c012
3
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:bbff6b8fc616 form=alphabet measure=observed role=writes scope= value=cf63a02f966dd484
4
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=alphabet measure=observed role=writes scope= value=cf63a02f966dd484
5
+ bound-lock/1 at=place:sha256:7c1117301f0b1ea3623a7e6ee08299c42d99d17337d90e0c24738cd2d4743700 by=reader:2c507e7fe764 form=interval measure=unreceipted role=reads scope=door/unreceipted value=0..0
6
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/duplicate/src value=none
7
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/host value=none
8
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/key value=none
9
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/org value=none
10
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=alphabet measure=id role=reads scope=source/locations/literal/path value=none
11
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/host value=0..0
12
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/key value=0..0
13
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/org value=0..0
14
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=interval measure=count role=reads scope=literal/path value=0..0
15
+ bound-lock/1 at=place:sha256:bc7f74f65fd8c012cf50082e552a00ad775dd697ca35ddbf7b0b7f4ef5247c78 by=reader:0f5306d0e183 form=interval measure=duplicate-bodies role=reads scope=duplicate/src value=0..0
16
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:bbff6b8fc616 form=alphabet measure=text role=reads scope=capture/help value="clean-checkout: verbs fold land sign · flags --as --check --key --key-file --signer --place\n"
17
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 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"
18
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=interval measure=cli-exit-closed role=reads scope=cli/exit/closed value=0..0
19
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=interval measure=cli-exit-refuse role=reads scope=cli/exit/refuse value=1..1
20
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=interval measure=cli-exit-usage role=reads scope=cli/exit/usage value=2..2
21
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=interval measure=cli-flags role=reads scope=cli/flags value=6..6
22
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=interval measure=count role=reads scope=idempotent value=0..0
23
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=interval measure=count role=reads scope=nothing-deleted value=0..0
24
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=interval measure=count role=reads scope=offline value=0..0
25
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=interval measure=count role=reads scope=one-writer value=0..0
26
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=interval measure=count role=reads scope=resolve-by-url value=0..0
27
+ bound-lock/1 at=place:sha256:cf63a02f966dd4844eedeb6209ba969e84b83c9921e55901105e81460b352bf7 by=reader:c448c64e0bac form=interval measure=count role=reads scope=the-stranger value=0..0
28
+ bound-lock/1 at=cone:4292d62653bf8b34ace44df7d63dd12682cce5eaea39c8512f48e147dca718e1 by=judge form=alphabet measure=id role=writes scope=view/citation-file value=cff
29
+ bound-lock/1 at=cone:4292d62653bf8b34ace44df7d63dd12682cce5eaea39c8512f48e147dca718e1 by=judge form=alphabet measure=cone role=writes scope=view/citation-file value=CITATION.cff
30
+ bound-lock/1 at=cone:ec781d88336155facc27fe7b493d2ed01688534446d44f400037a0f7385c9031 by=judge form=alphabet measure=id role=writes scope=view/explanation value=idea|what-holds|refuses
31
+ bound-lock/1 at=cone:ec781d88336155facc27fe7b493d2ed01688534446d44f400037a0f7385c9031 by=judge form=alphabet measure=cone role=writes scope=view/explanation value=docs/why.md
32
+ bound-lock/1 at=cone:d6a0e68127376ef71fe6c7b646b31765611cd14e0a65aa93f21908e4596cb80f by=judge form=alphabet measure=id role=writes scope=view/guide value=seq
33
+ bound-lock/1 at=cone:d6a0e68127376ef71fe6c7b646b31765611cd14e0a65aa93f21908e4596cb80f by=judge form=alphabet measure=cone role=writes scope=view/guide value=docs/guide.md
34
+ bound-lock/1 at=cone:067095e4453bdfa7289c8b77b509ec31a01ae659269fa58e5ce5bd044bb1f98f by=judge form=alphabet measure=id role=writes scope=view/manifest-render value=text@3
35
+ bound-lock/1 at=cone:067095e4453bdfa7289c8b77b509ec31a01ae659269fa58e5ce5bd044bb1f98f by=judge form=alphabet measure=cone role=writes scope=view/manifest-render value=package.json
36
+ 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|open@3
37
+ bound-lock/1 at=cone:5c88adaa88cf2d08504c88d19da3a5d9ca79ab7daca95518d9148e8b999f017f by=judge form=alphabet measure=cone role=writes scope=view/readme-historical value=README.md
38
+ bound-lock/1 at=cone:03b387412c2548f73e11625dd659bc326f28bbdd17528ce42986fb167ac39f18 by=judge form=alphabet measure=id role=writes scope=view/reference value=term|set|ref
39
+ bound-lock/1 at=cone:03b387412c2548f73e11625dd659bc326f28bbdd17528ce42986fb167ac39f18 by=judge form=alphabet measure=cone role=writes scope=view/reference value=docs/reference.md
40
+ bound-lock/1 at=cone:83acd4200e0d85822ec7758f1425c8ece7e8ca0523660aa6bf2f17484642a79e by=judge form=alphabet measure=id role=writes scope=view/release-workflow-render value=text@3
41
+ bound-lock/1 at=cone:83acd4200e0d85822ec7758f1425c8ece7e8ca0523660aa6bf2f17484642a79e by=judge form=alphabet measure=cone role=writes scope=view/release-workflow-render value=.github/workflows/release.yml
42
+ bound-lock/1 at=cone:fd85558d34bab73004bfbaef02834284a34899a49d582069417ffb79be54e0a6 by=judge form=alphabet measure=id role=writes scope=view/usage-profile value=text@3
43
+ bound-lock/1 at=cone:fd85558d34bab73004bfbaef02834284a34899a49d582069417ffb79be54e0a6 by=judge form=alphabet measure=cone role=writes scope=view/usage-profile value=docs/usage.md
44
+ bound-lock/1 at=receipt:sha256:91fb702201feaa066f8b313957a0b48a65a1dab26154cbf38f2dcde06203c3b5 by=judge form=alphabet measure=status role=writes scope=law/a-refuse-plants value=present
45
+ bound-lock/1 at=receipt:sha256:91fb702201feaa066f8b313957a0b48a65a1dab26154cbf38f2dcde06203c3b5 by=judge form=alphabet measure=cone role=writes scope=law/a-refuse-plants value=samples/no/a-refuse-plants.json|samples/yes/a-refuse-plants.json
46
+ bound-lock/1 at=receipt:sha256:c5ff9ee255a2f5d34e1775b867e2de8bedcb8a010618465c466912e0b354c61d by=judge form=alphabet measure=status role=writes scope=law/a-fact-is-a-printed-line value=present
47
+ bound-lock/1 at=receipt:sha256:c5ff9ee255a2f5d34e1775b867e2de8bedcb8a010618465c466912e0b354c61d by=judge form=alphabet measure=cone role=writes scope=law/a-fact-is-a-printed-line value=samples/no/a-fact-is-a-printed-line.json|samples/yes/a-fact-is-a-printed-line.json
48
+ bound-lock/1 at=receipt:sha256:cdc30f156b5742558af939ed554215651f7f0cc5beef88424592973b7abc80f8 by=judge form=alphabet measure=status role=writes scope=law/verify-agrees value=present
49
+ bound-lock/1 at=receipt:sha256:cdc30f156b5742558af939ed554215651f7f0cc5beef88424592973b7abc80f8 by=judge form=alphabet measure=cone role=writes scope=law/verify-agrees value=samples/no/verify-agrees.json|samples/yes/verify-agrees.json
50
+ bound-lock/1 at=receipt:sha256:72109d540c9b48fd2ce4940f149a904bd11bb9f6ddf47b5896ef52907b65b17c by=judge form=alphabet measure=status role=writes scope=law/one-lot-one-place value=present
51
+ bound-lock/1 at=receipt:sha256:72109d540c9b48fd2ce4940f149a904bd11bb9f6ddf47b5896ef52907b65b17c by=judge form=alphabet measure=cone role=writes scope=law/one-lot-one-place value=samples/no/one-lot-one-place.json|samples/yes/one-lot-one-place.json
52
+ bound-lock/1 at=receipt:sha256:85dfabb6bfeefb75fa8aefc54ae0af616b94b49018715ac3161eb754c6cdd19a by=judge form=alphabet measure=status role=writes scope=law/three-verbs value=present
53
+ bound-lock/1 at=receipt:sha256:85dfabb6bfeefb75fa8aefc54ae0af616b94b49018715ac3161eb754c6cdd19a by=judge form=alphabet measure=cone role=writes scope=law/three-verbs value=samples/no/three-verbs.json|samples/yes/three-verbs.json
54
+ 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
55
+ bound-lock/1 at=place:sha256:44ae5ba4c91d17e21fa68848a3795fedb40e2ae19a79d8c55960245d1d796c20 by=bound form=alphabet measure=digest role=writes scope=instrument/implementation value=sha256:44ae5ba4c91d17e21fa68848a3795fedb40e2ae19a79d8c55960245d1d796c20
29
56
 
30
- bound-lock/1 at=place:sha256:b69abaed2f8fd7ffe47440d07772cea4deda0aeb15510dc17e82fc3c17c7a2d5 by=bound form=alphabet measure=digest role=writes scope=receipts value=sha256:d49abf8330de0c773dabb9b576bcf3c964092b49bcb3a4e3b63fffe7623a417e
57
+ bound-lock/1 at=place:sha256:644cb7f0a301de95343d23dd9ea66ae91bb3d06f3e5b3b8ee31709fa3b4bc3b2 by=bound form=alphabet measure=digest role=writes scope=receipts value=sha256:04e8e3efff9ff65c7b93d8e5475ac19c1d196701838cf632192d1b1c45a70506
31
58
 
32
- bound-lock/1 at=place:sha256:163a61fad086853b97bc7f015450b77fb0af4ae9def3b017afdf1eb723b0f5ec by=bound form=interval measure=count role=writes scope=receipts/. value=3..3
33
- bound-lock/1 at=place:sha256:3c4f8985bdc904206591218e06d583b809383f72675ca89b12b56c0d2402de16 by=bound form=alphabet measure=bytes role=writes scope=receipts/. value=sha256:3c4f8985bdc904206591218e06d583b809383f72675ca89b12b56c0d2402de16
34
- bound-lock/1 at=place:sha256:a58ed17b0bd1fbc66b0e5d9e944a3962554504ce5662b96aaf2aa57a01702103 by=bound form=interval measure=count role=writes scope=receipts/capture value=2..2
35
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/capture value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
36
- bound-lock/1 at=place:sha256:7a94b284b78622a8266d3184c05bd1ef0ae05875aae91cb82be63d9d4c444837 by=bound form=interval measure=count role=writes scope=receipts/cli value=4..4
37
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/cli value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
38
- bound-lock/1 at=place:sha256:57889257661e4363f6230eabd865d4b20031b010bc744f136f26bfc7f885b7cd by=bound form=interval measure=count role=writes scope=receipts/door value=1..1
39
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/door value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
40
- bound-lock/1 at=place:sha256:92e39ad2038863fddac360186d7ec3a8d8326b681f1f456a69fcbd8365b77f42 by=bound form=interval measure=count role=writes scope=receipts/duplicate value=1..1
41
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/duplicate value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
42
- bound-lock/1 at=place:sha256:92a934dc6b14f970a00946db53d0ccd355bf602d283e994fe0619217d6d6efd7 by=bound form=interval measure=count role=writes scope=receipts/idempotent value=1..1
43
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/idempotent value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
44
- bound-lock/1 at=place:sha256:c6ac0b874a67119868119a991d6f35053815e3090e81f6fd62d823b3c614b903 by=bound form=interval measure=count role=writes scope=receipts/instrument value=1..1
45
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/instrument value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
46
- bound-lock/1 at=place:sha256:8ee3da4501d16a7c00df3f6e75d6961b669404d710be9e3746e327f884c1b4c2 by=bound form=interval measure=count role=writes scope=receipts/literal value=4..4
47
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/literal value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
48
- bound-lock/1 at=place:sha256:68a26b7f40f75c01ddb2d81a0a083118149271a50b60d04f897c352213cdba99 by=bound form=interval measure=count role=writes scope=receipts/nothing-deleted value=1..1
49
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/nothing-deleted value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
50
- bound-lock/1 at=place:sha256:7e9968645901416b748ce76613be1e831235db8a9a42f73cfb4589383c21da35 by=bound form=interval measure=count role=writes scope=receipts/offline value=1..1
51
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/offline value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
52
- bound-lock/1 at=place:sha256:9cbca4de8b7fe581e061672efc9bc4c6dd7ea4858ef29d7ee6a8f797e85f414e by=bound form=interval measure=count role=writes scope=receipts/one-writer value=1..1
53
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/one-writer value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
54
- bound-lock/1 at=place:sha256:75627fbb29f2e386b6e283de4f9dbeff43919f11b040a03ce1e41a4b22f68792 by=bound form=interval measure=count role=writes scope=receipts/resolve-by-url value=1..1
55
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/resolve-by-url value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
56
- bound-lock/1 at=place:sha256:169485811afaaae5f9fe796d0893199fe9ee1a06059b9baa18f0cc0724d7fd35 by=bound form=interval measure=count role=writes scope=receipts/source value=5..5
57
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/source value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
58
- bound-lock/1 at=place:sha256:3a1f97e2c6b1b58959bf30c851c5914dec622e94cf7cb48563bcef650eb04805 by=bound form=interval measure=count role=writes scope=receipts/the-stranger value=1..1
59
- bound-lock/1 at=place:sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e by=bound form=alphabet measure=bytes role=writes scope=receipts/the-stranger value=sha256:754d29b44755bdf832af5d16f8a5edf1f25469ec0baa6c67ab77b88ed7a9857e
59
+ bound-lock/1 at=place:sha256:94030da0d84a6c91e1d171285b10a63072b7a24d71b2e32748157f50ac85149c by=bound form=interval measure=count role=writes scope=receipts/ value=2..2
60
+ bound-lock/1 at=place:sha256:6c9512033a0e5631d7a84bbf999c10c52d9a263ca87021a0a8191a23c9710233 by=bound form=alphabet measure=bytes role=writes scope=receipts/ value=sha256:6c9512033a0e5631d7a84bbf999c10c52d9a263ca87021a0a8191a23c9710233
61
+ bound-lock/1 at=place:sha256:21f2609c4392af50cd456e5d4118d80024ecc7131457973d3df93e1196098996 by=bound form=interval measure=count role=writes scope=receipts/. value=1..1
62
+ bound-lock/1 at=place:sha256:6c9512033a0e5631d7a84bbf999c10c52d9a263ca87021a0a8191a23c9710233 by=bound form=alphabet measure=bytes role=writes scope=receipts/. value=sha256:6c9512033a0e5631d7a84bbf999c10c52d9a263ca87021a0a8191a23c9710233
63
+ bound-lock/1 at=place:sha256:692ab612dedbc110a760f4741848af5f652dfc78ecfde2494068137217424d3e by=bound form=interval measure=count role=writes scope=receipts/capture value=2..2
64
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/capture value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
65
+ bound-lock/1 at=place:sha256:3601c3fe8c72ae7cb44b0c222de1820464072d3381d3f02ae4b73350a691e01f by=bound form=interval measure=count role=writes scope=receipts/cli value=4..4
66
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/cli value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
67
+ bound-lock/1 at=place:sha256:3410c80b2791ed2e384e75ba9fb9e793d0cf803240b5b9c8970b4fb4956e56ff by=bound form=interval measure=count role=writes scope=receipts/door value=1..1
68
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/door value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
69
+ bound-lock/1 at=place:sha256:4b0af40eb9b9262ab6f85f95258b48e0fe7443eec9df2a427c64b37bf7f1baf3 by=bound form=interval measure=count role=writes scope=receipts/duplicate value=1..1
70
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/duplicate value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
71
+ bound-lock/1 at=place:sha256:ed696ec2b59dd5dcd2697ea7c33abc97af6b10337d0db4de808e85a5c3c884c6 by=bound form=interval measure=count role=writes scope=receipts/idempotent value=1..1
72
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/idempotent value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
73
+ bound-lock/1 at=place:sha256:8961733d781d249c0ecef3c9ce3deea5f2f77b5ca608d772457daa311c12b203 by=bound form=interval measure=count role=writes scope=receipts/instrument value=1..1
74
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/instrument value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
75
+ bound-lock/1 at=place:sha256:53563ab619e2f2498bcee50f84f5dfebcaf65f44e3f52673520b4674b672d05b by=bound form=interval measure=count role=writes scope=receipts/law value=10..10
76
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/law value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
77
+ bound-lock/1 at=place:sha256:be88067990999be2a9f64c6a8ce7821a5b059e01a77b623d180a1b4ef3af8ac5 by=bound form=interval measure=count role=writes scope=receipts/literal value=4..4
78
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/literal value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
79
+ bound-lock/1 at=place:sha256:80508745fa8b478d4d534b07c7f31c5a5e020d6f07d086fe240f3cfb31d40c70 by=bound form=interval measure=count role=writes scope=receipts/nothing-deleted value=1..1
80
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/nothing-deleted value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
81
+ bound-lock/1 at=place:sha256:84da879e348a8933984303561ad96c24a1255d3051e964d18f9a8ba62c58b1c3 by=bound form=interval measure=count role=writes scope=receipts/offline value=1..1
82
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/offline value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
83
+ bound-lock/1 at=place:sha256:eb9eeb5aaf72da07c83f7a8d38f410b68ec4f899029ca2910b8e272ea9454ed4 by=bound form=interval measure=count role=writes scope=receipts/one-writer value=1..1
84
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/one-writer value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
85
+ bound-lock/1 at=place:sha256:8776cff2b3219dab669ec849f40df450dfd7cc1ff573e30e280fd9d56db96376 by=bound form=interval measure=count role=writes scope=receipts/resolve-by-url value=1..1
86
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/resolve-by-url value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
87
+ bound-lock/1 at=place:sha256:a05c9b0fc8f3a21066418a26cbc9c9c83bf8dacbe7bedd728a3972a0756f350f by=bound form=interval measure=count role=writes scope=receipts/source value=5..5
88
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/source value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
89
+ bound-lock/1 at=place:sha256:81ab86378ee3ea130a9f05408a4eb983454b20ac4b69aaa39d74ed3670befc7c by=bound form=interval measure=count role=writes scope=receipts/the-stranger value=1..1
90
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/the-stranger value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb
91
+ bound-lock/1 at=place:sha256:f1218964c3874b0fde60dbc28725a87818457e633e9c420c6d13bc56412a015b by=bound form=interval measure=count role=writes scope=receipts/view value=17..17
92
+ bound-lock/1 at=place:sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb by=bound form=alphabet measure=bytes role=writes scope=receipts/view value=sha256:2b57c1d5e39a81f601aa58e1214fb6e20d22d949107aebee509d341e1951a8cb