Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cff-version: 1.2.0
message: "Cite it by the paper it rests on, Two-Sided Constraints on a Valued Lattice."
type: software
title: "@lapxo/bound"
version: "0.1.5"
version: "0.1.6"
authors:
- name: "Lapxo"
license: "MIT"
Expand Down
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
Declare what must hold. Read what does. Keep the evidence

```bash
npx @lapxo/[email protected].5 fold --as help
npx @lapxo/[email protected].5 fold
npx @lapxo/[email protected].6 fold --as help
npx @lapxo/[email protected].6 fold
```

## How Bound reads a project
Expand All @@ -18,9 +18,9 @@ Bound reads a project's admitted statements and observations through its selecte
From a project with an admitted lock and selected views, inspect its standing, ask for its evidence, then verify the committed outputs:

```sh
npx @lapxo/[email protected].5 fold --as lines
npx @lapxo/[email protected].5 fold --as receipts@1
npx @lapxo/[email protected].5 fold --check
npx @lapxo/[email protected].6 fold --as lines
npx @lapxo/[email protected].6 fold --as receipts@1
npx @lapxo/[email protected].6 fold --check
```

Use this flow to review a project change or check a dependency's declared contract. `--check` verifies existing evidence; it does not execute a missing reading. A file fold names readings and explicitly says that it computed no encounters.
Expand Down Expand Up @@ -66,11 +66,11 @@ lot_dir="$(mktemp -d)"
Have the selected view produce a proposal at `$lot_dir/proposal.bound`, or prepare the project's permitted lines there for review. Unsigned proposals use `by=target`, without a preassigned epoch or `sig`. Lots stay outside the repository; the committed bound files are only `TARGET.bound` and `receipts.bound`.

```sh
npx @lapxo/[email protected].5 sign "$lot_dir/proposal.bound" \
npx @lapxo/[email protected].6 sign "$lot_dir/proposal.bound" \
--key "$BOUND_KEY_ID" --key-file "$BOUND_KEY_FILE" \
> "$lot_dir/signed.bound" &&
npx @lapxo/[email protected].5 land "$lot_dir/signed.bound" &&
npx @lapxo/[email protected].5 fold
npx @lapxo/[email protected].6 land "$lot_dir/signed.bound" &&
npx @lapxo/[email protected].6 fold
```

`sign` assigns the admitted epoch and writes the signed lot to stdout. `land` validates the whole lot before admission. A refusal is evidence to inspect; it is not success. Do not proceed after a failed signature or admission. The key file is a PKCS8 private key matching the admitted public key; do not put it in the lot, source tree, package or CI artifacts.
Expand Down
15 changes: 8 additions & 7 deletions TARGET.bound

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/contracts/cli-fold.publication.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{
"role": "contract",
"path": "docs/contracts/cli.md",
"digest": "sha256:97cddb7dac0c426b40c51d852d6176ae8f389351cc3366206f8acb0e58c7117a"
"digest": "sha256:4d1782d30d6d695b0cdad7db1bc2453b98adfcb3f7f8574326ddc794bfa9cf12"
},
{
"role": "yes",
Expand Down
2 changes: 1 addition & 1 deletion docs/contracts/cli-land.publication.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{
"role": "contract",
"path": "docs/contracts/cli.md",
"digest": "sha256:97cddb7dac0c426b40c51d852d6176ae8f389351cc3366206f8acb0e58c7117a"
"digest": "sha256:4d1782d30d6d695b0cdad7db1bc2453b98adfcb3f7f8574326ddc794bfa9cf12"
},
{
"role": "yes",
Expand Down
2 changes: 1 addition & 1 deletion docs/contracts/cli-sign.publication.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{
"role": "contract",
"path": "docs/contracts/cli.md",
"digest": "sha256:97cddb7dac0c426b40c51d852d6176ae8f389351cc3366206f8acb0e58c7117a"
"digest": "sha256:4d1782d30d6d695b0cdad7db1bc2453b98adfcb3f7f8574326ddc794bfa9cf12"
},
{
"role": "yes",
Expand Down
8 changes: 8 additions & 0 deletions docs/contracts/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,11 @@
# sign

`bound sign <lot>` returns canonical signed lines after validating the whole lot. The admitted key selects a declared signer; `--signer` selects the same port explicitly. File and command mechanisms use one port. Topos signing-lot/1 frames canonical bytes in lot order, one invocation per lot, and returns signatures and public-key IDs. Verification checks the admitted public key, independently of the mechanism. A command is invoked without a shell and under declared bounds. No secret output is disclosed in refusals. Missing, invalid, partial, timed-out or failed responses refuse; `land` cannot commit their partial output. The sample compares file and command signatures and landed lines, checks invocation count and ledger hashes, and refuses an unknown wire version. The sample uses ephemeral keys outside the place; no owner key is included.

# Committed act results

The opt-in `local-act@1` contract is selected by `wire/act-result`, `wire/act-result-scope` and `wire/act-result-context`. An admitted `view/act measure=id value=act` makes `bound fold --as act <identity>` available. Missing or conflicting declarations refuse; an absent profile preserves the historical interface. Topos defines the canonical record and result contract.

Admission publishes the original signed records, their logical placements and one native result receipt atomically. A failure before commit writes no partial act. The result names the committed digest and local epoch; replay returns the original result without another epoch or origin. A post-commit error is not a rollback. Read the committed result before deciding whether to retry.

The query verifies the record signatures and coverage against the authority snapshot at admission, and the native receipt against its retained provenance. Later key retirement or profile replacement cannot authorize a new act but does not erase a verifiable historical result. Admission is not conformance: the output says `admitted · conformance not asserted`. Missing or corrupt results refuse by name. Host paths and delivery counts are not identity inputs.
12 changes: 6 additions & 6 deletions docs/why.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ Bound reads a project's admitted statements and observations through its selecte
From a project with an admitted lock and selected views, inspect its standing, ask for its evidence, then verify the committed outputs:

```sh
npx @lapxo/[email protected].5 fold --as lines
npx @lapxo/[email protected].5 fold --as receipts@1
npx @lapxo/[email protected].5 fold --check
npx @lapxo/[email protected].6 fold --as lines
npx @lapxo/[email protected].6 fold --as receipts@1
npx @lapxo/[email protected].6 fold --check
```

Use this flow to review a project change or check a dependency's declared contract. `--check` verifies existing evidence; it does not execute a missing reading. A file fold names readings and explicitly says that it computed no encounters.
Expand Down Expand Up @@ -55,11 +55,11 @@ lot_dir="$(mktemp -d)"
Have the selected view produce a proposal at `$lot_dir/proposal.bound`, or prepare the project's permitted lines there for review. Unsigned proposals use `by=target`, without a preassigned epoch or `sig`. Lots stay outside the repository; the committed bound files are only `TARGET.bound` and `receipts.bound`.

```sh
npx @lapxo/[email protected].5 sign "$lot_dir/proposal.bound" \
npx @lapxo/[email protected].6 sign "$lot_dir/proposal.bound" \
--key "$BOUND_KEY_ID" --key-file "$BOUND_KEY_FILE" \
> "$lot_dir/signed.bound" &&
npx @lapxo/[email protected].5 land "$lot_dir/signed.bound" &&
npx @lapxo/[email protected].5 fold
npx @lapxo/[email protected].6 land "$lot_dir/signed.bound" &&
npx @lapxo/[email protected].6 fold
```

`sign` assigns the admitted epoch and writes the signed lot to stdout. `land` validates the whole lot before admission. A refusal is evidence to inspect; it is not success. Do not proceed after a failed signature or admission. The key file is a PKCS8 private key matching the admitted public key; do not put it in the lot, source tree, package or CI artifacts.
Expand Down
12 changes: 6 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@lapxo/bound",
"version": "0.1.5",
"version": "0.1.6",
"type": "module",
"description": "Read the bounds you already wrote, fold them, and name the contradictions.",
"main": "dist/cli/verb.js",
Expand Down Expand Up @@ -33,7 +33,7 @@
"license": "MIT",
"dependencies": {
"@lapxo/obligations": "0.3.5",
"@lapxo/topos": "^0.1.11",
"@lapxo/topos": "^0.1.12",
"acorn": "8.19.0"
},
"devDependencies": {
Expand Down
Loading
Loading