@lapxo/bound 0.2.3 → 0.2.5
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/CITATION.cff +19 -0
- package/TARGET.bound +95 -39
- package/dist/cli/accept.js +72 -558
- package/dist/cli/act-result.js +3 -103
- package/dist/cli/args.js +3 -44
- package/dist/cli/custodian.js +2 -29
- package/dist/cli/host.js +4 -32
- package/dist/cli/names.js +1 -12
- package/dist/cli/native-descendant.js +1 -19
- package/dist/cli/native.js +3 -60
- package/dist/cli/observe.js +1 -13
- package/dist/cli/owner.js +3 -139
- package/dist/cli/pass.js +21 -321
- package/dist/cli/place.js +6 -281
- package/dist/cli/release-result.js +3 -80
- package/dist/cli/retained-judgment.js +1 -25
- package/dist/cli/standing-result.js +4 -21
- package/dist/cli/takes.js +10 -111
- package/dist/cli/verb.d.ts +1 -2
- package/dist/cli/verb.js +83 -683
- package/dist/engine/computation.js +2 -0
- package/dist/engine/conformance.js +4 -0
- package/dist/engine/encoding.js +1 -2
- package/dist/engine/index.d.ts +1 -13
- package/dist/engine/index.js +2 -11
- package/dist/engine/object.js +1 -38
- package/dist/engine/ports.js +2 -103
- package/dist/fold/admission-history.js +1 -17
- package/dist/fold/bootstrap-anchor.js +1 -28
- package/dist/fold/ceilings.js +1 -142
- package/dist/fold/claims.js +2 -131
- package/dist/fold/closed.js +24 -234
- package/dist/fold/configures.js +1 -25
- package/dist/fold/digests.js +10 -226
- package/dist/fold/evidence.js +1 -22
- package/dist/fold/fold-worker.js +1 -13
- package/dist/fold/kept.js +12 -173
- package/dist/fold/keys.js +3 -91
- package/dist/fold/laid.js +3 -90
- package/dist/fold/nos.js +1 -48
- package/dist/fold/object.js +1 -2
- package/dist/fold/observed.js +27 -534
- package/dist/fold/opened.js +1 -33
- package/dist/fold/own.js +3 -217
- package/dist/fold/paid.js +1 -92
- package/dist/fold/place-inputs.js +1 -70
- package/dist/fold/places.js +3 -100
- package/dist/fold/rank.js +1 -9
- package/dist/fold/reach.js +1 -83
- package/dist/fold/readers.js +6 -142
- package/dist/fold/receipts.js +1 -47
- package/dist/fold/region-declarations.js +1 -13
- package/dist/fold/region.js +8 -286
- package/dist/fold/release-policy.js +1 -101
- package/dist/fold/resolved.js +6 -145
- package/dist/fold/roles.js +2 -59
- package/dist/fold/second.js +4 -71
- package/dist/fold/shards.js +12 -100
- package/dist/fold/signed.js +3 -81
- package/dist/fold/signers.js +1 -54
- package/dist/fold/stranger.js +6 -24
- package/dist/fold/views.js +1 -66
- package/dist/fold/wire.js +1 -46
- package/dist/fold/zoom.js +3 -81
- package/dist/host/act-cost.js +1 -25
- package/dist/host/adapters/keys/ed25519.js +1 -30
- package/dist/host/adapters/modules/javascript.js +1 -50
- package/dist/host/adapters/transport/http.js +1 -28
- package/dist/host/admitted-place.js +1 -63
- package/dist/host/archive.js +1 -152
- package/dist/host/call-context.js +1 -0
- package/dist/host/capsule-process.js +2 -61
- package/dist/host/capsule.js +9 -168
- package/dist/host/cell-receipts.js +12 -128
- package/dist/host/commit-result.js +1 -0
- package/dist/host/content-needed.js +1 -8
- package/dist/host/content-store.js +1 -31
- package/dist/host/contextual-place.js +2 -77
- package/dist/host/digest.js +2 -15
- package/dist/host/hash.js +1 -9
- package/dist/host/host-controls.js +1 -0
- package/dist/host/in-process-act.js +3 -0
- package/dist/host/in-process-context.js +3 -0
- package/dist/host/in-process-root.js +6 -0
- package/dist/host/in-process.js +4 -0
- package/dist/host/index.d.ts +1 -0
- package/dist/host/index.js +1 -0
- package/dist/host/io.js +1 -11
- package/dist/host/lifetime.js +1 -79
- package/dist/host/located.js +6 -105
- package/dist/host/native/bounded-file.js +1 -32
- package/dist/host/native/command.js +1 -91
- package/dist/host/native/control-bridge-worker.js +2 -88
- package/dist/host/native/control-bridge.js +1 -110
- package/dist/host/native/control-selection.js +1 -32
- package/dist/host/native/custody.js +1 -91
- package/dist/host/native/deadline.js +1 -28
- package/dist/host/native/descendants.js +1 -528
- package/dist/host/native/generated-custodian.js +5 -267
- package/dist/host/native/generated.js +1 -379
- package/dist/host/native/image.js +1 -45
- package/dist/host/native/jobs.js +2 -148
- package/dist/host/native/loader.js +1 -269
- package/dist/host/native/materialize.js +1 -175
- package/dist/host/native/module-closure.js +1 -130
- package/dist/host/native/module-delivery.d.ts +1 -62
- package/dist/host/native/module-delivery.js +1 -151
- package/dist/host/native/module-syntax.js +1 -69
- package/dist/host/native/native-binary.js +1 -115
- package/dist/host/native/native-program.js +1 -72
- package/dist/host/native/node-jobs.js +3 -187
- package/dist/host/native/node-launch.js +1 -159
- package/dist/host/native/preload.js +1 -45
- package/dist/host/native/reading.js +1 -249
- package/dist/host/native/receipt-environment.js +1 -41
- package/dist/host/native/references.js +1 -30
- package/dist/host/native/root.js +1 -37
- package/dist/host/native/route.js +1 -216
- package/dist/host/native/runtime.js +1 -9
- package/dist/host/native-reader-context.js +1 -8
- package/dist/host/native-receiver.js +1 -0
- package/dist/host/objects.js +1 -38
- package/dist/host/order.js +1 -2
- package/dist/host/place-act-transaction.js +4 -0
- package/dist/host/place-clock-selection.js +5 -124
- package/dist/host/ports/ingress.js +2 -57
- package/dist/host/ports/local-act.js +5 -172
- package/dist/host/ports/place-act.js +1 -169
- package/dist/host/ports/publication.js +1 -56
- package/dist/host/ports/signing.js +1 -74
- package/dist/host/ports/store.js +1 -18
- package/dist/host/ports/transport.js +1 -48
- package/dist/host/process-lifetime.js +1 -17
- package/dist/host/provide.js +1 -183
- package/dist/host/read-only.js +1 -9
- package/dist/host/reading-closures.js +7 -227
- package/dist/host/reading-context.js +1 -53
- package/dist/host/reading-identity-types.js +0 -0
- package/dist/host/reading-identity.js +3 -0
- package/dist/host/reading-preparation.js +6 -0
- package/dist/host/reference-authenticated.d.ts +1 -40
- package/dist/host/reference-authenticated.js +3 -100
- package/dist/host/reference-contracts.js +1 -6
- package/dist/host/reference-export.js +6 -81
- package/dist/host/reference-native-api.d.ts +1 -3
- package/dist/host/reference-native-api.js +1 -3
- package/dist/host/reference-native.js +1 -74
- package/dist/host/reference-profile.js +1 -63
- package/dist/host/reference-standing.js +2 -18
- package/dist/host/reference.js +1 -24
- package/dist/host/refusals.js +2 -43
- package/dist/host/release.js +4 -256
- package/dist/host/root-clock-source.js +1 -305
- package/dist/host/selected-capsules.js +1 -50
- package/dist/host/selected-topos.js +1 -80
- package/dist/host/signature-era.js +1 -0
- package/dist/host/signing.js +2 -48
- package/dist/host/source-content.js +2 -110
- package/dist/host/standing-carrier.js +1 -0
- package/dist/host/standing-projection.js +1 -0
- package/dist/host/timing.js +1 -7
- package/dist/host/walk.js +20 -193
- package/dist/judge/late.js +1 -33
- package/dist/judge/take.js +2 -75
- package/dist/judge/widening.js +1 -25
- package/dist/land/act.js +8 -302
- package/dist/land/alias.js +1 -41
- package/dist/land/held.js +1 -23
- package/dist/land/inert.js +1 -33
- package/dist/land/leaving.js +1 -55
- package/dist/land/ledger.js +7 -188
- package/dist/land/owned.js +4 -66
- package/dist/land/sign.js +1 -53
- package/dist/land/standing-pin.js +1 -49
- package/dist/land/vouched.js +1 -112
- package/dist/land/withdraw.js +1 -24
- package/dist/observe/files.js +1 -88
- package/dist/observe/identity.js +1 -61
- package/dist/observe/match.js +1 -8
- package/dist/observe/regions.js +7 -306
- package/dist/observe/run.js +2 -40
- package/dist/observe/runner.js +4 -93
- package/dist/public-types.d.ts +1114 -0
- package/dist/render/capsule.js +1 -30
- package/dist/render/field.js +1 -40
- package/dist/render/names.js +1 -4
- package/dist/render/open.js +1 -61
- package/dist/render/page.js +1 -7
- package/dist/render/receipts.js +1 -47
- package/dist/render/shape.js +1 -74
- package/dist/render/target.js +4 -52
- package/dist/render/view.js +7 -197
- package/dist/vendor/50086958553b9376d600583f7dff354196bfeb41170fc6d1482ca7bea7c493e2.LICENSE +21 -0
- package/dist/vendor/b3e938d28f88a1851af303a40c749e12ebd5a686daac4f0b343b5cdd2e040419.LICENSE +21 -0
- package/dist/vendor/bundle.json +1 -0
- package/dist/vendor/library11.js +1 -0
- package/dist/vendor/object-provider.js +42 -0
- package/dist/vendor/runtime.js +38 -0
- package/dist/vendor/sources.json +1 -0
- package/dist/wasm/adapter.d.ts +1 -51
- package/dist/wasm/adapter.js +1 -180
- package/dist/wasm/node-worker.js +1 -13
- package/dist/wasm/object.js +1 -76
- package/dist/wasm/worker.js +1 -7
- package/docs/contracts/closure-delivery.md +1 -1
- package/docs/contracts/closure-delivery.publication.json +1 -1
- package/docs/contracts/conformance.json +142 -0
- package/docs/contracts/determinism.bound +9 -0
- package/docs/contracts/engine-object-projection.publication.json +1 -1
- package/docs/contracts/engine.md +21 -1
- package/docs/contracts/native-host.md +21 -0
- package/docs/contracts/native-host.publication.json +25 -0
- package/docs/contracts/native-publication.inventory.json +3 -1
- package/docs/contracts/optional-wasm-adapter.publication.json +1 -1
- package/docs/contracts/publication.inventory.json +29 -0
- package/docs/contracts/reading-identity.md +37 -0
- package/docs/contracts/reading-identity.publication.json +25 -0
- package/docs/contracts/refusals.bound +51 -0
- package/docs/contracts/refusals.md +18 -3
- package/docs/contracts/refusals.publication.json +2 -2
- package/docs/contracts/views.md +8 -0
- package/docs/guide.md +10 -0
- package/docs/reference.md +40 -0
- package/docs/why.md +109 -0
- package/package.json +37 -18
- package/receipts.bound +11675 -9725
- package/samples/native-host/no.json +10 -0
- package/samples/native-host/yes.json +20 -0
- package/samples/reading-identity/no.json +20 -0
- package/samples/reading-identity/yes.json +46 -0
- package/vectors/native/native-host.vector.json +62 -0
- package/vectors/native/reading-identity.vector.json +101 -0
- package/vectors/native/refusals.vector.json +104 -0
- package/vendor/syntax/LICENSE.md +7 -0
- package/vendor/syntax/parser.js +1 -0
- package/dist/engine/object.d.ts +0 -17
- package/dist/engine/ports.d.ts +0 -32
- package/dist/host/native/module-closure.d.ts +0 -35
- package/dist/host/reference-export.d.ts +0 -33
- package/dist/host/reference-native.d.ts +0 -30
- package/dist/host/reference-profile.d.ts +0 -23
- package/dist/host/refusals.d.ts +0 -14
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"profile": "quartet-process@1",
|
|
3
|
+
"scope": "contract/published",
|
|
4
|
+
"surface": [
|
|
5
|
+
"contract/published/attest-evidence-view",
|
|
6
|
+
"contract/published/cli/fold",
|
|
7
|
+
"contract/published/cli/land",
|
|
8
|
+
"contract/published/cli/sign",
|
|
9
|
+
"contract/published/pipeline/archive",
|
|
10
|
+
"contract/published/typed-object-sample",
|
|
11
|
+
"contract/published/view/card",
|
|
12
|
+
"contract/published/view/citation-file",
|
|
13
|
+
"contract/published/view/explanation",
|
|
14
|
+
"contract/published/view/guide",
|
|
15
|
+
"contract/published/view/help",
|
|
16
|
+
"contract/published/view/lines",
|
|
17
|
+
"contract/published/view/manifest-render",
|
|
18
|
+
"contract/published/view/programs",
|
|
19
|
+
"contract/published/view/readme-historical",
|
|
20
|
+
"contract/published/view/receipts",
|
|
21
|
+
"contract/published/view/reference",
|
|
22
|
+
"contract/published/view/release-workflow-render",
|
|
23
|
+
"contract/published/view/tsconfig",
|
|
24
|
+
"contract/published/view/usage-profile",
|
|
25
|
+
"contract/published/view/walk",
|
|
26
|
+
"contract/published/view/why"
|
|
27
|
+
],
|
|
28
|
+
"note": "Explicit public-surface inventory. A selected coordinate without a descriptor is unpaid. Outstanding capability demands are not advertised implementations."
|
|
29
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Public reading identity
|
|
2
|
+
|
|
3
|
+
`prepareNativeReadingIdentity` from `@lapxo/bound/host` prepares the adopted input-projection readings of an authenticated place. `fold --as reading-identity` calls that same operation. This contract covers adopted input-projection readings; other reading forms refuse.
|
|
4
|
+
|
|
5
|
+
The receiver supplies the place, explicit native instrument, optional adopted reader selector, finite resource limits and cancellation signal. The place must declare one interval `0..N` for each of `reading-identity/bytes`, `/files`, `/readings` and `/probes`. Caller limits can reduce these bounds. They count handed UTF-8 input bytes, handed files, projected reading plans and input-projection requests across the selected readers; native image, response and execution limits also remain in force. The projection request is a probe, even when its implementation reuses a valid result. It is separate from final reading execution.
|
|
6
|
+
|
|
7
|
+
A fact contains preparations with ready reading identities or named unpaid receipt dependencies. Each ready entry gives its scope, canonical `reading-context@1` and digest. When a verified existing carrier is available it also gives the `reading-receipt@1` digest. A missing physical input produces `needs`; a dependent reading without its predecessor's verified receipt stays open. No complete digest is invented for an unpaid dependency. These names are supplied by the selected world's projection; application region names are not built into Bound.
|
|
8
|
+
|
|
9
|
+
Preparation uses the same projection, dependency order, contextual framing, transitive instrument inputs, policy, effective environment and carrier verification as execution. It can run the declared input projection under its native port. It never runs the final reading, signs, admits an act, renders public receipts or renews a reading receipt. Operational image/cache maintenance is separate. A subsequent execution under identical inputs and context commits the same identity; preparation does not reserve that identity or authorize a future answer.
|
|
10
|
+
|
|
11
|
+
Instrument, implementation, policy, transitive inputs and the actual environment participate under the existing Topos contracts. Current-answer authorization also retains the existing principal, grant, snapshot and freshness checks when that profile is selected. Retained evidence grants no current authority. Environment values are committed by digest, not exposed as secret strings. Receipt identity and typed-content identity remain distinct.
|
|
12
|
+
|
|
13
|
+
Relevant input or dependency changes produce another identity. Unconsumed maintenance does not. Bytes stored under a digest must verify; altered selected bytes or carriers refuse rather than becoming an alternative identity. The existing execution path may recompute an invalid retained answer; public inspection refuses a corrupt carrier. Missing bytes and failed integrity are different outcomes.
|
|
14
|
+
|
|
15
|
+
Refusals are typed data from the public API: `reading-identity/context`, `/budget`, `/selection`, `/projection`, `/integrity`, `/failed`, and the existing `host/context`, `/budget`, `/cancelled`. A non-projection reader is unsupported, not silently executed. Cancellation and handed-input budgets are checked before the projection; native process budgets remain authoritative during execution. Synchronous projection cannot observe a JavaScript abort callback while it occupies the host thread; its declared native timeout still bounds that work.
|
|
16
|
+
|
|
17
|
+
## Quartet
|
|
18
|
+
|
|
19
|
+
The native test forms two unrelated disposable admitted places, counts and catalogue. Counts reads a physical file. Catalogue adds a dependent aggregate. Both use receiver-selected native images and the real CLI; a separate consumer imports the compiled public `/host` export. Preparation leaves final reading receipts absent; execution commits the same identity; subsequent preparation verifies existing receipts without changing the public receipt file. Catalogue's aggregate is open until the leaf receipt exists.
|
|
20
|
+
|
|
21
|
+
The negative places retain a receipt but withdraw the current native grant, and alter the archive bytes under their selected digest. Both refuse. Focused vectors also cover missing physical input, changed dependency, stale handed bytes, cancellation, resource exhaustion and unrelated maintenance. Existing environment, authority and descendant-receipt vectors remain applicable and are reused.
|
|
22
|
+
|
|
23
|
+
Two places on this Mac do not establish another-machine portability. L6 stays pending. This quartet neither admits Root's new reader bindings nor certifies the full 0.2.5 release.
|
|
24
|
+
|
|
25
|
+
## Native lines and evidence
|
|
26
|
+
|
|
27
|
+
`prepareNativeViewIdentity({place, instrument, view, expectedIdentity?})` from `@lapxo/bound/host` prepares the local native `lines` or `evidence` projection. `fold --as reading-identity@lines` and `fold --as reading-identity@evidence` print its identity without the result text. `fold --as reading-identity@lines@<digest>` (or `reading-identity@evidence@<digest>`) returns JSON with `kind`, `view`, `identity` and `text`. The text and identity use the same captured inputs; an obsolete expected identity returns no result. Ordinary views keep their existing output and require no reading-identity budgets.
|
|
28
|
+
|
|
29
|
+
This operation performs configuration authentication and projection, not the region fold, executable readings or source resolution. It takes no Root exclusion and performs no persistent writes. One synchronous committed-journal observation fixes native acts; selected legacy sources are captured by exact bytes and checked again. Changed committed inputs, selected bytes, effective environment or expiration day refuse rather than publishing a mixed result. No lease reserves a later answer: the caller supplies the expected identity when requesting the result.
|
|
30
|
+
|
|
31
|
+
Identity commits the native view, local place, authenticated configuration, selected authority/evidence histories and source bytes (including selected receipt inputs), exact implementation closure and instrument lock, effective runtime/environment, and UTC expiration-policy day. Input names and values are framed; no consumer directory fingerprint is accepted. Unconsumed fold caches, stamp memos and exclusion bookkeeping do not participate. The local execution identity is distinct from portable semantic standing identity.
|
|
32
|
+
|
|
33
|
+
The existing admitted preparation limits remain required for identity requests; inputs and implementation sources count against their byte/file budgets. Preparation does not execute projection probes or final readings. Only unqualified local native lines and a single unshaped native evidence view are supported. Foreign evidence needing an asynchronous transport snapshot and unsupported views refuse by name. No fallback executes their fold.
|
|
34
|
+
|
|
35
|
+
Existing catalog codes apply: `reading-identity/selection` for unsupported selections, `reading-identity/context` for changed or mismatched snapshots, `reading-identity/budget` for missing/exhausted limits, and `reading-identity/failed` for unavailable implementation inputs. Public CLI machine records carry those codes.
|
|
36
|
+
|
|
37
|
+
Seven native vectors cover repeated identity, added evidence, changed configuration, unchanged fold maintenance, distinct places, unsupported selections and identity-to-result binding with a stale refusal. Both unrelated places also answer while a Root writer holds exclusion; complete store comparison verifies no writes. Existing view/landing behavior without identity budgets is retained. These vectors do not establish L6.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"scope": "contract/published/reading-identity",
|
|
3
|
+
"members": [
|
|
4
|
+
{
|
|
5
|
+
"role": "contract",
|
|
6
|
+
"path": "docs/contracts/reading-identity.md",
|
|
7
|
+
"digest": "sha256:0db77ff0553ea92ed4f47f587f1a026a59279c3a4abb00a662eefd5952e6de1c"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"role": "yes",
|
|
11
|
+
"path": "samples/reading-identity/yes.json",
|
|
12
|
+
"digest": "sha256:5b40b3546e99bf7c646a15fc04241400199b6130b5ff35c142d70a4f68bf12fb"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"role": "vector",
|
|
16
|
+
"path": "vectors/native/reading-identity.vector.json",
|
|
17
|
+
"digest": "sha256:42bac03e64bd525398e9843cb8e8a256c46041a0c22e0d6774f523b1b283cb9d"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"role": "no",
|
|
21
|
+
"path": "samples/reading-identity/no.json",
|
|
22
|
+
"digest": "sha256:77b63c1eb80a98e66d38cf357698166b178ae1d344939ec2bcaf74e5a2fd96c4"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -92,3 +92,54 @@ bound-lock/1 at=policy:bound-host-ports by=target form=alphabet measure=next rol
|
|
|
92
92
|
bound-lock/1 at=policy:bound-host-ports by=target form=alphabet measure=code role=writes scope=refusal/host-port/response value=host-port/response
|
|
93
93
|
bound-lock/1 about="A host response has an unsupported shape or shared mutable bytes." at=policy:bound-host-ports by=target form=alphabet measure=class role=writes scope=refusal/host-port/response value=host
|
|
94
94
|
bound-lock/1 at=policy:bound-host-ports by=target form=alphabet measure=next role=writes scope=refusal/host-port/response value=inspect-host-port
|
|
95
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=code role=writes scope=refusal/reading-identity/context value=reading-identity/context
|
|
96
|
+
bound-lock/1 about="The reading lacks its complete declared execution context." at=policy:public-reading-identity by=target form=alphabet measure=class role=writes scope=refusal/reading-identity/context value=interpretation
|
|
97
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=next role=writes scope=refusal/reading-identity/context value=inspect-reading-context
|
|
98
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=code role=writes scope=refusal/reading-identity/budget value=reading-identity/budget
|
|
99
|
+
bound-lock/1 about="The place lacks one finite declared preparation limit." at=policy:public-reading-identity by=target form=alphabet measure=class role=writes scope=refusal/reading-identity/budget value=resource
|
|
100
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=next role=writes scope=refusal/reading-identity/budget value=inspect-resource-lines
|
|
101
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=code role=writes scope=refusal/reading-identity/selection value=reading-identity/selection
|
|
102
|
+
bound-lock/1 about="The requested reader is not adopted by this place." at=policy:public-reading-identity by=target form=alphabet measure=class role=writes scope=refusal/reading-identity/selection value=interpretation
|
|
103
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=next role=writes scope=refusal/reading-identity/selection value=inspect-reader-selection
|
|
104
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=code role=writes scope=refusal/reading-identity/projection value=reading-identity/projection
|
|
105
|
+
bound-lock/1 about="The adopted reader has no supported input projection." at=policy:public-reading-identity by=target form=alphabet measure=class role=writes scope=refusal/reading-identity/projection value=interpretation
|
|
106
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=next role=writes scope=refusal/reading-identity/projection value=declare-input-projection
|
|
107
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=code role=writes scope=refusal/reading-identity/integrity value=reading-identity/integrity
|
|
108
|
+
bound-lock/1 about="Current input or retained carrier bytes differ from their committed bytes." at=policy:public-reading-identity by=target form=alphabet measure=class role=writes scope=refusal/reading-identity/integrity value=input
|
|
109
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=next role=writes scope=refusal/reading-identity/integrity value=resolve-verified-bytes
|
|
110
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=code role=writes scope=refusal/reading-identity/failed value=reading-identity/failed
|
|
111
|
+
bound-lock/1 about="The existing native preparation boundary refused; the diagnostic retains its cause." at=policy:public-reading-identity by=target form=alphabet measure=class role=writes scope=refusal/reading-identity/failed value=operation
|
|
112
|
+
bound-lock/1 at=policy:public-reading-identity by=target form=alphabet measure=next role=writes scope=refusal/reading-identity/failed value=inspect-native-diagnostic
|
|
113
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/engine/input value=engine/input
|
|
114
|
+
bound-lock/1 about="The object byte request is not a supported canonical profile." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/engine/input value=input
|
|
115
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/engine/input value=inspect-request
|
|
116
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/engine/context value=engine/context
|
|
117
|
+
bound-lock/1 about="The receiver-selected context does not admit the requested object history." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/engine/context value=interpretation
|
|
118
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/engine/context value=inspect-context
|
|
119
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/computation/context value=computation/context
|
|
120
|
+
bound-lock/1 about="The question, implementation, policy, input or result does not match the receiver-selected computation context." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/computation/context value=interpretation
|
|
121
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/computation/context value=inspect-context
|
|
122
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/computation/budget value=computation/budget
|
|
123
|
+
bound-lock/1 about="The computation lacks or exceeds its declared byte or execution budget." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/computation/budget value=resource
|
|
124
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/computation/budget value=inspect-resource-lines
|
|
125
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/computation/signature value=computation/signature
|
|
126
|
+
bound-lock/1 about="The computation signature does not verify with the receiver-selected signer." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/computation/signature value=authority
|
|
127
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/computation/signature value=inspect-signer
|
|
128
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/computation/authority value=computation/authority
|
|
129
|
+
bound-lock/1 about="The selected computation signer is absent, retired or outside coverage." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/computation/authority value=authority
|
|
130
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/computation/authority value=inspect-authority
|
|
131
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/conformance/context value=conformance/context
|
|
132
|
+
bound-lock/1 about="The receiver supplied missing or invalid suite, implementation or contract identities." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/conformance/context value=interpretation
|
|
133
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/conformance/context value=inspect-context
|
|
134
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/conformance/budget value=conformance/budget
|
|
135
|
+
bound-lock/1 about="The suite exceeds its declared byte or case budget." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/conformance/budget value=resource
|
|
136
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/conformance/budget value=inspect-resource-lines
|
|
137
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/conformance/coverage value=conformance/coverage
|
|
138
|
+
bound-lock/1 about="The suite omits a required rule or refusal, or names undeclared coverage." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/conformance/coverage value=interpretation
|
|
139
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/conformance/coverage value=complete-suite
|
|
140
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/conformance/integrity value=conformance/integrity
|
|
141
|
+
bound-lock/1 about="The supplied suite bytes do not match the digest chosen by the receiver." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/conformance/integrity value=integrity
|
|
142
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/conformance/integrity value=verify-suite-bytes
|
|
143
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=code role=writes scope=refusal/conformance/suite value=conformance/suite
|
|
144
|
+
bound-lock/1 about="The suite is malformed, empty, duplicated or uses an unsupported byte profile." at=policy:bound/public-operations by=target form=alphabet measure=class role=writes scope=refusal/conformance/suite value=input
|
|
145
|
+
bound-lock/1 at=policy:bound/public-operations by=target form=alphabet measure=next role=writes scope=refusal/conformance/suite value=inspect-suite
|
|
@@ -37,11 +37,26 @@ Source of truth: `refusals.bound` (`bound-refusals@1`), read through the existin
|
|
|
37
37
|
| host-port/failed | host | A declared host callback failed; no successful result is returned. | inspect-host-port |
|
|
38
38
|
| host-port/integrity | integrity | Content bytes differ from the requested SHA-256 identity. | resolve-exact-bytes |
|
|
39
39
|
| host-port/response | host | A host response has an unsupported shape or shared mutable bytes. | inspect-host-port |
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
| reading-identity/context | interpretation | The reading lacks its complete declared execution context. | inspect-reading-context |
|
|
41
|
+
| reading-identity/budget | resource | The place lacks one finite declared preparation limit. | inspect-resource-lines |
|
|
42
|
+
| reading-identity/selection | interpretation | The requested reader is not adopted by this place. | inspect-reader-selection |
|
|
43
|
+
| reading-identity/projection | interpretation | The adopted reader has no supported input projection. | declare-input-projection |
|
|
44
|
+
| reading-identity/integrity | input | Current input or retained carrier bytes differ from their committed bytes. | resolve-verified-bytes |
|
|
45
|
+
| reading-identity/failed | operation | The existing native preparation boundary refused; the diagnostic retains its cause. | inspect-native-diagnostic |
|
|
46
|
+
| engine/input | input | The object byte request is not a supported canonical profile. | inspect-request |
|
|
47
|
+
| engine/context | interpretation | The receiver-selected context does not admit the requested object history. | inspect-context |
|
|
48
|
+
| computation/context | interpretation | The question, implementation, policy, input or result does not match the receiver-selected computation context. | inspect-context |
|
|
49
|
+
| computation/budget | resource | The computation lacks or exceeds its declared byte or execution budget. | inspect-resource-lines |
|
|
50
|
+
| computation/signature | authority | The computation signature does not verify with the receiver-selected signer. | inspect-signer |
|
|
51
|
+
| computation/authority | authority | The selected computation signer is absent, retired or outside coverage. | inspect-authority |
|
|
52
|
+
| conformance/context | interpretation | The receiver supplied missing or invalid suite, implementation or contract identities. | inspect-context |
|
|
53
|
+
| conformance/budget | resource | The suite exceeds its declared byte or case budget. | inspect-resource-lines |
|
|
54
|
+
| conformance/coverage | interpretation | The suite omits a required rule or refusal, or names undeclared coverage. | complete-suite |
|
|
55
|
+
| conformance/integrity | integrity | The supplied suite bytes do not match the digest chosen by the receiver. | verify-suite-bytes |
|
|
56
|
+
| conformance/suite | input | The suite is malformed, empty, duplicated or uses an unsupported byte profile. | inspect-suite |
|
|
42
57
|
|
|
43
58
|
```text
|
|
44
59
|
REFUSALS lines · unique codes · exact metadata · duplicate refused
|
|
45
60
|
```
|
|
46
61
|
|
|
47
|
-
Specific 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.
|
|
62
|
+
Specific 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. Additional public operations may add codes only by changing these versioned contract bytes and their vectors.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
{
|
|
5
5
|
"role": "contract",
|
|
6
6
|
"path": "docs/contracts/refusals.md",
|
|
7
|
-
"digest": "sha256:
|
|
7
|
+
"digest": "sha256:2255340c9bad55a9c6b97542840d0efee0f9cecc9d032a0e810b96e5f891c38e"
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
"role": "yes",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
{
|
|
15
15
|
"role": "vector",
|
|
16
16
|
"path": "vectors/native/refusals.vector.json",
|
|
17
|
-
"digest": "sha256:
|
|
17
|
+
"digest": "sha256:957f2b4a8e97a2dd851c7cdb210579cc9d3ab0822efa9bf18c3a676b92636663"
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"role": "no",
|
package/docs/contracts/views.md
CHANGED
|
@@ -27,3 +27,11 @@ The programs view asks the selected Topos demand-status projection at resolution
|
|
|
27
27
|
# Demand card
|
|
28
28
|
|
|
29
29
|
The 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.
|
|
30
|
+
|
|
31
|
+
## Computation statements
|
|
32
|
+
|
|
33
|
+
`fold --as computation --key <key> [--key-file <host-file>]` computes the existing authenticated object projection. It requires an admitted `view/computation=computation@1`, one digest each for `computation/contract` and `computation/numeric-policy`, and explicit `0..N` limits for `computation/bytes` and `computation/milliseconds`. The key must be current and cover `computation`. No implicit key or delivery approval is used.
|
|
34
|
+
|
|
35
|
+
The CLI uses the same `executeComputation` operation exported by `/engine`. Its signer is the existing host-selected file or command mechanism; the original signed history is not modified. The returned `bound-computation-delivery@1` contains the public context, request bytes, signed statement and result bytes. Relevant environment values are committed as digests. Verification must use an independently chosen context and public key, not trust the supplied context merely because it was delivered.
|
|
36
|
+
|
|
37
|
+
The implementation identity covers the native instrument closure and, when selected, the WASM assets. The selected form standings and their executable closures are transitive inputs. A statement names what ran; its signature authenticates that observation, not mathematical correctness, independence, a Root admission or permission to publish.
|
package/docs/guide.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
## First session
|
|
2
|
+
|
|
3
|
+
1. fold --as readme --check prints SAME when that page's cone did not move.
|
|
4
|
+
2. the digest at zero
|
|
5
|
+
3. fold --as help prints the three verbs and no fourth.
|
|
6
|
+
4. Land the batch with the key that covers it.
|
|
7
|
+
5. Write the line as by=target.
|
|
8
|
+
6. the lines at eight
|
|
9
|
+
7. Preview with fold --as before it lands.
|
|
10
|
+
8. the regions at one
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
**line** — the lock a place is bound by, and the fold that reads it
|
|
2
|
+
|
|
3
|
+
| | |
|
|
4
|
+
|---|---|
|
|
5
|
+
| pin | closure-delivery |
|
|
6
|
+
| pin | ep-closure-reader |
|
|
7
|
+
| pin | native-publication |
|
|
8
|
+
| pin | process-readings |
|
|
9
|
+
| pin | programs |
|
|
10
|
+
| pin | prose-render |
|
|
11
|
+
| pin | publication-additions |
|
|
12
|
+
| pin | publication-readings |
|
|
13
|
+
| pin | published-dependencies |
|
|
14
|
+
| pin | rendering |
|
|
15
|
+
| pin | source-readings |
|
|
16
|
+
| pin | wire |
|
|
17
|
+
|
|
18
|
+
- [closure-delivery](contracts/closure-delivery.md)
|
|
19
|
+
- [archive](contracts/archive.md)
|
|
20
|
+
- [cli](contracts/cli.md)
|
|
21
|
+
- [documents](contracts/documents.md)
|
|
22
|
+
- [engine](contracts/engine.md)
|
|
23
|
+
- [evidence-view](contracts/evidence-view.md)
|
|
24
|
+
- [host-ports](contracts/host-ports.md)
|
|
25
|
+
- [reading-identity](contracts/reading-identity.md)
|
|
26
|
+
- [reference-backend](contracts/reference-backend.md)
|
|
27
|
+
- [reference-export](contracts/reference-export.md)
|
|
28
|
+
- [refusals](contracts/refusals.md)
|
|
29
|
+
- [standing](contracts/standing.md)
|
|
30
|
+
- [typed-object](contracts/typed-object.md)
|
|
31
|
+
- [views](contracts/views.md)
|
|
32
|
+
- [view-walk](contracts/view-walk.md)
|
|
33
|
+
- [why](why.md)
|
|
34
|
+
- [guide](guide.md)
|
|
35
|
+
- [native-host](contracts/native-host.md)
|
|
36
|
+
- [publication](contracts/publication.md)
|
|
37
|
+
- [README](../README.md)
|
|
38
|
+
- [reference](reference.md)
|
|
39
|
+
- [reference-port](contracts/reference-port.md)
|
|
40
|
+
- [usage](usage.md)
|
package/docs/why.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
## How Bound reads a project
|
|
2
|
+
|
|
3
|
+
Bound reads a project's admitted statements and observations through its selected Topos, then renders the declared views and records their inputs in receipts. The example below explains the object; a file-fold alone does not calculate its intervals.
|
|
4
|
+
|
|
5
|
+
## Use Bound in a project
|
|
6
|
+
|
|
7
|
+
From a project with an admitted lock and selected views, inspect its standing, ask for its evidence, then verify the committed outputs:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
npx @lapxo/bound@0.1.8 fold --as lines
|
|
11
|
+
npx @lapxo/bound@0.1.8 fold --as receipts@1
|
|
12
|
+
npx @lapxo/bound@0.1.8 fold --check
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Use this flow to review a project change or check a dependency's declared contract. `--check` verifies existing evidence; it does not execute a missing reading. A file fold names readings and explicitly says that it computed no encounters.
|
|
16
|
+
|
|
17
|
+
Independent 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.
|
|
18
|
+
|
|
19
|
+
A 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.
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## A meeting everyone can understand
|
|
23
|
+
|
|
24
|
+
Ana 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.
|
|
25
|
+
|
|
26
|
+
With 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.
|
|
27
|
+
|
|
28
|
+
The 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.
|
|
29
|
+
|
|
30
|
+
## See how information holds together
|
|
31
|
+
|
|
32
|
+

|
|
33
|
+
|
|
34
|
+
A 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.
|
|
35
|
+
|
|
36
|
+
| State | Meaning |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| REQUIRED | Compatible bounds, fewer than two independent origins. |
|
|
39
|
+
| FREE | Independent origins meet and their encounter fits the bounds. |
|
|
40
|
+
| CONFLICT | Bounds conflict, or eligible claims have no common encounter. |
|
|
41
|
+
| FORBIDDEN | An inhabited encounter does not fit the bounds. |
|
|
42
|
+
|
|
43
|
+
Bounds are checked before origins and claims. A receipt is evidence of a reading, not another origin. Duplicating one does not add freedom.
|
|
44
|
+
|
|
45
|
+
## Change a project without erasing evidence
|
|
46
|
+
|
|
47
|
+
Work 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.
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
export BOUND_KEY_ID='your-admitted-key-id'
|
|
51
|
+
export BOUND_KEY_FILE="$HOME/Private/keys/your-device.pem"
|
|
52
|
+
lot_dir="$(mktemp -d)"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Have the selected view produce a proposal at `$lot_dir/proposal.bound`, or prepare the project's permitted lines there for review. Unsigned proposals use `by=target`, without a preassigned epoch or `sig`. Lots stay outside the repository; the committed bound files are only `TARGET.bound` and `receipts.bound`.
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
npx @lapxo/bound@0.1.8 sign "$lot_dir/proposal.bound" \
|
|
59
|
+
--key "$BOUND_KEY_ID" --key-file "$BOUND_KEY_FILE" \
|
|
60
|
+
> "$lot_dir/signed.bound" &&
|
|
61
|
+
npx @lapxo/bound@0.1.8 land "$lot_dir/signed.bound" &&
|
|
62
|
+
npx @lapxo/bound@0.1.8 fold
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
`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.
|
|
66
|
+
|
|
67
|
+
For 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.
|
|
68
|
+
|
|
69
|
+
[Authority, withdrawals, receipts and PR review](https://github.com/Lapxo/bound/blob/2053bb6d6188f04538114eae6a0add5166944ed3/docs/usage.md).
|
|
70
|
+
|
|
71
|
+
## Select a topos by what it declares
|
|
72
|
+
|
|
73
|
+
`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.
|
|
74
|
+
|
|
75
|
+
`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.
|
|
76
|
+
|
|
77
|
+
| Responsibility | Owner |
|
|
78
|
+
| --- | --- |
|
|
79
|
+
| Meet, state, live acts and rest | Obligations |
|
|
80
|
+
| Wire, forms, classes, views and offer contracts | Topos |
|
|
81
|
+
| Admission, folding and evidence | Bound |
|
|
82
|
+
| Domain measurement and representation | Selected topos |
|
|
83
|
+
| Storage, transport and execution | Host |
|
|
84
|
+
|
|
85
|
+
Cell `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.
|
|
86
|
+
|
|
87
|
+
## Repository rules
|
|
88
|
+
|
|
89
|
+
Commit `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.
|
|
90
|
+
|
|
91
|
+
The 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.
|
|
92
|
+
|
|
93
|
+
A 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).
|
|
94
|
+
|
|
95
|
+
## An atlas you can question
|
|
96
|
+
|
|
97
|
+
Information 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.
|
|
98
|
+
|
|
99
|
+
This 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.
|
|
100
|
+
|
|
101
|
+
A 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.
|
|
102
|
+
|
|
103
|
+
Use 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.
|
|
104
|
+
|
|
105
|
+
[Contribute a counterexample or a proposed lot](CONTRIBUTING.md).
|
|
106
|
+
|
|
107
|
+
## Foundations and related libraries
|
|
108
|
+
|
|
109
|
+
The 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.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lapxo/bound",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Read the bounds you already wrote, fold them, and name the contradictions.",
|
|
6
6
|
"main": "dist/cli/verb.js",
|
|
@@ -32,13 +32,20 @@
|
|
|
32
32
|
"./closure/native": {
|
|
33
33
|
"types": "./dist/host/native/module-delivery.d.ts",
|
|
34
34
|
"default": "./dist/host/native/module-delivery.js"
|
|
35
|
-
}
|
|
35
|
+
},
|
|
36
|
+
"./host": {
|
|
37
|
+
"types": "./dist/host/index.d.ts",
|
|
38
|
+
"default": "./dist/host/index.js"
|
|
39
|
+
},
|
|
40
|
+
"./conformance": "./docs/contracts/conformance.json",
|
|
41
|
+
"./determinism": "./docs/contracts/determinism.bound"
|
|
36
42
|
},
|
|
37
43
|
"scripts": {
|
|
38
44
|
"test": "node --import ./test/setup.ts --test --test-concurrency=2 test/*.test.ts",
|
|
39
45
|
"clean": "rm -rf dist .tsbuildinfo* tsconfig.tsbuildinfo",
|
|
40
46
|
"build": "node --experimental-strip-types tools/build.ts",
|
|
41
|
-
"prepack": "npm run build"
|
|
47
|
+
"prepack": "npm run build",
|
|
48
|
+
"compact-archive": "node --experimental-strip-types tools/compact-archive.ts"
|
|
42
49
|
},
|
|
43
50
|
"files": [
|
|
44
51
|
"LICENSE",
|
|
@@ -47,13 +54,8 @@
|
|
|
47
54
|
"dist/**/*.js",
|
|
48
55
|
"dist/cli/verb.d.ts",
|
|
49
56
|
"dist/engine/index.d.ts",
|
|
50
|
-
"dist/engine/object.d.ts",
|
|
51
57
|
"dist/host/reference-authenticated.d.ts",
|
|
52
|
-
"dist/host/reference-export.d.ts",
|
|
53
58
|
"dist/host/reference-native-api.d.ts",
|
|
54
|
-
"dist/host/reference-native.d.ts",
|
|
55
|
-
"dist/host/reference-profile.d.ts",
|
|
56
|
-
"dist/host/refusals.d.ts",
|
|
57
59
|
"dist/wasm/adapter.d.ts",
|
|
58
60
|
"TARGET.bound",
|
|
59
61
|
"receipts.bound",
|
|
@@ -158,7 +160,6 @@
|
|
|
158
160
|
"samples/reference-backend/world-fixture.json",
|
|
159
161
|
"vectors/native/reference-backend.vector.json",
|
|
160
162
|
"samples/authenticated-reference/compatibility.json",
|
|
161
|
-
"dist/engine/ports.d.ts",
|
|
162
163
|
"docs/contracts/host-ports.publication.json",
|
|
163
164
|
"samples/host-ports/yes.json",
|
|
164
165
|
"samples/host-ports/no.json",
|
|
@@ -169,23 +170,41 @@
|
|
|
169
170
|
"vectors/native/readme.vector.json",
|
|
170
171
|
"samples/engine-place/inputs/closure.json",
|
|
171
172
|
"dist/host/native/module-delivery.d.ts",
|
|
172
|
-
"dist/host/native/module-closure.d.ts",
|
|
173
173
|
"docs/contracts/closure-delivery.md",
|
|
174
174
|
"docs/contracts/closure-delivery.publication.json",
|
|
175
175
|
"samples/module-delivery/inputs/delivery.json",
|
|
176
176
|
"samples/no/module-delivery/delivery.json",
|
|
177
|
-
"vectors/native/module-delivery.vector.json"
|
|
177
|
+
"vectors/native/module-delivery.vector.json",
|
|
178
|
+
"dist/host/index.d.ts",
|
|
179
|
+
"docs/contracts/native-host.publication.json",
|
|
180
|
+
"samples/native-host/yes.json",
|
|
181
|
+
"samples/native-host/no.json",
|
|
182
|
+
"vectors/native/native-host.vector.json",
|
|
183
|
+
"CITATION.cff",
|
|
184
|
+
"docs/contracts/publication.inventory.json",
|
|
185
|
+
"docs/guide.md",
|
|
186
|
+
"docs/reference.md",
|
|
187
|
+
"docs/why.md",
|
|
188
|
+
"docs/contracts/reading-identity.publication.json",
|
|
189
|
+
"samples/reading-identity/yes.json",
|
|
190
|
+
"samples/reading-identity/no.json",
|
|
191
|
+
"vectors/native/reading-identity.vector.json",
|
|
192
|
+
"dist/vendor/",
|
|
193
|
+
"vendor/syntax/parser.js",
|
|
194
|
+
"vendor/syntax/LICENSE.md",
|
|
195
|
+
"dist/public-types.d.ts",
|
|
196
|
+
"docs/contracts/conformance.json",
|
|
197
|
+
"docs/contracts/determinism.bound"
|
|
178
198
|
],
|
|
179
199
|
"author": "Lapxo",
|
|
180
200
|
"license": "MIT",
|
|
181
|
-
"dependencies": {
|
|
182
|
-
"@lapxo/obligations": "0.4.3",
|
|
183
|
-
"@lapxo/topos": "^0.2.1",
|
|
184
|
-
"acorn": "8.19.0"
|
|
185
|
-
},
|
|
186
201
|
"devDependencies": {
|
|
187
|
-
"@types/node": "
|
|
188
|
-
"typescript": "
|
|
202
|
+
"@types/node": "20.19.43",
|
|
203
|
+
"typescript": "5.9.3",
|
|
204
|
+
"@lapxo/topos": "0.2.1",
|
|
205
|
+
"@lapxo/obligations": "0.4.4",
|
|
206
|
+
"esbuild": "0.28.2",
|
|
207
|
+
"dts-bundle-generator": "9.5.1"
|
|
189
208
|
},
|
|
190
209
|
"sideEffects": false,
|
|
191
210
|
"engines": {
|