@lapxo/bound 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -121
- package/TARGET.bound +51 -23
- package/dist/cli/standing-result.js +4 -3
- package/dist/cli/verb.js +36 -3
- package/dist/engine/encoding.js +2 -0
- package/dist/engine/index.d.ts +2 -0
- package/dist/engine/index.js +2 -0
- package/dist/engine/ports.d.ts +32 -0
- package/dist/engine/ports.js +103 -0
- package/dist/host/admitted-place.js +6 -0
- package/dist/host/contextual-place.js +2 -2
- package/dist/host/io.js +2 -2
- package/dist/host/reference-authenticated.d.ts +12 -0
- package/dist/host/reference-authenticated.js +47 -31
- package/dist/host/reference-contracts.js +6 -0
- package/dist/host/reference-export.d.ts +33 -0
- package/dist/host/reference-export.js +81 -0
- package/dist/host/reference-native-api.d.ts +3 -0
- package/dist/host/reference-native-api.js +3 -0
- package/dist/host/reference-native.d.ts +21 -1
- package/dist/host/reference-native.js +34 -10
- package/dist/host/reference-profile.js +2 -1
- package/dist/host/reference-standing.js +18 -0
- package/dist/host/refusals.d.ts +14 -0
- package/dist/host/refusals.js +43 -0
- package/dist/host/signing.js +7 -1
- package/dist/observe/files.js +11 -1
- package/dist/wasm/object.js +2 -2
- package/docs/contracts/authenticated-reference.publication.json +2 -2
- package/docs/contracts/host-ports.md +23 -0
- package/docs/contracts/host-ports.publication.json +25 -0
- package/docs/contracts/native-publication.inventory.json +7 -1
- package/docs/contracts/optional-wasm-adapter.publication.json +1 -1
- package/docs/contracts/readme.publication.json +25 -0
- package/docs/contracts/reference-backend.md +24 -0
- package/docs/contracts/reference-backend.publication.json +25 -0
- package/docs/contracts/reference-export.md +31 -0
- package/docs/contracts/reference-export.publication.json +25 -0
- package/docs/contracts/reference-port.md +8 -1
- package/docs/contracts/reference-port.publication.json +1 -1
- package/docs/contracts/refusals.bound +94 -0
- package/docs/contracts/refusals.md +47 -0
- package/docs/contracts/refusals.publication.json +25 -0
- package/docs/contracts/standing.bound +9 -0
- package/docs/contracts/standing.md +24 -0
- package/docs/contracts/standing.publication.json +25 -0
- package/package.json +49 -4
- package/receipts.bound +9550 -7668
- package/samples/authenticated-reference/compatibility.json +306 -0
- package/samples/authenticated-reference/yes.json +2 -2
- package/samples/host-ports/no.json +16 -0
- package/samples/host-ports/yes.json +9 -0
- package/samples/readme/no.json +1 -0
- package/samples/readme/yes.json +1 -0
- package/samples/reference-backend/no.json +1 -0
- package/samples/reference-backend/world-fixture.json +8 -0
- package/samples/reference-backend/yes.json +1 -0
- package/samples/reference-export/no.json +5 -0
- package/samples/reference-export/yes.json +15 -0
- package/samples/reference-port/no/catalog/TARGET.bound +33 -0
- package/samples/reference-port/no/route-notes/TARGET.bound +33 -0
- package/samples/refusals/no.json +4 -0
- package/samples/refusals/yes.json +9 -0
- package/samples/standing/no.json +4 -0
- package/samples/standing/yes.json +21 -0
- package/vectors/native/authenticated-reference-formation.vector.json +55 -1
- package/vectors/native/authenticated-reference.vector.json +32 -396
- package/vectors/native/host-ports.vector.json +107 -0
- package/vectors/native/readme.vector.json +76 -0
- package/vectors/native/reference-backend.vector.json +84 -0
- package/vectors/native/reference-export.vector.json +78 -0
- package/vectors/native/refusals.vector.json +95 -0
- package/vectors/native/standing.vector.json +116 -0
- package/vectors/wasm-object.cli.json +16 -61
- package/dist/cli/accept.d.ts +0 -28
- package/dist/cli/act-result.d.ts +0 -12
- package/dist/cli/args.d.ts +0 -11
- package/dist/cli/custodian.d.ts +0 -1
- package/dist/cli/host.d.ts +0 -1
- package/dist/cli/names.d.ts +0 -25
- package/dist/cli/native-descendant.d.ts +0 -1
- package/dist/cli/native.d.ts +0 -1
- package/dist/cli/observe.d.ts +0 -1
- package/dist/cli/owner.d.ts +0 -37
- package/dist/cli/pass.d.ts +0 -6
- package/dist/cli/place.d.ts +0 -76
- package/dist/cli/release-result.d.ts +0 -5
- package/dist/cli/standing-result.d.ts +0 -5
- package/dist/cli/takes.d.ts +0 -30
- package/dist/fold/admission-history.d.ts +0 -6
- package/dist/fold/ceilings.d.ts +0 -24
- package/dist/fold/claims.d.ts +0 -29
- package/dist/fold/closed.d.ts +0 -15
- package/dist/fold/configures.d.ts +0 -4
- package/dist/fold/digests.d.ts +0 -29
- package/dist/fold/evidence.d.ts +0 -32
- package/dist/fold/fold-worker.d.ts +0 -1
- package/dist/fold/kept.d.ts +0 -29
- package/dist/fold/keys.d.ts +0 -17
- package/dist/fold/laid.d.ts +0 -17
- package/dist/fold/nos.d.ts +0 -8
- package/dist/fold/object.d.ts +0 -3
- package/dist/fold/observed.d.ts +0 -35
- package/dist/fold/opened.d.ts +0 -5
- package/dist/fold/own.d.ts +0 -24
- package/dist/fold/paid.d.ts +0 -11
- package/dist/fold/place-inputs.d.ts +0 -17
- package/dist/fold/places.d.ts +0 -24
- package/dist/fold/rank.d.ts +0 -3
- package/dist/fold/reach.d.ts +0 -18
- package/dist/fold/readers.d.ts +0 -47
- package/dist/fold/receipts.d.ts +0 -8
- package/dist/fold/region-declarations.d.ts +0 -2
- package/dist/fold/region.d.ts +0 -72
- package/dist/fold/release-policy.d.ts +0 -67
- package/dist/fold/resolved.d.ts +0 -18
- package/dist/fold/roles.d.ts +0 -17
- package/dist/fold/second.d.ts +0 -18
- package/dist/fold/shards.d.ts +0 -29
- package/dist/fold/signed.d.ts +0 -23
- package/dist/fold/signers.d.ts +0 -24
- package/dist/fold/stranger.d.ts +0 -3
- package/dist/fold/views.d.ts +0 -27
- package/dist/fold/wire.d.ts +0 -19
- package/dist/fold/zoom.d.ts +0 -16
- package/dist/host/act-cost.d.ts +0 -13
- package/dist/host/adapters/keys/ed25519.d.ts +0 -7
- package/dist/host/adapters/modules/javascript.d.ts +0 -3
- package/dist/host/adapters/transport/http.d.ts +0 -5
- package/dist/host/admitted-place.d.ts +0 -5
- package/dist/host/archive.d.ts +0 -11
- package/dist/host/capsule-process.d.ts +0 -21
- package/dist/host/capsule.d.ts +0 -19
- package/dist/host/cell-receipts.d.ts +0 -2
- package/dist/host/content-needed.d.ts +0 -5
- package/dist/host/content-store.d.ts +0 -8
- package/dist/host/contextual-place.d.ts +0 -59
- package/dist/host/digest.d.ts +0 -3
- package/dist/host/hash.d.ts +0 -9
- package/dist/host/io.d.ts +0 -11
- package/dist/host/lifetime.d.ts +0 -1
- package/dist/host/located.d.ts +0 -4
- package/dist/host/native/bounded-file.d.ts +0 -8
- package/dist/host/native/command.d.ts +0 -36
- package/dist/host/native/control-bridge-worker.d.ts +0 -1
- package/dist/host/native/control-bridge.d.ts +0 -30
- package/dist/host/native/control-selection.d.ts +0 -29
- package/dist/host/native/custody.d.ts +0 -5
- package/dist/host/native/deadline.d.ts +0 -12
- package/dist/host/native/descendants.d.ts +0 -1
- package/dist/host/native/generated-custodian.d.ts +0 -122
- package/dist/host/native/generated.d.ts +0 -217
- package/dist/host/native/image.d.ts +0 -36
- package/dist/host/native/jobs.d.ts +0 -75
- package/dist/host/native/loader.d.ts +0 -80
- package/dist/host/native/materialize.d.ts +0 -22
- package/dist/host/native/module-closure.d.ts +0 -27
- package/dist/host/native/module-syntax.d.ts +0 -8
- package/dist/host/native/native-binary.d.ts +0 -54
- package/dist/host/native/native-program.d.ts +0 -56
- package/dist/host/native/node-jobs.d.ts +0 -84
- package/dist/host/native/node-launch.d.ts +0 -72
- package/dist/host/native/preload.d.ts +0 -1
- package/dist/host/native/reading.d.ts +0 -91
- package/dist/host/native/receipt-environment.d.ts +0 -3
- package/dist/host/native/references.d.ts +0 -5
- package/dist/host/native/root.d.ts +0 -17
- package/dist/host/native/route.d.ts +0 -66
- package/dist/host/native/runtime.d.ts +0 -4
- package/dist/host/native-reader-context.d.ts +0 -3
- package/dist/host/objects.d.ts +0 -6
- package/dist/host/place-clock-selection.d.ts +0 -55
- package/dist/host/ports/ingress.d.ts +0 -24
- package/dist/host/ports/local-act.d.ts +0 -44
- package/dist/host/ports/place-act.d.ts +0 -46
- package/dist/host/ports/publication.d.ts +0 -10
- package/dist/host/ports/signing.d.ts +0 -31
- package/dist/host/ports/store.d.ts +0 -2
- package/dist/host/ports/transport.d.ts +0 -1
- package/dist/host/process-lifetime.d.ts +0 -11
- package/dist/host/provide.d.ts +0 -48
- package/dist/host/read-only.d.ts +0 -3
- package/dist/host/reading-closures.d.ts +0 -47
- package/dist/host/reading-context.d.ts +0 -29
- package/dist/host/reference.d.ts +0 -6
- package/dist/host/release.d.ts +0 -14
- package/dist/host/root-clock-source.d.ts +0 -85
- package/dist/host/selected-capsules.d.ts +0 -8
- package/dist/host/selected-topos.d.ts +0 -24
- package/dist/host/signing.d.ts +0 -3
- package/dist/host/source-content.d.ts +0 -12
- package/dist/host/timing.d.ts +0 -2
- package/dist/host/walk.d.ts +0 -6
- package/dist/judge/late.d.ts +0 -7
- package/dist/judge/take.d.ts +0 -59
- package/dist/judge/widening.d.ts +0 -1
- package/dist/land/act.d.ts +0 -30
- package/dist/land/alias.d.ts +0 -10
- package/dist/land/held.d.ts +0 -7
- package/dist/land/inert.d.ts +0 -26
- package/dist/land/leaving.d.ts +0 -14
- package/dist/land/ledger.d.ts +0 -33
- package/dist/land/owned.d.ts +0 -23
- package/dist/land/sign.d.ts +0 -15
- package/dist/land/standing-pin.d.ts +0 -3
- package/dist/land/vouched.d.ts +0 -21
- package/dist/land/withdraw.d.ts +0 -14
- package/dist/observe/files.d.ts +0 -14
- package/dist/observe/identity.d.ts +0 -21
- package/dist/observe/match.d.ts +0 -1
- package/dist/observe/regions.d.ts +0 -33
- package/dist/observe/run.d.ts +0 -31
- package/dist/observe/runner.d.ts +0 -20
- package/dist/render/capsule.d.ts +0 -24
- package/dist/render/field.d.ts +0 -3
- package/dist/render/names.d.ts +0 -3
- package/dist/render/open.d.ts +0 -27
- package/dist/render/page.d.ts +0 -3
- package/dist/render/receipts.d.ts +0 -3
- package/dist/render/shape.d.ts +0 -16
- package/dist/render/target.d.ts +0 -18
- package/dist/render/view.d.ts +0 -22
- package/dist/wasm/node-worker.d.ts +0 -1
- package/dist/wasm/object.d.ts +0 -8
- package/dist/wasm/worker.d.ts +0 -1
package/TARGET.bound
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
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.2.0 fold --as lines\nnpx @lapxo/bound@0.2.0 fold --as receipts@1\nnpx @lapxo/bound@0.2.0 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.2.0 fold --as help\nnpx @lapxo/bound@0.2.0 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\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/<who> 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.2.0 sign \"$lot_dir/proposal.bound\" \\\n --key \"$BOUND_KEY_ID\" --key-file \"$BOUND_KEY_FILE\" \\\n > \"$lot_dir/signed.bound\" &&\nnpx @lapxo/bound@0.2.0 land \"$lot_dir/signed.bound\" &&\nnpx @lapxo/bound@0.2.0 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.2.0 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.2.0 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/<name>` says where a world can be obtained. An admitted `uses/<name>` 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. CI logs and test results are workflow artifacts; do not commit or package them. Cross-machine portability proof (L6) remains pending for 0.1.10.\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=policy:bound/020-candidate-metadata by=target form=alphabet measure=text role=writes scope=prose/en/files/public-0 shape=README.md value=lock
|
|
1
|
+
bound-lock/1 about="# @lapxo/bound\n\nBound turns signed statements, observations and requirements into a place you can inspect. It keeps who said what, preserves incompatible declarations, and projects the views selected by that place. Missing evidence stays missing; a rendered page is not proof that every requirement has been met.\n\nThe same pure engine is available to applications and to the CLI. Topos supplies the wire and interpretation contracts; Obligations supplies the constraint algebra. Bound adds admission, authenticated reading, retained receipts and declared host operations around that core.\n\n## A place, its readings and its receipts\n\nA place declares its rules and selected worlds in `TARGET.bound`. Worlds supply readers and renderers for their own domains. A fold reads the declared inputs, applies the admitted constraints, and renders the selected views. `receipts.bound` carries the public evidence needed to check the resulting files; private admission history stays in the local `.bound/` store.\n\nUnchanged regions can retain valid receipts. A changed input reopens the regions it affects, while incompatible admitted statements remain visible. A digest identifies content; it grants neither authority nor permission to reuse an old answer as current. A receipt records a reading under its declared context, rather than establishing the truth or independence of its sources.\n\n## Install and use\n\n```sh\nnpm install @lapxo/bound@0.2.1\n```\n\nIn a place with admitted declarations and closed public receipts, check the existing evidence without running its readers again:\n\n```sh\nnpx @lapxo/bound@0.2.1 fold --check\n```\n\nFor a change, prepare a proposal, sign with a key already covered by the place, admit the signed lot, then fold and inspect the result. Signing and admission do not by themselves pay a requirement. The [usage guide](docs/usage.md) covers keys, coverage, proposals, withdrawals and release policy.\n\n## Embed the engine\n\n`objectFold` projects already admitted records in effective order. It does not acquire content, verify signatures, choose authority, commit an act or write storage. Those preparation steps belong to the host.\n\nFor an authenticated reference, your host supplies the independently accepted trust context: signer grants and epoch, selected form, policy, byte and record bounds, content and cryptographic ports. The carrier cannot choose those inputs. This example verifies the carrier through `/reference`, then uses the same `/engine` projection as the CLI:\n\n```js\nimport { objectFold } from '@lapxo/bound/engine';\nimport { inspectAuthenticatedReference } from '@lapxo/bound/reference';\n\nexport async function openAndProject(reference, trust) {\n const opened = await inspectAuthenticatedReference(reference, trust);\n return objectFold(opened.records, trust.objects);\n}\n```\n\nCaptured on a clean installed consumer, with two independently admitted fixture places and an altered carrier in each:\n\n```text\nREADME sensor · REQUIRED · altered carrier refused\nREADME editorial · REQUIRED · altered carrier refused\n```\n\nOpening and projecting a reference never commit an act. The authenticated context binds the standing contract and refusal catalog by digest, so consumers can identify the contracts used to interpret the result.\n\n## Public boundaries\n\n| Entry | Responsibility |\n| --- | --- |\n| `/engine` | Pure projection of admitted object records; optional, explicitly injected host ports. |\n| `/reference` | Inspect a carrier against the host's accepted context and verify its content and authority. |\n| `/reference/native` | Export a signed carrier from a real admitted place and open it with an explicitly selected backend. |\n| `/wasm` | Load the optional WASM adapter for the published object projection. |\n| `/refusals` and `/standing-contract` | Read the machine-readable contracts bound into authenticated exports. |\n\nNative opening selects **ESM or WASM explicitly**; an unsupported selection refuses rather than falling back. The WASM adapter covers the published object projection. Admission, effects and the whole CLI do not run inside WASM. Cross-machine evidence (L6) remains pending.\n\nThe host supplies bounded [signer, content and persistence ports](docs/contracts/host-ports.md). Their identities and limits are explicit. Retaining bytes is an explicit operation: it grants no admission or permission to reuse a response. The existing authority path verifies signatures before returning an authenticated carrier.\n\n[Complete standing](docs/contracts/standing.md) covers declared key classes and committed local acts, preserving attribution, exact withdrawals and conflicts. [Refusals](docs/contracts/refusals.md) have machine-readable codes, meanings and suggested next steps; human diagnostics are not parsed as authority.\n\n## Contracts and foundations\n\n- [Native authenticated export](docs/contracts/reference-export.md) and [reference backends](docs/contracts/reference-backend.md).\n- [Pure engine](docs/contracts/engine.md), [host ports](docs/contracts/host-ports.md) and [CLI usage](docs/usage.md).\n- [Topos](https://github.com/Lapxo/topos): wire, interpretation and identity contracts.\n- [Obligations](https://github.com/Lapxo/obligations): the unchanged constraint algebra.\n\nThe underlying object is described in [Two-Sided Constraints on a Valued Lattice](https://doi.org/10.5281/zenodo.21858428), DOI `10.5281/zenodo.21858428`.\n" at=witness:bound021-readme-middle by=target form=alphabet measure=text role=writes scope=prose/en/files/public-0 shape=README.md value=lock
|
|
2
2
|
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\n## Folded standing\n\nA place declares `view/standing role=demands form=alphabet measure=id value=standing`. `fold --as standing` authenticates each local line against its admission snapshot, then applies revisions and covered exact withdrawals through the existing fold. Every declared key class participates, including attest. Committed acts and historical journals have the same public output. Retiring a key does not erase its previously admitted evidence. Replay adds nothing. Foreign history grants no local authority. This projection is distinct from authenticated delivery history and does not create a new authority lock. An undeclared standing view refuses by name.\n" at=witness:bound-017-public-boundary by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-evidence-view shape=docs/contracts/evidence-view.md value=lock
|
|
3
|
+
bound-lock/1 about="# Authenticated native reference opening\n\n`@lapxo/bound/reference/native` exports `exportAuthenticatedReference` and `openAuthenticatedReference`. This is the Node host boundary. The platform-free inspector stays in `/reference`; the pure projector stays in `/engine`.\n\nThe receiver admits one `engine/object` declaration: `esm@1` or `wasm@1`. Missing, ambiguous and unknown selections refuse. WASM never falls back to ESM. The native route shares one context preparation, authenticates the received original records, then calls the existing selected projector. It introduces no algebra or alternate interpreter.\n\nThe host admits `reference/snapshot`, `reference/epoch`, `reference/proof-scope`, `reference/policy`, `reference/form-implementation`, `reference/records`, and the standing/refusal contract digests. The policy is the independently accepted export policy, not a policy invented from the received carrier. The prepared form implementation must match the admitted expectation, and both interpretation contracts must match the installed bytes. A carrier's accompanying context is public data, not an authority anchor.\n\nContent goes through the declared transport and its existing byte/time limits. The snapshot binds the declared public context, including resource budgets. The native opener accepts an AbortSignal and checks interruption before download and projection; the WASM worker uses its existing cancellation and lifetime contract. This does not claim cancellation of an in-flight native download, browser persistence or arbitrary browser capsules.\n\nWASM uses the installed asset manifest, runtime, guest and exact supported form standings. The caller cannot replace that manifest with a convenient fixture. Its memory, stack, execution, worker-lifetime and response budgets remain explicit admitted interval lines. A form outside that installed closure refuses by name.\n\nThe positive fixture uses the previously published native reader archive named in `samples/reference-backend/world-fixture.json`, or the same supported standing and closed modules already laid by digest. Preparation verifies every byte before timed opening. The fixture archive is fetched or retained outside opening measurements; no private store or checkout path identifies it. No provider code executes during archive preparation.\n\nThe native quartet opens one signed reference in two unrelated places, once through each explicitly selected backend. It compares authenticated standing, records and canonical projection bytes. Authority-context identity describes authentication, not an execution receipt: equal outputs never authorize reuse of a receipt across implementations. Neither opening signs or commits an act.\n\nCaptured semantic markers:\n\n```text\nWASM water-level-reference · authenticated download · same standing · same records · byte-equal ESM projection · altered carrier refused · no commit\nWASM editorial-reference · authenticated download · same standing · same records · byte-equal ESM projection · altered carrier refused · no commit\n```\n\nThe no sample changes the carrier while retaining its reference. Integrity refuses before projection. Existing vectors also retain unknown-backend, unsupported-form, byte-budget, authority and cancellation boundaries. The quartet descriptor is `reference-backend.publication.json`; installed-archive release acceptance and L6 remain separate obligations.\n" at=witness:bound021-final-bindings by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-reference-backend shape=docs/contracts/reference-backend.md value=lock
|
|
4
|
+
bound-lock/1 about="# Complete public standing\n\nSource of truth: `standing.bound`. Resolve `@lapxo/bound/standing-contract` for these exact contract lines. The authenticated export context binds their digest beside the refusal catalog digest.\n\n`bound fold --as standing` reads admitted evidence across every declared key class and committed local acts. Authentication uses the grant and signature vocabulary at each admission epoch. Storage layout is not authority. No consumer reconstructs journals or chooses the first declaration on collision.\n\n- **standing/classes: all-declared.** Standing is authenticated under admission snapshots across declared key classes.\n- **standing/duplicates: preserve-attribution.** Exact redelivery does not establish another origin.\n- **standing/withdrawals: exact.** Exact configuration withdrawals are applied before publication; typed records retain their admitted effective history.\n- **standing/conflicts: preserve.** Incompatible admitted declarations are preserved; no first-wins selection.\n- **standing/history: distinct.** Historical receipts are evidence, not current authority or a current response.\n- **standing/publication: live-configuration.** Public current configuration omits withdrawal markers; authenticated historical records remain available through evidence and act views.\n- **standing/namespaces: preserve.** The contextual carrier separates Root, legacy places and committed place contexts; clocks are never flattened.\n- **standing/effective-order: admitted.** Typed records retain admitted effective order; standing is evidence rather than a new grant of authority.\n\nThe legacy Root output is canonical signed lines. A place declaring `place-act-context@1` returns its existing JSON carrier: `root`, `legacyPlaces`, `places`, and authenticated `contexts`. Namespaces and independent clocks remain separate; contextual data never grants Root authority. Configuration revisions and exact withdrawals have already been applied. Typed effective history is passed to the existing object projection, not treated as configuration. `standing` is current evidence; `evidence` and `act` preserve history.\n\nNative quartet: `standing.publication.json`. The same real CLI vector runs in observations and inventory, in journal and committed-act modes. It prints:\n\n```text\nSTANDING observations journal · all classes · collisions retained · exact withdrawals · replay identical · forged excluded\n```\n\nThe no sample changes admitted bytes without resigning: the forged row is excluded while valid rows remain. Later withdrawal of a key does not erase its historically admitted evidence. No private fixture key, path or run log ships with the quartet.\n" at=witness:bound021-final-bindings by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-standing shape=docs/contracts/standing.md value=lock
|
|
3
5
|
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
|
|
4
6
|
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
|
|
5
7
|
bound-lock/1 about="# Explanation — historical profile\n\nThe declared view selects idea, what-holds and refuses from the byte-pinned historical document provider. The place owns its language and prose. Idea renders its own heading and body. The other two regions require their declared law readings or captured refusals; absent evidence supplies no invented result. The executable sample uses two unrelated places, checks the complete explanation file, repeats the product fold without a file difference and asks the named view directly. It also refuses a well-formed view asking an unoffered region. This quartet proves own-prose projection and absence under this profile; it does not certify law readings, a rejection corpus, typed-object states or the pending general document contract. Bound does not parse this prose.\n\n# README — historical profile\n\nThe declared view selects hero@3, commands@3 and idea@3 from the byte-pinned historical document provider. The place supplies its name, tagline, language, sentence rule and idea. Commands and measured badges are absent in the sample: no command, number or success is invented to fill them. Two unrelated places check the generated README, a second unchanged product fold and the named view; a declared unoffered region refuses by name. The implementation member is verified against the admitted historical artifact. This quartet proves the selected prose profile, not command execution, badges with measured values or a general document grammar. The eight text@3 demands remain unpaid.\n\n# Citation file — historical profile\n\nThe declared view asks the pinned document provider for cff at resolution 3. It projects the place name, version and optional citation metadata into CFF text. The sample uses the exact implementation member from the admitted historical artifact, names its hash and license, and exercises two unrelated places through the compiled CLI. It checks complete citation bytes and two equal readings; title and version follow each place. An unoffered region refuses by view name. Missing optional metadata is omitted; missing name can produce an empty answer under this historical profile. Rendering is not verification of a scientific claim or an external DOI. This pinned profile does not implement the pending general document contract.\n\n# Guide — historical profile\n\nThe declared view asks seq from the pinned historical document provider. The place owns page/seq lines and their heading. Canonical input order supplies the steps; the provider numbers that order and writes the requested shape. The executable sample uses two unrelated procedures, checks their complete Markdown and reads each view twice without differences. A declared view with an unoffered region refuses by name. An empty step set may have an empty answer; it is not invented evidence. A rendered instruction does not prove that instruction was executed. The implementation bytes remain the existing pinned profile, not a document grammar inside Bound.\n\n# Reference — historical profile\n\nThe declared view combines term, set and ref from the pinned historical document provider. The profile projects the place term and meaning, its selected world names and links to its declared Markdown shapes. The executable sample runs two unrelated places, checks their own term and meaning, the actual selected world and relative guide link, and captures two identical CLI readings. A view asking an unoffered region refuses by name. Missing terms or links can yield empty component answers; these are not measurements or a claim that obligations were paid. These historical regions and selectors belong to the selected Topos; Bound supplies verified inputs and dispatch only. The general document contract remains unpaid.\n\n# Manifest render profile\n\nThis declared view uses the selected verbatim-prose provider at text@3. The place assigns its complete manifest text to its output shape; Bound verifies and dispatches the selected offer and writes that shape. The provider does not infer a package schema, dependency graph or fields from the filename. The sample renders two places with distinct JSON bodies twice and checks exact file bytes. Two distinct prose bodies assigned to the same shape refuse; earlier outputs remain unchanged. This proves rendering, not that arbitrary JSON is an installable package.\n\n# Workflow render profile\n\nThis declared view uses the selected verbatim-prose provider at text@3. The place owns the workflow text and its shape; Bound does not infer a forge or manufacture pipeline steps. The sample writes distinct YAML bodies in two places, reads the rendered files twice and compares exact bytes. Conflicting bodies for one shape refuse without replacing prior outputs. This is a render contract, not evidence that a forge executed, staged or published a release. The release pipeline has its separate artifact gate.\n\n# Usage render profile\n\nThis declared view uses the selected verbatim-prose provider at text@3. A prose line with measure=text and the requested shape supplies its own body. The sample renders distinct Markdown bodies in two places twice and compares exact bytes. Multiple identical bodies are one text; differing bodies for one shape refuse. It invents no sections or documentation schema. This existing profile does not pay the eight general-document demands or validate commands that prose happens to mention; executable commands require their own captured vectors.\n\n# Build configuration — historical profile\n\nThe declared tsconfig view asks the admitted package provider for its build region. It projects the place's build/* lines whose shape matches the requested file: true and false become JSON booleans, other option values remain strings, and include separates its declared alternatives. The byte-fixed fixture names the implementation member and its artifact independently; Bound does not interpret compiler options. Two unrelated places exercise the compiled CLI, check the complete generated configuration and two byte-identical readings. A declared view asking an unoffered region refuses by name. This profile renders configuration; it does not validate compiler options or claim a successful build. An empty option set renders an empty compilerOptions object. It is a pinned historical profile, not the pending general document contract.\n" at=witness:public-contracts-by-operation by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-documents shape=docs/contracts/documents.md value=lock
|
|
6
8
|
bound-lock/1 about="# Help view\n\nA declared help view projects the instrument verb and flag table. It is generated from that table, not copied prose or a claim that another world is supported. Asking it does not authorize a line or call a selected external reader. The sample declares view/help value=help, checks the printed three verbs and refuses a declared view whose region has no provider.\n\n# Lines view\n\nA declared lines view projects canonical normative standing as wire lines. It is a configuration reading; it does not compute encounters or turn evidence into authority. Live exact withdrawals disappear from normative standing while authenticated evidence remains inspectable through its own view. The sample verifies signatures and attribution, redelivery ONCE, exact withdrawals, tampering and uncovered writes. A declared missing provider refuses rather than returning an invented reading.\n\n# Receipts view\n\nThe native receipt view projects the fold through the admitted Topos receipt contract. The sample uses the published place profile receipts@8|receipts@0|receipts@1: observations, summary and current region bytes. These are that profile’s declared projections, not a universal enumeration of resolutions. A receipt identifies the actual observed set; it is not an origin or a valuation. The sample obtains a native receipt, verifies its signed delivery from an attest-class key through evidence, and checks idempotent delivery. The refused sample names an uncovered write, tampered signature and declared view without a provider. No harness-written JSON is used as a receipt.\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\n# Why a coordinate\n\n`bound fold <coordinate> --as why` explains the live declarations whose exact `needs` member or `shape` names that coordinate. It prints the selector, witness and value. It does not compute an object encounter or infer authority from a path. The published sample bootstraps two independent places, explains each declared source coordinate and prints `OPEN` for a coordinate no declaration names. That absence is not zero, green or a state. A declared view with no provider refuses by name with a nonzero status. Calling why without a coordinate is not this sample’s acceptance vector; its empty historical capture pays nothing.\n\n# Declared programs\n\nThe programs view asks the selected Topos demand-status projection at resolution 8. Selection, minimum, evidence, elapsed reading and time ceiling coordinates belong to that Topos contract; Bound only hands admitted declarations and region receipts. Program status is derived from that evidence and the declared dependency graph. A demand with no evidence remains unread, its dependant remains blocked, and a missing elapsed reading keeps deadline unread. No cell encounter, origin count or information quantity is computed by this view. The sample uses the published SDK implementation on two unrelated demand chains, captures equal readings twice, names the next unblocked coordinate, and refuses dependency cycles. It does not provide stage conformance evidence or claim either program closed.\n\n# Demand card\n\nThe declared card view asks the selected Topos demand-card projection at resolution 8. It reads the selected demand coordinates, their explicit dependencies and the handed evidence region under selectors declared by that Topos. It does not infer progress from files or convert a declaration into proof. A requirement without evidence is unread; an unpaid predecessor blocks its dependant. The next coordinate is an unblocked unpaid demand. Deadline is unread when no elapsed receipt is handed; absence is not zero. These labels describe program evidence, not Obligations cell states. The sample pins the implementation member from the published Topos SDK, folds two unrelated places twice with equal stdout and refuses a declared dependency cycle. This sample intentionally has no evidence to close either program; it certifies the projection of absence and order, not stage acceptance.\n" at=witness:public-contracts-by-operation by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-views shape=docs/contracts/views.md value=lock
|
|
9
|
+
bound-lock/1 about="# Native authenticated reference export\n\n`bound sign --as reference <source-url> --key <key-id>` exports a public snapshot from an admitted local place. The selected host signer is the place's existing signer port. File signing additionally requires its explicitly supplied `--key-file`; command signing uses the host registry. There is no implicit signer, network fetch or private export runner.\n\nThe command prints one JSON value with profile `reference-export@1`, a `reference`, the exact `carrier` text and a public `context`. It neither lands the proof nor advances the place's epoch. It does not publish, write an output directory or alter TARGET, ledgers or receipts. The caller chooses where to deliver these bytes.\n\nThe place declares `reference/authentication=authenticated-standing@1`, `reference/proof-scope`, `reference/records`, and an interval `reference/export-bytes` measured in bytes. It also pins `reference/contracts/refusals` and `reference/contracts/standing` to the exact installed contract files. Missing, conflicting or unauthenticated declarations refuse. These are place declarations, not increased general ceilings.\n\nThe exporter uses Bound's authenticated Root standing and existing context preparation. It preserves typed effective history and applies the existing configuration projection; it does not implement another fold. If the current carrier profile cannot represent historical authority, it refuses as `reference-export/history` instead of dropping originals or forging a new admission. The separate B3 quartet covers complete public standing across declared classes and committed acts; this carrier still refuses historical authority it cannot represent.\n\nThe carrier retains `authenticated-standing@1` framing. Its proof commits to the original canonical signed lines. The proof's witness snapshot also commits, through `reference-export-context@1`, to semantic standing identity, epoch, proof scope, policy, form implementation, public signers, signature algorithms, the refusal-catalog digest, the standing-contract digest, and the declared byte and record budgets. Blob identity remains separate from semantic standing identity and source location.\n\nThe exported context is public data, not an authority anchor. A consumer independently accepts its keys, policy and interpretation contracts, then supplies these expectations to `inspectAuthenticatedReference`. When `contracts` is supplied, that existing API verifies the context snapshot before requesting bytes. Altering either contract digest or a resource budget invalidates that snapshot. Existing callers without the new context retain their 0.2.0 inspection contract; that compatibility does not assert verification of the added interpretation contracts.\n\n`/engine` remains pure. Exporting a reference does not select WASM, and B1 does not claim B2's backend composition. Signature, authority and context checks precede projection. `next` recommendations from `refusals.bound` grant no permission to execute, repair or sign.\n\n## Conformance quartet\n\n- Positive data: `samples/reference-export/yes.json`. The native test bootstraps a real Root with a disposable key and admits its cell and claim through `bound land`. It then executes this public signing command and verifies the result through the public reference API and unchanged engine.\n- Negative data: `samples/reference-export/no.json`. Changing a carrier byte refuses on blob integrity before projection.\n- Vector: `vectors/native/reference-export.vector.json`. It runs the tracked conformance test, which invokes the actual CLI for bootstrap, admission and export. No private runner or pre-signed fixture stands in for those operations.\n- Additional boundaries: changed contract identities, changed byte budget, invalid source, unauthorized key and invalid signer response. Export and refusal leave the real Root's TARGET and complete ledger inventory unchanged.\n\nCaptured semantic markers from the native run:\n\n```text\nEXPORT real-admission · contracts-bound · signatures-verified · REQUIRED · no commit\nREFUSE altered-carrier · blob integrity\n```\n\nKeys are generated outside the repository and discarded by the test. Captures contain no private key, local path or successful receipt for a failed export. Fixture preparation and each CLI invocation have their own existing bounds; the enclosing conformance runner's lifetime is not a cost claim for any individual reading. Release admission, portable release receipts and exact-artifact acceptance remain separate from this quartet.\n" at=witness:bound021-final-bindings by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-reference-export shape=docs/contracts/reference-export.md value=lock
|
|
10
|
+
bound-lock/1 about="# Public host ports\n\n`/engine` and `/reference` export `readContent`, `retainContent` and `invokeSigningPort`, with `ContentReadPort`, `PersistencePort`, `SigningPort`, `DigestPort` and `PortLimits`. There is no default network, store, account or signer. `objectFold` remains pure and never calls a port.\n\nEvery operation takes an explicit positive safe-integer `timeoutMs` and `maxBytes`, and an optional AbortSignal. Invalid limits and pre-cancellation refuse before the callback. Acquisition, digest calculation and retention share the operation lifetime. A timeout aborts the supplied signal and returns no successful result. This is a cooperative host boundary, not preemption of synchronous JavaScript or sandbox confinement.\n\n`readContent(source, digest, ports, limits, signal)` invokes the supplied read callback and SHA-256 callback, checks byte bounds before copying/hashing, rejects shared buffers, and verifies an owned snapshot against the requested digest. Location carries no authority.\n\n`retainContent(digest, bytes, ports, limits, signal)` checks identity before calling the host's atomic byte-retention callback. Its acknowledgement contains only digest and byte count. It is not a signed receipt, admission or permission to reuse a response. The host must implement atomic retention and cooperate with cancellation. A callback that ignores cancellation may finish retaining bytes after the caller has refused; no success, act or authority follows from those bytes. Opening and projection never retain automatically.\n\n`invokeSigningPort(lot, sign, limits, signal)` uses the existing Topos signing request/response framing. It acquires protocol-shaped signatures; it does not decide authority or certify them cryptographically. Native export can receive `hostSigner: {name, sign}` through `/reference/native`. The name must match the admitted signer selection, and cannot be combined with a key-file override. The existing consent path verifies every returned signature against the admitted key, era, scope and epoch before returning a carrier. No key material enters the engine.\n\nNative opening accepts `content: {name, read}`. Its name must match the admitted transport selection, with that selection's existing byte and lifetime bounds. The host callback cannot be chosen by a carrier, reference or repository. The existing inspector verifies the returned carrier again and the selected backend projects only verified records. There is no backend fallback.\n\nPublic port failures use the machine refusal catalog: `host-port/budget`, `cancelled`, `timeout`, `failed`, `integrity`, `response`. Native acquisition failures retain their enclosing reference refusal. Host diagnostics are not returned as authority or parsed as codes.\n\nNative vector output, in two real admitted places:\n\n```text\nPORTS owned content · verified retention · signer content persistence failures · budget integrity cancellation timeout refused\nHOST host-sensor · declared signer and content injected · real signature verified · wrong binding refused · no commit\nHOST host-editorial · declared signer and content injected · real signature verified · wrong binding refused · no commit\n```\n" at=witness:bound021-final-bindings by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-host-ports shape=docs/contracts/host-ports.md value=lock
|
|
11
|
+
bound-lock/1 about="# Public refusal catalog\n\nSource of truth: `refusals.bound` (`bound-refusals@1`), read through the existing wire parser. `readRefusalCatalog` and `describeRefusal` are exported from `/reference`; resolve `@lapxo/bound/refusals` for the published lines. The digest of these exact lines is bound into the authenticated reference context.\n\n`BoundRefusal.code` is stable; diagnostic text is not a code. Native CLI refusals retain the diagnostic and emit a `bound-refusal@1` JSON record with code, category, meaning, next and catalog digest. Recommendations grant no authority and execute nothing. If the installed catalog cannot be read or validated, the CLI emits `catalog/invalid` with metadata explicitly `unmeasured`; it never fabricates a catalog digest or recursively formats that failure. A consumer checks the catalog bytes against its independently accepted context digest before parsing; parsing alone proves no authority. Legacy operations without a specific public code use `operation/failed`; no diagnostic is classified by regex. This does not claim a distinct code for every historical diagnostic. Successful four-state results remain results, never refusal codes.\n\n| Code | Class | Meaning | Suggested next |\n| --- | --- | --- | --- |\n| reference-export/source | input | The source URL is not a canonical standing-reference location. | check-source |\n| reference-export/context | interpretation | Required admitted export policy or exact contract bytes are missing or conflicting. | inspect-standing |\n| reference-export/budget | resource | The export exceeds or lacks its explicitly declared record or byte budget. | inspect-resource-lines |\n| reference-export/authority | authority | The selected key is not authorized for the snapshot proof at this epoch. | inspect-authority |\n| reference-export/signer | host | The selected signer failed or returned a signature that does not verify. | inspect-signer |\n| reference-export/history | authority | The current carrier profile cannot represent this historical authority; no original is silently removed. | inspect-standing-contract |\n| catalog/invalid | interpretation | The refusal catalog is malformed, duplicated or incomplete. | resolve-catalog |\n| reference/format | input | The reference has an unsupported or noncanonical shape. | check-reference |\n| standing/view | interpretation | The place has not declared the public standing view. | declare-standing-view |\n| standing/query | input | Standing accepts only the local committed projection. | query-local-standing |\n| reference-export/usage | input | Reference export requires exactly one source and explicit signing options. | check-export-arguments |\n| authenticated-reference/context | interpretation | The supplied interpretation context or snapshot binding is inconsistent. | resolve-public-context |\n| authenticated-reference/budget | resource | The declared record or byte budget is invalid or exceeded. | inspect-resource-lines |\n| authenticated-reference/transport | host | The content port failed or returned shared mutable bytes. | inspect-content-port |\n| authenticated-reference/integrity | integrity | Carrier bytes or the snapshot commitment differ from their declared digest. | resolve-exact-bytes |\n| authenticated-reference/framing | input | The carrier is not the canonical supported UTF-8 frame. | check-carrier |\n| authenticated-reference/wire | input | An original record is not canonical supported wire. | check-original-records |\n| authenticated-reference/authority | authority | The proof or an original lacks admitted authority under the supplied context. | inspect-authority |\n| authenticated-reference/history | interpretation | This carrier profile cannot authenticate configuration withdrawal history. | request-admitted-standing |\n| authenticated-reference/object-context | interpretation | The existing object validator refused the declared form or context. | inspect-object-context |\n| authenticated-reference/identity | integrity | The semantic standing differs from the reference identity. | resolve-standing |\n| operation/failed | host | An operation failed without a more specific public code; details are diagnostic only. | inspect-diagnostic |\n| operation/usage | input | The command arguments do not describe a supported public operation. | check-arguments |\n| reference/backend | interpretation | The host did not select a supported explicit reference backend. | select-reference-backend |\n| reference/cancelled | host | The opening was interrupted before a complete result. | inspect-interruption |\n| host-port/budget | resource | A host port lacks a valid finite budget or exceeds its byte bound. | inspect-resource-lines |\n| host-port/cancelled | host | A host operation was cancelled before a complete result. | inspect-interruption |\n| host-port/timeout | host | A host operation exceeded its declared lifetime. | inspect-host-port |\n| host-port/failed | host | A declared host callback failed; no successful result is returned. | inspect-host-port |\n| host-port/integrity | integrity | Content bytes differ from the requested SHA-256 identity. | resolve-exact-bytes |\n| host-port/response | host | A host response has an unsupported shape or shared mutable bytes. | inspect-host-port |\n\nNative quartet: `refusals.publication.json`. `vectors/native/refusals.vector.json` checks the wire catalog, its derived page, duplicate/missing records, and real export/inspection refusals in two places. No failed operation becomes a successful receipt. The captured semantic marker is:\n\n```text\nREFUSALS lines · unique codes · exact metadata · duplicate refused\n```\n\nSpecific producers cover reference syntax, standing query/view, native export usage/source/context/budget/authority/signer/history, and authenticated inspection context/budget/transport/integrity/framing/wire/authority/history/object-context/identity. Numeric CLI usage and uncoded legacy failures use the explicitly generic codes above; diagnostics remain unclassified. B2/B5 may add codes only by changing these versioned contract bytes and their vectors.\n" at=witness:bound021-final-bindings by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-refusals shape=docs/contracts/refusals.md value=lock
|
|
7
12
|
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
|
|
8
13
|
bound-lock/1 about="# Pure object projection\n\n`@lapxo/bound/engine` exports `objectFold` and the existing `ObjectReading`, `ObjectRecord` and `ObjectContext` types. The CLI and receipt paths use that same implementation. Its Obligations 0.3.5 algebra is unchanged.\n\nThe input is authenticated and context-admitted effective history with selected deterministic forms and parameters. This function does not admit records, verify signatures, resolve content, run commands, select clocks or write storage. Applications must perform preparation before projection.\n\nWithin each epoch, a cell declaration precedes its uses in effective order. A same-epoch act before its cell refuses in preparation by name: `object context: cell not declared before <act-id>`. Lower-epoch cell declarations remain eligible even when their envelope arrives later. Effective sign/join order is preserved; transport arrival does not authorize arbitrary semantic reordering. The consumed Topos contract must be published before this export is admitted for release.\n\nOutputs preserve existing attributed origins, local and travelling marks, exact withdrawals, floor and ceiling parts and REQUIRED/FREE/FORBIDDEN/CONFLICT decisions. Raw object JSON is not a new canonical identity. Byte identity requires the existing declared reading projection.\n\nMalformed or unauthenticated records are outside this pure projector's input contract. Refusal, authority and interrupted-admission vectors exercise the host boundary; they do not claim cryptographic admission inside WASM. No host callback calculates an algebraic result in a WASM comparison.\n\n## Public conformance samples\n\n`samples/engine-interval` and `samples/engine-alphabet` are formed places: TARGET.bound, receipts.bound, package.json, the declared reader.js and inputs/sample.json. The instrument exercises the same projector against prepared fixtures; its reader is not a command users invoke. `fold <sample-directory> --check` verifies each portable receipt. Cold native `fold --as receipts` recomputes the declared conformance reading without a private store.\n\n`samples/no/engine-interval.json` and `samples/no/engine-alphabet.json` are negative data fixtures. Their captured native preparation refusal is `cell not declared before s-B`; no closed receipts are asserted for refusing input. The actual CLI vector is `vectors/engine-object.cli.json`. This conformance reader does not authenticate arbitrary signatures, coverage or clocks.\n\n\n## Optional WASM host adapter\n\nThe optional `@lapxo/bound/wasm` entry evaluates the existing pure projection in QuickJS WASM. It performs no admission, signature verification, state calculation of its own, transport, key discovery or effects. Host authentication must finish before records become projection inputs. A valid digest identifies bytes; it grants no authority or confinement guarantee.\n\nThe host supplies the trusted runtime/WASM/module digests, exact byte lengths, entry, aliases and limits. These expectations must come from its accepted configuration, independently of fetched place bytes. Closed request metadata and exact lengths are checked before copying, hashing or worker handoff. Shared assets refuse. Every supplied byte is verified and copied before execution; the closed runtime bundle has no imports and receives the already verified WASM binary. Guest imports resolve only within the verified module map. No second fetch occurs.\n\n`runWasmRequest` returns declared text, without inventing a JSON canonicalization or number policy. The caller's declared entry chooses the serialization contract. Memory and stack limits govern the guest; they do not describe total host/WASM initialization memory. Guest memory, stack and execution budgets are explicit host inputs. Initialization and execution times are separate readings, not a speed guarantee.\n\n`evaluateWasm` runs in a host worker. It accepts an AbortSignal and an explicit worker lifetime. Cancellation, timeout, malformed messages, failed serialization and worker errors terminate the worker and return no successful result. Guest state remains provisional until success; no host write port is supplied. A terminated computation produces no successful receipt. The direct `runWasmRequest` entry has deadline interruption but cannot asynchronously receive an external abort while synchronously executing; callers needing that contract use `evaluateWasm`.\n\n\n### Native optional WASM projection\n\nThe existing object view consumes an optional, authenticated live declaration `engine/object form=alphabet measure=id value=wasm@1`. With no selector it retains the ESM projection; a conflicting or unknown selector refuses. This profile selects only the explicit object view, not every other view of the place. The host admits and folds configuration with the existing authority and withdrawal rules before selecting execution.\n\nThe place declares five interval limits: `engine/wasm/memory`, `engine/wasm/stack` and `engine/wasm/response` in bytes; `engine/wasm/execution` and `engine/wasm/worker-lifetime` in milliseconds. Missing, ambiguous or invalid limits refuse; there is no inferred fallback. The installed instrument binds the guest module and supported form standings to their context implementation artifacts. A place cannot choose another verifier or executable through this selection; an unsupported form or different implementation refuses.\n\nContext initialization is measured before place execution. If observed initialized guest memory exceeds the declared memory budget, the operation refuses without running place code. Host initialization memory is outside that guest execution limit; the worker lifetime bounds the entire attempt. During execution the unchanged declared memory, stack and execution limits apply. SIGINT reaches the worker cancellation port; cancellation or failure emits no successful object result.\n\nFor the opt-in `wasm@1` profile, the host verifies the selected context implementation before importing it. Every SHA-256 member declared by the context offer’s `restsOn` is checked by digest, and the existing `moduleClosure` validates the imported closure. Missing, altered, undeclared or unresolved imported members refuse before context code executes. This establishes content identity and import closure, not correctness, authority or sandbox confinement. Admission still precedes projection, and this check grants no permission to reuse a retained answer as current.\n" at=witness:bound020-native-closure by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-engine shape=docs/contracts/engine.md value=lock
|
|
9
|
-
bound-lock/1 about="# Reference inspection through the declared content port\n\n`bound fold '#bound:1?…'` inspects a semantic standing from the location explicitly carried by its reference. The acting place supplies an admitted `content-request/1` transport selection and finite time and response-byte limits. A locator selects neither executable code nor authority. The host performs transport; no reader acquires a network effect.\n\nThe shared reference decoder checks the canonical reference. The existing transport port supplies bytes under the place's selected mechanism and limits. The shared inspector verifies the blob digest, exact document wrapper, and canonical semantic standing digest in that order. A successful result names the supplying source, both identities, and `no encounters computed · unauthenticated`; it is inspection, never a grant, admission, signature proof or encounter calculation.\n\nDigest mismatch is an integrity refusal, never a fork. Timeout aborts the native HTTP request; oversized responses cancel the body. Failed, interrupted or invalid inspection returns no successful result. This operation has no write port: it does not admit declarations, write TARGET, write receipts or retain partially received bytes. `--check`, a selection view or effectful arguments with a reference refuse by name before transport.\n\nThe positive sample is the same canonical standing wrapper already used by the reference quartet, served at a local fixture location. The negative sample changes the served bytes while keeping the declared digest. The CLI vector runs on two unrelated places and records successful inspection, wrong blob, exceeded byte budget, timeout cancellation and refusal before transport. Request paths are recorded separately from the reference: the URL fragment is not sent in HTTP requests. Page code may read a fragment; secrecy is not claimed.\n\nExternal cancellation as a general API, signature/admission of transported claims, arbitrary source protocols without a declared host binding, CORS and another-machine portability remain separate demands. No source location is a permanent service requirement.\n\nThe executable publication vector binds the existing content-request/1 command port to /bin/cat over declared immutable fixture bytes. Preparation is outside the clock; the CLI call is measured. It covers two unrelated standings and integrity refusal without a server or reader network effect. Earlier HTTP byte-limit and timeout captures remain separate evidence; this vector does not remeasure HTTP.\n\n\n## Authenticated host opening\n\n`@lapxo/bound/reference` exports `inspectAuthenticatedReference`, `encodeReference` and `decodeReference`. The host supplies its authority snapshot and epoch, public signers and coverage, admitted signature eras, admission/origin policy, selected form standing and executable implementation, finite byte/record budgets and bounded transport and cryptographic ports. Neither source URL, carrier, digest nor embedded key grants authority.\n\nThe authenticated-standing@1 carrier and effective global standing projection are defined by the consumed Topos contract. Original signatures authenticate retained historical evidence; the snapshot commitment is checked against the current authority epoch. This opening does not grant permission to reuse an answer as current. Configuration history that needs an admitted standing fold refuses by name. Only fully verified records are returned, for the same pure projection in ESM or WASM; no writer or commit port is exposed.\n\nWithout the authenticated profile, the existing CLI reference branch remains explicitly unauthenticated inspection.\n\n\n### Native authenticated opening\n\nThe same reference command consumes `reference/authentication form=alphabet measure=id value=authenticated-standing@1` from the selected local place. Without that declaration the existing inspection remains explicitly unauthenticated. With it the host requires unique authenticated declarations for `reference/snapshot`, `reference/epoch`, `reference/proof-scope` and `reference/
|
|
14
|
+
bound-lock/1 about="# Reference inspection through the declared content port\n\n`bound fold '#bound:1?…'` inspects a semantic standing from the location explicitly carried by its reference. The acting place supplies an admitted `content-request/1` transport selection and finite time and response-byte limits. A locator selects neither executable code nor authority. The host performs transport; no reader acquires a network effect.\n\nThe shared reference decoder checks the canonical reference. The existing transport port supplies bytes under the place's selected mechanism and limits. The shared inspector verifies the blob digest, exact document wrapper, and canonical semantic standing digest in that order. A successful result names the supplying source, both identities, and `no encounters computed · unauthenticated`; it is inspection, never a grant, admission, signature proof or encounter calculation.\n\nDigest mismatch is an integrity refusal, never a fork. Timeout aborts the native HTTP request; oversized responses cancel the body. Failed, interrupted or invalid inspection returns no successful result. This operation has no write port: it does not admit declarations, write TARGET, write receipts or retain partially received bytes. `--check`, a selection view or effectful arguments with a reference refuse by name before transport.\n\nThe positive sample is the same canonical standing wrapper already used by the reference quartet, served at a local fixture location. The negative sample changes the served bytes while keeping the declared digest. The CLI vector runs on two unrelated places and records successful inspection, wrong blob, exceeded byte budget, timeout cancellation and refusal before transport. Request paths are recorded separately from the reference: the URL fragment is not sent in HTTP requests. Page code may read a fragment; secrecy is not claimed.\n\nExternal cancellation as a general API, signature/admission of transported claims, arbitrary source protocols without a declared host binding, CORS and another-machine portability remain separate demands. No source location is a permanent service requirement.\n\nThe executable publication vector binds the existing content-request/1 command port to /bin/cat over declared immutable fixture bytes. Preparation is outside the clock; the CLI call is measured. It covers two unrelated standings and integrity refusal without a server or reader network effect. Earlier HTTP byte-limit and timeout captures remain separate evidence; this vector does not remeasure HTTP.\n\n\n## Authenticated host opening\n\n`@lapxo/bound/reference` exports `inspectAuthenticatedReference`, `encodeReference` and `decodeReference`. The host supplies its authority snapshot and epoch, public signers and coverage, admitted signature eras, admission/origin policy, selected form standing and executable implementation, finite byte/record budgets and bounded transport and cryptographic ports. Neither source URL, carrier, digest nor embedded key grants authority.\n\nThe authenticated-standing@1 carrier and effective global standing projection are defined by the consumed Topos contract. Original signatures authenticate retained historical evidence; the snapshot commitment is checked against the current authority epoch. This opening does not grant permission to reuse an answer as current. Configuration history that needs an admitted standing fold refuses by name. Only fully verified records are returned, for the same pure projection in ESM or WASM; no writer or commit port is exposed.\n\nWithout the authenticated profile, the existing CLI reference branch remains explicitly unauthenticated inspection.\n\n\n### Native authenticated opening\n\nThe same reference command consumes `reference/authentication form=alphabet measure=id value=authenticated-standing@1` from the selected local place. Without that declaration the existing inspection remains explicitly unauthenticated. With it the host requires unique authenticated declarations for `engine/object` (`esm@1` or `wasm@1`), `reference/snapshot`, `reference/epoch`, `reference/proof-scope`, `reference/records`, `reference/policy`, `reference/form-implementation`, `reference/contracts/refusals` and `reference/contracts/standing` (all `measure=id`); the snapshot is a typed SHA-256 digest, epoch and record budget are safe integers, and the record budget is positive. The declared transport supplies its own existing byte and lifetime bounds.\n\nTrust comes from the local place's admitted keys, signature eras, snapshot and selected object interpretation, including origin and witness grants. No key, grant or verifier supplied by the carrier becomes host authority. The public path delegates signatures, historical authority, wire interpretation, effective order and context admission to the existing SDK and projects admitted records through the existing engine. Signature, coverage, era, effective-order, blob-integrity and semantic-identity failures refuse before any authenticated result or cell output.\n\nOpening prints the source, authenticated semantic standing, object results and authority-context identity. It does not land an act or emit a successful partial result. Existing private content-cache stamps and store accounting may be updated; those are distinct from the public place, its signed authority and its committed history. Inspection does not grant permission to reuse an old response as a current one.\n\nFor the opt-in `authenticated-standing@1` profile, the host checks the selected context offer’s SHA-256 `restsOn` members and uses the existing `moduleClosure` before importing that context. A missing, altered, undeclared or unresolved import refuses before context code executes. The same preparation applies when the explicit object view selects `wasm@1`; absent these opt-in profiles, the existing path is unchanged. Import closure proves neither correctness nor sandbox confinement, creates no authority, and does not authorize current-answer reuse.\n\n\n### Compatibility of published 0.2.0 carriers\n\nThe original weather and editorial carriers, their signatures and effective-order counterexamples remain byte-identical. `inspectAuthenticatedReference` accepts their independently supplied legacy trust tuple without inventing the newer contract commitments. Its native vector verifies both positive carriers and their arrival-equivalent projection, and rejects signature, coverage, era, effective-order, blob and semantic-standing failures. Authority and context preparation use the existing host and SDK; no replacement verifier or form algebra is supplied by the carrier.\n\nThis preserves the carrier/API contract, not an implicit native backend. The historical receiver TARGETs omit the explicit backend and interpretation-contract lines required by native opening in 0.2.1. They therefore refuse with `reference/backend` before transport; the vector asserts that refusal instead of re-signing or weakening the fixtures. No automatic ESM fallback is added. Native positive opening with the complete admitted context is demonstrated separately by the reference-export and reference-backend quartets, including ESM/WASM equality and altered-byte refusal. `compatibility.json` records every inherited condition and expected result; the no sample still contains the original bad signature.\n" at=witness:bound021-final-bindings by=target form=alphabet measure=text role=writes scope=prose/en/files/reference-port shape=docs/contracts/reference-port.md value=lock
|
|
10
15
|
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/<who> measure=signer value=<name>`; `signer/timeout` and `signer/response-bytes` bound each invocation. The built-in `file` port reads a matching PKCS8 PEM outside the repository through `--key-file`. For a command port, the host supplies a `BOUND_SIGNERS` registry mapping that admitted name to `{ \"kind\": \"command\", \"executable\": \"...\", \"args\": [] }`. A repository declaration cannot authorize a program. `--signer <name>` must match the admitted selection.\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
|
|
11
16
|
bound-lock/1 about="# Walk\n\n`bound fold --as walk@<resolution>` 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
|
|
12
17
|
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 <lot>` 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 <lot>` 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 <identity>` 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\n## Release approval\n\n`fold --as release <approval-file>` verifies the external approval against the place authorizer, its admitted public key, coverage and signature era. Exactly one signed release/<tag> digest, release/artifact name and sources/archive URL are required. It prints `READY sha256:<digest> <name> <source>` or refuses with the coordinate and cause. This is an approval judgment, distinct from the place release-policy verdict. It never fetches, executes, signs or lands.\n\n## Standing admission\n\nA uses/ selection admits canonical standing bytes, never an archive. The bytes must already be held under their verified digest or in the single local coordinate explicitly named by needs. Admission checks identity and canonical form without fetching, executing or writing the content store. Missing or corrupt bytes refuse the whole lot. A corrupt held copy cannot be hidden by another source. Archives remain separate dependency declarations.\n\n\n## Declared reading identity\n\nA place selects both `wire/reading-context value=reading-context@1` and `wire/reading-receipt value=reading-receipt@1`. Partial or conflicting selections refuse. Every reader under this profile declares an input projection; a legacy reader is refused by name instead of receiving a new identity without its closure.\n\nThe host commits the full instrument reference, the verified capsule implementation, effective reader policy, declared transitive references, each input's actual bytes and dependent receipt identities. The process environment is captured explicitly: inherited variable values (hashed, never printed), the place working directory, child flags, runtime bytes and platform conditions. The same captured boundary is handed to execution and keys the capsule cache. These references grant neither authority nor independence and cannot prove undeclared inputs absent.\n\nAn unchanged cross-process fold reads retained receipts with zero opened readings. Changed input reopens that reading and its dependents; changing shared implementation, policy or execution conditions invalidates the readings that depend on them. The semantic receipt names the reading and result together; elapsed time and signature envelopes remain separate. Old receipts are not promoted.\n\nRetained evidence may be inspected without asserting a current response. Reusing a current response also requires the existing snapshot-access contract: matching principal, authorization, request, implementation and snapshot, declared freshness, and both inspection and reuse permission. Unknown or expired freshness, withdrawn permission or changed context refuse before running a provider. A new observation needs its own admitted act.\n\n`fold --check` verifies the retained published evidence and instrument. It opens no reader and grants no permission to assert an old response today. A live fold additionally compares the current captured execution boundary.\n" at=witness:complete-reading-context-with-native-reuse by=target form=alphabet measure=text role=writes scope=prose/en/files/contract-cli shape=docs/contracts/cli.md value=lock
|
|
@@ -36,6 +41,7 @@ bound-lock/1 about="Declared runtime processes participate in the instrument imp
|
|
|
36
41
|
bound-lock/1 about="Derived QuickJS runtime glue; executable library bytes, not a canonical standing. Original implementation licenses and provenance are shipped beside the optional adapter. Distributed as assets/wasm/runtime.js; this metadata declares identity without an archive mount." at=policy:bound020-optional-wasm-assets by=target form=alphabet measure=id role=writes scope=dep/wasm-runtime value=sha256:78daa39ad957affb2423846cf0e6754c4ed9e729829db84e58b25b3b241336e7
|
|
37
42
|
bound-lock/1 about="Derived module closure containing the existing Bound projection, Topos forms and Obligations implementation. No second algebra. Distributed as assets/wasm/guest.js; this metadata declares identity without an archive mount." at=policy:bound020-optional-wasm-assets by=target form=alphabet measure=id role=writes scope=dep/wasm-guest value=sha256:4a8cef02c4027ca2bd35aa2810f3c56ddd9884e8f245ede48d01f020f70e00f3
|
|
38
43
|
bound-lock/1 about="Deterministic repair means a reproducible proposed lot, not automatic human approval. A red can lack measurements, authority, a witness or a unique repair. Such a case returns an explicit unmet requirement; it never invents a paying line." at=policy:bound/015-plan by=target form=alphabet measure=text role=writes scope=rationale/015/06 value=lock
|
|
44
|
+
bound-lock/1 about="Each declared vector case is a separate reading with its own coordinate and receipt. A quartet aggregates those receipts. Reader lifetime and per-case limits are unchanged; the rejected whole-vector timeout is retained as evidence." at=witness:bound021-final-bindings by=target form=alphabet measure=text role=writes scope=rationale/publication-case-readings value=lock
|
|
39
45
|
bound-lock/1 about="Elapsed days from 2026-10-07; deadline 2026-10-21. An unread clock is not payment." at=policy:bound/015-plan by=target form=interval measure=days role=demands scope=plan/0.1.5/time value=0..14
|
|
40
46
|
bound-lock/1 about="Every selected public coordinate has its exact contract/yes/vector/no quartet and executable conformance; availability is not proof." at=witness:publication-is-measured by=target form=interval measure=count needs=docs/contracts/publication.md|docs/contracts/publication.inventory.json role=reads scope=contract/published value=0..0
|
|
41
47
|
bound-lock/1 about="Exact npm archive integrity for acorn 8.19.0. Library metadata, not Topos standing or a release mount; npm verifies the matching package-lock integrity." at=policy:host-module-identity by=target form=alphabet measure=id role=writes scope=dep/acorn value=sha512:a09940dd78919bb0b293aa850f6267f1a93d07b8d2cb4ab2d340033b7fbc7694f42d28c58a1418bf80b4d8b142498255dd0dfbc58c30472e66f88a48894cea5b
|
|
@@ -97,7 +103,7 @@ bound-lock/1 about="Rewriting hero, idea and the other section regions as compos
|
|
|
97
103
|
bound-lock/1 about="Source origin is distinct from local coordinates; requested verified bytes are handed to every declared eligible reader." at=policy:bound/015-plan by=target form=alphabet measure=status needs=docs/contracts/region/origin-input.md|samples/yes/region/origin-input.json|vectors/region/origin-input.json|samples/no/region/origin-input.json role=demands scope=region/origin-input value=present
|
|
98
104
|
bound-lock/1 about="The coordinate of the observed host implementation digest in the native receipt set." at=policy:bound/receipts by=target form=alphabet measure=id role=writes scope=audit/wire/receipt-instrument value=instrument/implementation
|
|
99
105
|
bound-lock/1 about="The exact owner-admitted Topos0.2.0 candidate archive, laid by its bytes digest. Public availability and the published-contract prerequisite remain independent release obligations." at=witness:retained-owner-sdk020-workflow-correction by=target form=alphabet measure=id needs=node_modules/@lapxo/topos role=reads scope=dep/topos shape=package value=sha256:fd7fb3783cad1919a7b0236df096c6b4c0d71d5a2f81fb14532779e1e83da261
|
|
100
|
-
bound-lock/1 about="The fixture instrument receives the publication projection of already admitted folded configuration; historical signatures are not copied as local authority." at=
|
|
106
|
+
bound-lock/1 about="The fixture instrument receives the publication projection of already admitted folded configuration; historical signatures are not copied as local authority." at=witness:bound021-disappearing-coordinate by=target form=alphabet measure=digest role=writes scope=uses/process-readings value=sha256:be897fa161377f4294cd9329fbc08d857cc9a0897453fe512ac2697d392ee5bf
|
|
101
107
|
bound-lock/1 about="The fourteen proposed local-mirror source URLs were withdrawn after their draft inputs were removed. Selected standing and runtime digests remain unchanged. No matching public world delivery has been verified for those bytes; clean native closure remains unpaid. Public sources must deliver the exact selected bytes, or an explicit reviewed world release and re-pin is required; no newest-by-URL or local-store substitution." at=policy:bound/019-public-source-ci by=target form=alphabet measure=text role=writes scope=rationale/019/public-source-delivery value=present
|
|
102
108
|
bound-lock/1 about="The host adapter parses literal JavaScript imports when identifying the implementation behind receipts. It executes no module and does not inventory domain exports, duplicates or literals. It does not enforce arbitrary dynamic-import closure or claim a capsule sandbox." at=policy:host-module-identity by=target form=alphabet measure=text role=writes scope=rationale/host/module-parser value=present
|
|
103
109
|
bound-lock/1 about="The native authenticated reference route opens separately signed carriers using externally declared host authority, forms and bounded transport; positive and named negative cases are measured by the selected publication world. A zero count is conditional on the identified fixed image and laid form content; it grants neither current-answer reuse nor final archive acceptance." at=policy:bound/020-public-api-coverage by=target form=interval measure=count needs=contract/published/authenticated-reference role=reads scope=contract/published/authenticated-reference value=0..0
|
|
@@ -145,6 +151,12 @@ bound-lock/1 about="What it refuses" at=policy:bound/010-figure by=target form=a
|
|
|
145
151
|
bound-lock/1 about="What it rests on" at=policy:bound/010 by=target form=alphabet measure=text role=writes scope=prose/en/rests/heading value=lock
|
|
146
152
|
bound-lock/1 about="What rests on it" at=policy:bound/010 by=target form=alphabet measure=text role=writes scope=prose/en/rested/heading value=lock
|
|
147
153
|
bound-lock/1 about="Write the line as by=target." at=policy:bound/readme by=target form=alphabet measure=id role=writes scope=page/seq/line value=present
|
|
154
|
+
bound-lock/1 about="Zero means this exact native quartet condition was measured. It grants no authority, current-answer reuse or final installed-archive acceptance." at=witness:bound021-final-bindings by=target form=interval measure=count needs=contract/published/host-ports role=reads scope=contract/published/host-ports value=0..0
|
|
155
|
+
bound-lock/1 about="Zero means this exact native quartet condition was measured. It grants no authority, current-answer reuse or final installed-archive acceptance." at=witness:bound021-final-bindings by=target form=interval measure=count needs=contract/published/readme role=reads scope=contract/published/readme value=0..0
|
|
156
|
+
bound-lock/1 about="Zero means this exact native quartet condition was measured. It grants no authority, current-answer reuse or final installed-archive acceptance." at=witness:bound021-final-bindings by=target form=interval measure=count needs=contract/published/reference-backend role=reads scope=contract/published/reference-backend value=0..0
|
|
157
|
+
bound-lock/1 about="Zero means this exact native quartet condition was measured. It grants no authority, current-answer reuse or final installed-archive acceptance." at=witness:bound021-final-bindings by=target form=interval measure=count needs=contract/published/reference-export role=reads scope=contract/published/reference-export value=0..0
|
|
158
|
+
bound-lock/1 about="Zero means this exact native quartet condition was measured. It grants no authority, current-answer reuse or final installed-archive acceptance." at=witness:bound021-final-bindings by=target form=interval measure=count needs=contract/published/refusals role=reads scope=contract/published/refusals value=0..0
|
|
159
|
+
bound-lock/1 about="Zero means this exact native quartet condition was measured. It grants no authority, current-answer reuse or final installed-archive acceptance." at=witness:bound021-final-bindings by=target form=interval measure=count needs=contract/published/standing role=reads scope=contract/published/standing value=0..0
|
|
148
160
|
bound-lock/1 about="Zero port invocations applies to selection/help, receipt-only check, prospective evaluation and signing's observation/execution ports. Signing necessarily invokes its declared signer. A shaped render, observation or admitted verification request may execute its explicitly requested provider under the relevant contract. Never hide execution behind a purported inspection command." at=policy:bound/015-plan by=target form=alphabet measure=text role=writes scope=rationale/015/04 value=lock
|
|
149
161
|
bound-lock/1 about="`{scope}` is demanded and not paid" at=policy:bound/paid by=target form=alphabet measure=text role=writes scope=prose/en/open/unpaid value=lock
|
|
150
162
|
bound-lock/1 about="`{scope}` reads `{reading}`, outside its ceiling" at=policy:bound/paid by=target form=alphabet measure=text role=writes scope=prose/en/open/outside value=lock
|
|
@@ -307,7 +319,7 @@ bound-lock/1 about="the typescript tree world after its released capsule: said,
|
|
|
307
319
|
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/**
|
|
308
320
|
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
|
|
309
321
|
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\""
|
|
310
|
-
bound-lock/1 about="the version this place is bound at" at=
|
|
322
|
+
bound-lock/1 about="the version this place is bound at" at=witness:bound021-final-bindings by=target form=alphabet measure=id role=writes scope=version value=0.2.1
|
|
311
323
|
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
|
|
312
324
|
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
|
|
313
325
|
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/<name> 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
|
|
@@ -322,7 +334,7 @@ bound-lock/1 about="what the second head found, which leaves the place has writt
|
|
|
322
334
|
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
|
|
323
335
|
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
|
|
324
336
|
bound-lock/1 about="who signs this place" at=policy:bound/010 by=target form=alphabet measure=id role=writes scope=author value=Lapxo
|
|
325
|
-
bound-lock/1 about="{\n \"name\": \"@lapxo/bound\",\n \"version\": \"0.2.
|
|
337
|
+
bound-lock/1 about="{\n \"name\": \"@lapxo/bound\",\n \"version\": \"0.2.1\",\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 \"./engine\": {\n \"types\": \"./dist/engine/index.d.ts\",\n \"default\": \"./dist/engine/index.js\"\n },\n \"./wasm\": {\n \"types\": \"./dist/wasm/adapter.d.ts\",\n \"default\": \"./dist/wasm/adapter.js\"\n },\n \"./reference\": {\n \"types\": \"./dist/host/reference-authenticated.d.ts\",\n \"default\": \"./dist/host/reference-authenticated.js\"\n },\n \"./refusals\": \"./docs/contracts/refusals.bound\",\n \"./standing-contract\": \"./docs/contracts/standing.bound\",\n \"./reference/native\": {\n \"types\": \"./dist/host/reference-native-api.d.ts\",\n \"default\": \"./dist/host/reference-native-api.js\"\n }\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 --experimental-strip-types tools/build.ts\",\n \"prepack\": \"npm run build\"\n },\n \"files\": [\n \"LICENSE\",\n \"README.md\",\n \"CONTRIBUTING.md\",\n \"dist/**/*.js\",\n \"dist/cli/verb.d.ts\",\n \"dist/engine/index.d.ts\",\n \"dist/engine/object.d.ts\",\n \"dist/host/reference-authenticated.d.ts\",\n \"dist/host/reference-export.d.ts\",\n \"dist/host/reference-native-api.d.ts\",\n \"dist/host/reference-native.d.ts\",\n \"dist/host/reference-profile.d.ts\",\n \"dist/host/refusals.d.ts\",\n \"dist/wasm/adapter.d.ts\",\n \"TARGET.bound\",\n \"receipts.bound\",\n \"docs/usage.md\",\n \"docs/readme-assets/atlas.svg\",\n \"docs/contracts/*.md\",\n \"docs/contracts/publication-additions.inventory.json\",\n \"docs/contracts/engine-object-projection.publication.json\",\n \"samples/engine-alphabet/TARGET.bound\",\n \"samples/engine-alphabet/inputs/sample.json\",\n \"samples/engine-alphabet/package.json\",\n \"samples/engine-alphabet/reader.js\",\n \"samples/engine-alphabet/receipts.bound\",\n \"samples/engine-interval/TARGET.bound\",\n \"samples/engine-interval/inputs/sample.json\",\n \"samples/engine-interval/package.json\",\n \"samples/engine-interval/reader.js\",\n \"samples/engine-interval/receipts.bound\",\n \"samples/no/engine-order/TARGET.bound\",\n \"samples/no/engine-order/inputs/sample.json\",\n \"samples/no/engine-order/package.json\",\n \"samples/no/engine-order/reader.js\",\n \"vectors/engine-object.cli.json\",\n \"samples/reference-port/yes/catalog/TARGET.bound\",\n \"samples/reference-port/yes/catalog/standing.json\",\n \"samples/reference-port/no/catalog/standing.json\",\n \"samples/reference-port/yes/catalog/transport.json\",\n \"samples/reference-port/no/catalog/transport.json\",\n \"samples/reference-port/yes/route-notes/TARGET.bound\",\n \"samples/reference-port/yes/route-notes/standing.json\",\n \"samples/reference-port/no/route-notes/standing.json\",\n \"samples/reference-port/yes/route-notes/transport.json\",\n \"samples/reference-port/no/route-notes/transport.json\",\n \"vectors/reference-port.cli.json\",\n \"docs/contracts/reference-port.publication.json\",\n \"assets/wasm/*\",\n \"licenses/wasm/*\",\n \"samples/authenticated-reference/no.json\",\n \"samples/authenticated-reference/yes/editorial-state/TARGET.bound\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/arrival.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/coverage.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/era.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/order.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/signature.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/transport.arrival.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/transport.coverage.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/transport.era.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/transport.order.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/transport.signature.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/transport.yes.json\",\n \"samples/authenticated-reference/yes/editorial-state/inputs/yes.json\",\n \"samples/authenticated-reference/yes/weather-reading/TARGET.bound\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/arrival.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/coverage.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/era.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/order.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/signature.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/transport.arrival.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/transport.coverage.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/transport.era.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/transport.order.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/transport.signature.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/transport.yes.json\",\n \"samples/authenticated-reference/yes/weather-reading/inputs/yes.json\",\n \"samples/authenticated-reference/yes.json\",\n \"vectors/native/authenticated-reference-formation.vector.json\",\n \"vectors/native/authenticated-reference.cli.json\",\n \"vectors/native/authenticated-reference.vector.json\",\n \"samples/wasm/editorial-notes/TARGET.bound\",\n \"samples/wasm/editorial-notes/esm.bound\",\n \"samples/wasm/editorial-notes/no-deadline.bound\",\n \"samples/wasm/editorial-notes/no-memory.bound\",\n \"samples/wasm/editorial-notes/no-missing-limit.bound\",\n \"samples/wasm/editorial-notes/receipts.bound\",\n \"samples/wasm/water-level/TARGET.bound\",\n \"samples/wasm/water-level/esm.bound\",\n \"samples/wasm/water-level/no-deadline.bound\",\n \"samples/wasm/water-level/no-memory.bound\",\n \"samples/wasm/water-level/no-missing-limit.bound\",\n \"samples/wasm/water-level/receipts.bound\",\n \"vectors/wasm-object.cli.json\",\n \"docs/contracts/optional-wasm-adapter.publication.json\",\n \"docs/contracts/authenticated-reference.publication.json\",\n \"docs/contracts/native-publication.inventory.json\",\n \"docs/contracts/refusals.bound\",\n \"docs/contracts/standing.bound\",\n \"docs/contracts/reference-export.publication.json\",\n \"samples/reference-export/yes.json\",\n \"samples/reference-export/no.json\",\n \"vectors/native/reference-export.vector.json\",\n \"docs/contracts/standing.publication.json\",\n \"samples/standing/yes.json\",\n \"samples/standing/no.json\",\n \"vectors/native/standing.vector.json\",\n \"docs/contracts/refusals.publication.json\",\n \"samples/refusals/yes.json\",\n \"samples/refusals/no.json\",\n \"vectors/native/refusals.vector.json\",\n \"docs/contracts/reference-backend.publication.json\",\n \"samples/reference-backend/yes.json\",\n \"samples/reference-backend/no.json\",\n \"samples/reference-backend/world-fixture.json\",\n \"vectors/native/reference-backend.vector.json\",\n \"samples/authenticated-reference/compatibility.json\",\n \"dist/engine/ports.d.ts\",\n \"docs/contracts/host-ports.publication.json\",\n \"samples/host-ports/yes.json\",\n \"samples/host-ports/no.json\",\n \"vectors/native/host-ports.vector.json\",\n \"docs/contracts/readme.publication.json\",\n \"samples/readme/yes.json\",\n \"samples/readme/no.json\",\n \"vectors/native/readme.vector.json\"\n ],\n \"author\": \"Lapxo\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@lapxo/obligations\": \"0.3.5\",\n \"@lapxo/topos\": \"^0.2.0\",\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:bound021-final-bindings by=target form=alphabet measure=text role=writes scope=prose/en/files/manifest shape=package.json value=lock
|
|
326
338
|
bound-lock/1 about="{\n \"profile\": \"quartet-process@1\",\n \"scope\": \"contract/published/additions\",\n \"surface\": [\n \"contract/published/engine-object-projection\",\n \"contract/published/reference-port\"\n ]\n}\n" at=policy:bound/020-publication-additions by=target form=alphabet measure=text role=writes scope=prose/en/files/publication-additions-inventory shape=docs/contracts/publication-additions.inventory.json value=lock
|
|
327
339
|
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
|
|
328
340
|
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
|
|
@@ -390,20 +402,10 @@ bound-lock/1 at=policy:bound/015-plan by=target form=alphabet measure=id role=wr
|
|
|
390
402
|
bound-lock/1 at=policy:bound/015-plan by=target form=alphabet measure=receipts role=writes scope=region/program-evidence value=contract/**|plan/**
|
|
391
403
|
bound-lock/1 at=policy:bound/019-selected-content-source by=target form=alphabet measure=digest role=writes scope=dep/runtime-programs shape=ab851507d007068757f4f0a286a5231237ec63499204ab767c343d7ef90ddb49 value=sha256:6dd67481ae70011143764232465eb4d0140d0143a9928080b471bf2df5b5e45a
|
|
392
404
|
bound-lock/1 at=policy:bound/019-selected-content-source by=target form=alphabet measure=id role=writes scope=dep/runtime-prose-render shape=dist/regions/text.js value=sha256:a1c31a72a31eaf8ea7df0fb98235c4b465aee1d9575aebcc480f09b4bf64daf1
|
|
393
|
-
bound-lock/1 at=policy:bound/020-doc-closure-runtime-binding by=target form=alphabet measure=digest role=writes scope=dep/runtime-native-publication shape=dist/provider.js value=sha256:859a3684c434e66ee963ff13f6028863caa2c0d6864cdcde27718034a8730e58
|
|
394
|
-
bound-lock/1 at=policy:bound/020-doc-closure-runtime-binding by=target form=alphabet measure=digest role=writes scope=dep/runtime-process-readings shape=dist/index.js value=sha256:bd401f777eccb1163cd7d47a6ed568d0a1509962c8a6a7555f01d20ecbacd8b8
|
|
395
|
-
bound-lock/1 at=policy:bound/020-doc-closure-runtime-binding by=target form=alphabet measure=digest role=writes scope=dep/runtime-source-readings shape=dist/index.js value=sha256:923c58ffa1ef4b453c02caca1ec952b249eff0d8397c8c0ea1cd29fe46383a8f
|
|
396
|
-
bound-lock/1 at=policy:bound/020-doc-closure-runtime-binding by=target form=alphabet measure=digest role=writes scope=uses/native-publication value=sha256:42dccebef377b458c01d4eb4b964eac18d7b1fc4eeaba6dc9ceda6f541ae44ee
|
|
397
|
-
bound-lock/1 at=policy:bound/020-doc-closure-runtime-binding by=target form=alphabet measure=digest role=writes scope=uses/source-readings value=sha256:1cc662e43053fa9110db888200439b5db2c1f806a014661881715103bcc5f61a
|
|
398
|
-
bound-lock/1 at=policy:bound/020-final-compiled-runtime-binding by=target form=alphabet measure=id role=writes scope=sources/process-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.0/process-standing.bound
|
|
399
|
-
bound-lock/1 at=policy:bound/020-final-compiled-runtime-binding by=target form=alphabet measure=id role=writes scope=sources/runtime-process-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.0/process-readings.tgz
|
|
400
|
-
bound-lock/1 at=policy:bound/020-final-compiled-runtime-binding by=target form=alphabet measure=id role=writes scope=sources/runtime-source-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.0/source-readings.tgz
|
|
401
|
-
bound-lock/1 at=policy:bound/020-final-compiled-runtime-binding by=target form=alphabet measure=id role=writes scope=sources/source-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.0/source-standing.bound
|
|
402
405
|
bound-lock/1 at=policy:bound/020-legacy-publication-import-closure by=target form=alphabet measure=digest role=writes scope=dep/runtime-publication-readings shape=dist/provider.js value=sha256:3a93cb97c7729c88454e5c9de92dae93a286bd543fb460eb13db375fc6a777ad
|
|
403
406
|
bound-lock/1 at=policy:bound/020-legacy-publication-import-closure by=target form=alphabet measure=digest role=writes scope=uses/publication-readings value=sha256:b9372543a6bf6f3f58e1fbd4d9f0e948c15264e444de8b0b436336ac621cbdac
|
|
404
407
|
bound-lock/1 at=policy:bound/020-legacy-publication-import-closure by=target form=alphabet measure=id role=writes scope=sources/publication-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.0/legacy-publication-standing.bound
|
|
405
408
|
bound-lock/1 at=policy:bound/020-legacy-publication-import-closure by=target form=alphabet measure=id role=writes scope=sources/runtime-publication-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.0/legacy-publication-readings.tgz
|
|
406
|
-
bound-lock/1 at=policy:bound/020-native-publication-demand-binding by=target form=alphabet measure=id role=writes scope=release/category/contract value=contract/published|contract/published/additions|contract/published/authenticated-reference|contract/published/optional-wasm-adapter|engine/prerequisite/**
|
|
407
409
|
bound-lock/1 at=policy:bound/020-publication-additions by=target form=alphabet measure=id needs=docs/contracts/publication-additions.inventory.json role=demands scope=view/publication-additions-inventory shape=docs/contracts/publication-additions.inventory.json value=text@3
|
|
408
410
|
bound-lock/1 at=policy:bound/020-publication-additions by=target form=alphabet measure=reads role=writes scope=region/publication-additions-inventory value=prose/en/files/publication-additions-inventory
|
|
409
411
|
bound-lock/1 at=policy:bound/020-publication-additions by=target form=alphabet measure=receipts role=writes scope=region/publication-additions value=contract/published/**|docs/contracts/**|samples/**|vectors/**
|
|
@@ -416,10 +418,6 @@ bound-lock/1 at=policy:bound/020-publication-source-inputs by=target form=alphab
|
|
|
416
418
|
bound-lock/1 at=policy:bound/020-published-sdk-observation by=target form=alphabet measure=id role=writes scope=sources/published-dependencies value=https://github.com/Lapxo/bound/releases/download/v0.2.0/published-dependencies-standing.bound
|
|
417
419
|
bound-lock/1 at=policy:bound/020-published-sdk-observation by=target form=alphabet measure=id role=writes scope=sources/runtime-published-dependencies value=https://github.com/Lapxo/bound/releases/download/v0.2.0/published-dependencies.tgz
|
|
418
420
|
bound-lock/1 at=policy:bound/020-published-sdk-observation by=target form=alphabet measure=receipts role=writes scope=region/published-dependencies value=engine/prerequisite/topos-effective-order
|
|
419
|
-
bound-lock/1 at=policy:bound/020-retained-quartet-contract-seals by=target form=alphabet measure=digest role=writes scope=dep/runtime-publication-additions shape=dist/provider.js value=sha256:6e61a12238f56a9c166227a461eef3a32785a4349f526983ba2b706d499e41ab
|
|
420
|
-
bound-lock/1 at=policy:bound/020-retained-quartet-contract-seals by=target form=alphabet measure=digest role=writes scope=uses/publication-additions value=sha256:255d9dc510ecf7433e6aad5228f4c71c28a6a3c2094f23790f47b260f6a4c744
|
|
421
|
-
bound-lock/1 at=policy:bound/020-retained-quartet-contract-seals by=target form=alphabet measure=id role=writes scope=sources/publication-additions value=https://github.com/Lapxo/bound/releases/download/v0.2.0/publication-standing.bound
|
|
422
|
-
bound-lock/1 at=policy:bound/020-retained-quartet-contract-seals by=target form=alphabet measure=id role=writes scope=sources/runtime-publication-additions value=https://github.com/Lapxo/bound/releases/download/v0.2.0/publication-readings.tgz
|
|
423
421
|
bound-lock/1 at=policy:bound/authority by=owner epoch=1 form=alphabet measure=public-key role=writes scope=keys/owner sig="ed25519:era1:IA0IME384zILkebRhsBRopKbz8uPLRX95xUu45dqM0vrc5RzPaeiyJR9s/bb/QFtY6fLiilDy17p89cN3Tm6AQ==" value="MCowBQYDK2VwAyEAIYI0be8OWhf3HcVceKpibjgZ+hbYJKYO5ayX8Kk16LE="
|
|
424
422
|
bound-lock/1 at=policy:bound/authority by=target form=alphabet measure=class role=writes scope=keys/owner value=authorize
|
|
425
423
|
bound-lock/1 at=policy:bound/authority by=target form=alphabet measure=coverage role=writes scope=keys/owner value=*
|
|
@@ -441,10 +439,6 @@ bound-lock/1 at=policy:bound/split by=target form=interval measure=kernel-litera
|
|
|
441
439
|
bound-lock/1 at=policy:bound/split by=target form=interval measure=kernel-node-imports role=reads scope=kernel/node-imports value=0..0
|
|
442
440
|
bound-lock/1 at=policy:bound/views by=target form=alphabet measure=id role=demands scope=view/repair value=repair
|
|
443
441
|
bound-lock/1 at=policy:bound/views by=target form=alphabet measure=id role=demands scope=view/why value=why
|
|
444
|
-
bound-lock/1 at=policy:bound020-native-publication-delivery by=target form=alphabet measure=id role=writes scope=sources/native-publication value=https://github.com/Lapxo/bound/releases/download/v0.2.0/native-publication-standing.bound
|
|
445
|
-
bound-lock/1 at=policy:bound020-native-publication-delivery by=target form=alphabet measure=id role=writes scope=sources/runtime-native-publication value=https://github.com/Lapxo/bound/releases/download/v0.2.0/native-publication-readings.tgz
|
|
446
|
-
bound-lock/1 at=policy:bound020-native-publication-fixture by=target form=alphabet measure=coordinates role=writes scope=region/native-publication value=dist/**|docs/contracts/authenticated-reference.publication.json|docs/contracts/engine.md|docs/contracts/native-publication.inventory.json|docs/contracts/optional-wasm-adapter.publication.json|docs/contracts/reference-port.md|samples/authenticated-reference/no.json|samples/authenticated-reference/yes.json|samples/authenticated-reference/yes/editorial-state/TARGET.bound|samples/authenticated-reference/yes/editorial-state/inputs/arrival.json|samples/authenticated-reference/yes/editorial-state/inputs/coverage.json|samples/authenticated-reference/yes/editorial-state/inputs/era.json|samples/authenticated-reference/yes/editorial-state/inputs/order.json|samples/authenticated-reference/yes/editorial-state/inputs/signature.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.arrival.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.coverage.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.era.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.order.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.signature.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.yes.json|samples/authenticated-reference/yes/editorial-state/inputs/yes.json|samples/authenticated-reference/yes/weather-reading/TARGET.bound|samples/authenticated-reference/yes/weather-reading/inputs/arrival.json|samples/authenticated-reference/yes/weather-reading/inputs/coverage.json|samples/authenticated-reference/yes/weather-reading/inputs/era.json|samples/authenticated-reference/yes/weather-reading/inputs/order.json|samples/authenticated-reference/yes/weather-reading/inputs/signature.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.arrival.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.coverage.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.era.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.order.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.signature.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.yes.json|samples/authenticated-reference/yes/weather-reading/inputs/yes.json|samples/wasm/editorial-notes/TARGET.bound|samples/wasm/editorial-notes/esm.bound|samples/wasm/editorial-notes/no-deadline.bound|samples/wasm/editorial-notes/no-memory.bound|samples/wasm/editorial-notes/no-missing-limit.bound|samples/wasm/editorial-notes/receipts.bound|samples/wasm/water-level/TARGET.bound|samples/wasm/water-level/esm.bound|samples/wasm/water-level/no-deadline.bound|samples/wasm/water-level/no-memory.bound|samples/wasm/water-level/no-missing-limit.bound|samples/wasm/water-level/receipts.bound|vectors/native/authenticated-reference-formation.vector.json|vectors/native/authenticated-reference.cli.json|vectors/native/authenticated-reference.vector.json|vectors/wasm-object.cli.json
|
|
447
|
-
bound-lock/1 at=policy:bound020-native-publication-fixture by=target form=alphabet measure=receipts role=writes scope=region/native-publication value=contract/published/optional-wasm-adapter|contract/published/authenticated-reference|contract/published/native|docs/contracts/**|samples/**|vectors/**
|
|
448
442
|
bound-lock/1 at=policy:complete-reading-identity by=target form=alphabet measure=id role=writes scope=wire/reading-context value=reading-context@1
|
|
449
443
|
bound-lock/1 at=policy:complete-reading-identity by=target form=alphabet measure=id role=writes scope=wire/reading-receipt value=reading-receipt@1
|
|
450
444
|
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
|
|
@@ -462,6 +456,40 @@ bound-lock/1 at=policy:public-artifact-source by=target form=alphabet measure=id
|
|
|
462
456
|
bound-lock/1 at=policy:selected-wire by=target form=alphabet measure=digest role=writes scope=uses/wire value=sha256:a717c60945add1facfd822b3ee2da73a8fa2f781dd0aa2de9be778e66b8f3591
|
|
463
457
|
bound-lock/1 at=witness:bound/015-hermetic-render-closure by=target form=alphabet measure=digest role=writes scope=uses/rendering value=sha256:c0094dc8c916b3c8ea9df19666816a28230c01808e5d792833c156e8d454a2f0
|
|
464
458
|
bound-lock/1 at=witness:bound/015-hermetic-render-closure by=target form=alphabet measure=id role=writes scope=dep/topos-doc/born shape=dist/index.js value=sha256:04feef01a8c59cae7ea842198d1faf0091b424129872a847b41c7da0bca6fabf
|
|
459
|
+
bound-lock/1 at=witness:bound021-disappearing-coordinate by=target form=alphabet measure=digest role=writes scope=dep/runtime-native-publication shape=dist/provider.js value=sha256:c8db0ce0e8d77d348d8c3ad01958c001691a995a46e55e43282e9b4a4a5cd89e
|
|
460
|
+
bound-lock/1 at=witness:bound021-disappearing-coordinate by=target form=alphabet measure=digest role=writes scope=dep/runtime-process-readings shape=dist/index.js value=sha256:a0ce1ba5b8ed1f09923691c2a5ef984daeabc3da212234e2a27fed04768dda84
|
|
461
|
+
bound-lock/1 at=witness:bound021-disappearing-coordinate by=target form=alphabet measure=digest role=writes scope=dep/runtime-source-readings shape=dist/index.js value=sha256:0d19de7b3a13662418e830dc99369dc977760e3f2483e8888b0a92bf67134b0c
|
|
462
|
+
bound-lock/1 at=witness:bound021-disappearing-coordinate by=target form=alphabet measure=digest role=writes scope=uses/native-publication value=sha256:3d4930d3c02cb452ed16c96b101b16916f186d06a05b29b38754c7884fd79b9a
|
|
463
|
+
bound-lock/1 at=witness:bound021-disappearing-coordinate by=target form=alphabet measure=digest role=writes scope=uses/source-readings value=sha256:02a2f77a235470678e689049064eb96e72f41af3195799f0ccd8422d9226e107
|
|
464
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=coordinates role=writes scope=region/native-publication value=README.md|dist/**|docs/contracts/authenticated-reference.publication.json|docs/contracts/engine.md|docs/contracts/host-ports.md|docs/contracts/host-ports.publication.json|docs/contracts/native-publication.inventory.json|docs/contracts/optional-wasm-adapter.publication.json|docs/contracts/readme.publication.json|docs/contracts/reference-backend.md|docs/contracts/reference-backend.publication.json|docs/contracts/reference-export.md|docs/contracts/reference-export.publication.json|docs/contracts/reference-port.md|docs/contracts/refusals.bound|docs/contracts/refusals.md|docs/contracts/refusals.publication.json|docs/contracts/standing.bound|docs/contracts/standing.md|docs/contracts/standing.publication.json|samples/authenticated-reference/compatibility.json|samples/authenticated-reference/no.json|samples/authenticated-reference/yes.json|samples/authenticated-reference/yes/editorial-state/TARGET.bound|samples/authenticated-reference/yes/editorial-state/inputs/arrival.json|samples/authenticated-reference/yes/editorial-state/inputs/coverage.json|samples/authenticated-reference/yes/editorial-state/inputs/era.json|samples/authenticated-reference/yes/editorial-state/inputs/order.json|samples/authenticated-reference/yes/editorial-state/inputs/signature.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.arrival.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.coverage.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.era.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.order.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.signature.json|samples/authenticated-reference/yes/editorial-state/inputs/transport.yes.json|samples/authenticated-reference/yes/editorial-state/inputs/yes.json|samples/authenticated-reference/yes/weather-reading/TARGET.bound|samples/authenticated-reference/yes/weather-reading/inputs/arrival.json|samples/authenticated-reference/yes/weather-reading/inputs/coverage.json|samples/authenticated-reference/yes/weather-reading/inputs/era.json|samples/authenticated-reference/yes/weather-reading/inputs/order.json|samples/authenticated-reference/yes/weather-reading/inputs/signature.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.arrival.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.coverage.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.era.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.order.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.signature.json|samples/authenticated-reference/yes/weather-reading/inputs/transport.yes.json|samples/authenticated-reference/yes/weather-reading/inputs/yes.json|samples/host-ports/no.json|samples/host-ports/yes.json|samples/readme/no.json|samples/readme/yes.json|samples/reference-backend/no.json|samples/reference-backend/world-fixture.json|samples/reference-backend/yes.json|samples/reference-export/no.json|samples/reference-export/yes.json|samples/refusals/no.json|samples/refusals/yes.json|samples/standing/no.json|samples/standing/yes.json|samples/wasm/editorial-notes/TARGET.bound|samples/wasm/editorial-notes/esm.bound|samples/wasm/editorial-notes/no-deadline.bound|samples/wasm/editorial-notes/no-memory.bound|samples/wasm/editorial-notes/no-missing-limit.bound|samples/wasm/editorial-notes/receipts.bound|samples/wasm/water-level/TARGET.bound|samples/wasm/water-level/esm.bound|samples/wasm/water-level/no-deadline.bound|samples/wasm/water-level/no-memory.bound|samples/wasm/water-level/no-missing-limit.bound|samples/wasm/water-level/receipts.bound|vectors/native/authenticated-reference-formation.vector.json|vectors/native/authenticated-reference.cli.json|vectors/native/authenticated-reference.vector.json|vectors/native/host-ports.vector.json|vectors/native/readme.vector.json|vectors/native/reference-backend.vector.json|vectors/native/reference-export.vector.json|vectors/native/refusals.vector.json|vectors/native/standing.vector.json|vectors/wasm-object.cli.json
|
|
465
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=digest needs=docs/contracts/host-ports.md role=writes scope=contract/source/host-ports value=sha256:f3d646da2399c719469a37293b329d53b72b0478ca97f961b90c1f4e6adc2ae6
|
|
466
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=digest needs=docs/contracts/reference-backend.md role=writes scope=contract/source/reference-backend value=sha256:c69fbaac11276efcd8a436f242e07d4fda18137c9987f8bba183fe6d6ea801c6
|
|
467
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=digest needs=docs/contracts/reference-export.md role=writes scope=contract/source/reference-export value=sha256:08e12bbed83729f42f905e03f090126181df952b678a92fe06a0e24eefc106f4
|
|
468
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=digest needs=docs/contracts/refusals.bound role=writes scope=contract/source/refusals value=sha256:4b2a1768a0454a34c031855cdde75c1da07cc7e00933ee7fd52c2fc6b917a701
|
|
469
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=digest needs=docs/contracts/standing.bound role=writes scope=contract/source/standing value=sha256:f7f89f731912ca88aefc610b4bf23e38ddf566519f091794e68a3c320eeabd86
|
|
470
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id needs=docs/contracts/host-ports.md role=demands scope=view/contract-host-ports shape=docs/contracts/host-ports.md value=text@3
|
|
471
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id needs=docs/contracts/reference-backend.md role=demands scope=view/contract-reference-backend shape=docs/contracts/reference-backend.md value=text@3
|
|
472
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id needs=docs/contracts/reference-export.md role=demands scope=view/contract-reference-export shape=docs/contracts/reference-export.md value=text@3
|
|
473
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id needs=docs/contracts/refusals.md role=demands scope=view/contract-refusals shape=docs/contracts/refusals.md value=text@3
|
|
474
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id needs=docs/contracts/standing.md role=demands scope=view/contract-standing shape=docs/contracts/standing.md value=text@3
|
|
475
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id role=writes scope=release/category/contract value=contract/published|contract/published/additions|contract/published/authenticated-reference|contract/published/optional-wasm-adapter|engine/prerequisite/**|contract/published/reference-export|contract/published/reference-backend|contract/published/standing|contract/published/refusals|contract/published/host-ports|contract/published/readme
|
|
476
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id role=writes scope=sources/native-publication value=https://github.com/Lapxo/bound/releases/download/v0.2.1/native-publication-standing.bound
|
|
477
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id role=writes scope=sources/process-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.1/process-standing.bound
|
|
478
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id role=writes scope=sources/runtime-native-publication value=https://github.com/Lapxo/bound/releases/download/v0.2.1/native-publication-readings.tgz
|
|
479
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id role=writes scope=sources/runtime-process-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.1/process-readings.tgz
|
|
480
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id role=writes scope=sources/runtime-source-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.1/source-readings.tgz
|
|
481
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=id role=writes scope=sources/source-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.1/source-standing.bound
|
|
482
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=reads role=writes scope=region/contract-host-ports value=prose/en/files/contract-host-ports
|
|
483
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=reads role=writes scope=region/contract-reference-backend value=prose/en/files/contract-reference-backend
|
|
484
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=reads role=writes scope=region/contract-reference-export value=prose/en/files/contract-reference-export
|
|
485
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=reads role=writes scope=region/contract-refusals value=prose/en/files/contract-refusals
|
|
486
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=reads role=writes scope=region/contract-standing value=prose/en/files/contract-standing
|
|
487
|
+
bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=receipts role=writes scope=region/native-publication value=contract/published/optional-wasm-adapter|contract/published/authenticated-reference|contract/published/native|docs/contracts/**|samples/**|vectors/**|contract/published/reference-export|contract/published/reference-backend|contract/published/standing|contract/published/refusals|contract/published/host-ports|contract/published/readme
|
|
488
|
+
bound-lock/1 at=witness:bound021-readme-middle by=target form=alphabet measure=digest needs=README.md role=writes scope=contract/source/readme value=sha256:183fe27e7a8bfdb04f4aefaa785f2b1845da1c5a93562a06a300175a960c72da
|
|
489
|
+
bound-lock/1 at=witness:bound021-retained-additions-binding by=target form=alphabet measure=digest role=writes scope=dep/runtime-publication-additions shape=dist/provider.js value=sha256:aa015adb3e48cfb29c8d2bb5446e3057d219afdb62155226d41ce4cc6ef1dda0
|
|
490
|
+
bound-lock/1 at=witness:bound021-retained-additions-binding by=target form=alphabet measure=digest role=writes scope=uses/publication-additions value=sha256:1e06815e421d5374f8f2fca48f7148e02c67cfa9a07873afca49a0d48ae74375
|
|
491
|
+
bound-lock/1 at=witness:bound021-retained-additions-binding by=target form=alphabet measure=id role=writes scope=sources/publication-additions value=https://github.com/Lapxo/bound/releases/download/v0.2.1/publication-additions-standing.bound
|
|
492
|
+
bound-lock/1 at=witness:bound021-retained-additions-binding by=target form=alphabet measure=id role=writes scope=sources/runtime-publication-additions value=https://github.com/Lapxo/bound/releases/download/v0.2.1/publication-additions-readings.tgz
|
|
465
493
|
bound-lock/1 at=witness:engine-api-publication by=target form=alphabet measure=id needs=docs/contracts/engine.md role=demands scope=view/contract-engine shape=docs/contracts/engine.md value=text@3
|
|
466
494
|
bound-lock/1 at=witness:engine-api-publication by=target form=alphabet measure=reads role=writes scope=region/contract-engine value=prose/en/files/contract-engine
|
|
467
495
|
bound-lock/1 at=witness:process-vectors-held-by-world-and-bound-to-runtime by=target form=alphabet measure=coordinates role=reads scope=region/captures value=dist/**/*.js|TARGET.bound|package.json
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { BoundRefusal } from "../host/refusals.js";
|
|
1
2
|
import { hasContextualPlace, contextualStanding } from "../host/contextual-place.js";
|
|
2
|
-
import {
|
|
3
|
+
import { publicStandingLines } from "../host/admitted-place.js";
|
|
3
4
|
import { viewsOf } from "../fold/views.js";
|
|
4
5
|
import { lockStanding } from "../fold/keys.js";
|
|
5
6
|
import { storeOf } from "../land/ledger.js";
|
|
@@ -10,11 +11,11 @@ import { storeOf } from "../land/ledger.js";
|
|
|
10
11
|
export function printStandingResult(root) {
|
|
11
12
|
const store = storeOf(root), view = viewsOf(lockStanding(store)).get('standing');
|
|
12
13
|
if (!view || view.shape || !view.regions.some(region => region.name === 'standing'))
|
|
13
|
-
throw
|
|
14
|
+
throw new BoundRefusal('standing/view', 'REFUSE·view standing requires a declared standing view');
|
|
14
15
|
if (hasContextualPlace(root)) {
|
|
15
16
|
process.stdout.write(JSON.stringify(contextualStanding(root)) + '\n');
|
|
16
17
|
return;
|
|
17
18
|
}
|
|
18
|
-
const standing =
|
|
19
|
+
const standing = publicStandingLines(root);
|
|
19
20
|
process.stdout.write(standing.length ? standing.join('\n') + '\n' : '');
|
|
20
21
|
}
|
package/dist/cli/verb.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { BoundRefusal, describeRefusal, readRefusalCatalog } from "../host/refusals.js";
|
|
3
|
+
import { readFileSync as readCatalogFile } from 'node:fs';
|
|
4
|
+
import { sha256 as catalogDigest } from "../host/hash.js";
|
|
2
5
|
import { printReleaseApproval } from "./release-result.js";
|
|
3
6
|
import { inspectReference } from "../host/reference.js";
|
|
7
|
+
import { exportAuthenticatedReference } from "../host/reference-export.js";
|
|
4
8
|
import { authenticatedReferenceSelected, openAuthenticatedReference } from "../host/reference-native.js";
|
|
5
9
|
import { printActResult } from "./act-result.js";
|
|
6
10
|
import { printStandingResult } from "./standing-result.js";
|
|
@@ -209,7 +213,7 @@ async function view(root, under, asked, told = [], coord, key, includePolicy = t
|
|
|
209
213
|
}
|
|
210
214
|
if (name === 'standing') {
|
|
211
215
|
if (under || told.length || coord || depth !== undefined)
|
|
212
|
-
throw
|
|
216
|
+
throw new BoundRefusal('standing/query', 'REFUSE·standing local committed projection only');
|
|
213
217
|
printStandingResult(root);
|
|
214
218
|
return EXIT.closed;
|
|
215
219
|
}
|
|
@@ -374,6 +378,15 @@ async function view(root, under, asked, told = [], coord, key, includePolicy = t
|
|
|
374
378
|
return shown(fold);
|
|
375
379
|
}
|
|
376
380
|
async function signVerb(root, rest) {
|
|
381
|
+
const as = valueOf(rest, FLAGS.as);
|
|
382
|
+
if (as !== undefined) {
|
|
383
|
+
const sources = positionalsOf(rest);
|
|
384
|
+
if (as !== 'reference' || sources.length !== 1 || rest.includes(FLAGS.check))
|
|
385
|
+
throw new BoundRefusal('reference-export/usage', 'REFUSE·reference-export usage: sign --as reference <source-url>');
|
|
386
|
+
const result = await exportAuthenticatedReference(root, sources[0], { key: valueOf(rest, FLAGS.key), keyFile: valueOf(rest, FLAGS.keyFile), signer: valueOf(rest, FLAGS.signer) });
|
|
387
|
+
process.stdout.write(JSON.stringify(result) + '\n');
|
|
388
|
+
return EXIT.closed;
|
|
389
|
+
}
|
|
377
390
|
const batch = await signedBatch(root, rest, positionalsOf(rest));
|
|
378
391
|
if (batch.kind === 'exit')
|
|
379
392
|
return batch.code;
|
|
@@ -633,18 +646,38 @@ function main(argv) {
|
|
|
633
646
|
process.stderr.write(`${selfName()}: ${helpLines().join(' · ')}\n`);
|
|
634
647
|
return EXIT.usage;
|
|
635
648
|
}
|
|
649
|
+
function printRefusal(error) {
|
|
650
|
+
try {
|
|
651
|
+
const text = readCatalogFile(new URL('../../docs/contracts/refusals.bound', import.meta.url), 'utf8');
|
|
652
|
+
const entry = describeRefusal(error, readRefusalCatalog(text));
|
|
653
|
+
process.stderr.write(JSON.stringify({ profile: 'bound-refusal@1', ...entry, catalog: catalogDigest(text) }) + '\n');
|
|
654
|
+
}
|
|
655
|
+
catch {
|
|
656
|
+
// A missing/invalid catalog cannot supply trustworthy metadata. Keep the
|
|
657
|
+
// failure named instead of recursively failing while formatting a refusal.
|
|
658
|
+
process.stderr.write(JSON.stringify({ profile: 'bound-refusal@1', code: 'catalog/invalid', unmeasured: ['category', 'meaning', 'next', 'catalog'] }) + '\n');
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
// Legacy numeric refusals receive a generic code by exit result, never by parsing
|
|
662
|
+
// a diagnostic. Specific causes retain their own typed code in the error path.
|
|
663
|
+
function finished(code) {
|
|
664
|
+
if (code === EXIT.refuse || code === EXIT.usage)
|
|
665
|
+
printRefusal(new BoundRefusal(code === EXIT.usage ? 'operation/usage' : 'operation/failed', ''));
|
|
666
|
+
process.exitCode = code;
|
|
667
|
+
}
|
|
636
668
|
// The same refusal boundary covers synchronous operations and asynchronous processes.
|
|
637
669
|
const refused = (error) => {
|
|
638
670
|
const message = error instanceof Error ? error.message : String(error);
|
|
639
671
|
process.stderr.write(`${selfName()}: ${message.startsWith('REFUSE·') ? message : `REFUSE·crash ${message}`}\n`);
|
|
672
|
+
printRefusal(error instanceof BoundRefusal ? error : new BoundRefusal('operation/failed', message));
|
|
640
673
|
process.exitCode = EXIT.refuse;
|
|
641
674
|
};
|
|
642
675
|
try {
|
|
643
676
|
const ran = main(process.argv.slice(2));
|
|
644
677
|
if (ran instanceof Promise)
|
|
645
|
-
ran.then(
|
|
678
|
+
ran.then(finished).catch(refused);
|
|
646
679
|
else
|
|
647
|
-
|
|
680
|
+
finished(ran);
|
|
648
681
|
}
|
|
649
682
|
catch (error) {
|
|
650
683
|
refused(error);
|