@lapxo/bound 0.2.1 → 0.2.2
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 +2 -2
- package/TARGET.bound +30 -25
- package/dist/cli/owner.js +2 -1
- package/dist/cli/place.js +7 -26
- package/dist/cli/retained-judgment.js +25 -0
- package/dist/fold/admission-history.js +6 -11
- package/dist/fold/bootstrap-anchor.js +28 -0
- package/dist/fold/ceilings.js +13 -0
- package/dist/fold/own.js +7 -5
- package/dist/fold/signers.js +5 -9
- package/dist/host/native/module-syntax.js +8 -4
- package/docs/contracts/readme.publication.json +1 -1
- package/package.json +5 -4
- package/receipts.bound +9703 -9572
- package/samples/engine-place/inputs/closure.json +1 -0
package/README.md
CHANGED
|
@@ -13,13 +13,13 @@ Unchanged regions can retain valid receipts. A changed input reopens the regions
|
|
|
13
13
|
## Install and use
|
|
14
14
|
|
|
15
15
|
```sh
|
|
16
|
-
npm install @lapxo/bound@0.2.
|
|
16
|
+
npm install @lapxo/bound@0.2.2
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
In a place with admitted declarations and closed public receipts, check the existing evidence without running its readers again:
|
|
20
20
|
|
|
21
21
|
```sh
|
|
22
|
-
npx @lapxo/bound@0.2.
|
|
22
|
+
npx @lapxo/bound@0.2.2 fold --check
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
For 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.
|
package/TARGET.bound
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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
|
+
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.2\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.2 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:bound022/root-release-metadata 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
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
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
|
|
@@ -99,11 +99,12 @@ bound-lock/1 about="Replace the built-in module parser with a declared bounded c
|
|
|
99
99
|
bound-lock/1 about="Reported unpaid by the Head clean-install matrix: authority-class evidence is exposed but attest receipts appear in no view. Confirm against exact archive; preserve admitted attribution." at=witness:head/014-clean-install by=target form=alphabet measure=status needs=docs/contracts/evidence-view.md|samples/yes/attest-evidence.json|vectors/attest-evidence.json|samples/no/attest-evidence.json role=demands scope=contract/published/attest-evidence-view value=present
|
|
100
100
|
bound-lock/1 about="Reported unpaid by the Head clean-install matrix: the typed-object sample is absent from the package. Confirm against exact archive; no receipt is fabricated." at=witness:head/014-clean-install by=target form=alphabet measure=status needs=docs/contracts/typed-object.md|samples/yes/typed-object.json|vectors/typed-object.json|samples/no/typed-object.json role=demands scope=contract/published/typed-object-sample value=present
|
|
101
101
|
bound-lock/1 about="Requires the real published SDK contract and native quartet before release admission; a private candidate hash is not a published dependency." at=witness:engine-api-publication by=target form=alphabet measure=status needs=release/contracts/object-effective-order role=demands scope=engine/prerequisite/topos-effective-order value=published
|
|
102
|
+
bound-lock/1 about="Retained owner-admitted E-P interval-min snapshot only; finite sample chosen by this declaration, not a kernel region catalog. The verifier expectation is external to the input. This sample does not claim the current release module inventory." at=policy:bound022/ep-retained-reader by=target form=alphabet measure=coordinates role=writes scope=region/closure value=samples/engine-place/inputs/closure.json
|
|
102
103
|
bound-lock/1 about="Rewriting hero, idea and the other section regions as compositions of atoms is 0.1.1, not done quietly here." at=policy:bound/010 by=target form=alphabet kind=conjecture measure=status role=demands scope=open/section-regions-as-atoms value=present
|
|
103
104
|
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
|
|
104
105
|
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
|
|
105
|
-
bound-lock/1 about="The exact owner-admitted
|
|
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:
|
|
106
|
+
bound-lock/1 about="The exact owner-admitted K-U SDK archive. Its digest identifies retained bytes; public availability is a separate release prerequisite." at=witness:kernel-upgrade-043-sdk021 by=target form=alphabet measure=id needs=node_modules/@lapxo/topos role=reads scope=dep/topos shape=package value=sha256:50086958553b9376d600583f7dff354196bfeb41170fc6d1482ca7bea7c493e2
|
|
107
|
+
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:bound022-bootstrap-location by=target form=alphabet measure=digest role=writes scope=uses/process-readings value=sha256:06f91f0132c8b9615bbeead2d4657e33e36dd0d62ac7e65cf4c8e1c30382007e
|
|
107
108
|
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
|
|
108
109
|
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
|
|
109
110
|
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
|
|
@@ -201,7 +202,7 @@ bound-lock/1 about="the DOI prefix a cite is read through" at=policy:bound/010 b
|
|
|
201
202
|
bound-lock/1 about="the TypeScript capsule nine places still pin, before source/longest became a maximum: named here until no uses line names it" at=policy:bound/capsules by=target form=alphabet measure=id role=writes scope=dep/topos-typescript-tree/pinned shape=dist/index.js value=sha256:8c29831ead1c231f8f444d49e64adb293bd4e0b854192b225a539c288a927ed6
|
|
202
203
|
bound-lock/1 about="the TypeScript capsule readers: source/longest emitted under the measure longest, a maximum, and sibling refs as a count" at=policy:bound/capsules by=target form=alphabet measure=id role=writes scope=dep/topos-typescript-tree/readers shape=dist/index.js value=sha256:bf8a5a67c8a675ed04349e72c36a8f073a5c153646e98d2003b36a3fad34209e
|
|
203
204
|
bound-lock/1 about="the algebra and the notation this place rests on" at=policy:bound/010 by=target form=alphabet measure=id role=writes scope=dependencies value=@lapxo/obligations|@lapxo/topos
|
|
204
|
-
bound-lock/1 about="the algebra bound folds with, named by the digest of its release and read from bound-s own store, never from a sibling of the tree" at=witness:
|
|
205
|
+
bound-lock/1 about="the algebra bound folds with, named by the digest of its release and read from bound-s own store, never from a sibling of the tree" at=witness:kernel-upgrade-043 by=target form=alphabet measure=id needs=node_modules/@lapxo/obligations role=reads scope=dep/obligations shape=package value=sha256:05547a2cb6aeef89aa792b09b70bb2c56d4b1640e46aa777f264d2d718f779ef
|
|
205
206
|
bound-lock/1 about="the atoms of the door, in that order, each fed by a page/readme line or a receipt" at=policy:bound/readme by=target form=alphabet measure=id role=writes scope=page/readme value=group|say|term|count|cell|seq|exchange|set|ref
|
|
206
207
|
bound-lock/1 about="the badge host a page wears" at=policy:bound/010 by=target form=alphabet measure=id role=writes scope=sources/badges value=https://img.shields.io/badge
|
|
207
208
|
bound-lock/1 about="the boss is withdrawn; the meet is again the range every remaining origin allows" at=policy:bound/door by=target form=alphabet measure=text role=writes scope=prose/en/figure/fold/back value=lock
|
|
@@ -319,7 +320,7 @@ bound-lock/1 about="the typescript tree world after its released capsule: said,
|
|
|
319
320
|
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/**
|
|
320
321
|
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
|
|
321
322
|
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\""
|
|
322
|
-
bound-lock/1 about="the version this place is bound at" at=witness:
|
|
323
|
+
bound-lock/1 about="the version this place is bound at" at=witness:bound022/ep-code-integration by=target form=alphabet measure=id role=writes scope=version value=0.2.2
|
|
323
324
|
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
|
|
324
325
|
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
|
|
325
326
|
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
|
|
@@ -334,7 +335,7 @@ bound-lock/1 about="what the second head found, which leaves the place has writt
|
|
|
334
335
|
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
|
|
335
336
|
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
|
|
336
337
|
bound-lock/1 about="who signs this place" at=policy:bound/010 by=target form=alphabet measure=id role=writes scope=author value=Lapxo
|
|
337
|
-
bound-lock/1 about="{\n \"name\": \"@lapxo/bound\",\n \"version\": \"0.2.
|
|
338
|
+
bound-lock/1 about="{\n \"name\": \"@lapxo/bound\",\n \"version\": \"0.2.2\",\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 \"samples/engine-place/inputs/closure.json\"\n ],\n \"author\": \"Lapxo\",\n \"license\": \"MIT\",\n \"dependencies\": {\n \"@lapxo/obligations\": \"0.4.3\",\n \"@lapxo/topos\": \"^0.2.1\",\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:bound022/ep-code-integration by=target form=alphabet measure=text role=writes scope=prose/en/files/manifest shape=package.json value=lock
|
|
338
339
|
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
|
|
339
340
|
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
|
|
340
341
|
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
|
|
@@ -402,10 +403,6 @@ bound-lock/1 at=policy:bound/015-plan by=target form=alphabet measure=id role=wr
|
|
|
402
403
|
bound-lock/1 at=policy:bound/015-plan by=target form=alphabet measure=receipts role=writes scope=region/program-evidence value=contract/**|plan/**
|
|
403
404
|
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
|
|
404
405
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
409
406
|
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
|
|
410
407
|
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
|
|
411
408
|
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/**
|
|
@@ -439,10 +436,11 @@ bound-lock/1 at=policy:bound/split by=target form=interval measure=kernel-litera
|
|
|
439
436
|
bound-lock/1 at=policy:bound/split by=target form=interval measure=kernel-node-imports role=reads scope=kernel/node-imports value=0..0
|
|
440
437
|
bound-lock/1 at=policy:bound/views by=target form=alphabet measure=id role=demands scope=view/repair value=repair
|
|
441
438
|
bound-lock/1 at=policy:bound/views by=target form=alphabet measure=id role=demands scope=view/why value=why
|
|
439
|
+
bound-lock/1 at=policy:bound022/ep-retained-reader-delivery by=target form=alphabet measure=id role=writes scope=sources/ep-closure-reader value=https://github.com/Lapxo/bound/releases/download/v0.2.2/E-P-closure-reader-standing.bound
|
|
440
|
+
bound-lock/1 at=policy:bound022/ep-retained-reader-delivery by=target form=alphabet measure=id role=writes scope=sources/runtime-ep-closure-reader value=https://github.com/Lapxo/bound/releases/download/v0.2.2/ep-closure-adapter.tgz
|
|
442
441
|
bound-lock/1 at=policy:complete-reading-identity by=target form=alphabet measure=id role=writes scope=wire/reading-context value=reading-context@1
|
|
443
442
|
bound-lock/1 at=policy:complete-reading-identity by=target form=alphabet measure=id role=writes scope=wire/reading-receipt value=reading-receipt@1
|
|
444
443
|
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
|
|
445
|
-
bound-lock/1 at=policy:host/declared-shapes by=target form=alphabet measure=id role=reads scope=wire/shapes value=decision|lock|package|reader|render|run|vector|view
|
|
446
444
|
bound-lock/1 at=policy:host/declared-vocabulary by=target form=alphabet measure=id role=reads scope=wire/states value=absent|present|unread|withdraw
|
|
447
445
|
bound-lock/1 at=policy:host/declared-vocabulary by=target form=alphabet measure=id role=reads scope=wire/templates value={cone}|{roots}
|
|
448
446
|
bound-lock/1 at=policy:instrument/cryptography by=target form=alphabet measure=id role=reads scope=wire/digest-algorithms value=sha256:era1
|
|
@@ -451,16 +449,10 @@ bound-lock/1 at=policy:instrument/cryptography by=target form=alphabet measure=i
|
|
|
451
449
|
bound-lock/1 at=policy:project/local-journals by=target form=alphabet measure=class role=writes scope=keys/fold value=fold
|
|
452
450
|
bound-lock/1 at=policy:project/local-journals by=target form=alphabet measure=class role=writes scope=keys/reader value=read
|
|
453
451
|
bound-lock/1 at=policy:prose/render-contract by=target form=alphabet measure=digest role=writes scope=uses/prose-render value=sha256:8b678e37f1fe656a5c456f09c0d57020e3aeddb8acec2b5ffc92054a3ce26c3b
|
|
454
|
-
bound-lock/1 at=policy:public-artifact-source by=target form=alphabet measure=id role=writes scope=sources/obligations value=https://registry.npmjs.org/@lapxo/obligations/-/obligations-0.3.5.tgz
|
|
455
452
|
bound-lock/1 at=policy:public-artifact-source by=target form=alphabet measure=id role=writes scope=sources/typescript value=https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz
|
|
456
453
|
bound-lock/1 at=policy:selected-wire by=target form=alphabet measure=digest role=writes scope=uses/wire value=sha256:a717c60945add1facfd822b3ee2da73a8fa2f781dd0aa2de9be778e66b8f3591
|
|
457
454
|
bound-lock/1 at=witness:bound/015-hermetic-render-closure by=target form=alphabet measure=digest role=writes scope=uses/rendering value=sha256:c0094dc8c916b3c8ea9df19666816a28230c01808e5d792833c156e8d454a2f0
|
|
458
455
|
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
456
|
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
457
|
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
458
|
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
|
|
@@ -473,25 +465,39 @@ bound-lock/1 at=witness:bound021-final-bindings by=target form=alphabet measure=
|
|
|
473
465
|
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
466
|
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
467
|
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
468
|
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
469
|
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
470
|
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
471
|
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
472
|
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
473
|
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
474
|
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
475
|
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
476
|
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
477
|
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
|
|
478
|
+
bound-lock/1 at=witness:bound022-bootstrap-location by=target form=alphabet measure=digest role=writes scope=dep/runtime-process-readings shape=dist/index.js value=sha256:5c8229b9c82e551b88a646494de9afd96ad5895de4c058e54ff6d913fb9811ed
|
|
479
|
+
bound-lock/1 at=witness:bound022-bootstrap-location by=target form=alphabet measure=digest role=writes scope=dep/runtime-source-readings shape=dist/index.js value=sha256:481664ae355926dc366a521f5c48b77397c3c4228b85df58078474d0f42d761a
|
|
480
|
+
bound-lock/1 at=witness:bound022-bootstrap-location by=target form=alphabet measure=digest role=writes scope=uses/source-readings value=sha256:15275d5f750d146e511a7266d49611a74a42d9f65b0a4216e7818b27ebb642b3
|
|
481
|
+
bound-lock/1 at=witness:bound022-publication-image-and-context by=target form=alphabet measure=digest needs=README.md role=writes scope=contract/source/readme value=sha256:bc8277eaef68f8ab8a049607003502a1979fb58a36f9468d6224ec14df7e131f
|
|
482
|
+
bound-lock/1 at=witness:bound022-publication-image-and-context by=target form=alphabet measure=id role=writes scope=sources/publication-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.2/legacy-publication-standing.bound
|
|
483
|
+
bound-lock/1 at=witness:bound022-publication-image-and-context by=target form=alphabet measure=id role=writes scope=sources/runtime-publication-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.2/legacy-publication-readings.tgz
|
|
484
|
+
bound-lock/1 at=witness:bound022-restored-parallel-document-publication by=target form=alphabet measure=digest role=writes scope=dep/runtime-publication-readings shape=dist/provider.js value=sha256:46a14395eb9f8d6580477cc2daf4b29863aff14c2bba6423b55a8f0e6df376a2
|
|
485
|
+
bound-lock/1 at=witness:bound022-restored-parallel-document-publication by=target form=alphabet measure=digest role=writes scope=uses/publication-readings value=sha256:a18a6e176ddf97f428e506b831e22fa20930780462462bbe3cce6dff076c5d26
|
|
486
|
+
bound-lock/1 at=witness:bound022-standing-atomic-publication by=target form=alphabet measure=digest role=writes scope=dep/runtime-native-publication shape=dist/provider.js value=sha256:3ca044687042b016c9e6b97418a18d93aee0d2250b39dcd698953e794d527009
|
|
487
|
+
bound-lock/1 at=witness:bound022-standing-atomic-publication by=target form=alphabet measure=digest role=writes scope=uses/native-publication value=sha256:84155c3103fb7b0f970bb85e835753bd0af69e5ca2ffe6a443410af4fbd03e0e
|
|
488
|
+
bound-lock/1 at=witness:bound022/ep-complete-reading by=target form=alphabet measure=digest role=writes scope=dep/ep-closure-reader shape=entry.js value=sha256:4644ac239def863f6de1af850672a2435274eafff0974b187355597454faf34b
|
|
489
|
+
bound-lock/1 at=witness:bound022/ep-complete-reading by=target form=alphabet measure=digest role=writes scope=uses/ep-closure-reader value=sha256:b716942e45a272eb43b9790e2e62732471db4bd2a9c007ea4c66eb3453d0bf79
|
|
490
|
+
bound-lock/1 at=witness:bound022/ep-entry-shape by=target form=alphabet measure=id role=reads scope=wire/shapes value=decision|lock|package|reader|render|run|vector|view|entry.js
|
|
491
|
+
bound-lock/1 at=witness:bound022/ep-reader-delivery by=target form=alphabet measure=id role=writes scope=sources/native-publication value=https://github.com/Lapxo/bound/releases/download/v0.2.2/native-publication-standing.bound
|
|
492
|
+
bound-lock/1 at=witness:bound022/ep-reader-delivery by=target form=alphabet measure=id role=writes scope=sources/process-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.2/process-standing.bound
|
|
493
|
+
bound-lock/1 at=witness:bound022/ep-reader-delivery by=target form=alphabet measure=id role=writes scope=sources/runtime-native-publication value=https://github.com/Lapxo/bound/releases/download/v0.2.2/native-publication-readings.tgz
|
|
494
|
+
bound-lock/1 at=witness:bound022/ep-reader-delivery by=target form=alphabet measure=id role=writes scope=sources/runtime-process-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.2/process-readings.tgz
|
|
495
|
+
bound-lock/1 at=witness:bound022/ep-reader-delivery by=target form=alphabet measure=id role=writes scope=sources/runtime-source-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.2/source-readings.tgz
|
|
496
|
+
bound-lock/1 at=witness:bound022/ep-reader-delivery by=target form=alphabet measure=id role=writes scope=sources/source-readings value=https://github.com/Lapxo/bound/releases/download/v0.2.2/source-standing.bound
|
|
493
497
|
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
|
|
494
498
|
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
|
|
499
|
+
bound-lock/1 at=witness:kernel-upgrade-043 by=target form=alphabet measure=id role=writes scope=sources/obligations value=https://registry.npmjs.org/@lapxo/obligations/-/obligations-0.4.3.tgz
|
|
500
|
+
bound-lock/1 at=witness:kernel-upgrade-043-sdk021 by=target form=alphabet measure=id role=writes scope=sources/topos value=https://registry.npmjs.org/@lapxo/topos/-/topos-0.2.1.tgz
|
|
495
501
|
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
|
|
496
502
|
bound-lock/1 at=witness:process-vectors-held-by-world-and-bound-to-runtime by=target form=alphabet measure=coordinates role=reads scope=region/vectors value=dist/**/*.js|TARGET.bound|package.json
|
|
497
503
|
bound-lock/1 at=witness:project-coordinates-are-relative by=target form=interval measure=count needs=samples/core/yes/exchange-cost.json|samples/core/no/exchange-cost.json role=reads scope=exchange/cost value=0..0
|
|
@@ -522,5 +528,4 @@ bound-lock/1 at=witness:publication-samples by=target form=alphabet measure=id n
|
|
|
522
528
|
bound-lock/1 at=witness:publish-native-walk-contract by=target form=alphabet measure=id needs=docs/contracts/view-walk.md role=demands scope=view/contract-walk shape=docs/contracts/view-walk.md value=text@3
|
|
523
529
|
bound-lock/1 at=witness:reference-port-native-quartet by=target form=alphabet measure=id needs=docs/contracts/reference-port.md role=demands scope=view/reference-port-contract shape=docs/contracts/reference-port.md value=text@3
|
|
524
530
|
bound-lock/1 at=witness:reference-port-native-quartet by=target form=alphabet measure=reads role=writes scope=region/reference-port-contract value=prose/en/files/reference-port
|
|
525
|
-
bound-lock/1 at=witness:retained-owner-sdk020-candidate by=target form=alphabet measure=id role=writes scope=sources/topos value=https://registry.npmjs.org/@lapxo/topos/-/topos-0.2.0.tgz
|
|
526
531
|
bound-lock/1 at=witness:source-snapshot-reproduces-handed-implementation by=target form=alphabet measure=coordinates role=reads scope=region/source value=dist/**/*.js
|
package/dist/cli/owner.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bootstrapAnchor } from "../fold/bootstrap-anchor.js";
|
|
1
2
|
import { committedLocalActs } from "../host/ports/local-act.js";
|
|
2
3
|
import { fileURLToPath } from 'node:url';
|
|
3
4
|
import { ingressReceipts } from "../host/ports/ingress.js";
|
|
@@ -106,7 +107,7 @@ export function renderedLock(root, store, told = []) {
|
|
|
106
107
|
const byLock = rendered.get(lockLines(store)) ?? rendered.set(lockLines(store), new Map()).get(lockLines(store));
|
|
107
108
|
return byLock.get(told) ?? byLock.set(told, render()).get(told);
|
|
108
109
|
}
|
|
109
|
-
const anchor =
|
|
110
|
+
const anchor = JSON.stringify(bootstrapAnchor(root) ?? null);
|
|
110
111
|
const judged = ledgerLines(store, 'judge');
|
|
111
112
|
const key = `lock ${fullDigest(store, [instrumentDigest(store, fileURLToPath(import.meta.url), [], root), new Date().toISOString().slice(0, 10), anchor, `${judged.length} ${judged.at(-1) ?? ''}`, ...owned])}`;
|
|
112
113
|
const held = memoized(store, key, () => {
|
package/dist/cli/place.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { refreshRetainedJudgment } from "./retained-judgment.js";
|
|
1
2
|
import { timing } from "../host/timing.js";
|
|
2
3
|
import { attestationObservations } from "../fold/evidence.js";
|
|
3
4
|
import { parse as parseEvidenceFields } from '@lapxo/topos/wire';
|
|
@@ -11,7 +12,7 @@ import { meets, instrumentKept } from "../fold/closed.js";
|
|
|
11
12
|
import { foldPoints, keepFold, keptPlace } from "../fold/kept.js";
|
|
12
13
|
import { openCells } from "../render/open.js";
|
|
13
14
|
import { boundOf, packRegions, regionsNamed, regionsOf, unlikeReplay } from "../fold/region.js";
|
|
14
|
-
import { answersElsewhere, foldCeilings } from "../fold/ceilings.js";
|
|
15
|
+
import { answersElsewhere, foldCeilings, ceilingSummary } from "../fold/ceilings.js";
|
|
15
16
|
import { keyOf, keyFor, lockLines, lockStanding } from "../fold/keys.js";
|
|
16
17
|
import { wordFrom, wordOf, wordOn } from "../fold/wire.js";
|
|
17
18
|
import { bytesDigest, instrumentOf, signaturesOf } from "../fold/digests.js";
|
|
@@ -21,7 +22,7 @@ import { classDefaults, kindsOf, placesIn, spoken } from "../fold/places.js";
|
|
|
21
22
|
import { isCeiling } from "../fold/configures.js";
|
|
22
23
|
import { observedClaims, placedReadings } from "../fold/observed.js";
|
|
23
24
|
import { capsuleReadingsOver, currentReceiptObservations, retiredReceiptHistory } from "../observe/regions.js";
|
|
24
|
-
import { costReadings, ownReadings } from "../fold/own.js";
|
|
25
|
+
import { costReadings, ownReadings, currentActReadings } from "../fold/own.js";
|
|
25
26
|
import { paidOf } from "../fold/paid.js";
|
|
26
27
|
import { rolesOf } from "../fold/roles.js";
|
|
27
28
|
import { secondHead } from "../fold/second.js";
|
|
@@ -45,12 +46,6 @@ const costsOf = (store) => ledgerLines(store, 'take').filter((line) => fieldOf(l
|
|
|
45
46
|
function effectStates(_store) {
|
|
46
47
|
return 'none';
|
|
47
48
|
}
|
|
48
|
-
function listed(misses) {
|
|
49
|
-
const by = new Map();
|
|
50
|
-
for (const o of misses)
|
|
51
|
-
by.set(o.ceiling, [...(by.get(o.ceiling) ?? []), o.question === o.ceiling ? o.got : `${o.question}=${o.got}`]);
|
|
52
|
-
return [...by].map(([scope, got]) => `${scope} · ${got.length > 4 ? `${got.slice(0, 4).join(' ')} +${got.length - 4}` : got.join(' ')}`);
|
|
53
|
-
}
|
|
54
49
|
/**
|
|
55
50
|
* The fold of a place: the standing lock and what readers saw, narrowed to the place when one is named. A demand is the
|
|
56
51
|
* place's when every place it asks about lies there; a SHORT on a question also read outside it is not the place's to
|
|
@@ -170,7 +165,7 @@ export function coneOf(root, entry, ceilings, descent) {
|
|
|
170
165
|
if (meets(root, store, '') && instrumentKept(store) === instrumentOf(store, entry, standing, root, ownLock())) {
|
|
171
166
|
const held = keptPlace(store);
|
|
172
167
|
if (held !== undefined)
|
|
173
|
-
return { standing, observed: held.observed, own: held.own, kept: true };
|
|
168
|
+
return { standing, observed: held.observed, own: { ...held.own, ...currentActReadings() }, kept: true };
|
|
174
169
|
}
|
|
175
170
|
const named = regionsNamed(standing);
|
|
176
171
|
const reach = descent !== undefined && descent.length ? [...descent] : [...new Set(ceilings.map((line) => boundOf(named, line).region))];
|
|
@@ -199,7 +194,7 @@ export function foldPlace(root, entry, under, look = true, given) {
|
|
|
199
194
|
const prior = keptPlace(store, under, instrumentOf(store, entry, standingOf(root).standing, root, ownLock()));
|
|
200
195
|
if (prior !== undefined) {
|
|
201
196
|
process.stderr.write(`CLOSED ${under || '.'} · digest ${digestMs} ms\n`);
|
|
202
|
-
return
|
|
197
|
+
return refreshRetainedJudgment(prior, [...prior.standing.filter((line) => isCeiling(line) && !(under && fieldOf(line, 'measure') === 'unread')), ...ownCeilings(under)]);
|
|
203
198
|
}
|
|
204
199
|
}
|
|
205
200
|
const { standing, lock: attested, rendered, owned } = given?.standing ?? standingOf(root, under);
|
|
@@ -244,14 +239,7 @@ export function foldPlace(root, entry, under, look = true, given) {
|
|
|
244
239
|
history: live.history.filter((line) => fieldOf(line, 'needs').split('|').filter(Boolean).some(inside)),
|
|
245
240
|
observed,
|
|
246
241
|
receiptHistory: retiredReceiptHistory({ root, store, ...(under ? { under } : {}), standing, observed: read }),
|
|
247
|
-
ceilings:
|
|
248
|
-
read: folded.read.length,
|
|
249
|
-
total: ceilings.length,
|
|
250
|
-
unread: folded.unread.map((line) => fieldOf(line, 'scope')),
|
|
251
|
-
vacuous: folded.vacuous.map((line) => fieldOf(line, 'scope')),
|
|
252
|
-
short: listed(folded.over.filter((o) => o.side === 'short' && !shared.has(o.question))),
|
|
253
|
-
over: listed(folded.over.filter((o) => o.side === 'over')),
|
|
254
|
-
},
|
|
242
|
+
ceilings: ceilingSummary(folded, ceilings.length, shared),
|
|
255
243
|
orphans,
|
|
256
244
|
lock,
|
|
257
245
|
signed: signedByKey(store, standing, everywhere),
|
|
@@ -284,14 +272,7 @@ export function foldPlace(root, entry, under, look = true, given) {
|
|
|
284
272
|
release: releasePolicy({ standing: policyStanding, demands, paid: finalPaid, ceilings, readings: again, faults, verdicts: attestationObservations(policyStanding.map(line => { const r = parseEvidenceFields(line); return r.kind === 'fact' ? r.value.fields : {}; }), second), snapshot: { fold: taken, instrument: self } }),
|
|
285
273
|
missing: owed,
|
|
286
274
|
own: { ...place.own, ...docs },
|
|
287
|
-
ceilings:
|
|
288
|
-
...place.ceilings,
|
|
289
|
-
read: again.read.length,
|
|
290
|
-
unread: again.unread.map((line) => fieldOf(line, 'scope')),
|
|
291
|
-
vacuous: again.vacuous.map((line) => fieldOf(line, 'scope')),
|
|
292
|
-
short: listed(again.over.filter((o) => o.side === 'short' && !shared.has(o.question))),
|
|
293
|
-
over: listed(again.over.filter((o) => o.side === 'over')),
|
|
294
|
-
},
|
|
275
|
+
ceilings: ceilingSummary(again, ceilings.length, shared),
|
|
295
276
|
};
|
|
296
277
|
if (folder !== undefined && meets(root, store, under ?? '', true, whole.observed))
|
|
297
278
|
took('keep', () => keepFold(store, taken, whole, points, self));
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { foldCeilings, ceilingSummary } from "../fold/ceilings.js";
|
|
2
|
+
import { currentActReadings } from "../fold/own.js";
|
|
3
|
+
import { placedReadings } from "../fold/observed.js";
|
|
4
|
+
import { placesIn } from "../fold/places.js";
|
|
5
|
+
import { releasePolicy, releaseFaults } from "../fold/release-policy.js";
|
|
6
|
+
import { attestationObservations } from "../fold/evidence.js";
|
|
7
|
+
import { parse } from '@lapxo/topos/wire';
|
|
8
|
+
import { point, region, within } from '@lapxo/obligations/field';
|
|
9
|
+
/** A verified semantic fold can be reused. Its previous act's measurements cannot.
|
|
10
|
+
* Keep history intact and judge current measurements with the ordinary interpreters.
|
|
11
|
+
*/
|
|
12
|
+
export function refreshRetainedJudgment(prior, ceilings, current = currentActReadings(prior.under)) {
|
|
13
|
+
const own = { ...prior.own, ...current };
|
|
14
|
+
const readings = foldCeilings({ standing: prior.standing, ceilings, observed: prior.observed,
|
|
15
|
+
own, epoch: prior.epoch, ...(prior.under ? { under: prior.under, places: new Set(placesIn(prior.root)) } : {}) });
|
|
16
|
+
const standing = prior.standing.filter(line => !prior.grey.includes(line) && !prior.refused.includes(line));
|
|
17
|
+
const shared = new Set(prior.under ? placedReadings(prior.observed)
|
|
18
|
+
.filter(reading => !within(point(reading.place.replace(/\/\*$/, '')), region(prior.under)))
|
|
19
|
+
.map(reading => reading.question) : []);
|
|
20
|
+
return { ...prior, kept: true, own, ceilings: ceilingSummary(readings, ceilings.length, shared),
|
|
21
|
+
release: releasePolicy({ standing, demands: prior.demands, paid: prior.paid, ceilings, readings,
|
|
22
|
+
faults: releaseFaults(prior),
|
|
23
|
+
verdicts: attestationObservations(standing.map(line => { const got = parse(line); return got.kind === 'fact' ? got.value.fields : {}; }), prior.second),
|
|
24
|
+
snapshot: { fold: prior.key, instrument: prior.instrument } }) };
|
|
25
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { readFileSync } from 'node:fs';
|
|
1
|
+
import { bootstrapAnchor } from "./bootstrap-anchor.js";
|
|
3
2
|
import { rootLedgerLines, storeOf } from "../land/ledger.js";
|
|
4
|
-
import { fieldOf, isConfig
|
|
3
|
+
import { fieldOf, isConfig } from "./claims.js";
|
|
5
4
|
/** Local admission history only. Foreign ingress is evidence, never coverage.
|
|
6
5
|
* The clock cutoff is meaningful for configuration; object clocks stay intact. */
|
|
7
6
|
export function admissionHistoryAt(root, epoch) {
|
|
@@ -9,14 +8,10 @@ export function admissionHistoryAt(root, epoch) {
|
|
|
9
8
|
return [...new Set(rootLedgerLines(store))]
|
|
10
9
|
.filter(line => fieldOf(line, 'sig') !== '' && (!isConfig(line) || Number(fieldOf(line, 'epoch')) <= epoch));
|
|
11
10
|
}
|
|
12
|
-
/** The
|
|
11
|
+
/** The original local bootstrap, never today's key selection. */
|
|
13
12
|
export function admissionAnchor(root) {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
const anchors = Object.values(keys);
|
|
17
|
-
if (anchors.length !== 1 || !anchors[0]?.publicKey || !anchors[0].coverage.length)
|
|
13
|
+
const anchor = bootstrapAnchor(root);
|
|
14
|
+
if (!anchor)
|
|
18
15
|
throw Error('REFUSE·act historical admission requires one bootstrap anchor');
|
|
19
|
-
|
|
20
|
-
return { id: anchor.id, keyClass: 'authorize', publicKey: anchor.publicKey, coverage: anchor.coverage,
|
|
21
|
-
depth: { lo: 1, hi: 16 }, admittedBy: [] };
|
|
16
|
+
return { id: anchor.id, keyClass: 'authorize', publicKey: anchor.publicKey, coverage: anchor.coverage, depth: { lo: 1, hi: 16 }, admittedBy: [] };
|
|
22
17
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
3
|
+
import { storeOf } from "../land/ledger.js";
|
|
4
|
+
/** Read the existing place-local root of trust. Names and current claims select no authority. */
|
|
5
|
+
export function bootstrapAnchor(root) {
|
|
6
|
+
const store = storeOf(root);
|
|
7
|
+
const files = existsSync(store) ? readdirSync(store).filter(name => name.endsWith('.keys')).sort() : [];
|
|
8
|
+
if (!files.length)
|
|
9
|
+
return undefined;
|
|
10
|
+
const candidates = files.map(name => {
|
|
11
|
+
let keys;
|
|
12
|
+
try {
|
|
13
|
+
keys = JSON.parse(readFileSync(join(store, name), 'utf8'));
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
throw Error('REFUSE·act bootstrap anchor is unreadable');
|
|
17
|
+
}
|
|
18
|
+
const anchors = Object.values(keys ?? {}), anchor = anchors[0];
|
|
19
|
+
if (anchors.length !== 1 || !anchor || typeof anchor.id !== 'string' || !anchor.id || typeof anchor.publicKey !== 'string' || !anchor.publicKey || !Array.isArray(anchor.coverage) || !anchor.coverage.length || anchor.coverage.some(scope => typeof scope !== 'string' || !scope))
|
|
20
|
+
throw Error('REFUSE·act historical admission requires one bootstrap anchor');
|
|
21
|
+
return anchor;
|
|
22
|
+
});
|
|
23
|
+
const identities = new Set(candidates.map(anchor => JSON.stringify([anchor.id, anchor.publicKey, [...new Set(anchor.coverage)].sort()])));
|
|
24
|
+
if (identities.size !== 1)
|
|
25
|
+
throw Error('REFUSE·act conflicting bootstrap anchors');
|
|
26
|
+
const anchor = candidates[0];
|
|
27
|
+
return { id: anchor.id, publicKey: anchor.publicKey, coverage: anchor.coverage };
|
|
28
|
+
}
|
package/dist/fold/ceilings.js
CHANGED
|
@@ -127,3 +127,16 @@ export function foldCeilings(input) {
|
|
|
127
127
|
readings: said,
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
|
+
function listed(misses) {
|
|
131
|
+
const by = new Map();
|
|
132
|
+
for (const o of misses)
|
|
133
|
+
by.set(o.ceiling, [...(by.get(o.ceiling) ?? []), o.question === o.ceiling ? o.got : `${o.question}=${o.got}`]);
|
|
134
|
+
return [...by].map(([scope, got]) => `${scope} · ${got.length > 4 ? `${got.slice(0, 4).join(' ')} +${got.length - 4}` : got.join(' ')}`);
|
|
135
|
+
}
|
|
136
|
+
/** One summary for fresh and retained judgments over the same declared bounds. */
|
|
137
|
+
export function ceilingSummary(fold, total, shared = new Set()) {
|
|
138
|
+
return { read: fold.read.length, total, unread: fold.unread.map(line => fieldOf(line, 'scope')),
|
|
139
|
+
vacuous: fold.vacuous.map(line => fieldOf(line, 'scope')),
|
|
140
|
+
short: listed(fold.over.filter(one => one.side === 'short' && !shared.has(one.question))),
|
|
141
|
+
over: listed(fold.over.filter(one => one.side === 'over')) };
|
|
142
|
+
}
|
package/dist/fold/own.js
CHANGED
|
@@ -27,6 +27,12 @@ import { writtenIn } from "./signed.js";
|
|
|
27
27
|
import { laidDiffers } from "./laid.js";
|
|
28
28
|
import { heldBytes } from "../land/held.js";
|
|
29
29
|
import { capsuleAt, placesIn, worldAt } from "./places.js";
|
|
30
|
+
/** Measurements of this invocation; never evidence of an earlier kept fold. */
|
|
31
|
+
export function currentActReadings(under) {
|
|
32
|
+
const receipts = receiptsSeen();
|
|
33
|
+
return placeOnly({ idle: idleCount(), s: actSeconds(), 'walk-read': receipts.count, 'walk-ms': receipts.ms,
|
|
34
|
+
'kept-folds-read-under-another-instrument': foldsElsewhere() }, under);
|
|
35
|
+
}
|
|
30
36
|
const entered = { foreign: 0 };
|
|
31
37
|
/** Host and instrument measurements. Domain contracts require their selected readers; missing readings are not fabricated zeroes. */
|
|
32
38
|
function shipped(root, store, standing, under) {
|
|
@@ -193,12 +199,8 @@ export function ownReadings(input) {
|
|
|
193
199
|
...Object.fromEntries(standing.filter((line) => isCeiling(line) && (fieldOf(line, 'measure') === 'reader-modules' || fieldOf(line, 'scope').split('/').pop() === 'reader-modules'))
|
|
194
200
|
.flatMap((line) => ((place) => place === undefined ? [] : [[fieldOf(line, 'scope'), tree(() => exporting(observed, `${place}/`, ['observe', 'run']))]])(fieldOf(line, 'scope').split('/').find((step) => capsuleAt(root, step))))),
|
|
195
201
|
...ownFrom(ceilingsNamed(standing, 'world-lines-outside-their-capsule').find((line) => fieldOf(line, 'form') === 'interval'), 'world-lines-outside-their-capsule', tree(() => outsideTheirCapsule(root, standing, standing).length)),
|
|
196
|
-
|
|
197
|
-
s: actSeconds(),
|
|
202
|
+
...currentActReadings(),
|
|
198
203
|
'cli-verbs': VERB_NAMES.length,
|
|
199
|
-
'walk-read': receiptsSeen().count,
|
|
200
|
-
'walk-ms': receiptsSeen().ms,
|
|
201
|
-
'kept-folds-read-under-another-instrument': tree(() => foldsElsewhere()),
|
|
202
204
|
'accepts-that-refolded': tree(() => counted(store, standing, 'beat/accept', 'folded')),
|
|
203
205
|
...(keyOf(store, 'attest') === undefined ? {} : { [`${keyOf(store, 'attest')}-ms`]: tree(() => attestBeat(store, standing)) }),
|
|
204
206
|
ship: took('ship', () => shipped(root, store, standing, under)),
|
package/dist/fold/signers.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { bootstrapAnchor } from "./bootstrap-anchor.js";
|
|
2
2
|
import { authorityOf, isKeyClaim, signersOf } from '@lapxo/topos/wire';
|
|
3
3
|
import { verifiesFields } from "../land/sign.js";
|
|
4
|
-
import { fieldOf,
|
|
4
|
+
import { fieldOf, parsedLine as parse } from "./claims.js";
|
|
5
5
|
import { keyFor, lockStanding } from "./keys.js";
|
|
6
|
-
import { storeRoot } from "../host/ports/store.js";
|
|
7
6
|
import { storeOf } from "../land/ledger.js";
|
|
8
|
-
import { observeText } from "../observe/files.js";
|
|
9
7
|
/** A lock line about the signers: the authority fold reads it. */
|
|
10
8
|
export function isSignerLock(line) {
|
|
11
9
|
const got = parse(line);
|
|
@@ -38,11 +36,9 @@ export function writerFor(standing, kind) {
|
|
|
38
36
|
return undefined;
|
|
39
37
|
}
|
|
40
38
|
export function publicKeyOf(root, keyId) {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (anchored !== undefined)
|
|
45
|
-
return anchored;
|
|
39
|
+
const anchor = bootstrapAnchor(root);
|
|
40
|
+
if (anchor?.id === keyId)
|
|
41
|
+
return anchor.publicKey;
|
|
46
42
|
const said = lockStanding(storeOf(root))
|
|
47
43
|
.find((line) => fieldOf(line, 'scope') === `keys/${keyId}` && fieldOf(line, 'measure') === 'public-key' && fieldOf(line, 'value') !== 'withdraw');
|
|
48
44
|
return said === undefined ? undefined : fieldOf(said, 'value');
|