diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c57eb3e..06a81ba 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,9 +19,58 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 24 - - env: + - run: npm ci + - run: npm run build + - run: npm test + - id: artifact + env: GH_TOKEN: ${{ github.token }} run: | version="v$(node -p "require('./package.json').version")" - gh release view "$version" >/dev/null 2>&1 && exit 0 - gh release create "$version" "$(npm pack --silent)" --title "$version" --notes "$version" + mkdir -p release-assets + gh release download "$version" --repo Lapxo/topos-node --pattern '47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b' --dir release-assets || gh release download "${version}-inputs" --repo Lapxo/topos-node --pattern '47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b' --dir release-assets + printf '%s %s\n' '47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b' 'release-assets/47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b' | sha256sum -c - + gh release download "$version" --repo Lapxo/topos-node --pattern 'a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' --dir release-assets || gh release download "${version}-inputs" --repo Lapxo/topos-node --pattern 'a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' --dir release-assets + printf '%s %s\n' 'a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' 'release-assets/a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' | sha256sum -c - + gh release download "$version" --repo Lapxo/topos-node --pattern 'archive-profile.mjs' --dir release-assets || gh release download "${version}-inputs" --repo Lapxo/topos-node --pattern 'archive-profile.mjs' --dir release-assets + printf '%s %s\n' 'b29b48db2b4d9633a095765ae65e99ca8c14aae10a76735f006fb728a23e5aaa' 'release-assets/archive-profile.mjs' | sha256sum -c - + npx --yes --package esbuild@0.28.2 esbuild src/index.ts --bundle --platform=node --format=esm --outfile="$RUNNER_TEMP/runtime-index.js" + printf '%s %s\n' '483b5deffc246b7f26b0270c2decabfcff56e3a5a753ad1ac27b20cf6b2bc346' "$RUNNER_TEMP/runtime-index.js" | sha256sum -c - + node release-assets/archive-profile.mjs 'release-assets/76aba07865464ef09c7695cff3eb755935877d2fe07c0d325d49166268cb19da' 'sha256:76aba07865464ef09c7695cff3eb755935877d2fe07c0d325d49166268cb19da' capsule.bound 'release-assets/a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' dist/index.js "$RUNNER_TEMP/runtime-index.js" >&2 + asset="$(npm pack --silent)" + test -f "$asset" + expected="$(sha256sum "$asset")" + if ! gh release view "$version" >/dev/null 2>&1; then + gh release create "$version" "$asset" 'release-assets/47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b' 'release-assets/76aba07865464ef09c7695cff3eb755935877d2fe07c0d325d49166268cb19da' 'release-assets/a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' 'release-assets/archive-profile.mjs' --title "$version" --notes "$version" + fi + gh release download "$version" --pattern "$(basename "$asset")" --dir "$RUNNER_TEMP/release-back" + actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$asset")")" + test "${expected%% *}" = "${actual%% *}" + extra='release-assets/47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b' + test -f "$extra" + test "$(basename "$extra")" != "$(basename "$asset")" + extra_expected="$(sha256sum "$extra")" + gh release download "$version" --pattern "$(basename "$extra")" --dir "$RUNNER_TEMP/release-back" + extra_actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$extra")")" + test "${extra_expected%% *}" = "${extra_actual%% *}" + extra='release-assets/76aba07865464ef09c7695cff3eb755935877d2fe07c0d325d49166268cb19da' + test -f "$extra" + test "$(basename "$extra")" != "$(basename "$asset")" + extra_expected="$(sha256sum "$extra")" + gh release download "$version" --pattern "$(basename "$extra")" --dir "$RUNNER_TEMP/release-back" + extra_actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$extra")")" + test "${extra_expected%% *}" = "${extra_actual%% *}" + extra='release-assets/a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' + test -f "$extra" + test "$(basename "$extra")" != "$(basename "$asset")" + extra_expected="$(sha256sum "$extra")" + gh release download "$version" --pattern "$(basename "$extra")" --dir "$RUNNER_TEMP/release-back" + extra_actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$extra")")" + test "${extra_expected%% *}" = "${extra_actual%% *}" + extra='release-assets/archive-profile.mjs' + test -f "$extra" + test "$(basename "$extra")" != "$(basename "$asset")" + extra_expected="$(sha256sum "$extra")" + gh release download "$version" --pattern "$(basename "$extra")" --dir "$RUNNER_TEMP/release-back" + extra_actual="$(sha256sum "$RUNNER_TEMP/release-back/$(basename "$extra")")" + test "${extra_expected%% *}" = "${extra_actual%% *}" diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml new file mode 100644 index 0000000..9de0465 --- /dev/null +++ b/.github/workflows/tag.yml @@ -0,0 +1,17 @@ +name: tag +on: + push: + branches: [main] +jobs: + tag: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - run: | + version="v$(node -p "require('./package.json').version")" + git tag --list "$version" | grep -q . && exit 0 + git tag "$version" && git push origin "$version" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..61b3d22 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,22 @@ +name: test +on: + push: + branches: [main] + pull_request: +jobs: + test: + strategy: + matrix: + node: [22, 24] + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + - run: npm ci + - run: npm run build + - run: npm test + - run: npm pack --silent diff --git a/CITATION.cff b/CITATION.cff index adfb355..4f6366f 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,7 +2,7 @@ cff-version: 1.2.0 message: "Cite it as @lapxo/topos-node." type: software title: "@lapxo/topos-node" -version: "0.1.2" +version: "0.1.3" authors: - name: "Lapxo" repository-code: "https://github.com/lapxo/topos-node" diff --git a/README.md b/README.md index 47ba9a9..54af1b7 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,9 @@ -A world for a node package. Point it at the lines that name a package and it renders the manifest, the published manifest, and the build. [its regions, read off its own descriptor](docs/reference.md) +# @lapxo/topos-node -## Why the lines - -A package is the lines that name it. Two manifests come from one lock, and the build is the compiler lines that lock holds. - -## One package, two manifests - -

declares , runs on , reaches, 3 regions, the longest of them 0 lines, 0 vector files, each held from the blob, pinned by topos-node and run by the host

- -## Line - -Add to your lock: -sources/topos-node value=github:Lapxo/topos-node -uses/topos-node sha256: -https://github.com/Lapxo/topos-node/releases -Fetch the release asset, verify its sha256 equals the uses/ line, place it in bound/cas/blobs/. Fold: its pages appear. -open: line/install needs=host/resolve — when bound resolves sources/ itself, the fetch line leaves the page by fold. +![license MIT](https://img.shields.io/badge/license-MIT-8c959f) -```bash -node examples/release/package.ts -``` +What a node package is, rendered from its lines: the two manifests one lock makes, and how it builds. -It rests on topos. - -## Check - -● 0 cases hold - -● `npm ci && npm run build` - -## Pointers +## Why the lines -- [Reference](docs/reference.md) +A package is the lines that name it. Two manifests come from one lock, and the build is the compiler lines that lock holds. diff --git a/TARGET.bound b/TARGET.bound index dc80c39..fe4c9d7 100644 --- a/TARGET.bound +++ b/TARGET.bound @@ -1,45 +1,163 @@ -bound-lock/1 at=place:topos-node by=target form=alphabet measure=status role=writes scope=publish/bootstrap value=topos-node -bound-lock/1 at=policy:keys by=owner epoch=9 form=alphabet measure=class role=reads scope=keys/owner sig="sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834:z1+6gtFVPc3MfHCK2FUOfqyuPjZDSefYTfkQkcILMfMlRRnmne1mY9BpiO4QqoH0q9gNt2wCLlpQ+sldM+4tCg==" value=authorize -bound-lock/1 at=policy:keys by=owner epoch=9 form=alphabet measure=coverage role=reads scope=keys/owner sig="sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834:gdr4oPiX4pWLNOzhwWcALHKr2zGHo906NoHpymaXTLq1f6Z7icy0gmEn2/smtcjlfAqv/Tr3jbb1nWM23L8QDQ==" value=* -bound-lock/1 at=policy:keys by=owner epoch=9 form=alphabet measure=public-key role=reads scope=keys/owner sig="sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834:vAdWbDyY9geq4MaZj39T9A2o+00zb1Mnr2wLzW7w2ZMrgMJjM0abvmVtsRwTaFwfkkJEGDBb0QuNaKmEE5sIDQ==" value="MCowBQYDK2VwAyEAIYI0be8OWhf3HcVceKpibjgZ+hbYJKYO5ayX8Kk16LE=" -bound-lock/1 at=policy:keys by=owner epoch=9 form=interval measure=resolution role=reads scope=keys/owner sig="sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834:m/Pm3pk3THBm5Wah79TmXgxq9qpnwWZ6R4a2UvJdTJnJthquUsLMXgcUBagynG/h/WgakNTL6vB+pbL8WnogAQ==" value=1..16 -bound-lock/1 about="the key this lock admits to write what the tree is read as: a reader speaks only what it observed, and the lock says which key that is" at=policy:keys by=owner epoch=22 form=alphabet measure=class role=reads scope=keys/reader sig="sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834:+GFCyG3ntO7YFHrDvyii+/Lu3voIpq4HbByzO/LgLUXfXKV5lvp62DDC0+DXalYDw0Cc15mkkculj1UPeQJSDw==" value=read -bound-lock/1 at=policy:keys by=owner epoch=22 form=alphabet measure=coverage role=reads scope=keys/reader sig="sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834:bd3JgJ3/P/6zqLo19xwgq+ZrAklwuT7mHMI6yuqU8ayfAZid0gSyVV7xWKuAzwsfgtTuKWuUadfNK5FmnqyUAA==" value=* -bound-lock/1 at=policy:keys by=owner epoch=10 form=alphabet measure=class role=reads scope=keys/verify sig="sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834:Q6liul128VZBmQNTlcIx8QK/k8oJsD3JMwaxZ1FinaIkj8ZZA4pcOm1cZbp/yuxgNymJrBR8IQ0ZpahV0ACZCQ==" value=attest -bound-lock/1 at=policy:keys by=owner epoch=10 form=alphabet measure=coverage role=reads scope=keys/verify sig="sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834:jxZ1478dEngHANVcHA15tSE+fBlgUeqQnmRLmg/vK7Mk94njKFBZnh+ccye/dpY01zwc5XmDbi2p6Q8+45uvCQ==" value=verify -bound-lock/1 at=policy:keys by=owner epoch=10 form=alphabet measure=public-key role=reads scope=keys/verify sig="sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834:YXaWrvwPsC/XULzvHV3r/2oS9cFytiEEcdjhJi3+omwNmdVykyVPUnqltKKMv65YbjJ+BCxrVKRmI/MY8fG0DQ==" value="MCowBQYDK2VwAyEACLnnkNAHf4V7vXG4cCZv6rM7suRwGTe0MJoqqCUxnvw=" -bound-lock/1 at=policy:keys by=owner epoch=10 form=interval measure=resolution role=reads scope=keys/verify sig="sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834:Do/XC5Jz7KbVhPNGZkUID1c7w8L0CEMzblgBpU3UEBjfkIs/X6I9ScrAeL3lGYXBY8hYUDohw5kWO85bSlQuDQ==" value=1..16 -bound-lock/1 at=policy:hazard/zero by=target form=interval measure=count role=reads scope=hazard/**/src/** value=0..0 -bound-lock/1 at=policy:tree/comments-few by=target form=interval measure=per-file role=reads scope=comments/*/src/** value=0..3 -bound-lock/1 at=policy:place/removal by=target form=interval measure=removed-by-hand role=reads scope=audit/nothing-is-removed-by-hand value=0..0 -bound-lock/1 at=policy:place/orphans by=target form=interval measure=orphan-samples role=reads scope=audit/orphans value=0..0 -bound-lock/1 at=policy:place/dist by=target form=interval measure=shipped-beside-code role=reads scope=audit/dist-holds-js-and-dts value=0..0 -bound-lock/1 at=policy:pages/mode by=target form=interval measure=prose-marks role=reads scope=audit/docs-have-a-mode value=0..0 -bound-lock/1 at=policy:pages/same by=target form=interval measure=rendered-leaves-differ role=reads scope=audit/rendered-docs-match value=0..0 -bound-lock/1 at=policy:security/acts by=target form=interval measure=acts-on-unnamed-hosts role=reads scope=audit/agent-acts-are-effects value=0..0 -bound-lock/1 at=policy:view by=target form=alphabet measure=id role=demands scope=view/manifest shape=package.json value=published-manifest -bound-lock/1 at=policy:view by=target form=alphabet measure=id role=demands scope=view/tsconfig shape=tsconfig.json value=build -bound-lock/1 at=policy:view by=target form=alphabet measure=id role=demands scope=view/gitignore shape=.gitignore value=ignore -bound-lock/1 at=place:topos-node by=target form=alphabet measure=id needs=README.md role=demands scope=view/readme-capsule shape=README.md value=door|idea|figure-world|claims|install|commands|refuses|reading|how-they-rest|check|pointers -bound-lock/1 at=policy:view by=target form=alphabet measure=id needs=docs/reference.md role=demands scope=view/reference-capsule shape=docs/reference.md value=regions -bound-lock/1 at=policy:view by=target form=alphabet measure=id needs=CITATION.cff role=demands scope=view/citation-file shape=CITATION.cff value=cff -bound-lock/1 at=policy:view by=target form=alphabet measure=id needs=CONTRIBUTING.md role=demands scope=view/guide shape=CONTRIBUTING.md value=guide-at-zero -bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=reads scope=region/source value=src/**/*.ts -bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=reads scope=region/vocabulary value=src/**/*.ts -bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=reads scope=region/said value=src/**/*.ts -bound-lock/1 at=policy:reader by=target form=alphabet kind=js measure=reader needs=src/ role=reads scope=reader/said/source shape=*.ts value=topos-typescript-tree/src/regions/said.ts -bound-lock/1 at=policy:view by=target form=alphabet measure=id needs=src/index.ts role=demands scope=view/index shape=src/index.ts value=index -bound-lock/1 at=policy:view by=target form=alphabet measure=id needs=docs/img/world.svg role=demands scope=view/figure-world shape=docs/img/world.svg value=figure-world@1 -bound-lock/1 at=policy:view by=target form=alphabet measure=id role=demands scope=view/receipts shape=receipts.bound value=receipts@0|receipts@1 -bound-lock/1 at=policy:private by=target form=alphabet measure=id role=writes scope=private shape=package.json value=true -bound-lock/1 at=policy:docs by=target form=alphabet measure=id needs=docs/reference.md role=writes scope=docs/what value=docs/reference.md -bound-lock/1 at=policy:docs by=target form=alphabet measure=id role=writes scope=docs/reading value=build|manifest|published-manifest -bound-lock/1 at=policy:docs by=target form=alphabet measure=id role=writes scope=docs/world value=package -bound-lock/1 at=policy:release by=target form=alphabet measure=id role=demands scope=release/rebirth value=rebirth -bound-lock/1 at=place:topos-node by=target form=alphabet measure=id role=writes scope=uses/topos-github value=sha256:f58cd403038adc9e552fe8452ffeba8e182ebc5b46a9fb2af66e1391363566a3 -bound-lock/1 at=place:topos-node by=target form=alphabet measure=id role=writes scope=uses/topos-typescript-tree value=sha256:33ddd7774c8fb05403b95eeb342744b60b9a6e6aabbee3ed9db380656cc6b751 +bound-lock/1 about="**{name}** · {answer}" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/reading/view value=lock +bound-lock/1 about="A package is the lines that name it. Two manifests come from one lock, and the build is the compiler lines that lock holds." at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/idea value=lock +bound-lock/1 about="A world for a node package. Point it at the lines that name a package and it renders the manifest, the published manifest, and the build." at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/door/what value=lock +bound-lock/1 about="Cite it as {name}." at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/cff/name value=lock +bound-lock/1 about="Clone, `{check}`. A leaf that differs from what its lines render is the contribution: send it with the lines it was handed.\nNothing else is asked. Lines land through the fold, never by hand; a page and the lock disagree, the lock is right." at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/contributing value=lock +bound-lock/1 about="How to read it" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/reading/heading value=lock +bound-lock/1 about="It costs {dependencies} dependencies: the SDK it answers through" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/claims/1-costs value=lock +bound-lock/1 about="It rests on {names}." at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/rests/on value=lock +bound-lock/1 about="MIT License\n\nCopyright (c) 2026 Lapxo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE." at=policy:license by=target form=alphabet measure=id role=demands scope=license value=MIT +bound-lock/1 about="One package, two manifests" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/heading value=lock +bound-lock/1 about="Restore the illustration only with a formed example and native evidence delivered to its view." at=witness:verified-render-contract by=target form=alphabet measure=id role=demands scope=plan/render/figure-world value=unpaid +bound-lock/1 about="The historical index view has no provider; source entry points are not generated by a file-fold renderer." at=witness:verified-render-contract by=target form=alphabet measure=id role=demands scope=plan/render/index value=unpaid +bound-lock/1 about="What it claims" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/claims/heading value=lock +bound-lock/1 about="What it refuses" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/refuses/heading value=lock +bound-lock/1 about="Why the lines" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/idea/heading value=lock +bound-lock/1 about="[The whole example]({at})" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/learn/source value=lock +bound-lock/1 about="a page to learn from one example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives; the example is the one the page is named after" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn value=lock +bound-lock/1 about="a page to learn from the in-phase example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn-in-phase value=lock +bound-lock/1 about="a page to learn from the price example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn-price value=lock +bound-lock/1 about="a page to learn from the signature example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn-signature value=lock +bound-lock/1 about="a page to learn from the thermometer example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn-thermometer value=lock +bound-lock/1 about="a page to learn from the withdrawal example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn-withdrawal value=lock +bound-lock/1 about="a place adopts it with {scope}" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/adopted value=lock +bound-lock/1 about="against topos {digest}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/topos value=lock +bound-lock/1 about="declares {domain}, runs on {runtime}, reaches {effects}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/declares value=lock +bound-lock/1 about="each key, what it has signed and what it may sign" at=policy:region/signers by=target form=alphabet measure=text role=writes scope=region/signers value=lock +bound-lock/1 about="each place the owner has said what it is, in the order they rest on each other, with its state as a colour and what the fold counts of it: paid, hazards open, and what the second head says" at=policy:region by=target form=alphabet measure=text role=writes scope=region/places value=lock +bound-lock/1 about="each signer as a life: what it signed, what it left free and where it forked" at=policy:region/biography by=target form=alphabet measure=text role=writes scope=region/biography value=lock +bound-lock/1 about="every ceiling a reading is over, and every demand nothing paid" at=policy:region/red by=target form=alphabet measure=text role=writes scope=region/red value=lock +bound-lock/1 about="every conjecture of a place as the thing it is: who met it, with what, how together their claims arrived, and whether anything has closed it" at=policy:region/census by=target form=alphabet measure=text role=writes scope=region/census value=readings +bound-lock/1 about="every conjecture of the place, marked as such, with what would falsify it" at=policy:region by=target form=alphabet measure=text role=writes scope=region/open-conjectures value=lock +bound-lock/1 about="every conjecture with the falsifier its own line names" at=policy:region/conjectures by=target form=alphabet measure=text role=writes scope=region/conjectures value=leaves +bound-lock/1 about="every operation offered, with how many vectors reached it" at=policy:region/offers by=target form=alphabet measure=text role=writes scope=region/offers value=readings +bound-lock/1 about="every operation with its signature, its derived refusals, what it reaches and the laws it rests on; every law with its kind, view, premises, sentence and whether it reproduces; every form" at=policy:region by=target form=alphabet measure=text role=writes scope=region/reference value=lock +bound-lock/1 about="four real calls and what each of them answers" at=policy:region/thirty-seconds by=target form=alphabet measure=text role=writes scope=region/thirty-seconds value=prose +bound-lock/1 about="how many epochs a region spans, from its first line to its last" at=policy:region/width by=target form=alphabet measure=text role=writes scope=region/width value=lock-and-readings +bound-lock/1 about="how many of those epochs it was actually spoken in" at=policy:region/rhythm by=target form=alphabet measure=text role=writes scope=region/rhythm value=lock-and-readings +bound-lock/1 about="how not to believe any of it: the command a clone runs today, and the one that runs the cases with bound once it ships, with how many there are; the repository only once it resolves" at=policy:region by=target form=alphabet measure=text role=writes scope=region/check value=lock +bound-lock/1 about="how often each region of the tree was read" at=policy:region/region-frequency by=target form=alphabet measure=text role=writes scope=region/region-frequency value=readings +bound-lock/1 about="how the places rest on each other, drawn from the lock's dependency lines and folded until asked for" at=policy:region by=target form=alphabet measure=text role=writes scope=region/how-they-rest value=lock +bound-lock/1 about="how together a region arrived, one when every line landed at the same turn of the period" at=policy:region/coherence by=target form=alphabet measure=text role=writes scope=region/coherence value=lock-and-readings +bound-lock/1 about="its leaf" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/regions/leaf value=lock +bound-lock/1 about="its regions, read off its own descriptor" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/door/words value=lock +bound-lock/1 about="lines that stand on one origin and are therefore not yet information" at=policy:region/grey by=target form=alphabet measure=text role=writes scope=region/grey value=lock +bound-lock/1 about="mkdir -p release-assets\ngh release download \"$version\" --repo Lapxo/topos-node --pattern '47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b' --dir release-assets || gh release download \"${version}-inputs\" --repo Lapxo/topos-node --pattern '47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b' --dir release-assets\nprintf '%s %s\\n' '47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b' 'release-assets/47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b' | sha256sum -c -\ngh release download \"$version\" --repo Lapxo/topos-node --pattern 'a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' --dir release-assets || gh release download \"${version}-inputs\" --repo Lapxo/topos-node --pattern 'a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' --dir release-assets\nprintf '%s %s\\n' 'a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' 'release-assets/a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' | sha256sum -c -\ngh release download \"$version\" --repo Lapxo/topos-node --pattern 'archive-profile.mjs' --dir release-assets || gh release download \"${version}-inputs\" --repo Lapxo/topos-node --pattern 'archive-profile.mjs' --dir release-assets\nprintf '%s %s\\n' 'b29b48db2b4d9633a095765ae65e99ca8c14aae10a76735f006fb728a23e5aaa' 'release-assets/archive-profile.mjs' | sha256sum -c -\nnpx --yes --package esbuild@0.28.2 esbuild src/index.ts --bundle --platform=node --format=esm --outfile=\"$RUNNER_TEMP/runtime-index.js\"\nprintf '%s %s\\n' '483b5deffc246b7f26b0270c2decabfcff56e3a5a753ad1ac27b20cf6b2bc346' \"$RUNNER_TEMP/runtime-index.js\" | sha256sum -c -\nnode release-assets/archive-profile.mjs 'release-assets/76aba07865464ef09c7695cff3eb755935877d2fe07c0d325d49166268cb19da' 'sha256:76aba07865464ef09c7695cff3eb755935877d2fe07c0d325d49166268cb19da' capsule.bound 'release-assets/a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8' dist/index.js \"$RUNNER_TEMP/runtime-index.js\" >&2" at=witness:reproducible-release-assets by=target form=alphabet measure=text role=writes scope=pipeline/release/prepare value=lock +bound-lock/1 about="node examples/release/package.ts" at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/commands value=lock +bound-lock/1 about="packed as {digest}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/blob value=lock +bound-lock/1 about="pinned by {place}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/pinned value=lock +bound-lock/1 about="publish the version once, by the trusted publisher" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/publish value=lock +bound-lock/1 about="publish the version once, by the trusted publisher" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/publish value=lock +bound-lock/1 about="release the version with its tarball, once" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/release value=lock +bound-lock/1 about="release the version with its tarball, once" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/release value=lock +bound-lock/1 about="run by the {runtime} host" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/host value=lock +bound-lock/1 about="tag the version the manifest names, once" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/tag value=lock +bound-lock/1 about="tag the version the manifest names, once" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/tag value=lock +bound-lock/1 about="the axioms of a place, the three most rested on spelled out in their own words" at=policy:region/axioms by=target form=alphabet measure=text role=writes scope=region/axioms value=leaves +bound-lock/1 about="the cases a place holds and which of them did not hold, read from what the runner already answered rather than run again" at=policy:region/vectors by=target form=alphabet measure=text role=writes scope=region/vectors value=readings +bound-lock/1 about="the cell of an example drawn at a resolution: at zero three bars, above it each claim a bar, what they hold together a bar in the colour of a meeting, and its floor and its ceiling named" at=policy:region by=target form=alphabet measure=text role=writes scope=region/ranges value=lock +bound-lock/1 about="the cell of the shortest example, drawn, with the legend of its marks as its caption" at=policy:region by=target form=alphabet measure=text role=writes scope=region/figure value=lock +bound-lock/1 about="the check a clone runs alone: the subpaths the manifest offers, imported, and the second head's signed word, verified against the key the lock admits and the digest of the lock itself" at=policy:region by=target form=alphabet measure=text role=writes scope=region/selfcheck value=lock +bound-lock/1 about="the check command, which is owed" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/guide/owed value=lock +bound-lock/1 about="the check the forge runs on every push and every proposal" at=policy:region by=target form=alphabet measure=text role=writes scope=region/pipeline-test value=lock +bound-lock/1 about="the citation a forge offers with one click, from the lines that already say it: the software by its name, version, author, repository and licence, and the paper it rests on as the citation the forge prefers" at=policy:region by=target form=alphabet measure=text role=writes scope=region/cff value=lock +bound-lock/1 about="the commands the owner gives, and a grey mark while the verb they call is not published" at=policy:region by=target form=alphabet measure=text role=writes scope=region/commands value=lock +bound-lock/1 about="the facts of the lock as badges a reader recognizes: version, licence, engine, dependencies, the cases that hold, what the second head says, grey until the instrument that runs it is published, and the paper's identifier" at=policy:region by=target form=alphabet measure=text role=writes scope=region/badges value=lock +bound-lock/1 about="the figure a region makes: a point, an edge, or a polygon" at=policy:region/shape by=target form=alphabet measure=text role=writes scope=region/shape value=lock-and-readings +bound-lock/1 about="the first screen of the root: its name, the figure one of its places draws, and one sentence of what the places are together" at=policy:region by=target form=alphabet measure=text role=writes scope=region/door value=lock +bound-lock/1 about="the first screen: the mark the place is known by, its name, the badges its lock reads to, and the one line of what it is; what is not signed is not on it" at=policy:region by=target form=alphabet measure=text role=writes scope=region/hero value=lock +bound-lock/1 about="the guide at resolution zero: five lines, the command that checks the place, how many conjectures are open, and that nothing else is asked" at=policy:region by=target form=alphabet measure=text role=writes scope=region/guide-at-zero value=lock +bound-lock/1 about="the key this lock admits to write what the tree is read as: a reader speaks only what it observed, and the lock says which key that is" at=policy:keys by=target form=alphabet measure=class role=reads scope=keys/reader value=read +bound-lock/1 about="the legend of the marks a page is drawn in, in the owner's words" at=policy:region by=target form=alphabet measure=text role=writes scope=region/marks value=lock +bound-lock/1 about="the licence, carried on a line of the lock and rendered into its own leaf" at=policy:region/license by=target form=alphabet measure=text role=writes scope=region/license value=lock +bound-lock/1 about="the lines a later line replaced, with when they were replaced" at=policy:region/history by=target form=alphabet measure=text role=writes scope=region/history value=lock +bound-lock/1 about="the lock a place is published with, seen from inside it: the bootstrap first, the wire and the keys it is read with, the regions it is written in, its own lines and every line a view of it reads, with the place's name gone from every scope, need, policy and cone; nothing of the tree's history and nothing that needs outside the place" at=policy:region by=target form=alphabet measure=text role=writes scope=region/published-lock value=lock +bound-lock/1 about="the lock lines a place holds in its own files, unsigned, as they are written there" at=policy:region/lock-line by=target form=alphabet measure=text role=writes scope=region/lock-line value=leaves +bound-lock/1 about="the manifest the package carries, rendered from the same lines without the three fields only this tree's resolver reads: what npm packs and a consumer installs" at=policy:region/published-manifest by=target form=alphabet measure=text role=writes scope=region/published-manifest value=lock +bound-lock/1 about="the manifest the place holds, rendered from the lines it signs about itself: the fields a consumer reads and the three a resolver older than exports still needs in this tree" at=policy:region/manifest by=target form=alphabet measure=text role=writes scope=region/manifest value=lock +bound-lock/1 about="the notation of the object at a resolution: at zero the tuple a cell is; at one the tuple and the formulas of what it rests on, in the order they rest; at three each formula beside its law's sentence; at eight all of it with the signature of every arrow and the states" at=policy:region by=target form=alphabet measure=text role=writes scope=region/notation value=lock +bound-lock/1 about="the obligatory as its definition says it, with the four states and the parts it is made of" at=policy:region by=target form=alphabet measure=text role=writes scope=region/the-object value=lock +bound-lock/1 about="the one line that installs it: the verb the lock names, then the name its manifest carries" at=policy:region by=target form=alphabet measure=text role=writes scope=region/install value=lock +bound-lock/1 about="the one line that says what this place is: claims, demands paid, ceilings met, what the second head said, and what a fold of it costs" at=policy:region/programs by=target form=alphabet measure=text role=writes scope=region/programs value=lock +bound-lock/1 about="the open questions of a place, as the lock asks them" at=policy:region/question by=target form=alphabet measure=text role=writes scope=region/question value=lock +bound-lock/1 about="the options a place builds with, each from its own line" at=policy:region by=target form=alphabet measure=text role=writes scope=region/build value=lock +bound-lock/1 about="the pages below the door, as links from the views that write them: the reference and the pages to learn from; the forge shows the guide and the licence itself" at=policy:region by=target form=alphabet measure=text role=writes scope=region/pointers value=lock +bound-lock/1 about="the paper: the owner's words on what it proves, then the reference a reader copies, its authors, year, title, version, publisher and address" at=policy:region by=target form=alphabet measure=text role=writes scope=region/the-paper value=lock +bound-lock/1 about="the prose a place keeps beside its source, read as paragraphs and never as headings" at=policy:region/why by=target form=alphabet measure=text role=writes scope=region/why value=leaves +bound-lock/1 about="the question that costs least to close next" at=policy:region/cheapest-closer by=target form=alphabet measure=text role=writes scope=region/cheapest-closer value=lock +bound-lock/1 about="the questions with no answer yet, widest first" at=policy:region/open-questions by=target form=alphabet measure=text role=writes scope=region/open-questions value=lock +bound-lock/1 about="the receipts a place is published with: what it observed, seen from inside it, without the word the tree's second head gave, since the published place asks its own" at=policy:region by=target form=alphabet measure=text role=writes scope=region/published-receipts value=lock +bound-lock/1 about="the regions spoken in at more than two epochs" at=policy:region/resonance by=target form=alphabet measure=text role=writes scope=region/resonance value=lock +bound-lock/1 about="the regions spoken in less this epoch than last" at=policy:region/receding by=target form=alphabet measure=text role=writes scope=region/receding value=lock +bound-lock/1 about="the regions spoken in more this epoch than last" at=policy:region/approaching by=target form=alphabet measure=text role=writes scope=region/approaching value=lock +bound-lock/1 about="the release the forge makes after the tag: the version published once by the trusted publisher, and its tarball attached" at=policy:region by=target form=alphabet measure=text role=writes scope=region/pipeline-release value=lock +bound-lock/1 about="the scale the shortest example draws: each claim as a bar and what they hold together beneath them" at=policy:region by=target form=alphabet measure=text role=writes scope=region/picture value=lock +bound-lock/1 about="the shortest example this package ships and what it prints, with the digest the lock pins for it" at=policy:region by=target form=alphabet measure=text role=writes scope=region/first-use value=lock +bound-lock/1 about="the tag the forge makes for the version the manifest names, once" at=policy:region by=target form=alphabet measure=text role=writes scope=region/pipeline-tag value=lock +bound-lock/1 about="the theory of a place as its lists, each law with what met it and what would break it" at=policy:region/laws by=target form=alphabet measure=text role=writes scope=region/laws value=readings +bound-lock/1 about="the three axioms the rest leans on hardest by their sentence, the others by name, and one theorem meeting its measurement" at=policy:region by=target form=alphabet measure=text role=writes scope=region/what-holds value=lock +bound-lock/1 about="the whole idea in one picture, before any name is introduced" at=policy:region/idea by=target form=alphabet measure=text role=writes scope=region/idea value=prose +bound-lock/1 about="topos-node is read one region at a time, and each answers one question." at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/reading/lead value=lock +bound-lock/1 about="two readings of one cell that do not meet, with both sides named" at=policy:region/forks by=target form=alphabet measure=text role=writes scope=region/forks value=lock +bound-lock/1 about="what a demand costs to pay and what paying it lands" at=policy:region/take by=target form=alphabet measure=text role=writes scope=region/take value=lock +bound-lock/1 about="what a line is worth beyond what it says, in bits still free" at=policy:region/premium by=target form=alphabet measure=text role=writes scope=region/premium value=lock +bound-lock/1 about="what a node package is, rendered from its lines: the two manifests one lock makes, and how it builds" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/what value=lock +bound-lock/1 about="what a package carries of its own reading, so a clone folds without running anything" at=policy:region/receipts by=target form=alphabet measure=text role=writes scope=region/receipts value=readings +bound-lock/1 about="what a place holds that nothing reaches: a test or a sample no demand names and no run reads, and a page no view writes and no demand needs" at=policy:region by=target form=alphabet measure=text role=writes scope=region/orphans value=lock +bound-lock/1 about="what a repository of the place never holds, one line each" at=policy:region by=target form=alphabet measure=text role=writes scope=region/ignore value=lock +bound-lock/1 about="what a tree has not answered, one card per cell: its cone by digest, its ceiling, its origins and each state it could take with what that state would be worth" at=policy:region/cells by=target form=alphabet measure=text role=writes scope=region/cells value=lock +bound-lock/1 about="what each leaf of the place is, written or rendered, so a page says which of its own files were never typed" at=policy:region/role by=target form=alphabet measure=text role=writes scope=region/role value=leaves +bound-lock/1 about="what is open in each place, folded until asked for: conjectures, hazards by kind, and demands not yet paid" at=policy:region by=target form=alphabet measure=text role=writes scope=region/what-is-open value=lock +bound-lock/1 about="what is still undecided, in bits, by region and by the epoch it was born in" at=policy:region/freedom by=target form=alphabet measure=text role=writes scope=region/freedom value=lock +bound-lock/1 about="what it takes to sign here, and who may" at=policy:region/sign by=target form=alphabet measure=text role=writes scope=region/sign value=lock +bound-lock/1 about="what lies where in the source, counted from the tree itself" at=policy:region/folders by=target form=alphabet measure=text role=writes scope=region/folders value=leaves +bound-lock/1 about="what rests on each line, so what would move if it moved is known before it moves" at=policy:region/dependents by=target form=alphabet measure=text role=writes scope=region/dependents value=lock +bound-lock/1 about="what runs here and what is read, said apart" at=policy:region/environments by=target form=alphabet measure=text role=writes scope=region/environments value=prose +bound-lock/1 about="what the object rests on, drawn: the definition most offers rest on and the lines it rests on, each by its name" at=policy:region by=target form=alphabet measure=text role=writes scope=region/rests value=lock +bound-lock/1 about="what the package attacks for an engineer, a mathematician and a physicist, in the owner's words" at=policy:region by=target form=alphabet measure=text role=writes scope=region/audiences value=lock +bound-lock/1 about="what the theory proves and which views implement it" at=policy:region/paper by=target form=alphabet measure=text role=writes scope=region/paper value=prose +bound-lock/1 about="what this place takes from another, by name" at=policy:region/consumes by=target form=alphabet measure=text role=writes scope=region/consumes value=readings +bound-lock/1 about="what this work cites and by what identifier" at=policy:region/cite by=target form=alphabet measure=text role=writes scope=region/cite value=readings +bound-lock/1 about="where looking is worth most, in bits per place" at=policy:region/gaze by=target form=alphabet measure=text role=writes scope=region/gaze value=lock +bound-lock/1 about="where the package goes next, in the owner's words, in four lines at most" at=policy:region by=target form=alphabet measure=text role=writes scope=region/where-next value=lock +bound-lock/1 about="where this place stands in the tree it belongs to" at=policy:region/scene by=target form=alphabet measure=text role=writes scope=region/scene value=lock +bound-lock/1 about="whether a region holds without any one of its origins" at=policy:region/robustness by=target form=alphabet measure=text role=writes scope=region/robustness value=lock-and-readings +bound-lock/1 about="which view answers which question, in the words each view says of itself" at=policy:region by=target form=alphabet measure=text role=writes scope=region/reading value=lock +bound-lock/1 about="who spoke in each region of the tree, head and reader alike" at=policy:region/origins by=target form=alphabet measure=text role=writes scope=region/origins value=lock-and-readings +bound-lock/1 about="{count} hold" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/held value=lock +bound-lock/1 about="{count} meet at {lo}..{hi}: {state}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/cell/together value=lock +bound-lock/1 about="{count} meet at {lo}..{hi}; {who} is apart: {state}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/cell/outlier value=lock +bound-lock/1 about="{count} regions, each read off the lines its descriptor declares and nothing else; it reaches {effects} beyond them." at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/regions/lead value=lock +bound-lock/1 about="{count} regions, the longest of them {longest} lines" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/regions value=lock +bound-lock/1 about="{count} vector files, each held from the blob" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/vectors value=lock +bound-lock/1 about="{glyph} `{check}`" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/check/command value=lock +bound-lock/1 about="{glyph} {count} cases hold" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/check/held value=lock +bound-lock/1 about="{name} reads {reads}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/region value=lock +bound-lock/1 about="{name}@{version} is published" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/published value=lock +bound-lock/1 about="{name}@{version} is published" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/published value=lock +bound-lock/1 about="{version} is released" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/released value=lock +bound-lock/1 about="{version} is released" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/released value=lock +bound-lock/1 about="{version} is tagged" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/tagged value=lock +bound-lock/1 about="{version} is tagged" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/tagged value=lock +bound-lock/1 about="{version}, as its lock holds it" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/notes value=lock +bound-lock/1 about="{version}, as its lock holds it" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/notes value=lock +bound-lock/1 about="| region | reads | writes |" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/regions/table value=lock +bound-lock/1 about=Check at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/check/heading value=lock +bound-lock/1 about=Check at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/check/heading value=lock +bound-lock/1 about=Contributing at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/guide/heading value=lock +bound-lock/1 about=Pointers at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pointers/heading value=lock +bound-lock/1 about=Pointers at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/pointers/heading value=lock +bound-lock/1 about=Reference at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/regions/heading value=lock +bound-lock/1 about=cases at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/cases value=lock +bound-lock/1 about=dependencies at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/dependencies value=lock +bound-lock/1 about=license at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/license value=lock +bound-lock/1 about=node at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/engines value=lock +bound-lock/1 about=receipt at=witness:own-project-prose by=target form=alphabet measure=text role=writes scope=prose/en/claims/receipt value=lock +bound-lock/1 about=verify at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/verify value=lock +bound-lock/1 about=version at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/version value=lock +bound-lock/1 at=place:topos-measure/release by=target form=alphabet measure=id role=demands scope=view/pipeline-release shape=.github/workflows/release.yml value=github-actions bound-lock/1 at=place:topos-node by=target form=alphabet measure=id role=writes scope=sources/topos-node value=github:Lapxo/topos-node -bound-lock/1 at=policy:version by=target form=alphabet measure=id needs=package.json role=writes scope=version shape=package.json value=0.1.2 +bound-lock/1 at=place:topos-node by=target form=alphabet measure=status role=writes scope=publish/bootstrap value=topos-node bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/acts value="observe:role=writes|withdraw:value=withdraw|sign:reads,interval,hi|require:reads,interval,lo|join:widening,at=witness|refine:@res" bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/at-classes value=origin|place|receipt|witness|policy bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/badges/world value=version|license|engines|dependencies|cases|verify|doi @@ -61,27 +179,56 @@ bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/offers/world value="artifacts=src/**/*.js\\|src/**/*.ts|capsules=./|concepts=src/**/*.ts|hazards=**|laws=**/*.bound|packages=package.json\\|tsconfig.json|said=src/**/*.ts|source=src/**/*.ts|vocabulary=src/**/*.ts" bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/pipeline/world value="branch=main|runtime=22|version=node -p \"require('./package.json').version\"" bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/questions value=source/answers|source/arrow|source/calls|source/carries|source/declared|source/lang|source/literal|source/returns|source/signature|source/union -bound-lock/1 at=policy:audit by=target form=alphabet measure=resolution role=reads scope=audit/wire/receipts value=0|1|8 -bound-lock/1 at=policy:wire/region-measures by=target form=alphabet measure=id role=reads scope=audit/wire/region-measures value=coordinates|leaves bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/required value=scope|role|form|measure|value|by|at bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/roles value=reads|writes|demands|source|render|receipt bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/rows value=claim|held -bound-lock/1 at=policy:wire/shapes by=target form=alphabet measure=id role=reads scope=audit/wire/shapes value=decision|lock|package|reader|render|run|vector|view -bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/ships value=dist|README.md|LICENSE|TARGET.bound bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/signature-algorithms value=ed25519|sha256:58f1f0983fe65f062bebefd0a6ffc901049c67525ef12dd86ed4dbb7a184b834|ed25519:era1 -bound-lock/1 at=policy:wire/states by=target form=alphabet measure=id role=reads scope=audit/wire/states value=absent|present|unread|withdraw -bound-lock/1 at=policy:wire/templates by=target form=alphabet measure=id role=reads scope=audit/wire/templates value={cone}|{roots} bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/verdicts value=agrees|forks|stale|grey|none bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/views value=field|spectrum|ideal|chain|complement|dual|product|quotient|valuation|galois bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/views/world value=citation-file|gitignore|guide|manifest|pipeline-release|readme-capsule|reference-capsule|tsconfig bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/worlds/documents value=readme|markdown|svg|mermaid|cff|doi|badge bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/worlds/forge value=github|workflow bound-lock/1 at=policy:audit by=target form=alphabet measure=id role=reads scope=audit/wire/worlds/packages value=npm|tsconfig +bound-lock/1 at=policy:audit by=target form=alphabet measure=resolution role=reads scope=audit/wire/receipts value=0|1|8 +bound-lock/1 at=policy:author by=target form=alphabet measure=id needs=package.json role=writes scope=author shape=package.json value=Lapxo +bound-lock/1 at=policy:bound/011-port-release by=target form=alphabet measure=signer role=writes scope=keys/owner value=file +bound-lock/1 at=policy:bound/011-port-release by=target form=interval measure=bytes role=writes scope=signer/response-bytes value=1048576..1048576 +bound-lock/1 at=policy:bound/011-port-release by=target form=interval measure=milliseconds role=writes scope=signer/timeout value=30000..30000 +bound-lock/1 at=policy:bound/leaf-roles by=target form=alphabet measure=role role=reads scope=leaf-role/receipts.bound value=derived +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/allowImportingTsExtensions shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/declaration shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/esModuleInterop shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/forceConsistentCasingInFileNames shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/include shape=tsconfig.json value=src +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/incremental shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/module shape=tsconfig.json value=NodeNext +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/moduleResolution shape=tsconfig.json value=NodeNext +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/noFallthroughCasesInSwitch shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/noImplicitOverride shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/noImplicitReturns shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/outDir shape=tsconfig.json value=dist +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/rewriteRelativeImportExtensions shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/rootDir shape=tsconfig.json value=src +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/skipLibCheck shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/strict shape=tsconfig.json value=true +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/target shape=tsconfig.json value=ES2020 +bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/tsBuildInfoFile shape=tsconfig.json value=.cache/tsbuildinfo +bound-lock/1 at=policy:capsule/at-most-four-hundred by=target form=interval measure=count role=reads scope=lines/src/**/* value=0..400 +bound-lock/1 at=policy:capsule/customisation-is-the-places-lines by=target form=interval measure=count role=reads scope=source/customised/src/** value=0..0 +bound-lock/1 at=policy:capsule/language-facts-come-from-the-language-capsule by=target form=interval measure=count role=reads scope=source/lexed/src/** value=0..0 +bound-lock/1 at=policy:capsule/one-world by=target form=alphabet measure=id role=reads scope=literal/src/** value=not:readme|markdown|svg|mermaid|cff|doi|github|workflow|badge +bound-lock/1 at=policy:capsule/reads-lines-and-receipts-only by=target form=interval measure=count role=reads scope=source/unread/src/** value=0..0 +bound-lock/1 at=policy:check by=target form=alphabet measure=id needs=package.json role=writes scope=check value="npm ci && npm run build" bound-lock/1 at=policy:cites by=target form=alphabet measure=author role=writes scope=cites/two-sided-constraints value="Ochoa, N." bound-lock/1 at=policy:cites by=target form=alphabet measure=doi role=writes scope=cites/two-sided-constraints value=10.5281/zenodo.21858428 bound-lock/1 at=policy:cites by=target form=alphabet measure=publisher role=writes scope=cites/two-sided-constraints value=Zenodo bound-lock/1 at=policy:cites by=target form=alphabet measure=version role=writes scope=cites/two-sided-constraints value=1.0.0 bound-lock/1 at=policy:cites by=target form=alphabet measure=year role=writes scope=cites/two-sided-constraints value=2026 +bound-lock/1 at=policy:docs by=target form=alphabet measure=id needs=docs/reference.md role=writes scope=docs/what value=docs/reference.md +bound-lock/1 at=policy:docs by=target form=alphabet measure=id role=writes scope=docs/reading value=build|manifest|published-manifest +bound-lock/1 at=policy:docs by=target form=alphabet measure=id role=writes scope=docs/world value=package +bound-lock/1 at=policy:engines by=target form=alphabet measure=id needs=package.json role=writes scope=engines shape=package.json value=">=22.12" +bound-lock/1 at=policy:exports by=target form=alphabet measure=id needs=package.json role=writes scope=exports shape=package.json value=dist/index bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/figure/fold value=REQUIRED|FREE|CONFLICT bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/figure/line value=scope|role|measure|form|value|at bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/formula value=text|latex|mathml @@ -92,32 +239,6 @@ bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/prose/en/heading value=capital bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/prose/en/list value=", | and " bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/prose/en/numbers value=no|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve -bound-lock/1 about=cases at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/cases value=lock -bound-lock/1 about=dependencies at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/dependencies value=lock -bound-lock/1 about=node at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/engines value=lock -bound-lock/1 about="{count} hold" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/held value=lock -bound-lock/1 about=license at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/license value=lock -bound-lock/1 about=verify at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/verify value=lock -bound-lock/1 about=version at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/badge/version value=lock -bound-lock/1 about="Cite it as {name}." at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/cff/name value=lock -bound-lock/1 about="{glyph} `{check}`" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/check/command value=lock -bound-lock/1 about=Check at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/check/heading value=lock -bound-lock/1 about="{glyph} {count} cases hold" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/check/held value=lock -bound-lock/1 about="Clone, `{check}`. A leaf that differs from what its lines render is the contribution: send it with the lines it was handed.\nNothing else is asked. Lines land through the fold, never by hand; a page and the lock disagree, the lock is right." at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/contributing value=lock -bound-lock/1 about=Contributing at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/guide/heading value=lock -bound-lock/1 about="the check command, which is owed" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/guide/owed value=lock -bound-lock/1 about="{version}, as its lock holds it" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/notes value=lock -bound-lock/1 about="publish the version once, by the trusted publisher" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/publish value=lock -bound-lock/1 about="{name}@{version} is published" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/published value=lock -bound-lock/1 about="release the version with its tarball, once" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/release value=lock -bound-lock/1 about="{version} is released" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/released value=lock -bound-lock/1 about="tag the version the manifest names, once" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/tag value=lock -bound-lock/1 about="{version} is tagged" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pipeline/tagged value=lock -bound-lock/1 about=Pointers at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/pointers/heading value=lock -bound-lock/1 about=Reference at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/regions/heading value=lock -bound-lock/1 about="{count} regions, each read off the lines its descriptor declares and nothing else; it reaches {effects} beyond them." at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/regions/lead value=lock -bound-lock/1 about="its leaf" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/regions/leaf value=lock -bound-lock/1 about="| region | reads | writes |" at=policy:form by=target form=alphabet measure=text role=writes scope=form/prose/en/page/regions/table value=lock bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/prose/en/sentence value=capital|period bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/prose/en/separator value=" · " bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/prose/en/state/CONFLICT value="its origins are apart" @@ -273,170 +394,45 @@ bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/template/what-holds/other value=name|about bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/template/what-holds/others value=count bound-lock/1 at=policy:form by=target form=alphabet measure=id role=writes scope=form/template/wire/blob value=hash -bound-lock/1 at=policy:topos/wire-page by=target form=alphabet measure=id role=writes scope=form/template/wire/canonical value=hash -bound-lock/1 at=policy:topos/wire-page by=target form=alphabet measure=id role=writes scope=form/template/wire/encoding value=encoding -bound-lock/1 at=policy:topos/wire-page by=target form=alphabet measure=id role=writes scope=form/template/wire/header value=header -bound-lock/1 at=policy:topos/wire-page by=target form=alphabet measure=id role=writes scope=form/template/wire/lead value=header|encoding -bound-lock/1 at=policy:topos/wire-page by=target form=alphabet measure=id role=writes scope=form/template/wire/order value=encoding +bound-lock/1 at=policy:hazard/zero by=target form=interval measure=count role=reads scope=hazard/**/src/** value=0..0 +bound-lock/1 at=policy:ignore by=target form=alphabet measure=id role=writes scope=ignore value=.bound/|dist/|node_modules/|.cache/ +bound-lock/1 at=policy:install by=target form=alphabet measure=id needs=package.json role=writes scope=install value="npm install" +bound-lock/1 at=policy:keys by=owner epoch=1 form=alphabet measure=public-key role=reads scope=keys/owner sig="ed25519:era1:f9v/MckzhV22QrzF/liHT/vPfN+mrn9PFChpcQQBRYw2y5tMlv+JcNo8XYthh8Seaia3N+CcbRW3mJaxafqSCw==" value="MCowBQYDK2VwAyEAIYI0be8OWhf3HcVceKpibjgZ+hbYJKYO5ayX8Kk16LE=" +bound-lock/1 at=policy:keys by=owner epoch=1 form=alphabet measure=public-key role=reads scope=keys/verify sig="ed25519:era1:vH9Edf77HqyUvWK9O/1s6E02C+AkMqUV9slcjUztxQ2P1N5knpLis+g9sVDuZ/zUwFdUsqtS0luRgis7rdXvCg==" value="MCowBQYDK2VwAyEACLnnkNAHf4V7vXG4cCZv6rM7suRwGTe0MJoqqCUxnvw=" +bound-lock/1 at=policy:keys by=target form=alphabet measure=class role=reads scope=keys/owner value=authorize +bound-lock/1 at=policy:keys by=target form=alphabet measure=class role=reads scope=keys/verify value=attest +bound-lock/1 at=policy:keys by=target form=alphabet measure=coverage role=reads scope=keys/owner value=* +bound-lock/1 at=policy:keys by=target form=alphabet measure=coverage role=reads scope=keys/reader value=* +bound-lock/1 at=policy:keys by=target form=alphabet measure=coverage role=reads scope=keys/verify value=verify +bound-lock/1 at=policy:keys by=target form=interval measure=resolution role=reads scope=keys/owner value=1..16 +bound-lock/1 at=policy:keys by=target form=interval measure=resolution role=reads scope=keys/verify value=1..16 +bound-lock/1 at=policy:keywords by=target form=alphabet measure=id needs=package.json role=writes scope=keywords shape=package.json value=topos|capsule|manifest|render +bound-lock/1 at=policy:lang by=target form=alphabet measure=id role=writes scope=lang value=en bound-lock/1 at=policy:leaf-role by=target form=alphabet measure=role role=reads scope=leaf-role/.cache value=derived bound-lock/1 at=policy:leaf-role by=target form=alphabet measure=role role=reads scope=leaf-role/.github value=derived bound-lock/1 at=policy:leaf-role by=target form=alphabet measure=role role=reads scope=leaf-role/.gitignore value=derived bound-lock/1 at=policy:leaf-role by=target form=alphabet measure=role role=reads scope=leaf-role/CITATION.cff value=derived bound-lock/1 at=policy:leaf-role by=target form=alphabet measure=role role=reads scope=leaf-role/CONTRIBUTING.md value=derived bound-lock/1 at=policy:leaf-role by=target form=alphabet measure=role role=reads scope=leaf-role/package-lock.json value=derived -bound-lock/1 at=policy:bound/leaf-roles by=target form=alphabet measure=role role=reads scope=leaf-role/receipts.bound value=derived bound-lock/1 at=policy:leaf-role by=target form=alphabet measure=role role=reads scope=leaf-role/reference.md value=derived -bound-lock/1 about="MIT License\n\nCopyright (c) 2026 Lapxo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE." at=policy:license by=target form=alphabet measure=id role=demands scope=license value=MIT -bound-lock/1 at=policy:capsule/at-most-four-hundred by=target form=interval measure=count role=reads scope=lines/src/**/* value=0..400 -bound-lock/1 at=policy:capsule/one-world by=target form=alphabet measure=id role=reads scope=literal/src/** value=not:readme|markdown|svg|mermaid|cff|doi|github|workflow|badge -bound-lock/1 at=policy:open by=target form=alphabet measure=id role=writes scope=open/who value="for a ledger=H1-uncertainty|for a ledger=H2-density-attracts|for a mathematician=H4-enriched-semilattice|for a mathematician=H9-the-obligatory-is-maximal|readings=H3-a-distant-signature-moves-a-cell-that-did-not-move|readings=H5-hilbert-is-the-obligatory-without-four-fields|readings=H6-structure-of-measurement|readings=H7-the-medium-of-encounters|readings=H8-refereed-game" -bound-lock/1 about="{count} meet at {lo}..{hi}; {who} is apart: {state}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/cell/outlier value=lock -bound-lock/1 about="{count} meet at {lo}..{hi}: {state}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/cell/together value=lock -bound-lock/1 about="packed as {digest}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/blob value=lock -bound-lock/1 about="declares {domain}, runs on {runtime}, reaches {effects}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/declares value=lock -bound-lock/1 about="run by the {runtime} host" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/host value=lock -bound-lock/1 about="pinned by {place}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/pinned value=lock -bound-lock/1 about="{name} reads {reads}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/region value=lock -bound-lock/1 about="{count} regions, the longest of them {longest} lines" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/regions value=lock -bound-lock/1 about="against topos {digest}" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/topos value=lock -bound-lock/1 about="{count} vector files, each held from the blob" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/figure/world/vectors value=lock -bound-lock/1 about="{version}, as its lock holds it" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/notes value=lock -bound-lock/1 about="publish the version once, by the trusted publisher" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/publish value=lock -bound-lock/1 about="{name}@{version} is published" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/published value=lock -bound-lock/1 about="release the version with its tarball, once" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/release value=lock -bound-lock/1 about="{version} is released" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/released value=lock -bound-lock/1 about="tag the version the manifest names, once" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/tag value=lock -bound-lock/1 about="{version} is tagged" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/tagged value=lock -bound-lock/1 about="what a node package is, rendered from its lines: the two manifests one lock makes, and how it builds" at=policy:prose by=target form=alphabet measure=text role=writes scope=prose/en/what value=lock -bound-lock/1 about="the regions spoken in more this epoch than last" at=policy:region/approaching by=target form=alphabet measure=text role=writes scope=region/approaching value=lock -bound-lock/1 about="what the package attacks for an engineer, a mathematician and a physicist, in the owner's words" at=policy:region by=target form=alphabet measure=text role=writes scope=region/audiences value=lock -bound-lock/1 about="the axioms of a place, the three most rested on spelled out in their own words" at=policy:region/axioms by=target form=alphabet measure=text role=writes scope=region/axioms value=leaves -bound-lock/1 about="the facts of the lock as badges a reader recognizes: version, licence, engine, dependencies, the cases that hold, what the second head says, grey until the instrument that runs it is published, and the paper's identifier" at=policy:region by=target form=alphabet measure=text role=writes scope=region/badges value=lock -bound-lock/1 about="each signer as a life: what it signed, what it left free and where it forked" at=policy:region/biography by=target form=alphabet measure=text role=writes scope=region/biography value=lock -bound-lock/1 about="the options a place builds with, each from its own line" at=policy:region by=target form=alphabet measure=text role=writes scope=region/build value=lock -bound-lock/1 about="what a tree has not answered, one card per cell: its cone by digest, its ceiling, its origins and each state it could take with what that state would be worth" at=policy:region/cells by=target form=alphabet measure=text role=writes scope=region/cells value=lock -bound-lock/1 about="every conjecture of a place as the thing it is: who met it, with what, how together their claims arrived, and whether anything has closed it" at=policy:region/census by=target form=alphabet measure=text role=writes scope=region/census value=readings -bound-lock/1 about="the citation a forge offers with one click, from the lines that already say it: the software by its name, version, author, repository and licence, and the paper it rests on as the citation the forge prefers" at=policy:region by=target form=alphabet measure=text role=writes scope=region/cff value=lock -bound-lock/1 about="the question that costs least to close next" at=policy:region/cheapest-closer by=target form=alphabet measure=text role=writes scope=region/cheapest-closer value=lock -bound-lock/1 about="how not to believe any of it: the command a clone runs today, and the one that runs the cases with bound once it ships, with how many there are; the repository only once it resolves" at=policy:region by=target form=alphabet measure=text role=writes scope=region/check value=lock -bound-lock/1 about="what this work cites and by what identifier" at=policy:region/cite by=target form=alphabet measure=text role=writes scope=region/cite value=readings -bound-lock/1 about="how together a region arrived, one when every line landed at the same turn of the period" at=policy:region/coherence by=target form=alphabet measure=text role=writes scope=region/coherence value=lock-and-readings -bound-lock/1 about="the commands the owner gives, and a grey mark while the verb they call is not published" at=policy:region by=target form=alphabet measure=text role=writes scope=region/commands value=lock -bound-lock/1 about="every conjecture with the falsifier its own line names" at=policy:region/conjectures by=target form=alphabet measure=text role=writes scope=region/conjectures value=leaves -bound-lock/1 about="what this place takes from another, by name" at=policy:region/consumes by=target form=alphabet measure=text role=writes scope=region/consumes value=readings -bound-lock/1 about="what rests on each line, so what would move if it moved is known before it moves" at=policy:region/dependents by=target form=alphabet measure=text role=writes scope=region/dependents value=lock -bound-lock/1 about="the first screen of the root: its name, the figure one of its places draws, and one sentence of what the places are together" at=policy:region by=target form=alphabet measure=text role=writes scope=region/door value=lock -bound-lock/1 about="what runs here and what is read, said apart" at=policy:region/environments by=target form=alphabet measure=text role=writes scope=region/environments value=prose -bound-lock/1 about="the cell of the shortest example, drawn, with the legend of its marks as its caption" at=policy:region by=target form=alphabet measure=text role=writes scope=region/figure value=lock -bound-lock/1 about="the shortest example this package ships and what it prints, with the digest the lock pins for it" at=policy:region by=target form=alphabet measure=text role=writes scope=region/first-use value=lock -bound-lock/1 about="what lies where in the source, counted from the tree itself" at=policy:region/folders by=target form=alphabet measure=text role=writes scope=region/folders value=leaves -bound-lock/1 about="two readings of one cell that do not meet, with both sides named" at=policy:region/forks by=target form=alphabet measure=text role=writes scope=region/forks value=lock -bound-lock/1 about="what is still undecided, in bits, by region and by the epoch it was born in" at=policy:region/freedom by=target form=alphabet measure=text role=writes scope=region/freedom value=lock -bound-lock/1 about="where looking is worth most, in bits per place" at=policy:region/gaze by=target form=alphabet measure=text role=writes scope=region/gaze value=lock -bound-lock/1 about="lines that stand on one origin and are therefore not yet information" at=policy:region/grey by=target form=alphabet measure=text role=writes scope=region/grey value=lock -bound-lock/1 about="the guide at resolution zero: five lines, the command that checks the place, how many conjectures are open, and that nothing else is asked" at=policy:region by=target form=alphabet measure=text role=writes scope=region/guide-at-zero value=lock -bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=writes scope=region/harness value=harness/** -bound-lock/1 about="the first screen: the mark the place is known by, its name, the badges its lock reads to, and the one line of what it is; what is not signed is not on it" at=policy:region by=target form=alphabet measure=text role=writes scope=region/hero value=lock -bound-lock/1 about="the lines a later line replaced, with when they were replaced" at=policy:region/history by=target form=alphabet measure=text role=writes scope=region/history value=lock -bound-lock/1 about="how the places rest on each other, drawn from the lock's dependency lines and folded until asked for" at=policy:region by=target form=alphabet measure=text role=writes scope=region/how-they-rest value=lock -bound-lock/1 about="the whole idea in one picture, before any name is introduced" at=policy:region/idea by=target form=alphabet measure=text role=writes scope=region/idea value=prose -bound-lock/1 about="what a repository of the place never holds, one line each" at=policy:region by=target form=alphabet measure=text role=writes scope=region/ignore value=lock -bound-lock/1 about="the one line that installs it: the verb the lock names, then the name its manifest carries" at=policy:region by=target form=alphabet measure=text role=writes scope=region/install value=lock -bound-lock/1 about="the theory of a place as its lists, each law with what met it and what would break it" at=policy:region/laws by=target form=alphabet measure=text role=writes scope=region/laws value=readings -bound-lock/1 about="a page to learn from one example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives; the example is the one the page is named after" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn value=lock -bound-lock/1 about="a page to learn from the in-phase example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn-in-phase value=lock -bound-lock/1 about="a page to learn from the price example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn-price value=lock -bound-lock/1 about="a page to learn from the signature example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn-signature value=lock -bound-lock/1 about="a page to learn from the thermometer example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn-thermometer value=lock -bound-lock/1 about="a page to learn from the withdrawal example: the cell it draws, what it calls and prints, the law it shows, its form, and where it lives" at=policy:region by=target form=alphabet measure=text role=writes scope=region/learn-withdrawal value=lock -bound-lock/1 about="the licence, carried on a line of the lock and rendered into its own leaf" at=policy:region/license by=target form=alphabet measure=text role=writes scope=region/license value=lock -bound-lock/1 about="the lock lines a place holds in its own files, unsigned, as they are written there" at=policy:region/lock-line by=target form=alphabet measure=text role=writes scope=region/lock-line value=leaves -bound-lock/1 about="the manifest the place holds, rendered from the lines it signs about itself: the fields a consumer reads and the three a resolver older than exports still needs in this tree" at=policy:region/manifest by=target form=alphabet measure=text role=writes scope=region/manifest value=lock -bound-lock/1 about="the legend of the marks a page is drawn in, in the owner's words" at=policy:region by=target form=alphabet measure=text role=writes scope=region/marks value=lock -bound-lock/1 about="the notation of the object at a resolution: at zero the tuple a cell is; at one the tuple and the formulas of what it rests on, in the order they rest; at three each formula beside its law's sentence; at eight all of it with the signature of every arrow and the states" at=policy:region by=target form=alphabet measure=text role=writes scope=region/notation value=lock -bound-lock/1 about="every operation offered, with how many vectors reached it" at=policy:region/offers by=target form=alphabet measure=text role=writes scope=region/offers value=readings -bound-lock/1 about="every conjecture of the place, marked as such, with what would falsify it" at=policy:region by=target form=alphabet measure=text role=writes scope=region/open-conjectures value=lock -bound-lock/1 about="the questions with no answer yet, widest first" at=policy:region/open-questions by=target form=alphabet measure=text role=writes scope=region/open-questions value=lock -bound-lock/1 about="who spoke in each region of the tree, head and reader alike" at=policy:region/origins by=target form=alphabet measure=text role=writes scope=region/origins value=lock-and-readings -bound-lock/1 about="what a place holds that nothing reaches: a test or a sample no demand names and no run reads, and a page no view writes and no demand needs" at=policy:region by=target form=alphabet measure=text role=writes scope=region/orphans value=lock -bound-lock/1 about="what the theory proves and which views implement it" at=policy:region/paper by=target form=alphabet measure=text role=writes scope=region/paper value=prose -bound-lock/1 about="the scale the shortest example draws: each claim as a bar and what they hold together beneath them" at=policy:region by=target form=alphabet measure=text role=writes scope=region/picture value=lock -bound-lock/1 about="the release the forge makes after the tag: the version published once by the trusted publisher, and its tarball attached" at=policy:region by=target form=alphabet measure=text role=writes scope=region/pipeline-release value=lock -bound-lock/1 about="the tag the forge makes for the version the manifest names, once" at=policy:region by=target form=alphabet measure=text role=writes scope=region/pipeline-tag value=lock -bound-lock/1 about="the check the forge runs on every push and every proposal" at=policy:region by=target form=alphabet measure=text role=writes scope=region/pipeline-test value=lock -bound-lock/1 about="each place the owner has said what it is, in the order they rest on each other, with its state as a colour and what the fold counts of it: paid, hazards open, and what the second head says" at=policy:region by=target form=alphabet measure=text role=writes scope=region/places value=lock -bound-lock/1 about="the pages below the door, as links from the views that write them: the reference and the pages to learn from; the forge shows the guide and the licence itself" at=policy:region by=target form=alphabet measure=text role=writes scope=region/pointers value=lock -bound-lock/1 about="what a line is worth beyond what it says, in bits still free" at=policy:region/premium by=target form=alphabet measure=text role=writes scope=region/premium value=lock -bound-lock/1 about="the one line that says what this place is: claims, demands paid, ceilings met, what the second head said, and what a fold of it costs" at=policy:region/programs by=target form=alphabet measure=text role=writes scope=region/programs value=lock -bound-lock/1 about="the lock a place is published with, seen from inside it: the bootstrap first, the wire and the keys it is read with, the regions it is written in, its own lines and every line a view of it reads, with the place's name gone from every scope, need, policy and cone; nothing of the tree's history and nothing that needs outside the place" at=policy:region by=target form=alphabet measure=text role=writes scope=region/published-lock value=lock -bound-lock/1 about="the manifest the package carries, rendered from the same lines without the three fields only this tree's resolver reads: what npm packs and a consumer installs" at=policy:region/published-manifest by=target form=alphabet measure=text role=writes scope=region/published-manifest value=lock -bound-lock/1 about="the receipts a place is published with: what it observed, seen from inside it, without the word the tree's second head gave, since the published place asks its own" at=policy:region by=target form=alphabet measure=text role=writes scope=region/published-receipts value=lock -bound-lock/1 about="the open questions of a place, as the lock asks them" at=policy:region/question by=target form=alphabet measure=text role=writes scope=region/question value=lock -bound-lock/1 about="the cell of an example drawn at a resolution: at zero three bars, above it each claim a bar, what they hold together a bar in the colour of a meeting, and its floor and its ceiling named" at=policy:region by=target form=alphabet measure=text role=writes scope=region/ranges value=lock -bound-lock/1 about="which view answers which question, in the words each view says of itself" at=policy:region by=target form=alphabet measure=text role=writes scope=region/reading value=lock -bound-lock/1 about="the regions spoken in less this epoch than last" at=policy:region/receding by=target form=alphabet measure=text role=writes scope=region/receding value=lock -bound-lock/1 about="what a package carries of its own reading, so a clone folds without running anything" at=policy:region/receipts by=target form=alphabet measure=text role=writes scope=region/receipts value=readings -bound-lock/1 about="every ceiling a reading is over, and every demand nothing paid" at=policy:region/red by=target form=alphabet measure=text role=writes scope=region/red value=lock -bound-lock/1 about="every operation with its signature, its derived refusals, what it reaches and the laws it rests on; every law with its kind, view, premises, sentence and whether it reproduces; every form" at=policy:region by=target form=alphabet measure=text role=writes scope=region/reference value=lock -bound-lock/1 about="how often each region of the tree was read" at=policy:region/region-frequency by=target form=alphabet measure=text role=writes scope=region/region-frequency value=readings -bound-lock/1 about="the regions spoken in at more than two epochs" at=policy:region/resonance by=target form=alphabet measure=text role=writes scope=region/resonance value=lock -bound-lock/1 about="what the object rests on, drawn: the definition most offers rest on and the lines it rests on, each by its name" at=policy:region by=target form=alphabet measure=text role=writes scope=region/rests value=lock -bound-lock/1 about="how many of those epochs it was actually spoken in" at=policy:region/rhythm by=target form=alphabet measure=text role=writes scope=region/rhythm value=lock-and-readings -bound-lock/1 about="whether a region holds without any one of its origins" at=policy:region/robustness by=target form=alphabet measure=text role=writes scope=region/robustness value=lock-and-readings -bound-lock/1 about="what each leaf of the place is, written or rendered, so a page says which of its own files were never typed" at=policy:region/role by=target form=alphabet measure=text role=writes scope=region/role value=leaves -bound-lock/1 about="where this place stands in the tree it belongs to" at=policy:region/scene by=target form=alphabet measure=text role=writes scope=region/scene value=lock -bound-lock/1 about="the check a clone runs alone: the subpaths the manifest offers, imported, and the second head's signed word, verified against the key the lock admits and the digest of the lock itself" at=policy:region by=target form=alphabet measure=text role=writes scope=region/selfcheck value=lock -bound-lock/1 about="the figure a region makes: a point, an edge, or a polygon" at=policy:region/shape by=target form=alphabet measure=text role=writes scope=region/shape value=lock-and-readings -bound-lock/1 about="what it takes to sign here, and who may" at=policy:region/sign by=target form=alphabet measure=text role=writes scope=region/sign value=lock -bound-lock/1 about="each key, what it has signed and what it may sign" at=policy:region/signers by=target form=alphabet measure=text role=writes scope=region/signers value=lock -bound-lock/1 about="what a demand costs to pay and what paying it lands" at=policy:region/take by=target form=alphabet measure=text role=writes scope=region/take value=lock -bound-lock/1 about="the obligatory as its definition says it, with the four states and the parts it is made of" at=policy:region by=target form=alphabet measure=text role=writes scope=region/the-object value=lock -bound-lock/1 about="the paper: the owner's words on what it proves, then the reference a reader copies, its authors, year, title, version, publisher and address" at=policy:region by=target form=alphabet measure=text role=writes scope=region/the-paper value=lock -bound-lock/1 about="four real calls and what each of them answers" at=policy:region/thirty-seconds by=target form=alphabet measure=text role=writes scope=region/thirty-seconds value=prose -bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=writes scope=region/topos-measure value=topos-measure/** -bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=writes scope=region/topos-typescript-artifacts value=topos-typescript-artifacts/** -bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=writes scope=region/topos-typescript-concepts value=topos-typescript-concepts/** -bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=writes scope=region/topos-typescript-packages value=topos-typescript-packages/** -bound-lock/1 about="the cases a place holds and which of them did not hold, read from what the runner already answered rather than run again" at=policy:region/vectors by=target form=alphabet measure=text role=writes scope=region/vectors value=readings -bound-lock/1 about="the three axioms the rest leans on hardest by their sentence, the others by name, and one theorem meeting its measurement" at=policy:region by=target form=alphabet measure=text role=writes scope=region/what-holds value=lock -bound-lock/1 about="what is open in each place, folded until asked for: conjectures, hazards by kind, and demands not yet paid" at=policy:region by=target form=alphabet measure=text role=writes scope=region/what-is-open value=lock -bound-lock/1 about="where the package goes next, in the owner's words, in four lines at most" at=policy:region by=target form=alphabet measure=text role=writes scope=region/where-next value=lock -bound-lock/1 about="the prose a place keeps beside its source, read as paragraphs and never as headings" at=policy:region/why by=target form=alphabet measure=text role=writes scope=region/why value=leaves -bound-lock/1 about="how many epochs a region spans, from its first line to its last" at=policy:region/width by=target form=alphabet measure=text role=writes scope=region/width value=lock-and-readings -bound-lock/1 at=policy:capsule/customisation-is-the-places-lines by=target form=interval measure=count role=reads scope=source/customised/src/** value=0..0 -bound-lock/1 at=policy:capsule/language-facts-come-from-the-language-capsule by=target form=interval measure=count role=reads scope=source/lexed/src/** value=0..0 -bound-lock/1 at=policy:source by=target form=interval measure=longest role=reads scope=source/longest/src/** value=0..40 -bound-lock/1 at=policy:capsule/reads-lines-and-receipts-only by=target form=interval measure=count role=reads scope=source/unread/src/** value=0..0 -bound-lock/1 at=policy:theme by=target form=alphabet measure=id role=writes scope=theme value=green:2da44e:●|grey:8c959f:○|red:cf222e:✕|fork:8250df:⋔|text:59636e|text-dark:9198a1|text-on:ffffff -bound-lock/1 at=policy:author by=target form=alphabet measure=id needs=package.json role=writes scope=author shape=package.json value=Lapxo -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/allowImportingTsExtensions shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/declaration shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/esModuleInterop shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/forceConsistentCasingInFileNames shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/include shape=tsconfig.json value=src -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/incremental shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/module shape=tsconfig.json value=NodeNext -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/moduleResolution shape=tsconfig.json value=NodeNext -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/noFallthroughCasesInSwitch shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/noImplicitOverride shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/noImplicitReturns shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/outDir shape=tsconfig.json value=dist -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/rewriteRelativeImportExtensions shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/rootDir shape=tsconfig.json value=src -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/skipLibCheck shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/strict shape=tsconfig.json value=true -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/target shape=tsconfig.json value=ES2020 -bound-lock/1 at=policy:build by=target form=alphabet measure=id needs=tsconfig.json role=writes scope=build/tsBuildInfoFile shape=tsconfig.json value=.cache/tsbuildinfo -bound-lock/1 at=policy:check by=target form=alphabet measure=id needs=package.json role=writes scope=check value="npm ci && npm run build" -bound-lock/1 at=policy:dependencies by=target form=alphabet measure=id needs=package.json role=writes scope=dependencies shape=package.json value=@lapxo/topos@^0.1.0 -bound-lock/1 at=policy:engines by=target form=alphabet measure=id needs=package.json role=writes scope=engines shape=package.json value=">=22.12" -bound-lock/1 at=policy:exports by=target form=alphabet measure=id needs=package.json role=writes scope=exports shape=package.json value=dist/index -bound-lock/1 at=policy:ignore by=target form=alphabet measure=id role=writes scope=ignore value=.bound/|dist/|node_modules/|.cache/ -bound-lock/1 at=policy:install by=target form=alphabet measure=id needs=package.json role=writes scope=install value="npm install" -bound-lock/1 at=policy:keywords by=target form=alphabet measure=id needs=package.json role=writes scope=keywords shape=package.json value=topos|capsule|manifest|render -bound-lock/1 at=policy:lang by=target form=alphabet measure=id role=writes scope=lang value=en bound-lock/1 at=policy:license by=target form=alphabet measure=id needs=package.json role=writes scope=license shape=package.json value=MIT +bound-lock/1 at=policy:local-fold-journal by=target form=alphabet measure=class role=reads scope=keys/fold value=fold bound-lock/1 at=policy:name by=target form=alphabet measure=id needs=package.json role=writes scope=name shape=package.json value=@lapxo/topos-node +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/cell value="floor=⊥|ceiling=⊤|origins=O|rest=⊑" +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/claim value="who=origin|lo=span.lo|hi=span.hi|without=takes" +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/formulas value=law/D11-the-obligatory|law/A1-encounter|law/A7-freedom-conserved|law/T49-amplitude-has-sign-and-phase|law/T95-signatures-live-where-they-are-signed|law/T87-the-quarter-turn|law/D3-state +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/gloss value="over L at r" +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/glue value="open=⟨|close=⟩|member=∈|product=×|maps=→|iff=⟺" +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/moves value=vectors/moves.json +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/named value=string|number|boolean +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/object value=law/D11-the-obligatory +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/renders value="FREE=green|REQUIRED=grey|FORBIDDEN=red|CONFLICT=fork" +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/states value="bounds that cross=CONFLICT|one origin=REQUIRED|claims that do not meet=CONFLICT|claims that meet and fit the bounds=FREE|claims that meet outside the bounds=FORBIDDEN" +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/symbols value="object=c|state=state" +bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/types value="Origin=(o, φ)|Act=s|State=state" +bound-lock/1 at=policy:open by=target form=alphabet measure=id role=writes scope=open/who value="for a ledger=H1-uncertainty|for a ledger=H2-density-attracts|for a mathematician=H4-enriched-semilattice|for a mathematician=H9-the-obligatory-is-maximal|readings=H3-a-distant-signature-moves-a-cell-that-did-not-move|readings=H5-hilbert-is-the-obligatory-without-four-fields|readings=H6-structure-of-measurement|readings=H7-the-medium-of-encounters|readings=H8-refereed-game" +bound-lock/1 at=policy:pages/mode by=target form=interval measure=prose-marks role=reads scope=audit/docs-have-a-mode value=0..0 +bound-lock/1 at=policy:pages/same by=target form=interval measure=rendered-leaves-differ role=reads scope=audit/rendered-docs-match value=0..0 bound-lock/1 at=policy:pipeline by=target form=alphabet measure=id role=writes scope=pipeline/branch value=main bound-lock/1 at=policy:pipeline by=target form=alphabet measure=id role=writes scope=pipeline/environment value=release bound-lock/1 at=policy:pipeline by=target form=alphabet measure=id role=writes scope=pipeline/node value=22|24 @@ -445,28 +441,77 @@ bound-lock/1 at=policy:pipeline by=target form=alphabet measure=id role=writes s bound-lock/1 at=policy:pipeline by=target form=alphabet measure=id role=writes scope=pipeline/published value="npm view" bound-lock/1 at=policy:pipeline by=target form=alphabet measure=id role=writes scope=pipeline/registry value=https://registry.npmjs.org bound-lock/1 at=policy:pipeline by=target form=alphabet measure=id role=writes scope=pipeline/trusted-publisher value=pending +bound-lock/1 at=policy:place/dist by=target form=interval measure=shipped-beside-code role=reads scope=audit/dist-holds-js-and-dts value=0..0 +bound-lock/1 at=policy:place/orphans by=target form=interval measure=orphan-samples role=reads scope=audit/orphans value=0..0 +bound-lock/1 at=policy:place/removal by=target form=interval measure=removed-by-hand role=reads scope=audit/nothing-is-removed-by-hand value=0..0 +bound-lock/1 at=policy:private by=target form=alphabet measure=id role=writes scope=private shape=package.json value=true +bound-lock/1 at=policy:reader by=target form=alphabet kind=js measure=reader needs=src/ role=reads scope=reader/said/source shape=*.ts value=topos-typescript-tree/src/regions/said.ts +bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=reads scope=region/said value=src/**/*.ts +bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=reads scope=region/source value=src/**/*.ts +bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=reads scope=region/vocabulary value=src/**/*.ts +bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=writes scope=region/harness value=harness/** +bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=writes scope=region/topos-measure value=topos-measure/** +bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=writes scope=region/topos-typescript-artifacts value=topos-typescript-artifacts/** +bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=writes scope=region/topos-typescript-concepts value=topos-typescript-concepts/** +bound-lock/1 at=policy:region by=target form=alphabet measure=coordinates role=writes scope=region/topos-typescript-packages value=topos-typescript-packages/** +bound-lock/1 at=policy:release by=target form=alphabet measure=id role=demands scope=release/rebirth value=rebirth bound-lock/1 at=policy:repository by=target form=alphabet measure=id needs=package.json role=writes scope=repository shape=package.json value=https://github.com/lapxo/topos-node bound-lock/1 at=policy:scripts by=target form=alphabet measure=id needs=package.json role=writes scope=scripts/build shape=package.json value="tsc --build" +bound-lock/1 at=policy:security/acts by=target form=interval measure=acts-on-unnamed-hosts role=reads scope=audit/agent-acts-are-effects value=0..0 bound-lock/1 at=policy:sideEffects by=target form=alphabet measure=id needs=package.json role=writes scope=sideEffects shape=package.json value=false +bound-lock/1 at=policy:source by=target form=interval measure=longest role=reads scope=source/longest/src/** value=0..40 bound-lock/1 at=policy:sources by=target form=alphabet measure=id role=writes scope=sources/badges value=https://img.shields.io/badge +bound-lock/1 at=policy:theme by=target form=alphabet measure=id role=writes scope=theme value=green:2da44e:●|grey:8c959f:○|red:cf222e:✕|fork:8250df:⋔|text:59636e|text-dark:9198a1|text-on:ffffff +bound-lock/1 at=policy:topos/bounded-readers by=target form=alphabet measure=id role=writes scope=reader/empty value=required +bound-lock/1 at=policy:topos/bounded-readers by=target form=alphabet measure=id role=writes scope=reader/inputs value=required +bound-lock/1 at=policy:topos/bounded-readers by=target form=interval measure=bytes role=writes scope=reader/response-bytes value=0..67108864 +bound-lock/1 at=policy:topos/bounded-readers by=target form=interval measure=milliseconds role=writes scope=reader/timeout value=0..30000 bound-lock/1 at=policy:topos/capsule-length by=target form=interval measure=count role=reads scope=src/lines value=0..400 bound-lock/1 at=policy:topos/region-length by=target form=interval measure=per-file role=reads scope=src/regions/**/lines value=0..40 +bound-lock/1 at=policy:topos/wire-page by=target form=alphabet measure=id role=writes scope=form/template/wire/canonical value=hash +bound-lock/1 at=policy:topos/wire-page by=target form=alphabet measure=id role=writes scope=form/template/wire/encoding value=encoding +bound-lock/1 at=policy:topos/wire-page by=target form=alphabet measure=id role=writes scope=form/template/wire/header value=header +bound-lock/1 at=policy:topos/wire-page by=target form=alphabet measure=id role=writes scope=form/template/wire/lead value=header|encoding +bound-lock/1 at=policy:topos/wire-page by=target form=alphabet measure=id role=writes scope=form/template/wire/order value=encoding +bound-lock/1 at=policy:tree/comments-few by=target form=interval measure=per-file role=reads scope=comments/*/src/** value=0..3 bound-lock/1 at=policy:type by=target form=alphabet measure=id needs=package.json role=writes scope=type shape=package.json value=module -bound-lock/1 at=policy:uses by=target form=alphabet measure=id role=writes scope=uses/topos value=sha256:9bd23c16b52258e2a2f56f516887aef384b799bd8b54d133e9f82c4aa99c9e2f -bound-lock/1 at=policy:uses by=target form=alphabet measure=id role=writes scope=uses/topos-bound value=sha256:8742250a27d7848a731c72f2f6296a3527ff68e0b5232c6afd44e0d2b666ee92 -bound-lock/1 at=policy:uses by=target form=alphabet measure=id role=writes scope=uses/topos-doc value=sha256:713f7604d1feef271d0f4f81495422b35c81f0d757e06866d088728715d60112 -bound-lock/1 at=policy:uses by=target form=alphabet measure=id role=writes scope=uses/topos-frame value=sha256:51af4be51da524873b2d4debdf5c0026182e005076a39965f2b42223bb5a818e +bound-lock/1 at=policy:view by=target form=alphabet measure=id needs=CITATION.cff role=demands scope=view/citation-file shape=CITATION.cff value=cff +bound-lock/1 at=policy:view by=target form=alphabet measure=id needs=CONTRIBUTING.md role=demands scope=view/guide shape=CONTRIBUTING.md value=guide-at-zero +bound-lock/1 at=policy:view by=target form=alphabet measure=id needs=docs/reference.md role=demands scope=view/reference-capsule shape=docs/reference.md value=regions +bound-lock/1 at=policy:view by=target form=alphabet measure=id role=demands scope=view/gitignore shape=.gitignore value=ignore +bound-lock/1 at=policy:view by=target form=alphabet measure=id role=demands scope=view/tsconfig shape=tsconfig.json value=build bound-lock/1 at=policy:view/license by=target form=alphabet measure=id role=demands scope=view/license shape=LICENSE value=license -bound-lock/1 at=place:topos-measure/release by=target form=alphabet measure=id role=demands scope=view/pipeline-release shape=.github/workflows/release.yml value=github-actions -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/formulas value=law/D11-the-obligatory|law/A1-encounter|law/A7-freedom-conserved|law/T49-amplitude-has-sign-and-phase|law/T95-signatures-live-where-they-are-signed|law/T87-the-quarter-turn|law/D3-state -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/states value="bounds that cross=CONFLICT|one origin=REQUIRED|claims that do not meet=CONFLICT|claims that meet and fit the bounds=FREE|claims that meet outside the bounds=FORBIDDEN" -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/glue value="open=⟨|close=⟩|member=∈|product=×|maps=→|iff=⟺" -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/cell value="floor=⊥|ceiling=⊤|origins=O|rest=⊑" -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/types value="Origin=(o, φ)|Act=s|State=state" -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/gloss value="over L at r" -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/claim value="who=origin|lo=span.lo|hi=span.hi|without=takes" -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/moves value=vectors/moves.json -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/named value=string|number|boolean -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/object value=law/D11-the-obligatory -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/renders value="FREE=green|REQUIRED=grey|FORBIDDEN=red|CONFLICT=fork" -bound-lock/1 at=policy:notation by=target form=alphabet measure=id role=writes scope=notation/symbols value="object=c|state=state" +bound-lock/1 at=policy:wire/region-measures by=target form=alphabet measure=id role=reads scope=audit/wire/region-measures value=coordinates|leaves +bound-lock/1 at=policy:wire/shapes by=target form=alphabet measure=id role=reads scope=audit/wire/shapes value=decision|lock|package|reader|render|run|vector|view +bound-lock/1 at=policy:wire/states by=target form=alphabet measure=id role=reads scope=audit/wire/states value=absent|present|unread|withdraw +bound-lock/1 at=policy:wire/templates by=target form=alphabet measure=id role=reads scope=audit/wire/templates value={cone}|{roots} +bound-lock/1 at=witness:installed-dependencies-are-foreign by=target form=alphabet measure=role role=writes scope=coordinate-role/node_modules value=foreign +bound-lock/1 at=witness:native-receipts-ship-with-the-place by=target form=alphabet measure=id role=reads scope=audit/wire/ships value=dist|README.md|LICENSE|TARGET.bound|receipts.bound +bound-lock/1 at=witness:native-render-release by=target form=alphabet measure=id needs=package.json role=writes scope=version shape=package.json value=0.1.3 +bound-lock/1 at=witness:own-page-from-own-prose by=target form=alphabet measure=id needs=README.md role=demands scope=view/readme-capsule shape=README.md value=hero|idea +bound-lock/1 at=witness:portable-native-receipts by=target form=alphabet measure=id role=demands scope=view/receipts shape=receipts.bound value=receipts@8|receipts@0|receipts@1 +bound-lock/1 at=witness:published-render-contract by=target form=alphabet measure=id needs=package.json role=writes scope=dependencies shape=package.json value=@lapxo/topos@0.1.12 +bound-lock/1 at=witness:reproducible-release-assets by=target form=alphabet measure=digest role=writes scope=dep/runtime-topos-github shape=dist/index.js value=sha256:36e1f6822242625e745e5fb1611d8c74c2b769e39b902d1eff56e384bb3ae29e +bound-lock/1 at=witness:reproducible-release-assets by=target form=alphabet measure=digest role=writes scope=uses/topos-github value=sha256:0f5b05b2bd1b1f5e3641e6539e61fae87d791c4d51aa5d3d304ffdc064e7fe4d +bound-lock/1 at=witness:reproducible-release-assets by=target form=alphabet measure=id role=writes scope=pipeline/release/assets value=release-assets/47434ee39db8454c60d7e814b237e9dbf327a01b7d740f64b21c2c4aa81eed2b|release-assets/76aba07865464ef09c7695cff3eb755935877d2fe07c0d325d49166268cb19da|release-assets/a6f8f413f0f4cb3597c11f87dabbc3c6e4c1c6ae263fbd442f54827bc1f92bb8|release-assets/archive-profile.mjs +bound-lock/1 at=witness:reproducible-release-assets by=target form=alphabet measure=id role=writes scope=sources/runtime-topos-github value=https://github.com/Lapxo/topos-github/releases/download/v0.1.3/36e1f6822242625e745e5fb1611d8c74c2b769e39b902d1eff56e384bb3ae29e +bound-lock/1 at=witness:reproducible-release-assets by=target form=alphabet measure=id role=writes scope=sources/topos-github value=https://github.com/Lapxo/topos-github/releases/download/v0.1.3/0f5b05b2bd1b1f5e3641e6539e61fae87d791c4d51aa5d3d304ffdc064e7fe4d +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=digest needs=topos-typescript-tree role=reads scope=dep/typescript-reader value=sha256:ecf86c50adacb3e199e7363fb355ad66d7c76a76ab1e007836d9e9fbc74ad434 +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=digest needs=topos-typescript-tree/node_modules/@lapxo/obligations role=reads scope=dep/typescript-reader-algebra shape=package value=sha256:e4b48f480e86c2e1b9518b7a5dbe18e4b4dfa449961c781a291295fa85a3ec72 +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=digest needs=topos-typescript-tree/node_modules/@lapxo/topos role=reads scope=dep/typescript-reader-sdk shape=package value=sha256:21e030acdc0d825e183b30f94d400daf351b02f782d474635f246de9e6e12b83 +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=digest needs=topos-typescript-tree/node_modules/typescript role=reads scope=dep/typescript-reader-compiler value=sha256:9dc6ee1f8dec9598cbecff5e2fcf2b916d04294c0615588dd424448a5a3afce5 +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=digest role=writes scope=dep/topos-doc shape=dist/index.js value=sha256:1b9fa141c118669a69ffee76d049b23c6bf68eb07f524aa7b89dd873bcde68eb +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=digest role=writes scope=dep/topos-node shape=dist/index.js value=sha256:859ee30f9eaed96edfdfd8d72834a18ebb82022d9c7ceea52e66409241f2cfb6 +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=digest role=writes scope=uses/topos-doc value=sha256:65bfa43e2d5122db2d516afe516921d52fc22647fb092d55e313c25c5a2d9b52 +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=digest role=writes scope=uses/topos-node value=sha256:c7cfad66c15e3fb1d2cd71de9eabf70898723ea45f402987c7b8136729bfabd4 +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id needs=.github/workflows/tag.yml role=demands scope=view/pipeline-tag shape=.github/workflows/tag.yml value=github-actions@1 +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id needs=.github/workflows/test.yml role=demands scope=view/pipeline-test shape=.github/workflows/test.yml value=github-actions@1 +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id needs=package.json role=demands scope=view/manifest shape=package.json value=manifest +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id needs=package.json role=writes scope=devDependencies shape=package.json value=@types/node@^22|typescript@5.9.3 +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id needs=package.json role=writes scope=scripts/test shape=package.json value="node --test test/*.test.ts" +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id role=demands scope=view/closure value=red|programs +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id role=writes scope=docs/badges value=license +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id role=writes scope=pipeline/check value="npm run build && npm test" +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id role=writes scope=pipeline/install value="npm ci" +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id role=writes scope=pipeline/release/digest-command value=sha256sum +bound-lock/1 at=witness:verified-render-contract by=target form=alphabet measure=id role=writes scope=wire/receipt-fields value=scope|role|measure|form|value|at diff --git a/capsule.bound b/capsule.bound deleted file mode 100644 index ddc1cc0..0000000 --- a/capsule.bound +++ /dev/null @@ -1,30 +0,0 @@ -bound-lock/1 about="the domain this capsule serves: a node package, as its manifests and its build say it" at=policy:topos/capsule by=target form=alphabet measure=id role=writes scope=capsule/domain value=packages -bound-lock/1 about="the runtime a host starts this capsule with, whose entry, regions and effects are the runtime's own lines" at=policy:topos/capsule by=target form=alphabet measure=id role=writes scope=capsule/runtime value=node -bound-lock/1 about="where this capsule's world keeps its values: the place's own files" at=policy:topos/capsule by=target form=alphabet measure=id role=writes scope=capsule/holds value=./ -bound-lock/1 about="the manifest the place reads" at=policy:topos/capsule by=target form=alphabet measure=reads role=render scope=region/manifest shape=package.json value=form/style/json/indent|name|version|private|type|license|author|repository|keywords|sideEffects|engines|exports/**|bin/**|scripts/**|dependencies|devDependencies|source|lang|prose/*/what|form/prose/*/sentence|audit/wire/ships -bound-lock/1 about="the manifest the place is published with" at=policy:topos/capsule by=target form=alphabet measure=reads role=render scope=region/published-manifest shape=package.json value=form/style/json/indent|name|version|private|type|license|author|repository|keywords|sideEffects|engines|exports/**|bin/**|scripts/**|dependencies|devDependencies|lang|prose/*/what|form/prose/*/sentence|audit/wire/ships -bound-lock/1 about="how the place builds" at=policy:topos/capsule by=target form=alphabet measure=reads role=render scope=region/build shape=tsconfig.json value=form/style/json/indent|build/** -bound-lock/1 about="the key this world's own prose is written under, which its host drops as it hands the prose to the place's pages and to its own regions" at=policy:topos/capsule by=target form=alphabet measure=id role=writes scope=capsule/key value=node -bound-lock/1 about="what this capsule reaches beyond the lines it is handed" at=policy:topos/capsule by=target form=alphabet measure=effects role=writes scope=capsule/effects value=none -bound-lock/1 about="the topos release this capsule is packed against, named by its digest" at=policy:topos/capsule by=target form=alphabet measure=digest role=writes scope=capsule/topos value=sha256:680af2143a339689f58b8f672da4c637b76e22f3b3812d2dfb95b2f0723d5541 -bound-lock/1 about="A world for a node package. Point it at the lines that name a package and it renders the manifest, the published manifest, and the build." at=witness:a-demo-world-that-told-a-stranger-nothing by=target form=alphabet measure=text role=writes scope=prose/en/node/door/what value=lock -bound-lock/1 about="its regions, read off its own descriptor" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/door/words value=lock -bound-lock/1 about="A package is the lines that name it. Two manifests come from one lock, and the build is the compiler lines that lock holds." at=witness:a-demo-world-that-told-a-stranger-nothing by=target form=alphabet measure=text role=writes scope=prose/en/node/idea value=lock -bound-lock/1 about="Why the lines" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/idea/heading value=lock -bound-lock/1 about="One package, two manifests" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/figure/world/heading value=lock -bound-lock/1 about="a place adopts it with {scope}" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/figure/world/adopted value=lock -bound-lock/1 about="[The whole example]({at})" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/figure/learn/source value=lock -bound-lock/1 about="What it claims" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/claims/heading value=lock -bound-lock/1 about="It costs {dependencies} dependencies: the SDK it answers through" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/claims/1-costs value=lock -bound-lock/1 about=receipt at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/claims/receipt value=lock -bound-lock/1 about="node examples/release/package.ts" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/commands value=lock -bound-lock/1 about="What it refuses" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/refuses/heading value=lock -bound-lock/1 about="How to read it" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/reading/heading value=lock -bound-lock/1 about="topos-node is read one region at a time, and each answers one question." at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/reading/lead value=lock -bound-lock/1 about="**{name}** · {answer}" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/reading/view value=lock -bound-lock/1 about="It rests on {names}." at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/rests/on value=lock -bound-lock/1 about="Check" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/check/heading value=lock -bound-lock/1 about="Pointers" at=witness:a-demo-world-with-no-page by=target form=alphabet measure=text role=writes scope=prose/en/node/pointers/heading value=lock -bound-lock/1 about="the vector this region holds its cases in, named by the digest of its bytes" at=policy:topos/capsule by=target form=alphabet measure=digest role=writes scope=vector/build value=sha256:dbfe410903802c0c50964323df7e283cbc351396b3ba69098a20676324e63132 -bound-lock/1 about="the vector this region holds its cases in, named by the digest of its bytes" at=policy:topos/capsule by=target form=alphabet measure=digest role=writes scope=vector/manifest value=sha256:ebd3bbf11ff284880b7cea93598dd8dd450db5543c46e6bf1846d48ea34cff92 -bound-lock/1 about="the vector this region holds its cases in, named by the digest of its bytes" at=policy:topos/capsule by=target form=alphabet measure=digest role=writes scope=vector/published-manifest value=sha256:06624d309b3ce9089028bd726212eb26fcdd5a3074e60638c3b0de7e1b581a5f diff --git a/docs/reference.md b/docs/reference.md index 756eaa5..8b13789 100644 --- a/docs/reference.md +++ b/docs/reference.md @@ -1,9 +1 @@ -# Reference -Three regions, each read off the lines its descriptor declares and nothing else; it reaches none beyond them. - -| region | reads | writes | -|---|---|---| -| build | form/style/json/indent · build/** | its leaf | -| manifest | form/style/json/indent · name · version · private · type · license · author · repository · keywords · sideEffects · engines · exports/** · bin/** · scripts/** · dependencies · devDependencies · source · lang · prose/*/what · form/prose/*/sentence · audit/wire/ships | its leaf | -| published-manifest | form/style/json/indent · name · version · private · type · license · author · repository · keywords · sideEffects · engines · exports/** · bin/** · scripts/** · dependencies · devDependencies · lang · prose/*/what · form/prose/*/sentence · audit/wire/ships | its leaf | diff --git a/package-lock.json b/package-lock.json index 46da605..a54b5bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,19 @@ { "name": "@lapxo/topos-node", - "version": "0.1.2", + "version": "0.1.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@lapxo/topos-node", - "version": "0.1.2", + "version": "0.1.3", "license": "MIT", "dependencies": { - "@lapxo/topos": "^0.1.0" + "@lapxo/topos": "0.1.12" + }, + "devDependencies": { + "@types/node": "^22", + "typescript": "5.9.3" }, "engines": { "node": ">=22.12" @@ -25,9 +29,9 @@ } }, "node_modules/@lapxo/topos": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@lapxo/topos/-/topos-0.1.3.tgz", - "integrity": "sha512-OlN2FQ7W+w5WjDPNFqG+iZ9ThQ180gr2D42PfIvX3sFxOGEIdwmKA0K73WIrq6j0NiCTRYYnHf4xZeEO0ug3IQ==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@lapxo/topos/-/topos-0.1.12.tgz", + "integrity": "sha512-bD4mZrzGP/D6YOOKm3rxNL79jfXa/4kT/9dAUHo458c3O8NufY85bZ5FE3bzwYWIvd5BX42sJg18/jc6/HzKvQ==", "license": "MIT", "dependencies": { "@lapxo/obligations": "^0.3.5" @@ -35,6 +39,37 @@ "engines": { "node": ">=22.12" } + }, + "node_modules/@types/node": { + "version": "22.20.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.5.tgz", + "integrity": "sha512-U2+DNr+wSjpsTS/wZGYHq7GcwfuSmKiKvoPvK22zwTlRhU91yOniN4qRR5KhIjvif7ysw/dz/hKmfDH0Ris4aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" } } } diff --git a/package.json b/package.json index c404de3..c4a6233 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lapxo/topos-node", - "version": "0.1.2", + "version": "0.1.3", "private": true, "description": "What a node package is, rendered from its lines: the two manifests one lock makes, and how it builds.", "type": "module", @@ -31,12 +31,18 @@ "dist", "README.md", "LICENSE", - "TARGET.bound" + "TARGET.bound", + "receipts.bound" ], "scripts": { - "build": "tsc --build" + "build": "tsc --build", + "test": "node --test test/*.test.ts" }, "dependencies": { - "@lapxo/topos": "^0.1.0" + "@lapxo/topos": "0.1.12" + }, + "devDependencies": { + "@types/node": "^22", + "typescript": "5.9.3" } } diff --git a/receipts.bound b/receipts.bound index d814d70..4798ade 100644 --- a/receipts.bound +++ b/receipts.bound @@ -1,6 +1,181 @@ -bound-lock/1 at=place:sha256:400b57683b8c18d5aa7597fa4d68ca45e25e5273874261cfba6fda741319d8f0 by=bound form=alphabet measure=digest role=writes scope=receipts value=sha256:850c9cab40f63b953b41d60dfb607b8ad0b2c4bcd21f41f248453d2e40779a02 +bound-lock/1 at=place:sha256:6b3554be1ed484638426ba79e7c8b29fcdad187387a60fd945a0f5b98f3facb6 by=fold form=alphabet measure=digest role=writes scope=write/topos-typescript-tree/receipts.bound value=sha256:6b3554be1ed484638426ba79e7c8b29fcdad187387a60fd945a0f5b98f3facb6 +bound-lock/1 at=place:sha256:004904c8511f70ced8c27296af953b49adb7ed3ad3f6bf55b8d41cdc9c1f99e8 by=reader:36e1f6822242 form=alphabet measure=observed role=writes scope=./ value=004904c8511f70ce +bound-lock/1 at=place:sha256:4ab5332d4ac0ce1f99dbd6b631189551b9f09c56f8271667109bee69b1e2e546 by=reader:1b9fa141c118 form=alphabet measure=observed role=writes scope=./ value=4ab5332d4ac0ce1f +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=observed role=writes scope=src/index.ts value=6ee4c560c8178581 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=observed role=writes scope=src/regions/published-manifest.ts value=8045c04e47cb440c +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=observed role=writes scope=src/regions/build.ts value=997af6010e7a9997 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=observed role=writes scope=src/helpers/packaged.ts value=a6b48ff68bf4543d +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=alphabet measure=observed role=writes scope=src/regions/manifest.ts value=a91da7cf3252b788 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=observed role=writes scope=src/helpers/values.ts value=b3a1ff081431fb44 +bound-lock/1 at=place:sha256:004904c8511f70ced8c27296af953b49adb7ed3ad3f6bf55b8d41cdc9c1f99e8 by=reader:36e1f6822242 form=interval measure=count role=reads scope=publish-auth-is-trusted/tokens value=0..0 +bound-lock/1 at=place:sha256:4ab5332d4ac0ce1f99dbd6b631189551b9f09c56f8271667109bee69b1e2e546 by=reader:1b9fa141c118 form=interval measure=unreceipted role=reads scope=door/unreceipted value=0..0 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/calls value=Error|alphabet|lines|own|provided|r0|r1|r2|readsOf|receiptShell|shell +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/carries value=Asked +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/compared value=reads +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/declares value=own|provided|readsOf|receipt|render +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/heads value=build|form|manifest|notation|prose|published-manifest|reads|region|render +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/@lapxo/topos/capsule value=shell|receiptShell +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/@lapxo/topos/wire value=alphabet +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/lang value=ts +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/shape value="a non-null assertion" +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/specifiers value=@lapxo/topos/capsule|@lapxo/topos/wire|./regions/manifest.ts|./regions/published-manifest.ts|./regions/build.ts +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/words value=build|form|manifest|notation|prose|reads|render +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=named role=reads scope=source/range/receipt value=1385..1446 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=named role=reads scope=source/range/render value=901..961 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/signature/receipt value=receipt(asked:Asked) +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/signature/render value=render(asked:Asked) +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/typed/readsOf value="\"manifest\"|\"published-manifest\"|\"build\"" +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/customised value=0..0 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/dynamic value=0..0 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/form-splits value=0..0 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lexed value=0..0 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lines value=17..17 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/numbers value=0..0 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/parsed value=1..1 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/spans value=0..0 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/text value=0..0 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/unread value=0..0 +bound-lock/1 at=place:sha256:6ee4c560c81785816d111b8cb20acca5230e44da696e185fd0fa946757dc430e by=reader:17a29ca33b8e form=interval measure=longest role=reads scope=source/longest value=5..5 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/calls value=JSON|Object|json|packaged +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/carries value=Asked +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/declares value=render +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/heads value=exports|object|source +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/../helpers/packaged.ts value=packaged +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/../helpers/values.ts value=json +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/lang value=ts +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/specifiers value=../helpers/values.ts|@lapxo/topos/capsule|../helpers/packaged.ts +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/words value=exports|object|source +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=named role=reads scope=source/range/render value=276..338 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/head value=" The manifest a consumer reads: the place's own, each subpath a type and a default, without the source it was built from. " +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/signature/render value="render(asked: Asked): readonly string[]" +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/customised value=0..0 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/dynamic value=0..0 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/form-splits value=0..0 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lexed value=0..0 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lines value=10..10 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/numbers value=0..0 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/parsed value=0..0 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/spans value=0..0 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/text value=0..0 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/unread value=0..0 +bound-lock/1 at=place:sha256:8045c04e47cb440c49454766ace5f6667ee4b1c8f25b89461b7c6886c5b638d5 by=reader:17a29ca33b8e form=interval measure=longest role=reads scope=source/longest value=5..5 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/calls value=Object|alphabet|json|options|truth|under +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/carries value=Asked +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/declares value=outside|render +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/heads value=build|include +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/../helpers/values.ts value=json|truth|under +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/@lapxo/topos/wire value=alphabet +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/lang value=ts +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/literal-types value=include +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/specifiers value=@lapxo/topos/wire|../helpers/values.ts|@lapxo/topos/capsule +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/words value=build|include +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=named role=reads scope=source/range/render value=367..429 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/head value=" How a place builds: every option one line, its sources one list, written as its build reads them. " +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/signature/render value="render(asked: Asked): readonly string[]" +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/typed/under value='build' +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/customised value=0..0 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/dynamic value=0..0 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/form-splits value=0..0 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lexed value=0..0 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lines value=13..13 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/numbers value=0..0 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/parsed value=0..0 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/spans value=0..0 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/text value=0..0 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/unread value=0..0 +bound-lock/1 at=place:sha256:997af6010e7a9997b8242c17cf7c9aced1128250aee28b813650fe18cc0c6e6b by=reader:17a29ca33b8e form=interval measure=longest role=reads scope=source/longest value=5..5 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/calls value=Object|alphabet|asked|at|bins|built|found|json|lang|listed|of|resolved|rule|sentence|subpaths|text|truth|under|versioned +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/carries value=Asked +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/declares value=at|packaged|sentence +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/heads value=about|audit|author|bin|capital|dependencies|engines|exports|form|git|keywords|license|name|period|private|prose|repository|scope|scripts|shape|source|type|value|version|wire +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/./values.ts value=json|truth|under|versioned +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/@lapxo/topos/capsule value=found|lang|listed|of +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/@lapxo/topos/wire value=alphabet +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/lang value=ts +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/specifiers value=@lapxo/topos/capsule|@lapxo/topos/wire|./values.ts +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/words value=about|author|bin|capital|dependencies|engines|exports|git|keywords|license|name|period|private|repository|scope|scripts|shape|source|type|value|version +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=named role=reads scope=source/range/packaged value=1301..1365 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/head value=" A text as the language writes a sentence: its trailing marks cut, capital first and a period last where its rule says so. " +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/signature/packaged value="packaged(asked: Asked): readonly string[]" +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/typed/at value='source'|'repository'|'type'|'sideEffects'|'private'|'name'|'version'|'license'|'author'|'keywords'|'engines'|'dependencies'|'dependencies'|'devDependencies'|'devDependencies' +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/typed/listed value='wire/ships'|'wire/ships'|'audit/wire/ships' +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/typed/of value='value'|'scope'|'shape'|'about' +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/typed/under value='exports'|'bin'|'scripts' +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/customised value=0..0 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/dynamic value=0..0 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/form-splits value=0..0 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lexed value=0..0 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lines value=37..37 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/numbers value=0..0 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/parsed value=0..0 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/spans value=0..0 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/text value=2..2 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/unread value=0..0 +bound-lock/1 at=place:sha256:a6b48ff68bf4543d471f9969933494654feb6f46d2987e9b271682f80d785cd8 by=reader:17a29ca33b8e form=interval measure=longest role=reads scope=source/longest value=16..16 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/declares value=render +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/../helpers/packaged.ts value=packaged +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/lang value=ts +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/specifiers value=../helpers/packaged.ts +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/head value=" The manifest a place reads from its lines: what it holds, each subpath a type and a default, and the source it was built from. " +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/signature/render value=render +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/customised value=0..0 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/dynamic value=0..0 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/form-splits value=0..0 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lexed value=0..0 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lines value=4..4 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/numbers value=0..0 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/parsed value=0..0 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/spans value=0..0 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/text value=0..0 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/unread value=0..0 +bound-lock/1 at=place:sha256:a91da7cf3252b788a767d6f1183c716daf87bc1b175e7ac78a6a89f8a83e1107 by=reader:17a29ca33b8e form=interval measure=longest role=reads scope=source/longest value=0..0 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/calls value=JSON|Object|alphabet|asked|byBytes|canonical|fromLine|indent|low|of|requirement|truths|value +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/carries value=Asked +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/compared value=fact|interval +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/declares value=indent|json|low|truth|truths|under|versioned +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/heads value=count|fact|false|form|indent|interval|reader|reads|scope|shape|true|value +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/@lapxo/topos/capsule value=of|value +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/imports/@lapxo/topos/wire value=alphabet|byBytes|canonical|fromLine|requirement +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/lang value=ts +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/specifiers value=@lapxo/topos/capsule|@lapxo/topos/wire +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=id role=reads scope=source/words value=count|fact|false|indent|interval|reader|reads|scope|shape|true|value +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=named role=reads scope=source/range/json value=1153..1213 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=named role=reads scope=source/range/truth value=1390..1451 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=named role=reads scope=source/range/under value=191..252 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=named role=reads scope=source/range/versioned value=1473..1538 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/signature/json value="json(asked: Asked, held: unknown): readonly string[]" +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/signature/truth value="truth(text: string): string | boolean" +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/signature/under value="under(asked: Asked, head: string): readonly (readonly [string, string])[]" +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/signature/versioned value="versioned(text: string | undefined): Record" +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/typed/of value='shape'|'scope'|'scope'|'scope'|'scope'|'value' +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/typed/slice value=-1 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=alphabet measure=text role=reads scope=source/typed/value value='form/style/json/indent' +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/customised value=0..0 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/dynamic value=0..0 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/form-splits value=0..0 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lexed value=0..0 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/lines value=22..22 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/numbers value=0..0 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/parsed value=0..0 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/spans value=0..0 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/text value=0..0 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=count role=reads scope=source/unread value=0..0 +bound-lock/1 at=place:sha256:b3a1ff081431fb4478b86f73a2befacd866ccd100949101df6df0572fa4bf34a by=reader:17a29ca33b8e form=interval measure=longest role=reads scope=source/longest value=8..8 +bound-lock/1 at=place:sha256:6133be7754b662e0979dd77c56f0e9e5784346388e9a442ee2cfb5bfc43e470b by=bound form=alphabet measure=digest role=writes scope=instrument/implementation value=sha256:6133be7754b662e0979dd77c56f0e9e5784346388e9a442ee2cfb5bfc43e470b -bound-lock/1 at=place:sha256:2902aa911798220adc3e155d18714d462c369b37f21f6eaf2f38b9dd943e4cee by=bound form=interval measure=count role=writes scope=receipts/source value=142..142 -bound-lock/1 at=place:sha256:371c6e82e63dfead6eff3396a5708ccf9d295cff2206457ee6f9b197b0281ecd by=bound form=alphabet measure=bytes role=writes scope=receipts/source value=sha256:371c6e82e63dfead6eff3396a5708ccf9d295cff2206457ee6f9b197b0281ecd -bound-lock/1 at=place:sha256:b7a729cce9a928d466e68ec965573cb84d8d5dd37a116b8f4a79264d9f9c49fc by=bound form=interval measure=count role=writes scope=receipts/src value=6..6 -bound-lock/1 at=place:sha256:b4398644002d75f7f3bd1a51f7d9720ce09da4d5b20318eee54ede8fc4c4f057 by=bound form=alphabet measure=bytes role=writes scope=receipts/src value=sha256:b4398644002d75f7f3bd1a51f7d9720ce09da4d5b20318eee54ede8fc4c4f057 +bound-lock/1 at=place:sha256:710a759738f2724fe961f2af4ab4b474b50d93c88cd070e567384f2f5943bd3c by=bound form=alphabet measure=digest role=writes scope=receipts value=sha256:8c98ec7fc4e077f78f6ae742ce85ab4a76d9b1eb7bea8febfaee51c1d288f38d + +bound-lock/1 at=place:sha256:bd5a21a0c68b00698194597f2c8d1ae10b4a846c6bd791a196eb1c77d5812d31 by=bound form=interval measure=count role=writes scope=receipts/. value=2..2 +bound-lock/1 at=place:sha256:0b4d2a0a960245706e5db96d03532282403e59b59eec7218d82ea27994b1bcb8 by=bound form=alphabet measure=bytes role=writes scope=receipts/. value=sha256:0b4d2a0a960245706e5db96d03532282403e59b59eec7218d82ea27994b1bcb8 +bound-lock/1 at=place:sha256:63deb4381e07165a052be8bbf01eb9da7ce857609f0a201f453a49a786b5437e by=bound form=interval measure=count role=writes scope=receipts/door value=1..1 +bound-lock/1 at=place:sha256:9ffc73bd8ea03676f1ffa48725c28ded7b4c114c581b44f7e9f690419ba68045 by=bound form=alphabet measure=bytes role=writes scope=receipts/door value=sha256:9ffc73bd8ea03676f1ffa48725c28ded7b4c114c581b44f7e9f690419ba68045 +bound-lock/1 at=place:sha256:496d2b3650b6dc875b9d8b36aadc110348d644b227f18e1a7fcb12c1df1c6267 by=bound form=interval measure=count role=writes scope=receipts/instrument value=1..1 +bound-lock/1 at=place:sha256:9ffc73bd8ea03676f1ffa48725c28ded7b4c114c581b44f7e9f690419ba68045 by=bound form=alphabet measure=bytes role=writes scope=receipts/instrument value=sha256:9ffc73bd8ea03676f1ffa48725c28ded7b4c114c581b44f7e9f690419ba68045 +bound-lock/1 at=place:sha256:4e6ee60c54e3914fa1bb7193852b3cb9c051fa31779c962eabf19a68b10efc92 by=bound form=interval measure=count role=writes scope=receipts/publish-auth-is-trusted value=1..1 +bound-lock/1 at=place:sha256:9ffc73bd8ea03676f1ffa48725c28ded7b4c114c581b44f7e9f690419ba68045 by=bound form=alphabet measure=bytes role=writes scope=receipts/publish-auth-is-trusted value=sha256:9ffc73bd8ea03676f1ffa48725c28ded7b4c114c581b44f7e9f690419ba68045 +bound-lock/1 at=place:sha256:8269c385b99b1023b8ac91fa7a5dc4ffcc307feeee7492469e7b6ff80c9d241b by=bound form=interval measure=count role=writes scope=receipts/source value=152..152 +bound-lock/1 at=place:sha256:9ffc73bd8ea03676f1ffa48725c28ded7b4c114c581b44f7e9f690419ba68045 by=bound form=alphabet measure=bytes role=writes scope=receipts/source value=sha256:9ffc73bd8ea03676f1ffa48725c28ded7b4c114c581b44f7e9f690419ba68045 +bound-lock/1 at=place:sha256:81de1c01abeed7299d1c8e147e7779d8b2961a4dba2d0db5f727c11b51657c5b by=bound form=interval measure=count role=writes scope=receipts/src value=6..6 +bound-lock/1 at=place:sha256:ec64072c68889faff9084de17a0b5b2a1913993b9b5204ec18669982d9490248 by=bound form=alphabet measure=bytes role=writes scope=receipts/src value=sha256:ec64072c68889faff9084de17a0b5b2a1913993b9b5204ec18669982d9490248 +bound-lock/1 at=place:sha256:1f8e612d12ae11253468b76be25ce5e71c43ab7c4e4811cef55c8cff57fcae2f by=bound form=interval measure=count role=writes scope=receipts/write value=1..1 +bound-lock/1 at=place:sha256:9ffc73bd8ea03676f1ffa48725c28ded7b4c114c581b44f7e9f690419ba68045 by=bound form=alphabet measure=bytes role=writes scope=receipts/write value=sha256:9ffc73bd8ea03676f1ffa48725c28ded7b4c114c581b44f7e9f690419ba68045 diff --git a/src/helpers/packaged.ts b/src/helpers/packaged.ts index 537ba30..8ed9d5b 100644 --- a/src/helpers/packaged.ts +++ b/src/helpers/packaged.ts @@ -30,7 +30,7 @@ export const packaged = (asked: Asked): readonly string[] => { ...(side === undefined ? {} : { sideEffects: truth(side) }), engines: { node: at(asked, 'engines') }, exports: { ...Object.fromEntries(subpaths.map(([sub, built]) => [sub === '' ? '.' : `./${sub}`, resolved(built)])), [`./${asked.shape}`]: `./${asked.shape}` }, ...(bins.length ? { bin: Object.fromEntries(bins.map(([name, built]) => [name, `./${built}.js`])) } : {}), - files: listed(asked, 'audit/wire/ships'), scripts: Object.fromEntries(under(asked, 'scripts').filter(([name]) => name !== '')), + files: listed(asked, 'wire/ships').length ? listed(asked, 'wire/ships') : listed(asked, 'audit/wire/ships'), scripts: Object.fromEntries(under(asked, 'scripts').filter(([name]) => name !== '')), ...(at(asked, 'dependencies') === undefined ? {} : { dependencies: versioned(at(asked, 'dependencies')) }), ...(at(asked, 'devDependencies') === undefined ? {} : { devDependencies: versioned(at(asked, 'devDependencies')) }), }); diff --git a/src/index.ts b/src/index.ts index c08e45c..2d70819 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,17 @@ -import { shell } from '@lapxo/topos/capsule'; -export const render = shell(import.meta.url); +import{shell,receiptShell}from'@lapxo/topos/capsule'; +import type{Asked}from'@lapxo/topos/capsule'; +import{alphabet}from'@lapxo/topos/wire'; +import * as r0 from './regions/manifest.ts'; +import * as r1 from './regions/published-manifest.ts'; +import * as r2 from './regions/build.ts'; +type Fields=Readonly>; +const provided=(asked:Asked):readonly Fields[]=>{const lines=(asked as Asked & {provider?:{lines?:readonly Fields[]}}).provider?.lines;if(lines===undefined)throw Error('REFUSE·world provider standing not handed');return lines;}; +const own=(lines:readonly Fields[]):readonly Fields[]=>lines.filter(f=>['form','prose','notation'].includes((f.scope??'').split('/')[0]!)); +const readsOf=(lines:readonly Fields[],name:string,role:string):readonly string[]=>lines.filter(f=>f.scope==='region/'+name&&f.role===role&&f.measure==='reads').flatMap(f=>alphabet(f.value??'').members); +export const render=(asked:Asked)=>{const lines=provided(asked);return shell({ + "manifest":{reads:readsOf(lines,"manifest","render"),region:(a:Asked)=>r0.render({...a,lines:[...a.lines,...own(lines)]})}, + "published-manifest":{reads:readsOf(lines,"published-manifest","render"),region:(a:Asked)=>r1.render({...a,lines:[...a.lines,...own(lines)]})}, + "build":{reads:readsOf(lines,"build","render"),region:(a:Asked)=>r2.render({...a,lines:[...a.lines,...own(lines)]})}, +})(asked);}; +export const receipt=(asked:Asked)=>{const lines=provided(asked);return receiptShell({ +})(asked);}; diff --git a/test/manifest.test.ts b/test/manifest.test.ts new file mode 100644 index 0000000..30022ba --- /dev/null +++ b/test/manifest.test.ts @@ -0,0 +1,24 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { render } from '../src/regions/manifest.ts'; +import { render as published } from '../src/regions/published-manifest.ts'; +import type { Asked } from '@lapxo/topos/capsule'; + +const asked = (lines: Asked['lines']): Asked => ({name:'place',shape:'package.json',lines} as Asked); +const line = (scope:string,value:string,shape='package.json') => ({scope,value,shape,role:'writes',form:'alphabet',measure:'id'}); +const read = (rendered:readonly string[]) => JSON.parse(rendered.join('\n')); + +test('metadata preserves declared dependencies and commands; publication removes only the source projection', () => { + const input=asked([line('devDependencies','typescript@5.9.3'),line('scripts/test','node --test test/*.test.ts'),line('source','src'),line('exports','dist/index')]); + assert.deepEqual(read(render(input)).devDependencies,{typescript:'5.9.3'}); + assert.equal(read(render(input)).scripts.test,'node --test test/*.test.ts'); + assert.deepEqual(read(published(input)).devDependencies,{typescript:'5.9.3'}); + assert.equal(read(render(input)).exports['.'].source,'./src/index.ts'); + assert.equal(read(published(input)).exports['.'].source,undefined); +}); + +test('a declaration for another output is not borrowed into the manifest', () => { + const output=read(render(asked([line('devDependencies','typescript@5.9.3','other.json'),line('scripts/test','unrelated','other.json')]))); + assert.equal(output.devDependencies,undefined); + assert.deepEqual(output.scripts,{}); +});