diff --git a/CITATION.cff b/CITATION.cff index 7a00d38..885db0c 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,7 +2,7 @@ cff-version: 1.2.0 message: "Cite it by the paper it rests on, Two-Sided Constraints on a Valued Lattice." type: software title: "@lapxo/bound" -version: "0.1.5" +version: "0.1.6" authors: - name: "Lapxo" license: "MIT" diff --git a/README.md b/README.md index 751ab9f..7bea79c 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ Declare what must hold. Read what does. Keep the evidence ```bash -npx @lapxo/bound@0.1.5 fold --as help -npx @lapxo/bound@0.1.5 fold +npx @lapxo/bound@0.1.6 fold --as help +npx @lapxo/bound@0.1.6 fold ``` ## How Bound reads a project @@ -18,9 +18,9 @@ Bound reads a project's admitted statements and observations through its selecte From a project with an admitted lock and selected views, inspect its standing, ask for its evidence, then verify the committed outputs: ```sh -npx @lapxo/bound@0.1.5 fold --as lines -npx @lapxo/bound@0.1.5 fold --as receipts@1 -npx @lapxo/bound@0.1.5 fold --check +npx @lapxo/bound@0.1.6 fold --as lines +npx @lapxo/bound@0.1.6 fold --as receipts@1 +npx @lapxo/bound@0.1.6 fold --check ``` Use this flow to review a project change or check a dependency's declared contract. `--check` verifies existing evidence; it does not execute a missing reading. A file fold names readings and explicitly says that it computed no encounters. @@ -66,11 +66,11 @@ lot_dir="$(mktemp -d)" Have the selected view produce a proposal at `$lot_dir/proposal.bound`, or prepare the project's permitted lines there for review. Unsigned proposals use `by=target`, without a preassigned epoch or `sig`. Lots stay outside the repository; the committed bound files are only `TARGET.bound` and `receipts.bound`. ```sh -npx @lapxo/bound@0.1.5 sign "$lot_dir/proposal.bound" \ +npx @lapxo/bound@0.1.6 sign "$lot_dir/proposal.bound" \ --key "$BOUND_KEY_ID" --key-file "$BOUND_KEY_FILE" \ > "$lot_dir/signed.bound" && -npx @lapxo/bound@0.1.5 land "$lot_dir/signed.bound" && -npx @lapxo/bound@0.1.5 fold +npx @lapxo/bound@0.1.6 land "$lot_dir/signed.bound" && +npx @lapxo/bound@0.1.6 fold ``` `sign` assigns the admitted epoch and writes the signed lot to stdout. `land` validates the whole lot before admission. A refusal is evidence to inspect; it is not success. Do not proceed after a failed signature or admission. The key file is a PKCS8 private key matching the admitted public key; do not put it in the lot, source tree, package or CI artifacts. diff --git a/TARGET.bound b/TARGET.bound index b548671..4b80f3b 100644 --- a/TARGET.bound +++ b/TARGET.bound @@ -1,4 +1,4 @@ -bound-lock/1 about="# @lapxo/bound\n\n## Use Bound in a project\n\nFrom a project with an admitted lock and selected views, inspect its standing, ask for its evidence, then verify the committed outputs:\n\n```sh\nnpx @lapxo/bound@0.1.5 fold --as lines\nnpx @lapxo/bound@0.1.5 fold --as receipts@1\nnpx @lapxo/bound@0.1.5 fold --check\n```\n\nUse this flow to review a project change or check a dependency's declared contract. `--check` verifies existing evidence; it does not execute a missing reading. A file fold names readings and explicitly says that it computed no encounters.\n\nIndependent observations are judged through the declared typed cells view. The selected topos supplies the form, origin evidence and bounds. Bound keeps attribution and exact-ID withdrawals through the fold.\n\nA selected form can instead describe a set of artifacts, a delivery interval or another domain's values. The project declares the form, origin evidence and views; Bound does not infer them from filenames or units.\n\n\nDeclare what must hold. Read what does. Keep the evidence.\n\nBound reads a project's admitted statements, checks observations against its requirements, and produces the views its selected topos declares. It keeps conflicting evidence and its origins instead of choosing a convenient answer.\n\n`fold` reads. `sign` signs a proposed lot. `land` admits that lot under the place's authority. These acts work across domains: a selected topos supplies forms, units, readers and views.\n\n## Start in an admitted project\n\n```sh\nnpx @lapxo/bound@0.1.5 fold --as help\nnpx @lapxo/bound@0.1.5 fold\n```\n\nThe help view prints:\n\n```text\nverbs fold land sign\nflags --as --check --key --key-file --signer --place\n```\n\nThe default fold runs the project's declared views. Its authority and selected topos determine what can be admitted, read and shown.\n\nStart with the team's accepted TARGET, admitted authority and selected readers. [Full usage guide](https://github.com/Lapxo/bound/blob/2053bb6d6188f04538114eae6a0add5166944ed3/docs/usage.md).\n\n## A meeting everyone can understand\n\nAna is available from 10 to 14, Luis from 12 to 16, and the room from 10 to 13. Their common availability is 12 to 13. A boss available from 18 to 20 makes the encounter incompatible. Withdrawing that exact reading restores the overlap; Ana, Luis and the room remain.\n\nWith an interval form, those are object operations: observe independent claims, meet them, withdraw by id, and read the state. A narrower compatible meet is not a fork. Folding a file of declarations alone does not calculate meeting availability.\n\nThe same pattern applies to a delivery window, a sensor's allowed range, or an agreed performance budget. The chosen topos determines the units and how evidence is obtained. Bound does not supply a meeting-specific rule.\n\n## See how information holds together\n\n![Cells, travelling bounds and a local join](https://raw.githubusercontent.com/Lapxo/bound/2053bb6d6188f04538114eae6a0add5166944ed3/docs/readme-assets/atlas.svg)\n\nA travelling ceiling on B reaches C and G through their declared rest. A local join widens B alone. D is independent. The figure shows those relations; point size and camera distance do not measure information.\n\n| State | Meaning |\n| --- | --- |\n| REQUIRED | Compatible bounds, fewer than two independent origins. |\n| FREE | Independent origins meet and their encounter fits the bounds. |\n| CONFLICT | Bounds conflict, or eligible claims have no common encounter. |\n| FORBIDDEN | An inhabited encounter does not fit the bounds. |\n\nBounds are checked before origins and claims. A receipt is evidence of a reading, not another origin. Duplicating one does not add freedom.\n\n## Change a project without erasing evidence\n\nWork in the project's directory. Use an existing admitted key identifier and its matching private key stored outside every repository. The admitted key also names its signer with `keys/ measure=signer value=file`; `signer/timeout` and `signer/response-bytes` declare its limits. Your public key and coverage belong to the authority contract; possession of a private key alone does not authorize a scope.\n\n```sh\nexport BOUND_KEY_ID='your-admitted-key-id'\nexport BOUND_KEY_FILE=\"$HOME/Private/keys/your-device.pem\"\nlot_dir=\"$(mktemp -d)\"\n```\n\nHave the selected view produce a proposal at `$lot_dir/proposal.bound`, or prepare the project's permitted lines there for review. Unsigned proposals use `by=target`, without a preassigned epoch or `sig`. Lots stay outside the repository; the committed bound files are only `TARGET.bound` and `receipts.bound`.\n\n```sh\nnpx @lapxo/bound@0.1.5 sign \"$lot_dir/proposal.bound\" \\\n --key \"$BOUND_KEY_ID\" --key-file \"$BOUND_KEY_FILE\" \\\n > \"$lot_dir/signed.bound\" &&\nnpx @lapxo/bound@0.1.5 land \"$lot_dir/signed.bound\" &&\nnpx @lapxo/bound@0.1.5 fold\n```\n\n`sign` assigns the admitted epoch and writes the signed lot to stdout. `land` validates the whole lot before admission. A refusal is evidence to inspect; it is not success. Do not proceed after a failed signature or admission. The key file is a PKCS8 private key matching the admitted public key; do not put it in the lot, source tree, package or CI artifacts.\n\nFor typed object withdrawals, `takes` names the exact claim or mark id. Removing a local join leaves the travelling sign live. For untyped configuration, use the wire's exact withdrawal selectors; do not combine withdrawal and replacement with identical selectors in one lot. Wire alphabet updates supersede by epoch.\n\n[Authority, withdrawals, receipts and PR review](docs/usage.md).\n\n## Read a declared view and reuse its evidence\n\nWhen the project has admitted a cells view:\n\n```sh\nnpx @lapxo/bound@0.1.5 fold --as cells\n```\n\nThe installed interval scene printed this on an unchanged second reading:\n\n```text\nRECEIPTS 4 read · 0 opened · idle · provider 0\n```\n\nNative receipts identify the live semantic inputs, declared rest, selected topos, codecs and selected rendering implementation. They exclude delivery count, display paths and Bound's error wrapper. A local join changes its own cell's receipt. A travelling sign changes dependent cells. Missing or corrupt carried bytes cannot prove reuse.\n\nFor judgement:\n\n```sh\nnpx @lapxo/bound@0.1.5 fold --check\n```\n\nKeep stdout, stderr and the exit status. `--check` is not an install-and-build replacement. A source test passing does not pay an unread ceiling, prove a cold clone, or accept a release.\n\n## Select a topos by what it declares\n\n`sources/` says where a world can be obtained. An admitted `uses/` names the digest of that topos's folded standing: canonical live claims in wire byte order, excluding signature envelopes and host shape. Re-signing the same standing preserves the pin. A changed live form, class, view or offer changes it.\n\n`restsOn` closes artifact bytes separately. A capsule is one offer. Forms, classes and views need no capsule merely to be selected. Runtime and packing do not define standing identity. npm dependency ranges remain package metadata; they are not standing pins.\n\n| Responsibility | Owner |\n| --- | --- |\n| Meet, state, live acts and rest | Obligations |\n| Wire, forms, classes, views and offer contracts | Topos |\n| Admission, folding and evidence | Bound |\n| Domain measurement and representation | Selected topos |\n| Storage, transport and execution | Host |\n\nCell `restsOn` is the object's relation. Directory prefixes and file summaries are host coordinates, not object rest. Wire tokens are protocol constants, not organization, host, path or key literals.\n\n## Repository rules\n\nCommit `TARGET.bound`, `receipts.bound` and the outputs the forge reads. Ignore `.bound/` from the first line of `.gitignore`. Keep proposals, signed lots, keys, ledgers, caches and dependency blobs outside the published tree.\n\nThe lock is the project's own contract and pins. Read a dependency's declarations from its selected standing; do not copy its lines into your lock. README, package metadata and workflows must be renders of admitted declarations. A scan is an observation, not permission to lower a ceiling.\n\nA PR proposes lines and the leaf changes they render. The judge uses the team's accepted contract independently of the proposed revision. Preserve refusals, conflicting origins and unpaid demands. [Repository and contribution rules](https://github.com/Lapxo/bound/blob/2053bb6d6188f04538114eae6a0add5166944ed3/docs/usage.md#repository-and-pr-review).\n\n## An atlas you can question\n\nInformation can share a history without sharing a single presentation. The same admitted cells can support a compact status view, a spatial view of their relations, or a focused reading of one disagreement. Each view asks for a region and resolution; its selected topos determines the representation.\n\nThis makes changes inspectable. A local act can remain local, travelling bounds can reach dependent cells, and a receipt can name the inputs of the reading you saw. You can ask what changed and what depends on it without turning a drawing into the algebra.\n\nA pin names standing, not a download URL or runtime entry. Its declared artifact dependencies close the bytes needed for an offered operation. The boundary lets a form or view remain meaningful even when it has no executable capsule.\n\nUse Bound where independently attributed observations must be judged against an accepted contract: compatibility between components, operational limits, or a team's project requirements. The selected topos must supply the actual measurements; a digest identifies the evidence without declaring it true.\n\n[Contribute a counterexample or a proposed lot](CONTRIBUTING.md).\n\n\n## Foundations and related libraries\n\nThe two-sided constraint object is described in Nahum Ochoa's [Two-Sided Constraints on a Valued Lattice](https://doi.org/10.5281/zenodo.21858428), DOI `10.5281/zenodo.21858428`. Bound uses the object through [Obligations](https://github.com/Lapxo/obligations); [Topos](https://github.com/Lapxo/topos) supplies the wire and contracts for forms, views and selected worlds. Bound admits, folds and retains evidence across those declared boundaries. A digest identifies bytes; it does not certify that an observation is true.\n" at=witness:minimal-public-surface-015 by=target form=alphabet measure=text role=writes scope=prose/en/files/public-0 shape=README.md value=lock +bound-lock/1 about="# @lapxo/bound\n\n## Use Bound in a project\n\nFrom a project with an admitted lock and selected views, inspect its standing, ask for its evidence, then verify the committed outputs:\n\n```sh\nnpx @lapxo/bound@0.1.6 fold --as lines\nnpx @lapxo/bound@0.1.6 fold --as receipts@1\nnpx @lapxo/bound@0.1.6 fold --check\n```\n\nUse this flow to review a project change or check a dependency's declared contract. `--check` verifies existing evidence; it does not execute a missing reading. A file fold names readings and explicitly says that it computed no encounters.\n\nIndependent observations are judged through the declared typed cells view. The selected topos supplies the form, origin evidence and bounds. Bound keeps attribution and exact-ID withdrawals through the fold.\n\nA selected form can instead describe a set of artifacts, a delivery interval or another domain's values. The project declares the form, origin evidence and views; Bound does not infer them from filenames or units.\n\n\nDeclare what must hold. Read what does. Keep the evidence.\n\nBound reads a project's admitted statements, checks observations against its requirements, and produces the views its selected topos declares. It keeps conflicting evidence and its origins instead of choosing a convenient answer.\n\n`fold` reads. `sign` signs a proposed lot. `land` admits that lot under the place's authority. These acts work across domains: a selected topos supplies forms, units, readers and views.\n\n## Start in an admitted project\n\n```sh\nnpx @lapxo/bound@0.1.6 fold --as help\nnpx @lapxo/bound@0.1.6 fold\n```\n\nThe help view prints:\n\n```text\nverbs fold land sign\nflags --as --check --key --key-file --signer --place\n```\n\nThe default fold runs the project's declared views. Its authority and selected topos determine what can be admitted, read and shown.\n\nStart with the team's accepted TARGET, admitted authority and selected readers. [Full usage guide](https://github.com/Lapxo/bound/blob/2053bb6d6188f04538114eae6a0add5166944ed3/docs/usage.md).\n\n## A meeting everyone can understand\n\nAna is available from 10 to 14, Luis from 12 to 16, and the room from 10 to 13. Their common availability is 12 to 13. A boss available from 18 to 20 makes the encounter incompatible. Withdrawing that exact reading restores the overlap; Ana, Luis and the room remain.\n\nWith an interval form, those are object operations: observe independent claims, meet them, withdraw by id, and read the state. A narrower compatible meet is not a fork. Folding a file of declarations alone does not calculate meeting availability.\n\nThe same pattern applies to a delivery window, a sensor's allowed range, or an agreed performance budget. The chosen topos determines the units and how evidence is obtained. Bound does not supply a meeting-specific rule.\n\n## See how information holds together\n\n![Cells, travelling bounds and a local join](https://raw.githubusercontent.com/Lapxo/bound/2053bb6d6188f04538114eae6a0add5166944ed3/docs/readme-assets/atlas.svg)\n\nA travelling ceiling on B reaches C and G through their declared rest. A local join widens B alone. D is independent. The figure shows those relations; point size and camera distance do not measure information.\n\n| State | Meaning |\n| --- | --- |\n| REQUIRED | Compatible bounds, fewer than two independent origins. |\n| FREE | Independent origins meet and their encounter fits the bounds. |\n| CONFLICT | Bounds conflict, or eligible claims have no common encounter. |\n| FORBIDDEN | An inhabited encounter does not fit the bounds. |\n\nBounds are checked before origins and claims. A receipt is evidence of a reading, not another origin. Duplicating one does not add freedom.\n\n## Change a project without erasing evidence\n\nWork in the project's directory. Use an existing admitted key identifier and its matching private key stored outside every repository. The admitted key also names its signer with `keys/ measure=signer value=file`; `signer/timeout` and `signer/response-bytes` declare its limits. Your public key and coverage belong to the authority contract; possession of a private key alone does not authorize a scope.\n\n```sh\nexport BOUND_KEY_ID='your-admitted-key-id'\nexport BOUND_KEY_FILE=\"$HOME/Private/keys/your-device.pem\"\nlot_dir=\"$(mktemp -d)\"\n```\n\nHave the selected view produce a proposal at `$lot_dir/proposal.bound`, or prepare the project's permitted lines there for review. Unsigned proposals use `by=target`, without a preassigned epoch or `sig`. Lots stay outside the repository; the committed bound files are only `TARGET.bound` and `receipts.bound`.\n\n```sh\nnpx @lapxo/bound@0.1.6 sign \"$lot_dir/proposal.bound\" \\\n --key \"$BOUND_KEY_ID\" --key-file \"$BOUND_KEY_FILE\" \\\n > \"$lot_dir/signed.bound\" &&\nnpx @lapxo/bound@0.1.6 land \"$lot_dir/signed.bound\" &&\nnpx @lapxo/bound@0.1.6 fold\n```\n\n`sign` assigns the admitted epoch and writes the signed lot to stdout. `land` validates the whole lot before admission. A refusal is evidence to inspect; it is not success. Do not proceed after a failed signature or admission. The key file is a PKCS8 private key matching the admitted public key; do not put it in the lot, source tree, package or CI artifacts.\n\nFor typed object withdrawals, `takes` names the exact claim or mark id. Removing a local join leaves the travelling sign live. For untyped configuration, use the wire's exact withdrawal selectors; do not combine withdrawal and replacement with identical selectors in one lot. Wire alphabet updates supersede by epoch.\n\n[Authority, withdrawals, receipts and PR review](docs/usage.md).\n\n## Read a declared view and reuse its evidence\n\nWhen the project has admitted a cells view:\n\n```sh\nnpx @lapxo/bound@0.1.6 fold --as cells\n```\n\nThe installed interval scene printed this on an unchanged second reading:\n\n```text\nRECEIPTS 4 read · 0 opened · idle · provider 0\n```\n\nNative receipts identify the live semantic inputs, declared rest, selected topos, codecs and selected rendering implementation. They exclude delivery count, display paths and Bound's error wrapper. A local join changes its own cell's receipt. A travelling sign changes dependent cells. Missing or corrupt carried bytes cannot prove reuse.\n\nFor judgement:\n\n```sh\nnpx @lapxo/bound@0.1.6 fold --check\n```\n\nKeep stdout, stderr and the exit status. `--check` is not an install-and-build replacement. A source test passing does not pay an unread ceiling, prove a cold clone, or accept a release.\n\n## Select a topos by what it declares\n\n`sources/` says where a world can be obtained. An admitted `uses/` names the digest of that topos's folded standing: canonical live claims in wire byte order, excluding signature envelopes and host shape. Re-signing the same standing preserves the pin. A changed live form, class, view or offer changes it.\n\n`restsOn` closes artifact bytes separately. A capsule is one offer. Forms, classes and views need no capsule merely to be selected. Runtime and packing do not define standing identity. npm dependency ranges remain package metadata; they are not standing pins.\n\n| Responsibility | Owner |\n| --- | --- |\n| Meet, state, live acts and rest | Obligations |\n| Wire, forms, classes, views and offer contracts | Topos |\n| Admission, folding and evidence | Bound |\n| Domain measurement and representation | Selected topos |\n| Storage, transport and execution | Host |\n\nCell `restsOn` is the object's relation. Directory prefixes and file summaries are host coordinates, not object rest. Wire tokens are protocol constants, not organization, host, path or key literals.\n\n## Repository rules\n\nCommit `TARGET.bound`, `receipts.bound` and the outputs the forge reads. Ignore `.bound/` from the first line of `.gitignore`. Keep proposals, signed lots, keys, ledgers, caches and dependency blobs outside the published tree.\n\nThe lock is the project's own contract and pins. Read a dependency's declarations from its selected standing; do not copy its lines into your lock. README, package metadata and workflows must be renders of admitted declarations. A scan is an observation, not permission to lower a ceiling.\n\nA PR proposes lines and the leaf changes they render. The judge uses the team's accepted contract independently of the proposed revision. Preserve refusals, conflicting origins and unpaid demands. [Repository and contribution rules](https://github.com/Lapxo/bound/blob/2053bb6d6188f04538114eae6a0add5166944ed3/docs/usage.md#repository-and-pr-review).\n\n## An atlas you can question\n\nInformation can share a history without sharing a single presentation. The same admitted cells can support a compact status view, a spatial view of their relations, or a focused reading of one disagreement. Each view asks for a region and resolution; its selected topos determines the representation.\n\nThis makes changes inspectable. A local act can remain local, travelling bounds can reach dependent cells, and a receipt can name the inputs of the reading you saw. You can ask what changed and what depends on it without turning a drawing into the algebra.\n\nA pin names standing, not a download URL or runtime entry. Its declared artifact dependencies close the bytes needed for an offered operation. The boundary lets a form or view remain meaningful even when it has no executable capsule.\n\nUse Bound where independently attributed observations must be judged against an accepted contract: compatibility between components, operational limits, or a team's project requirements. The selected topos must supply the actual measurements; a digest identifies the evidence without declaring it true.\n\n[Contribute a counterexample or a proposed lot](CONTRIBUTING.md).\n\n\n## Foundations and related libraries\n\nThe two-sided constraint object is described in Nahum Ochoa's [Two-Sided Constraints on a Valued Lattice](https://doi.org/10.5281/zenodo.21858428), DOI `10.5281/zenodo.21858428`. Bound uses the object through [Obligations](https://github.com/Lapxo/obligations); [Topos](https://github.com/Lapxo/topos) supplies the wire and contracts for forms, views and selected worlds. Bound admits, folds and retains evidence across those declared boundaries. A digest identifies bytes; it does not certify that an observation is true.\n" at=witness:bound-016-candidate by=target form=alphabet measure=text role=writes scope=prose/en/files/public-0 shape=README.md value=lock bound-lock/1 about="# Authenticated evidence view\n\nThe declared evidence@8 view projects authenticated delivery history of this place. It preserves signatures and key attribution, including admitted receipts from an attest-class key. Evidence is not normative configuration, proof of truth, or an independent observation origin. Authority and coverage are checked by the existing Topos contract; no consumer or device type changes that boundary.\n\n\nThe no sample specifies an uncovered write and tampered signed bytes. Both must refuse by name. Exact withdrawals remove only covered normative lines; authenticated evidence remains inspectable. The vectors assert status, signature verification and observable CLI output. No private key bytes are printed or shipped.\n" at=witness:minimal-public-surface-015 by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-evidence-view shape=docs/contracts/evidence-view.md value=lock bound-lock/1 about="# Contributing to Bound\n\nBring a counterexample, an observation or a proposed lot. Include the inputs and the output that led you to it. A signature establishes who was authorized to speak; it does not make their result true.\n\n## Set up a working copy\n\nClone the repository and use the Node version supported by package.json. If package-lock.json is present, run npm ci; otherwise use npm install --ignore-scripts --no-package-lock. Then run:\n\n```sh\nnpm run build\nnpm test\n```\n\nThese are development checks, not project acceptance. For a place with admitted trust context and native receipts, run the product judgement as well:\n\n```sh\nnpx @lapxo/bound@0.1.0 fold --check\n```\n\nPreserve a refusal and its exit status in your report. Do not borrow a neighbouring checkout's ledger or substitute local bytes for a named pin.\n\n## Make the smallest useful change\n\nBound owns admission, folding and evidence. Topos owns grammar, forms, classes, views and their contracts. A selected topos owns domain measurement. Obligations owns the algebra. Keep each change in its layer; do not put a domain decoder, path-based inference or a fallback for a missing pin into Bound.\n\nAn algebra change needs an independent oracle and a counterexample. A host change needs evidence for authentic bytes, failure propagation or reuse. A view change needs its declared region and implementation identity. A test should fail for a plausible incorrect implementation, not assert a source string or repeat the same expression on both sides.\n\nKeep regressions for changed signatures, unauthorized coverage, exact-id withdrawal, conflicting evidence, local versus travelling acts, corrupt content and duplicate delivery. Consolidate repeated setup and duplicate scenarios without removing distinct falsifiers.\n\n## Propose and admit\n\nKeep proposal and signed-lot files outside the repository. Use the current admitted wire, by=target, and no preassigned epoch or signature. The team's admitted key signs the lot; Bound admits it under scope coverage. The [usage guide](docs/usage.md) explains the transaction and external key-file requirements.\n\nSend the proposed lines with the leaf changes they render. A hand-edited render is evidence of the intended change, not an admitted contribution. Do not edit the accepted TARGET to make a test or ceiling pass. If a render disagrees with the lock, fix the proposed lines and re-render it.\n\nCommit only the project's TARGET.bound and native receipts.bound as bound files. The first .gitignore line excludes .bound/. Do not commit keys, stores, ledgers, caches, capsules, archives or vendored dependencies.\n\n## Submit a pull request\n\nExplain the concrete behavior before and after the change, the affected layer, and the checks you ran. Include stdout, stderr and exit status for a CLI case. State which reader and input bytes produced the evidence; a source harness is not an installed-package proof.\n\nPolicy changes receive explicit team review separately from measurements of the proposed source. Keep incompatible readings and their origins visible. Never remove a failing test or weaken a ceiling to obtain acceptance. Withdraw statements through their admitted history; do not rewrite prior signatures, tags or releases.\n\nDocumentation and workflows follow the same review: propose their lines and include the rendered changes.\n" at=policy:public-prose by=target form=alphabet measure=text role=writes scope=prose/en/files/public-1 shape=CONTRIBUTING.md value=lock bound-lock/1 about="# Exact release artifact\n\nPacking is a host operation. An archive digest names those archive bytes; it is not the identity of a Topos standing. The release pipeline makes one archive and transfers that same file to its destinations. Repeating a pack operation is not a proof of identical bytes.\n\nThe archive conformance vector declares the host package command, digest algorithm, execution deadline, response bound and its sample packages. It packs each sample once, hashes the resulting bytes, verifies both destination copies, installs offline without package scripts and compares every listed installed member with the input bytes. It executes the installed entry and checks its declared output. Changed archive bytes refuse by digest before they can be treated as the named artifact. The negative control fails when that verification is removed.\n\nThe samples use independent packages with different contents. Their outputs and member digests are captured by the executable vector; their file presence alone is not evidence. The selected publication reader measures this quartet through the existing process contract, and native receipts supply its member status to the plan.\n\nThis is conformance of the packaging recipe. Acceptance of a particular Bound candidate additionally requires the exact archive audit, clean installation and product CLI captures for that archive. A previous archive's captures cannot certify changed implementation bytes. The final candidate must be rebuilt after admitted metadata changes, with every changed member accounted for. The product witness uses the installed reader directly, without a checkout ledger or source conditions.\n\nRendering and installation are different boundaries. README, the manifest and the standard MIT text remain native renders. Publication to a registry or forge is a later owner action; this vector does not publish, authenticate to an account, create a tag or infer an external release from a local file.\n" at=witness:public-contracts-by-operation by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-archive shape=docs/contracts/archive.md value=lock @@ -7,7 +7,7 @@ bound-lock/1 about="# Help view\n\nA declared help view projects the instrument bound-lock/1 about="# Published contracts\n\nEvery public surface names its contract, accepted sample, captured executable vector and rejected sample. Missing members, differing artifact digests and failed vectors remain unpaid. Publication conformance is distinct from installed-artifact acceptance.\n\nThe selected Topos projects each quartet as a reading through the existing wire. Execution proofs are dependency readings; identical vector bytes share one proof. Each reading names its exact handed inputs and dependent receipt digests. Bound verifies those closures and keeps native count/bytes receipts by digest. A closed reading costs no new execution. The publication aggregate reads the quartet receipts; it never starts an inventory batch.\n\nExecution slots, per-execution timeout and response bytes are declared resource lines in the selected Topos. Bounds remain unchanged. A failed reading is not cached as a successful proof. Earlier completed readings stay verified, so a later refusal does not force them to execute again. Changed, missing or corrupt bytes cannot reuse their receipts. Output and execution history retain their exact coordinates.\n\n## Act cost\n\nEach declared reading and each host invocation is measured separately. The total duration of a pass is a diagnostic; it is not the cost of one indivisible act. The cost/act ceiling reads the largest measured act or the remaining unpartitioned host work. Nested invocations are not charged twice. A slow or refused act retains its cost. Native reading receipts retain measured seconds separately from semantic identity; reusing a receipt performs no new reader execution. Missing historical durations are not invented as zero.\n\n## Public verification\n\nFull-resolution native reading receipts carry the verified canonical UTF-8 input closure in the bytes row and the verified output in the count row, through the wire’s existing about field. Count, digest and measured duration keep their existing meanings. The host verifies the supplied bytes against those digests before reuse; an altered supplied carrier is not replaced by a cached copy. Historical local-only receipts still require their authentic CAS bytes. No private ledger or store is needed to verify a complete public receipt.\n\nFile-region seals hash configuration through Topos’s existing publication projection. Admission envelopes and retired history stay in the authority ledger; live declarations and ordinary file bytes remain inputs. Object history uses its own contract. A public checkout must carry receipts made for its actual files and compiled reader, not seals copied from a different tree. Verification does not run readers, fetch dependencies, refresh receipts or grant authority.\n" at=witness:public-receipts-verify-without-private-store by=target form=alphabet measure=text role=writes scope=prose/en/files/publication-contract shape=docs/contracts/publication.md value=lock bound-lock/1 about="# Using Bound\n\nThis guide covers the current CLI in a place whose wire and authority are already admitted. A fresh unsigned TARGET is a proposal, not a trusted project. The prepared repository is not yet a certified empty-clone bootstrap.\n\n## Before the first fold\n\nYou need the team's accepted TARGET and trust context, authentic bytes for each selected digest, and the readers/views that TARGET names. Do not borrow a neighbouring repository's ledger or copy node_modules to make a missing pin look available.\n\nThe published repository carries exactly TARGET.bound and receipts.bound as bound files. Local admission history lives in the ignored .bound/ store. Published standing excludes the signature envelope; owner public keys retain their signatures.\n\nStart by asking for help and folding the project. If a selected view is unavailable, use the named refusal and its fix; do not invent an output with a similar name.\n\n## Keys and coverage\n\nUse 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/ measure=signer value=`; `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 ` must match the admitted selection.\n\nA 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.\n\nFor 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.\n\n## Proposal → signature → admission → reading\n\nPrepare the proposed lines outside the repository. Each line must use the current wire's fields, forms and required set. Configuration retains its legacy required fields, including `at`. Typed cells, claims and marks use their exact row grammar; `role=reads` or `at` cannot repair an incomplete typed record.\n\nA proposal names `by=target` and omits epoch/signature. The CLI assigns epoch from admitted history when signing. Never copy an epoch from an example or change a signed line's body.\n\nUse the signing and admission transaction in the README. Shell `&&` prevents a failed sign from being followed by land. Successful signing alone does not mean admission. Successful admission alone does not mean every requirement is paid. Fold after land and inspect its states, receipts and exit status.\n\nCLI sign authenticates wire inscriptions. It is different from the object's travelling ceiling sign. The selected Topos decodes spans and supplies origin/witness context; Bound must not guess those from by, widens or a path.\n\n## Reading and withdrawing\n\nAsk only for a view admitted by the project, such as cells. A local join widens that cell with a witness; it leaves the travelling ceiling live. A travelling require supplies a floor. Claims carry distinct origins; their signatures do not by themselves establish independent origins.\n\nFor typed histories, a negative record names the exact id in takes. Withdrawing a claim removes that live observation; withdrawing a join removes that local widening, not the sign. A fresh claim with the same content is a new identity, not resurrection of a withdrawn id. Re-delivery of the same signed bytes is idempotent.\n\nFor configuration, the negative line preserves the exact non-envelope selectors and changes value to withdraw. Do not withdraw and replace identical selectors in the same batch. Use a new epoch when superseding an alphabet declaration. Never withdraw evidence merely to obtain a green verdict.\n\n## Receipts and refusals\n\nreceipts.bound is native fold output. Do not write it by hand, use JSON from a test as a receipt, or copy receipts from another tree. Unchanged inputs can reuse verified region receipts; missing bytes require recomputation or a refusal. A duplicate receipt does not create another origin.\n\nREFUSE·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.\n\nrelease/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.\n\n## Repository and PR review\n\nThe accepted TARGET is independent of a contributor's scan. Commit native receipts and admitted renders, not local .bound/ state. A page disagreeing with TARGET must be re-rendered; a ceiling is not lowered to fit the page.\n\nA contribution is a proposed lot with the leaf changes rendered from it. Send that lot for admission by the team's coverage. Do not submit hand-edited lock output as already accepted. Check secrets, extra bound files, foreign vendoring and uncaptured page claims before review.\n\nA review includes the product fold, meaningful suites and verification of the rendered bytes. Preserve their actual output and exit status.\n\n## Declaring a demand\n\nA new demand records what remains to be proved. Admission does not create conformance evidence or pay it. An OWED line after land says the declaration was admitted and remains unpaid. Signing authority and conformance evidence are separate inputs.\n\nThe selected program projection reads declared requirements and handed evidence. Missing evidence stays unread; a missing elapsed-time reading is not zero. A dependency cannot close before its requirements and predecessors. Declaring a plan never certifies a release.\n" at=witness:declared-demand-close by=target form=alphabet measure=text role=writes scope=prose/en/files/public-2 shape=docs/usage.md value=lock bound-lock/1 about="# Walk\n\n`bound fold --as walk@` compares the admitted place with an authenticated peer inventory. Resolution is interpreted by the declared Topos selection and projection contract; it is not restricted to three fixed numbers. The wire declares region membership, context, origin and cuts. The output names touched regions, open regions and payload bytes; protocol and imported bytes carry their own units.\n\nForeign history retains its signed origin epoch. Sender keys authenticate that history and never grant coverage or independent origins in the receiver. Whole-region prefixes are verified before ingress. Import and the receiver-signed local receipt commit atomically; only that receipt advances the receiver's local epoch. Foreign withdrawals are confined to the same authenticated origin and exact identifier. A repeated valid delivery adds no lines and retains its existing import receipt. A rejected or interrupted ingress adds neither evidence nor a receipt.\n\nThe published sample uses the same compiled public reader on measurement and artifact places. It compares equal summaries, opens a differing region, exchanges at intermediate declared resolutions, converges by union, retains disagreement and verifies replay after a later local act. It rejects tampered payloads, missing records, unauthorized signatures, non-prefix epochs and undeclared context changes. It interrupts a real receiver signer and verifies unchanged ingress and local history. Dead-owner recovery is a separate host action; this view does not silently recover it. The typed object's origin-local claims and withdrawals are a separate conformance vector, not inferred from configuration counts.\n" at=witness:publish-native-walk-contract by=target form=alphabet measure=text role=writes scope=prose/en/files/view-walk shape=docs/contracts/view-walk.md value=lock -bound-lock/1 about="# fold\n\n`bound fold` reads the admitted place. Configuration output names readings and says no encounters computed; its counts are not independent-origin states. A declared cells view projects admitted typed history into Obligations. A selected world defines other views; its contract decides when empty output is valid. A refusal or nonzero status wins over any parseable diagnostic stdout. `--check` verifies receipts without inventing a missing reading. The published evidence vector folds fresh places, preserves admitted key attribution, reads a native receipt and checks exact withdrawals. The typed-object quartet covers object states separately.\n\n# land\n\n`bound land ` admits authenticated lines through the same boundary used by signing and previews. Authority, coverage, historical wire and typed context remain distinct checks. Unknown wire and tampered signatures refuse. Exact redelivery returns ONCE; it does not append another origin or grant new authority. Withdrawals remain exact under their declared contract. A refusal does not append a partial act. The published evidence vector lands fresh places, refuses unauthorized writes and tampering, redelivers signed bytes and exercises exact withdrawals. The signing-port vector additionally checks interrupted or invalid command responses do not land a partial lot.\n\n# sign\n\n`bound sign ` returns canonical signed lines after validating the whole lot. The admitted key selects a declared signer; `--signer` selects the same port explicitly. File and command mechanisms use one port. Topos signing-lot/1 frames canonical bytes in lot order, one invocation per lot, and returns signatures and public-key IDs. Verification checks the admitted public key, independently of the mechanism. A command is invoked without a shell and under declared bounds. No secret output is disclosed in refusals. Missing, invalid, partial, timed-out or failed responses refuse; `land` cannot commit their partial output. The sample compares file and command signatures and landed lines, checks invocation count and ledger hashes, and refuses an unknown wire version. The sample uses ephemeral keys outside the place; no owner key is included.\n" at=witness:public-contracts-by-operation by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-cli shape=docs/contracts/cli.md value=lock +bound-lock/1 about="# fold\n\n`bound fold` reads the admitted place. Configuration output names readings and says no encounters computed; its counts are not independent-origin states. A declared cells view projects admitted typed history into Obligations. A selected world defines other views; its contract decides when empty output is valid. A refusal or nonzero status wins over any parseable diagnostic stdout. `--check` verifies receipts without inventing a missing reading. The published evidence vector folds fresh places, preserves admitted key attribution, reads a native receipt and checks exact withdrawals. The typed-object quartet covers object states separately.\n\n# land\n\n`bound land ` admits authenticated lines through the same boundary used by signing and previews. Authority, coverage, historical wire and typed context remain distinct checks. Unknown wire and tampered signatures refuse. Exact redelivery returns ONCE; it does not append another origin or grant new authority. Withdrawals remain exact under their declared contract. A refusal does not append a partial act. The published evidence vector lands fresh places, refuses unauthorized writes and tampering, redelivers signed bytes and exercises exact withdrawals. The signing-port vector additionally checks interrupted or invalid command responses do not land a partial lot.\n\n# sign\n\n`bound sign ` returns canonical signed lines after validating the whole lot. The admitted key selects a declared signer; `--signer` selects the same port explicitly. File and command mechanisms use one port. Topos signing-lot/1 frames canonical bytes in lot order, one invocation per lot, and returns signatures and public-key IDs. Verification checks the admitted public key, independently of the mechanism. A command is invoked without a shell and under declared bounds. No secret output is disclosed in refusals. Missing, invalid, partial, timed-out or failed responses refuse; `land` cannot commit their partial output. The sample compares file and command signatures and landed lines, checks invocation count and ledger hashes, and refuses an unknown wire version. The sample uses ephemeral keys outside the place; no owner key is included.\n\n# Committed act results\n\nThe opt-in `local-act@1` contract is selected by `wire/act-result`, `wire/act-result-scope` and `wire/act-result-context`. An admitted `view/act measure=id value=act` makes `bound fold --as act ` available. Missing or conflicting declarations refuse; an absent profile preserves the historical interface. Topos defines the canonical record and result contract.\n\nAdmission publishes the original signed records, their logical placements and one native result receipt atomically. A failure before commit writes no partial act. The result names the committed digest and local epoch; replay returns the original result without another epoch or origin. A post-commit error is not a rollback. Read the committed result before deciding whether to retry.\n\nThe query verifies the record signatures and coverage against the authority snapshot at admission, and the native receipt against its retained provenance. Later key retirement or profile replacement cannot authorize a new act but does not erase a verifiable historical result. Admission is not conformance: the output says `admitted · conformance not asserted`. Missing or corrupt results refuse by name. Host paths and delivery counts are not identity inputs.\n" at=witness:public-boundary-contract by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-cli shape=docs/contracts/cli.md value=lock bound-lock/1 about="## Typed cell, claim and mark records\n\nThe object profile is selected by admitted `wire/object/*` claims in a historical wire snapshot. The epoch of `wire/object/types` is its activation E; a typed record must have epoch >= E. An older record keeps the older grammar. Merely adding object words to `wire/fields` does not admit a typed profile.\n\n`fromLine` selects grammar before validating required fields: a record without `type` remains configuration, retaining its required `at`, `role`, `form`, `measure` and `value`; a typed record selects its exact required/allowed row. Configuration cannot carry object-only fields. An incomplete typed record receives no configuration defaults. The parse result distinguishes configuration from cell/claim/mark. `sign=+1|-1` is an object act, `sig` its signature envelope, and a host sign operation produces that envelope.\n\nThe common object envelope is `type`, `scope`, `id`, `epoch`, `by`, `sig`. Object records reject `at`: epoch orders acts, and `widens` names a local join witness. The following is the declared reference profile. The admitted row alphabets, not this table or a host decoder, are the source of required/allowed field permission.\n\n| Row | Fields in addition to the common envelope | Meaning |\n| --- | --- | --- |\n| cell | form, measure, params, restsOn, topos | Define a cell and its selected form/context. |\n| claim/positive | sign, origin, value | Observe an encoded span, sign=+1. |\n| claim/negative | sign, takes | Withdraw an exact claim ID, sign=-1. |\n| mark/travelling | sign, pole, reach, value | Ceiling sign: sign=+1, pole=ceiling, reach=travels. |\n| mark/local | sign, pole, reach, value, widens | Local join: sign=+1, pole=ceiling, reach=local; another mark, retaining the travelling sign. |\n| mark/floor-travelling | sign, pole, reach, value | Travelling require: sign=+1, pole=floor, reach=travels; no widens. |\n| mark/negative | sign, takes | Withdraw an exact mark ID, sign=-1; no pole/reach/widens. |\n\nEach row has both `wire/object/required/` and `wire/object/allowed/`. Unknown keys, missing required keys, floor/local, floor+widens, and travelling widening refuse without coercion. A configuration demand is unrelated to a floor mark. `by` authenticates a signing key; it is not an independent observation origin.\n\nFor a cell, `restsOn=none` represents no parents; otherwise it is a canonical byte-ordered alphabet of coordinates. Several parents are permitted. Only declared cell-coordinate edges form object rest; a directory prefix, a configuration artifact digest, and a host source location do not. Context validation rejects reachable cycles before algebraic parts are requested.\n\nThe cell's `topos` names folded standing, and its `params` identifies declared parameter bytes. A selected provider decodes values and supplies origin/witness authorization from admitted evidence. A host does not infer interval endpoints, map a key to an origin, or accept widens as its own witness. Missing pin, artifact, decoder, origin or witness refuses by cause. Cell definitions and pins are immutable in this profile; migration is not inferred.\n\n`objectHistory` preserves typed history separately from configuration; `validateObjectContext` checks IDs, cell ownership, exact takes, witness order and declared rest under the selected context. Exact redelivery is idempotent; one ID with different canonical content refuses. Signature-envelope differences never bypass verification.\n\nAfter admission, the instrument projects the acts into Obligations. Sign and require travel along declared rest; a witnessed join is local. Descendants inherit travelling marks without local widening. Live exact-ID withdrawals remain confined to their authenticated history. Keys, snapshots, signing devices and repeated receipts do not create independent origins. Compatible meets are not forks. Object states and their precedence come from Obligations; configuration folds do not compute object encounters.\n" at=witness:minimal-contract-015 by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-typed-object shape=docs/contracts/typed-object.md value=lock bound-lock/1 about=", & " at=policy:bound/010 by=target form=alphabet measure=text role=writes scope=prose/en/cite/and value=lock bound-lock/1 about="\nOne history, several viewsIllustrative spatial view of B, C, G and independent D. C rests on B and G rests on C. B's travelling ceiling is 0 to 50 and travelling floor 40 to 100. Its local join widens only B to 0 to 100. Region receipts retain selected topos and implementation identity. Background points are decorative, not additional measured cells.\n\n\n\n\n\n\n\n\n\nTHE ALGEBRA IN 60 SECONDS\nOne history. Several views.\nA cell keeps its readings. A connection carries only what travels.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTravelling bounds\nceiling 0..50floor 40..100\nB → C → G\n\nLocal join\nB widens to 0..100\nThe travelling sign stays live.\n\n\nB\nC\nG\nD\nceiling 0..50\nceiling 0..50\nIndependent cell\nD declares no rest on B.\nRegion: the cells selected by a view\n\nSelected topos\nForms and views · pinned folded standing\nReceipts at resolution 1\nSemantic inputs + selected implementation\nIllustrative layout · connections denote declared rest · position and size do not measure importance\n" at=policy:public-prose by=target form=alphabet measure=text role=writes scope=prose/en/files/public-3 shape=docs/readme-assets/atlas.svg value=lock @@ -25,7 +25,7 @@ bound-lock/1 about="A sequence of declared readings is not an indivisible act. P bound-lock/1 about="Algebraic vacuity, absence of observations and lack of recent activity are separate facts. A view may expose inactivity over an admitted window, but cannot rename it algebraic vacuity or read missing history as zero." at=policy:bound/015-plan by=target form=alphabet measure=text role=writes scope=rationale/015/02 value=lock bound-lock/1 about="Bind a package release with the pipeline views. Bind a page to its receipts with view/readme. Refuse a dependency drift with dep pins. Ask a second head that must agree." at=policy:bound/010 by=target form=alphabet measure=text role=writes scope=prose/en/learn value=present bound-lock/1 about="Bound is the application of that algebra: signed bounds, folded by one meet, refused when they fork." at=policy:bound/010 by=target form=alphabet measure=text role=writes scope=prose/en/paper value=present -bound-lock/1 about="Bound reads a project's admitted statements and observations through its selected Topos, then renders the declared views and records their inputs in receipts. The example below explains the object; a file-fold alone does not calculate its intervals.\n\n## Use Bound in a project\n\nFrom a project with an admitted lock and selected views, inspect its standing, ask for its evidence, then verify the committed outputs:\n\n```sh\nnpx @lapxo/bound@0.1.5 fold --as lines\nnpx @lapxo/bound@0.1.5 fold --as receipts@1\nnpx @lapxo/bound@0.1.5 fold --check\n```\n\nUse this flow to review a project change or check a dependency's declared contract. `--check` verifies existing evidence; it does not execute a missing reading. A file fold names readings and explicitly says that it computed no encounters.\n\nIndependent observations are judged through the declared typed cells view. The selected topos supplies the form, origin evidence and bounds. Bound keeps attribution and exact-ID withdrawals through the fold.\n\nA selected form can instead describe a set of artifacts, a delivery interval or another domain's values. The project declares the form, origin evidence and views; Bound does not infer them from filenames or units.\n\n\n## A meeting everyone can understand\n\nAna is available from 10 to 14, Luis from 12 to 16, and the room from 10 to 13. Their common availability is 12 to 13. A boss available from 18 to 20 makes the encounter incompatible. Withdrawing that exact reading restores the overlap; Ana, Luis and the room remain.\n\nWith an interval form, those are object operations: observe independent claims, meet them, withdraw by id, and read the state. A narrower compatible meet is not a fork. Folding a file of declarations alone does not calculate meeting availability.\n\nThe same pattern applies to a delivery window, a sensor's allowed range, or an agreed performance budget. The chosen topos determines the units and how evidence is obtained. Bound does not supply a meeting-specific rule.\n\n## See how information holds together\n\n![Cells, travelling bounds and a local join](https://raw.githubusercontent.com/Lapxo/bound/2053bb6d6188f04538114eae6a0add5166944ed3/docs/readme-assets/atlas.svg)\n\nA travelling ceiling on B reaches C and G through their declared rest. A local join widens B alone. D is independent. The figure shows those relations; point size and camera distance do not measure information.\n\n| State | Meaning |\n| --- | --- |\n| REQUIRED | Compatible bounds, fewer than two independent origins. |\n| FREE | Independent origins meet and their encounter fits the bounds. |\n| CONFLICT | Bounds conflict, or eligible claims have no common encounter. |\n| FORBIDDEN | An inhabited encounter does not fit the bounds. |\n\nBounds are checked before origins and claims. A receipt is evidence of a reading, not another origin. Duplicating one does not add freedom.\n\n## Change a project without erasing evidence\n\nWork in the project's directory. Use an existing admitted key identifier and its matching private key stored outside every repository. The admitted key also names its signer with `keys/ measure=signer value=file`; `signer/timeout` and `signer/response-bytes` declare its limits. Your public key and coverage belong to the authority contract; possession of a private key alone does not authorize a scope.\n\n```sh\nexport BOUND_KEY_ID='your-admitted-key-id'\nexport BOUND_KEY_FILE=\"$HOME/Private/keys/your-device.pem\"\nlot_dir=\"$(mktemp -d)\"\n```\n\nHave the selected view produce a proposal at `$lot_dir/proposal.bound`, or prepare the project's permitted lines there for review. Unsigned proposals use `by=target`, without a preassigned epoch or `sig`. Lots stay outside the repository; the committed bound files are only `TARGET.bound` and `receipts.bound`.\n\n```sh\nnpx @lapxo/bound@0.1.5 sign \"$lot_dir/proposal.bound\" \\\n --key \"$BOUND_KEY_ID\" --key-file \"$BOUND_KEY_FILE\" \\\n > \"$lot_dir/signed.bound\" &&\nnpx @lapxo/bound@0.1.5 land \"$lot_dir/signed.bound\" &&\nnpx @lapxo/bound@0.1.5 fold\n```\n\n`sign` assigns the admitted epoch and writes the signed lot to stdout. `land` validates the whole lot before admission. A refusal is evidence to inspect; it is not success. Do not proceed after a failed signature or admission. The key file is a PKCS8 private key matching the admitted public key; do not put it in the lot, source tree, package or CI artifacts.\n\nFor typed object withdrawals, `takes` names the exact claim or mark id. Removing a local join leaves the travelling sign live. For untyped configuration, use the wire's exact withdrawal selectors; do not combine withdrawal and replacement with identical selectors in one lot. Wire alphabet updates supersede by epoch.\n\n[Authority, withdrawals, receipts and PR review](https://github.com/Lapxo/bound/blob/2053bb6d6188f04538114eae6a0add5166944ed3/docs/usage.md).\n\n## Select a topos by what it declares\n\n`sources/` says where a world can be obtained. An admitted `uses/` names the digest of that topos's folded standing: canonical live claims in wire byte order, excluding signature envelopes and host shape. Re-signing the same standing preserves the pin. A changed live form, class, view or offer changes it.\n\n`restsOn` closes artifact bytes separately. A capsule is one offer. Forms, classes and views need no capsule merely to be selected. Runtime and packing do not define standing identity. npm dependency ranges remain package metadata; they are not standing pins.\n\n| Responsibility | Owner |\n| --- | --- |\n| Meet, state, live acts and rest | Obligations |\n| Wire, forms, classes, views and offer contracts | Topos |\n| Admission, folding and evidence | Bound |\n| Domain measurement and representation | Selected topos |\n| Storage, transport and execution | Host |\n\nCell `restsOn` is the object's relation. Directory prefixes and file summaries are host coordinates, not object rest. Wire tokens are protocol constants, not organization, host, path or key literals.\n\n## Repository rules\n\nCommit `TARGET.bound`, `receipts.bound` and the outputs the forge reads. Ignore `.bound/` from the first line of `.gitignore`. Keep proposals, signed lots, keys, ledgers, caches and dependency blobs outside the published tree.\n\nThe lock is the project's own contract and pins. Read a dependency's declarations from its selected standing; do not copy its lines into your lock. README, package metadata and workflows must be renders of admitted declarations. A scan is an observation, not permission to lower a ceiling.\n\nA PR proposes lines and the leaf changes they render. The judge uses the team's accepted contract independently of the proposed revision. Preserve refusals, conflicting origins and unpaid demands. [Repository and contribution rules](https://github.com/Lapxo/bound/blob/2053bb6d6188f04538114eae6a0add5166944ed3/docs/usage.md#repository-and-pr-review).\n\n## An atlas you can question\n\nInformation can share a history without sharing a single presentation. The same admitted cells can support a compact status view, a spatial view of their relations, or a focused reading of one disagreement. Each view asks for a region and resolution; its selected topos determines the representation.\n\nThis makes changes inspectable. A local act can remain local, travelling bounds can reach dependent cells, and a receipt can name the inputs of the reading you saw. You can ask what changed and what depends on it without turning a drawing into the algebra.\n\nA pin names standing, not a download URL or runtime entry. Its declared artifact dependencies close the bytes needed for an offered operation. The boundary lets a form or view remain meaningful even when it has no executable capsule.\n\nUse Bound where independently attributed observations must be judged against an accepted contract: compatibility between components, operational limits, or a team's project requirements. The selected topos must supply the actual measurements; a digest identifies the evidence without declaring it true.\n\n[Contribute a counterexample or a proposed lot](CONTRIBUTING.md).\n\n## Foundations and related libraries\n\nThe two-sided constraint object is described in Nahum Ochoa's [Two-Sided Constraints on a Valued Lattice](https://doi.org/10.5281/zenodo.21858428), DOI `10.5281/zenodo.21858428`. Bound uses the object through [Obligations](https://github.com/Lapxo/obligations); [Topos](https://github.com/Lapxo/topos) supplies the wire and contracts for forms, views and selected worlds. Bound admits, folds and retains evidence across those declared boundaries. A digest identifies bytes; it does not certify that an observation is true.\n" at=witness:minimal-readme-015 by=target form=alphabet measure=text role=writes scope=prose/en/idea value=present +bound-lock/1 about="Bound reads a project's admitted statements and observations through its selected Topos, then renders the declared views and records their inputs in receipts. The example below explains the object; a file-fold alone does not calculate its intervals.\n\n## Use Bound in a project\n\nFrom a project with an admitted lock and selected views, inspect its standing, ask for its evidence, then verify the committed outputs:\n\n```sh\nnpx @lapxo/bound@0.1.6 fold --as lines\nnpx @lapxo/bound@0.1.6 fold --as receipts@1\nnpx @lapxo/bound@0.1.6 fold --check\n```\n\nUse this flow to review a project change or check a dependency's declared contract. `--check` verifies existing evidence; it does not execute a missing reading. A file fold names readings and explicitly says that it computed no encounters.\n\nIndependent observations are judged through the declared typed cells view. The selected topos supplies the form, origin evidence and bounds. Bound keeps attribution and exact-ID withdrawals through the fold.\n\nA selected form can instead describe a set of artifacts, a delivery interval or another domain's values. The project declares the form, origin evidence and views; Bound does not infer them from filenames or units.\n\n\n## A meeting everyone can understand\n\nAna is available from 10 to 14, Luis from 12 to 16, and the room from 10 to 13. Their common availability is 12 to 13. A boss available from 18 to 20 makes the encounter incompatible. Withdrawing that exact reading restores the overlap; Ana, Luis and the room remain.\n\nWith an interval form, those are object operations: observe independent claims, meet them, withdraw by id, and read the state. A narrower compatible meet is not a fork. Folding a file of declarations alone does not calculate meeting availability.\n\nThe same pattern applies to a delivery window, a sensor's allowed range, or an agreed performance budget. The chosen topos determines the units and how evidence is obtained. Bound does not supply a meeting-specific rule.\n\n## See how information holds together\n\n![Cells, travelling bounds and a local join](https://raw.githubusercontent.com/Lapxo/bound/2053bb6d6188f04538114eae6a0add5166944ed3/docs/readme-assets/atlas.svg)\n\nA travelling ceiling on B reaches C and G through their declared rest. A local join widens B alone. D is independent. The figure shows those relations; point size and camera distance do not measure information.\n\n| State | Meaning |\n| --- | --- |\n| REQUIRED | Compatible bounds, fewer than two independent origins. |\n| FREE | Independent origins meet and their encounter fits the bounds. |\n| CONFLICT | Bounds conflict, or eligible claims have no common encounter. |\n| FORBIDDEN | An inhabited encounter does not fit the bounds. |\n\nBounds are checked before origins and claims. A receipt is evidence of a reading, not another origin. Duplicating one does not add freedom.\n\n## Change a project without erasing evidence\n\nWork in the project's directory. Use an existing admitted key identifier and its matching private key stored outside every repository. The admitted key also names its signer with `keys/ measure=signer value=file`; `signer/timeout` and `signer/response-bytes` declare its limits. Your public key and coverage belong to the authority contract; possession of a private key alone does not authorize a scope.\n\n```sh\nexport BOUND_KEY_ID='your-admitted-key-id'\nexport BOUND_KEY_FILE=\"$HOME/Private/keys/your-device.pem\"\nlot_dir=\"$(mktemp -d)\"\n```\n\nHave the selected view produce a proposal at `$lot_dir/proposal.bound`, or prepare the project's permitted lines there for review. Unsigned proposals use `by=target`, without a preassigned epoch or `sig`. Lots stay outside the repository; the committed bound files are only `TARGET.bound` and `receipts.bound`.\n\n```sh\nnpx @lapxo/bound@0.1.6 sign \"$lot_dir/proposal.bound\" \\\n --key \"$BOUND_KEY_ID\" --key-file \"$BOUND_KEY_FILE\" \\\n > \"$lot_dir/signed.bound\" &&\nnpx @lapxo/bound@0.1.6 land \"$lot_dir/signed.bound\" &&\nnpx @lapxo/bound@0.1.6 fold\n```\n\n`sign` assigns the admitted epoch and writes the signed lot to stdout. `land` validates the whole lot before admission. A refusal is evidence to inspect; it is not success. Do not proceed after a failed signature or admission. The key file is a PKCS8 private key matching the admitted public key; do not put it in the lot, source tree, package or CI artifacts.\n\nFor typed object withdrawals, `takes` names the exact claim or mark id. Removing a local join leaves the travelling sign live. For untyped configuration, use the wire's exact withdrawal selectors; do not combine withdrawal and replacement with identical selectors in one lot. Wire alphabet updates supersede by epoch.\n\n[Authority, withdrawals, receipts and PR review](https://github.com/Lapxo/bound/blob/2053bb6d6188f04538114eae6a0add5166944ed3/docs/usage.md).\n\n## Select a topos by what it declares\n\n`sources/` says where a world can be obtained. An admitted `uses/` names the digest of that topos's folded standing: canonical live claims in wire byte order, excluding signature envelopes and host shape. Re-signing the same standing preserves the pin. A changed live form, class, view or offer changes it.\n\n`restsOn` closes artifact bytes separately. A capsule is one offer. Forms, classes and views need no capsule merely to be selected. Runtime and packing do not define standing identity. npm dependency ranges remain package metadata; they are not standing pins.\n\n| Responsibility | Owner |\n| --- | --- |\n| Meet, state, live acts and rest | Obligations |\n| Wire, forms, classes, views and offer contracts | Topos |\n| Admission, folding and evidence | Bound |\n| Domain measurement and representation | Selected topos |\n| Storage, transport and execution | Host |\n\nCell `restsOn` is the object's relation. Directory prefixes and file summaries are host coordinates, not object rest. Wire tokens are protocol constants, not organization, host, path or key literals.\n\n## Repository rules\n\nCommit `TARGET.bound`, `receipts.bound` and the outputs the forge reads. Ignore `.bound/` from the first line of `.gitignore`. Keep proposals, signed lots, keys, ledgers, caches and dependency blobs outside the published tree.\n\nThe lock is the project's own contract and pins. Read a dependency's declarations from its selected standing; do not copy its lines into your lock. README, package metadata and workflows must be renders of admitted declarations. A scan is an observation, not permission to lower a ceiling.\n\nA PR proposes lines and the leaf changes they render. The judge uses the team's accepted contract independently of the proposed revision. Preserve refusals, conflicting origins and unpaid demands. [Repository and contribution rules](https://github.com/Lapxo/bound/blob/2053bb6d6188f04538114eae6a0add5166944ed3/docs/usage.md#repository-and-pr-review).\n\n## An atlas you can question\n\nInformation can share a history without sharing a single presentation. The same admitted cells can support a compact status view, a spatial view of their relations, or a focused reading of one disagreement. Each view asks for a region and resolution; its selected topos determines the representation.\n\nThis makes changes inspectable. A local act can remain local, travelling bounds can reach dependent cells, and a receipt can name the inputs of the reading you saw. You can ask what changed and what depends on it without turning a drawing into the algebra.\n\nA pin names standing, not a download URL or runtime entry. Its declared artifact dependencies close the bytes needed for an offered operation. The boundary lets a form or view remain meaningful even when it has no executable capsule.\n\nUse Bound where independently attributed observations must be judged against an accepted contract: compatibility between components, operational limits, or a team's project requirements. The selected topos must supply the actual measurements; a digest identifies the evidence without declaring it true.\n\n[Contribute a counterexample or a proposed lot](CONTRIBUTING.md).\n\n## Foundations and related libraries\n\nThe two-sided constraint object is described in Nahum Ochoa's [Two-Sided Constraints on a Valued Lattice](https://doi.org/10.5281/zenodo.21858428), DOI `10.5281/zenodo.21858428`. Bound uses the object through [Obligations](https://github.com/Lapxo/obligations); [Topos](https://github.com/Lapxo/topos) supplies the wire and contracts for forms, views and selected worlds. Bound admits, folds and retains evidence across those declared boundaries. A digest identifies bytes; it does not certify that an observation is true.\n" at=witness:bound-016-candidate by=target form=alphabet measure=text role=writes scope=prose/en/idea value=present bound-lock/1 about="Cite it as {name}." at=policy:bound/010 by=target form=alphabet measure=text role=writes scope=prose/en/cff/name value=lock bound-lock/1 about="Cite it by the paper it rests on, Two-Sided Constraints on a Valued Lattice." at=policy:bound/010 by=target form=alphabet measure=text role=writes scope=prose/en/cff/paper value=lock bound-lock/1 about="Conflicting live wire declarations refuse by scope; no vacuous alphabet." at=policy:bound/015-plan by=target form=alphabet measure=status needs=docs/contracts/wire/unique-live-alphabet.md|samples/yes/wire/unique-live-alphabet.json|vectors/wire/unique-live-alphabet.json|samples/no/wire/unique-live-alphabet.json role=demands scope=wire/unique-live-alphabet value=present @@ -164,7 +164,7 @@ bound-lock/1 about="lines, not a page: blobs, laid snapshots and answer caches n bound-lock/1 about="name: release\non:\n workflow_run:\n workflows: [tag]\n types: [completed]\n push:\n tags: ['v*']\njobs:\n release:\n if: github.event_name == 'push' || (github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch == 'main')\n runs-on: ubuntu-latest\n permissions:\n contents: write\n outputs:\n tag: ${{ steps.version.outputs.tag }}\n asset: ${{ steps.archive.outputs.asset }}\n sha256: ${{ steps.archive.outputs.sha256 }}\n steps:\n - uses: actions/checkout@v4\n with:\n ref: ${{ github.event.workflow_run.head_sha || github.sha }}\n fetch-depth: 0\n - id: version\n env:\n EVENT_NAME: ${{ github.event_name }}\n REF_NAME: ${{ github.ref_name }}\n run: |\n version=\"v$(node -p \"require('./package.json').version\")\"\n if [ \"$EVENT_NAME\" = push ]; then\n test \"$REF_NAME\" = \"$version\"\n fi\n git rev-parse --verify \"refs/tags/$version\"\n echo \"tag=$version\" >> \"$GITHUB_OUTPUT\"\n git checkout --detach \"$version\"\n - uses: actions/setup-node@v4\n with:\n node-version: 24\n - run: npm ci\n - run: npm run build\n - run: npm test\n - run: node dist/cli/verb.js fold --check\n - id: archive\n env:\n GH_TOKEN: ${{ github.token }}\n run: |\n version=\"${{ steps.version.outputs.tag }}\"\n asset=\"$(npm pack --ignore-scripts --silent)\"\n echo \"asset=$asset\" >> \"$GITHUB_OUTPUT\"\n expected=\"$(sha256sum \"$asset\" | cut -d ' ' -f 1)\"\n echo \"sha256=$expected\" >> \"$GITHUB_OUTPUT\"\n if ! gh release view \"$version\" >/dev/null 2>&1; then\n gh release create \"$version\" \"$asset\" --title \"$version\" --notes \"$(git log -1 --format=%B)\"\n fi\n download_dir=\"$(mktemp -d)\"\n gh release download \"$version\" --pattern \"$asset\" --dir \"$download_dir\"\n actual=\"$(sha256sum \"$download_dir/$asset\" | cut -d ' ' -f 1)\"\n test \"$expected\" = \"$actual\"\n publish:\n needs: release\n environment: release\n runs-on: ubuntu-latest\n permissions:\n contents: read\n id-token: write\n steps:\n - uses: actions/checkout@v4\n with:\n ref: ${{ needs.release.outputs.tag }}\n - uses: actions/setup-node@v4\n with:\n node-version: 24\n - run: npm install --global npm@'12.1.0'\n - env:\n GH_TOKEN: ${{ github.token }}\n TAG: ${{ needs.release.outputs.tag }}\n ASSET: ${{ needs.release.outputs.asset }}\n EXPECTED: ${{ needs.release.outputs.sha256 }}\n run: |\n mkdir candidate\n gh release download \"$TAG\" --pattern \"$ASSET\" --dir candidate\n actual=\"$(sha256sum \"candidate/$ASSET\" | cut -d ' ' -f 1)\"\n test \"$EXPECTED\" = \"$actual\"\n npm stage publish \"./candidate/$ASSET\" --access public --ignore-scripts\n" at=policy:bound/011-port-release by=target form=alphabet measure=text role=writes scope=prose/en/files/workflow/release shape=.github/workflows/release.yml value=lock bound-lock/1 about="name: tag\non:\n workflow_run:\n workflows: [test]\n types: [completed]\njobs:\n tag:\n if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' && github.event.workflow_run.head_branch == 'main'\n runs-on: ubuntu-latest\n permissions:\n contents: write\n steps:\n - uses: actions/checkout@v4\n with:\n ref: ${{ github.event.workflow_run.head_sha }}\n fetch-depth: 0\n - run: |\n version=\"v$(node -p \"require('./package.json').version\")\"\n git tag --list \"$version\" | grep -q . && exit 0\n git tag \"$version\" && git push origin \"$version\"\n" at=policy:bound/pipeline by=target form=alphabet measure=text role=writes scope=prose/en/files/workflow/tag shape=.github/workflows/tag.yml value=lock bound-lock/1 about="name: test\non:\n push:\n branches: [main]\n pull_request:\njobs:\n test:\n strategy:\n fail-fast: false\n matrix:\n node: [22, 24]\n runs-on: ubuntu-latest\n permissions:\n contents: read\n steps:\n - uses: actions/checkout@v4\n - uses: actions/setup-node@v4\n with:\n node-version: ${{ matrix.node }}\n - run: npm ci\n - run: npm run build\n - run: npm test\n - name: Verify native closure and receipt reuse\n run: |\n node dist/cli/verb.js fold --check > \"$RUNNER_TEMP/bound-check.log\" 2>&1 || { cat \"$RUNNER_TEMP/bound-check.log\"; exit 1; }\n cat \"$RUNNER_TEMP/bound-check.log\"\n grep -Eq '^PASS +closed' \"$RUNNER_TEMP/bound-check.log\"\n grep -Eq '^RECEIPTS [1-9][0-9]* read · 0 opened' \"$RUNNER_TEMP/bound-check.log\"\n - run: npm pack --silent\n" at=policy:bound/pipeline by=target form=alphabet measure=text role=writes scope=prose/en/files/workflow/test shape=.github/workflows/test.yml value=lock -bound-lock/1 about="npx @lapxo/bound@0.1.5 fold --as help\nnpx @lapxo/bound@0.1.5 fold" at=witness:bound/015-prose-version by=target form=alphabet measure=text role=writes scope=prose/en/commands value=lock +bound-lock/1 about="npx @lapxo/bound@0.1.6 fold --as help\nnpx @lapxo/bound@0.1.6 fold" at=witness:bound-016-candidate by=target form=alphabet measure=text role=writes scope=prose/en/commands value=lock bound-lock/1 about="obligations is the meet. topos is the line. Worlds outside bound read a calendar, a package, a page. Bound reads lines, folds them, lands what was signed, and signs." at=policy:bound/010 by=target form=alphabet measure=text role=writes scope=prose/en/rests/on value=present bound-lock/1 about="one origin is REQUIRED, two that meet inside every bound are FREE, two that meet outside a bound are FORBIDDEN, and two that do not meet are CONFLICT" at=policy:bound/010-states by=target form=alphabet measure=id role=writes scope=notation/states value="one origin=REQUIRED|claims that meet and fit the bounds=FREE|claims that meet outside the bounds=FORBIDDEN|bounds that cross=CONFLICT" bound-lock/1 about="take the package in" at=policy:bound/door by=target form=alphabet measure=id role=writes scope=install value=npx @@ -278,7 +278,7 @@ bound-lock/1 about="the release of the forge capsule, named by the digest of wha bound-lock/1 about="the release of the language capsule, named by the digest of what its published place holds" at=policy:bound/one-cell by=target form=alphabet measure=id role=reads scope=dep/topos-typescript-tree value=sha256:fcd87e3dcb13cb4f4bcb8f96b5cab419b8ee6930612979bb6f143c8a1a3dcc98 bound-lock/1 about="the release of the lock reader, named by the digest of what its published place holds" at=policy:bound/one-cell by=target form=alphabet measure=id role=reads scope=dep/topos-bound value=sha256:23ea35997c2ada24d7f0da362b9bd112ed52c1ab9bbcdcea1e9eeb91699bd854 bound-lock/1 about="the release of the node package capsule, named by the digest of what its published place holds" at=policy:bound/one-cell by=target form=alphabet measure=id role=reads scope=dep/topos-node value=sha256:c4ae9ecd8ecc422f6eedc17ae02202611517ae1a0c42ed1dbfcfcc97b534119e -bound-lock/1 about="the release of the notation, named by the digest of what its published place holds" at=witness:published-topos-011 by=target form=alphabet measure=id needs=node_modules/@lapxo/topos role=reads scope=dep/topos shape=package value=sha256:9562133f6ac7a94630333715d62acda5c29e2f0e88d5c68d1b2966b03879c330 +bound-lock/1 about="the release of the notation, named by the digest of what its published place holds" at=witness:published-topos-012 by=target form=alphabet measure=id needs=node_modules/@lapxo/topos role=reads scope=dep/topos shape=package value=sha256:21e030acdc0d825e183b30f94d400daf351b02f782d474635f246de9e6e12b83 bound-lock/1 about="the release of the pages capsule, named by the digest of what its published place holds" at=policy:bound/one-cell by=target form=alphabet measure=id role=reads scope=dep/topos-doc value=sha256:adc787638f8cb2c9f050b295e30a7959830682e793e6e5f3e265c85bd6ce6ebb bound-lock/1 about="the release of the vectors reader, named by the digest of what its published place holds" at=witness:vectors-read-without-a-row-per-region by=target form=alphabet measure=id role=reads scope=dep/topos-json value=sha256:ddee424ba7c852f966569250f6b5520ecf4079a86cec673ac1a4fc88a934a56d bound-lock/1 about="the scopes a born lock keeps an about on, even when the measure is not text" at=policy:bound/wire-words by=target form=alphabet measure=id role=writes scope=audit/wire/kept-about value=license @@ -297,7 +297,7 @@ bound-lock/1 about="the typescript tree world after its released capsule: said, bound-lock/1 about="the vectors a place holds, a row per region, as the fold counts them from its receipts" at=policy:bound/regions by=target form=alphabet measure=receipts role=reads scope=region/vectors value=vector/** bound-lock/1 about="the vectors world saying its own description in its own lock: the regions of 2fb13c6f unchanged, its prose under its key; packed from releases only, topos 0.1.2 and the algebra release, each laid from its digest" at=policy:bound/capsules by=target form=alphabet measure=id role=writes scope=dep/topos-json/own-what shape=dist/index.js value=sha256:5ec73255e3f089e3b9c7bc1d6351a07b8aa302a346fe16ed44cbcb67293c7891 bound-lock/1 about="the version the forge tags, read from the manifest" at=policy:bound/pipeline by=target form=alphabet measure=id role=writes scope=pipeline/version value="node -p \"require('./package.json').version\"" -bound-lock/1 about="the version this place is bound at" at=witness:bound/015-candidate by=target form=alphabet measure=id role=writes scope=version value=0.1.5 +bound-lock/1 about="the version this place is bound at" at=witness:bound-016-candidate by=target form=alphabet measure=id role=writes scope=version value=0.1.6 bound-lock/1 about="the writer that vouches each source at the digest a take judged it: a family the wire lists, which bound reads here and never spells" at=policy:bound/store by=target form=alphabet measure=id role=reads scope=store/vouches value=tree bound-lock/1 about="this place is a package: class defaults of package resolve here" at=policy:bound/place by=target form=alphabet measure=id role=writes scope=place/kind value=package bound-lock/1 about="topos-node with a thin manifest: no typesVersions, main or types, dev dependencies only where a line says so, and a bin field from the place bin/ lines" at=policy:bound/capsules by=target form=alphabet measure=id role=writes scope=dep/topos-node/thin-manifest shape=dist/index.js value=sha256:da1fd0bb74f72ae95bce5929055c50ccd150d8903ba5560d99df48bf236d8dc0 @@ -312,7 +312,7 @@ bound-lock/1 about="what the second head found, which leaves the place has writt bound-lock/1 about="when the apart claim is withdrawn" at=policy:bound/door by=target form=alphabet measure=id role=writes scope=form/style/fold/back value=2.2 bound-lock/1 about="where a located world keeps each region file, by directory and extension, so the host loads the tree beside the pin" at=policy:bound/010 by=target form=alphabet measure=id role=writes scope=release/layout value=src/regions:.ts bound-lock/1 about="who signs this place" at=policy:bound/010 by=target form=alphabet measure=id role=writes scope=author value=Lapxo -bound-lock/1 about="{\n \"name\": \"@lapxo/bound\",\n \"version\": \"0.1.5\",\n \"type\": \"module\",\n \"description\": \"Read the bounds you already wrote, fold them, and name the contradictions.\",\n \"main\": \"dist/cli/verb.js\",\n \"types\": \"dist/cli/verb.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/cli/verb.d.ts\",\n \"default\": \"./dist/cli/verb.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"test\": \"node --import ./test/setup.ts --test --test-concurrency=2 test/*.test.ts\",\n \"clean\": \"rm -rf dist .tsbuildinfo* tsconfig.tsbuildinfo\",\n \"build\": \"node tools/build.mjs\",\n \"prepack\": \"npm run build\"\n },\n \"files\": [\n \"LICENSE\",\n \"README.md\",\n \"CONTRIBUTING.md\",\n \"dist/**/*\",\n \"TARGET.bound\",\n \"receipts.bound\",\n \"docs/usage.md\",\n \"docs/readme-assets/atlas.svg\",\n \"docs/contracts/*.md\"\n ],\n \"author\": \"Lapxo\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@lapxo/obligations\": \"0.3.5\",\n \"@lapxo/topos\": \"^0.1.11\",\n \"acorn\": \"8.19.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"typescript\": \"^5.0.0\"\n },\n \"sideEffects\": false,\n \"engines\": {\n \"node\": \">=22.15\"\n },\n \"bin\": {\n \"bound\": \"./dist/cli/verb.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/Lapxo/bound.git\"\n },\n \"homepage\": \"https://github.com/Lapxo/bound#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/Lapxo/bound/issues\"\n },\n \"keywords\": [\n \"cli\",\n \"content-addressed\",\n \"provenance\",\n \"receipts\",\n \"constraints\",\n \"reproducible\"\n ]\n}\n" at=witness:minimal-public-surface-015 by=target form=alphabet measure=text role=writes scope=prose/en/files/manifest shape=package.json value=lock +bound-lock/1 about="{\n \"name\": \"@lapxo/bound\",\n \"version\": \"0.1.6\",\n \"type\": \"module\",\n \"description\": \"Read the bounds you already wrote, fold them, and name the contradictions.\",\n \"main\": \"dist/cli/verb.js\",\n \"types\": \"dist/cli/verb.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/cli/verb.d.ts\",\n \"default\": \"./dist/cli/verb.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"test\": \"node --import ./test/setup.ts --test --test-concurrency=2 test/*.test.ts\",\n \"clean\": \"rm -rf dist .tsbuildinfo* tsconfig.tsbuildinfo\",\n \"build\": \"node tools/build.mjs\",\n \"prepack\": \"npm run build\"\n },\n \"files\": [\n \"LICENSE\",\n \"README.md\",\n \"CONTRIBUTING.md\",\n \"dist/**/*\",\n \"TARGET.bound\",\n \"receipts.bound\",\n \"docs/usage.md\",\n \"docs/readme-assets/atlas.svg\",\n \"docs/contracts/*.md\"\n ],\n \"author\": \"Lapxo\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@lapxo/obligations\": \"0.3.5\",\n \"@lapxo/topos\": \"^0.1.12\",\n \"acorn\": \"8.19.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^20.0.0\",\n \"typescript\": \"^5.0.0\"\n },\n \"sideEffects\": false,\n \"engines\": {\n \"node\": \">=22.15\"\n },\n \"bin\": {\n \"bound\": \"./dist/cli/verb.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/Lapxo/bound.git\"\n },\n \"homepage\": \"https://github.com/Lapxo/bound#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/Lapxo/bound/issues\"\n },\n \"keywords\": [\n \"cli\",\n \"content-addressed\",\n \"provenance\",\n \"receipts\",\n \"constraints\",\n \"reproducible\"\n ]\n}\n" at=witness:bound-016-candidate by=target form=alphabet measure=text role=writes scope=prose/en/files/manifest shape=package.json value=lock bound-lock/1 about="{\n \"profile\": \"quartet-process@1\",\n \"scope\": \"contract/published\",\n \"surface\": [\n \"contract/published/attest-evidence-view\",\n \"contract/published/cli/fold\",\n \"contract/published/cli/land\",\n \"contract/published/cli/sign\",\n \"contract/published/pipeline/archive\",\n \"contract/published/typed-object-sample\",\n \"contract/published/view/card\",\n \"contract/published/view/citation-file\",\n \"contract/published/view/explanation\",\n \"contract/published/view/guide\",\n \"contract/published/view/help\",\n \"contract/published/view/lines\",\n \"contract/published/view/manifest-render\",\n \"contract/published/view/programs\",\n \"contract/published/view/readme-historical\",\n \"contract/published/view/receipts\",\n \"contract/published/view/reference\",\n \"contract/published/view/release-workflow-render\",\n \"contract/published/view/tsconfig\",\n \"contract/published/view/usage-profile\",\n \"contract/published/view/walk\",\n \"contract/published/view/why\"\n ],\n \"note\": \"Explicit public-surface inventory. A selected coordinate without a descriptor is unpaid. Outstanding capability demands are not advertised implementations.\"\n}" at=witness:exact-archive-conformance by=target form=alphabet measure=text role=writes scope=prose/en/files/publication-inventory shape=docs/contracts/publication.inventory.json value=lock bound-lock/1 about="{count} hold" at=policy:bound/010 by=target form=alphabet measure=text role=writes scope=prose/en/badge/held value=lock bound-lock/1 about="{lo}..{hi} · {state}" at=policy:bound/readme by=target form=alphabet measure=text role=writes scope=prose/en/figure/fold/together value=present @@ -399,6 +399,7 @@ bound-lock/1 at=policy:bound/split by=target form=interval measure=kernel-litera bound-lock/1 at=policy:bound/split by=target form=interval measure=kernel-node-imports role=reads scope=kernel/node-imports value=0..0 bound-lock/1 at=policy:bound/views by=target form=alphabet measure=id role=demands scope=view/repair value=repair bound-lock/1 at=policy:bound/views by=target form=alphabet measure=id role=demands scope=view/why value=why +bound-lock/1 at=policy:existing-instrument-kinds by=target form=alphabet measure=id role=writes scope=wire/kinds value=axiom|definition|theorem|corollary|form|check|capsule|process|conjecture bound-lock/1 at=policy:host/declared-shapes by=target form=alphabet measure=id role=reads scope=wire/shapes value=decision|lock|package|reader|render|run|vector|view bound-lock/1 at=policy:host/declared-vocabulary by=target form=alphabet measure=id role=reads scope=wire/states value=absent|present|unread|withdraw bound-lock/1 at=policy:host/declared-vocabulary by=target form=alphabet measure=id role=reads scope=wire/templates value={cone}|{roots} diff --git a/docs/contracts/cli-fold.publication.json b/docs/contracts/cli-fold.publication.json index 2fd09e7..40ecbad 100644 --- a/docs/contracts/cli-fold.publication.json +++ b/docs/contracts/cli-fold.publication.json @@ -4,7 +4,7 @@ { "role": "contract", "path": "docs/contracts/cli.md", - "digest": "sha256:97cddb7dac0c426b40c51d852d6176ae8f389351cc3366206f8acb0e58c7117a" + "digest": "sha256:4d1782d30d6d695b0cdad7db1bc2453b98adfcb3f7f8574326ddc794bfa9cf12" }, { "role": "yes", diff --git a/docs/contracts/cli-land.publication.json b/docs/contracts/cli-land.publication.json index 8552229..8bae3c0 100644 --- a/docs/contracts/cli-land.publication.json +++ b/docs/contracts/cli-land.publication.json @@ -4,7 +4,7 @@ { "role": "contract", "path": "docs/contracts/cli.md", - "digest": "sha256:97cddb7dac0c426b40c51d852d6176ae8f389351cc3366206f8acb0e58c7117a" + "digest": "sha256:4d1782d30d6d695b0cdad7db1bc2453b98adfcb3f7f8574326ddc794bfa9cf12" }, { "role": "yes", diff --git a/docs/contracts/cli-sign.publication.json b/docs/contracts/cli-sign.publication.json index 0018210..f9afe03 100644 --- a/docs/contracts/cli-sign.publication.json +++ b/docs/contracts/cli-sign.publication.json @@ -4,7 +4,7 @@ { "role": "contract", "path": "docs/contracts/cli.md", - "digest": "sha256:97cddb7dac0c426b40c51d852d6176ae8f389351cc3366206f8acb0e58c7117a" + "digest": "sha256:4d1782d30d6d695b0cdad7db1bc2453b98adfcb3f7f8574326ddc794bfa9cf12" }, { "role": "yes", diff --git a/docs/contracts/cli.md b/docs/contracts/cli.md index c5f4dbb..17d7e17 100644 --- a/docs/contracts/cli.md +++ b/docs/contracts/cli.md @@ -9,3 +9,11 @@ # sign `bound sign ` returns canonical signed lines after validating the whole lot. The admitted key selects a declared signer; `--signer` selects the same port explicitly. File and command mechanisms use one port. Topos signing-lot/1 frames canonical bytes in lot order, one invocation per lot, and returns signatures and public-key IDs. Verification checks the admitted public key, independently of the mechanism. A command is invoked without a shell and under declared bounds. No secret output is disclosed in refusals. Missing, invalid, partial, timed-out or failed responses refuse; `land` cannot commit their partial output. The sample compares file and command signatures and landed lines, checks invocation count and ledger hashes, and refuses an unknown wire version. The sample uses ephemeral keys outside the place; no owner key is included. + +# Committed act results + +The opt-in `local-act@1` contract is selected by `wire/act-result`, `wire/act-result-scope` and `wire/act-result-context`. An admitted `view/act measure=id value=act` makes `bound fold --as act ` available. Missing or conflicting declarations refuse; an absent profile preserves the historical interface. Topos defines the canonical record and result contract. + +Admission publishes the original signed records, their logical placements and one native result receipt atomically. A failure before commit writes no partial act. The result names the committed digest and local epoch; replay returns the original result without another epoch or origin. A post-commit error is not a rollback. Read the committed result before deciding whether to retry. + +The query verifies the record signatures and coverage against the authority snapshot at admission, and the native receipt against its retained provenance. Later key retirement or profile replacement cannot authorize a new act but does not erase a verifiable historical result. Admission is not conformance: the output says `admitted · conformance not asserted`. Missing or corrupt results refuse by name. Host paths and delivery counts are not identity inputs. diff --git a/docs/why.md b/docs/why.md index 61c6866..e1f46b1 100644 --- a/docs/why.md +++ b/docs/why.md @@ -7,9 +7,9 @@ Bound reads a project's admitted statements and observations through its selecte From a project with an admitted lock and selected views, inspect its standing, ask for its evidence, then verify the committed outputs: ```sh -npx @lapxo/bound@0.1.5 fold --as lines -npx @lapxo/bound@0.1.5 fold --as receipts@1 -npx @lapxo/bound@0.1.5 fold --check +npx @lapxo/bound@0.1.6 fold --as lines +npx @lapxo/bound@0.1.6 fold --as receipts@1 +npx @lapxo/bound@0.1.6 fold --check ``` Use this flow to review a project change or check a dependency's declared contract. `--check` verifies existing evidence; it does not execute a missing reading. A file fold names readings and explicitly says that it computed no encounters. @@ -55,11 +55,11 @@ lot_dir="$(mktemp -d)" Have the selected view produce a proposal at `$lot_dir/proposal.bound`, or prepare the project's permitted lines there for review. Unsigned proposals use `by=target`, without a preassigned epoch or `sig`. Lots stay outside the repository; the committed bound files are only `TARGET.bound` and `receipts.bound`. ```sh -npx @lapxo/bound@0.1.5 sign "$lot_dir/proposal.bound" \ +npx @lapxo/bound@0.1.6 sign "$lot_dir/proposal.bound" \ --key "$BOUND_KEY_ID" --key-file "$BOUND_KEY_FILE" \ > "$lot_dir/signed.bound" && -npx @lapxo/bound@0.1.5 land "$lot_dir/signed.bound" && -npx @lapxo/bound@0.1.5 fold +npx @lapxo/bound@0.1.6 land "$lot_dir/signed.bound" && +npx @lapxo/bound@0.1.6 fold ``` `sign` assigns the admitted epoch and writes the signed lot to stdout. `land` validates the whole lot before admission. A refusal is evidence to inspect; it is not success. Do not proceed after a failed signature or admission. The key file is a PKCS8 private key matching the admitted public key; do not put it in the lot, source tree, package or CI artifacts. diff --git a/package-lock.json b/package-lock.json index 478df75..5a55644 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "@lapxo/bound", - "version": "0.1.5", + "version": "0.1.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@lapxo/bound", - "version": "0.1.5", + "version": "0.1.6", "license": "MIT", "dependencies": { "@lapxo/obligations": "0.3.5", - "@lapxo/topos": "^0.1.11", + "@lapxo/topos": "^0.1.12", "acorn": "8.19.0" }, "bin": { @@ -34,9 +34,9 @@ } }, "node_modules/@lapxo/topos": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@lapxo/topos/-/topos-0.1.11.tgz", - "integrity": "sha512-fBl68I8P02H4T2tmXhUrVdvQrJsF0dJtiNqBQx9oe8NNRncAa2LN2b6V4CXyh/+zzirWU5u1yJ9BcpxaxaWrZg==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@lapxo/topos/-/topos-0.1.12.tgz", + "integrity": "sha512-bD4mZrzGP/D6YOOKm3rxNL79jfXa/4kT/9dAUHo458c3O8NufY85bZ5FE3bzwYWIvd5BX42sJg18/jc6/HzKvQ==", "license": "MIT", "dependencies": { "@lapxo/obligations": "^0.3.5" diff --git a/package.json b/package.json index 9d69546..c0a0e02 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lapxo/bound", - "version": "0.1.5", + "version": "0.1.6", "type": "module", "description": "Read the bounds you already wrote, fold them, and name the contradictions.", "main": "dist/cli/verb.js", @@ -33,7 +33,7 @@ "license": "MIT", "dependencies": { "@lapxo/obligations": "0.3.5", - "@lapxo/topos": "^0.1.11", + "@lapxo/topos": "^0.1.12", "acorn": "8.19.0" }, "devDependencies": { diff --git a/receipts.bound b/receipts.bound index 10d7963..013e301 100644 --- a/receipts.bound +++ b/receipts.bound @@ -1,314 +1,382 @@ -bound-lock/1 at=place:sha256:016b057e0b7881814a5f5c4037bdf86ad21832e612ecf6f15572d6a5239d3562 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=016b057e0b788181 -bound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/cli/sign value=02d170611b5e36f6 -bound-lock/1 at=place:sha256:0ae0dabaefde481e9aafd26cb34fa8e4fd1752951c542d58135e5a40e8743a0e by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published value=0ae0dabaefde481e -bound-lock/1 at=place:sha256:0b84bfd900a3a45bb896cfc6194a3104df04d9e29b0fdb84ffa98081e23d40b9 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/2f14480f0cb138e9d65402e161118bd33173091f4f0476a0956f268ef48204fe/9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c value=0b84bfd900a3a45b -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=alphabet measure=observed role=writes scope= value=12d296c24aac7286 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:b4a4ef5b4fab form=alphabet measure=observed role=writes scope= value=12d296c24aac7286 -bound-lock/1 at=place:sha256:18962bf356bc0bdec1933236c430d3b4d93cb11643a3c10cb4f1f825a887b0de by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=execute/53cc8abaccbcb37385fdc1acd1d251c4d3d77ca44df4f8436ee498acf40d4fde value=18962bf356bc0bde -bound-lock/1 at=place:sha256:22fd7319ca3fe91ffc8cefdaa1cb93834d1e94f23866f3048afb3c5173871283 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/24f823b8091ad0e6bc2523012e42e09f3d2b8340484fa2a8bf5f5c8ff28cfc2f/ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 value=22fd7319ca3fe91f -bound-lock/1 at=place:sha256:27ea9fd3811d6af6e3499f5465e62ef4bc17cda1e28e0297d7c7ab59a94aa6a7 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/1142aa9847fe2d5dcba0d1c313b1770cd7f0d23f26d2289faf3204e43568d5c9/ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b value=27ea9fd3811d6af6 -bound-lock/1 at=place:sha256:286301dd7741d2517b2f4b8577d6306c48a75264ccdbea3559fdaa40bfd2f6b7 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 value=286301dd7741d251 -bound-lock/1 at=place:sha256:2d105b936f1ad95ddf113dc73dd42fb32a80b648cfee5a4d53b19d6ffce8a723 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/508a694913f8447f0c9569dbf49d5619e7028e07b69af9c6f630fe29bbfe354e/f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 value=2d105b936f1ad95d -bound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/receipts value=2e65d8efc4e522b8 -bound-lock/1 at=place:sha256:33fe10dee97b5b58f219449e404a691c851edf8d4452319c9f19ddb5c6d6ae49 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/1c1a518629e0254cf043dea049ca020ac9d66b6aa64c724d32f79c141f5ebbe4/8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c value=33fe10dee97b5b58 -bound-lock/1 at=place:sha256:356f6f63fe3f6ca2efc3784daa65ac99be016e37299d81d48dab65c01162827b by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/30bb47bf7c73d4e74f396581010e2032eeeed2179496e73fa04d0fbcf2c6b540/02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f value=356f6f63fe3f6ca2 -bound-lock/1 at=place:sha256:3c261753fb0ac4756471fab14c8fa75aa2a684f25defe6704436d3e6537f4813 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/a1b8ddf809f5e4a7f91702aafea1df612d9abc9fc80c6b6ef26f5329b5dd69eb/4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f value=3c261753fb0ac475 -bound-lock/1 at=place:sha256:401c79478174d4ea0cd6e60861c8e7f22cc05b201e7090d06592eacd446dc7fd by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/934a5bb815ce02a97af891d9a8cb4e49fb2e9ab75fa7bc17ddb00f02537766d5/eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 value=401c79478174d4ea -bound-lock/1 at=place:sha256:46f0a2d1a6e62392d67f072527b5bdc3e3c0a9790bc86584e3f9167ee2d0fe69 by=reader:04feef01a8c5 form=alphabet measure=observed role=writes scope=./ value=46f0a2d1a6e62392 -bound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/card value=4882565964567a3c -bound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/citation-file value=4af44663b57f04c8 -bound-lock/1 at=place:sha256:51c989c8398539fd856c0a503bf1d19bb63da348deaf12bf359f5bb9ae66edbc by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=51c989c8398539fd -bound-lock/1 at=place:sha256:5497250f21cae4ea13927a4eb200e61fc6109497ac9145857b2d39e3503cf036 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/07a6fa8f4c5abcf023a4643b0830e86f82ec280c37c760f9f87729c1fde8cbb6/59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 value=5497250f21cae4ea -bound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/release-workflow-render value=59981e0dc076e5bb -bound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/help value=606d733c96ceeef8 -bound-lock/1 at=place:sha256:627263bd9c1efc14089183909f596b8c077cee919632ac66265f6df8097741e9 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/b22901c107d927b59527e324dbf3ed5fe2e442829f86e2ffb47e98c48a57f299/6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf value=627263bd9c1efc14 -bound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/cli/land value=6895a06c8c527303 -bound-lock/1 at=place:sha256:72f4971c211abd0ef8f0dd22dcbd7898e9c2180615025e742fa7134279b8aca4 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/8dfb03e666dcb1836aebd396a87c004cb243bfb5b6d231f54d5cea627fbcf1a5/4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 value=72f4971c211abd0e -bound-lock/1 at=place:sha256:73cd91242a512c2c91db16356571aaacb91f70d9abf7a62c11ff3e3dc54c6887 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/033a648a40b8bf19e7fc9798f7c55ca57db97721207920355360e84e46c9a001/ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e value=73cd91242a512c2c -bound-lock/1 at=place:sha256:78287c5074c7e7544a568d14d9d8e3244f2bccd8e4bd848fa43a1b48b5547c32 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/83d362bbceb8696d461393a6123faa0a4e18b772fb84b880b166b68dee976d45/dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f value=78287c5074c7e754 -bound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/cli/fold value=7e711ad2867b736a -bound-lock/1 at=place:sha256:81efb0bc6be0a816672ce24f813d6a6b68b4777dacac2abe9685969d3bbcd2b4 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=execute/32f8b095f4a240c6a3c640797a9f0fbc05506fa623e7cb61f0d9fd8c8bd9124a value=81efb0bc6be0a816 -bound-lock/1 at=place:sha256:846dfb54ddf7f6f91af763e17a93971744331c0a4623b0ca743ba583a9a0b431 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/c6e8ddf2f5173b21fa27eeab80a29deafc9897d88db7d07ba99dea3685a53d92/df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 value=846dfb54ddf7f6f9 -bound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/explanation value=84993cd7d02c0e8a -bound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/attest-evidence-view value=8d7416ad2205c9ab -bound-lock/1 at=place:sha256:8dbed6f68003f8331a7751863c9855c4fe12cbac1899eebfb7edb01deaf9a289 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/e5ea9ccc092991c41e0ea296aed52cae2e1e52c8c25d829ad30fdcbe85be26a7/c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea value=8dbed6f68003f833 -bound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/walk value=8e675c4bbe8f90b8 -bound-lock/1 at=place:sha256:90cb0cf49fd948cad0d063582714eeb67b0d45716d0d10bb4ea422709b4c1126 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/14297ddb7404c5404df6cf5b4fc55d6f1727d7c8ffecfab3b5c6d71b5187a63a/e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 value=90cb0cf49fd948ca -bound-lock/1 at=place:sha256:92a5542e4e172b0f23bae2db5803bda063810aeffa81a4d462ea31a37852a87e by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/02a8c2ff35335f7a1c2500c41f57a85782bba3ca0d62cd4ce81cc06d26b16b0d/84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 value=92a5542e4e172b0f -bound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/typed-object-sample value=9b99180418307609 -bound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/why value=ac8dede30afbab95 -bound-lock/1 at=place:sha256:ae86ff6459dbeb06cf25e48b61be04acb004962ee3b658ec6302cfccb2893dbd by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/95609518b145f36d265c51bfb52c12bd05e306aa9a9d9bbcb788406d80660524/d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 value=ae86ff6459dbeb06 -bound-lock/1 at=place:sha256:b44e6e447635c1680a4331b3c4c7f7dcb673969759b2643b5529b84d009be01b by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/264d1f241f59b1cc55184a8caa9424f64b37060c618401f0410631c0deac9a80/606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 value=b44e6e447635c168 -bound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/tsconfig value=c19e0e84fce58e57 -bound-lock/1 at=place:sha256:c2043ab008c7b2ca76f6bff173d203e0fbf8e42eacc0f5d8ad373b1014a66c31 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/b90f9482ce70efa52b839dcaceefb9f1fefbcf4a6da624ca7d989fdb78e86ae0/7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 value=c2043ab008c7b2ca -bound-lock/1 at=place:sha256:d2eb1fec213fc1917772e261a19b9d108f26945fa18be2169ad95a6465426a16 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=execute/c9e9566f19db9feb6a8a7619315bdb19d66f2cd7bba90f911fc047b89f4ebd8f value=d2eb1fec213fc191 -bound-lock/1 at=place:sha256:d5fda6295ad59e9ceed5143aa4b35e64c5438d758728cf033a23d089392c2da1 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=execute/d31a059a2eb8b137ec026d0c5b7b2aea5de809f349526c6bc4a916abe14a0113 value=d5fda6295ad59e9c -bound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/programs value=d8a9b617aac1d532 -bound-lock/1 at=place:sha256:dc7179fbff0f1dffe0ab3d0f25f2262e84e107bdcea6a5d92f12938a57e79810 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=execute/2bf6a95f93dabc27c79db679eaf9ad4f5a6e7835e74d762df62fe256c5ea21c1 value=dc7179fbff0f1dff -bound-lock/1 at=place:sha256:ddf17a356900e26badeabff89d82f39cff86b9bcb56ba83e8bcaa4b7b4c18027 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/bce6461bf205cc9bb4967563ebe076b0df551ef542015bad57311d2d55ec223a/8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 value=ddf17a356900e26b -bound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/usage-profile value=df137c5abda876f2 -bound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/lines value=dfed5a46fee7046f -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=alphabet measure=observed role=writes scope= value=e2602308ed24728e -bound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/guide value=e510a3633fcb70ab -bound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/readme-historical value=eca5a803bc3b7de6 -bound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/reference value=ee67453c707dc9b4 -bound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/pipeline/archive value=f2ba95dbc77e18d3 -bound-lock/1 at=place:sha256:f93aad2af89a8fd1ac93a700c11f80c60635d66c66856651ac7949ee0669fa2b by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=receipts/readings/210190f8555962eb95389dbb6f2fbb248d62a0ea592b34e8d97c6be18abb00d7/2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 value=f93aad2af89a8fd1 -bound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=alphabet measure=observed role=writes scope=contract/published/view/manifest-render value=ffc6c35806e9a10e -bound-lock/1 about="bound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met\nbound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/signing-port.json value=met\nbound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/signing-port.json value=met\nbound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/signing-port.json value=met\nbound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/cli/sign value=0..0\n" at=place:sha256:356f6f63fe3f6ca2efc3784daa65ac99be016e37299d81d48dab65c01162827b by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/30bb47bf7c73d4e74f396581010e2032eeeed2179496e73fa04d0fbcf2c6b540/02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/receipts value=0..0\n" at=place:sha256:f93aad2af89a8fd1ac93a700c11f80c60635d66c66856651ac7949ee0669fa2b by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/210190f8555962eb95389dbb6f2fbb248d62a0ea592b34e8d97c6be18abb00d7/2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/program-views.json value=met\nbound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/program-views.json value=met\nbound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/program-views.json value=met\nbound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/card value=0..0\n" at=place:sha256:72f4971c211abd0ef8f0dd22dcbd7898e9c2180615025e742fa7134279b8aca4 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/8dfb03e666dcb1836aebd396a87c004cb243bfb5b6d231f54d5cea627fbcf1a5/4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/citation-file value=0..0\n" at=place:sha256:3c261753fb0ac4756471fab14c8fa75aa2a684f25defe6704436d3e6537f4813 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/a1b8ddf809f5e4a7f91702aafea1df612d9abc9fc80c6b6ef26f5329b5dd69eb/4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/release-workflow-render value=0..0\n" at=place:sha256:5497250f21cae4ea13927a4eb200e61fc6109497ac9145857b2d39e3503cf036 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/07a6fa8f4c5abcf023a4643b0830e86f82ec280c37c760f9f87729c1fde8cbb6/59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/help value=0..0\n" at=place:sha256:b44e6e447635c1680a4331b3c4c7f7dcb673969759b2643b5529b84d009be01b by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/264d1f241f59b1cc55184a8caa9424f64b37060c618401f0410631c0deac9a80/606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met\nbound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/cli/land value=0..0\n" at=place:sha256:627263bd9c1efc14089183909f596b8c077cee919632ac66265f6df8097741e9 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/b22901c107d927b59527e324dbf3ed5fe2e442829f86e2ffb47e98c48a57f299/6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met\nbound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/cli/fold value=0..0\n" at=place:sha256:c2043ab008c7b2ca76f6bff173d203e0fbf8e42eacc0f5d8ad373b1014a66c31 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/b90f9482ce70efa52b839dcaceefb9f1fefbcf4a6da624ca7d989fdb78e86ae0/7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/explanation value=0..0\n" at=place:sha256:92a5542e4e172b0f23bae2db5803bda063810aeffa81a4d462ea31a37852a87e by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/02a8c2ff35335f7a1c2500c41f57a85782bba3ca0d62cd4ce81cc06d26b16b0d/84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/evidence-view.md value=met\nbound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/attest-evidence-view value=0..0\n" at=place:sha256:33fe10dee97b5b58f219449e404a691c851edf8d4452319c9f19ddb5c6d6ae49 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/1c1a518629e0254cf043dea049ca020ac9d66b6aa64c724d32f79c141f5ebbe4/8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/view-walk.md value=met\nbound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/walk.json value=met\nbound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/walk.json value=met\nbound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/walk-publication.json value=met\nbound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/walk value=0..0\n" at=place:sha256:ddf17a356900e26badeabff89d82f39cff86b9bcb56ba83e8bcaa4b7b4c18027 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/bce6461bf205cc9bb4967563ebe076b0df551ef542015bad57311d2d55ec223a/8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/typed-object.md value=met\nbound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/typed-object.json value=met\nbound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/typed-object.json value=met\nbound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/typed-object.json value=met\nbound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/typed-object-sample value=0..0\n" at=place:sha256:0b84bfd900a3a45bb896cfc6194a3104df04d9e29b0fdb84ffa98081e23d40b9 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/2f14480f0cb138e9d65402e161118bd33173091f4f0476a0956f268ef48204fe/9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/query-views.json value=met\nbound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/query-views.json value=met\nbound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/query-views.json value=met\nbound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/why value=0..0\n" at=place:sha256:73cd91242a512c2c91db16356571aaacb91f70d9abf7a62c11ff3e3dc54c6887 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/033a648a40b8bf19e7fc9798f7c55ca57db97721207920355360e84e46c9a001/ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/tsconfig value=0..0\n" at=place:sha256:8dbed6f68003f8331a7751863c9855c4fe12cbac1899eebfb7edb01deaf9a289 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/e5ea9ccc092991c41e0ea296aed52cae2e1e52c8c25d829ad30fdcbe85be26a7/c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/program-views.json value=met\nbound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/program-views.json value=met\nbound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/program-views.json value=met\nbound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/programs value=0..0\n" at=place:sha256:ae86ff6459dbeb06cf25e48b61be04acb004962ee3b658ec6302cfccb2893dbd by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/95609518b145f36d265c51bfb52c12bd05e306aa9a9d9bbcb788406d80660524/d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/usage-profile value=0..0\n" at=place:sha256:846dfb54ddf7f6f91af763e17a93971744331c0a4623b0ca743ba583a9a0b431 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/c6e8ddf2f5173b21fa27eeab80a29deafc9897d88db7d07ba99dea3685a53d92/df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/lines value=0..0\n" at=place:sha256:78287c5074c7e7544a568d14d9d8e3244f2bccd8e4bd848fa43a1b48b5547c32 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/83d362bbceb8696d461393a6123faa0a4e18b772fb84b880b166b68dee976d45/dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/guide value=0..0\n" at=place:sha256:90cb0cf49fd948cad0d063582714eeb67b0d45716d0d10bb4ea422709b4c1126 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/14297ddb7404c5404df6cf5b4fc55d6f1727d7c8ffecfab3b5c6d71b5187a63a/e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/readme-historical value=0..0\n" at=place:sha256:401c79478174d4ea0cd6e60861c8e7f22cc05b201e7090d06592eacd446dc7fd by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/934a5bb815ce02a97af891d9a8cb4e49fb2e9ab75fa7bc17ddb00f02537766d5/eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/reference value=0..0\n" at=place:sha256:27ea9fd3811d6af6e3499f5465e62ef4bc17cda1e28e0297d7c7ab59a94aa6a7 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/1142aa9847fe2d5dcba0d1c313b1770cd7f0d23f26d2289faf3204e43568d5c9/ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/archive.md value=met\nbound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/archive-conformance.json value=met\nbound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/archive-conformance.json value=met\nbound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/archive-conformance.json value=met\nbound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/pipeline/archive value=0..0\n" at=place:sha256:2d105b936f1ad95ddf113dc73dd42fb32a80b648cfee5a4d53b19d6ffce8a723 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/508a694913f8447f0c9569dbf49d5619e7028e07b69af9c6f630fe29bbfe354e/f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 value=5..5 -bound-lock/1 about="bound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/manifest-render value=0..0\n" at=place:sha256:22fd7319ca3fe91ffc8cefdaa1cb93834d1e94f23866f3048afb3c5173871283 by=reader:bf562bd10737 form=interval measure=count role=writes scope=receipts/readings/24f823b8091ad0e6bc2523012e42e09f3d2b8340484fa2a8bf5f5c8ff28cfc2f/ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 value=5..5 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/archive-conformance.publication.json value=sha256:6085a889a9b94fd27e55e004fd46919fe5889fc1851cc22bfd86d2c97badb4c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/archive.md value=sha256:eedbd0ca544377080763c035053e532bfc46ddd496c3794e0cac2e0d6286e3a9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/c9e9566f19db9feb6a8a7619315bdb19d66f2cd7bba90f911fc047b89f4ebd8f value=sha256:b45fd971e6975b1965057d4028d083d3cc801e2f713bf226840cfe54adfeb7b6\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/archive-conformance.json value=sha256:e14e5007e6b097be39964a749a09fb7143f652129869a8902743eee3ec9b89ea\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/archive-conformance.json value=sha256:1e2a1ce055edb12da86e1ddbbf78e1f9cb910ad6fe14f57fc3e360751e604a4c\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/archive-conformance.json value=sha256:c9e9566f19db9feb6a8a7619315bdb19d66f2cd7bba90f911fc047b89f4ebd8f\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/c9e9566f19db9feb6a8a7619315bdb19d66f2cd7bba90f911fc047b89f4ebd8f role=reads scope=contract/published/pipeline/archive value=docs/contracts/archive-conformance.publication.json|docs/contracts/archive.md|samples/no/archive-conformance.json|samples/yes/archive-conformance.json|vectors/archive-conformance.json\n" at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/508a694913f8447f0c9569dbf49d5619e7028e07b69af9c6f630fe29bbfe354e/f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 value=sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/attest-evidence.publication.json value=sha256:51225a212193c1a629ef3cf8d3ca8e139f69b58f80b60133792ac6b72aaae316\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/evidence-view.md value=sha256:522740051150e3b35dcca31bcc398b18b8cc8b5f9b18417ec4c676f5ea59e61d\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:3a398c822afb8e23807daa39cd919a6daddb73211e6d5b8e895c9c09202eff67\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/attest-evidence-view value=docs/contracts/attest-evidence.publication.json|docs/contracts/evidence-view.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/1c1a518629e0254cf043dea049ca020ac9d66b6aa64c724d32f79c141f5ebbe4/8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c value=sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli-fold.publication.json value=sha256:c95c704f175e189b1d0f7f0a91374e251689e0a2f7265cc759c55cf5b9e8be1a\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli.md value=sha256:97cddb7dac0c426b40c51d852d6176ae8f389351cc3366206f8acb0e58c7117a\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:3a398c822afb8e23807daa39cd919a6daddb73211e6d5b8e895c9c09202eff67\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/cli/fold value=docs/contracts/cli-fold.publication.json|docs/contracts/cli.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/b90f9482ce70efa52b839dcaceefb9f1fefbcf4a6da624ca7d989fdb78e86ae0/7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 value=sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli-land.publication.json value=sha256:8187552aaee39c9e2b748158623ba341f8c2e132a3aa472dcb89b1986311796d\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli.md value=sha256:97cddb7dac0c426b40c51d852d6176ae8f389351cc3366206f8acb0e58c7117a\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:3a398c822afb8e23807daa39cd919a6daddb73211e6d5b8e895c9c09202eff67\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/cli/land value=docs/contracts/cli-land.publication.json|docs/contracts/cli.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/b22901c107d927b59527e324dbf3ed5fe2e442829f86e2ffb47e98c48a57f299/6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf value=sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli-sign.publication.json value=sha256:c6b3a00809e69db29861160b6dfaded9d491cb398f48d4ba18f583e8f2d74a1c\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli.md value=sha256:97cddb7dac0c426b40c51d852d6176ae8f389351cc3366206f8acb0e58c7117a\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/53cc8abaccbcb37385fdc1acd1d251c4d3d77ca44df4f8436ee498acf40d4fde value=sha256:11c627b728151466c36e9a2b3433d0345f86e2142cd5135311dd3fc65dafa20d\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/signing-port.json value=sha256:bb45e5385c5efad77607edfcd79af5faa5cb064d30b2d27a0b9c79de807bca15\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/signing-port.json value=sha256:2bbf951b29ba00e715443c1ea24884a46296ee2a5bf7fd03f6fd681ea0eacb69\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/signing-port.json value=sha256:53cc8abaccbcb37385fdc1acd1d251c4d3d77ca44df4f8436ee498acf40d4fde\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/53cc8abaccbcb37385fdc1acd1d251c4d3d77ca44df4f8436ee498acf40d4fde role=reads scope=contract/published/cli/sign value=docs/contracts/cli-sign.publication.json|docs/contracts/cli.md|samples/no/signing-port.json|samples/yes/signing-port.json|vectors/signing-port.json\n" at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/30bb47bf7c73d4e74f396581010e2032eeeed2179496e73fa04d0fbcf2c6b540/02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f value=sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-citation-file.publication.json value=sha256:8fd8362d2b64292c0eb5b587984e67f65417df611ff0f35876af58e42ab3f2b6\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:300164d752ca409fc77a01d32da0445ad8731c2dd93a036969b5e7beca46b6f4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/citation-file value=docs/contracts/documents.md|docs/contracts/view-citation-file.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/a1b8ddf809f5e4a7f91702aafea1df612d9abc9fc80c6b6ef26f5329b5dd69eb/4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f value=sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-explanation.publication.json value=sha256:c60066fb7a05399af4f62aff0e30a18c5ceb79c229bef6fa2369acd880eec428\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:300164d752ca409fc77a01d32da0445ad8731c2dd93a036969b5e7beca46b6f4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/explanation value=docs/contracts/documents.md|docs/contracts/view-explanation.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/02a8c2ff35335f7a1c2500c41f57a85782bba3ca0d62cd4ce81cc06d26b16b0d/84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 value=sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-guide.publication.json value=sha256:40c884f7e1f7004330767073288fca859239cb621a565e5a4348b3b5243854fd\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:300164d752ca409fc77a01d32da0445ad8731c2dd93a036969b5e7beca46b6f4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/guide value=docs/contracts/documents.md|docs/contracts/view-guide.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/14297ddb7404c5404df6cf5b4fc55d6f1727d7c8ffecfab3b5c6d71b5187a63a/e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 value=sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-manifest-render.publication.json value=sha256:51b9a7d904d0d6986c8e392c3bd9a64edc75ecbadbdc5056d6dd69cf380e6d02\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:300164d752ca409fc77a01d32da0445ad8731c2dd93a036969b5e7beca46b6f4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/manifest-render value=docs/contracts/documents.md|docs/contracts/view-manifest-render.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/24f823b8091ad0e6bc2523012e42e09f3d2b8340484fa2a8bf5f5c8ff28cfc2f/ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 value=sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-readme-historical.publication.json value=sha256:74d5de324c84700455fd5d1f27ade0db283bc819bd7077fa0ba5b9bb91185ebf\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:300164d752ca409fc77a01d32da0445ad8731c2dd93a036969b5e7beca46b6f4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/readme-historical value=docs/contracts/documents.md|docs/contracts/view-readme-historical.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/934a5bb815ce02a97af891d9a8cb4e49fb2e9ab75fa7bc17ddb00f02537766d5/eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 value=sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-reference.publication.json value=sha256:2d79bedaeb09f7a983d7825f2155f5830c2a12a913a77f5f8246391015c63bda\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:300164d752ca409fc77a01d32da0445ad8731c2dd93a036969b5e7beca46b6f4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/reference value=docs/contracts/documents.md|docs/contracts/view-reference.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/1142aa9847fe2d5dcba0d1c313b1770cd7f0d23f26d2289faf3204e43568d5c9/ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b value=sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-release-workflow-render.publication.json value=sha256:bddd22afcb7479de5e1fa835bbd7edaca668859a33eb58a64aa9e94c86aed0a1\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:300164d752ca409fc77a01d32da0445ad8731c2dd93a036969b5e7beca46b6f4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/release-workflow-render value=docs/contracts/documents.md|docs/contracts/view-release-workflow-render.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/07a6fa8f4c5abcf023a4643b0830e86f82ec280c37c760f9f87729c1fde8cbb6/59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 value=sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-tsconfig.publication.json value=sha256:017235397bbd6cae017dc257fb2db87380325046ae87b63f2db53b0d6205e904\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:300164d752ca409fc77a01d32da0445ad8731c2dd93a036969b5e7beca46b6f4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/tsconfig value=docs/contracts/documents.md|docs/contracts/view-tsconfig.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/e5ea9ccc092991c41e0ea296aed52cae2e1e52c8c25d829ad30fdcbe85be26a7/c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea value=sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-usage-profile.publication.json value=sha256:e0fe246c4768c2022524fe54d7eb0849a2a8cbc3b3ba9e94ea34f5fa9a2b84ef\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:300164d752ca409fc77a01d32da0445ad8731c2dd93a036969b5e7beca46b6f4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/usage-profile value=docs/contracts/documents.md|docs/contracts/view-usage-profile.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/c6e8ddf2f5173b21fa27eeab80a29deafc9897d88db7d07ba99dea3685a53d92/df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 value=sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/typed-object.md value=sha256:73925fbdaa4a9418b63fe28a9f6d36430eaaa59eb357657cdbe45129fb9454fe\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/typed-object.publication.json value=sha256:377034f586a73b4c3ae899d295005b9b970443694ae78622cb5249e287082e20\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/32f8b095f4a240c6a3c640797a9f0fbc05506fa623e7cb61f0d9fd8c8bd9124a value=sha256:c663fc43f0617059742224b099ca1c7e737dc2de5a5a60a22dba08fe35572def\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/typed-object.json value=sha256:03ac2a40efbea4232025e99d37f06bca03292fcfe3c41c8c27dd5647080951a0\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/typed-object.json value=sha256:b54bac71e89800f09cb55331a4cebde2e280d5240b062a317ffabbc02edcfa7d\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/typed-object.json value=sha256:32f8b095f4a240c6a3c640797a9f0fbc05506fa623e7cb61f0d9fd8c8bd9124a\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/32f8b095f4a240c6a3c640797a9f0fbc05506fa623e7cb61f0d9fd8c8bd9124a role=reads scope=contract/published/typed-object-sample value=docs/contracts/typed-object.md|docs/contracts/typed-object.publication.json|samples/no/typed-object.json|samples/yes/typed-object.json|vectors/typed-object.json\n" at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/2f14480f0cb138e9d65402e161118bd33173091f4f0476a0956f268ef48204fe/9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c value=sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-card.publication.json value=sha256:1d50d3bce5ec3155cf5ac1f32160a27cbb5c67b4bf23d8397dc5b3fb192cd709\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 value=sha256:4e0baef9f577396d72d0e83003cbf2aa8450a5b59a9d46b92254fc9eb7ea6557\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/program-views.json value=sha256:bf6b2fbd11290920e31f46c18012be2230ffdab47dc7013d3a0aafae1fd6cbe7\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/program-views.json value=sha256:b1e8feb6839050a09410dade936cbb827ac438ff8c7b962e5fefd50f601d1b15\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/program-views.json value=sha256:a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 role=reads scope=contract/published/view/card value=docs/contracts/view-card.publication.json|docs/contracts/views.md|samples/no/program-views.json|samples/yes/program-views.json|vectors/program-views.json\n" at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/8dfb03e666dcb1836aebd396a87c004cb243bfb5b6d231f54d5cea627fbcf1a5/4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 value=sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-help.publication.json value=sha256:90c3752d23c7429f512ed780ad293652db5b3098d91bdb63d1f4b86753b1aee0\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:3a398c822afb8e23807daa39cd919a6daddb73211e6d5b8e895c9c09202eff67\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/view/help value=docs/contracts/view-help.publication.json|docs/contracts/views.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/264d1f241f59b1cc55184a8caa9424f64b37060c618401f0410631c0deac9a80/606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 value=sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-lines.publication.json value=sha256:a6107a627b7a2cf18d96bbb1a21f61b1a3562c7eb6a67252cf94ac4964e7c23e\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:3a398c822afb8e23807daa39cd919a6daddb73211e6d5b8e895c9c09202eff67\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/view/lines value=docs/contracts/view-lines.publication.json|docs/contracts/views.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/83d362bbceb8696d461393a6123faa0a4e18b772fb84b880b166b68dee976d45/dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f value=sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-programs.publication.json value=sha256:d22ea5b51f369bdb89d8ff762cb61f5c05994c9eaac3e59131ed40139b2294f7\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 value=sha256:4e0baef9f577396d72d0e83003cbf2aa8450a5b59a9d46b92254fc9eb7ea6557\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/program-views.json value=sha256:bf6b2fbd11290920e31f46c18012be2230ffdab47dc7013d3a0aafae1fd6cbe7\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/program-views.json value=sha256:b1e8feb6839050a09410dade936cbb827ac438ff8c7b962e5fefd50f601d1b15\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/program-views.json value=sha256:a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 role=reads scope=contract/published/view/programs value=docs/contracts/view-programs.publication.json|docs/contracts/views.md|samples/no/program-views.json|samples/yes/program-views.json|vectors/program-views.json\n" at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/95609518b145f36d265c51bfb52c12bd05e306aa9a9d9bbcb788406d80660524/d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 value=sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-receipts.publication.json value=sha256:1275c2f0fc854ca3c115aec57b6a2800425026a12c1c35c874857c6fa2f692e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:3a398c822afb8e23807daa39cd919a6daddb73211e6d5b8e895c9c09202eff67\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/view/receipts value=docs/contracts/view-receipts.publication.json|docs/contracts/views.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/210190f8555962eb95389dbb6f2fbb248d62a0ea592b34e8d97c6be18abb00d7/2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 value=sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-walk.md value=sha256:fc4cf29128d028c49380db8c28f8b68b692b8f25e577ed3eec238cb805cb18b6\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-walk.publication.json value=sha256:d9f7d39ef313e213748a77e190fb6347aad98e378cfbfb66e97eb7e86d39e2cd\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/d31a059a2eb8b137ec026d0c5b7b2aea5de809f349526c6bc4a916abe14a0113 value=sha256:2b8d5197021a90cd9330185e419314f15e4e03bcf26a96357564614a5dcfd746\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/walk.json value=sha256:9e1b17f0e99285b1d89cf1967158422836ebdcd6542b2eea3cee074c5c26c233\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/walk.json value=sha256:d316e1ca1d07ee2a70038d1ee0df1d6e0d318f71d6364fd13377d2b9ee26a0ac\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/walk-publication.json value=sha256:d31a059a2eb8b137ec026d0c5b7b2aea5de809f349526c6bc4a916abe14a0113\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/d31a059a2eb8b137ec026d0c5b7b2aea5de809f349526c6bc4a916abe14a0113 role=reads scope=contract/published/view/walk value=docs/contracts/view-walk.md|docs/contracts/view-walk.publication.json|samples/no/walk.json|samples/yes/walk.json|vectors/walk-publication.json\n" at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/bce6461bf205cc9bb4967563ebe076b0df551ef542015bad57311d2d55ec223a/8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 value=sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 -bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-why.publication.json value=sha256:b554a63a3c9f2cba85cbc4cc4809324f0cd8c4903326029912270bceda206acb\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/2bf6a95f93dabc27c79db679eaf9ad4f5a6e7835e74d762df62fe256c5ea21c1 value=sha256:09b54e87d99534ad2a15c521fb4d7b30e133529de8b6b6f834bde6920886013f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:bf562bd10737d3817699639784b932f04b52c078396d395c7a2c5b31e4315351\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/query-views.json value=sha256:a161c1c33dcfd357b610ae6835ecc4b16d7918a9216bab07ecb4de132e2b2ba4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/query-views.json value=sha256:105bdcf69a8179659033c898c8e27ee3d37aabdd0fb6f221a6affe10c579e317\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/query-views.json value=sha256:2bf6a95f93dabc27c79db679eaf9ad4f5a6e7835e74d762df62fe256c5ea21c1\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/2bf6a95f93dabc27c79db679eaf9ad4f5a6e7835e74d762df62fe256c5ea21c1 role=reads scope=contract/published/view/why value=docs/contracts/view-why.publication.json|docs/contracts/views.md|samples/no/query-views.json|samples/yes/query-views.json|vectors/query-views.json\n" at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=alphabet measure=bytes role=writes scope=receipts/readings/033a648a40b8bf19e7fc9798f7c55ca57db97721207920355360e84e46c9a001/ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e value=sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e -bound-lock/1 at=place:sha256:016b057e0b7881814a5f5c4037bdf86ad21832e612ecf6f15572d6a5239d3562 by=reader:bf562bd10737 form=interval measure=count role=reads scope=proof/execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=0..0 -bound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met -bound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/signing-port.json value=met -bound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/signing-port.json value=met -bound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/signing-port.json value=met -bound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/cli/sign value=0..0 -bound-lock/1 at=place:sha256:02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/30bb47bf7c73d4e74f396581010e2032eeeed2179496e73fa04d0fbcf2c6b540/02d170611b5e36f69b3e3efe805ee82e340de03f4a5d66db5c9df77b863d1d9f value=0.394798..0.394798 -bound-lock/1 at=place:sha256:0ae0dabaefde481e9aafd26cb34fa8e4fd1752951c542d58135e5a40e8743a0e by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published value=0..0 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=cli-exit-closed role=reads scope=cli/exit/closed value=0..0 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=cli-exit-refuse role=reads scope=cli/exit/refuse value=1..1 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=cli-exit-usage role=reads scope=cli/exit/usage value=2..2 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=cli-flags role=reads scope=cli/flags value=6..6 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=count role=reads scope=admission/one-boundary value=0..0 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=count role=reads scope=idempotent value=0..0 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=count role=reads scope=nothing-deleted value=0..0 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=count role=reads scope=offline value=0..0 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=count role=reads scope=one-writer value=0..0 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=count role=reads scope=resolve-by-url value=0..0 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:6039da051052 form=interval measure=count role=reads scope=the-stranger value=0..0 -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:b4a4ef5b4fab form=alphabet measure=text role=reads scope=capture/help value="ci-clean-closure: verbs fold land sign · flags --as --check --key --key-file --signer --place\n" -bound-lock/1 at=place:sha256:12d296c24aac7286a475b6a22bbefcf51a92ac4e7b58d9cb9abbfeec37b0b0f2 by=reader:b4a4ef5b4fab 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" -bound-lock/1 at=place:sha256:18962bf356bc0bdec1933236c430d3b4d93cb11643a3c10cb4f1f825a887b0de by=reader:bf562bd10737 form=interval measure=count role=reads scope=proof/execute/53cc8abaccbcb37385fdc1acd1d251c4d3d77ca44df4f8436ee498acf40d4fde value=0..0 -bound-lock/1 at=place:sha256:286301dd7741d2517b2f4b8577d6306c48a75264ccdbea3559fdaa40bfd2f6b7 by=reader:bf562bd10737 form=interval measure=count role=reads scope=proof/execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 value=0..0 -bound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met -bound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met -bound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met -bound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met -bound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/receipts value=0..0 -bound-lock/1 at=place:sha256:2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/210190f8555962eb95389dbb6f2fbb248d62a0ea592b34e8d97c6be18abb00d7/2e65d8efc4e522b829c38688a79aa0a40825a0d93e91a663e6599331aa468711 value=0.385962..0.385962 -bound-lock/1 at=place:sha256:46f0a2d1a6e62392d67f072527b5bdc3e3c0a9790bc86584e3f9167ee2d0fe69 by=reader:04feef01a8c5 form=interval measure=unreceipted role=reads scope=door/unreceipted value=0..0 -bound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met -bound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/program-views.json value=met -bound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/program-views.json value=met -bound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/program-views.json value=met -bound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/card value=0..0 -bound-lock/1 at=place:sha256:4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/8dfb03e666dcb1836aebd396a87c004cb243bfb5b6d231f54d5cea627fbcf1a5/4882565964567a3c73eb778fe06e7fd76db536cc04cb417494382838f5776d54 value=0.396696..0.396696 -bound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met -bound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met -bound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met -bound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met -bound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/citation-file value=0..0 -bound-lock/1 at=place:sha256:4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/a1b8ddf809f5e4a7f91702aafea1df612d9abc9fc80c6b6ef26f5329b5dd69eb/4af44663b57f04c881dfee9245d67926f06dfe02d36d467ecfb290959e35fa2f value=0.409404..0.409404 -bound-lock/1 at=place:sha256:51c989c8398539fd856c0a503bf1d19bb63da348deaf12bf359f5bb9ae66edbc by=reader:bf562bd10737 form=interval measure=count role=reads scope=proof/execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=0..0 -bound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met -bound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met -bound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met -bound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met -bound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/release-workflow-render value=0..0 -bound-lock/1 at=place:sha256:59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/07a6fa8f4c5abcf023a4643b0830e86f82ec280c37c760f9f87729c1fde8cbb6/59981e0dc076e5bb29052cb6c0bdbb52e8c9f4fce74e6dab0c42596811cacee6 value=0.408602..0.408602 -bound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met -bound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met -bound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met -bound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met -bound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/help value=0..0 -bound-lock/1 at=place:sha256:606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/264d1f241f59b1cc55184a8caa9424f64b37060c618401f0410631c0deac9a80/606d733c96ceeef8f18257a54ab794965ea67adede298522e36f03c3876d1ec8 value=0.385764..0.385764 -bound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met -bound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met -bound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met -bound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met -bound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/cli/land value=0..0 -bound-lock/1 at=place:sha256:6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/b22901c107d927b59527e324dbf3ed5fe2e442829f86e2ffb47e98c48a57f299/6895a06c8c5273035f15b0f163babb4072da014fa268e49327cd0c66828ecfaf value=0.379314..0.379314 -bound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met -bound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met -bound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met -bound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met -bound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/cli/fold value=0..0 -bound-lock/1 at=place:sha256:7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/b90f9482ce70efa52b839dcaceefb9f1fefbcf4a6da624ca7d989fdb78e86ae0/7e711ad2867b736a3b38706b250cd6e6deebabe2ee2814a5c8dfa29fc4942d15 value=0.386650..0.386650 -bound-lock/1 at=place:sha256:81efb0bc6be0a816672ce24f813d6a6b68b4777dacac2abe9685969d3bbcd2b4 by=reader:bf562bd10737 form=interval measure=count role=reads scope=proof/execute/32f8b095f4a240c6a3c640797a9f0fbc05506fa623e7cb61f0d9fd8c8bd9124a value=0..0 -bound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met -bound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met -bound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met -bound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met -bound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/explanation value=0..0 -bound-lock/1 at=place:sha256:84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/02a8c2ff35335f7a1c2500c41f57a85782bba3ca0d62cd4ce81cc06d26b16b0d/84993cd7d02c0e8a0517ecf90322326179f6978e680a37dcc1a103d5bd97ba16 value=0.387840..0.387840 -bound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/evidence-view.md value=met -bound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met -bound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met -bound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met -bound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/attest-evidence-view value=0..0 -bound-lock/1 at=place:sha256:8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/1c1a518629e0254cf043dea049ca020ac9d66b6aa64c724d32f79c141f5ebbe4/8d7416ad2205c9ab8983de790facc7bdd82638d534c283f0a99209c32d9b7c3c value=0.396812..0.396812 -bound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/view-walk.md value=met -bound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/walk.json value=met -bound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/walk.json value=met -bound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/walk-publication.json value=met -bound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/walk value=0..0 -bound-lock/1 at=place:sha256:8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/bce6461bf205cc9bb4967563ebe076b0df551ef542015bad57311d2d55ec223a/8e675c4bbe8f90b857a44d0416809918b9c2d7dc6a0b0f27b4abe47b1293b8d5 value=0.401232..0.401232 -bound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/typed-object.md value=met -bound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/typed-object.json value=met -bound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/typed-object.json value=met -bound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/typed-object.json value=met -bound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/typed-object-sample value=0..0 -bound-lock/1 at=place:sha256:9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/2f14480f0cb138e9d65402e161118bd33173091f4f0476a0956f268ef48204fe/9b99180418307609a49bcae286f05666623b6781d0734b65aee2be6f92b0a90c value=0.407236..0.407236 -bound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met -bound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/query-views.json value=met -bound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/query-views.json value=met -bound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/query-views.json value=met -bound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/why value=0..0 -bound-lock/1 at=place:sha256:ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/033a648a40b8bf19e7fc9798f7c55ca57db97721207920355360e84e46c9a001/ac8dede30afbab954fe16958b63dbe44bcd584da14dd995c30ea7333c9e5e25e value=0.390222..0.390222 -bound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met -bound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met -bound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met -bound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met -bound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/tsconfig value=0..0 -bound-lock/1 at=place:sha256:c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/e5ea9ccc092991c41e0ea296aed52cae2e1e52c8c25d829ad30fdcbe85be26a7/c19e0e84fce58e57b3260584e81869918d23bc6a6a8c0412b0a1482cb98d3eea value=0.403700..0.403700 -bound-lock/1 at=place:sha256:d2eb1fec213fc1917772e261a19b9d108f26945fa18be2169ad95a6465426a16 by=reader:bf562bd10737 form=interval measure=count role=reads scope=proof/execute/c9e9566f19db9feb6a8a7619315bdb19d66f2cd7bba90f911fc047b89f4ebd8f value=0..0 -bound-lock/1 at=place:sha256:d5fda6295ad59e9ceed5143aa4b35e64c5438d758728cf033a23d089392c2da1 by=reader:bf562bd10737 form=interval measure=count role=reads scope=proof/execute/d31a059a2eb8b137ec026d0c5b7b2aea5de809f349526c6bc4a916abe14a0113 value=0..0 -bound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met -bound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/program-views.json value=met -bound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/program-views.json value=met -bound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/program-views.json value=met -bound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/programs value=0..0 -bound-lock/1 at=place:sha256:d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/95609518b145f36d265c51bfb52c12bd05e306aa9a9d9bbcb788406d80660524/d8a9b617aac1d53277510e5ce45ad1f0b4a5aed6d8208c2e2b33e7835f3239e4 value=0.381692..0.381692 -bound-lock/1 at=place:sha256:dc7179fbff0f1dffe0ab3d0f25f2262e84e107bdcea6a5d92f12938a57e79810 by=reader:bf562bd10737 form=interval measure=count role=reads scope=proof/execute/2bf6a95f93dabc27c79db679eaf9ad4f5a6e7835e74d762df62fe256c5ea21c1 value=0..0 -bound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met -bound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met -bound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met -bound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met -bound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/usage-profile value=0..0 -bound-lock/1 at=place:sha256:df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/c6e8ddf2f5173b21fa27eeab80a29deafc9897d88db7d07ba99dea3685a53d92/df137c5abda876f2b25d24a0a5d221cb4aef7879066959ebc9b61e00159d40c2 value=0.394309..0.394309 -bound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met -bound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met -bound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met -bound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met -bound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/lines value=0..0 -bound-lock/1 at=place:sha256:dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/83d362bbceb8696d461393a6123faa0a4e18b772fb84b880b166b68dee976d45/dfed5a46fee7046ffdef6a36b765e92c5c0d5fe396eb7e50aa3add00a7cba86f value=0.413223..0.413223 -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=alphabet measure=id role=reads scope=source/locations/duplicate/src value=none -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=alphabet measure=id role=reads scope=source/locations/literal/host value=none -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=alphabet measure=id role=reads scope=source/locations/literal/key value=none -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=alphabet measure=id role=reads scope=source/locations/literal/org value=none -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=alphabet measure=id role=reads scope=source/locations/literal/path value=none -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=interval measure=count role=reads scope=literal/host value=0..0 -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=interval measure=count role=reads scope=literal/key value=0..0 -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=interval measure=count role=reads scope=literal/org value=0..0 -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=interval measure=count role=reads scope=literal/path value=0..0 -bound-lock/1 at=place:sha256:e2602308ed24728ed06deec55d2c2a3f2662185bc2cbf7afbe6aaac5a767212b by=reader:cff08bccafa4 form=interval measure=duplicate-bodies role=reads scope=duplicate/src value=0..0 -bound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met -bound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met -bound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met -bound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met -bound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/guide value=0..0 -bound-lock/1 at=place:sha256:e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/14297ddb7404c5404df6cf5b4fc55d6f1727d7c8ffecfab3b5c6d71b5187a63a/e510a3633fcb70abaaa8e869a819c7498525b182a6ac08c8a5709ee4d778bd58 value=0.390025..0.390025 -bound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met -bound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met -bound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met -bound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met -bound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/readme-historical value=0..0 -bound-lock/1 at=place:sha256:eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/934a5bb815ce02a97af891d9a8cb4e49fb2e9ab75fa7bc17ddb00f02537766d5/eca5a803bc3b7de67705bbac4ba786d1698559edc8f2e18d7a9650261966ffb0 value=0.452130..0.452130 -bound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met -bound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met -bound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met -bound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met -bound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/reference value=0..0 -bound-lock/1 at=place:sha256:ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/1142aa9847fe2d5dcba0d1c313b1770cd7f0d23f26d2289faf3204e43568d5c9/ee67453c707dc9b4cfa12bb46d285a10ce8fa39724f05a4de2955ad251471e9b value=0.392356..0.392356 -bound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/archive.md value=met -bound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/archive-conformance.json value=met -bound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/archive-conformance.json value=met -bound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/archive-conformance.json value=met -bound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/pipeline/archive value=0..0 -bound-lock/1 at=place:sha256:f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/508a694913f8447f0c9569dbf49d5619e7028e07b69af9c6f630fe29bbfe354e/f2ba95dbc77e18d393085659845e86880e5e92ebc4634d1f8803fa744fd6b993 value=0.396171..0.396171 -bound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met -bound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met -bound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met -bound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met -bound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=interval measure=count role=reads scope=contract/published/view/manifest-render value=0..0 -bound-lock/1 at=place:sha256:ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 by=reader:bf562bd10737 form=interval measure=s role=writes scope=receipts/readings/24f823b8091ad0e6bc2523012e42e09f3d2b8340484fa2a8bf5f5c8ff28cfc2f/ffc6c35806e9a10ecc6920eb6a021a84e746b0229752527529c4ba8a53af9468 value=0.396612..0.396612 -bound-lock/1 at=place:sha256:4238b3a3ffecf5f6b8a729f54cdaa4aaf9fca2c8415b04d6f5586a9dfbba74fa by=bound form=alphabet measure=digest role=writes scope=instrument/implementation value=sha256:4238b3a3ffecf5f6b8a729f54cdaa4aaf9fca2c8415b04d6f5586a9dfbba74fa -bound-lock/1 at=place:sha256:5201c9a556b699d54b340680a53229ab8722383742777c7051f71ac3d925dafb by=bound form=alphabet measure=digest role=writes scope=receipts value=sha256:2ec47d2b4d869d86f918ff3907147097577420fc8b22ab60bf866f0bb3e4a3cb -bound-lock/1 at=place:sha256:6b0d67c3e4a37fe599faf0732e0b288efc9061f1a55a265999fdc76a61b196ea by=bound form=interval measure=count role=writes scope=receipts/ value=2..2 -bound-lock/1 at=place:sha256:e0577141a5e9f2e2cf0f91978a4479f29e6d9224bea39380960525cac735d86b by=bound form=interval measure=count role=writes scope=receipts/. value=1..1 -bound-lock/1 at=place:sha256:e0e9a6049885d093319b67e83fec21ae7f63237c59f9aec678a3d4804b75c597 by=bound form=interval measure=count role=writes scope=receipts/admission value=1..1 -bound-lock/1 at=place:sha256:671c21cdb4424e84aa09cd4058eaa48f5acfc64953f3a0e46b25fd135a3973a3 by=bound form=interval measure=count role=writes scope=receipts/capture value=2..2 -bound-lock/1 at=place:sha256:4f7c4f5d5d7f05f776b0c2d6749755e8ee04e5cf1bb0e3e1d65d8f87c0d8d720 by=bound form=interval measure=count role=writes scope=receipts/cli value=4..4 -bound-lock/1 at=place:sha256:1e4beedad4c6cb046c4a56c4140c03b5f87dce81470ca30bcfd09a554460661a by=bound form=interval measure=count role=writes scope=receipts/contract value=46..46 -bound-lock/1 at=place:sha256:634b9a650f0f4cac81844e91aeeebeb82d890cc77c2290387ae8ca7607e1b9a4 by=bound form=interval measure=count role=writes scope=receipts/docs value=22..22 -bound-lock/1 at=place:sha256:6ecb155df4396e6ff0d9cfe86cbae2422d359e25525022cf264791a0da3d5b32 by=bound form=interval measure=count role=writes scope=receipts/door value=1..1 -bound-lock/1 at=place:sha256:14efce37002fcf7059ba79f536b5977dec16b6a3f420c9ece61c188f742405ef by=bound form=interval measure=count role=writes scope=receipts/duplicate value=1..1 -bound-lock/1 at=place:sha256:7fea53e015f42ad8a2bcb09062d4501e07a956b694ac9f479efcd7e3ed71d196 by=bound form=interval measure=count role=writes scope=receipts/execute value=8..8 -bound-lock/1 at=place:sha256:1ba83648360ee62057f115ccc51c76ad863d2cacfe72be5906fe3047a64b780a by=bound form=interval measure=count role=writes scope=receipts/idempotent value=1..1 -bound-lock/1 at=place:sha256:54a1aa95180da1823567572736a95624f73abf2d449e10e552c65ce6d506e086 by=bound form=interval measure=count role=writes scope=receipts/instrument value=1..1 -bound-lock/1 at=place:sha256:1e455d16eae3f8af6ec0572b277acd383acbc15797955332f993ce9a75ed8303 by=bound form=interval measure=count role=writes scope=receipts/literal value=4..4 -bound-lock/1 at=place:sha256:d7f5e860bfaaf291a02a2e62054be0ac9bf542cbff4eb905a416818722a1b557 by=bound form=interval measure=count role=writes scope=receipts/nothing-deleted value=1..1 -bound-lock/1 at=place:sha256:d7d51468324c7307c87f6a11e744c5e15e85d469355f31136026f1ba3ad6ff20 by=bound form=interval measure=count role=writes scope=receipts/offline value=1..1 -bound-lock/1 at=place:sha256:4c78d38f6152b24eee45901fc9fff04037b2eecbde016c7f8300482484db5baf by=bound form=interval measure=count role=writes scope=receipts/one-writer value=1..1 -bound-lock/1 at=place:sha256:f746f301e18200f812d69e6da1319bd3a127f21b4d5a7288203f51edc0535791 by=bound form=interval measure=count role=writes scope=receipts/proof value=8..8 -bound-lock/1 at=place:sha256:be85aecacf43eb3265555116b54032fa3024f3b29009d0b0d96e175c0ce31bdd by=bound form=interval measure=count role=writes scope=receipts/receipts value=88..88 -bound-lock/1 at=place:sha256:5856f172141c4fb90aafcf3bdad633bfc3352b9fa7eed3574997fd914d883780 by=bound form=interval measure=count role=writes scope=receipts/resolve-by-url value=1..1 -bound-lock/1 at=place:sha256:4b269b9de1c22ace4784068b3ea5d9f942530b54ce2a5ab06e4ea0d976e08708 by=bound form=interval measure=count role=writes scope=receipts/samples value=44..44 -bound-lock/1 at=place:sha256:4b33d417a5bf1d38c2e54272a5d73b86971166d546620d9ea7b9fb72c579368b by=bound form=interval measure=count role=writes scope=receipts/source value=5..5 -bound-lock/1 at=place:sha256:a78ac2fe3576a2f34f2730373c45cba6c2f32ae438f614bb87a2b03ac1df922b by=bound form=interval measure=count role=writes scope=receipts/the-stranger value=1..1 -bound-lock/1 at=place:sha256:a65c7bb49b41e44dbd1e0d5647bb8ed45cd7bb88e06ced4445a7f27d106a8678 by=bound form=interval measure=count role=writes scope=receipts/vectors value=22..22 -bound-lock/1 at=place:sha256:d45c094f99cf3682350761af394ee0408eefc70bf2e15f4e03bba7fe639b0964 by=bound form=alphabet measure=bytes role=writes scope=receipts/ value=sha256:d45c094f99cf3682350761af394ee0408eefc70bf2e15f4e03bba7fe639b0964 -bound-lock/1 at=place:sha256:d45c094f99cf3682350761af394ee0408eefc70bf2e15f4e03bba7fe639b0964 by=bound form=alphabet measure=bytes role=writes scope=receipts/. value=sha256:d45c094f99cf3682350761af394ee0408eefc70bf2e15f4e03bba7fe639b0964 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/admission value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/capture value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/cli value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/contract value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:97aefbb559f7476e91c95e653eb91fa83ffe264f132facc4cc948c50be298725 by=bound form=alphabet measure=bytes role=writes scope=receipts/docs value=sha256:97aefbb559f7476e91c95e653eb91fa83ffe264f132facc4cc948c50be298725 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/door value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/duplicate value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/execute value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/idempotent value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/instrument value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/literal value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/nothing-deleted value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/offline value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/one-writer value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/proof value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/receipts value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/resolve-by-url value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:9b85837d71b031e91e3e0849c437251d94fa4647a53f1d5342a92260f8cd0442 by=bound form=alphabet measure=bytes role=writes scope=receipts/samples value=sha256:9b85837d71b031e91e3e0849c437251d94fa4647a53f1d5342a92260f8cd0442 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/source value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 by=bound form=alphabet measure=bytes role=writes scope=receipts/the-stranger value=sha256:d5ef7c696b66f8b882f09bfec8292f9225b63177963a45702d889e4862f16337 -bound-lock/1 at=place:sha256:dbb4dae555687d63a1ab1aedc2199b4647e09b58f98edbc941f21e8e0fb777ce by=bound form=alphabet measure=bytes role=writes scope=receipts/vectors value=sha256:dbb4dae555687d63a1ab1aedc2199b4647e09b58f98edbc941f21e8e0fb777ce +bound-lock/1 at=place:sha256:042557dcd423efa0e90f71e7727ce4688e03905297e90c02b5e71a3c5a97c61a by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=042557dcd423efa0 +bound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/cli/sign value=04501e43e79c81a8 +bound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/lines value=051345a41b462083 +bound-lock/1 at=place:sha256:0a4b4afaa4a562d423d1c70e9729ca839aeec3e80e9898d300d10979f3e2b3e9 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=execute/32f8b095f4a240c6a3c640797a9f0fbc05506fa623e7cb61f0d9fd8c8bd9124a value=0a4b4afaa4a562d4 +bound-lock/1 at=place:sha256:0adbfb2266a2be872bfb4f9532401fd954b33393af8da647bdab2c97d771fd63 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/95609518b145f36d265c51bfb52c12bd05e306aa9a9d9bbcb788406d80660524/70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 value=0adbfb2266a2be87 +bound-lock/1 at=place:sha256:0caaad600be8690e60a6d443716356939c5a5ebd1deffbd385f9661c94c46cf8 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/210190f8555962eb95389dbb6f2fbb248d62a0ea592b34e8d97c6be18abb00d7/d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 value=0caaad600be8690e +bound-lock/1 at=place:sha256:121b04a9bd7392ea86300b91ae9c752a5f26339401d654a37d7a2f717874ec8f by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=execute/c9e9566f19db9feb6a8a7619315bdb19d66f2cd7bba90f911fc047b89f4ebd8f value=121b04a9bd7392ea +bound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/release-workflow-render value=13e7855eb0f1ee1b +bound-lock/1 at=place:sha256:1b4c6813faab7bc66b041fa101fd0db86109f328d737520e2ef8101311fd2e05 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/508a694913f8447f0c9569dbf49d5619e7028e07b69af9c6f630fe29bbfe354e/5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd value=1b4c6813faab7bc6 +bound-lock/1 at=place:sha256:22f08e2c8de3c3e09f54b5bd11ce21921c2e378b7b1c9475cf54af3b4b01124b by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published value=22f08e2c8de3c3e0 +bound-lock/1 at=place:sha256:2864ff63e5e966b22b29c917ab43bc933ca18c7583a9cc66349c8f3a074db1f1 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/1142aa9847fe2d5dcba0d1c313b1770cd7f0d23f26d2289faf3204e43568d5c9/36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 value=2864ff63e5e966b2 +bound-lock/1 at=place:sha256:2a27f5a2270d44c49e58979560e39237c8ce9627ceba374510d8875b00795409 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 value=2a27f5a2270d44c4 +bound-lock/1 at=place:sha256:2ff20526244c4858b56880481e31ed670a157f6129085eb86ade05435bba9722 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/14297ddb7404c5404df6cf5b4fc55d6f1727d7c8ffecfab3b5c6d71b5187a63a/52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 value=2ff20526244c4858 +bound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/cli/fold value=32ef72c29da24efa +bound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/reference value=36aa9df7384e1d57 +bound-lock/1 at=place:sha256:3a122e7f68257479ae0ac4280cfa1d15778937f744379182fff4029b519e991c by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/264d1f241f59b1cc55184a8caa9424f64b37060c618401f0410631c0deac9a80/4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 value=3a122e7f68257479 +bound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/usage-profile value=3b658fa7c107afb7 +bound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/attest-evidence-view value=413185ee73d00273 +bound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/card value=41c996b4b8186ebb +bound-lock/1 at=place:sha256:41d1572d3c83bbb44fa293e60e26acac92f8a1510076795d4f1349983f23dd93 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/07a6fa8f4c5abcf023a4643b0830e86f82ec280c37c760f9f87729c1fde8cbb6/13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 value=41d1572d3c83bbb4 +bound-lock/1 at=place:sha256:4732a23c59b18c1875a9fa812de3550d89562c7ef8ce7cf17904527be72f4ceb by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/a1b8ddf809f5e4a7f91702aafea1df612d9abc9fc80c6b6ef26f5329b5dd69eb/ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 value=4732a23c59b18c18 +bound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/help value=4abb0272a922ef40 +bound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/guide value=52da94935948d141 +bound-lock/1 at=place:sha256:5884e6e5d58e2df9a2b86063142afd59ce0cafe3b548859da7ee2fb9eacb28b1 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/934a5bb815ce02a97af891d9a8cb4e49fb2e9ab75fa7bc17ddb00f02537766d5/5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 value=5884e6e5d58e2df9 +bound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/pipeline/archive value=5e1c3a05f8b359e4 +bound-lock/1 at=place:sha256:5e82278349a60980d26ae550d702ac60a683509ade1cd85fee2e8aa00a99d199 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/8dfb03e666dcb1836aebd396a87c004cb243bfb5b6d231f54d5cea627fbcf1a5/41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 value=5e82278349a60980 +bound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/readme-historical value=5f857774a945dc51 +bound-lock/1 at=place:sha256:6eb0dc3898c86c3d6893a09fdb88419ffba602b0db67b141ca384942874e2f22 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/bce6461bf205cc9bb4967563ebe076b0df551ef542015bad57311d2d55ec223a/856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 value=6eb0dc3898c86c3d +bound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/programs value=70e84bea0eb0ffb4 +bound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/why value=751fb61f60e564b6 +bound-lock/1 at=place:sha256:7e52155158ddbbad62f42f62dac08b6449dc586d4bcf1d67811b3de367c74c2d by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/b22901c107d927b59527e324dbf3ed5fe2e442829f86e2ffb47e98c48a57f299/8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 value=7e52155158ddbbad +bound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/walk value=856d8afb5516b5d9 +bound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/cli/land value=8cdac38dddefb4ab +bound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/explanation value=8e3dd3e686262ea5 +bound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/typed-object-sample value=8ec66536d31c6cd8 +bound-lock/1 at=place:sha256:964bf3f11b686cf895c824c9c96bd617aa7c0c4a22426811b6e8f34e7be94cbb by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/c6e8ddf2f5173b21fa27eeab80a29deafc9897d88db7d07ba99dea3685a53d92/3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 value=964bf3f11b686cf8 +bound-lock/1 at=place:sha256:9fd14b2bfea02e8736cb502dedcf3f6cf63233d88155e0f560ddfae36d3c927c by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/2f14480f0cb138e9d65402e161118bd33173091f4f0476a0956f268ef48204fe/8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa value=9fd14b2bfea02e87 +bound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/manifest-render value=a2461f049d6d7872 +bound-lock/1 at=place:sha256:a8ed83c337787f304ec0e0e47a91fb74493013329a0375fcb65df99ea49329a7 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/1c1a518629e0254cf043dea049ca020ac9d66b6aa64c724d32f79c141f5ebbe4/413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 value=a8ed83c337787f30 +bound-lock/1 at=place:sha256:b6f7c073d308d91206464b5c60b30e6d6efb50a05f8f56f435b073042b086d78 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=execute/d31a059a2eb8b137ec026d0c5b7b2aea5de809f349526c6bc4a916abe14a0113 value=b6f7c073d308d912 +bound-lock/1 at=place:sha256:b7ce6d92648cda3f88000aaaa099df921f2a6acdc65dc91371e484286c66a8f1 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/24f823b8091ad0e6bc2523012e42e09f3d2b8340484fa2a8bf5f5c8ff28cfc2f/a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 value=b7ce6d92648cda3f +bound-lock/1 at=place:sha256:c2fff60d8f9d017cf470abed74b903892e2170571fdafa943ac8554226457d88 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=execute/2bf6a95f93dabc27c79db679eaf9ad4f5a6e7835e74d762df62fe256c5ea21c1 value=c2fff60d8f9d017c +bound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/tsconfig value=c3bd946769dac958 +bound-lock/1 at=place:sha256:c486dc54b4146377d5d2598b51bb4c89bd716762c1e8373cd8464a9b74854d1a by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/033a648a40b8bf19e7fc9798f7c55ca57db97721207920355360e84e46c9a001/751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e value=c486dc54b4146377 +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=alphabet measure=observed role=writes scope= value=ced99d1447e1c3c3 +bound-lock/1 at=place:sha256:d0b32c8c208c477a4eb69b395b5455183d4b38a446c41beca6abd0a72cd2f717 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/83d362bbceb8696d461393a6123faa0a4e18b772fb84b880b166b68dee976d45/051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b value=d0b32c8c208c477a +bound-lock/1 at=place:sha256:d1eff62547abc3a7d870245437972f9878fd3250965947574ce550abfb30ab3d by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=execute/53cc8abaccbcb37385fdc1acd1d251c4d3d77ca44df4f8436ee498acf40d4fde value=d1eff62547abc3a7 +bound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/receipts value=d7b72f8dbcc288cc +bound-lock/1 at=place:sha256:d8246e9e73437a9fed93595e62e062fb49ac86ba6635642faaf8841262c398a8 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/b90f9482ce70efa52b839dcaceefb9f1fefbcf4a6da624ca7d989fdb78e86ae0/32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 value=d8246e9e73437a9f +bound-lock/1 at=place:sha256:da9efce6c2ba92fb59632d4bd5c46f4e209efeea965b8675d064e8c3e9e59ceb by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=da9efce6c2ba92fb +bound-lock/1 at=place:sha256:e5d10d69757942eb616e8ec8263cd6fcc7154ecc5a60cbde9b4d01594f9187ff by=reader:04feef01a8c5 form=alphabet measure=observed role=writes scope=./ value=e5d10d69757942eb +bound-lock/1 at=place:sha256:e7cfc5ee0784b7301863983f010f0689df3c311688cd2ab6a42d741f3bff21e1 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/30bb47bf7c73d4e74f396581010e2032eeeed2179496e73fa04d0fbcf2c6b540/04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 value=e7cfc5ee0784b730 +bound-lock/1 at=place:sha256:e83169e22f6a349c93221fe6b47174b28f012720a37b7e373b0dc11435101098 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/e5ea9ccc092991c41e0ea296aed52cae2e1e52c8c25d829ad30fdcbe85be26a7/c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 value=e83169e22f6a349c +bound-lock/1 at=place:sha256:e86f666dba823d6c8f218914646d76aa6e5d97aeab3fcda841a759b2d048121b by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=receipts/readings/02a8c2ff35335f7a1c2500c41f57a85782bba3ca0d62cd4ce81cc06d26b16b0d/8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 value=e86f666dba823d6c +bound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=alphabet measure=observed role=writes scope=contract/published/view/citation-file value=ec7e019483afae97 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=alphabet measure=observed role=writes scope= value=fd66d7455e9d2225 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:bab6f172fc4d form=alphabet measure=observed role=writes scope= value=fd66d7455e9d2225 +bound-lock/1 about="bound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met\nbound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/signing-port.json value=met\nbound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/signing-port.json value=met\nbound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/signing-port.json value=met\nbound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/cli/sign value=0..0\n" at=place:sha256:e7cfc5ee0784b7301863983f010f0689df3c311688cd2ab6a42d741f3bff21e1 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/30bb47bf7c73d4e74f396581010e2032eeeed2179496e73fa04d0fbcf2c6b540/04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/lines value=0..0\n" at=place:sha256:d0b32c8c208c477a4eb69b395b5455183d4b38a446c41beca6abd0a72cd2f717 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/83d362bbceb8696d461393a6123faa0a4e18b772fb84b880b166b68dee976d45/051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/release-workflow-render value=0..0\n" at=place:sha256:41d1572d3c83bbb44fa293e60e26acac92f8a1510076795d4f1349983f23dd93 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/07a6fa8f4c5abcf023a4643b0830e86f82ec280c37c760f9f87729c1fde8cbb6/13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met\nbound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/cli/fold value=0..0\n" at=place:sha256:d8246e9e73437a9fed93595e62e062fb49ac86ba6635642faaf8841262c398a8 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/b90f9482ce70efa52b839dcaceefb9f1fefbcf4a6da624ca7d989fdb78e86ae0/32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/reference value=0..0\n" at=place:sha256:2864ff63e5e966b22b29c917ab43bc933ca18c7583a9cc66349c8f3a074db1f1 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/1142aa9847fe2d5dcba0d1c313b1770cd7f0d23f26d2289faf3204e43568d5c9/36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/usage-profile value=0..0\n" at=place:sha256:964bf3f11b686cf895c824c9c96bd617aa7c0c4a22426811b6e8f34e7be94cbb by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/c6e8ddf2f5173b21fa27eeab80a29deafc9897d88db7d07ba99dea3685a53d92/3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/evidence-view.md value=met\nbound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/attest-evidence-view value=0..0\n" at=place:sha256:a8ed83c337787f304ec0e0e47a91fb74493013329a0375fcb65df99ea49329a7 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/1c1a518629e0254cf043dea049ca020ac9d66b6aa64c724d32f79c141f5ebbe4/413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/program-views.json value=met\nbound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/program-views.json value=met\nbound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/program-views.json value=met\nbound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/card value=0..0\n" at=place:sha256:5e82278349a60980d26ae550d702ac60a683509ade1cd85fee2e8aa00a99d199 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/8dfb03e666dcb1836aebd396a87c004cb243bfb5b6d231f54d5cea627fbcf1a5/41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/help value=0..0\n" at=place:sha256:3a122e7f68257479ae0ac4280cfa1d15778937f744379182fff4029b519e991c by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/264d1f241f59b1cc55184a8caa9424f64b37060c618401f0410631c0deac9a80/4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/guide value=0..0\n" at=place:sha256:2ff20526244c4858b56880481e31ed670a157f6129085eb86ade05435bba9722 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/14297ddb7404c5404df6cf5b4fc55d6f1727d7c8ffecfab3b5c6d71b5187a63a/52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/archive.md value=met\nbound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/archive-conformance.json value=met\nbound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/archive-conformance.json value=met\nbound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/archive-conformance.json value=met\nbound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/pipeline/archive value=0..0\n" at=place:sha256:1b4c6813faab7bc66b041fa101fd0db86109f328d737520e2ef8101311fd2e05 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/508a694913f8447f0c9569dbf49d5619e7028e07b69af9c6f630fe29bbfe354e/5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/readme-historical value=0..0\n" at=place:sha256:5884e6e5d58e2df9a2b86063142afd59ce0cafe3b548859da7ee2fb9eacb28b1 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/934a5bb815ce02a97af891d9a8cb4e49fb2e9ab75fa7bc17ddb00f02537766d5/5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/program-views.json value=met\nbound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/program-views.json value=met\nbound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/program-views.json value=met\nbound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/programs value=0..0\n" at=place:sha256:0adbfb2266a2be872bfb4f9532401fd954b33393af8da647bdab2c97d771fd63 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/95609518b145f36d265c51bfb52c12bd05e306aa9a9d9bbcb788406d80660524/70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/query-views.json value=met\nbound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/query-views.json value=met\nbound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/query-views.json value=met\nbound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/why value=0..0\n" at=place:sha256:c486dc54b4146377d5d2598b51bb4c89bd716762c1e8373cd8464a9b74854d1a by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/033a648a40b8bf19e7fc9798f7c55ca57db97721207920355360e84e46c9a001/751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/view-walk.md value=met\nbound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/walk.json value=met\nbound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/walk.json value=met\nbound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/walk-publication.json value=met\nbound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/walk value=0..0\n" at=place:sha256:6eb0dc3898c86c3d6893a09fdb88419ffba602b0db67b141ca384942874e2f22 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/bce6461bf205cc9bb4967563ebe076b0df551ef542015bad57311d2d55ec223a/856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met\nbound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/cli/land value=0..0\n" at=place:sha256:7e52155158ddbbad62f42f62dac08b6449dc586d4bcf1d67811b3de367c74c2d by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/b22901c107d927b59527e324dbf3ed5fe2e442829f86e2ffb47e98c48a57f299/8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/explanation value=0..0\n" at=place:sha256:e86f666dba823d6c8f218914646d76aa6e5d97aeab3fcda841a759b2d048121b by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/02a8c2ff35335f7a1c2500c41f57a85782bba3ca0d62cd4ce81cc06d26b16b0d/8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/typed-object.md value=met\nbound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/typed-object.json value=met\nbound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/typed-object.json value=met\nbound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/typed-object.json value=met\nbound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/typed-object-sample value=0..0\n" at=place:sha256:9fd14b2bfea02e8736cb502dedcf3f6cf63233d88155e0f560ddfae36d3c927c by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/2f14480f0cb138e9d65402e161118bd33173091f4f0476a0956f268ef48204fe/8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/manifest-render value=0..0\n" at=place:sha256:b7ce6d92648cda3f88000aaaa099df921f2a6acdc65dc91371e484286c66a8f1 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/24f823b8091ad0e6bc2523012e42e09f3d2b8340484fa2a8bf5f5c8ff28cfc2f/a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/tsconfig value=0..0\n" at=place:sha256:e83169e22f6a349c93221fe6b47174b28f012720a37b7e373b0dc11435101098 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/e5ea9ccc092991c41e0ea296aed52cae2e1e52c8c25d829ad30fdcbe85be26a7/c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met\nbound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met\nbound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met\nbound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met\nbound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/receipts value=0..0\n" at=place:sha256:0caaad600be8690e60a6d443716356939c5a5ebd1deffbd385f9661c94c46cf8 by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/210190f8555962eb95389dbb6f2fbb248d62a0ea592b34e8d97c6be18abb00d7/d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 value=5..5 +bound-lock/1 about="bound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met\nbound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met\nbound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/citation-file value=0..0\n" at=place:sha256:4732a23c59b18c1875a9fa812de3550d89562c7ef8ce7cf17904527be72f4ceb by=reader:b2b02885a732 form=interval measure=count role=writes scope=receipts/readings/a1b8ddf809f5e4a7f91702aafea1df612d9abc9fc80c6b6ef26f5329b5dd69eb/ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 value=5..5 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/archive-conformance.publication.json value=sha256:6085a889a9b94fd27e55e004fd46919fe5889fc1851cc22bfd86d2c97badb4c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/archive.md value=sha256:eedbd0ca544377080763c035053e532bfc46ddd496c3794e0cac2e0d6286e3a9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/c9e9566f19db9feb6a8a7619315bdb19d66f2cd7bba90f911fc047b89f4ebd8f value=sha256:16bde0f020e1c04bc72d6b4b958f835033fbfbd3e952482e9c2a98690ab93b11\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/archive-conformance.json value=sha256:e14e5007e6b097be39964a749a09fb7143f652129869a8902743eee3ec9b89ea\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/archive-conformance.json value=sha256:1e2a1ce055edb12da86e1ddbbf78e1f9cb910ad6fe14f57fc3e360751e604a4c\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/archive-conformance.json value=sha256:c9e9566f19db9feb6a8a7619315bdb19d66f2cd7bba90f911fc047b89f4ebd8f\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/c9e9566f19db9feb6a8a7619315bdb19d66f2cd7bba90f911fc047b89f4ebd8f role=reads scope=contract/published/pipeline/archive value=docs/contracts/archive-conformance.publication.json|docs/contracts/archive.md|samples/no/archive-conformance.json|samples/yes/archive-conformance.json|vectors/archive-conformance.json\n" at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/508a694913f8447f0c9569dbf49d5619e7028e07b69af9c6f630fe29bbfe354e/5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd value=sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/attest-evidence.publication.json value=sha256:51225a212193c1a629ef3cf8d3ca8e139f69b58f80b60133792ac6b72aaae316\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/evidence-view.md value=sha256:522740051150e3b35dcca31bcc398b18b8cc8b5f9b18417ec4c676f5ea59e61d\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:2e9ca8a6060743adece28f1696f8e8f5f574e0fa864371de747e0fe1a013b287\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/attest-evidence-view value=docs/contracts/attest-evidence.publication.json|docs/contracts/evidence-view.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/1c1a518629e0254cf043dea049ca020ac9d66b6aa64c724d32f79c141f5ebbe4/413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 value=sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli-fold.publication.json value=sha256:5d88d4a260719a849092adcbea57f1b06f19a558e40b669023655b55a3de94e1\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli.md value=sha256:4d1782d30d6d695b0cdad7db1bc2453b98adfcb3f7f8574326ddc794bfa9cf12\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:2e9ca8a6060743adece28f1696f8e8f5f574e0fa864371de747e0fe1a013b287\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/cli/fold value=docs/contracts/cli-fold.publication.json|docs/contracts/cli.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/b90f9482ce70efa52b839dcaceefb9f1fefbcf4a6da624ca7d989fdb78e86ae0/32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 value=sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli-land.publication.json value=sha256:38b6840ffdef2980fc0b847ba0ae35d45e262cd5fd4f608da44461d56cc35ff3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli.md value=sha256:4d1782d30d6d695b0cdad7db1bc2453b98adfcb3f7f8574326ddc794bfa9cf12\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:2e9ca8a6060743adece28f1696f8e8f5f574e0fa864371de747e0fe1a013b287\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/cli/land value=docs/contracts/cli-land.publication.json|docs/contracts/cli.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/b22901c107d927b59527e324dbf3ed5fe2e442829f86e2ffb47e98c48a57f299/8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 value=sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli-sign.publication.json value=sha256:0bf76a96b266578596b73c1dde2e9958f8d5f0fd2ab1c8b02c70c808e0085744\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/cli.md value=sha256:4d1782d30d6d695b0cdad7db1bc2453b98adfcb3f7f8574326ddc794bfa9cf12\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/53cc8abaccbcb37385fdc1acd1d251c4d3d77ca44df4f8436ee498acf40d4fde value=sha256:00aead09e43d6551562a77414793d5c7252676e3222b1bfb85fb2bb6dbb30654\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/signing-port.json value=sha256:bb45e5385c5efad77607edfcd79af5faa5cb064d30b2d27a0b9c79de807bca15\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/signing-port.json value=sha256:2bbf951b29ba00e715443c1ea24884a46296ee2a5bf7fd03f6fd681ea0eacb69\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/signing-port.json value=sha256:53cc8abaccbcb37385fdc1acd1d251c4d3d77ca44df4f8436ee498acf40d4fde\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/53cc8abaccbcb37385fdc1acd1d251c4d3d77ca44df4f8436ee498acf40d4fde role=reads scope=contract/published/cli/sign value=docs/contracts/cli-sign.publication.json|docs/contracts/cli.md|samples/no/signing-port.json|samples/yes/signing-port.json|vectors/signing-port.json\n" at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/30bb47bf7c73d4e74f396581010e2032eeeed2179496e73fa04d0fbcf2c6b540/04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 value=sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-citation-file.publication.json value=sha256:8fd8362d2b64292c0eb5b587984e67f65417df611ff0f35876af58e42ab3f2b6\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:e452d45c41277a13181f4b01dbbda8bad51e3c618dc3fd8e27052168d4efb1c4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/citation-file value=docs/contracts/documents.md|docs/contracts/view-citation-file.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/a1b8ddf809f5e4a7f91702aafea1df612d9abc9fc80c6b6ef26f5329b5dd69eb/ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 value=sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-explanation.publication.json value=sha256:c60066fb7a05399af4f62aff0e30a18c5ceb79c229bef6fa2369acd880eec428\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:e452d45c41277a13181f4b01dbbda8bad51e3c618dc3fd8e27052168d4efb1c4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/explanation value=docs/contracts/documents.md|docs/contracts/view-explanation.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/02a8c2ff35335f7a1c2500c41f57a85782bba3ca0d62cd4ce81cc06d26b16b0d/8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 value=sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-guide.publication.json value=sha256:40c884f7e1f7004330767073288fca859239cb621a565e5a4348b3b5243854fd\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:e452d45c41277a13181f4b01dbbda8bad51e3c618dc3fd8e27052168d4efb1c4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/guide value=docs/contracts/documents.md|docs/contracts/view-guide.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/14297ddb7404c5404df6cf5b4fc55d6f1727d7c8ffecfab3b5c6d71b5187a63a/52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 value=sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-manifest-render.publication.json value=sha256:51b9a7d904d0d6986c8e392c3bd9a64edc75ecbadbdc5056d6dd69cf380e6d02\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:e452d45c41277a13181f4b01dbbda8bad51e3c618dc3fd8e27052168d4efb1c4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/manifest-render value=docs/contracts/documents.md|docs/contracts/view-manifest-render.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/24f823b8091ad0e6bc2523012e42e09f3d2b8340484fa2a8bf5f5c8ff28cfc2f/a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 value=sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-readme-historical.publication.json value=sha256:74d5de324c84700455fd5d1f27ade0db283bc819bd7077fa0ba5b9bb91185ebf\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:e452d45c41277a13181f4b01dbbda8bad51e3c618dc3fd8e27052168d4efb1c4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/readme-historical value=docs/contracts/documents.md|docs/contracts/view-readme-historical.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/934a5bb815ce02a97af891d9a8cb4e49fb2e9ab75fa7bc17ddb00f02537766d5/5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 value=sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-reference.publication.json value=sha256:2d79bedaeb09f7a983d7825f2155f5830c2a12a913a77f5f8246391015c63bda\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:e452d45c41277a13181f4b01dbbda8bad51e3c618dc3fd8e27052168d4efb1c4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/reference value=docs/contracts/documents.md|docs/contracts/view-reference.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/1142aa9847fe2d5dcba0d1c313b1770cd7f0d23f26d2289faf3204e43568d5c9/36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 value=sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-release-workflow-render.publication.json value=sha256:bddd22afcb7479de5e1fa835bbd7edaca668859a33eb58a64aa9e94c86aed0a1\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:e452d45c41277a13181f4b01dbbda8bad51e3c618dc3fd8e27052168d4efb1c4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/release-workflow-render value=docs/contracts/documents.md|docs/contracts/view-release-workflow-render.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/07a6fa8f4c5abcf023a4643b0830e86f82ec280c37c760f9f87729c1fde8cbb6/13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 value=sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-tsconfig.publication.json value=sha256:017235397bbd6cae017dc257fb2db87380325046ae87b63f2db53b0d6205e904\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:e452d45c41277a13181f4b01dbbda8bad51e3c618dc3fd8e27052168d4efb1c4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/tsconfig value=docs/contracts/documents.md|docs/contracts/view-tsconfig.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/e5ea9ccc092991c41e0ea296aed52cae2e1e52c8c25d829ad30fdcbe85be26a7/c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 value=sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/documents.md value=sha256:a22d9b27c7be1c168ea985d703a9c86c19157c8e24193e7dcc34d3f33ea44375\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-usage-profile.publication.json value=sha256:e0fe246c4768c2022524fe54d7eb0849a2a8cbc3b3ba9e94ea34f5fa9a2b84ef\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=sha256:e452d45c41277a13181f4b01dbbda8bad51e3c618dc3fd8e27052168d4efb1c4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/historical-document-views.json value=sha256:85d091dd6fbf4c3438e7f04700d70bbded4260eb38804e049a1bc9c301bbedb9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/historical-document-views.json value=sha256:1e375ddc0be9538404e7258e862a60fc5454cd2b7dde1afe27b28de0228467bc\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/historical-document-views.json value=sha256:6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 role=reads scope=contract/published/view/usage-profile value=docs/contracts/documents.md|docs/contracts/view-usage-profile.publication.json|samples/no/historical-document-views.json|samples/yes/historical-document-views.json|vectors/historical-document-views.json\n" at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/c6e8ddf2f5173b21fa27eeab80a29deafc9897d88db7d07ba99dea3685a53d92/3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 value=sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/typed-object.md value=sha256:73925fbdaa4a9418b63fe28a9f6d36430eaaa59eb357657cdbe45129fb9454fe\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/typed-object.publication.json value=sha256:377034f586a73b4c3ae899d295005b9b970443694ae78622cb5249e287082e20\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/32f8b095f4a240c6a3c640797a9f0fbc05506fa623e7cb61f0d9fd8c8bd9124a value=sha256:7e912ae90a13e0ebe5dcca8516a31cacc9efd861c2f22f2e1009d47134beb908\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/typed-object.json value=sha256:03ac2a40efbea4232025e99d37f06bca03292fcfe3c41c8c27dd5647080951a0\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/typed-object.json value=sha256:b54bac71e89800f09cb55331a4cebde2e280d5240b062a317ffabbc02edcfa7d\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/typed-object.json value=sha256:32f8b095f4a240c6a3c640797a9f0fbc05506fa623e7cb61f0d9fd8c8bd9124a\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/32f8b095f4a240c6a3c640797a9f0fbc05506fa623e7cb61f0d9fd8c8bd9124a role=reads scope=contract/published/typed-object-sample value=docs/contracts/typed-object.md|docs/contracts/typed-object.publication.json|samples/no/typed-object.json|samples/yes/typed-object.json|vectors/typed-object.json\n" at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/2f14480f0cb138e9d65402e161118bd33173091f4f0476a0956f268ef48204fe/8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa value=sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-card.publication.json value=sha256:1d50d3bce5ec3155cf5ac1f32160a27cbb5c67b4bf23d8397dc5b3fb192cd709\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 value=sha256:d51064b1c3957a283e3ab745be6e38b1b1307d80b5373f7d62aad06d5b212c52\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/program-views.json value=sha256:bf6b2fbd11290920e31f46c18012be2230ffdab47dc7013d3a0aafae1fd6cbe7\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/program-views.json value=sha256:b1e8feb6839050a09410dade936cbb827ac438ff8c7b962e5fefd50f601d1b15\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/program-views.json value=sha256:a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 role=reads scope=contract/published/view/card value=docs/contracts/view-card.publication.json|docs/contracts/views.md|samples/no/program-views.json|samples/yes/program-views.json|vectors/program-views.json\n" at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/8dfb03e666dcb1836aebd396a87c004cb243bfb5b6d231f54d5cea627fbcf1a5/41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 value=sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-help.publication.json value=sha256:90c3752d23c7429f512ed780ad293652db5b3098d91bdb63d1f4b86753b1aee0\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:2e9ca8a6060743adece28f1696f8e8f5f574e0fa864371de747e0fe1a013b287\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/view/help value=docs/contracts/view-help.publication.json|docs/contracts/views.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/264d1f241f59b1cc55184a8caa9424f64b37060c618401f0410631c0deac9a80/4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 value=sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-lines.publication.json value=sha256:a6107a627b7a2cf18d96bbb1a21f61b1a3562c7eb6a67252cf94ac4964e7c23e\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:2e9ca8a6060743adece28f1696f8e8f5f574e0fa864371de747e0fe1a013b287\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/view/lines value=docs/contracts/view-lines.publication.json|docs/contracts/views.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/83d362bbceb8696d461393a6123faa0a4e18b772fb84b880b166b68dee976d45/051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b value=sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-programs.publication.json value=sha256:d22ea5b51f369bdb89d8ff762cb61f5c05994c9eaac3e59131ed40139b2294f7\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 value=sha256:d51064b1c3957a283e3ab745be6e38b1b1307d80b5373f7d62aad06d5b212c52\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/program-views.json value=sha256:bf6b2fbd11290920e31f46c18012be2230ffdab47dc7013d3a0aafae1fd6cbe7\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/program-views.json value=sha256:b1e8feb6839050a09410dade936cbb827ac438ff8c7b962e5fefd50f601d1b15\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/program-views.json value=sha256:a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 role=reads scope=contract/published/view/programs value=docs/contracts/view-programs.publication.json|docs/contracts/views.md|samples/no/program-views.json|samples/yes/program-views.json|vectors/program-views.json\n" at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/95609518b145f36d265c51bfb52c12bd05e306aa9a9d9bbcb788406d80660524/70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 value=sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-receipts.publication.json value=sha256:1275c2f0fc854ca3c115aec57b6a2800425026a12c1c35c874857c6fa2f692e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=sha256:2e9ca8a6060743adece28f1696f8e8f5f574e0fa864371de747e0fe1a013b287\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/native-views.json value=sha256:7750551a70599cbecb37ee5659797ba8ff1dd84a11e17cbbe0c77ff62aecb3a5\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/native-views.json value=sha256:888de96de74e6944d18d425245093845c54dd8374adc6c56f589c3e40da9f2e3\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/native-views.json value=sha256:1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc role=reads scope=contract/published/view/receipts value=docs/contracts/view-receipts.publication.json|docs/contracts/views.md|samples/no/native-views.json|samples/yes/native-views.json|vectors/native-views.json\n" at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/210190f8555962eb95389dbb6f2fbb248d62a0ea592b34e8d97c6be18abb00d7/d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 value=sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-walk.md value=sha256:fc4cf29128d028c49380db8c28f8b68b692b8f25e577ed3eec238cb805cb18b6\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-walk.publication.json value=sha256:d9f7d39ef313e213748a77e190fb6347aad98e378cfbfb66e97eb7e86d39e2cd\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/d31a059a2eb8b137ec026d0c5b7b2aea5de809f349526c6bc4a916abe14a0113 value=sha256:6cfc860799fccb86632dfb0685fee50527e909306910337bed3eba115abfd850\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/walk.json value=sha256:9e1b17f0e99285b1d89cf1967158422836ebdcd6542b2eea3cee074c5c26c233\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/walk.json value=sha256:d316e1ca1d07ee2a70038d1ee0df1d6e0d318f71d6364fd13377d2b9ee26a0ac\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/walk-publication.json value=sha256:d31a059a2eb8b137ec026d0c5b7b2aea5de809f349526c6bc4a916abe14a0113\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/d31a059a2eb8b137ec026d0c5b7b2aea5de809f349526c6bc4a916abe14a0113 role=reads scope=contract/published/view/walk value=docs/contracts/view-walk.md|docs/contracts/view-walk.publication.json|samples/no/walk.json|samples/yes/walk.json|vectors/walk-publication.json\n" at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/bce6461bf205cc9bb4967563ebe076b0df551ef542015bad57311d2d55ec223a/856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 value=sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 +bound-lock/1 about="bound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/view-why.publication.json value=sha256:b554a63a3c9f2cba85cbc4cc4809324f0cd8c4903326029912270bceda206acb\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=docs/contracts/views.md value=sha256:66851597b8afad44ebbd89af57c07316c03876d5e6a51853e6a74665fc32f8c8\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=execute/2bf6a95f93dabc27c79db679eaf9ad4f5a6e7835e74d762df62fe256c5ea21c1 value=sha256:33f5d0749077df0f67542a0d411225d1af683195a5f5eb77c2516e6240ef81e9\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=implementation value=sha256:b2b02885a732871a575fd70e2cbe084ac3683c0460ff132c90f61c77e367788f\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/no/query-views.json value=sha256:a161c1c33dcfd357b610ae6835ecc4b16d7918a9216bab07ecb4de132e2b2ba4\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=samples/yes/query-views.json value=sha256:105bdcf69a8179659033c898c8e27ee3d37aabdd0fb6f221a6affe10c579e317\nbound-lock/1 at=policy:input-identity by=host form=alphabet measure=digest role=writes scope=vectors/query-views.json value=sha256:2bf6a95f93dabc27c79db679eaf9ad4f5a6e7835e74d762df62fe256c5ea21c1\nbound-lock/1 at=receipt:1 form=alphabet measure=reads needs=execute/2bf6a95f93dabc27c79db679eaf9ad4f5a6e7835e74d762df62fe256c5ea21c1 role=reads scope=contract/published/view/why value=docs/contracts/view-why.publication.json|docs/contracts/views.md|samples/no/query-views.json|samples/yes/query-views.json|vectors/query-views.json\n" at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=alphabet measure=bytes role=writes scope=receipts/readings/033a648a40b8bf19e7fc9798f7c55ca57db97721207920355360e84e46c9a001/751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e value=sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e +bound-lock/1 at=place:sha256:042557dcd423efa0e90f71e7727ce4688e03905297e90c02b5e71a3c5a97c61a by=reader:b2b02885a732 form=interval measure=count role=reads scope=proof/execute/6a40dad06f119dee45834bf4252c138c7368c07c5a814068a573da7f4bc72a94 value=0..0 +bound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met +bound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/signing-port.json value=met +bound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/signing-port.json value=met +bound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/signing-port.json value=met +bound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/cli/sign value=0..0 +bound-lock/1 at=place:sha256:04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/30bb47bf7c73d4e74f396581010e2032eeeed2179496e73fa04d0fbcf2c6b540/04501e43e79c81a87f13e22336615f3a7a8864400174122a06b87ae3b9028db0 value=0.539999..0.539999 +bound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met +bound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met +bound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met +bound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met +bound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/lines value=0..0 +bound-lock/1 at=place:sha256:051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/83d362bbceb8696d461393a6123faa0a4e18b772fb84b880b166b68dee976d45/051345a41b462083eafd05ae0d8719604a7ce73cd59d0dbc4eb543b943f2865b value=0.600332..0.600332 +bound-lock/1 at=place:sha256:0a4b4afaa4a562d423d1c70e9729ca839aeec3e80e9898d300d10979f3e2b3e9 by=reader:b2b02885a732 form=interval measure=count role=reads scope=proof/execute/32f8b095f4a240c6a3c640797a9f0fbc05506fa623e7cb61f0d9fd8c8bd9124a value=0..0 +bound-lock/1 at=place:sha256:121b04a9bd7392ea86300b91ae9c752a5f26339401d654a37d7a2f717874ec8f by=reader:b2b02885a732 form=interval measure=count role=reads scope=proof/execute/c9e9566f19db9feb6a8a7619315bdb19d66f2cd7bba90f911fc047b89f4ebd8f value=0..0 +bound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met +bound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met +bound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met +bound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met +bound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/release-workflow-render value=0..0 +bound-lock/1 at=place:sha256:13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/07a6fa8f4c5abcf023a4643b0830e86f82ec280c37c760f9f87729c1fde8cbb6/13e7855eb0f1ee1bf7213b0795be90f71ed9d3c13272bd537bd1d65bc40a4f86 value=0.622528..0.622528 +bound-lock/1 at=place:sha256:22f08e2c8de3c3e09f54b5bd11ce21921c2e378b7b1c9475cf54af3b4b01124b by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published value=0..0 +bound-lock/1 at=place:sha256:2a27f5a2270d44c49e58979560e39237c8ce9627ceba374510d8875b00795409 by=reader:b2b02885a732 form=interval measure=count role=reads scope=proof/execute/a10f688f48b2a9686cfe9ebc3908fa06d04cb0d3e86602a51d47511076f81f71 value=0..0 +bound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met +bound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met +bound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met +bound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met +bound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/cli/fold value=0..0 +bound-lock/1 at=place:sha256:32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/b90f9482ce70efa52b839dcaceefb9f1fefbcf4a6da624ca7d989fdb78e86ae0/32ef72c29da24efa122cc3c667e589e617b13e9b274b635a965c589c163bf230 value=0.487707..0.487707 +bound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met +bound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met +bound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met +bound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met +bound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/reference value=0..0 +bound-lock/1 at=place:sha256:36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/1142aa9847fe2d5dcba0d1c313b1770cd7f0d23f26d2289faf3204e43568d5c9/36aa9df7384e1d579fbdb4e6a544f0f2ce08e69e6de790c48d97e7342d971ea5 value=0.594729..0.594729 +bound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met +bound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met +bound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met +bound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met +bound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/usage-profile value=0..0 +bound-lock/1 at=place:sha256:3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/c6e8ddf2f5173b21fa27eeab80a29deafc9897d88db7d07ba99dea3685a53d92/3b658fa7c107afb7b3b6f9f028a63c184fc34e849c77d5b9ef21e6e4717159f9 value=0.604820..0.604820 +bound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/evidence-view.md value=met +bound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met +bound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met +bound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met +bound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/attest-evidence-view value=0..0 +bound-lock/1 at=place:sha256:413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/1c1a518629e0254cf043dea049ca020ac9d66b6aa64c724d32f79c141f5ebbe4/413185ee73d002738720c0c36d004d407e5781e9a4434d1e33276c2ba0963833 value=0.492216..0.492216 +bound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met +bound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/program-views.json value=met +bound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/program-views.json value=met +bound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/program-views.json value=met +bound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/card value=0..0 +bound-lock/1 at=place:sha256:41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/8dfb03e666dcb1836aebd396a87c004cb243bfb5b6d231f54d5cea627fbcf1a5/41c996b4b8186ebb790eda106f35bfe7dd37523c958c2be8dcd1e308f4f6a433 value=0.690588..0.690588 +bound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met +bound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met +bound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met +bound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met +bound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/help value=0..0 +bound-lock/1 at=place:sha256:4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/264d1f241f59b1cc55184a8caa9424f64b37060c618401f0410631c0deac9a80/4abb0272a922ef40e66945b7af632fb268beee8dcdcb3d1bb7d1093ded744b98 value=0.578555..0.578555 +bound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met +bound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met +bound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met +bound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met +bound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/guide value=0..0 +bound-lock/1 at=place:sha256:52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/14297ddb7404c5404df6cf5b4fc55d6f1727d7c8ffecfab3b5c6d71b5187a63a/52da94935948d141087f798111b96da916ee76ea789c235c569958eb7140bd15 value=0.599430..0.599430 +bound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/archive.md value=met +bound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/archive-conformance.json value=met +bound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/archive-conformance.json value=met +bound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/archive-conformance.json value=met +bound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/pipeline/archive value=0..0 +bound-lock/1 at=place:sha256:5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/508a694913f8447f0c9569dbf49d5619e7028e07b69af9c6f630fe29bbfe354e/5e1c3a05f8b359e4d18281a449c85183c1c08be76b429eda17dcb002813a77fd value=0.322100..0.322100 +bound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met +bound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met +bound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met +bound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met +bound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/readme-historical value=0..0 +bound-lock/1 at=place:sha256:5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/934a5bb815ce02a97af891d9a8cb4e49fb2e9ab75fa7bc17ddb00f02537766d5/5f857774a945dc51c72207c4a3dc049eae9649b99eddb7c2145f293e21dd9ad5 value=0.597101..0.597101 +bound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met +bound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/program-views.json value=met +bound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/program-views.json value=met +bound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/program-views.json value=met +bound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/programs value=0..0 +bound-lock/1 at=place:sha256:70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/95609518b145f36d265c51bfb52c12bd05e306aa9a9d9bbcb788406d80660524/70e84bea0eb0ffb40f717ccb5e2c3ce7459604382599664f6ea0a4f5264dc827 value=0.614707..0.614707 +bound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met +bound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/query-views.json value=met +bound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/query-views.json value=met +bound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/query-views.json value=met +bound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/why value=0..0 +bound-lock/1 at=place:sha256:751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/033a648a40b8bf19e7fc9798f7c55ca57db97721207920355360e84e46c9a001/751fb61f60e564b6050a13125ba7765841cf385536793eab6178ad2aac8b959e value=0.577785..0.577785 +bound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/view-walk.md value=met +bound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/walk.json value=met +bound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/walk.json value=met +bound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/walk-publication.json value=met +bound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/walk value=0..0 +bound-lock/1 at=place:sha256:856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/bce6461bf205cc9bb4967563ebe076b0df551ef542015bad57311d2d55ec223a/856d8afb5516b5d96c64c94828040b38861e590500bd0cf7ca8db1021d914ac8 value=0.738670..0.738670 +bound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/cli.md value=met +bound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met +bound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met +bound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met +bound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/cli/land value=0..0 +bound-lock/1 at=place:sha256:8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/b22901c107d927b59527e324dbf3ed5fe2e442829f86e2ffb47e98c48a57f299/8cdac38dddefb4abcbaebac928e32d5d6cbab27208389ab7568ffb5d67b42c40 value=0.507142..0.507142 +bound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met +bound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met +bound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met +bound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met +bound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/explanation value=0..0 +bound-lock/1 at=place:sha256:8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/02a8c2ff35335f7a1c2500c41f57a85782bba3ca0d62cd4ce81cc06d26b16b0d/8e3dd3e686262ea5a72e35ba1c94df66bb6f7cb654a34e384c738e7bc82da2a3 value=0.578647..0.578647 +bound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/typed-object.md value=met +bound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/typed-object.json value=met +bound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/typed-object.json value=met +bound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/typed-object.json value=met +bound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/typed-object-sample value=0..0 +bound-lock/1 at=place:sha256:8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/2f14480f0cb138e9d65402e161118bd33173091f4f0476a0956f268ef48204fe/8ec66536d31c6cd8efae786d411e4a269cabe3f85111216ae1fadcdb7d66b8fa value=0.690712..0.690712 +bound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met +bound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met +bound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met +bound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met +bound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/manifest-render value=0..0 +bound-lock/1 at=place:sha256:a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/24f823b8091ad0e6bc2523012e42e09f3d2b8340484fa2a8bf5f5c8ff28cfc2f/a2461f049d6d78725bc131ed2ee94b496194dff4a6061f379c27b4983c7043c5 value=0.634842..0.634842 +bound-lock/1 at=place:sha256:b6f7c073d308d91206464b5c60b30e6d6efb50a05f8f56f435b073042b086d78 by=reader:b2b02885a732 form=interval measure=count role=reads scope=proof/execute/d31a059a2eb8b137ec026d0c5b7b2aea5de809f349526c6bc4a916abe14a0113 value=0..0 +bound-lock/1 at=place:sha256:c2fff60d8f9d017cf470abed74b903892e2170571fdafa943ac8554226457d88 by=reader:b2b02885a732 form=interval measure=count role=reads scope=proof/execute/2bf6a95f93dabc27c79db679eaf9ad4f5a6e7835e74d762df62fe256c5ea21c1 value=0..0 +bound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met +bound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met +bound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met +bound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met +bound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/tsconfig value=0..0 +bound-lock/1 at=place:sha256:c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/e5ea9ccc092991c41e0ea296aed52cae2e1e52c8c25d829ad30fdcbe85be26a7/c3bd946769dac9582a870f9ea681a15febb9354446e9ba2ce155342b3017e004 value=0.614071..0.614071 +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=alphabet measure=id role=reads scope=source/locations/duplicate/src value=none +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=alphabet measure=id role=reads scope=source/locations/literal/host value=none +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=alphabet measure=id role=reads scope=source/locations/literal/key value=none +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=alphabet measure=id role=reads scope=source/locations/literal/org value=none +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=alphabet measure=id role=reads scope=source/locations/literal/path value=none +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=interval measure=count role=reads scope=literal/host value=0..0 +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=interval measure=count role=reads scope=literal/key value=0..0 +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=interval measure=count role=reads scope=literal/org value=0..0 +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=interval measure=count role=reads scope=literal/path value=0..0 +bound-lock/1 at=place:sha256:ced99d1447e1c3c373c0617672fceedc26f9cc6e12dda2cae2e35bcd2cf51817 by=reader:5a6511cca501 form=interval measure=duplicate-bodies role=reads scope=duplicate/src value=0..0 +bound-lock/1 at=place:sha256:d1eff62547abc3a7d870245437972f9878fd3250965947574ce550abfb30ab3d by=reader:b2b02885a732 form=interval measure=count role=reads scope=proof/execute/53cc8abaccbcb37385fdc1acd1d251c4d3d77ca44df4f8436ee498acf40d4fde value=0..0 +bound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/views.md value=met +bound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/native-views.json value=met +bound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/native-views.json value=met +bound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/native-views.json value=met +bound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/receipts value=0..0 +bound-lock/1 at=place:sha256:d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/210190f8555962eb95389dbb6f2fbb248d62a0ea592b34e8d97c6be18abb00d7/d7b72f8dbcc288cc7e6b80adebc62031748962fef941bd57cd1362389751aa34 value=0.599264..0.599264 +bound-lock/1 at=place:sha256:da9efce6c2ba92fb59632d4bd5c46f4e209efeea965b8675d064e8c3e9e59ceb by=reader:b2b02885a732 form=interval measure=count role=reads scope=proof/execute/1f17bde653377103acf8888717b0ad5c2b83b79860a4833be93270532b76c0dc value=0..0 +bound-lock/1 at=place:sha256:e5d10d69757942eb616e8ec8263cd6fcc7154ecc5a60cbde9b4d01594f9187ff by=reader:04feef01a8c5 form=interval measure=unreceipted role=reads scope=door/unreceipted value=0..0 +bound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=docs/contracts/documents.md value=met +bound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/no/historical-document-views.json value=met +bound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=samples/yes/historical-document-views.json value=met +bound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=alphabet measure=status role=reads scope=vectors/historical-document-views.json value=met +bound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=interval measure=count role=reads scope=contract/published/view/citation-file value=0..0 +bound-lock/1 at=place:sha256:ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 by=reader:b2b02885a732 form=interval measure=s role=writes scope=receipts/readings/a1b8ddf809f5e4a7f91702aafea1df612d9abc9fc80c6b6ef26f5329b5dd69eb/ec7e019483afae97f3aacd7f0a9465a06099dbb50ade21c9f96b69f3d65b4e39 value=0.661802..0.661802 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=cli-exit-closed role=reads scope=cli/exit/closed value=0..0 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=cli-exit-refuse role=reads scope=cli/exit/refuse value=1..1 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=cli-exit-usage role=reads scope=cli/exit/usage value=2..2 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=cli-flags role=reads scope=cli/flags value=6..6 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=count role=reads scope=admission/one-boundary value=0..0 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=count role=reads scope=idempotent value=0..0 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=count role=reads scope=nothing-deleted value=0..0 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=count role=reads scope=offline value=0..0 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=count role=reads scope=one-writer value=0..0 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=count role=reads scope=resolve-by-url value=0..0 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:20edadeedeb3 form=interval measure=count role=reads scope=the-stranger value=0..0 +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:bab6f172fc4d form=alphabet measure=text role=reads scope=capture/help value="closing: verbs fold land sign · flags --as --check --key --key-file --signer --place\n" +bound-lock/1 at=place:sha256:fd66d7455e9d2225f9de84d297607702212b89666b0036eb1a938ff6d74303fe by=reader:bab6f172fc4d 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" +bound-lock/1 at=cone:884a4084cac11b2176e2126c4cc56d1886b3a3ebe9e24adbfe4f1e939326f133 by=judge form=alphabet measure=status role=writes scope=contract/published/attest-evidence-view value=present +bound-lock/1 at=cone:884a4084cac11b2176e2126c4cc56d1886b3a3ebe9e24adbfe4f1e939326f133 by=judge form=alphabet measure=cone role=writes scope=contract/published/attest-evidence-view value=docs/contracts/evidence-view.md|samples/yes/attest-evidence.json|vectors/attest-evidence.json|samples/no/attest-evidence.json +bound-lock/1 at=cone:c7a36f42bad106ddb2c7c99a9413570c23194e5d63e952d89fb85c89cc24f72c by=judge form=alphabet measure=status role=writes scope=contract/published/typed-object-sample value=present +bound-lock/1 at=cone:c7a36f42bad106ddb2c7c99a9413570c23194e5d63e952d89fb85c89cc24f72c by=judge form=alphabet measure=cone role=writes scope=contract/published/typed-object-sample value=docs/contracts/typed-object.md|samples/yes/typed-object.json|vectors/typed-object.json|samples/no/typed-object.json +bound-lock/1 at=cone:0abeb4d9e38dbbf12bf63c9e20e50b4066f7cae49b2a42a0b93e3ee6ea34aedb by=judge form=alphabet measure=status role=writes scope=law/a-fact-is-a-printed-line value=present +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 +bound-lock/1 at=cone:957f15a6bf76172db7ad6fc3ad985d3a2d29d53b0d7f26496278534a6b27eaa5 by=judge form=alphabet measure=status role=writes scope=law/a-refuse-plants value=present +bound-lock/1 at=cone:957f15a6bf76172db7ad6fc3ad985d3a2d29d53b0d7f26496278534a6b27eaa5 by=judge form=alphabet measure=cone role=writes scope=law/a-refuse-plants value=samples/yes/a-refuse-plants.json|samples/no/a-refuse-plants.json +bound-lock/1 at=cone:c4e8823785cb957bd016ff4f294f1fa5c89213b8cac249ffdc93b972288b8d48 by=judge form=alphabet measure=status role=writes scope=law/one-lot-one-place value=present +bound-lock/1 at=cone:c4e8823785cb957bd016ff4f294f1fa5c89213b8cac249ffdc93b972288b8d48 by=judge form=alphabet measure=cone role=writes scope=law/one-lot-one-place value=samples/yes/one-lot-one-place.json|samples/no/one-lot-one-place.json +bound-lock/1 at=cone:9b1915d477c82eba64f0b9a7928018db772788398ca8a13afd438831417ee43a by=judge form=alphabet measure=status role=writes scope=law/three-verbs value=present +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 +bound-lock/1 at=cone:f4bf42894d608f16e39cb757609c9d0a82f50b31749b13599a4fc5ee303fcdf8 by=judge form=alphabet measure=status role=writes scope=law/verify-agrees value=present +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 +bound-lock/1 at=cone:4f4c54c8366429624bda06fce58ebb3b1a042959a9ef4ec4a9ccf66a806a1862 by=judge form=alphabet measure=status role=writes scope=plan/0.1.5/0 value=present +bound-lock/1 at=cone:4f4c54c8366429624bda06fce58ebb3b1a042959a9ef4ec4a9ccf66a806a1862 by=judge form=alphabet measure=cone role=writes scope=plan/0.1.5/0 value=docs/contracts/archive.md|docs/contracts/cli.md|docs/contracts/documents.md|docs/contracts/evidence-view.md|docs/contracts/typed-object.md|docs/contracts/view-walk.md|docs/contracts/views.md|samples/no/archive-conformance.json|samples/no/historical-document-views.json|samples/no/native-views.json|samples/no/program-views.json|samples/no/query-views.json|samples/no/signing-port.json|samples/no/typed-object.json|samples/no/walk.json|samples/yes/archive-conformance.json|samples/yes/historical-document-views.json|samples/yes/native-views.json|samples/yes/program-views.json|samples/yes/query-views.json|samples/yes/signing-port.json|samples/yes/typed-object.json|samples/yes/walk.json|vectors/archive-conformance.json|vectors/historical-document-views.json|vectors/native-views.json|vectors/program-views.json|vectors/query-views.json|vectors/signing-port.json|vectors/typed-object.json|vectors/walk-publication.json +bound-lock/1 at=cone:11f7abdf7e8bbf772036c7500ba0ae434322e58060660dc70dadf7e4e6b56a09 by=judge form=alphabet measure=status role=writes scope=plan/0.1.5/1 value=present +bound-lock/1 at=cone:11f7abdf7e8bbf772036c7500ba0ae434322e58060660dc70dadf7e4e6b56a09 by=judge form=alphabet measure=cone role=writes scope=plan/0.1.5/1 value=docs/contracts/evidence-view.md|docs/contracts/typed-object.md|samples/no/native-views.json|samples/no/typed-object.json|samples/yes/native-views.json|samples/yes/typed-object.json|vectors/native-views.json|vectors/typed-object.json +bound-lock/1 at=cone:a51fc81ce73cd48a5741c4452d0dded6e0ac1fb0bb2b027f8d53cd8fb455dd3c by=judge form=alphabet measure=status role=writes scope=plan/0.1.5/10 value=present +bound-lock/1 at=cone:a51fc81ce73cd48a5741c4452d0dded6e0ac1fb0bb2b027f8d53cd8fb455dd3c by=judge form=alphabet measure=cone role=writes scope=plan/0.1.5/10 value=docs/contracts/archive.md|samples/no/archive-conformance.json|samples/yes/archive-conformance.json|vectors/archive-conformance.json +bound-lock/1 at=cone:6bcea5aff31d62254f530d214dbc148ad7e150600b8159ca0744fa8971b96c39 by=judge form=alphabet measure=status role=writes scope=plan/0.1.5/2 value=present +bound-lock/1 at=cone:6bcea5aff31d62254f530d214dbc148ad7e150600b8159ca0744fa8971b96c39 by=judge form=alphabet measure=cone role=writes scope=plan/0.1.5/2 value=docs/contracts/cli.md|docs/contracts/typed-object.md|samples/no/native-views.json|samples/no/typed-object.json|samples/yes/native-views.json|samples/yes/typed-object.json|vectors/native-views.json|vectors/typed-object.json +bound-lock/1 at=cone:ce4177a1b040b374b91e9cd14fd92755b550e5ca8beef08f61f627fc69491a2b by=judge form=alphabet measure=status role=writes scope=plan/0.1.5/5 value=present +bound-lock/1 at=cone:ce4177a1b040b374b91e9cd14fd92755b550e5ca8beef08f61f627fc69491a2b by=judge form=alphabet measure=cone role=writes scope=plan/0.1.5/5 value=docs/contracts/view-walk.md|samples/no/walk.json|samples/yes/walk.json|vectors/walk-publication.json +bound-lock/1 at=cone:4a4e5fc8c830da1f949aac240ff6e7c197e8706984b8526c7ef3d86baa0c2fad by=judge form=alphabet measure=id role=writes scope=view/citation-file value=cff +bound-lock/1 at=cone:4a4e5fc8c830da1f949aac240ff6e7c197e8706984b8526c7ef3d86baa0c2fad by=judge form=alphabet measure=cone role=writes scope=view/citation-file value=CITATION.cff +bound-lock/1 at=cone:365c743258a4c10eecb88a67940f0335309823410cf35c84aaf63e32d46f0584 by=judge form=alphabet measure=id role=writes scope=view/contract-archive-reference value=text@3 +bound-lock/1 at=cone:365c743258a4c10eecb88a67940f0335309823410cf35c84aaf63e32d46f0584 by=judge form=alphabet measure=cone role=writes scope=view/contract-archive-reference value=docs/contracts/archive.md +bound-lock/1 at=cone:c332301a23990d1bf5d75063e49ff1346196f7f534dbd1561c84a28102d54850 by=judge form=alphabet measure=id role=writes scope=view/contract-cli-reference value=text@3 +bound-lock/1 at=cone:c332301a23990d1bf5d75063e49ff1346196f7f534dbd1561c84a28102d54850 by=judge form=alphabet measure=cone role=writes scope=view/contract-cli-reference value=docs/contracts/cli.md +bound-lock/1 at=cone:09f7c4549f5bedf5f69718de1fdab736179438d98b051bc4981fa58153595032 by=judge form=alphabet measure=id role=writes scope=view/contract-documents-reference value=text@3 +bound-lock/1 at=cone:09f7c4549f5bedf5f69718de1fdab736179438d98b051bc4981fa58153595032 by=judge form=alphabet measure=cone role=writes scope=view/contract-documents-reference value=docs/contracts/documents.md +bound-lock/1 at=cone:13a80404174f723c808cb6d9fdbbd1879365eb52e5697420405d33b4e59b0e88 by=judge form=alphabet measure=id role=writes scope=view/contract-evidence-view value=text@3 +bound-lock/1 at=cone:13a80404174f723c808cb6d9fdbbd1879365eb52e5697420405d33b4e59b0e88 by=judge form=alphabet measure=cone role=writes scope=view/contract-evidence-view value=docs/contracts/evidence-view.md +bound-lock/1 at=cone:0d5c69a8ee728f7fc46fb72d0263fb9615a869f5aa45711bc6eda8fcdbb13b78 by=judge form=alphabet measure=id role=writes scope=view/contract-typed-object value=text@3 +bound-lock/1 at=cone:0d5c69a8ee728f7fc46fb72d0263fb9615a869f5aa45711bc6eda8fcdbb13b78 by=judge form=alphabet measure=cone role=writes scope=view/contract-typed-object value=docs/contracts/typed-object.md +bound-lock/1 at=cone:ba75389da27e048c4e4b98421a8634dcc28cece59044f17e9b750e0f395707fa by=judge form=alphabet measure=id role=writes scope=view/contract-views-reference value=text@3 +bound-lock/1 at=cone:ba75389da27e048c4e4b98421a8634dcc28cece59044f17e9b750e0f395707fa by=judge form=alphabet measure=cone role=writes scope=view/contract-views-reference value=docs/contracts/views.md +bound-lock/1 at=cone:8be728de85cc67f5d73641a56411b01f0c6e835becde7fc6a78bb868c0a25d75 by=judge form=alphabet measure=id role=writes scope=view/contract-walk value=text@3 +bound-lock/1 at=cone:8be728de85cc67f5d73641a56411b01f0c6e835becde7fc6a78bb868c0a25d75 by=judge form=alphabet measure=cone role=writes scope=view/contract-walk value=docs/contracts/view-walk.md +bound-lock/1 at=cone:eadc21d159b5c149f760d9d0d25c4a8331c3496a62e4ea20359d1a5e42c6e74d by=judge form=alphabet measure=id role=writes scope=view/explanation value=idea|what-holds|refuses +bound-lock/1 at=cone:eadc21d159b5c149f760d9d0d25c4a8331c3496a62e4ea20359d1a5e42c6e74d by=judge form=alphabet measure=cone role=writes scope=view/explanation value=docs/why.md +bound-lock/1 at=cone:5af7aa019f81d75b150501e03cf4c96cce75f87d47ed0922c1f3179c14e5e67d by=judge form=alphabet measure=id role=writes scope=view/guide value=seq +bound-lock/1 at=cone:5af7aa019f81d75b150501e03cf4c96cce75f87d47ed0922c1f3179c14e5e67d by=judge form=alphabet measure=cone role=writes scope=view/guide value=docs/guide.md +bound-lock/1 at=cone:6833ff1f0b24aac254f98faaec3b86fb9cf490412c146a42b97b4fc8956bd28a by=judge form=alphabet measure=id role=writes scope=view/license-native value=text@3 +bound-lock/1 at=cone:6833ff1f0b24aac254f98faaec3b86fb9cf490412c146a42b97b4fc8956bd28a by=judge form=alphabet measure=cone role=writes scope=view/license-native value=LICENSE +bound-lock/1 at=cone:3868c919c92c0552f97ae721854395c17c2aa5a9b64342f62036fc114d5737fa by=judge form=alphabet measure=id role=writes scope=view/manifest-render value=text@3 +bound-lock/1 at=cone:3868c919c92c0552f97ae721854395c17c2aa5a9b64342f62036fc114d5737fa by=judge form=alphabet measure=cone role=writes scope=view/manifest-render value=package.json +bound-lock/1 at=cone:59724e66416f916e2d9596e9d8789df03b686bc2a01b0b81922f9d5ddc9dbf58 by=judge form=alphabet measure=id role=writes scope=view/publication-contract value=text@3 +bound-lock/1 at=cone:59724e66416f916e2d9596e9d8789df03b686bc2a01b0b81922f9d5ddc9dbf58 by=judge form=alphabet measure=cone role=writes scope=view/publication-contract value=docs/contracts/publication.md +bound-lock/1 at=cone:756211370bccab90c8ce45ca0219d3964337987235ddd99e3ee6e4017c9c295b by=judge form=alphabet measure=id role=writes scope=view/publication-inventory value=text@3 +bound-lock/1 at=cone:756211370bccab90c8ce45ca0219d3964337987235ddd99e3ee6e4017c9c295b by=judge form=alphabet measure=cone role=writes scope=view/publication-inventory value=docs/contracts/publication.inventory.json +bound-lock/1 at=cone:21d8bed8c1e59777af4f8172caed57c2fb58785cac84603fd15461d32deab6b1 by=judge form=alphabet measure=id role=writes scope=view/readme-historical value=hero@3|commands@3|idea@3 +bound-lock/1 at=cone:21d8bed8c1e59777af4f8172caed57c2fb58785cac84603fd15461d32deab6b1 by=judge form=alphabet measure=cone role=writes scope=view/readme-historical value=README.md +bound-lock/1 at=cone:b433194a5aa764c762f24a9773b08fbf76255061c5b6075137c28d7b678c0317 by=judge form=alphabet measure=id role=writes scope=view/reference value=term|set|ref +bound-lock/1 at=cone:b433194a5aa764c762f24a9773b08fbf76255061c5b6075137c28d7b678c0317 by=judge form=alphabet measure=cone role=writes scope=view/reference value=docs/reference.md +bound-lock/1 at=cone:83acd4200e0d85822ec7758f1425c8ece7e8ca0523660aa6bf2f17484642a79e by=judge form=alphabet measure=id role=writes scope=view/release-workflow-render value=text@3 +bound-lock/1 at=cone:83acd4200e0d85822ec7758f1425c8ece7e8ca0523660aa6bf2f17484642a79e by=judge form=alphabet measure=cone role=writes scope=view/release-workflow-render value=.github/workflows/release.yml +bound-lock/1 at=cone:66e7bc40fe32c8139457185743f8be060457cd04ad687f7593e181f254f99739 by=judge form=alphabet measure=id role=writes scope=view/usage-profile value=text@3 +bound-lock/1 at=cone:66e7bc40fe32c8139457185743f8be060457cd04ad687f7593e181f254f99739 by=judge form=alphabet measure=cone role=writes scope=view/usage-profile value=docs/usage.md +bound-lock/1 at=place:sha256:9413eb1a37d894e3a10d597ecabdab48482229a2aade33ae7f02c25abf1404f8 by=bound form=alphabet measure=digest role=writes scope=instrument/implementation value=sha256:9413eb1a37d894e3a10d597ecabdab48482229a2aade33ae7f02c25abf1404f8 + +bound-lock/1 at=place:sha256:3dfbc96349f446409663ac5bf611c4add33101ee6a90565a0f56fd2cb17663b5 by=bound form=alphabet measure=digest role=writes scope=receipts value=sha256:d6f64ac33a7109d56af3fddd3e9c47ced8977242eec988d06ccd61e7441746cd + +bound-lock/1 at=place:sha256:40bacf4e3739b24d7e4608a45e1f93dacee4e508ce87591017f8f9b322d0f8b0 by=bound form=interval measure=count role=writes scope=receipts/ value=2..2 +bound-lock/1 at=place:sha256:e8049e5cc5dcafde52c6a6c645301d1ae7c2db7e11b560ba42beca860e782a11 by=bound form=alphabet measure=bytes role=writes scope=receipts/ value=sha256:e8049e5cc5dcafde52c6a6c645301d1ae7c2db7e11b560ba42beca860e782a11 +bound-lock/1 at=place:sha256:11cc0c74c1a2eb30ea79d591e2c5ad36f538545a55def56948b6dd0718075fe0 by=bound form=interval measure=count role=writes scope=receipts/. value=1..1 +bound-lock/1 at=place:sha256:e8049e5cc5dcafde52c6a6c645301d1ae7c2db7e11b560ba42beca860e782a11 by=bound form=alphabet measure=bytes role=writes scope=receipts/. value=sha256:e8049e5cc5dcafde52c6a6c645301d1ae7c2db7e11b560ba42beca860e782a11 +bound-lock/1 at=place:sha256:9c42c2db1db94b7e51a3dd7219fbef6c4f9bc0fd1f3ae635d08388275523b638 by=bound form=interval measure=count role=writes scope=receipts/admission value=1..1 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/admission value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:bcec35c890302cf3817afb6421504748d68996c806f307c90e858d569740f516 by=bound form=interval measure=count role=writes scope=receipts/capture value=2..2 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/capture value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:7ecd5d3ad535bb797a3d693019ceb337099abc2d19b6d3669bd22160df5e681f by=bound form=interval measure=count role=writes scope=receipts/cli value=4..4 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/cli value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:ce6f498305620e352e76f4dec87c5565dd205460a0b9780f8f91e3ae44183d7c by=bound form=interval measure=count role=writes scope=receipts/contract value=50..50 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/contract value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:edebe53cd66c18e09182a3b3bbfb87ba58fcfe355980319a4b2165ce1dd44fdb by=bound form=interval measure=count role=writes scope=receipts/docs value=22..22 +bound-lock/1 at=place:sha256:aa673ff5dcb6d2a26bf3d973e46ada966cc3581b44b06a5dee8904df542dbb6e by=bound form=alphabet measure=bytes role=writes scope=receipts/docs value=sha256:aa673ff5dcb6d2a26bf3d973e46ada966cc3581b44b06a5dee8904df542dbb6e +bound-lock/1 at=place:sha256:e1a572f264fb28d0fcf1c331455cc110832d6f5b79641f1c62cf4f2bf206e82a by=bound form=interval measure=count role=writes scope=receipts/door value=1..1 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/door value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:0da60199d5be6de4e632fefa6dd399be9d6e575ae1b631f084dd89d677bac19f by=bound form=interval measure=count role=writes scope=receipts/duplicate value=1..1 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/duplicate value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:8bc6211991e1dd29c86438972ff58e7be0b43e8b88516c795b7f15cacebd3b6b by=bound form=interval measure=count role=writes scope=receipts/execute value=8..8 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/execute value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:d8699b46f37ff05129bf554f09c05e379baca7b909f7f732f5158501e50a71e1 by=bound form=interval measure=count role=writes scope=receipts/idempotent value=1..1 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/idempotent value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:bcc41718f0dc275f4748200d56394da2bec07e9e9814f0bf835cc2cd4acc0d83 by=bound form=interval measure=count role=writes scope=receipts/instrument value=1..1 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/instrument value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:24023fde10bc3f5ad0c60d2b04cca3907b111a5431c6d6f0fc1171a9c3a67c8c by=bound form=interval measure=count role=writes scope=receipts/law value=10..10 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/law value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:f5809390b4fc105c4dfe5a01fa91185339be8cb800c40c49c099f854afc4ad76 by=bound form=interval measure=count role=writes scope=receipts/literal value=4..4 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/literal value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:52d41cc9c9c4526cdb3b56ea07974c2a7c88c05db7d7fd603c865add12fb1fbf by=bound form=interval measure=count role=writes scope=receipts/nothing-deleted value=1..1 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/nothing-deleted value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:dca970c96618ab71ab197690177d4e042327fab5bf45f00861eb76922ee9bdd9 by=bound form=interval measure=count role=writes scope=receipts/offline value=1..1 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/offline value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:4719284d23152d8bf98ca5d5bc9a5f62bba8324fd5e3d5c5e2d61c670d4ee20e by=bound form=interval measure=count role=writes scope=receipts/one-writer value=1..1 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/one-writer value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:bc77766b7f4901c90946876640d8a00d4fa506a4a8250dabad5cffda69e9baf4 by=bound form=interval measure=count role=writes scope=receipts/plan value=10..10 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/plan value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:3e5237ff1d294529bda9ef15aa2ab1054cf1369387b0763eb25f41bd7d37bf9e by=bound form=interval measure=count role=writes scope=receipts/proof value=8..8 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/proof value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:da3faaff185275e17b6040d853a2f088d2a68a34f9064c8214d74b9a03074258 by=bound form=interval measure=count role=writes scope=receipts/receipts value=88..88 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/receipts value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:e317a47bda5455716fbd3d9069786810cf4a35cb534280cb550b999be6d4126f by=bound form=interval measure=count role=writes scope=receipts/resolve-by-url value=1..1 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/resolve-by-url value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:edea040d0cb76816ddd40ee3d39a6f21be924523bd9731be06bdb041c427f35d by=bound form=interval measure=count role=writes scope=receipts/samples value=44..44 +bound-lock/1 at=place:sha256:15968a6dced8c188b7cf9213b9e82a10c5c6a74b21b63af94e6a229fe80c4f1b by=bound form=alphabet measure=bytes role=writes scope=receipts/samples value=sha256:15968a6dced8c188b7cf9213b9e82a10c5c6a74b21b63af94e6a229fe80c4f1b +bound-lock/1 at=place:sha256:336457f64f2c622fc75984bc836f08dcd3e03080eeefcce86df8f20db9bde94d by=bound form=interval measure=count role=writes scope=receipts/source value=5..5 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/source value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:fa9ebb40ec37ada32a508ff50a2d30682e51b348c96061a33e7d476f59c16573 by=bound form=interval measure=count role=writes scope=receipts/the-stranger value=1..1 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/the-stranger value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 +bound-lock/1 at=place:sha256:3f855b3a07465562b5fd76240b702f4fce8818e494a82e7b2ebcf09b259c7335 by=bound form=interval measure=count role=writes scope=receipts/vectors value=22..22 +bound-lock/1 at=place:sha256:ee1da302ec4adeb8d517235a6a73b0385715cd436467ea14cf3d026df6a3e123 by=bound form=alphabet measure=bytes role=writes scope=receipts/vectors value=sha256:ee1da302ec4adeb8d517235a6a73b0385715cd436467ea14cf3d026df6a3e123 +bound-lock/1 at=place:sha256:c9219469b0f9fc8a3ae635824dfe293de002e19c4049d7d241f0e6ff2a02fe13 by=bound form=interval measure=count role=writes scope=receipts/view value=36..36 +bound-lock/1 at=place:sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 by=bound form=alphabet measure=bytes role=writes scope=receipts/view value=sha256:4fc7464b096234022264ee28d5eb90022cdd0cc46c992f66355c2f8588dc7cf1 diff --git a/src/cli/accept.ts b/src/cli/accept.ts index f4a6ffb..9abca07 100644 --- a/src/cli/accept.ts +++ b/src/cli/accept.ts @@ -1,3 +1,4 @@ +import {commitLocalAct,intactLocalAct,committedLocalActs} from '../host/ports/local-act.ts'; import {withoutEffects} from '../host/read-only.ts'; import {selectedWireAt} from '../host/selected-topos.ts'; import { timing } from '../host/timing.ts'; @@ -6,7 +7,7 @@ import { existsSync, rmdirSync, rmSync } from 'node:fs'; import { dirname, join, basename } from 'node:path'; import { closeReceipts, instrumentKeep, instrumentKept } from '../fold/closed.ts'; import { bytesDigest, fullDigest, instrumentOf, signaturesOf } from '../fold/digests.ts'; -import { canonical, fromLine, LOCK, parse } from '@lapxo/topos/wire'; +import { canonical, fromLine, LOCK, parse, actIdentity, actResultProfile } from '@lapxo/topos/wire'; import { fieldOf, isConfig, foldClaims, sayingOf, selfName } from '../fold/claims.ts'; import { isReaderLock } from '../fold/observed.ts'; import { authorityFor, publicKeyOf, rootSigner, writerFor } from '../fold/signers.ts'; @@ -43,7 +44,7 @@ import { FLAGS } from './names.ts'; import { judgeDemand, landTake } from './takes.ts'; import type { Judged } from './takes.ts'; -export type Batch = { readonly kind: 'signed'; readonly signed: readonly string[]; readonly epoch: number; readonly keyId?: string } | { readonly kind: 'once'; readonly proposed: readonly string[] } | { readonly kind: 'exit'; readonly code: number }; +export type Batch = { readonly kind: 'signed'; readonly signed: readonly string[]; readonly records?:readonly string[]; readonly epoch: number; readonly base: { readonly digest: string; readonly places: readonly string[] }; readonly keyId?: string } | { readonly kind: 'once'; readonly proposed: readonly string[] } | { readonly kind: 'exit'; readonly code: number }; /** Admission reads an existing evidence snapshot; acquiring observations belongs to fold. */ function admissionEvidence(root: string, signed: readonly string[], standing: readonly string[]) { @@ -133,7 +134,9 @@ export async function signedBatch(root: string, args: readonly string[], files: process.stderr.write(`${selfName()}: REFUSE·place nothing landed · ${stray.join(', ')} is no place of the tree, and no line of the root founds it: --place names the own lock a line lands in\n`); return {kind:'exit',code:2}; } - const epoch = epochOf(localActLines(root,destinations)) + 1; + const local = localActLines(root, destinations); + const base = { digest: fullDigest(store, local), places: destinations }; + const epoch = epochOf(local) + 1; const stale = proposed.filter((line) => fieldOf(line, 'sig')).flatMap((line) => ((by, key) => (key === undefined || !verifiesOwnerLine(line, key, signaturesOf(store).admitted) ? [`${fieldOf(line, 'scope')} · the signature does not hold for ${by || '∅'}`] : []))(fieldOf(line, 'by'), publicKeyOf(root, fieldOf(line, 'by')))); @@ -224,7 +227,7 @@ export async function signedBatch(root: string, args: readonly string[], files: if(signed.some(line=>!isConfig(line))) {try {await admittedObjects(root,[...signedOwnerLines(store),...signed],text=>process.stdout.write(text+'\n'));}catch(e){process.stderr.write(`${selfName()}: ${e instanceof Error?e.message:String(e)} · nothing landed\n`);return {kind:'exit',code:1};}} try { admissionEvidence(root, ownership.ledger, lockStanding(store)); } catch(error) {process.stderr.write(`${selfName()}: ${error instanceof Error ? error.message : String(error)} · nothing landed\n`);return {kind:'exit',code:1};} - return { kind: 'signed', signed, epoch, ...(drafted.length ? { keyId } : {}) }; + return { kind: 'signed', signed, epoch, base, ...(drafted.length ? { keyId } : {}) }; } /** @@ -258,7 +261,7 @@ export async function accept(root: string, args: readonly string[]): Promise `${one}/`).join(' · ') : 'the root alone, where the places join'; process.stdout.write(`ACTS ${where} · ${owned.ledger.length} lines to the ledger${[...owned.own].map(([place, lines]) => ` · ${lines.length} to ${place}'s own lock`).join('')} · before the lock\n`); const asked = Date.now(); - return underTheRegions(store, every ? [...regions, ''] : regions, 'land', () => acceptNow(root, { ...batch, signed: owned.ledger }, started, owned, asked, regions)); + return underTheRegions(store, every ? [...regions, ''] : regions, 'land', () => acceptNow(root, { ...batch, signed: owned.ledger, records:batch.signed }, started, owned, asked, regions)); } async function acceptNow(root: string, batch: Extract, started: number, owned: Owned, asked = started, descent: readonly string[] = []): Promise { @@ -268,6 +271,11 @@ async function acceptNow(root: string, batch: Extract!isConfig(line))) { try {await admittedObjects(root,[...signedOwnerLines(store),...signed]);} catch(e){process.stderr.write(`${selfName()}: ${e instanceof Error?e.message:String(e)} · nothing landed\n`);return 1;} @@ -306,8 +314,26 @@ async function acceptNow(root: string, batch: Extract standingOf(root, undefined, signed)); for (const name of openedBy(descent, told.standing, signed)) process.stderr.write(`OPEN ${name}\n`); if (owned.own.size) layReleases(store, root, told.standing, store); - const landed = took('land', () => [...new Set(signed.map((line) => fieldOf(line, 'by')))].map((by) => land(store, by, signed.filter((line) => fieldOf(line, 'by') === by)))); - for (const [place, lines] of owned.own) landOwned(root, place, lines); + const resultProfile=actResultProfile(snapshot.standing); + let landed:readonly {at:string;appended:number}[]=[]; + if(resultProfile){ + const records=batch.records??signed; + const placements=[...(signed.length?[{place:'.',records:signed}]:[]),...[...owned.own].map(([place,records])=>({place:`${place}/${LOCK}`,records}))]; + const digest=(bytes:string)=>bytesDigest(store,new TextEncoder().encode(bytes)); + const identity=actIdentity(records,{...resultProfile,digest,placements,localEpoch:epoch}); + const folder=writerFor(snapshot.standing,'fold'); + if(!folder)throw Error('REFUSE·act native result requires a declared fold identity'); + const receipt=canonical({scope:resultProfile.scope,at:resultProfile.context,role:'writes',form:'alphabet',measure:'digest',value:identity,by:folder,epoch:String(epoch)}); + const bundle={records:records.join('\n')+'\n',receipt:receipt+'\n',placements:placements.map(p=>({place:p.place,records:p.records.join('\n')+'\n'}))}; + await commitLocalAct(store,identity,descent,async()=>bundle,intactLocalAct); + // Commitment precedes projections and conformance work. If either fails, + // this public identity still names the admitted act; it is never rollback. + process.stdout.write(`ACT ${identity} · epoch ${epoch} · admitted · conformance not asserted\n`); + for(const line of records)process.stdout.write(line+'\n'); + process.stdout.write(receipt+'\n'); + landed=[{at:'committed act '+identity,appended:records.length}]; + }else landed=took('land',()=>[...new Set(signed.map(line=>fieldOf(line,'by')))].map(by=>land(store,by,signed.filter(line=>fieldOf(line,'by')===by)))); + for (const [place, lines] of owned.own) landOwned(root, place, lines,resultProfile!==undefined); landSaid(store, writerFor(told.standing, 'fold'), []); for (const line of signed) { const value = fieldOf(line, 'value'); @@ -368,6 +394,8 @@ async function acceptNow(root: string, batch: Extract{const lines=act.bundle.records.trimEnd().split('\n');return lines.length===proposed.length&&lines.every((line,i)=>line===proposed[i])}); + if(prior){process.stdout.write(`ACT ${prior.identity} · epoch ${fieldOf(prior.bundle.receipt.trim(),'epoch')} · admitted · replay\n`+prior.bundle.records+prior.bundle.receipt);} const asked = new Set(proposed.filter((line) => fieldOf(line, 'role') === 'demands').map((line) => fieldOf(line, 'scope'))); const view = `${wordOf(foldClaims(signedOwnerLines(store)).standing, 'families', 'view')}/`; const standingAsked = signedDemands(store).filter((line) => asked.has(fieldOf(line, 'scope')) && !fieldOf(line, 'scope').startsWith(view)); diff --git a/src/cli/act-result.ts b/src/cli/act-result.ts new file mode 100644 index 0000000..bbd0db2 --- /dev/null +++ b/src/cli/act-result.ts @@ -0,0 +1,44 @@ +import {actResultOf,actResultProfile} from '@lapxo/topos/wire'; +import {actLines,intactLocalAct,localActResult} from '../host/ports/local-act.ts'; +import {storeOf} from '../land/ledger.ts'; +import {lockStanding} from '../fold/keys.ts'; +import {authorityFor,writerFor} from '../fold/signers.ts'; +import {eraOf} from '../fold/digests.ts'; +import {fieldOf,isConfig,foldClaims} from '../fold/claims.ts'; +import {ownRecordAdmitted} from '../fold/signed.ts'; +import {admissionAnchor,admissionHistoryAt} from '../fold/admission-history.ts'; +import {fullDigest} from '../host/digest.ts'; +import {wordOf,wireLine} from '../fold/wire.ts'; +import {viewsOf} from '../fold/views.ts'; + +/** Public query of a committed identity, using the same admission authority. + * Native fold evidence has store provenance; it never grants coverage. */ +export function printActResult(root:string,identity:string|undefined):void{ + const store=storeOf(root),standing=lockStanding(store); + const view=viewsOf(standing).get('act'); + if(!view||view.shape||!view.regions.some(region=>region.name==='act'))throw Error('REFUSE·view act requires an admitted result profile and act view'); + if(!identity)throw Error('REFUSE·act name one committed identity'); + const bundle=localActResult(store,identity,intactLocalAct); + if(!bundle)throw Error('REFUSE·act no committed result '+identity); + const records=actLines(bundle.records),epoch=Number(fieldOf(bundle.receipt.trim(),'epoch')); + const history=admissionHistoryAt(root,epoch),before=history.filter(line=>!isConfig(line)||Number(fieldOf(line,'epoch'))authority.of(line).kind==='admitted')).standing; + const profile=actResultProfile(admittedBefore); + if(!profile)throw Error('REFUSE·act no result profile at admission'); + const family=authority.admitted.some(signer=>!signer.coverage.includes('*'))?wordOf(admittedBefore,'families','region'):''; + const algorithm=identity.slice(0,identity.indexOf(':')); + const named=fieldOf(wireLine(admittedBefore,'digest-algorithms')??'','value').split('|').map(value=>value.split(':')[0]); + if(!named.includes(algorithm))throw Error('REFUSE·act digest algorithm was not admitted at commitment'); + const result=actResultOf(records,bundle.receipt.trim(),{...profile,localEpoch:epoch, + digest:bytes=>fullDigest(bytes,algorithm), + placements:bundle.placements!.map(p=>({place:p.place,records:actLines(p.records)})), + admitsRecord:line=>{ + if(isConfig(line)&&Number(fieldOf(line,'epoch'))!==epoch)return false; + return bundle.placements!.some(p=>actLines(p.records).includes(line)&&(p.place==='.'?authority.of(line).kind==='admitted':ownRecordAdmitted(line,p.place.slice(0,p.place.lastIndexOf('/')),family,authority.admitted,algorithms))); + }, + verifiesReceipt:line=>fieldOf(line,'by')===writerFor(admittedBefore,'fold')&&intactLocalAct(identity,bundle), + }); + process.stdout.write(`ACT ${result.identity} · epoch ${result.epoch} · admitted · conformance not asserted\n`+bundle.records+bundle.receipt); +} diff --git a/src/cli/owner.ts b/src/cli/owner.ts index 7129543..8794263 100644 --- a/src/cli/owner.ts +++ b/src/cli/owner.ts @@ -1,3 +1,4 @@ +import {committedLocalActs} from '../host/ports/local-act.ts'; import {fileURLToPath} from 'node:url'; import {ingressReceipts} from '../host/ports/ingress.ts'; import {readOnly} from '../host/read-only.ts'; @@ -12,7 +13,7 @@ import { authorityFor, releaseSigner, rootSigner } from '../fold/signers.ts'; import { storeRoot } from '../host/ports/store.ts'; import { blobAt, landBlob, ledgerLines, storeOf } from '../land/ledger.ts'; import { observeText } from '../observe/files.ts'; -import {appliedIn} from '../fold/signed.ts'; +import {appliedHistoryIn} from '../fold/signed.ts'; import { everLanded, inside, locationsOf } from '../land/vouched.ts'; import { renderTarget } from '../render/target.ts'; @@ -67,7 +68,7 @@ export function localActLines(root: string, placed: readonly string[] = []): rea if(fieldOf(receipt,'scope')!=='receipts'||fieldOf(receipt,'role')!=='writes'||fieldOf(receipt,'form')!=='alphabet'||fieldOf(receipt,'measure')!=='digest'||authority.of(receipt).kind!=='admitted')throw Error('REFUSE·ingress local import receipt is not admitted'); } } - return [...local,...receipts,...placed.flatMap(place=>appliedIn(root,place))]; + return [...local,...receipts,...committedLocalActs(store).map(act=>act.bundle.receipt.trim()),...placed.flatMap(place=>appliedHistoryIn(root,place))]; } export function epochOf(lines: readonly string[]): number { diff --git a/src/cli/verb.ts b/src/cli/verb.ts index e04286d..651070a 100644 --- a/src/cli/verb.ts +++ b/src/cli/verb.ts @@ -1,4 +1,5 @@ #!/usr/bin/env node +import {printActResult} from './act-result.ts'; import {withContentStore} from '../host/content-store.ts'; import {withoutEffects} from '../host/read-only.ts'; import {resolveSources,resolveRequested} from '../host/source-content.ts'; @@ -179,6 +180,7 @@ async function view(root: string, under: string | undefined, asked: string, told process.stderr.write(`${selfName()}: the owner ledger is empty; land it before rendering a view\n`); return EXIT.refuse; } + if(name==='act'){if(under||told.length)throw Error('REFUSE·act committed identity query only');printActResult(root,coord);return EXIT.closed;} if(name==='evidence'&&!under&&!told.length&&ingressBundles(storeOf(root)).length){ const declared=viewsOf(lockStanding(storeOf(root))).get(name); if(!declared||declared.shape||!declared.regions.some(region=>region.name==='evidence'))throw Error('REFUSE·view foreign evidence requires a declared evidence view'); @@ -408,7 +410,7 @@ async function foldAt(root: string, under: string | undefined, argv: readonly st async function foldRequested(root: string, under: string | undefined, argv: readonly string[]): Promise { const as = valueOf(argv, FLAGS.as); const prospective = as !== undefined && positionalsOf(argv).some(one => existsSync(resolve(one)) && !lstatSync(resolve(one)).isDirectory()); - if(as===NAMED_VIEWS.help || prospective || argv.includes(FLAGS.check))return foldResolved(root,under,argv); + if(as?.split('@')[0]==='act'||as===NAMED_VIEWS.help || prospective || argv.includes(FLAGS.check))return foldResolved(root,under,argv); return resolveRequested(digest=>resolveSources(standingOf(root,under).standing,[digest]),()=>foldResolved(root,under,argv)); } @@ -447,6 +449,7 @@ async function foldResolved(root: string, under: string | undefined, argv: reado } const named = inputs; const coord = positionalsOf(argv).find((one) => one !== under?.replace(/\/$/, '') && !one.startsWith('-') && !(existsSync(resolve(one)) && lstatSync(resolve(one)).isDirectory())); + if(as==='act'){if(positionalsOf(argv).length!==1)throw Error('REFUSE·act name one committed identity');return view(root,under,as,[],coord);} if ((as === 'why' || as === NAMED_VIEWS.because || as.split('@')[0] === 'why') && coord !== undefined) return view(root, under, as === NAMED_VIEWS.because ? 'why' : as, [], coord, key); if (!named.length) return view(root, under, as, [], undefined, key); const batch = await signedBatch(root, argv, named); diff --git a/src/fold/admission-history.ts b/src/fold/admission-history.ts new file mode 100644 index 0000000..4cb5f8b --- /dev/null +++ b/src/fold/admission-history.ts @@ -0,0 +1,24 @@ +import {join} from 'node:path'; +import {readFileSync} from 'node:fs'; +import type {Signer} from '@lapxo/topos/wire'; +import {ledgerLines,ledgerWriters,storeOf} from '../land/ledger.ts'; +import {fieldOf,isConfig,selfName} from './claims.ts'; + +/** Local admission history only. Foreign ingress is evidence, never coverage. + * The clock cutoff is meaningful for configuration; object clocks stay intact. */ +export function admissionHistoryAt(root:string,epoch:number):readonly string[]{ + const store=storeOf(root); + return [...new Set(ledgerWriters(store).flatMap(writer=>ledgerLines(store,writer)))] + .filter(line=>fieldOf(line,'sig')!==''&&(!isConfig(line)||Number(fieldOf(line,'epoch'))<=epoch)); +} + +/** The existing bootstrap's public root of trust, not today's key selection. */ +export function admissionAnchor(root:string):Signer{ + const at=join(storeOf(root),`${selfName()}.keys`); + const keys=JSON.parse(readFileSync(at,'utf8')) as Record; + const anchors=Object.values(keys); + if(anchors.length!==1||!anchors[0]?.publicKey||!anchors[0].coverage.length)throw Error('REFUSE·act historical admission requires one bootstrap anchor'); + const anchor=anchors[0]; + return {id:anchor.id,keyClass:'authorize',publicKey:anchor.publicKey,coverage:anchor.coverage, + depth:{lo:1,hi:16},admittedBy:[]}; +} diff --git a/src/fold/digests.ts b/src/fold/digests.ts index 1da15b3..8e71a6f 100644 --- a/src/fold/digests.ts +++ b/src/fold/digests.ts @@ -1,5 +1,6 @@ +import {ledgerLines,ledgerWriters} from '../land/ledger.ts'; import {readOnly} from '../host/read-only.ts'; -import { appendFileSync, dirname, join, mkdirSync, readdirSync, relative, resolve } from '../host/io.ts'; +import { appendFileSync, dirname, join, mkdirSync, readdirSync, realpathSync, relative, resolve } from '../host/io.ts'; import { bytesDigest as bytesWith, fullDigest as fullWith } from '../host/digest.ts'; import { coordinatesUnder, observeFile, observeText, stampOf } from '../observe/files.ts'; import { releaseOf, signedLockLines } from './keys.ts'; @@ -35,9 +36,8 @@ function namedAlgorithm(store: string): string | undefined { const contract = published === undefined ? undefined : wireLine(published, 'digest-algorithms'); return contract === undefined ? undefined : fieldOf(contract, 'value').split('|')[0]?.split(':')[0]; } - for (const entry of readdirSync(join(store, 'ledger'), { withFileTypes: true })) { - if (!entry.isFile() || !entry.name.endsWith(EXTENSION)) continue; - const text = observeText(join(store, 'ledger', entry.name)) ?? ''; + for (const writer of ledgerWriters(store)) { + const text = ledgerLines(store,writer).join('\n'); let from = 0; while (from < text.length) { const at = (() => { @@ -168,11 +168,15 @@ export function instrumentCoordinates(store: string, entry: string, standing: re if (seen.has(at)) return; const digest = coordinateDigest(store, at); if (digest === undefined) return; - seen.set(at, digest); - for (const one of importsOf(store, at, digest)) { + // The host loader resolves links before loading a module. Count that module + // once, while retaining distinct modules even when their bytes are equal. + const module = realpathSync(at); + if (seen.has(module)) return; + seen.set(module, digest); + for (const one of importsOf(store, module, digest)) { if (one.startsWith('node:') || builtinModules.includes(one)) continue; - if (one.startsWith('.')) walk(resolve(dirname(at), one)); - else walk(createRequire(at).resolve(one)); + if (one.startsWith('.')) walk(resolve(dirname(module), one)); + else walk(createRequire(module).resolve(one)); } }; walk(resolve(entry)); diff --git a/src/fold/kept.ts b/src/fold/kept.ts index 4f2f75e..a149543 100644 --- a/src/fold/kept.ts +++ b/src/fold/kept.ts @@ -1,8 +1,9 @@ +import {actLines,committedLocalActs} from '../host/ports/local-act.ts'; import {readOnly} from '../host/read-only.ts'; import { createHash, dirname, existsSync, join, mkdirSync, readdirSync, renameSync, writeFileSync } from '../host/io.ts'; import { bytesDigest, coordinateDigest } from './digests.ts'; import { viewsOf } from './views.ts'; -import { landMemo, ledgerLines, memoAt, shardFile, writerFile } from '../land/ledger.ts'; +import { landMemo, ledgerLines, ledgerWriters, memoAt, shardFile, writerFile } from '../land/ledger.ts'; import { coordinatesUnder, observeFile, observeText } from '../observe/files.ts'; import type { PlaceFold } from '../cli/place.ts'; import { EXTENSION, fieldOf } from './claims.ts'; @@ -46,7 +47,7 @@ export function foldPoints(store: string, standing: readonly string[], under: st `take ${digestOf(ledgerLines(store, 'take').filter((line) => reads.scopes.has(fieldOf(line, 'scope').replace(/^take\//, ''))))}`, `tree ${digestOf(ledgerLines(store, tree ?? '').filter((line) => (sourceOf(line) ?? '').startsWith(reads.place)))}`, ]; - const heads = (existsSync(join(store, 'ledger')) ? readdirSync(join(store, 'ledger')) : []).filter((name) => name.endsWith(EXTENSION)).map((name) => name.slice(0, -EXTENSION.length)) + const heads = ledgerWriters(store) .filter((writer) => writer !== keeper && writer !== 'gate' && !writer.startsWith('reader') && !(reads && (signers.has(writer) || writer === 'judge' || writer === 'take' || writer === tree))) .map((writer) => `${writer} ${writer === liveWriter(store, standing) ? lastWord(store, writer) : bytesDigest(store, text(ledgerLines(store, writer).join('\n')))}`); const written = [...new Set([...viewsOf(standing).values()].flatMap((view) => ('regions' in view && view.shape ? [view.shape] : [])))].sort() @@ -130,8 +131,12 @@ function readingContext(store: string): string { const speaker = keyOf(store, 'read'); const files = speaker === undefined ? [] : [writerFile(store, speaker), ...coordinatesUnder(dirname(shardFile(store, speaker, '')), store) .filter(file => file.endsWith(EXTENSION)).map(file => join(store, file))]; - return bytesDigest(store, text(files.filter(file => existsSync(file)).sort() - .map(file => bytesDigest(store, observeFile(file) ?? new Uint8Array())).join('\n'))); + const segments=speaker===undefined?[]:committedLocalActs(store).flatMap(act=>act.bundle.placements?.flatMap(placement=>{ + const records=actLines(placement.records).filter(line=>fieldOf(line,'by')===speaker); + return records.length?[placement.place+'\n'+records.join('\n')]:[]; + })??[]); + return bytesDigest(store, text([...files.filter(file => existsSync(file)).sort() + .map(file => bytesDigest(store, observeFile(file) ?? new Uint8Array())),...segments].join('\n'))); } export function keptPlace(store: string, under?: string): PlaceFold | undefined { diff --git a/src/fold/keys.ts b/src/fold/keys.ts index 1764d58..6cccabd 100644 --- a/src/fold/keys.ts +++ b/src/fold/keys.ts @@ -1,11 +1,12 @@ import { dirname, existsSync, join } from '../host/io.ts'; -import { ledgerLines, signedLines } from '../land/ledger.ts'; +import { ledgerLines, ledgerWriters, signedLines } from '../land/ledger.ts'; import { EXTENSION, fieldOf, foldClaims, isWire, LOCK, selfName } from './claims.ts'; import { entriesIn, observeText } from '../observe/files.ts'; type Keys = { readonly classes: ReadonlyMap; readonly signers: readonly string[] }; const held = new Map(); +const keyInputs=new Map(); const merged = new Map(); /** @@ -55,13 +56,14 @@ export function signedLockLines(store: string, told: readonly string[] = []): st } function keysOf(store: string, told: readonly string[]): Keys { - const mine = told.length ? read(store, told) : held.get(store) ?? read(store); + const input=ledgerKeyLines(store).join('\n'); + const mine = told.length ? read(store, told) : keyInputs.get(store)===input ? held.get(store)??read(store) : read(store); + if(!told.length)keyInputs.set(store,input); if (!told.length) held.set(store, mine); return mine; } -const ledgerKeyLines = (store: string): readonly string[] => (existsSync(join(store, 'ledger')) ? entriesIn(join(store, 'ledger')).map((entry) => entry.name) : []) - .filter((name) => name.endsWith(EXTENSION)).flatMap((name) => ledgerLines(store, name.slice(0, -EXTENSION.length))) +const ledgerKeyLines = (store:string):readonly string[]=>ledgerWriters(store).flatMap(writer=>ledgerLines(store,writer)) .filter((line) => /\bsig=/.test(line) && /(?:^|\s)scope=keys\/[^/\s]+\s/.test(line)); const releases = new Map(); diff --git a/src/fold/observed.ts b/src/fold/observed.ts index 0c90085..656adc2 100644 --- a/src/fold/observed.ts +++ b/src/fold/observed.ts @@ -261,12 +261,13 @@ export function observedClaims(root: string, store: string, options: { readonly } function observeOne(reader: ReaderClaim, started: number): boolean { const module = resolve(root, reader.module); + const lifetime = readerLifetime(standing.flatMap(line=>{const p=parseLifetime(line);return p.kind==='fact'?[p.value.fields]:[];}), {id:reader.id,module:reader.module}); const asked = reader.capsule === undefined ? undefined : reader.capsule.selected??capsuleAt(reader.capsule.digest, reader.capsule.entry); const projection = reader.capsule === undefined ? [] : (asked?.lines ?? []).filter(line=>fieldOf(line,'scope')===`region/${reader.capsule!.region}`&&fieldOf(line,'measure')==='input-projection'&&fieldOf(line,'value')!=='withdraw'); if(projection.length){ if(projection.length!==1||!asked)throw Error('REFUSE·input projection is ambiguous '+reader.module); const files=[...new Set(reader.where.flatMap(where=>handedAt(root,reader,roleOf,look,where)))].sort().map(place=>({place,text:observeText(resolve(root,place))??''})); - const result=readingClosures({root,store,reader:reader.module,speaker,digest:text=>bytesDigest(store,Buffer.from(text)),capsule:asked,region:reader.capsule!.region,projection:fieldOf(projection[0]!,'value'),allowsEmpty:readerAllowsEmpty(standing.flatMap(line=>{const p=parseLifetime(line);return p.kind==='fact'?[p.value.fields]:[];}),reader.module),files,emit:line=>process.stderr.write(line+'\n')}); + const result=readingClosures({root,store,reader:reader.module,speaker,digest:text=>bytesDigest(store,Buffer.from(text)),capsule:asked,region:reader.capsule!.region,projection:fieldOf(projection[0]!,'value'),readerReference:{id:reader.id,module:reader.module},lifetime,allowsEmpty:readerAllowsEmpty(standing.flatMap(line=>{const p=parseLifetime(line);return p.kind==='fact'?[p.value.fields]:[];}),reader.module),files,emit:line=>process.stderr.write(line+'\n')}); out.push(...result.lines);ran+=result.executed;read+=result.read-result.opened; return false; } @@ -277,7 +278,7 @@ export function observedClaims(root: string, store: string, options: { readonly assertReaderInputs(standing.flatMap(line=>{const p=parseLifetime(line);return p.kind==='fact'?[p.value.fields]:[];}),reader.module,offered.length); const vectors = reader.capsule === undefined ? observeText(resolve(root, vectorsOf(reader.module, standing))) : undefined; const kept = whole && legacy === undefined && answered === undefined && source ? sha([ - speaker, reader.module, reader.kind, reader.shape.join('|'), reader.where.join('|'), bundle, vectors === undefined ? 'no vectors' : sha(vectors), + speaker, reader.module, JSON.stringify(lifetime), reader.kind, reader.shape.join('|'), reader.where.join('|'), bundle, vectors === undefined ? 'no vectors' : sha(vectors), reader.capsule === undefined ? '' : `${reader.capsule.selected?.selection??reader.capsule.digest} ${reader.capsule.region} ${reader.capsule.reads.join('|')} ${[...reader.capsule.globs].map(([place, globs]) => `${place}${globs.join('|')}`).join(' ')}`, ...offered.map((offer) => `${offer.place} ${offer.digest?.() ?? bytesDigest(store, offer.bytes())}`), ].join('\n')) : undefined; @@ -292,9 +293,9 @@ export function observedClaims(root: string, store: string, options: { readonly const home = regionIn(regions, reader.module); const own = shardLines(store, speaker, home).filter((line) => fieldOf(line, 'scope') === `reader/${reader.module}`); const lineage = own.filter((line) => fieldOf(line, 'measure') === 'identity').map((line) => fieldOf(line, 'value')); - const sum = source && reader.capsule === undefined ? bytesDigest(store, new TextEncoder().encode(`${reader.module} ${bundle}`)).replace(/^sha256:/, '').slice(0, 12) : 'none'; - const measured = reader.capsule !== undefined ? { by: source ? sha(`${reader.capsule.selected?.selection??reader.capsule.digest}\n${reader.capsule.region}`).slice(0, 12) : 'none', lines: [] as readonly string[] } - : source ? identityOf({ store, root, speaker, module: reader.module, kind: reader.kind, code: sum, lineage, lifetime:readerLifetime(standing.flatMap(line=>{const p=parseLifetime(line);return p.kind==='fact'?[p.value.fields]:[];}),reader.module), kept: own.filter((line) => /(?:^|\s)measure=(?:extension|emits)\s/.test(line)) }) + const sum = source && reader.capsule === undefined ? bytesDigest(store, new TextEncoder().encode(`${reader.module} ${bundle}${lifetime === undefined ? "" : "\n"+JSON.stringify(lifetime)}`)).replace(/^sha256:/, '').slice(0, 12) : 'none'; + const measured = reader.capsule !== undefined ? { by: source ? sha(`${reader.capsule.selected?.selection??reader.capsule.digest}\n${reader.capsule.region}${lifetime === undefined ? "" : "\n"+JSON.stringify(lifetime)}`).slice(0, 12) : 'none', lines: [] as readonly string[] } + : source ? identityOf({ store, root, speaker, module: reader.module, kind: reader.kind, code: sum, lineage, lifetime, kept: own.filter((line) => /(?:^|\s)measure=(?:extension|emits)\s/.test(line)) }) : { by: 'none', lines: [] }; const by = measured.by; const level: string[] = [...measured.lines]; @@ -400,11 +401,11 @@ export function observedClaims(root: string, store: string, options: { readonly ? asked.ask(due.map((d) => ({ protocol: PROTOCOL, verb: 'read' as const, rootScope: d.place, region: reader.capsule!.region, held: heldOf(d.place, d.region), files: (reader.capsule!.reads.some((read) => read.includes('@')) ? handedAt(root, reader, roleOf, look, d.place) : [d.place]).map((coordinate) => ({ place: coordinate, text: observeText(resolve(root, coordinate)) ?? '' })), - }))).map((answer) => { + })), {id:reader.id,module:reader.module}).map((answer) => { if (answer?.kind !== 'fact') throw new Error(`REFUSE·reader ${reader.module} · ${answer?.why ?? 'no capsule answer'}`); return (answer.claims ?? []) as ReturnType[number]; }) - : runReader(module, root, due.map((d) => ({ place: d.place, ...(reader.kind === 'js' ? { text: new TextDecoder().decode(d.bytes) } : {}), held: heldOf(d.place, d.region) })),readerLifetime(standing.flatMap(line=>{const p=parseLifetime(line);return p.kind==='fact'?[p.value.fields]:[];}),reader.module)); + : runReader(module, root, due.map((d) => ({ place: d.place, ...(reader.kind === 'js' ? { text: new TextDecoder().decode(d.bytes) } : {}), held: heldOf(d.place, d.region) })),lifetime); } catch (error) { const why = `REFUSE·reader ${reader.module} · ${error instanceof Error ? error.message : String(error)}`; refused.push(why); diff --git a/src/fold/signed.ts b/src/fold/signed.ts index 2189451..99b90c9 100644 --- a/src/fold/signed.ts +++ b/src/fold/signed.ts @@ -17,7 +17,7 @@ const told = new Map(); /** Lines told to a place's own lock for a preview: folded as if the file held them, and standing only as its signed lines do. */ export const tellOwn = (place: string, lines: readonly string[]): void => void told.set(place, lines); -function verified(root: string, place: string): Verified { +function verified(root: string, place: string, preview=true): Verified { const store = storeOf(root); const lock = lockLines(store); const publicText = observeText(join(root, place, LOCK)) ?? ''; @@ -25,7 +25,7 @@ function verified(root: string, place: string): Verified { const algorithms = hasAuthority ? signaturesOf(store).admitted : []; const signers = algorithms.length ? authorityFor(lock, rootSigner(root), algorithms).admitted : []; const history = signers.flatMap(signer => place ? shardLines(store, signer.id, `${place}/${LOCK}`) : ledgerLines(store, signer.id)).filter(line => fieldOf(line, 'sig') !== ''); - const text = [publicText, ...history, ...(told.get(place) ?? [])].join('\n'); + const text = [publicText, ...history, ...(preview?told.get(place)??[]:[])].join('\n'); const key = `${root} ${place}`; const last = held.get(key); if (last !== undefined && last.text === text && last.lock === lock) return last; @@ -33,17 +33,7 @@ function verified(root: string, place: string): Verified { // Unrestricted coverage does not construct a region coordinate. Restricted // coverage still requires the lock's declared namespace before comparison. const family = signers.some(signer => !signer.coverage.includes('*')) ? wordOf(lockStanding(store), 'families', 'region') : ''; - const stands = (line: string): boolean => { - const got = parse(line); - if (got.kind !== 'fact' || got.value.fields['sig'] === undefined) return false; - const fields = got.value.fields; - const signer = signers.find((one) => one.id === fields['by']); - const epoch = Number(fields['epoch']) || 0; - if (signer === undefined || !verifiesFields(fields, signer.publicKey, algorithms)) return false; - const window = windowAt(signer, epoch); - return epoch >= window.start && (window.close === null || epoch <= window.close) - && signer.coverage.some((prefix) => prefix === '*' || within(region(`${family}/${place}/${fields['scope'] ?? ''}`, './'), region(prefix, './'))); - }; + const stands=(line:string):boolean=>ownRecordAdmitted(line,place,family,signers,algorithms); const applied = new Set(lines.filter(stands)); // A published copy of an authenticated delivery is not another inscription. const projected = new Set([...applied].map(sayingOf)); @@ -80,3 +70,19 @@ export const appliedIn = (root: string, place: string): readonly string[] => [.. export const forksIn = (root: string, place: string): readonly string[] => ((got) => foldClaims(got.lines.filter((line) => got.applied.has(line) || (!/ sig=/.test(line) && !got.projected.has(sayingOf(line))))).forks.map((fork) => fork.key))(verified(root, place)); export const writtenIn = (root: string, place: string): number => ((got) => got.lines.filter((line) => !got.applied.has(line)).length)(verified(root, place)); + +/** Authenticated history excludes prospective lines told only for admission. */ +export const appliedHistoryIn=(root:string,place:string):readonly string[]=>[...verified(root,place,false).applied]; + +/** Shared signature/window/coordinate coverage boundary for own history. */ +export function ownRecordAdmitted(line:string,place:string,family:string,signers:ReturnType['admitted'],algorithms:readonly string[]):boolean{ + const got = parse(line); + if (got.kind !== 'fact' || got.value.fields['sig'] === undefined) return false; + const fields = got.value.fields; + const signer = signers.find((one) => one.id === fields['by']); + const epoch = Number(fields['epoch']) || 0; + if (signer === undefined || !verifiesFields(fields, signer.publicKey, algorithms)) return false; + const window = windowAt(signer, epoch); + return epoch >= window.start && (window.close === null || epoch <= window.close) + && signer.coverage.some((prefix) => prefix === '*' || within(region(`${family}/${place}/${fields['scope'] ?? ''}`, './'), region(prefix, './'))); +} diff --git a/src/host/capsule.ts b/src/host/capsule.ts index 030ec24..206e01d 100644 --- a/src/host/capsule.ts +++ b/src/host/capsule.ts @@ -1,3 +1,4 @@ +import type {ReaderReference} from '@lapxo/topos/wire'; import {readerLifetime,parse} from '@lapxo/topos/wire'; import {contentStore,verifiedContent,contentPolicy} from './content-store.ts'; import {readOnly} from './read-only.ts'; @@ -24,7 +25,7 @@ export interface Capsule { readonly digest: string; readonly declaration: Declaration; readonly lines: readonly string[]; - readonly ask: (requests: readonly Request[]) => readonly (Response | undefined)[]; + readonly ask: (requests: readonly Request[], reader?: ReaderReference) => readonly (Response | undefined)[]; } const declared = new Map(); @@ -66,9 +67,9 @@ export function capsuleAt(digest: string, entry: string, store?: string): Capsul if (!entry || isAbsolute(entry) || (coordinate === '..' || coordinate.startsWith(`..${sep}`)) || entry.split(/[\\/]/).includes('..')) { throw new Error(`REFUSE·capsule ${digest} declared entry ${entry || '(absent)'} unavailable`); } - const capsule = { digest, ...known, ask: (requests: readonly Request[]) => { + const capsule = { digest, ...known, ask: (requests: readonly Request[], reader?: ReaderReference) => { if (!statSync(module, { throwIfNoEntry: false })?.isFile()) throw new Error(`REFUSE·capsule ${digest} declared entry ${entry} unavailable`); - return answered(digest, bytes, requests, names, root, cacheStore, module); + return answered(digest, bytes, requests, names, root, cacheStore, module, reader); } }; capsules.set(identity, capsule); return capsule; @@ -94,14 +95,16 @@ const spawnOf = (at: string, names: readonly string[]): readonly string[] => { export const childFlags = (argv: readonly string[] = process.execArgv): readonly string[] => argv.filter((flag, i) => !/^(-e|-p|--eval|--print)$/.test(argv[i - 1] ?? '') && !/^(-e|-p|--eval|--print|--input-type)(=|$)/.test(flag)); -function answered(digest: string, bytes: Uint8Array, requests: readonly Request[], names: readonly string[], tree?: string, cacheStore: string = ownStore(), entry?: string): readonly (Response | undefined)[] { +function answered(digest: string, bytes: Uint8Array, requests: readonly Request[], names: readonly string[], tree?: string, cacheStore: string = ownStore(), entry?: string, reader?: ReaderReference): readonly (Response | undefined)[] { const child = entry === undefined ? spawnOf(tree ?? unpacked(digest, bytes), names) : [entry]; if (!child.length) { process.stderr.write(`LOAD regions · none of ${names.length} under the directories release/layout names\n`); return requests.map(() => undefined); } const loader = entry !== undefined ? `${createHash('sha256').update(`${relative(tree!, entry)}\n`).digest('hex')}\n` : child.length > 1 ? `${createHash('sha256').update(observeFile(child[0]!) ?? new Uint8Array()).digest('hex')}\n` : ''; - const hitOf = (request: Request): string => sha(`${digest}\n${loader}${JSON.stringify(request)}`); + const lifetime = readerLifetime(contentPolicy().flatMap(line=>{const p=parse(line);return p.kind==='fact'?[p.value.fields]:[];}), reader ?? digest); + const policy = lifetime === undefined ? '' : JSON.stringify(lifetime)+'\n'; + const hitOf = (request: Request): string => sha(`${digest}\n${loader}${policy}${JSON.stringify(request)}`); const hits = requests.map(hitOf); const kept = hits.map(hit => storeAt(cacheStore, 'cas', 'answers', hit)); const held = kept.map((at, i) => { @@ -118,7 +121,7 @@ function answered(digest: string, bytes: Uint8Array, requests: readonly Request[ if (missing.length && readOnly()) throw Error(`REFUSE·preview capsule ${digest} has no verified answer for the proposed inputs; fold the declared inputs first`); if (missing.length) process.stderr.write(`CAPSULE ${digest.slice(7, 19)} · ${requests.length} asked · ${missing.length} run · ${missing.map((one) => `${one.rootScope}${one.region}`).join(' ')}\n`); // Execute and validate the entire batch before committing any answer to the cache. - const ran = !missing.length ? [] : executeCapsule(process.execPath, [...childFlags(), hostOf(), ...child], missing, {}, readerLifetime(contentPolicy().flatMap(line=>{const p=parse(line);return p.kind==='fact'?[p.value.fields]:[];}),digest)); + const ran = !missing.length ? [] : executeCapsule(process.execPath, [...childFlags(), hostOf(), ...child], missing, {}, lifetime); return requests.map((request, i) => { if (held[i] !== undefined) return held[i]; const said = ran[missing.indexOf(request)]; @@ -146,5 +149,5 @@ export function locatedAt(tree: string, place: string, cacheStore: string = ownS if (bytes !== undefined) { hash.update(bytes); break; } } const digest = `sha256:${hash.digest('hex')}`; - return { digest, ...known, ask: (requests) => answered(digest, new Uint8Array(), requests, names, at, cacheStore) }; + return { digest, ...known, ask: (requests, reader) => answered(digest, new Uint8Array(), requests, names, at, cacheStore, undefined, reader) }; } diff --git a/src/host/io.ts b/src/host/io.ts index 7db726a..dac553d 100644 --- a/src/host/io.ts +++ b/src/host/io.ts @@ -3,7 +3,7 @@ export { spawn, spawnSync } from 'node:child_process'; export { createHash } from 'node:crypto'; export { appendFileSync, closeSync, existsSync, linkSync, lstatSync, mkdirSync, mkdtempSync, openSync, - readFileSync, readSync, readdirSync, renameSync, rmSync, statSync, writeFileSync, + readFileSync, readSync, readdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync, } from 'node:fs'; export { tmpdir } from 'node:os'; export { basename, dirname, join, relative, resolve } from 'node:path'; diff --git a/src/host/ports/ingress.ts b/src/host/ports/ingress.ts index 93dab17..2fb3bae 100644 --- a/src/host/ports/ingress.ts +++ b/src/host/ports/ingress.ts @@ -1,8 +1,8 @@ -import {randomUUID} from 'node:crypto'; -import {closeSync,existsSync,fsyncSync,mkdirSync,openSync,readFileSync,readdirSync,renameSync,rmSync,writeFileSync} from 'node:fs'; +import {existsSync,readFileSync,readdirSync} from 'node:fs'; import {join} from 'node:path'; import {requireEffects} from '../read-only.ts'; import {underTheLock} from '../../land/act.ts'; +import {nativePublicationStorage,publishBundle} from './publication.ts'; /** Prepared by the admitted Topos contract and receiver signer. The host does not infer origins, coverage or epochs. */ export interface IngressBundle {readonly evidence: string; readonly receipt: string} @@ -10,10 +10,8 @@ export interface IngressResult extends IngressBundle {readonly kind: 'landed' | export interface IngressStorage { publish(staged: string, committed: string): void; } -const syncDirectory = (path: string): void => {const fd=openSync(path,'r');try{fsyncSync(fd)}finally{closeSync(fd)}}; -const durableFile = (path: string, text: string): void => {const fd=openSync(path,'wx',0o600);try{writeFileSync(fd,text);fsyncSync(fd)}finally{closeSync(fd)}}; /** Directory publication makes the pair visible together; there is no later ledger append that can expose half. */ -export const nativeIngressStorage: IngressStorage = {publish(staged,committed){renameSync(staged,committed);syncDirectory(join(committed,'..'))}}; +export const nativeIngressStorage: IngressStorage = nativePublicationStorage; const directory = (store: string): string => join(store,'ingress'); const nameOf = (identity: string): string => { if(!identity||identity.includes('\0'))throw Error('REFUSE·ingress missing import identity'); @@ -48,14 +46,7 @@ export async function commitIngress(store: string, identity: string, if(existsSync(at)){const prior=read(at);if(verify(prior)!==true)throw Error('REFUSE·ingress committed bytes do not verify');return measured('once',prior)} const bundle=await prepare(ingressReceipts(store)); if(!bundle.evidence||!bundle.receipt||verify(bundle)!==true)throw Error('REFUSE·ingress evidence and receipt do not verify'); - mkdirSync(root,{recursive:true}); - const staged=join(root,'.stage-'+randomUUID());mkdirSync(staged,{mode:0o700}); - try { - durableFile(join(staged,'evidence.bound'),bundle.evidence); - durableFile(join(staged,'receipt.bound'),bundle.receipt); - syncDirectory(staged); - storage.publish(staged,at); - }finally{rmSync(staged,{recursive:true,force:true})} + publishBundle(at,{'evidence.bound':bundle.evidence,'receipt.bound':bundle.receipt},storage); return measured('landed',bundle); }); } diff --git a/src/host/ports/local-act.ts b/src/host/ports/local-act.ts new file mode 100644 index 0000000..86d13b6 --- /dev/null +++ b/src/host/ports/local-act.ts @@ -0,0 +1,93 @@ +import {existsSync,readFileSync,readdirSync} from 'node:fs'; +import {join} from 'node:path'; +import {requireEffects} from '../read-only.ts'; +import {underTheRegions} from '../../land/act.ts'; +import {publishBundle,nativePublicationStorage} from './publication.ts'; +import type {PublicationStorage} from './publication.ts'; +import {actIdentity,parse,canonical} from '@lapxo/topos/wire'; +import {fullDigest} from '../digest.ts'; + +/** Prepared and verified by the selected Topos admission/result contract. */ +export interface LocalActBundle {readonly records: string; readonly receipt: string;readonly placements?:readonly {place:string;records:string}[]} +export type LocalActVerification = (identity: string, bundle: LocalActBundle) => boolean; +const atOf=(store: string,identity: string): string=>{ + if(!identity || identity.includes('\0'))throw Error('REFUSE·act missing identity'); + return join(store,'ledger','acts','committed-'+encodeURIComponent(identity)); +}; +const read=(at: string): LocalActBundle=>{ + try{const placements=readdirSync(at).filter(name=>name.startsWith('place-')&&name.endsWith('.bound')).map(name=>({ + place:decodeURIComponent(name.slice(6,-6)),records:readFileSync(join(at,name),'utf8'), + }));return { + records:readFileSync(join(at,'records.bound'),'utf8'), + receipt:readFileSync(join(at,'receipt.bound'),'utf8'), + ...(placements.length?{placements}:{}), + }}catch(error){ + throw Error(`REFUSE·act committed result unreadable · ${(error as NodeJS.ErrnoException).code??'read failed'}`); + } +}; + +export const actLines=(bytes:string):readonly string[]=>{ + if(!bytes.endsWith('\n'))throw Error('REFUSE·act truncated committed lines'); + return bytes.slice(0,-1).split('\n'); +}; +/** Journal integrity is not authority. Signature/coverage checks remain the + * same admission boundary; the hash algorithm here is the stored seal's named + * algorithm, not a new selection of the place's wire. + */ +export function intactLocalAct(identity:string,bundle:LocalActBundle):boolean{ + if(!bundle.receipt.endsWith('\n')||bundle.receipt.slice(0,-1).includes('\n'))return false; + const receipt=parse(bundle.receipt.slice(0,-1)); + if(receipt.kind!=='fact'||!bundle.placements?.length)return false; + const f=receipt.value.fields; + if(canonical(f)!==bundle.receipt.slice(0,-1)||!/^(0|[1-9][0-9]*)$/.test(f['epoch']??''))return false; + if(f['value']!==identity||f['role']!=='writes'||f['form']!=='alphabet'||f['measure']!=='digest')return false; + return actIdentity(actLines(bundle.records),{scope:f['scope']??'',context:f['at']??'', + localEpoch:Number(f['epoch']),digest:bytes=>fullDigest(bytes,identity.slice(0,identity.indexOf(':'))), + placements:bundle.placements.map(p=>({place:p.place,records:actLines(p.records)})), + })===identity; +} + +/** Committed segments are part of this ledger, not a second authority source. */ +export function committedLocalActs(store:string):readonly {identity:string;bundle:LocalActBundle}[]{ + const root=join(store,'ledger','acts');if(!existsSync(root))return []; + return readdirSync(root).filter(name=>name.startsWith('committed-')).map(name=>{ + const identity=decodeURIComponent(name.slice(10)),bundle=read(join(root,name)); + if(!intactLocalAct(identity,bundle))throw Error('REFUSE·act committed journal seal does not verify'); + return {identity,bundle}; + }).sort((a,b)=>{ + const epoch=(one:LocalActBundle)=>{const p=parse(one.receipt.trim());return p.kind==='fact'?Number(p.value.fields['epoch']):0}; + return epoch(a.bundle)-epoch(b.bundle); + }); +} + +/** A public result is available only as a verified committed pair. + * No writer-tail guess, newest-result selection or implicit authority. + */ +export function localActResult(store: string,identity: string,verify: LocalActVerification): LocalActBundle | undefined { + const at=atOf(store,identity); + if(!existsSync(at))return undefined; + const bundle=read(at); + if(verify(identity,bundle)!==true)throw Error('REFUSE·act committed result does not verify'); + return bundle; +} + +/** One publication point for records and their native result. Re-delivery + * reads the original pair without preparation, signing or a new local epoch. + * The caller must also integrate this boundary into admission-history readers; + * this storage port alone does not activate a grammar or land authority. + */ +export async function commitLocalAct(store: string,identity: string,regions: readonly string[], + prepare: ()=>Promise,verify: LocalActVerification, + storage: PublicationStorage=nativePublicationStorage): Promise { + requireEffects('local act commitment'); + return underTheRegions(store,regions,'land',async()=>{ + const prior=localActResult(store,identity,verify); + if(prior)return {kind:'once',...prior}; + const bundle=await prepare(); + if(!bundle.records || !bundle.receipt || verify(identity,bundle)!==true)throw Error('REFUSE·act prepared result does not verify'); + const files:Record={'records.bound':bundle.records,'receipt.bound':bundle.receipt}; + for(const p of bundle.placements??[])files['place-'+encodeURIComponent(p.place)+'.bound']=p.records; + publishBundle(atOf(store,identity),files,storage); + return {kind:'landed',...bundle}; + }); +} diff --git a/src/host/ports/publication.ts b/src/host/ports/publication.ts new file mode 100644 index 0000000..ae65c20 --- /dev/null +++ b/src/host/ports/publication.ts @@ -0,0 +1,42 @@ +import {randomUUID} from 'node:crypto'; +import {closeSync,fsyncSync,mkdirSync,openSync,renameSync,rmSync,writeFileSync} from 'node:fs'; +import {dirname,join} from 'node:path'; +import {requireEffects} from '../read-only.ts'; + +export interface PublicationStorage {publish(staged: string, committed: string): void} +const syncDirectory = (path: string): void => { + const fd=openSync(path,'r');try{fsyncSync(fd)}finally{closeSync(fd)} +}; +export const nativePublicationStorage: PublicationStorage = { + publish(staged,committed){renameSync(staged,committed);syncDirectory(dirname(committed))}, +}; + +/** Publish prepared bytes as one directory. No identity, grammar or authority + * is inferred here. Readers address the committed name, never staging files. + * A failure after rename is not evidence of rollback: the caller must retain + * the uncertainty and allow a verified read of the committed name. + */ +export function publishBundle(committed: string, files: Readonly>, + storage: PublicationStorage = nativePublicationStorage): void { + requireEffects('atomic publication'); + const entries=Object.entries(files); + if(!entries.length || entries.some(([name])=>!name || name==='.' || name==='..' || /[\\/\0]/.test(name))) { + throw Error('REFUSE·commit invalid publication members'); + } + const root=dirname(committed); + const created=mkdirSync(root,{recursive:true}); + // Persist newly created directory entries up to their existing parent too. + if(created!==undefined)for(let at=root;;at=dirname(at)){ + syncDirectory(at);if(at===dirname(created))break; + } + const staged=join(root,'.stage-'+randomUUID()); + mkdirSync(staged,{mode:0o700}); + try { + for(const [name,bytes] of entries){ + const fd=openSync(join(staged,name),'wx',0o600); + try{writeFileSync(fd,bytes);fsyncSync(fd)}finally{closeSync(fd)} + } + syncDirectory(staged); + storage.publish(staged,committed); + } finally {rmSync(staged,{recursive:true,force:true})} +} diff --git a/src/host/reading-closures.ts b/src/host/reading-closures.ts index 921898c..30fd635 100644 --- a/src/host/reading-closures.ts +++ b/src/host/reading-closures.ts @@ -2,6 +2,7 @@ import {actCosts} from './act-cost.ts'; import {mkdirSync,readFileSync,existsSync} from 'node:fs'; import {join,dirname} from 'node:path'; import {canonical,parse,PROTOCOL,byBytes} from '@lapxo/topos/wire'; +import type {ReaderLifetime,ReaderReference} from '@lapxo/topos/wire'; import type {Capsule} from './capsule.ts'; import {replaceWhole,landShard,shardLines} from '../land/ledger.ts'; import {fieldOf} from '../fold/claims.ts'; @@ -12,13 +13,13 @@ type Plan={scope:string;inputs:readonly string[];needs:readonly string[];resolut const fields=(line:string)=>{const got=parse(line);if(got.kind!=='fact')throw Error('REFUSE·input projection contains a non-wire line');return got.value.fields;}; export const inputLines=(files:readonly File[]):readonly string[]=>files.map(file=>canonical({scope:file.place,form:'alphabet',measure:'text',role:'writes',value:'lock',shape:file.place,about:file.text,by:'host',at:'policy:handed-input'})); /** The selected world owns input projection and reading. The host only verifies closures and keeps native count/bytes receipts. */ -export function readingClosures(options:{root:string;store:string;reader:string;speaker:string;digest:(text:string)=>string;capsule:Capsule;region:string;projection:string;allowsEmpty?:boolean;files:readonly File[];emit?:(line:string)=>void}):{lines:readonly string[];read:number;opened:number;executed:number}{ +export function readingClosures(options:{root:string;store:string;reader:string;speaker:string;digest:(text:string)=>string;capsule:Capsule;region:string;projection:string;readerReference?:ReaderReference;lifetime?:ReaderLifetime;allowsEmpty?:boolean;files:readonly File[];emit?:(line:string)=>void}):{lines:readonly string[];read:number;opened:number;executed:number}{ const {root,store,reader,speaker,digest:hash,capsule,region,projection,files}=options,emit=options.emit??(()=>{}); const algorithm=hash('').split(':')[0]!,handed=new Map(files.map(file=>[file.place,file.text])); if(handed.size!==files.length)throw Error('REFUSE·input projection has duplicate handed coordinates'); const verify=()=>{for(const file of files)if(!readFileSync(join(root,file.place)).equals(Buffer.from(file.text)))throw Error('REFUSE·input changed '+file.place);}; verify(); - const projected=capsule.ask([{protocol:PROTOCOL,verb:'render',rootScope:'',region:projection,at:1,reads:['**'],lines:inputLines(files),files:[]}])[0]; + const projected=capsule.ask([{protocol:PROTOCOL,verb:'render',rootScope:'',region:projection,at:1,reads:['**'],lines:inputLines(files),files:[]}],options.readerReference)[0]; if(projected?.kind!=='fact'||!Array.isArray(projected.lines))throw Error('REFUSE·input projection '+(projected?.why??'no lines')); const plans=new Map(); for(const line of projected.lines){const f=fields(line),scope=f.scope??'',resolution=/^receipt:(\d+)$/.exec(f.at??''); @@ -32,7 +33,7 @@ export function readingClosures(options:{root:string;store:string;reader:string; const ordered:Plan[]=[],visiting=new Set(),done=new Set(); const visit=(scope:string)=>{if(done.has(scope))return;if(visiting.has(scope))throw Error('REFUSE·input projection dependency cycle '+scope);const p=plans.get(scope);if(!p)throw Error('REFUSE·input projection missing reading '+scope);visiting.add(scope);for(const need of p.needs)visit(need);visiting.delete(scope);done.add(scope);ordered.push(p);}; for(const scope of plans.keys())visit(scope); - const identity=hash([capsule.selection??'',capsule.digest,region,projection].join('\n')),by=speaker+':'+identity.split(':')[1]!.slice(0,12),journal='reading-closures/'+identity.split(':')[1]; + const identity=hash([capsule.selection??'',capsule.digest,region,projection,...(options.lifetime===undefined?[]:[JSON.stringify(options.lifetime)])].join('\n')),by=speaker+':'+identity.split(':')[1]!.slice(0,12),journal='reading-closures/'+identity.split(':')[1]; const prior=shardLines(store,speaker,journal),results=new Map(),out:string[]=[]; const carried=(digest:string)=>join(store,'cas','carried',digest.split(':')[1]??''); const saved=(text:string)=>{const digest=hash(text),path=carried(digest);mkdirSync(dirname(path),{recursive:true});if(!existsSync(path)||hash(readFileSync(path,'utf8'))!==digest)replaceWhole(path,text);return digest;}; @@ -50,7 +51,7 @@ export function readingClosures(options:{root:string;store:string;reader:string; else { if(readOnly())throw Error('REFUSE·preview reading closure is unpaid '+plan.scope); const started=process.hrtime.bigint(); - const dependencies=plan.needs.flatMap(need=>results.get(need)!.lines),answer=capsule.ask([{protocol:PROTOCOL,verb:'read',rootScope:plan.scope,name:plan.scope,region,at:plan.resolution,reads:['**'],lines:[...inputLines(plan.inputs.map(place=>({place,text:handed.get(place)!}))),...dependencies],files:[]}])[0]; + const dependencies=plan.needs.flatMap(need=>results.get(need)!.lines),answer=capsule.ask([{protocol:PROTOCOL,verb:'read',rootScope:plan.scope,name:plan.scope,region,at:plan.resolution,reads:['**'],lines:[...inputLines(plan.inputs.map(place=>({place,text:handed.get(place)!}))),...dependencies],files:[]}],options.readerReference)[0]; if(answer?.kind!=='fact'||!Array.isArray(answer.claims))throw Error('REFUSE·reading '+plan.scope+' · '+(answer?.why??'no claims')); lines=answer.claims.map((unknown:any)=>{if(typeof unknown?.scope!=='string'||typeof unknown?.measure!=='string'||typeof unknown?.role!=='string'||!unknown.bound||!['interval','enumerated'].includes(unknown.bound.kind))throw Error('REFUSE·reading malformed claim '+plan.scope);const span=unknown.bound;const text=canonical({scope:unknown.scope,measure:unknown.measure,role:unknown.role,form:span.kind==='interval'?'interval':'alphabet',value:span.kind==='interval'?`${span.lo}..${span.hi}`:Array.isArray(span.values)?span.values.join('|'):'',by,at:'place:'+input});fields(text);return text;}); if(!lines.length&&!options.allowsEmpty)throw Error('REFUSE·reading empty response is not admitted '+plan.scope); diff --git a/src/host/selected-capsules.ts b/src/host/selected-capsules.ts index 41a0646..5f9e849 100644 --- a/src/host/selected-capsules.ts +++ b/src/host/selected-capsules.ts @@ -25,10 +25,10 @@ export function selectedCapsules(pins: readonly string[], resolve: typeof capsul const descriptor=capsuleDescriptor(topos,offer.scope??''); const loaded=descriptor===undefined?load():undefined; const capsule:Capsule=loaded?.capsule??{ - digest:offer.value!,selection:`${digest} ${offer.scope}`, ...descriptor!,ask:requests=>{ + digest:offer.value!,selection:`${digest} ${offer.scope}`, ...descriptor!,ask:(requests,reader)=>{ if(!requests.length)return []; const actual=load();assertCapsuleDescriptor(descriptor!.lines,actual.capsule.lines); - return actual.capsule.ask(requests); + return actual.capsule.ask(requests,reader); }, }; const projected=loaded?.offer??canonical(offer); @@ -36,10 +36,10 @@ export function selectedCapsules(pins: readonly string[], resolve: typeof capsul const fields=ownLock().flatMap(line=>{const p=parse(line);return p.kind==='fact'?[p.value.fields]:[];}); const wire=wireAt(fields,Number.MAX_SAFE_INTEGER),algorithm=wire&&[...wire.digests][0]; if(!algorithm)throw Error('REFUSE·input instrument has no admitted digest algorithm'); - const selected:Capsule={...capsule,selection:`${digest} ${offer.scope}`,ask:requests=>capsule.ask(requests.map(request=>{ + const selected:Capsule={...capsule,selection:`${digest} ${offer.scope}`,ask:(requests,reader)=>capsule.ask(requests.map(request=>{ const provider=providerInputs(topos,digest,offer.scope??'',offer.value!,request.region??'',bytes=>fullDigest(bytes,algorithm)); return provider===undefined?request:{...request,provider}; - }))}; + }),reader)}; return {capsule:selected,offer:projected}; })); } diff --git a/src/land/ledger.ts b/src/land/ledger.ts index 9b6df96..7586179 100644 --- a/src/land/ledger.ts +++ b/src/land/ledger.ts @@ -1,3 +1,5 @@ +import {actLines,committedLocalActs} from '../host/ports/local-act.ts'; +import {readdirSync} from 'node:fs'; import {requireEffects} from '../host/read-only.ts'; import { appendFileSync, closeSync, dirname, existsSync, join, linkSync, mkdirSync, openSync, readFileSync, readSync, renameSync, rmSync, statSync, writeFileSync } from '../host/io.ts'; import { storeRoot } from '../host/ports/store.ts'; @@ -26,14 +28,29 @@ export function writerFile(store: string, writer: string): string { const held = new Map(); export function ledgerLines(store: string, writer: string): readonly string[] { - return linesAt(writerFile(store, writer)); + return journalLines(store,writer,'.',linesAt(writerFile(store, writer))); } export function shardFile(store: string, writer: string, region: string): string { return storeAt(store, 'ledger', writer.replace(/[^a-zA-Z0-9_-]/g, ''), `${region.replace(/\/+$/, '') || '@'}${EXTENSION}`); } -export const shardLines = (store: string, writer: string, region: string): readonly string[] => linesAt(shardFile(store, writer, region)); +export const shardLines = (store: string, writer: string, region: string): readonly string[] => journalLines(store,writer,region,linesAt(shardFile(store, writer, region))); + +const journalMemo=new Map(); +function journalLines(store:string,writer:string,place:string,legacy:readonly string[]):readonly string[]{ + const fresh=committedLocalActs(store).flatMap(act=>act.bundle.placements?.filter(p=>p.place===place).flatMap(p=>actLines(p.records).filter(line=>fieldOf(line,'by')===writer))??[]); + if(!fresh.length)return legacy; + const lines=[...new Set([...legacy,...fresh])],key=store+'\0'+writer+'\0'+place,last=journalMemo.get(key); + if(last?.length===lines.length&&last.every((line,i)=>line===lines[i]))return last; + journalMemo.set(key,lines);return lines; +} +export function ledgerWriters(store:string):readonly string[]{ + const at=join(store,'ledger'); + const legacy=existsSync(at)?readdirSync(at).filter(name=>name.endsWith(EXTENSION)).map(name=>name.slice(0,-EXTENSION.length)):[]; + const committed=committedLocalActs(store).flatMap(act=>act.bundle.placements?.filter(p=>p.place==='.').flatMap(p=>actLines(p.records).map(line=>fieldOf(line,'by')))??[]); + return [...new Set([...legacy,...committed])]; +} export function landShard(store: string, writer: string, region: string, lines: readonly string[]): number { return appendNew(shardFile(store, writer, region), lines); diff --git a/src/land/owned.ts b/src/land/owned.ts index 79c0308..5402d05 100644 --- a/src/land/owned.ts +++ b/src/land/owned.ts @@ -50,11 +50,11 @@ export function ownedOf(root: string, signed: readonly string[], admits: (line: } /** A place's own lock gains the lines a batch landed there, appended whole: a reader never meets half of it, and every line already there keeps its bytes as they were. */ -export function landOwned(root: string, place: string, lines: readonly string[]): void { +export function landOwned(root: string, place: string, lines: readonly string[], committed=false): void { if (!lines.length) return tellOwn(place, []); const at = join(root, place, LOCK); const text = observeText(at) ?? ''; - for (const by of new Set(lines.map(line => fieldOf(line, 'by')))) { + if(!committed) for (const by of new Set(lines.map(line => fieldOf(line, 'by')))) { landShard(storeOf(root), by, `${place}/${LOCK}`, lines.filter(line => fieldOf(line, 'by') === by)); } writeFileSync(`${at}.${process.pid}.landing`, `${text.replace(/\n*$/, '\n')}${lines.join('\n')}\n`); diff --git a/src/observe/files.ts b/src/observe/files.ts index 7b3fad2..0df7f1c 100644 --- a/src/observe/files.ts +++ b/src/observe/files.ts @@ -1,4 +1,4 @@ -import { existsSync, lstatSync, readFileSync, readdirSync, readlinkSync } from 'node:fs'; +import { existsSync, lstatSync, statSync, readFileSync, readdirSync, readlinkSync } from 'node:fs'; import type { Stats } from 'node:fs'; import { join, relative, sep } from 'node:path'; @@ -10,7 +10,12 @@ const seen = new Map /** A coordinate read once is kept by its stamp — its inode, size and time — and read again only when the stamp moves. */ function bytesAt(at: string): Buffer | undefined { - const st = stampable(at); + // Reading follows a link, so its cache stamp must describe the same target. + // Directory links have no file bytes; traversal keeps its separate link policy. + let st = stampable(at); + if (st?.isSymbolicLink()) { + try { st = statSync(at); } catch { return undefined; } + } if (st === undefined || st.isDirectory() || !existsSync(at)) return undefined; const stamp = `${st.ino}-${st.size}-${st.mtimeMs}`; const held = seen.get(at); diff --git a/test/act-result-cli.test.ts b/test/act-result-cli.test.ts new file mode 100644 index 0000000..df9bc8f --- /dev/null +++ b/test/act-result-cli.test.ts @@ -0,0 +1,72 @@ +import assert from 'node:assert/strict'; +import {test} from 'node:test'; +import {generateKeyPairSync} from 'node:crypto'; +import {mkdtempSync, mkdirSync, readFileSync, writeFileSync, rmSync} from 'node:fs'; +import {tmpdir} from 'node:os'; +import {join} from 'node:path'; +import {spawnSync} from 'node:child_process'; +import {canonical, parse} from '@lapxo/topos/wire'; + +const reader = process.env.BOUND_TEST_READER ?? new URL('../dist/cli/verb.js', import.meta.url).pathname; +const row = (scope: string, measure: string, value: string) => canonical({scope, measure, value, form:'alphabet', role:'writes', by:'target', at:'policy:race'}); + +for (const place of ['observations', 'inventory']) test(`committed CLI results survive replay in ${place}`, {timeout:30_000}, async () => { + const temp = mkdtempSync(join(tmpdir(), 'bound-base-')); + const root = join(temp, place), key = join(temp, 'ephemeral.pem'); + const captures:unknown[]=[]; + try { + mkdirSync(root); + const pair = generateKeyPairSync('ed25519'),device=generateKeyPairSync('ed25519'); + const deviceKey=join(temp,'device.pem');writeFileSync(deviceKey,device.privateKey.export({format:'pem',type:'pkcs8'}),{mode:0o600}); + writeFileSync(key, pair.privateKey.export({format:'pem', type:'pkcs8'}), {mode:0o600}); + const lines = [row('wire/era','id','sample'), row('wire/signature-algorithms','id','ed25519:sample'), row('wire/digest-algorithms','id','sha256')]; + for (const [name, value] of Object.entries({fields:'scope|role|form|measure|value|by|at|epoch|sig', required:'scope|role|form|measure|value|by|at', forms:'alphabet|interval', roles:'reads|writes|demands', 'at-classes':'policy|place|origin|witness|receipt', families:'keys|signer|wire|sample|tree|write|leaf|view|reader|read|fold|receipts|rendered|resolved|beat|region'})) lines.push(row(`wire/${name}`,'id',value)); + lines.push(row('keys/owner','class','authorize'), row('keys/owner','coverage','*'), row('keys/owner','public-key',pair.publicKey.export({format:'der',type:'spki'}).toString('base64')), row('keys/owner','signer','file'), row('keys/reader','class','read')); + lines.push(row('keys/device','class','read'),row('keys/device','coverage','sample/reading|sample/next'),row('keys/device','public-key',device.publicKey.export({format:'der',type:'spki'}).toString('base64')),row('keys/device','signer','file')); + for (const [scope, measure, value] of [['keys/device','resolution','1..16'], ['keys/owner','resolution','1..16'], ['signer/timeout','milliseconds','5000..5000'], ['signer/response-bytes','bytes','65536..65536']]) lines.push(canonical({scope:scope!,measure:measure!,value:value!,form:'interval',role:'writes',by:'target',at:'policy:race'})); + lines.push(row('wire/act-result','id','local-act@1'),row('wire/act-result-scope','id','receipts'),row('wire/act-result-context','id','receipt:local-act'),row('keys/folder','class','fold'),canonical({scope:'view/act',measure:'id',value:'act',role:'demands',form:'alphabet',by:'target',at:'policy:race'})); + writeFileSync(join(root,'TARGET.bound'),lines.join('\n')+'\n'); + const run = (args: string[]) => { + const started=Date.now(),result=spawnSync(process.execPath,[reader,...args],{cwd:root,env:{...process.env,NODE_OPTIONS:'',NODE_PATH:''},encoding:'utf8',timeout:15_000}); + captures.push({args:args.map(arg=>arg.replaceAll(temp,'[fixture]')),status:result.status,stdout:result.stdout,stderr:result.stderr,runtimeMs:Date.now()-started}); + return result; + }; + const boot = run(['land','--key','owner','--key-file',key]); + assert.equal(boot.status,0,boot.stderr); + const lot=join(temp,'lot.bound'); + writeFileSync(lot,row('sample/reading','observed','retained')+'\n'); + const sign=run(['sign',lot,'--key','device','--key-file',deviceKey]); + assert.equal(sign.status,0,sign.stderr); + const signed=sign.stdout.split('\n').filter(line=>parse(line).kind==='fact').join('\n')+'\n'; + writeFileSync(lot,signed); + const land=run(['land',lot]); + assert.equal(land.status,0,land.stdout+land.stderr); + const identity=/^ACT (\S+)/m.exec(land.stdout)?.[1];assert.ok(identity,land.stdout); + const query=run(['fold','--as','act',identity]); + assert.equal(query.status,0,query.stdout+query.stderr); + assert.ok(query.stdout.includes(signed)); + assert.match(query.stdout,/epoch 2 · admitted · conformance not asserted/); + const rendered=run(['fold','--as','lines']);assert.equal(rendered.status,0,rendered.stderr);assert.match(rendered.stdout,/scope=sample\/reading/); + const replay=run(['land',lot]);assert.equal(replay.status,0,replay.stderr);assert.match(replay.stdout,/ONCE/);assert.ok(replay.stdout.includes(identity)); + const again=run(['fold','--as','act',identity]);assert.equal(again.status,0,again.stderr);assert.equal(again.stdout,query.stdout); + const next=join(temp,'next.bound');writeFileSync(next,row('sample/next','observed','next')+'\n'); + const nextSign=run(['sign',next,'--key','device','--key-file',deviceKey]);assert.equal(nextSign.status,0,nextSign.stderr);assert.match(nextSign.stdout,/epoch=3/); + mkdirSync(join(root,'child'));writeFileSync(join(root,'child','TARGET.bound'),row('sample/title','id','child')+'\n'); + const own=join(temp,'own.bound');writeFileSync(own,row('sample/own','id','child-act')+'\n'); + const ownSigned=run(['sign',own,'--place','child','--key','owner','--key-file',key]);assert.equal(ownSigned.status,0,ownSigned.stderr); + writeFileSync(own,ownSigned.stdout.split('\n').filter(line=>parse(line).kind==='fact').join('\n')+'\n'); + const ownLand=run(['land',own,'--place','child']);assert.equal(ownLand.status,0,ownLand.stdout+ownLand.stderr); + const ownIdentity=/^ACT (\S+)/m.exec(ownLand.stdout)?.[1];assert.ok(ownIdentity,ownLand.stdout); + const ownQuery=run(['fold','--as','act',ownIdentity]);assert.equal(ownQuery.status,0,ownQuery.stdout+ownQuery.stderr);assert.match(ownQuery.stdout,/value=child-act/); + const ownReplay=run(['land',own,'--place','child']);assert.equal(ownReplay.status,0,ownReplay.stderr);assert.match(ownReplay.stdout,/ONCE/);assert.ok(ownReplay.stdout.includes(ownIdentity)); + const retire=join(temp,'retire.bound'); + writeFileSync(retire,[row('keys/device','class','withdraw'),row('keys/folder','class','withdraw'),row('keys/replacement','class','fold'),row('wire/act-result-context','id','receipt:changed')].join('\n')+'\n'); + const retired=run(['land',retire,'--key','owner','--key-file',key]);assert.equal(retired.status,0,retired.stdout+retired.stderr); + const historical=run(['fold','--as','act',identity]);assert.equal(historical.status,0,historical.stdout+historical.stderr);assert.equal(historical.stdout,query.stdout,'historical result survives retirement and changed profile'); + const refused=run(['sign',next,'--key','device','--key-file',deviceKey]);assert.notEqual(refused.status,0,'retired evidence never authorizes a new act');assert.match(refused.stderr,/device/); + console.log('HISTORY '+place+' · original result retained · retired key cannot sign new delivery'); + const missing=run(['fold','--as','act','sha256:'+'0'.repeat(64)]);assert.equal(missing.status,1);assert.match(missing.stderr,/REFUSE·act no committed result/); + console.log(query.stdout.trim());console.log(`ONCE ${place} · same identity and epoch · public result unchanged`); + if(process.env.BOUND_TEST_CAPTURE)writeFileSync(process.env.BOUND_TEST_CAPTURE+'.'+place+'.json',JSON.stringify(captures,null,2)+'\n'); + }finally{rmSync(temp,{recursive:true,force:true});} +}); diff --git a/test/base-guard.test.ts b/test/base-guard.test.ts new file mode 100644 index 0000000..a3991c0 --- /dev/null +++ b/test/base-guard.test.ts @@ -0,0 +1,92 @@ +import assert from 'node:assert/strict'; +import {test} from 'node:test'; +import {generateKeyPairSync} from 'node:crypto'; +import {mkdtempSync, mkdirSync, readFileSync, writeFileSync, rmSync} from 'node:fs'; +import {tmpdir} from 'node:os'; +import {join} from 'node:path'; +import {spawn, spawnSync} from 'node:child_process'; +import {canonical, parse} from '@lapxo/topos/wire'; + +const reader = process.env.BOUND_TEST_READER ?? new URL('../dist/cli/verb.js', import.meta.url).pathname; +const row = (scope: string, measure: string, value: string) => canonical({scope, measure, value, form:'alphabet', role:'writes', by:'target', at:'policy:race'}); +const native=process.env.BOUND_TEST_NATIVE_RESULT==='1'; +const pause = () => new Promise(resolve => setTimeout(resolve, 10)); + +for (const place of ['observations', 'inventory']) test(`concurrent CLI acts preserve the prepared base in ${place}`, {timeout:30_000}, async () => { + const temp = mkdtempSync(join(tmpdir(), 'bound-base-')); + const root = join(temp, place), key = join(temp, 'ephemeral.pem'); + const children: ReturnType[] = []; + try { + mkdirSync(root); + const pair = generateKeyPairSync('ed25519'); + writeFileSync(key, pair.privateKey.export({format:'pem', type:'pkcs8'}), {mode:0o600}); + const lines = [row('wire/era','id','sample'), row('wire/signature-algorithms','id','ed25519:sample'), row('wire/digest-algorithms','id','sha256')]; + for (const [name, value] of Object.entries({fields:'scope|role|form|measure|value|by|at|epoch|sig', required:'scope|role|form|measure|value|by|at', forms:'alphabet|interval', roles:'reads|writes|demands', 'at-classes':'policy|place|origin|witness|receipt', families:'keys|signer|wire|sample|tree|write|leaf|view|reader|read|fold|receipts|rendered|resolved|beat|region'})) lines.push(row(`wire/${name}`,'id',value)); + lines.push(row('keys/owner','class','authorize'), row('keys/owner','coverage','*'), row('keys/owner','public-key',pair.publicKey.export({format:'der',type:'spki'}).toString('base64')), row('keys/owner','signer','file'), row('keys/reader','class','read')); + for (const [scope, measure, value] of [['keys/owner','resolution','1..16'], ['signer/timeout','milliseconds','5000..5000'], ['signer/response-bytes','bytes','65536..65536']]) lines.push(canonical({scope:scope!,measure:measure!,value:value!,form:'interval',role:'writes',by:'target',at:'policy:race'})); + if(native)lines.push(row('wire/act-result','id','local-act@1'),row('wire/act-result-scope','id','receipts'),row('wire/act-result-context','id','receipt:local-act'),row('keys/folder','class','fold')); + if(native)lines.push(canonical({scope:'view/act',measure:'id',value:'act',role:'demands',form:'alphabet',by:'target',at:'policy:race'})); + writeFileSync(join(root,'TARGET.bound'),lines.join('\n')+'\n'); + const run = (args: string[]) => spawnSync(process.execPath,[reader,...args],{cwd:root,encoding:'utf8',timeout:15_000}); + const boot = run(['land','--key','owner','--key-file',key]); + assert.equal(boot.status,0,boot.stderr); + const baseline = readFileSync(join(root,'.bound','ledger','owner.bound'),'utf8'); + const lots = ['first','second','interrupted'].map(name => { + const file = join(temp,`${name}.bound`); + writeFileSync(file,row(`sample/${name}`,'observed',name)+'\n'); + const signed = run(['sign',file,'--key','owner','--key-file',key]); + assert.equal(signed.status,0,signed.stderr); + writeFileSync(file,signed.stdout.split('\n').filter(line=>parse(line).kind==='fact').join('\n')+'\n'); + return file; + }); + // Hold the normal host lock so both real processes finish preparation on one base. + const lock = join(root,'.bound','lock'); + mkdirSync(join(root,'.bound','locks'),{recursive:true}); + writeFileSync(lock,`${process.pid} race ${new Date().toISOString()} test-owner\n`,{flag:'wx'}); + const acts = lots.map(file => { + const child = spawn(process.execPath,[reader,'land',file],{cwd:root,stdio:['ignore','pipe','pipe']}); + children.push(child); + const result = {out:'',err:''}; + child.stdout!.on('data',bytes=>result.out+=bytes); + child.stderr!.on('data',bytes=>result.err+=bytes); + const done = new Promise((resolve,reject)=>{child.once('error',reject);child.once('close',resolve);}); + return {result,done}; + }); + const deadline = Date.now()+10_000; + while (!acts.every(act=>act.result.err.includes('WAIT '))) { + assert.ok(Date.now()act.result))); + await pause(); + } + // An interrupted prepared act never reached commitment, even though signed. + children[2]!.kill('SIGTERM'); + assert.equal(await acts[2]!.done, 1); + assert.match(acts[2]!.result.err, /REFUSE·crash signal/); + assert.equal(readFileSync(join(root,'.bound','ledger','owner.bound'),'utf8'), baseline); + rmSync(lock); + const statuses = await Promise.all(acts.slice(0,2).map(act=>act.done)); + assert.deepEqual([...statuses].sort(),[0,1],JSON.stringify(acts.map(act=>act.result))); + const failed = statuses.indexOf(1), passed = statuses.indexOf(0); + assert.match(acts[failed]!.result.err,/REFUSE·base moved .*nothing landed/); + const view = run(['fold','--as','lines']); + assert.equal(view.status,0,view.stderr); + const facts = view.stdout.split('\n').flatMap(line=>{const p=parse(line);return p.kind==='fact'?[p.value.fields]:[];}); + assert.equal(facts.filter(f=>f.scope?.startsWith('sample/')).length,1); + const held = readFileSync(join(root,'.bound','ledger','owner.bound'),'utf8'); + if(native){ + const identity=/^ACT (\S+)/m.exec(acts[passed]!.result.out)?.[1];assert.ok(identity,acts[passed]!.result.out); + assert.ok(!acts[failed]!.result.out.includes('ACT sha256:')); + const result=run(['fold','--as','act',identity]);assert.equal(result.status,0,result.stderr);assert.ok(result.stdout.includes(readFileSync(lots[passed]!,'utf8').trim())); + console.log(result.stdout.trim()); + }else assert.ok(held.includes(readFileSync(lots[passed]!,'utf8').trim())); + assert.ok(!held.includes(readFileSync(lots[failed]!,'utf8').trim())); + assert.ok(!held.includes(readFileSync(lots[2]!,'utf8').trim())); + const replay = run(['land',lots[passed]!]); + assert.equal(replay.status,0,replay.stderr); + assert.match(replay.stdout,/ONCE/); + assert.equal(readFileSync(join(root,'.bound','ledger','owner.bound'),'utf8'),held); + console.log(`RACE ${place} · one committed · stale base refused · replay ONCE`); + } finally { + await Promise.all(children.filter(child=>child.exitCode===null && child.signalCode===null).map(child=>new Promise(resolve=>{child.once('close',()=>resolve());child.kill('SIGTERM');}))); + rmSync(temp,{recursive:true,force:true}); + } +}); diff --git a/test/capsule-entry.test.ts b/test/capsule-entry.test.ts index 11474ab..c6e3d95 100644 --- a/test/capsule-entry.test.ts +++ b/test/capsule-entry.test.ts @@ -7,6 +7,7 @@ import { gzipSync } from 'node:zlib'; import { createHash } from 'node:crypto'; import { canonical } from '@lapxo/topos/wire'; import { capsuleAt } from '../src/host/capsule.ts'; +import {withContentStore} from '../src/host/content-store.ts'; import { blobAt } from '../src/land/ledger.ts'; const record = (name: string, text: string, type = '0'): Buffer => { const body = Buffer.from(text); @@ -49,3 +50,20 @@ test('render requests retain independent receipts by digest, across another view const first=ask('first'),second=ask('second');assert.deepEqual(ask('first'),first);assert.deepEqual(ask('second'),second);assert.equal(readFileSync(calls,'utf8'),'11','an intervening view cannot evict a closed render'); }finally{process.argv[1]=prior;rmSync(store,{recursive:true,force:true});} }); + +for(const id of ['calibration','inventory'])test('capsule cache obeys current declared reader policy: '+id,()=>{ + const store=mkdtempSync(join(tmpdir(),'capsule-policy-')),prior=process.argv[1];process.argv[1]=new URL('../src/cli/verb.ts',import.meta.url).pathname; + try{ + const calls=join(store,'calls'),body="import{appendFileSync}from'node:fs';export const render=()=>{appendFileSync("+JSON.stringify(calls)+",'1');return ['same'];};"; + const bytes=tar(record('capsule.bound',canonical({scope:'region/result',role:'render',form:'alphabet',measure:'reads',value:'**',by:'fixture',at:'policy:test'})+'\n'),record('entry.js',body)),digest=sha(bytes);save(store,digest,bytes); + const capsule=capsuleAt(digest,'entry.js',store)!,reference={id,module:'provider/result'}; + const row=(scope:string,value:string,measure='milliseconds',form='interval')=>canonical({scope,role:'writes',form,measure,value,by:'fixture',at:'policy:test'}); + let local='0..1800'; + const policy=()=>[row('wire/reader-lifetime','bounded-process@2','id','alphabet'),row('reader/timeout','0..2000'),row('reader/response-bytes','0..65536','bytes'),row('reader/'+id+'/timeout',local)]; + const ask=()=>withContentStore(store,()=>capsule.ask([{protocol:'bound-lock/1',verb:'render',rootScope:'',region:'result',files:[]}],reference),policy); + const first=ask();assert.deepEqual(ask(),first);assert.equal(readFileSync(calls,'utf8'),'1'); + local='0..1600';assert.deepEqual(ask(),first);assert.equal(readFileSync(calls,'utf8'),'11','a changed lifetime cannot use the previous answer');assert.deepEqual(ask(),first);assert.equal(readFileSync(calls,'utf8'),'11'); + local='3000..4000';assert.throws(ask,new RegExp('REFUSE·reader '+id+' conflicting timeout'));assert.equal(readFileSync(calls,'utf8'),'11','a cache hit cannot bypass a conflicting policy'); + local='0..1600';assert.deepEqual(ask(),first);assert.equal(readFileSync(calls,'utf8'),'11','retained evidence is reusable again only under its matching current policy'); + }finally{process.argv[1]=prior;rmSync(store,{recursive:true,force:true});} +}); diff --git a/test/file-reading.test.ts b/test/file-reading.test.ts new file mode 100644 index 0000000..878bfdb --- /dev/null +++ b/test/file-reading.test.ts @@ -0,0 +1,24 @@ +import {test} from 'node:test'; +import assert from 'node:assert/strict'; +import {mkdtempSync,writeFileSync,symlinkSync,renameSync,rmSync,mkdirSync} from 'node:fs'; +import {join} from 'node:path'; +import {tmpdir} from 'node:os'; +import {observeText,observeFile,stampOf,coordinatesUnder} from '../src/observe/files.ts'; + +test('file reads use the link target identity without traversing directory links',()=>{ + const root=mkdtempSync(join(tmpdir(),'bound-file-read-')); + try { + const target=join(root,'target'),link=join(root,'link'); + writeFileSync(target,'first');symlinkSync(target,link); + assert.equal(observeText(link),'first'); + writeFileSync(join(root,'replacement'),'other');renameSync(join(root,'replacement'),target); + assert.equal(observeText(link),'other','same-size atomic target replacement invalidates the reading'); + mkdirSync(join(root,'directory'));writeFileSync(join(root,'directory','leaf'),'held'); + symlinkSync(join(root,'directory'),join(root,'directory-link')); + assert.equal(observeFile(join(root,'directory-link')),undefined); + assert.equal(stampOf(join(root,'directory-link'))?.kind,'link'); + assert.ok(!coordinatesUnder(root,root).some(name=>name.startsWith('directory-link/'))); + symlinkSync(join(root,'absent'),join(root,'dangling')); + assert.equal(observeFile(join(root,'dangling')),undefined); + } finally {rmSync(root,{recursive:true,force:true});} +}); diff --git a/test/instrument-closure.test.ts b/test/instrument-closure.test.ts index 3d5b10c..c79f123 100644 --- a/test/instrument-closure.test.ts +++ b/test/instrument-closure.test.ts @@ -1,10 +1,10 @@ import assert from 'node:assert/strict'; -import {mkdtempSync,mkdirSync,rmSync,writeFileSync} from 'node:fs'; +import {mkdtempSync,mkdirSync,rmSync,symlinkSync,writeFileSync} from 'node:fs'; import {tmpdir} from 'node:os'; import {join} from 'node:path'; import {test} from 'node:test'; import {canonical} from '@lapxo/topos/wire'; -import {instrumentDigest} from '../src/fold/digests.ts'; +import {instrumentCoordinates,instrumentDigest} from '../src/fold/digests.ts'; test('implementation identity follows compiled imports, package exports and declared subprocesses, independently of location', () => { const root=mkdtempSync(join(tmpdir(),'bound-implementation-')); @@ -31,3 +31,20 @@ test('implementation identity follows compiled imports, package exports and decl assert.notEqual(digest(),third,'a literal dynamic import is implementation'); } finally {rmSync(root,{recursive:true,force:true});} }); + +test('implementation follows loader aliases without merging distinct equal-byte modules', () => { + const root=mkdtempSync(join(tmpdir(),'bound-module-alias-')); + try { + const store=join(root,'.bound'); + writeFileSync(join(root,'TARGET.bound'),canonical({scope:'wire/digest-algorithms',role:'writes',form:'alphabet',measure:'id',value:'sha256',by:'target',at:'policy:wire'})+'\n'); + mkdirSync(join(root,'modules')); + writeFileSync(join(root,'modules','one.js'),'export const value=1;\n'); + symlinkSync(join(root,'modules'),join(root,'alias'),'dir'); + const entry=join(root,'entry.js'); + writeFileSync(entry,'import "./modules/one.js"; import "./alias/one.js";\n'); + assert.equal(instrumentCoordinates(store,entry,[],root).size,2); + writeFileSync(join(root,'modules','two.js'),'export const value=1;\n'); + writeFileSync(entry,'import "./modules/one.js"; import "./modules/two.js";\n'); + assert.equal(instrumentCoordinates(store,entry,[],root).size,3); + } finally {rmSync(root,{recursive:true,force:true});} +}); diff --git a/test/local-act.test.ts b/test/local-act.test.ts new file mode 100644 index 0000000..5378377 --- /dev/null +++ b/test/local-act.test.ts @@ -0,0 +1,94 @@ +import {test} from 'node:test'; +import assert from 'node:assert/strict'; +import {mkdirSync,mkdtempSync,readdirSync,readFileSync,rmSync,writeFileSync} from 'node:fs'; +import {tmpdir} from 'node:os'; +import {join} from 'node:path'; +import {createHash,generateKeyPairSync,sign,verify} from 'node:crypto'; +import {fork} from 'node:child_process'; +import {canonical,parse,signedBytes} from '@lapxo/topos/wire'; +import {commitLocalAct,localActResult} from '../src/host/ports/local-act.ts'; +import {nativePublicationStorage} from '../src/host/ports/publication.ts'; +import {underTheRegions} from '../src/land/act.ts'; + +for(const coordinate of ['catalogue/items','research/observations'])test(`atomic local result: ${coordinate}`,async()=>{ + const temp=mkdtempSync(join(tmpdir(),'bound-commit-')); + const store=join(temp,'place','.bound'); + mkdirSync(store,{recursive:true}); + try { + const keys=generateKeyPairSync('ed25519'); + const signed=(fields:Record):string=>canonical({...fields, + sig:'ed25519:'+sign(null,Buffer.from(signedBytes(fields)),keys.privateKey).toString('base64')}); + const record=signed({scope:coordinate,role:'writes',form:'alphabet',measure:'id', + value:'one',epoch:'7',by:'owner',at:'place:own'}); + const identity='sha256:'+createHash('sha256').update(record+'\n').digest('hex'); + const receipt=signed({scope:'receipts/acts',role:'writes',form:'alphabet',measure:'digest', + value:identity,epoch:'7',by:'owner',at:'receipt:local'}); + const bundle={records:record+'\n',receipt:receipt+'\n'}; + // Host storage consumes an external verifier. Binding/order rules have their + // own Topos tests; this test verifies publication and interruption only. + const verifies=(id:string,got:typeof bundle):boolean=>id===identity + && got.records===bundle.records && got.receipt===bundle.receipt + && [record,receipt].every(line=>{ + const p=parse(line);if(p.kind!=='fact')return false; + return verify(null,Buffer.from(signedBytes(p.value.fields)),keys.publicKey, + Buffer.from(p.value.fields['sig']!.slice('ed25519:'.length),'base64')); + }); + assert.equal(localActResult(store,identity,verifies),undefined); + let preparations=0; + const prepare=async()=>{preparations++;return bundle}; + await assert.rejects(commitLocalAct(store,identity,[],prepare,verifies,{publish(staged){ + assert.equal(localActResult(store,identity,verifies),undefined); + assert.equal(readFileSync(join(staged,'records.bound'),'utf8'),bundle.records); + assert.equal(readFileSync(join(staged,'receipt.bound'),'utf8'),bundle.receipt); + throw Error('interrupted before publication'); + }}),/interrupted before/); + assert.equal(localActResult(store,identity,verifies),undefined); + assert.deepEqual(readdirSync(join(store,'ledger','acts')),[]); + + // Rename may succeed while delivery or directory synchronization fails. + // Preserve the error; recovery reads the committed pair, never infers rollback. + await assert.rejects(underTheRegions(store,[],'land',()=>commitLocalAct(store,identity,[],prepare,verifies,{publish(staged,at){ + nativePublicationStorage.publish(staged,at); + throw Error('delivery lost after publication'); + }})),/delivery lost after/); + assert.deepEqual(localActResult(store,identity,verifies),bundle); + const before=preparations; + assert.deepEqual(await commitLocalAct(store,identity,[],async()=>{throw Error('must not prepare again')},verifies), + {kind:'once',...bundle}); + assert.equal(preparations,before); + + const at=join(store,'ledger','acts','committed-'+encodeURIComponent(identity)); + writeFileSync(join(at,'receipt.bound'),receipt.replace('value=sha256:','value=sha256:00')+'\n'); + assert.throws(()=>localActResult(store,identity,verifies),/committed result does not verify/); + await assert.rejects(commitLocalAct(store,identity,[],prepare,verifies),/does not verify/); + assert.equal(preparations,before); + rmSync(join(at,'receipt.bound')); + assert.throws(()=>localActResult(store,identity,verifies),/REFUSE·act committed result unreadable/); + + // A killed process cannot run finally. Its staged, fsynced bytes must still + // be invisible to another process; this is stronger than throwing in a hook. + const crashStore=join(temp,'interrupted','.bound');mkdirSync(crashStore,{recursive:true}); + const script=join(temp,'interrupted.mjs'); + writeFileSync(script,`import {commitLocalAct,localActResult} from ${JSON.stringify(new URL('../src/host/ports/local-act.ts',import.meta.url).href)}; + const store=${JSON.stringify(crashStore)},identity=${JSON.stringify(identity)},bundle=${JSON.stringify(bundle)}; + await commitLocalAct(store,identity,[],async()=>bundle,(id,got)=>id===identity&&got.records===bundle.records&&got.receipt===bundle.receipt, + {publish(){process.send({phase:'staged'});Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0)}}); + `); + const child=fork(script,{stdio:['ignore','ignore','pipe','ipc']}); + const exited=new Promise(resolve=>child.once('close',()=>resolve())); + let timer:ReturnType|undefined; + try { + await new Promise((resolve,reject)=>{ + timer=setTimeout(()=>reject(Error('publication child did not stage')),5000); + child.once('error',reject); + child.once('close',()=>reject(Error('publication child exited before staging'))); + child.once('message',message=>{ + if((message as {phase?:string}).phase==='staged')resolve();else reject(Error('unexpected publication phase')); + }); + }); + child.kill('SIGKILL');await exited; + assert.equal(localActResult(crashStore,identity,verifies),undefined); + assert.ok(readdirSync(join(crashStore,'ledger','acts')).every(name=>name.startsWith('.stage-'))); + } finally {clearTimeout(timer);child.kill('SIGKILL');await exited} + } finally {rmSync(temp,{recursive:true,force:true})} +}); diff --git a/test/reader-completion.test.ts b/test/reader-completion.test.ts index d764869..e6821d2 100644 --- a/test/reader-completion.test.ts +++ b/test/reader-completion.test.ts @@ -1,13 +1,16 @@ import {test} from 'node:test'; import {strict as assert} from 'node:assert'; -import {generateKeyPairSync} from 'node:crypto'; +import {gzipSync} from 'node:zlib'; +import {standingBytes} from '@lapxo/topos/standing'; +import {createHash,generateKeyPairSync} from 'node:crypto'; import {mkdtempSync,mkdirSync,writeFileSync,readFileSync,rmSync} from 'node:fs'; import {tmpdir} from 'node:os'; import {join} from 'node:path'; import {spawnSync} from 'node:child_process'; import {canonical} from '@lapxo/topos/wire'; -for(const bounded of [false,true])test(`a requested native view waits for its ${bounded?'bounded':'historical'} declared reading and reuses the unchanged answer`,()=>{ +for(const profile of ['historical','bounded-process@1','bounded-process@2','disjoint@2','capsule@2','projection@2'])test(`a requested native view consumes ${profile} without changing its compatibility contract`,()=>{ + const bounded=profile!=='historical',capsuleMode=['capsule@2','projection@2'].includes(profile); const reader=process.env.BOUND_TEST_READER ?? new URL('../dist/cli/verb.js',import.meta.url).pathname; const temp=mkdtempSync(join(tmpdir(),'bound-completion-')),root=join(temp,'place'),pair=generateKeyPairSync('ed25519'); const key=join(temp,'key.pem');writeFileSync(key,pair.privateKey.export({type:'pkcs8',format:'pem'}),{mode:0o600}); @@ -23,12 +26,45 @@ for(const bounded of [false,true])test(`a requested native view waits for its ${ try{ mkdirSync(join(root,'src'),{recursive:true});writeFileSync(join(root,'src/input.txt'),'first'); writeFileSync(join(root,'extent.mjs'),String.raw`import {appendFileSync} from 'node:fs'; export const observe = bytes => { Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,120); appendFileSync('calls','run\n'); return [{scope:'extent',role:'writes',measure:'bytes',bound:{kind:'interval',lo:bytes.length,hi:bytes.length}}]; };`); - if(bounded)seed.push(row('wire/reader-lifetime','id','bounded-process@1'),row('reader/timeout','milliseconds','0..1000','interval'),row('reader/response-bytes','bytes','0..65536','interval'),row('wire/reader-empty','id','declared-empty@1'),row('wire/reader-inputs','id','declared-presence@1'),row('reader/inputs','id','required')); + if(bounded)seed.push(row('wire/reader-lifetime','id',profile==='disjoint@2'||capsuleMode?'bounded-process@2':profile),row('reader/timeout','milliseconds','0..1000','interval'),row('reader/response-bytes','bytes','0..65536','interval'),row('wire/reader-empty','id','declared-empty@1'),row('wire/reader-inputs','id','declared-presence@1'),row('reader/inputs','id','required')); + if(profile.endsWith('@2')&&!capsuleMode)seed.push(row('reader/extent/timeout','milliseconds',profile==='disjoint@2'?'1500..2000':'200..800','interval')); + if(capsuleMode){ + const hash=(bytes:Uint8Array|string)=>'sha256:'+createHash('sha256').update(bytes).digest('hex'); + const member=(name:string,text:string)=>{const bytes=Buffer.from(text),h=Buffer.alloc(512);h.write(name);h.write('0000644\0',100);h.write('0000000\0',108);h.write('0000000\0',116);h.write(bytes.length.toString(8).padStart(11,'0')+'\0',124);h.write('00000000000\0',136);h.fill(32,148,156);h.write('0',156);h.write('ustar\0',257);h.write(h.reduce((a,b)=>a+b,0).toString(8).padStart(6,'0')+'\0 ',148);return Buffer.concat([h,bytes,Buffer.alloc(Math.ceil(bytes.length/512)*512-bytes.length)]);}; + const plan=canonical({scope:'one',role:'reads',form:'alphabet',measure:'reads',value:'src/input.txt',at:'receipt:1',by:'world'}); + const module="import{appendFileSync}from'node:fs';const note=()=>appendFileSync("+JSON.stringify(join(root,'calls'))+",'run\\n');const claim=n=>[{scope:'extent',role:'writes',measure:'bytes',bound:{kind:'interval',lo:n,hi:n}}];export const observe=bytes=>{note();return claim(bytes.length);};export const render=()=>["+JSON.stringify(plan)+"];export const receipt=asked=>{note();return claim(asked.lines.find(line=>line.scope==='src/input.txt').about.length);};"; + const declarations=[row('region/extent','reads','**'),row('region/extent','writes','**'),...(profile==='projection@2'?[row('region/extent','input-projection','inputs')]:[])]; + const archive=gzipSync(Buffer.concat([member('capsule.bound',declarations.join('\n')+'\n'),member('entry.js',module),Buffer.alloc(1024)])),blob=hash(archive); + const standing=standingBytes([canonical({scope:'offers/provider',kind:'capsule',role:'writes',form:'alphabet',measure:'digest',value:blob,restsOn:blob,by:'world',at:'policy:sample'})]),pin=hash(standing); + const cas=join(root,'.bound/cas/blobs');mkdirSync(cas,{recursive:true});writeFileSync(join(cas,blob.slice(7)),archive);writeFileSync(join(cas,pin.slice(7)),standing); + const without=seed.filter(line=>!line.includes('scope=reader/extent ')&&!line.includes('scope=reader/timeout '));seed.splice(0,seed.length,...without); + const families=seed.findIndex(line=>line.includes('scope=wire/families '));seed[families]=seed[families].replace('value=', 'value=dep|uses|'); + const shapes=seed.findIndex(line=>line.includes('scope=wire/shapes '));seed[shapes]=seed[shapes].replace('value=', 'value=entry.js|'); + seed.push(row('reader/timeout','milliseconds','0..3000','interval'),row('reader/provider/extent/timeout','milliseconds','0..2500','interval'),row('uses/provider','id',pin),canonical({scope:'dep/provider',role:'writes',form:'alphabet',measure:'id',value:blob,shape:'entry.js',at:'policy:sample',by:'target'}),row('region/extent','coordinates','src/**')); + } writeFileSync(join(root,'TARGET.bound'),seed.join('\n')+'\n'); const bootstrap=run(['land','--key','device','--key-file',key]);assert.equal(bootstrap.status,0,bootstrap.stderr); - const first=run(['fold','--as','evidence']);assert.equal(first.status,0,first.stderr);assert.match(first.stdout,/scope=extent .*value=5\.\.5/,first.stderr);assert.equal(first.stderr.includes('GREY reading:'),false,first.stderr); - const calls=readFileSync(join(root,'calls'),'utf8'); + const first=run(['fold','--as','evidence']); + if(profile==='disjoint@2'){assert.equal(first.status,1,first.stderr);assert.match(first.stderr,/REFUSE·reader extent conflicting timeout/);assert.equal(first.stdout.includes('scope=extent'),false);assert.throws(()=>readFileSync(join(root,'calls')));console.log(first.stderr.trim());return;} + assert.equal(first.status,0,first.stderr);assert.match(first.stdout,/scope=extent .*value=5\.\.5/,first.stderr);assert.equal(first.stderr.includes('GREY reading:'),false,first.stderr); + let calls=readFileSync(join(root,'calls'),'utf8'); const second=run(['fold','--as','evidence']);assert.equal(second.status,0,second.stderr);assert.match(second.stdout,/scope=extent .*value=5\.\.5/);assert.equal(readFileSync(join(root,'calls'),'utf8'),calls);assert.match(second.stderr,/OBSERVE\s+0 run/); + if(capsuleMode){ + const policy=join(temp,'capsule-limits.proposal');writeFileSync(policy,row('reader/provider/extent/timeout','milliseconds','0..2000','interval')+'\n'); + const admitted=run(['land',policy,'--key','device','--key-file',key]);assert.equal(admitted.status,0,admitted.stderr); + const reread=run(['fold','--as','evidence']);assert.equal(reread.status,0,reread.stderr);assert.match(reread.stdout,/scope=extent .*value=5\.\.5/);assert.equal(readFileSync(join(root,'calls'),'utf8'),calls+'run\n');calls=readFileSync(join(root,'calls'),'utf8'); + const idle=run(['fold','--as','evidence']);assert.equal(idle.status,0,idle.stderr);assert.equal(readFileSync(join(root,'calls'),'utf8'),calls);assert.match(idle.stderr,/OBSERVE\s+0 run/); + writeFileSync(policy,row('reader/provider/extent/timeout','milliseconds','4000..5000','interval')+'\n');const refused=run(['land',policy,'--key','device','--key-file',key]);assert.equal(refused.status,0,refused.stderr); + const conflicting=run(['fold','--as','evidence']);assert.equal(conflicting.status,1,conflicting.stderr);assert.match(conflicting.stderr,/REFUSE·reader provider\/extent conflicting timeout/);assert.doesNotMatch(conflicting.stdout,/scope=extent/);assert.equal(readFileSync(join(root,'calls'),'utf8'),calls);console.log(conflicting.stderr.trim());return; + } + if(profile==='bounded-process@2'){ + const policy=join(temp,'limits.proposal');writeFileSync(policy,row('reader/extent/timeout','milliseconds','200..700','interval')+'\n'); + const narrowed=run(['land',policy,'--key','device','--key-file',key]);assert.equal(narrowed.status,0,narrowed.stderr); + const reread=run(['fold','--as','evidence']);assert.equal(reread.status,0,reread.stderr);assert.match(reread.stdout,/scope=extent .*value=5\.\.5/); + assert.equal(readFileSync(join(root,'calls'),'utf8'),calls+'run\n','changed effective policy cannot reuse an old current-response receipt'); + calls=readFileSync(join(root,'calls'),'utf8'); + const kept=run(['fold','--as','evidence']);assert.equal(kept.status,0,kept.stderr);assert.equal(readFileSync(join(root,'calls'),'utf8'),calls);assert.match(kept.stderr,/OBSERVE\s+0 run/); + } writeFileSync(join(root,'src/input.txt'),'changed'); const changed=run(['fold','--as','evidence']);assert.equal(changed.status,0,changed.stderr);assert.match(changed.stdout,/scope=extent .*value=7\.\.7/);assert.equal(readFileSync(join(root,'calls'),'utf8'),calls+'run\n'); // An operational refusal cannot seal unchanged inputs as a completed fold. @@ -49,5 +85,5 @@ for(const bounded of [false,true])test(`a requested native view waits for its ${ rmSync(join(root,'src/input.txt'));const missing=run(['fold','--as','evidence']);assert.equal(missing.status,1,missing.stderr);assert.match(missing.stderr,/required input selection is empty/); } - }finally{if(process.env.BOUND_TEST_CAPTURE)writeFileSync(process.env.BOUND_TEST_CAPTURE+(bounded?'.bounded':'.historical')+'.json',JSON.stringify(captures,null,2)+'\n');rmSync(temp,{recursive:true,force:true});} + }finally{if(process.env.BOUND_TEST_CAPTURE)writeFileSync(process.env.BOUND_TEST_CAPTURE+'.'+profile.replaceAll('@','-')+'.json',JSON.stringify(captures,null,2)+'\n');rmSync(temp,{recursive:true,force:true});} }); diff --git a/test/reading-closures.test.ts b/test/reading-closures.test.ts index 530d92a..d41f10d 100644 --- a/test/reading-closures.test.ts +++ b/test/reading-closures.test.ts @@ -14,10 +14,12 @@ for(const name of ['specification','conversion'])test('native input closure: '+n const plan=(scope:string,file:string,needs='',at='receipt:1')=>canonical({scope,role:'reads',form:'alphabet',measure:'reads',value:file,...(needs?{needs}:{}),at,by:'world'}); let projected=[plan('left','left.txt'),plan('right','right.txt'),plan('summary','left.txt','left|right','receipt:0')]; const capsule={digest:'sha256:'+'1'.repeat(64),declaration:{regions:{}},lines:[],ask:(requests:any[])=>requests.map(req=>{if(req.verb==='render')return {protocol:PROTOCOL,kind:'fact',lines:projected};run++;return {protocol:PROTOCOL,kind:'fact',claims:[{scope:'seen/'+req.rootScope,role:'reads',measure:'status',bound:{kind:'enumerated',values:['met']}}]};})} as Capsule; - const read=()=>readingClosures({root,store,reader:name,speaker:'reader',digest:text=>fullDigest(text,'sha256'),capsule,region:'reading',projection:'inputs',files:['left.txt','right.txt'].map(place=>({place,text:readFileSync(join(root,place),'utf8')}))}); + let lifetime={timeoutMs:2000,responseBytes:65536}; + const read=()=>readingClosures({root,store,reader:name,speaker:'reader',digest:text=>fullDigest(text,'sha256'),capsule,region:'reading',projection:'inputs',readerReference:{id:name,module:'world/reading'},lifetime,files:['left.txt','right.txt'].map(place=>({place,text:readFileSync(join(root,place),'utf8')}))}); const first=read();assert.equal(first.opened,2);assert.equal(run,3);const costs=first.lines.filter(line=>line.includes('measure=s '));assert.equal(costs.length,2);for(const cost of costs){const span=/value=(\d+\.\d+)\.\.(\d+\.\d+)/.exec(cost)!;assert.ok(span);assert.equal(span[1],span[2]);assert.ok(Number(span[1])>=0);}const idle=read();assert.equal(idle.opened,0);assert.equal(run,3);assert.deepEqual(idle.lines.filter(line=>line.includes('measure=s ')),costs,'reuse retains the measured regional cost without measuring a fresh execution'); - writeFileSync(join(root,'left.txt'),'changed');assert.equal(read().opened,1);assert.equal(run,5,'only changed leaf and its dependent reading execute'); - const carried=join(store,'cas','carried');for(const name of readdirSync(carried))writeFileSync(join(carried,name),'corrupt');assert.equal(read().opened,2);assert.equal(run,8,'corrupt authentic carriers recompute'); + lifetime={...lifetime,timeoutMs:1800};assert.equal(read().opened,2);assert.equal(run,6,'effective policy changes reopen the regional readings');assert.equal(read().opened,0);assert.equal(run,6); + writeFileSync(join(root,'left.txt'),'changed');assert.equal(read().opened,1);assert.equal(run,8,'only changed leaf and its dependent reading execute'); + const carried=join(store,'cas','carried');for(const name of readdirSync(carried))writeFileSync(join(carried,name),'corrupt');assert.equal(read().opened,2);assert.equal(run,11,'corrupt authentic carriers recompute'); const before=run;projected=[plan('left','left.txt','right'),plan('right','right.txt','left')];assert.throws(read,/dependency cycle/);assert.equal(run,before,'cyclic projection refuses before any reading'); projected=[plan('outside','not-handed')];assert.throws(read,/unhanded/);assert.equal(run,before); }finally{rmSync(root,{recursive:true,force:true});}