@lapxo/head 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/TARGET.bound +150 -34
- package/dist/src/adopt/adopt.d.ts +2 -2
- package/dist/src/adopt/adopt.js +20 -6
- package/dist/src/answers/answered.js +1 -1
- package/dist/src/compile/pin.d.ts +1 -1
- package/dist/src/compile/pin.js +5 -3
- package/dist/src/core/answer.d.ts +10 -0
- package/dist/src/core/answer.js +1 -1
- package/dist/src/core/association.d.ts +16 -0
- package/dist/src/core/association.js +34 -0
- package/dist/src/core/composition.d.ts +32 -0
- package/dist/src/core/composition.js +28 -0
- package/dist/src/core/package.d.ts +1 -0
- package/dist/src/core/package.js +14 -3
- package/dist/src/core/read.d.ts +2 -1
- package/dist/src/core/read.js +2 -1
- package/dist/src/core/receiver.d.ts +11 -0
- package/dist/src/core/receiver.js +122 -0
- package/dist/src/core/share-bundle.d.ts +9 -0
- package/dist/src/core/share-bundle.js +56 -0
- package/dist/src/doors/head.d.ts +1 -0
- package/dist/src/doors/head.js +3 -0
- package/dist/src/flows/answer.js +7 -3
- package/dist/src/flows/call.d.ts +1 -1
- package/dist/src/flows/call.js +28 -4
- package/dist/src/flows/device.d.ts +11 -5
- package/dist/src/flows/device.js +13 -5
- package/dist/src/flows/plan.js +1 -1
- package/dist/src/index.js +3 -31
- package/dist/src/links/inspect.js +1 -1
- package/dist/src/onboard/first.js +1 -1
- package/dist/src/onboard/owed.js +1 -1
- package/dist/src/places/admit.js +1 -1
- package/dist/src/places/found.js +3 -1
- package/dist/src/ports/adapters/bundle.d.ts +44 -0
- package/dist/src/ports/adapters/bundle.js +173 -0
- package/dist/src/ports/adapters/configured.d.ts +35 -0
- package/dist/src/ports/adapters/configured.js +67 -0
- package/dist/src/ports/adapters/mcp.d.ts +59 -0
- package/dist/src/ports/adapters/mcp.js +122 -0
- package/dist/src/ports/adapters/network.d.ts +12 -0
- package/dist/src/ports/adapters/network.js +67 -0
- package/dist/src/ports/adapters/protocol.d.ts +6 -0
- package/dist/src/ports/adapters/protocol.js +51 -0
- package/dist/src/ports/adapters/remote.d.ts +13 -0
- package/dist/src/ports/adapters/remote.js +33 -0
- package/dist/src/sources/connect.d.ts +1 -0
- package/dist/src/sources/connect.js +13 -10
- package/dist/src/verbs/ask.js +6 -0
- package/dist/src/verbs/do.js +2 -1
- package/package.json +5 -4
- package/runtime.bundle.json +24026 -0
package/TARGET.bound
CHANGED
|
@@ -4,7 +4,7 @@ bound-lock/1 about="# Agreement keeps its sources\n\nTwo matching answers need n
|
|
|
4
4
|
bound-lock/1 about="# Connect any API\n\nhead reads an API by the document its provider already publishes, at the address you give it. head names no provider and connects none of its own: what is connected is what you hand it. Here is one way for each level of access, with an API of each kind.\n\n### No access: a document that says nothing about it\n\nTake an API whose document lists its operations and states nothing about access. head does not guess what that means: it tries a read once with nothing attached, and keeps what it saw (`access/<source>/<operation>/observed anonymous`) as a receipt its own key signs. Nothing but a read is ever tried this way.\n\nConnect the document by its address, `https://<provider>/openapi.yaml`, by the site that publishes it, or by a folder holding it, as `forecast`, then read one of its operations. With no place yet, one yes founds your place in `~/place`, connects the document there and lets head read `forecast` for the next 90 days. A document that names several servers asks once which one. The answer comes back typed by what the document declares, one value a line, with a signed receipt of the read (abridged):\n\n```text\nanswer/<request>/current/temperature number …\nanswer/<request>/current_units/temperature text …\nread/forecast/<operation>/<request> digest sha256:… signed by head\n```\n\nAn overlay can still say what the provider says on its own site, so the place states it rather than observes it:\n\n```yaml\noverlay: 1.0.0\ninfo: { title: the forecast, read without a key, version: '1' }\nactions:\n - target: \"$.paths['/forecast'].get\"\n description: the provider says this read needs no key\n update: { security: [] }\n```\n\nWhatever API you connect, its terms are the provider's: read them before you connect it, and say where an answer came from when they ask you to.\n\n### A declared flow: OAuth 2.0\n\nTake an API whose document declares OAuth 2.0 with an authorization code. head compiles it into the two steps it takes, the provider's page with PKCE and then the token exchange, and nobody writes a line of it. What it needs is yours: the client id of an app you registered with the provider, signed into the place as `keys/access/<source>/<flow> client <id>`. Until then head says so and calls nothing.\n\n### A secret entered by hand\n\nWhen a document declares a bearer token or an API key and no way to obtain one, the key is a secret input. head asks for it on its own one-time page, never through the model, and only when the place's root allows a secret with `access/secret-inputs`. It is kept in the keychain, never in a file.\n\n### When the document says too little\n\nA login of its own (an email, a one-time code, a choice of account) is written once as an `x-access` flow, an Arazzo profile in an overlay, and every API of the same issuer refers to it with one `$ref`. The profile and its vectors are on topos-openapi's own page, `docs/x-access.md` in `@lapxo/topos-openapi`. Every API connected this way is read the same way afterwards: one access per issuer, each answer typed and kept.\n" at=policy:head/connect/0.1.4 by=target form=alphabet measure=text role=writes scope=prose/en/page/connect-any-api shape=docs/connect-any-api.md value=lock
|
|
5
5
|
bound-lock/1 about="# Security\n\nReport vulnerabilities privately to hello@lapxo.com. Do not open public issues for security reports.\n\nWe acknowledge reports within 7 days. There is no bug bounty or reward. We will credit you in a fix if you want.\n\n## What is trusted\n\nThe owner chooses the place, its admitted keys and permissions, the installed instrument, the source descriptions and the transport policy. The operating system, keychain and code running with the user's privileges are part of the trusted computing base. The model, remote source content, received packages and suggested actions are not authority. The MCP client is trusted to display consent requests and report the person's response accurately; a compromised or auto-approving client can misrepresent that response, and head cannot prove a person clicked yes.\n\nA source document describes an operation. Its accuracy and the source's data remain the provider's responsibility. A misclassified read can have server-side effects; head does not prove the provider's implementation. A signature proves the statement checked under its admitted key and context; it does not prove that an API answer is true.\n\n## Signing and access secrets\n\nSigning keys are handled by the short-lived signer. Its supported interface returns public keys or signatures, and the long process refuses a signing key requested by name. API credentials are different: the access and transport adapters must handle them to authenticate the request to the declared provider. Supported paths keep them out of model arguments, normal answers, command arguments and ordinary receipts.\n\nThis is a code boundary, not OS isolation. The signer and head run as the same user. A compromised same-user process can invoke the keychain, replace code or read data that user can access. This release does not claim protection from it, nor guaranteed secret removal from arbitrary malicious source bodies, crash dumps or external programs. Do not put secrets in API descriptions or model messages.\n\n## Network and doors\n\nA digest is not network permission. Retrieval still requires the receiver's origin and transport policy. The declared host checks destinations and redirect policy; a matching hash does not authorize a private-network request, a downgrade or forwarding credentials to another origin.\n\nThe network doors bind to loopback and validate their Host and Origin boundaries. Loopback alone is not authentication. A client can suggest an action, but the place's permissions and consent rules still apply. Cancellation and request scratch cleanup have their existing bounds; they do not make an arbitrary process safe to run.\n\n## Configuration is not general execution authority\n\nThe native authority preflight checks exact configuration records and their admission context. It authenticates the selected place, instrument, key, records, epoch and explicit clock. A card is an observation of that context, not permission to sign or land a changed future action. The actual act independently checks current authority.\n\nAPI execution, aggregates, access negotiation, secret consent and personal-attestation admission are not all covered by that preflight. Their existing domain checks remain. An old card can become stale after any Root epoch change even when a particular key's eligibility remains unchanged. A local coverage declaration is not revocation of the original Root anchor.\n\n## Sharing and lineage\n\nA content reference, source package and portable public birth declaration are different objects. Inspection does not connect a source, import grants or install an owner. A holder address is not authenticated sender identity. Hash equality establishes the named bytes only under the selected contract.\n\nSource descriptions can themselves contain sensitive information. Review them before sharing. The selected portable birth profile excludes authority material; it does not make every file in a place public. Keep the local birth journal, credentials, keychain, admission history and derived stores out of a shared package.\n\nLineage marks report declared relationships and recognized source identity. They do not establish statistical independence, a confidence score or a count of independent causes. Withdrawing a declaration changes the current view; it does not erase earlier receipts.\n\n## Supported environment and useful reports\n\nmacOS desktop is the supported environment. Other platform adapters and tests are not evidence of a real Linux secret service, browser flow or unattended deployment. Multiple local processes do not establish distributed coordination over a shared object store.\n\nUseful reports include a reproducible action that obtains a key without coverage, lands without an admitted signer, bypasses a door or network policy, changes a refusal through a supported door, or treats received bytes or a stale card as permission. Include the version, expected boundary and a minimal reproducer. Redact credentials and personal paths; never send a signing key.\n\nThe model's behavior, third-party API correctness and programs outside the supported boundaries are not security guarantees of head. A vulnerability in how head handles those inputs is still relevant. Related algebra, contract and instrument bugs can be reported through the same private channel.\n" at=policy:head/documentation/0.2.0 by=target form=alphabet measure=text role=writes scope=prose/en/security shape=SECURITY.md value=lock
|
|
6
6
|
bound-lock/1 about="# Share public declarations, then inspect them\n\nA place has several different things you can share:\n\n- A source package names its documents, overlays and compiled pins by digest. Receiving it still needs local permission.\n- A content reference names bytes. A separate holder location says where to obtain them; no location means no invented address. A viewer address is not a holder.\n- `birth.topos` is a separate unsigned public declaration artifact. It does not carry the local `birth.bound`, keys, grants or admission history.\n\nThis executable checkout example shares only a public language declaration. It creates independent fixture places and simulated keys. It does not contact an external API or change your real keychain. Run `npm ci --ignore-scripts` first; Node 22.18 or later is required.\n\n```sh\nnode --input-type=module <<'JS'\nimport { readFileSync, mkdtempSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { tmpdir } from 'node:os';\nimport { strict as assert } from 'node:assert';\nimport { born, line } from './test/place.ts';\nimport { ask } from './test/client.ts';\nconst demo = JSON.parse(readFileSync('docs/examples/sharing.json', 'utf8'));\nconst shared = mkdtempSync(join(tmpdir(), 'head-public-example-'));\nconst sender = born(undefined, [line(demo.sender.scope, 'id', demo.sender.value)], null, false, 'catalog', false);\nconst receiver = born(undefined, [line(demo.receiver.scope, 'id', demo.receiver.value)], null, false, 'route-notes', false);\nconst env = p => ({ ...p.keychain.env, HEAD_HOME: join(mkdtempSync(join(tmpdir(), 'head-example-home-')), 'home') });\nconst call = (name, arguments_) => ({ method: 'tools/call', params: { name, arguments: arguments_ } });\nconst [packed] = await ask([call('share', { place: sender.place, to: join(shared, 'public') })], [shared], env(sender));\nconst birth = packed.result.structuredContent.cells.find(c => c.code === 'head/birth-shared');\nassert(birth);\nconst before = readFileSync(join(receiver.place, 'TARGET.bound'));\nconst [inspected, altered] = await ask([\n call('connect', { place: receiver.place, document: birth.fields.document, digest: birth.fields.digest }),\n call('connect', { place: receiver.place, document: birth.fields.record + ' ', digest: birth.fields.digest })\n], [shared], env(receiver));\nconst observation = inspected.result.structuredContent.cells.find(c => c.code === demo.expectedCode);\nassert(observation && observation.fields.collisions === demo.expectedCollision);\nassert(altered.result.structuredContent.cells.some(c => c.code === demo.negativeCode));\nassert.deepEqual(readFileSync(join(receiver.place, 'TARGET.bound')), before);\nconsole.log(JSON.stringify({ inspection: observation.code, collision: observation.fields.collisions, alteredBytes: demo.negativeCode, authorityTransferred: false }, null, 2));\nJS\n```\n\nThe receiver names the occupied `lang` coordinate and keeps its own value. One changed byte with the expected digest is refused. Inspection does not import permission or identify an authenticated sender. To adopt a declaration, the receiver uses its ordinary local admission process; this example intentionally does not do that.\n\nA standing reference follows the same separation: compare the expected content identity and apply the receiver's network policy before fetching. A holder URL is not authority. The existing located-reference vector is `node --test test/link-url.test.ts`; it also covers missing locations, altered bytes and denied transport. Review source documents for sensitive information before sharing them.\n" at=policy:head/documentation/0.2.0 by=target form=alphabet measure=text role=writes scope=prose/en/page/sharing shape=docs/sharing.md value=lock
|
|
7
|
-
bound-lock/1 about="# head\n\nAsk your APIs through an assistant. Keep who answered, what was read, and what you allowed.\n\nhead is an MCP server. Give it an API document, approve the connection, and ask a question. It reads operations the document declares, returns typed fields when a schema is available, and keeps signed receipts of its reads. Without a usable schema, the answer is named as untyped.\n\n```text\nYou: Connect this API as forecast.\n [give its OpenAPI document; approve the connection]\nYou: What is the forecast in Lima?\n\nforecast: temperature 21, sky clear\nreceipt: sha256:…\n```\n\nThis is an illustrative fixture, not a live forecast. [Run the local example](docs/first-minute.md) without an account or a real secret.\n\n## Start\n\nFor an assistant that starts MCP servers by command:\n\n```sh\nnpx -y @lapxo/head@0.2.
|
|
7
|
+
bound-lock/1 about="# head\n\nAsk your APIs through an assistant. Keep who answered, what was read, and what you allowed.\n\nhead is an MCP server. Give it an API document, approve the connection, and ask a question. It reads operations the document declares, returns typed fields when a schema is available, and keeps signed receipts of its reads. Without a usable schema, the answer is named as untyped.\n\n```text\nYou: Connect this API as forecast.\n [give its OpenAPI document; approve the connection]\nYou: What is the forecast in Lima?\n\nforecast: temperature 21, sky clear\nreceipt: sha256:…\n```\n\nThis is an illustrative fixture, not a live forecast. [Run the local example](docs/first-minute.md) without an account or a real secret.\n\n## Start\n\nFor an assistant that starts MCP servers by command:\n\n```sh\nnpx -y @lapxo/head@0.2.1 run\n```\n\nThe pin above names this release; the executable examples in this tree use the checkout. A client can also open a desktop extension from [releases](https://github.com/Lapxo/head/releases); check the artifact digests supplied with the release. Starting head alone prints help; `head run` starts the MCP server.\n\nmacOS is the supported desktop environment. Node 22.18 or later is required. Linux, Windows and unattended cloud execution are not validated as supported environments here. A successful mock or CI job does not establish working system-keychain and browser integration.\n\n## What you do\n\n- **Connect** a document, optionally with an overlay. head pins the compiled description by digest. With no place yet, the first approved connection creates `~/place`.\n- **Ask** for one operation or compare the same question across sources. Receipts keep the source and time. A missing answer stays owed; an empty answer is not a missing answer.\n- **Act** within the place's permissions and consent rules. A suggested next step is not authorization. Writes do not become allowed because a model asked for them.\n- **Share and inspect** public material. A reference identifies content; a separate holder location says where to obtain it. Inspection checks the selected contract and grants nothing. [Try sharing and verification](docs/sharing.md).\n\nYour place keeps its declarations as text. `birth.bound` separates your local declarations from head's profile. Keep it private unless you have reviewed what you are sharing: it is not the portable public `birth.topos` artifact.\n\n## Two names are not two independent sources\n\nIf `mirror` shares `forecast`'s declared lineage, agreement is shown as `●○`. Both sources and their receipts remain visible. `●●` does not prove independence; it only reports what the declared lineage and source identity establish. Disagreement keeps each source's value instead of choosing a winner.\n\n[Run the lineage example](docs/lineage.md), including withdrawal of the lineage declaration without erasing earlier receipts.\n\n## Boundaries you can check\n\nSigning keys stay behind a short-lived signer port in the supported flow. Tokens go to the declared transport, not into model arguments. A compromised process running as your user is outside that code boundary: it can invoke the keychain itself.\n\nA digest is not network permission or proof that an answer is true. Received bytes install no authority. Configuration preflight does not replace API permission, access or secret-consent checks. See the [threat model and reporting policy](SECURITY.md), and [connect an API](docs/connect-any-api.md) for access options.\n\nThe three public MCP tools are `ask`, `connect` and `do`. Examples reuse the existing client and fixtures; they add no provider-specific behavior to head.\n" at=policy:head/release/0.2.1 by=target form=alphabet measure=text role=writes scope=prose/en/readme shape=README.md value=lock
|
|
8
8
|
bound-lock/1 about="*.mts\n*changelog*\n!node_modules/@lapxo/bound/**/*.d.ts\n" at=policy:head/bundle-pin/0.1.7 by=target form=alphabet measure=text role=writes scope=prose/en/bundle/exclusions shape=.mcpbignore value=lock
|
|
9
9
|
bound-lock/1 about="A call through this door carries the card of its place ({place}): ask for it first. Nothing was asked or called." at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=said/door-uncarded value=lock
|
|
10
10
|
bound-lock/1 about="A place is founded in an absolute folder: nothing was made." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/place-absolute value=lock
|
|
@@ -43,18 +43,26 @@ bound-lock/1 about="Configuration preflight for {key}: {decision}; kind {kind};
|
|
|
43
43
|
bound-lock/1 about="Configuration preflight needs {needs} for {key}. Nothing is signed or admitted." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=said/authority-needed value=lock
|
|
44
44
|
bound-lock/1 about="Configuration preflight refused for {key}: {why}. No configuration signature or admission was requested." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=said/authority-refused value=lock
|
|
45
45
|
bound-lock/1 about="Connect a source to a place from its document." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/connect value=place|source|document
|
|
46
|
-
bound-lock/1 about="Connect a source to a place, once the person says yes: its document, and an overlay beside it, laid whatever its kind and compiled once by whichever world reads it — or open, with the line that pays it — into what the source offers and how access is proven, pinned by digest. Nothing is called. A document at an address may be read as a source the place connected, with the access it holds, and checked against its digest. A package another place shared is connected whole: its lock as the document, named by its digest. A site alone or a folder is looked for its document first, before anything is founded. With no place yet, the first connect founds the person's place on one yes that also lets head read the source." at=policy:head/
|
|
46
|
+
bound-lock/1 about="Connect a source to a place, once the person says yes: its document, and an overlay beside it, laid whatever its kind and compiled once by whichever world reads it — or open, with the line that pays it — into what the source offers and how access is proven, pinned by digest. Nothing is called. A document at an address may be read as a source the place connected, with the access it holds, and checked against its digest. A package another place shared is connected whole: its lock as the document, named by its digest. A site alone or a folder is looked for its document first, before anything is founded. With no place yet, the first connect founds the person's place on one yes that also lets head read the source." at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=tool/connect value=protocol|place|source|document|overlay|digest|via|accept|operation|args
|
|
47
47
|
bound-lock/1 about="Connect any API" at=policy:head/docs by=target form=alphabet measure=text role=writes scope=prose/en/page/connect-any-api/heading value=lock
|
|
48
|
+
bound-lock/1 about="Connect the selected public document {document} as {source}, then repeat share. Nothing was fetched by export." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-source-needed value=lock
|
|
48
49
|
bound-lock/1 about="Connect {source} to the place {place} from {document} with the connect tool, then show me what it offers." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/connect/text value=lock
|
|
49
50
|
bound-lock/1 about="Connected to {place} from the package {package}: {sources} — every document and every pin as it names them. Nothing was granted with them: access is asked here, issuer by issuer." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/received value=lock
|
|
51
|
+
bound-lock/1 about="Current physical reading sha256:a89dd0f85117745631734c6bfa612a18c5aacc79f5c328295f7a247d9da0601f; the lines of all of head's source, together, read by head's suite; widened by the ports region removing what each bound run read once it ends, 4, as the owner ruled; widened by the signing key leaving head-s long process and its refusal written by every door, 7, as the owner ruled; B measured capacity: 2779 lines; witness sha256:30dbaabd472e14a868bbf3a5abe0ff1919232e33668de67fac07d57b572da3a0; C measured capacity: 2826 lines; witness sha256:5b13f1d6e99c3898a11a849d89608f6b92ec968e32b307ed8ae9e4a5242e1622; B1-B3 measured capacity: 2828 lines; witness sha256:d5cd8a69c52aac6de6c39c2a3380b86d84ef1b10b0e3e959927cb382da0a6ae4; composition preparation measured capacity: 2902 lines; witness sha256:352052b687589a55fbd333dab46db39306117f4861e82ebb335e794986b5ef87; share assembly measured capacity: 3024 lines; witness sha256:e4fdec6a3605976ebbd1a38d97958b9da4a5bdcd680cb5ca587a7eedefe76a17; measured 3107 lines; witness sha256:971e89508c79a57a115f0d510f512ec7289d1ec43159ff87df9fce1eae0591d5; single SDK binding and configured ports: 3118 physical lines; witness sha256:57aeee51f2ae0f23b8068c8ff190047361deec6232e386bbec192edcb0902c0e; receiver runtime measured capacity: 3252 lines; witness sha256:fefc88b1c0699aae34af20bc593a85194650bf2ab8f41f4bfab5dfdcf9d82480" at=witness:head/mcp-answer/capacity by=target form=interval measure=source-lines role=writes scope=source/lines value=0..3421
|
|
52
|
+
bound-lock/1 about="Current physical reading sha256:a89dd0f85117745631734c6bfa612a18c5aacc79f5c328295f7a247d9da0601f; the lines of the core region, together; B1-B3 measured capacity: 804 lines; witness sha256:376da26ce87d9b34fe44bd1b1cdd8a54663b96a1009bdacbf8a72c09d3367463; composition preparation measured capacity: 830 lines; witness sha256:d69a7a46e4bfb232dfdca4c29866588b9a88b0d9bf7b08132d9181deafad32d2; share assembly measured capacity: 883 lines; witness sha256:2de050b66a257fe61553b993a22f0c258dba06161db105c6e2013b73bd9dd2af; measured 912 lines; witness sha256:f5546111121539910dd698f64746ea1aa89f7a9d97ad42139d75d758409404f2; receiver runtime measured capacity: 1003 lines; witness sha256:4dd0ff82bd9a481058ed29623325c6aee418636145beba2bbfe1fbf0938060ab" at=witness:head/mcp-answer/capacity by=target form=interval measure=core-lines role=reads scope=core/lines value=0..1071
|
|
53
|
+
bound-lock/1 about="Current physical reading sha256:a89dd0f85117745631734c6bfa612a18c5aacc79f5c328295f7a247d9da0601f; the lines of the doors region, together, read by head's suite; widened by each door reading its ceiling of refusals from its own line; widened by head writing what it refuses, so MCP writes it as lines and http do, 6, as the owner ruled; C measured capacity: 205 lines; witness sha256:8fbd5a22177e9c61fb62fd7af605548d02b2cc425f7326b3c826cd23f333f658; share assembly measured capacity: 206 lines; witness sha256:561a8d0454ca2f3f112455054d0c64452e530d6c09fc6e7678ed319a756813a1; receiver runtime measured capacity: 207 lines; witness sha256:19501574950e156b89a1dc48e3ac82823a6deca0ed7595252a269510d9529987" at=witness:head/mcp-answer/capacity by=target form=interval measure=doors-lines role=writes scope=doors/lines value=0..208
|
|
50
54
|
bound-lock/1 about="Current selected package metadata consumed by the installed acceptance release checks." at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=coordinates role=reads scope=region/release-metadata value=package.json|package-lock.json
|
|
51
55
|
bound-lock/1 about="Desktop Extension exclusions applied by the native packager without changing installed dependencies" at=policy:head/bundle-exclusions/0.1.6 by=target form=alphabet measure=id needs=.mcpbignore role=demands scope=view/bundle-exclusions shape=.mcpbignore value=text
|
|
52
56
|
bound-lock/1 about="Do one action in a place, on the card ask answered for it: found a place, admit a device, land a lot ask planned, share a place, make this device's key, prove access to a source, call an offer that is not a read, or keep what the person states as theirs. An action on a place that moved since its card was asked is refused, with nothing done; one the place does not allow is said not to be in the card. The answer ends with the card valid from this act." at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=tool/do value=action|card|place|dir|name|key|coverage|lot|to|urls|who|source|operation|args|said|withdraw|origin
|
|
53
57
|
bound-lock/1 about="Drafted lines, one a line, each by=target and unsigned: shown to the person and, on their yes to exactly those, signed by their key and folded as if landed. Nothing lands; the answer names the lot do lands." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/ask/lines value=string
|
|
54
58
|
bound-lock/1 about="Earlier, {source} answered the same request at {at}, under receipt {digest}." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/history-earlier value=lock
|
|
55
59
|
bound-lock/1 about="Exact configuration records, one per line. Presence requests native configuration preflight instead of the existing cells view." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=tool/card/lines value=string
|
|
60
|
+
bound-lock/1 about="Exact current producer inputs required by this regional evidence; compiled members are consumed inputs, not ignored maintenance." at=policy:head/release-acceptance/0.2.1 by=target form=alphabet measure=digest needs=src/|dist/|test/|vectors/|docs/contracts/|package.json|package-lock.json|samples/composition/yes/ role=writes scope=dep/composition-inputs value=sha256:ff823082358cf7d8b83f91e76a6396b8dee0acdff1e07b2a1dcef609807e7ab4
|
|
56
61
|
bound-lock/1 about="Exact selected manifest and lock agree with the reviewed installed artifact. Existing world-pin semantics remain in their current consumer vectors; no generic profile-composition integration is claimed." at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=id role=writes scope=release/category/pins value=release/installed-pins|release/metadata/*
|
|
62
|
+
bound-lock/1 about="Explicit document protocol: mcp discovers only the named HTTPS endpoint after recipient consent; omitted retains ordinary source documents." at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=tool/connect/protocol value=string
|
|
57
63
|
bound-lock/1 about="Explicit recipient origins for the pinned content sources and their declared release-asset destination. The content digest grants no network permission; Bound validates each connection and redirect." at=policy:head/receiver/0.1.7 by=target form=alphabet measure=id role=writes scope=bound/receiver/origins value=https://github.com|https://registry.npmjs.org|https://release-assets.githubusercontent.com
|
|
64
|
+
bound-lock/1 about="Export the existing public source package to a folder, or assemble an .mcpb from a host-provisioned verified runtime and a JSON recipe in args. Unconnected OpenAPI URLs require the existing consented connect flow first. Missing MCP execution integration stays open; export grants nothing." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=tool/share value=place|to|urls|args
|
|
65
|
+
bound-lock/1 about="First connect the MCP endpoint {document} as {source} with protocol=mcp. Export never discovers or invokes a server implicitly." at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-mcp-needed value=lock
|
|
58
66
|
bound-lock/1 about="For access and act: a source the place compiles." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/source value=string
|
|
59
67
|
bound-lock/1 about="For act, the operation, by its name or in the person's words; for access, the read whose access is proven, without one the first read the source offers." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/do/operation value=string
|
|
60
68
|
bound-lock/1 about="For act: the parameters by name, and body for what the operation is sent." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/args value=object
|
|
@@ -67,8 +75,9 @@ bound-lock/1 about="For key: head, for the key that signs what head read and did
|
|
|
67
75
|
bound-lock/1 about="For land: the lot ask answered for the drafted lines." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/lot value=string
|
|
68
76
|
bound-lock/1 about="For place, the name it is known by, without one the folder's; for admit, the name the place knows that device by." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/do/name value=string
|
|
69
77
|
bound-lock/1 about="For place: the folder of the new place, absolute." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/dir value=string
|
|
70
|
-
bound-lock/1 about="For share: The folder the package is written into, absolute, inside the place or a folder the client shares: never the place itself, its connected documents, a folder head or bound keeps, or a folder holding a lock that is no package." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/to value=string
|
|
71
78
|
bound-lock/1 about="For share: Where the package's bytes are also published, as a JSON object from each path the package names to an encrypted address, signed or expiring as it may be; optional. A receiver then connects the lock from its own address, by its digest." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/do/urls value=string
|
|
79
|
+
bound-lock/1 about="For share: an absolute destination in a client-shared root or inside the place. A folder exports the public package; a new .mcpb file requests standard bundle assembly. Existing files and private place directories are never overwritten." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=tool/do/to value=string
|
|
80
|
+
bound-lock/1 about="For share: an absolute destination in a client-shared root or inside the place. A folder exports the public package; a new .mcpb file requests standard bundle assembly. Existing files and private place directories are never overwritten." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=tool/share/to value=string
|
|
72
81
|
bound-lock/1 about="Found a place for my sources in a folder." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/place value=dir|name
|
|
73
82
|
bound-lock/1 about="Found a place in a folder, once the person says yes: its root key made in the keychain, the lines it is born with — reads bounded, read-only — and its name in head's index of places." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/place value=dir|name
|
|
74
83
|
bound-lock/1 about="Found the place {name} in {dir} with the do tool, as its place action. Ask me before you do." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/place/text value=lock
|
|
@@ -77,6 +86,9 @@ bound-lock/1 about="History, not a current answer: what {source} answered to {op
|
|
|
77
86
|
bound-lock/1 about="How many times, at most." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/can/times value=string
|
|
78
87
|
bound-lock/1 about="How {source} proves access, the most trusted first: {flows}. A flow that asks a secret runs only as far as this place allows: {allowed} on head's page (access/secret-inputs)." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/trust value=lock
|
|
79
88
|
bound-lock/1 about="I allow {operation} on {source} up to {times} times. Plan this line for me to sign:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/can/text value=lock
|
|
89
|
+
bound-lock/1 about="Import the public sources {sources} from package {name} {revision} into {place}, founding it if needed, and remember this choice on this device? No sender keys, credentials or permissions are imported." at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/elicit-bundle-receive value=lock
|
|
90
|
+
bound-lock/1 about="Inspect the named refusal before preparing another request; no permission is granted." at=policy:head/ci-contract-repair/0.2.1 by=target form=alphabet measure=id role=writes scope=said/mcp-refused/next value=none
|
|
91
|
+
bound-lock/1 about="Invoke the selected MCP tool {source}/{operation} at {endpoint}, request {request}? A read-only hint is a declaration, not proof of an effect." at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=said/elicit-mcp-call value=lock
|
|
80
92
|
bound-lock/1 about="Its document: an https address or a file." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/connect/document value=string
|
|
81
93
|
bound-lock/1 about="Its link is {link}. Publish {document} at {at} exactly as it is: the link names that document's bytes, never the package's files, which still go apart with its digest." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/shared-link value=lock
|
|
82
94
|
bound-lock/1 about="Keep a source read-only: whatever it offers beyond reads is never called, whatever else is allowed." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/readonly value=source
|
|
@@ -86,11 +98,19 @@ bound-lock/1 about="Kept as yours in {place}: {said}" at=policy:head/claims/0.1.
|
|
|
86
98
|
bound-lock/1 about="Kept in {place} as an agent stated it, never as the person's: {said}" at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/agent-claimed value=lock
|
|
87
99
|
bound-lock/1 about="Land a lot plan signed, by its digest, while the place still stands on the base it was planned against." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/land value=lot
|
|
88
100
|
bound-lock/1 about="Lines to sign come drafted, one a line, each by=target and unsigned: nothing was asked." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/bad-lot value=lock
|
|
101
|
+
bound-lock/1 about="MCP endpoint {document} requires the client transport integration before it can be packaged as a working source. Nothing was invoked." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-protocol-pending value=lock
|
|
102
|
+
bound-lock/1 about="MCP refused: {why}. No permission follows from a catalogue or a package." at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=said/mcp-refused value=lock
|
|
89
103
|
bound-lock/1 about="Maximum history and request records in the native authority-card query; the existing bound/printed byte budget applies independently." at=policy:head/configuration-preflight/0.2.0 by=target form=interval measure=count role=writes scope=bound/authority/items value=0..65536
|
|
104
|
+
bound-lock/1 about="Measured response budget; witness sha256:c44e6ae5f10f3ee938f6d846f6c0a704688f5bbb9b15f261212fd73ccc45e922" at=witness:head/0.2.1/response-budget by=target form=interval measure=milliseconds needs=samples/mcp-receiver/yes/ role=demands scope=composition/mcp-receiver-latency value=0..6000
|
|
105
|
+
bound-lock/1 about="Measured response budget; witness sha256:c44e6ae5f10f3ee938f6d846f6c0a704688f5bbb9b15f261212fd73ccc45e922" at=witness:head/0.2.1/response-budget by=target form=interval measure=seconds role=reads scope=answer/seconds value=0..6
|
|
90
106
|
bound-lock/1 about="More than one of what {source} offers fits \"{asked}\": the person chooses the one they meant, in head's form, which lists them to the person alone." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/pick-offer value=lock
|
|
91
107
|
bound-lock/1 about="Native projection of the existing exact installed first-minute acceptance, checked against the current manifest and lock. Not CI or independent-machine evidence." at=policy:head/release-gates/0.2.0 by=target form=interval measure=defects needs=samples/first-minute/yes/ role=demands scope=release/cli-startup value=0..0
|
|
92
108
|
bound-lock/1 about="Native projection of the existing exact installed first-minute acceptance, checked against the current manifest and lock. Not CI or independent-machine evidence." at=policy:head/release-gates/0.2.0 by=target form=interval measure=defects needs=samples/first-minute/yes/ role=demands scope=release/installed-pins value=0..0
|
|
109
|
+
bound-lock/1 about="No action is authorized by this result." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-protocol-pending/next value=none
|
|
110
|
+
bound-lock/1 about="No action is authorized by this result." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-refused/next value=none
|
|
111
|
+
bound-lock/1 about="No action is authorized by this result." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-shared/next value=none
|
|
93
112
|
bound-lock/1 about="No answer of {operation} on {source} is held for this request: there is no line to say why. A read of it, at 8, lands the receipt that would." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/why-none value=lock
|
|
113
|
+
bound-lock/1 about="No bundle was written: {why}." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-refused value=lock
|
|
94
114
|
bound-lock/1 about="No intent {intent} stands open for this source: nothing was closed." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/nothing-open value=lock
|
|
95
115
|
bound-lock/1 about="No place stands yet, and head connects no API of its own: connecting {source} by the address of its document founds your place at {dir}, on one yes, and {operation} is asked again with {args}." at=policy:head/birth/0.1.4 by=target form=alphabet measure=id role=writes scope=said/unborn value=lock
|
|
96
116
|
bound-lock/1 about="No place was named and the client shares no root: name the folder of a place." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-place value=lock
|
|
@@ -105,15 +125,22 @@ bound-lock/1 about="One view of a place as bound folds it, for a client to hold
|
|
|
105
125
|
bound-lock/1 about="Only exact record-coverage and Root configuration admission are mapped. The receiver supplies canonical place, installed instrument and an explicit instant clock horizon; Bound selects and authenticates its current local admission epoch. Foreign evidence clocks never select receiver authority. API execution, aggregate actions, access negotiation, secret consent and personal attestation admission remain outside Q4 coverage. A snapshot card grants no later act; actual signing and admission independently validate current authority." at=policy:head/bound-repin/0.2.8 by=target form=alphabet measure=id role=writes scope=bound/authority/scope value=configuration
|
|
106
126
|
bound-lock/1 about="Open this page on this device to answer: {title}. What you enter goes to head on this device, never through the model." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/answer value=lock
|
|
107
127
|
bound-lock/1 about="Open this page on this device to enter what {title} asks for. Nothing you type passes through the model; only the secret it yields is kept, in your keychain." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/enter value=lock
|
|
128
|
+
bound-lock/1 about="Operation {source}/{operation} is outside the package selection for {place}." at=policy:head/ci-contract-repair/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-not-selected value=lock
|
|
129
|
+
bound-lock/1 about="Optional composition recipe JSON: id, revision, title, description and sources with source, namespace and offers. A missing document source may name its public HTTPS document to request consented connect; an MCP endpoint remains pending until its client transport is integrated. No executable or secret configuration is accepted." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=tool/share/args value=string
|
|
108
130
|
bound-lock/1 about="Optional native configuration card for receiver-context rechecking; separate from the legacy do.card digest." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=tool/ask/authority value=string
|
|
109
131
|
bound-lock/1 about="Optional previously observed native authority card to recheck at the supplied receiver instant. It is separate from do.card and never chooses Root, instrument, key, clock or records." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=tool/card/authority value=string
|
|
110
|
-
bound-lock/1 about="
|
|
132
|
+
bound-lock/1 about="Package {name} {revision} is associated with your place {place}." at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-associated value=lock
|
|
111
133
|
bound-lock/1 about="Packed from {place} into {to}: {sources}. Its lock names each by digest, beside the bytes it names. The package is {digest}: send it apart from the folder, over a private channel, and the receiver connects the lock by it. It carries no key and no answer, and grants nothing." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/shared value=lock
|
|
134
|
+
bound-lock/1 about="Physical bytes of each world standing selected by world/adopts; one reading per world, verified by its declared digest; excludes Root storage and sums across worlds" at=policy:head/world-standing/0.2.1 by=target form=interval measure=world-standing-bytes role=reads scope=world/standing-bytes value=0..1048576
|
|
112
135
|
bound-lock/1 about="Pick the origin head reaches {source} at in this place, once. None is a default." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/pick value=lock
|
|
113
|
-
bound-lock/1 about="Project reviewed local installed-client measurements; project the conservative recorded values in whole milliseconds and an explicit completeness reading. The existing strict client test enforces the six unchanged gates; receipt closure alone is not a latency verdict. No CI or independent-machine claim." at=policy:head/
|
|
114
|
-
bound-lock/1 about="Project reviewed regional source-client runs in Node 22 and 24, bound to exact current sources and contract. This is not a source-budget, Q4-completeness, installed-acceptance or CI verdict." at=policy:head/
|
|
115
|
-
bound-lock/1 about="Project the two existing consumer walk vectors in Node 22 and 24, bound to fresh sources, producer inputs and the unchanged declared birth/walk/host/instrument contract. Preserve the birth/view/walk demand; do not implement the walk or transfer authority. Independent observer files are excluded from other observer inventories to avoid self-reference." at=policy:head/
|
|
136
|
+
bound-lock/1 about="Project reviewed local installed-client measurements; project the conservative recorded values in whole milliseconds and an explicit completeness reading. The existing strict client test enforces the six unchanged gates; receipt closure alone is not a latency verdict. No CI or independent-machine claim." at=policy:head/acceptance-successors/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|test/|samples/first-minute/yes/|package.json|package-lock.json|dist/test/ role=writes scope=reader/first-minute shape=run value=dist/test/first-minute.js
|
|
137
|
+
bound-lock/1 about="Project reviewed regional source-client runs in Node 22 and 24, bound to exact current sources and contract. This is not a source-budget, Q4-completeness, installed-acceptance or CI verdict." at=policy:head/acceptance-successors/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|test/|docs/contracts/|samples/authority-preflight/yes/|dist/test/ role=writes scope=reader/authority-preflight shape=run value=dist/test/authority-preflight-reader.js
|
|
138
|
+
bound-lock/1 about="Project the two existing consumer walk vectors in Node 22 and 24, bound to fresh sources, producer inputs and the unchanged declared birth/walk/host/instrument contract. Preserve the birth/view/walk demand; do not implement the walk or transfer authority. Independent observer files are excluded from other observer inventories to avoid self-reference." at=policy:head/acceptance-successors/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|test/|samples/walk-reading/yes/|TARGET.bound|dist/test/ role=writes scope=reader/walk-reading shape=run value=dist/test/walk-reading.js
|
|
116
139
|
bound-lock/1 about="Propose lines for the person to sign: they are shown to the person with the place and the base they are made against; on a yes to exactly those, the person's key signs them and they are folded as if landed. Nothing lands; the lot is kept by its digest." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/plan value=place|lines
|
|
140
|
+
bound-lock/1 about="Proposed exact protocol-owned response model; its standing, executable blob and source are pinned separately. Admission and publication are not inferred." at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=digest role=writes scope=world/topos-mcp/blob value=sha256:1c3c9326e89aabe3a43bf074d0e06b5bbebd1fdb6e06423b957dc03914de051d
|
|
141
|
+
bound-lock/1 about="Proposed exact protocol-owned response model; its standing, executable blob and source are pinned separately. Admission and publication are not inferred." at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=digest role=writes scope=world/topos-mcp/standing value=sha256:c472ae2856813c7e8cbc3dbd7e96884aa2e769dd5fa277fcb21d7061a81dda3e
|
|
142
|
+
bound-lock/1 about="Proposed exact protocol-owned response model; its standing, executable blob and source are pinned separately. Admission and publication are not inferred." at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=sources/topos-mcp value=https://github.com/Lapxo/topos-mcp/releases/download/v0.1.2/standing.bound
|
|
143
|
+
bound-lock/1 about="Proposed exact protocol-owned response model; its standing, executable blob and source are pinned separately. Admission and publication are not inferred." at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=sources/topos-mcp-blob value=https://github.com/Lapxo/topos-mcp/releases/download/v0.1.2/1c3c9326e89aabe3a43bf074d0e06b5bbebd1fdb6e06423b957dc03914de051d.tar.gz
|
|
117
144
|
bound-lock/1 about="Prove access to a source ahead of any call, the way its document declares: the person's own page, or its provider with a client registered for the visit; the secret is kept in this keychain and a receipt lands without it. Nothing is called." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/access value=place|source|operation
|
|
118
145
|
bound-lock/1 about="Prove access to a source the way it declares, ahead of any call: entered on head's page or at its provider, never here." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=prompt/access value=place|source
|
|
119
146
|
bound-lock/1 about="Prove access to {source} in {place} with the do tool, as its access action. I will enter what it asks on head's own page or at its provider, never here." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=prompt/access/text value=lock
|
|
@@ -131,7 +158,8 @@ bound-lock/1 about="Rendered from the admitted prose. Verbatim native output sel
|
|
|
131
158
|
bound-lock/1 about="Rendered from the admitted prose. Verbatim native output selected by shape. Verification compares the rendered bytes; a retained seal is not a guarantee of later file presence." at=policy:head/documentation/0.2.0 by=target form=alphabet measure=role role=reads scope=leaf-role/docs/first-minute.md value=derived
|
|
132
159
|
bound-lock/1 about="Rendered from the admitted prose. Verbatim native output selected by shape. Verification compares the rendered bytes; a retained seal is not a guarantee of later file presence." at=policy:head/documentation/0.2.0 by=target form=alphabet measure=role role=reads scope=leaf-role/docs/lineage.md value=derived
|
|
133
160
|
bound-lock/1 about="Rendered from the admitted prose. Verbatim native output selected by shape. Verification compares the rendered bytes; a retained seal is not a guarantee of later file presence." at=policy:head/documentation/0.2.0 by=target form=alphabet measure=role role=reads scope=leaf-role/docs/sharing.md value=derived
|
|
134
|
-
bound-lock/1 about="Reviewed local capture for the preserved regional archive, before admission changes the public lock. Final release acceptance remains separate." at=policy:head/release-
|
|
161
|
+
bound-lock/1 about="Reviewed local capture for the preserved regional archive, before admission changes the public lock. Final release acceptance remains separate." at=policy:head/release-acceptance/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/first-minute-capture shape=samples/first-minute/yes/installed.json value=sha256:c415a3dd92eb6dfe893fd72a607526a359b9acd499c72e9838db86b8d05d8edb
|
|
162
|
+
bound-lock/1 about="Reviewed selection, SDK port and standard packager-format vectors only; not integrated composition, runtime closure, recipient lifecycle, Desktop acceptance or global closure." at=policy:head/composition-preparation/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|dist/|test/|vectors/|docs/contracts/|package.json|package-lock.json|samples/composition/yes/ role=writes scope=reader/composition-vectors shape=run value=dist/test/composition-reading.js
|
|
135
163
|
bound-lock/1 about="Several sources, joined by |, asked the same operation with the same arguments: what they agree on is marked by who says it, and what they differ on is shown from each." at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=tool/ask/sources value=string
|
|
136
164
|
bound-lock/1 about="Share a place with someone: its sources, as a package they connect by its digest." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=prompt/share value=place|who
|
|
137
165
|
bound-lock/1 about="Share the place {place} with {who}: pack it with the do tool, as its share action, into a folder I share, show me the package's digest, and tell me to send {who} the folder — or the addresses it is published at — and the digest apart from it, over a private channel." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=prompt/share/text value=lock
|
|
@@ -172,7 +200,6 @@ bound-lock/1 about="The folder of the place, absolute; without one, the first ro
|
|
|
172
200
|
bound-lock/1 about="The folder of the place, absolute; without one, the person's place." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/claim/place value=string
|
|
173
201
|
bound-lock/1 about="The folder of the place." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/access/place value=string
|
|
174
202
|
bound-lock/1 about="The folder of the place." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/connect/place value=string
|
|
175
|
-
bound-lock/1 about="The folder the package is written into, absolute, inside the place or a folder the client shares: never the place itself, its connected documents, a folder head or bound keeps, or a folder holding a lock that is no package." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=tool/share/to value=string
|
|
176
203
|
bound-lock/1 about="The folder, absolute." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/place/dir value=string
|
|
177
204
|
bound-lock/1 about="The grant under which {operation} on {source} was read at {at} had to be given again, so what was kept of it stands no longer: it was read again." at=policy:head/kept/0.1.5 by=target form=alphabet measure=id role=writes scope=said/kept-withdrawn value=lock
|
|
178
205
|
bound-lock/1 about="The host passes only an explicitly supplied public receiver policy to Bound; production defaults remain unchanged. Tests use declared HTTPS trust and internal destinations, never NODE_OPTIONS or ambient TLS settings." at=policy:head/host/0.1.7-repin-027 by=target form=alphabet measure=id role=writes scope=bound/host/receiver value=explicit-receiver-policy@1
|
|
@@ -198,6 +225,7 @@ bound-lock/1 about="The operation, by the id the source offers it under." at=pol
|
|
|
198
225
|
bound-lock/1 about="The operation, by the id the source offers it under." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/can/operation value=string
|
|
199
226
|
bound-lock/1 about="The operation, by the id the source offers it under." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/act/operation value=string
|
|
200
227
|
bound-lock/1 about="The operation, by the id the source offers it under." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/why/operation value=string
|
|
228
|
+
bound-lock/1 about="The package is ready in {document}: {digest}. Selected sources: {sources}. It carries no sender authority." at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-shared value=lock
|
|
201
229
|
bound-lock/1 about="The package's lock: an absolute file, or an encrypted address." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=prompt/receive/package value=string
|
|
202
230
|
bound-lock/1 about="The parameters by name, and body for what the operation is sent." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/act/args value=object
|
|
203
231
|
bound-lock/1 about="The parameters of that operation, by name; optional." at=policy:head/birth/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/connect/args value=object
|
|
@@ -205,11 +233,13 @@ bound-lock/1 about="The parameters of the operation, by name." at=policy:head/su
|
|
|
205
233
|
bound-lock/1 about="The parameters of the operation, by name." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/ask/args value=object
|
|
206
234
|
bound-lock/1 about="The person did not finish entering what {source} asks for, or no page could be offered: nothing was called. Asking again, with the person there, pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/entry-unfinished value=lock
|
|
207
235
|
bound-lock/1 about="The person did not say yes: nothing was signed and nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-yes value=lock
|
|
236
|
+
bound-lock/1 about="The person must approve or refuse the exact pending request; no invocation follows from this question." at=policy:head/ci-contract-repair/0.2.1 by=target form=alphabet measure=id role=writes scope=said/elicit-mcp-call/next value=none
|
|
208
237
|
bound-lock/1 about="The place holds nothing read of {source}: no line says where it is or what it offers." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/unread value=lock
|
|
209
238
|
bound-lock/1 about="The place moved since base {base}: nothing landed. Plan again." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/base-moved value=lock
|
|
210
239
|
bound-lock/1 about="The public birth record has not arrived: {document}. Nothing was admitted." at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-needs value=lock
|
|
211
240
|
bound-lock/1 about="The public birth record was refused: {why}. Nothing was admitted." at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-refused value=lock
|
|
212
241
|
bound-lock/1 about="The read whose access is proven; without one, the first read the source offers." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/access/operation value=string
|
|
242
|
+
bound-lock/1 about="The recipient must approve or refuse the pending import; a package grants no authority." at=policy:head/ci-contract-repair/0.2.1 by=target form=alphabet measure=id role=writes scope=said/elicit-bundle-receive/next value=none
|
|
213
243
|
bound-lock/1 about="The resolution that explains, in place of the one a person reads. With a source: its region with each offer's forms and how access is proven. With an operation: its region the same way and, once it was read, why its newest answer stands, who said it and when, its receipt digest and the pins it rests on. With a view: the view as it explains itself. Nothing is called." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/ask/why value=boolean
|
|
214
244
|
bound-lock/1 about="The resolution: of a view, the one it is read at; of a source, 0, 1 or 8 to read one offer." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/look/at value=integer
|
|
215
245
|
bound-lock/1 about="The response came back but its receipt did not land: {why}" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/not-landed value=lock
|
|
@@ -229,13 +259,14 @@ bound-lock/1 about="This client cannot ask you: sign these lines yourself in {pl
|
|
|
229
259
|
bound-lock/1 about="This device keeps keys for two roles only: head and person." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-role value=lock
|
|
230
260
|
bound-lock/1 about="This device keeps no keychain head can reach: no key was made." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-keychain value=lock
|
|
231
261
|
bound-lock/1 about="This device's person key already states {scope} in {place}, or the place states it itself: a second line of it can only be read from all of this key's lines together, which bound does not publish. Nothing was signed; the place's root can sign it." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/attested-again value=lock
|
|
262
|
+
bound-lock/1 about="This installed package names {name} {revision}. Connect its public sources from {document}, pinned by {digest}, into {place}; no authority has been imported." at=policy:head/ci-contract-repair/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-receiver-ready value=lock
|
|
232
263
|
bound-lock/1 about="This keychain keeps no root of {place}: whoever holds it connects sources and admits devices there. Nothing was asked." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-root value=lock
|
|
233
264
|
bound-lock/1 about="This place signs no view of cells: nothing is open to ask." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-cells value=lock
|
|
234
265
|
bound-lock/1 about="Through this door nothing is kept as the person's: a statement here is an agent's, and says so with origin agent. Nothing was asked or kept." at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/door-unoriginated value=lock
|
|
235
266
|
bound-lock/1 about="Total header-byte budget for the chain, preserving Bound default 16384-byte header limit." at=policy:head/receiver/0.1.7 by=target form=interval measure=bytes role=writes scope=bound/receiver/header-bytes value=0..16384
|
|
236
267
|
bound-lock/1 about="Use the published native identity-and-text projection in the actual caller context; group only views the operation needs. Check every installed member current bytes and the declared instrument pin on every call. Cached parsed views and one descriptor are reused only by the observed digests. Signing remains in its existing one-call host." at=policy:head/first-minute/0.2.0 by=target form=alphabet measure=id role=writes scope=bound/native-read-snapshots value=native-view-batch@1
|
|
237
268
|
bound-lock/1 about="Validate every completed cached lines/evidence view with the public identity returned by Bound, and bind new result text to that expected identity. A missing or refused identity never validates an older result. Head keeps no filesystem fingerprint or maintenance exclusion as a substitute." at=policy:head/verified-delivery/0.1.6 by=target form=alphabet measure=id role=writes scope=reading/use value=bound-view-identity
|
|
238
|
-
bound-lock/1 about="Verify exact current inputs of reviewed regional source client runs in Node 22 and 24. Inspection does not install authority. This reader does not pay source-size limits, installed first-minute acceptance, release acceptance or CI." at=policy:head/
|
|
269
|
+
bound-lock/1 about="Verify exact current inputs of reviewed regional source client runs in Node 22 and 24. Inspection does not install authority. This reader does not pay source-size limits, installed first-minute acceptance, release acceptance or CI." at=policy:head/acceptance-successors/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|test/|samples/share-inspect/yes/|dist/test/ role=writes scope=reader/share-inspect shape=run value=dist/test/share-inspect.js
|
|
239
270
|
bound-lock/1 about="What do I have in head? List my places and the sources each one holds." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/what-i-have/text value=lock
|
|
240
271
|
bound-lock/1 about="What do I have: my places and the sources each one holds." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/what-i-have value=
|
|
241
272
|
bound-lock/1 about="What happened: what head read and did in my place." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/what-happened value=
|
|
@@ -321,7 +352,6 @@ bound-lock/1 about="a view is lines of text" at=policy:head/surface by=target fo
|
|
|
321
352
|
bound-lock/1 about="a view of cells the place signs" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-cells/next value=none
|
|
322
353
|
bound-lock/1 about="a wider allowance the person signs" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-allowed/next value=none
|
|
323
354
|
bound-lock/1 about="a wider read/response-bytes the root signs" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/too-large/next value=none
|
|
324
|
-
bound-lock/1 about="a world head carries and adopts in every place it connects, pinned by its standing and its blob where its release publishes them; what it reads is said by its standing, never here" at=policy:head/worlds/0.2.0 by=target form=alphabet measure=digest role=writes scope=world/topos-mcp/standing value=sha256:bb3fe7c5e79fc72e6dd6548cfdcb33dcfea62344f1d4c629ebdc828c7c865899
|
|
325
355
|
bound-lock/1 about="a world head carries and adopts in every place it connects, pinned by its standing and its blob where its release publishes them; what it reads is said by its standing, never here" at=policy:head/worlds/0.2.0 by=target form=alphabet measure=digest role=writes scope=world/topos-openapi/standing value=sha256:24e6ad5fd58afce93964cdf1079a353046b09b5a075906b3dad225bfe21cda74
|
|
326
356
|
bound-lock/1 about="access the document accepts" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/fetch-status/next value=none
|
|
327
357
|
bound-lock/1 about="access/<source>/<operation>/observed value=anonymous, a receipt head-s key signs: the read whose access its document leaves unstated answered once with nothing attached, so it is read so from then on" at=policy:head/access/0.1.1g by=target form=alphabet measure=id role=writes scope=access/observed value=observed
|
|
@@ -345,7 +375,6 @@ bound-lock/1 about="and reading it from an https address, by the mechanism bound
|
|
|
345
375
|
bound-lock/1 about="and taking at most this many bytes of it" at=policy:head/link/0.1.5 by=target form=interval measure=bytes role=writes scope=birth/transport/response-bytes value=0..1048576
|
|
346
376
|
bound-lock/1 about="another name" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/place-taken/next value=none
|
|
347
377
|
bound-lock/1 about="another name, or the old admission withdrawn" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/key-taken/next value=none
|
|
348
|
-
bound-lock/1 about="answering a question takes at most this; slower reads red with its coordinate" at=policy:head/ceilings by=target form=interval measure=seconds role=reads scope=answer/seconds value=0..2
|
|
349
378
|
bound-lock/1 about="ask reads and never writes but the receipts of what it read; asked twice it answers the same" at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/ask/hints value=readOnly|idempotent
|
|
350
379
|
bound-lock/1 about="asked again, key answers the same lines; the first ask makes the key" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/key/hints value=idempotent
|
|
351
380
|
bound-lock/1 about="asked twice of the same place, share writes the same bytes" at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=tool/share/hints value=idempotent
|
|
@@ -416,8 +445,8 @@ bound-lock/1 about="how to report a vulnerability, privately, what is in scope a
|
|
|
416
445
|
bound-lock/1 about="how to report a vulnerability, privately, what is in scope and what is not, and that there is no reward" at=policy:head/docs/0.1.7-security-text by=target form=alphabet measure=text role=writes scope=region/security value=lock
|
|
417
446
|
bound-lock/1 about="its encrypted address" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/insecure-origin/next value=none
|
|
418
447
|
bound-lock/1 about="look reads and never writes; asked twice of the same place it answers the same" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/look/hints value=readOnly|idempotent
|
|
419
|
-
bound-lock/1 about="name: check\non:\n push:\n branches: [main, 'measure/**']\n pull_request:\npermissions:\n contents: read\nconcurrency:\n group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}\n cancel-in-progress: true\njobs:\n test:\n strategy:\n fail-fast: false\n matrix:\n shard: [1, 2, 3, 4, 5, 6]\n runs-on: ubuntu-latest\n env:\n SHARD_1: test/authority-preflight.test.ts test/portable-birth.test.ts test/doors.test.ts test/share.test.ts test/verbs.test.ts test/reuse.test.ts test/born-closed.test.ts test/reading-identity.test.ts test/numbers.test.ts test/transport.test.ts\n SHARD_2: test/act.test.ts test/channels.test.ts test/consent.test.ts test/gestures.test.ts test/claims.test.ts test/fold-ahead.test.ts test/trust.test.ts\n SHARD_3: test/marks.test.ts test/share-receive.test.ts test/authorizer.test.ts test/link-url.test.ts test/read.test.ts test/shape.test.ts test/release.test.ts test/device.test.ts test/surface.test.ts test/refusal-record.test.ts test/welcome.test.ts test/bound.test.ts test/warm-compact.test.ts test/pack.test.ts test/pending-document.test.ts test/keys.test.ts test/acts.test.ts test/bundle.test.ts test/onboarding.test.ts\n SHARD_4: test/issuer.test.ts test/fetch.test.ts test/connect.test.ts test/first-minute.test.ts test/use.test.ts test/places.test.ts test/warm.test.ts test/session.test.ts test/process.test.ts test/stores.test.ts test/signer.test.ts\n SHARD_5: test/org.test.ts test/ahead-read.test.ts test/access.test.ts test/answered.test.ts test/world.test.ts test/named.test.ts test/first-run.test.ts test/place-neutral.test.ts\n SHARD_6: test/marks-lineage.test.ts test/share-refused.test.ts test/kept-zero-moved.test.ts test/observed.test.ts test/walk.test.ts test/kept-zero.test.ts test/adopt.test.ts test/asking.test.ts\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - uses: actions/setup-node@v4\n with:\n node-version: 22\n - name: Require every test file in exactly one shard\n run: diff <(printf '%s\\n' $SHARD_1 $SHARD_2 $SHARD_3 $SHARD_4 $SHARD_5 $SHARD_6 | sort) <(ls test/*.test.ts | sort)\n - run: npm ci\n - run: npm run build\n - name: Run tests, shard ${{ matrix.shard }} of 6, the files listed for it\n run: |\n set -euo pipefail\n files=\"SHARD_${{ matrix.shard }}\"\n node --test --test-reporter=spec --test-reporter-destination=stdout --test-reporter=junit --test-reporter-destination=\"$RUNNER_TEMP/head-junit.xml\" ${!files} 2>&1 | tee \"$RUNNER_TEMP/head-tests.log\"\n - name: Preserve test logs\n if: always()\n uses: actions/upload-artifact@v4\n with:\n name: head-node-22-shard-${{ matrix.shard }}\n path: |\n ${{ runner.temp }}/head-tests.log\n ${{ runner.temp }}/head-junit.xml\n if-no-files-found: ignore\n walk:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - uses: actions/setup-node@v4\n with:\n node-version: 22\n - run: npm ci\n - run: npm run build\n - name: Check the committed receipts on a clean checkout\n run: npx --no-install bound fold --check\n bundle:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - uses: actions/setup-node@v4\n with:\n node-version: 22\n - run: npm ci\n - name: Pack the archive npm would publish\n run: mkdir -p \"$RUNNER_TEMP/release\" && npm pack --pack-destination \"$RUNNER_TEMP/release\"\n - name: Make the Desktop Extension from that archive, twice, repacked with fixed times and order, and require one digest\n run: |\n set -euo pipefail\n test \"$(node -p \"require('./manifest.json').version\")\" = \"$(node -p \"require('./package.json').version\")\"\n archive=\"$(ls \"$RUNNER_TEMP\"/release/*.tgz)\"\n export SOURCE_DATE_EPOCH=\"$(git log -1 --format=%ct)\"\n for n in 1 2; do\n stage=\"$RUNNER_TEMP/stage-$n\"\n mkdir -p \"$stage\"\n tar -xzf \"$archive\" -C \"$stage\" --strip-components 1\n cp package-lock.json manifest.json .mcpbignore \"$stage/\"\n (cd \"$stage\" && npm ci --omit=dev --ignore-scripts --no-audit --no-fund --loglevel=error)\n npx --no-install mcpb pack \"$stage\" \"$RUNNER_TEMP/packed-$n.mcpb\"\n unpacked=\"$RUNNER_TEMP/unpacked-$n\"\n mkdir -p \"$unpacked\"\n unzip -q \"$RUNNER_TEMP/packed-$n.mcpb\" -d \"$unpacked\"\n chmod -R u=rwX,go=rX \"$unpacked\"\n TZ=UTC find \"$unpacked\" -exec touch -h -t 198001020000 {} +\n (cd \"$unpacked\" && find . -type f | LC_ALL=C sort | TZ=UTC zip -X -9 -q -@ \"$RUNNER_TEMP/head-$n.mcpb\")\n done\n one=\"$(shasum -a 256 \"$RUNNER_TEMP/head-1.mcpb\" | cut -d' ' -f1)\"\n two=\"$(shasum -a 256 \"$RUNNER_TEMP/head-2.mcpb\" | cut -d' ' -f1)\"\n for n in 1 2; do printf 'CONTENT %s · %s\\n' \"$n\" \"$(cd \"$RUNNER_TEMP/unpacked-$n\" && find . -type f | LC_ALL=C sort | xargs shasum -a 256 | shasum -a 256 | cut -d' ' -f1)\"; done\n printf 'BUNDLE sha256:%s · made again sha256:%s · from %s\\n' \"$one\" \"$two\" \"$(shasum -a 256 \"$archive\" | cut -d' ' -f1)\"\n test \"$one\" = \"$two\"\n - name: Run it as a host would, from the unpacked bundle in a fresh home\n run: HEAD_BUNDLE=\"$RUNNER_TEMP/head-1.mcpb\" node --test test/bundle.test.ts\n - uses: actions/upload-artifact@v4\n if: always()\n with:\n name: head-bundle\n path: |\n ${{ runner.temp }}/release/\n ${{ runner.temp }}/head-1.mcpb\n if-no-files-found: error\n tree:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - name: Keep the tree this run tests, so a tag can rest on it once the pull request is merged\n run: git rev-parse \"HEAD^{tree}\" | tee \"$RUNNER_TEMP/tested-tree\"\n - uses: actions/upload-artifact@v4\n with:\n name: tested-tree\n path: ${{ runner.temp }}/tested-tree\n if-no-files-found: error\n" at=policy:head/
|
|
420
|
-
bound-lock/1 about="name: measure\non:\n workflow_dispatch:\n push:\n tags: ['epoch/*']\npermissions:\n contents: read\njobs:\n test:\n strategy:\n fail-fast: false\n matrix:\n node: [22, 24]\n shard: [1, 2, 3, 4, 5, 6]\n runs-on: ubuntu-latest\n env:\n SHARD_1: test/authority-preflight.test.ts test/portable-birth.test.ts test/doors.test.ts test/share.test.ts test/verbs.test.ts test/reuse.test.ts test/born-closed.test.ts test/reading-identity.test.ts test/numbers.test.ts test/transport.test.ts\n SHARD_2: test/act.test.ts test/channels.test.ts test/consent.test.ts test/gestures.test.ts test/claims.test.ts test/fold-ahead.test.ts test/trust.test.ts\n SHARD_3: test/marks.test.ts test/share-receive.test.ts test/authorizer.test.ts test/link-url.test.ts test/read.test.ts test/shape.test.ts test/release.test.ts test/device.test.ts test/surface.test.ts test/refusal-record.test.ts test/welcome.test.ts test/bound.test.ts test/warm-compact.test.ts test/pack.test.ts test/pending-document.test.ts test/keys.test.ts test/acts.test.ts test/bundle.test.ts test/onboarding.test.ts\n SHARD_4: test/issuer.test.ts test/fetch.test.ts test/connect.test.ts test/first-minute.test.ts test/use.test.ts test/places.test.ts test/warm.test.ts test/session.test.ts test/process.test.ts test/stores.test.ts test/signer.test.ts\n SHARD_5: test/org.test.ts test/ahead-read.test.ts test/access.test.ts test/answered.test.ts test/world.test.ts test/named.test.ts test/first-run.test.ts test/place-neutral.test.ts\n SHARD_6: test/marks-lineage.test.ts test/share-refused.test.ts test/kept-zero-moved.test.ts test/observed.test.ts test/walk.test.ts test/kept-zero.test.ts test/adopt.test.ts test/asking.test.ts\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - uses: actions/setup-node@v4\n with:\n node-version: ${{ matrix.node }}\n - name: Require every test file in exactly one shard\n run: diff <(printf '%s\\n' $SHARD_1 $SHARD_2 $SHARD_3 $SHARD_4 $SHARD_5 $SHARD_6 | sort) <(ls test/*.test.ts | sort)\n - run: npm ci\n - run: npm run build\n - name: Run tests, shard ${{ matrix.shard }} of 6, the files listed for it\n run: |\n set -euo pipefail\n files=\"SHARD_${{ matrix.shard }}\"\n node --test --test-reporter=spec --test-reporter-destination=stdout --test-reporter=junit --test-reporter-destination=\"$RUNNER_TEMP/head-junit.xml\" ${!files} 2>&1 | tee \"$RUNNER_TEMP/head-tests.log\"\n - name: Preserve test logs\n if: always()\n uses: actions/upload-artifact@v4\n with:\n name: head-node-${{ matrix.node }}-shard-${{ matrix.shard }}\n path: |\n ${{ runner.temp }}/head-tests.log\n ${{ runner.temp }}/head-junit.xml\n if-no-files-found: ignore\n time:\n strategy:\n fail-fast: false\n matrix:\n node: [22, 24]\n runs-on: macos-latest\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - uses: actions/setup-node@v4\n with:\n node-version: ${{ matrix.node }}\n - run: npm ci\n - run: npm run build\n - name: Run the timed tests alone on this machine, one at a time\n run: |\n set -euo pipefail\n node --test --test-concurrency=1 test/time/*.test.ts 2>&1 | tee \"$RUNNER_TEMP/head-time.log\"\n - name: Measure a new person's first minute against an API on this machine\n run: |\n set -euo pipefail\n HEAD_ONBOARDING=1 HEAD_FIRST_CELL_STRICT=1 node --test test/onboarding.test.ts 2>&1 | tee -a \"$RUNNER_TEMP/head-time.log\"\n - name: Check the committed receipts on a clean checkout\n if: ${{ !cancelled() }}\n run: npx --no-install bound fold --check\n - name: Preserve the timed log\n if: always()\n uses: actions/upload-artifact@v4\n with:\n name: head-time-node-${{ matrix.node }}\n path: ${{ runner.temp }}/head-time.log\n if-no-files-found: ignore\n" at=policy:head/
|
|
448
|
+
bound-lock/1 about="name: check\non:\n push:\n branches: [main, 'measure/**']\n pull_request:\npermissions:\n contents: read\nconcurrency:\n group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}\n cancel-in-progress: true\njobs:\n test:\n strategy:\n fail-fast: false\n matrix:\n shard: [1, 2, 3, 4, 5, 6]\n runs-on: ubuntu-latest\n env:\n SHARD_1: test/authority-preflight.test.ts test/portable-birth.test.ts test/doors.test.ts test/share.test.ts test/verbs.test.ts test/reuse.test.ts test/born-closed.test.ts test/reading-identity.test.ts test/numbers.test.ts test/transport.test.ts test/adopt-model.test.ts test/answer-model.test.ts\n SHARD_2: test/act.test.ts test/channels.test.ts test/consent.test.ts test/gestures.test.ts test/claims.test.ts test/fold-ahead.test.ts test/trust.test.ts test/configured-receiver.test.ts test/receiver.test.ts\n SHARD_3: test/marks.test.ts test/share-receive.test.ts test/authorizer.test.ts test/link-url.test.ts test/read.test.ts test/shape.test.ts test/release.test.ts test/device.test.ts test/surface.test.ts test/refusal-record.test.ts test/welcome.test.ts test/bound.test.ts test/warm-compact.test.ts test/pack.test.ts test/pending-document.test.ts test/keys.test.ts test/acts.test.ts test/bundle.test.ts test/onboarding.test.ts\n SHARD_4: test/issuer.test.ts test/fetch.test.ts test/connect.test.ts test/first-minute.test.ts test/use.test.ts test/places.test.ts test/warm.test.ts test/session.test.ts test/process.test.ts test/stores.test.ts test/signer.test.ts\n SHARD_5: test/org.test.ts test/ahead-read.test.ts test/access.test.ts test/answered.test.ts test/world.test.ts test/named.test.ts test/first-run.test.ts test/place-neutral.test.ts test/composition.test.ts test/kind-boundary.test.ts test/protocol-surface.test.ts\n SHARD_6: test/marks-lineage.test.ts test/share-refused.test.ts test/kept-zero-moved.test.ts test/observed.test.ts test/walk.test.ts test/kept-zero.test.ts test/adopt.test.ts test/asking.test.ts test/mcp-transport.test.ts test/runtime-resolution.test.ts test/share-bundle.test.ts test/source-policy.test.ts test/world-standing.test.ts\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - uses: actions/setup-node@v4\n with:\n node-version: 22\n - name: Require every test file in exactly one shard\n run: diff <(printf '%s\\n' $SHARD_1 $SHARD_2 $SHARD_3 $SHARD_4 $SHARD_5 $SHARD_6 | sort) <(ls test/*.test.ts | sort)\n - run: npm ci\n - run: npm run build\n - name: Verify pinned compiler test fixtures without claiming producer publication\n run: |\n set -euo pipefail\n (cd test/fixtures/content && shasum -a 256 -c SHA256SUMS)\n worlds=\"$(node -p \"require('path').join(require('os').tmpdir(), 'head-worlds')\")\"\n mkdir -p \"$worlds\"\n while read -r digest file; do\n cp \"test/fixtures/content/$file\" \"$worlds/$digest\"\n done < test/fixtures/content/SHA256SUMS\n - name: Run tests, shard ${{ matrix.shard }} of 6, the files listed for it\n run: |\n set -euo pipefail\n files=\"SHARD_${{ matrix.shard }}\"\n node --test --test-reporter=spec --test-reporter-destination=stdout --test-reporter=junit --test-reporter-destination=\"$RUNNER_TEMP/head-junit.xml\" ${!files} 2>&1 | tee \"$RUNNER_TEMP/head-tests.log\"\n - name: Preserve test logs\n if: always()\n uses: actions/upload-artifact@v4\n with:\n name: head-node-22-shard-${{ matrix.shard }}\n path: |\n ${{ runner.temp }}/head-tests.log\n ${{ runner.temp }}/head-junit.xml\n if-no-files-found: ignore\n walk:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - uses: actions/setup-node@v4\n with:\n node-version: 22\n - run: npm ci\n - run: npm run build\n - name: Verify pinned compiler test fixtures without claiming producer publication\n run: |\n set -euo pipefail\n (cd test/fixtures/content && shasum -a 256 -c SHA256SUMS)\n worlds=\"$(node -p \"require('path').join(require('os').tmpdir(), 'head-worlds')\")\"\n mkdir -p \"$worlds\"\n while read -r digest file; do\n cp \"test/fixtures/content/$file\" \"$worlds/$digest\"\n done < test/fixtures/content/SHA256SUMS\n - name: Check the committed receipts on a clean checkout\n run: npx --no-install bound fold --check\n bundle:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - uses: actions/setup-node@v4\n with:\n node-version: 22\n - run: npm ci\n - name: Verify pinned compiler test fixtures without claiming producer publication\n run: |\n set -euo pipefail\n (cd test/fixtures/content && shasum -a 256 -c SHA256SUMS)\n worlds=\"$(node -p \"require('path').join(require('os').tmpdir(), 'head-worlds')\")\"\n mkdir -p \"$worlds\"\n while read -r digest file; do\n cp \"test/fixtures/content/$file\" \"$worlds/$digest\"\n done < test/fixtures/content/SHA256SUMS\n - name: Pack the archive npm would publish\n run: mkdir -p \"$RUNNER_TEMP/release\" && npm pack --pack-destination \"$RUNNER_TEMP/release\"\n - name: Make the Desktop Extension from that archive, twice, repacked with fixed times and order, and require one digest\n run: |\n set -euo pipefail\n test \"$(node -p \"require('./manifest.json').version\")\" = \"$(node -p \"require('./package.json').version\")\"\n archive=\"$(ls \"$RUNNER_TEMP\"/release/*.tgz)\"\n export SOURCE_DATE_EPOCH=\"$(git log -1 --format=%ct)\"\n for n in 1 2; do\n stage=\"$RUNNER_TEMP/stage-$n\"\n mkdir -p \"$stage\"\n tar -xzf \"$archive\" -C \"$stage\" --strip-components 1\n cp package-lock.json manifest.json .mcpbignore \"$stage/\"\n (cd \"$stage\" && npm ci --omit=dev --ignore-scripts --no-audit --no-fund --loglevel=error)\n npx --no-install mcpb pack \"$stage\" \"$RUNNER_TEMP/packed-$n.mcpb\"\n unpacked=\"$RUNNER_TEMP/unpacked-$n\"\n mkdir -p \"$unpacked\"\n unzip -q \"$RUNNER_TEMP/packed-$n.mcpb\" -d \"$unpacked\"\n chmod -R u=rwX,go=rX \"$unpacked\"\n TZ=UTC find \"$unpacked\" -exec touch -h -t 198001020000 {} +\n (cd \"$unpacked\" && find . -type f | LC_ALL=C sort | TZ=UTC zip -X -9 -q -@ \"$RUNNER_TEMP/head-$n.mcpb\")\n done\n one=\"$(shasum -a 256 \"$RUNNER_TEMP/head-1.mcpb\" | cut -d' ' -f1)\"\n two=\"$(shasum -a 256 \"$RUNNER_TEMP/head-2.mcpb\" | cut -d' ' -f1)\"\n for n in 1 2; do printf 'CONTENT %s · %s\\n' \"$n\" \"$(cd \"$RUNNER_TEMP/unpacked-$n\" && find . -type f | LC_ALL=C sort | xargs shasum -a 256 | shasum -a 256 | cut -d' ' -f1)\"; done\n printf 'BUNDLE sha256:%s · made again sha256:%s · from %s\\n' \"$one\" \"$two\" \"$(shasum -a 256 \"$archive\" | cut -d' ' -f1)\"\n test \"$one\" = \"$two\"\n - name: Run it as a host would, from the unpacked bundle in a fresh home\n run: HEAD_BUNDLE=\"$RUNNER_TEMP/head-1.mcpb\" node --test test/bundle.test.ts\n - uses: actions/upload-artifact@v4\n if: always()\n with:\n name: head-bundle\n path: |\n ${{ runner.temp }}/release/\n ${{ runner.temp }}/head-1.mcpb\n if-no-files-found: error\n tree:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - name: Keep the tree this run tests, so a tag can rest on it once the pull request is merged\n run: git rev-parse \"HEAD^{tree}\" | tee \"$RUNNER_TEMP/tested-tree\"\n - uses: actions/upload-artifact@v4\n with:\n name: tested-tree\n path: ${{ runner.temp }}/tested-tree\n if-no-files-found: error\n" at=policy:head/ci-suites/0.2.1 by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/test shape=.github/workflows/test.yml value=lock
|
|
449
|
+
bound-lock/1 about="name: measure\non:\n workflow_dispatch:\n push:\n tags: ['epoch/*']\npermissions:\n contents: read\njobs:\n test:\n strategy:\n fail-fast: false\n matrix:\n node: [22, 24]\n shard: [1, 2, 3, 4, 5, 6]\n runs-on: ubuntu-latest\n env:\n SHARD_1: test/authority-preflight.test.ts test/portable-birth.test.ts test/doors.test.ts test/share.test.ts test/verbs.test.ts test/reuse.test.ts test/born-closed.test.ts test/reading-identity.test.ts test/numbers.test.ts test/transport.test.ts test/adopt-model.test.ts test/answer-model.test.ts\n SHARD_2: test/act.test.ts test/channels.test.ts test/consent.test.ts test/gestures.test.ts test/claims.test.ts test/fold-ahead.test.ts test/trust.test.ts test/configured-receiver.test.ts test/receiver.test.ts\n SHARD_3: test/marks.test.ts test/share-receive.test.ts test/authorizer.test.ts test/link-url.test.ts test/read.test.ts test/shape.test.ts test/release.test.ts test/device.test.ts test/surface.test.ts test/refusal-record.test.ts test/welcome.test.ts test/bound.test.ts test/warm-compact.test.ts test/pack.test.ts test/pending-document.test.ts test/keys.test.ts test/acts.test.ts test/bundle.test.ts test/onboarding.test.ts\n SHARD_4: test/issuer.test.ts test/fetch.test.ts test/connect.test.ts test/first-minute.test.ts test/use.test.ts test/places.test.ts test/warm.test.ts test/session.test.ts test/process.test.ts test/stores.test.ts test/signer.test.ts\n SHARD_5: test/org.test.ts test/ahead-read.test.ts test/access.test.ts test/answered.test.ts test/world.test.ts test/named.test.ts test/first-run.test.ts test/place-neutral.test.ts test/composition.test.ts test/kind-boundary.test.ts test/protocol-surface.test.ts\n SHARD_6: test/marks-lineage.test.ts test/share-refused.test.ts test/kept-zero-moved.test.ts test/observed.test.ts test/walk.test.ts test/kept-zero.test.ts test/adopt.test.ts test/asking.test.ts test/mcp-transport.test.ts test/runtime-resolution.test.ts test/share-bundle.test.ts test/source-policy.test.ts test/world-standing.test.ts\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - uses: actions/setup-node@v4\n with:\n node-version: ${{ matrix.node }}\n - name: Require every test file in exactly one shard\n run: diff <(printf '%s\\n' $SHARD_1 $SHARD_2 $SHARD_3 $SHARD_4 $SHARD_5 $SHARD_6 | sort) <(ls test/*.test.ts | sort)\n - run: npm ci\n - run: npm run build\n - name: Verify pinned compiler test fixtures without claiming producer publication\n run: |\n set -euo pipefail\n (cd test/fixtures/content && shasum -a 256 -c SHA256SUMS)\n worlds=\"$(node -p \"require('path').join(require('os').tmpdir(), 'head-worlds')\")\"\n mkdir -p \"$worlds\"\n while read -r digest file; do\n cp \"test/fixtures/content/$file\" \"$worlds/$digest\"\n done < test/fixtures/content/SHA256SUMS\n - name: Run tests, shard ${{ matrix.shard }} of 6, the files listed for it\n run: |\n set -euo pipefail\n files=\"SHARD_${{ matrix.shard }}\"\n node --test --test-reporter=spec --test-reporter-destination=stdout --test-reporter=junit --test-reporter-destination=\"$RUNNER_TEMP/head-junit.xml\" ${!files} 2>&1 | tee \"$RUNNER_TEMP/head-tests.log\"\n - name: Preserve test logs\n if: always()\n uses: actions/upload-artifact@v4\n with:\n name: head-node-${{ matrix.node }}-shard-${{ matrix.shard }}\n path: |\n ${{ runner.temp }}/head-tests.log\n ${{ runner.temp }}/head-junit.xml\n if-no-files-found: ignore\n time:\n strategy:\n fail-fast: false\n matrix:\n node: [22, 24]\n runs-on: macos-latest\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n - uses: actions/setup-node@v4\n with:\n node-version: ${{ matrix.node }}\n - run: npm ci\n - run: npm run build\n - name: Verify pinned compiler test fixtures without claiming producer publication\n run: |\n set -euo pipefail\n (cd test/fixtures/content && shasum -a 256 -c SHA256SUMS)\n worlds=\"$(node -p \"require('path').join(require('os').tmpdir(), 'head-worlds')\")\"\n mkdir -p \"$worlds\"\n while read -r digest file; do\n cp \"test/fixtures/content/$file\" \"$worlds/$digest\"\n done < test/fixtures/content/SHA256SUMS\n - name: Run the timed tests alone on this machine, one at a time\n run: |\n set -euo pipefail\n node --test --test-concurrency=1 test/time/*.test.ts 2>&1 | tee \"$RUNNER_TEMP/head-time.log\"\n - name: Measure a new person's first minute against an API on this machine\n run: |\n set -euo pipefail\n HEAD_ONBOARDING=1 HEAD_FIRST_CELL_STRICT=1 node --test test/onboarding.test.ts 2>&1 | tee -a \"$RUNNER_TEMP/head-time.log\"\n - name: Check the committed receipts on a clean checkout\n if: ${{ !cancelled() }}\n run: npx --no-install bound fold --check\n - name: Preserve the timed log\n if: always()\n uses: actions/upload-artifact@v4\n with:\n name: head-time-node-${{ matrix.node }}\n path: ${{ runner.temp }}/head-time.log\n if-no-files-found: ignore\n" at=policy:head/ci-suites/0.2.1 by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/measure shape=.github/workflows/measure.yml value=lock
|
|
421
450
|
bound-lock/1 about="name: release\non:\n workflow_run:\n workflows: [tag]\n types: [completed]\n workflow_dispatch:\nconcurrency: release-delivery\njobs:\n approve:\n if: github.event_name == 'workflow_dispatch' || (github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch == 'main')\n runs-on: ubuntu-latest\n permissions:\n contents: write\n outputs:\n tag: ${{ steps.judge.outputs.tag }}\n digest: ${{ steps.judge.outputs.digest }}\n archive: ${{ steps.judge.outputs.archive }}\n steps:\n - uses: actions/checkout@v4\n with:\n ref: ${{ github.event.workflow_run.head_sha || github.sha }}\n - uses: actions/setup-node@v4\n with:\n node-version: 24\n - run: npm install --prefix .instrument --no-save --ignore-scripts @lapxo/bound@0.2.8\n - name: Prepare release\n env:\n GH_TOKEN: ${{ github.token }}\n run: |\n set -euo pipefail\n TAG=\"v$(node -p \"require('./package.json').version\")\"\n printf 'TAG=%s\\n' \"$TAG\" >> \"$GITHUB_ENV\"\n git fetch origin \"refs/tags/$TAG:refs/tags/$TAG\"\n gh api --paginate \"repos/$GITHUB_REPOSITORY/releases\" --jq '.[].tag_name' > \"$RUNNER_TEMP/release-tags\"\n if grep -Fxq \"$TAG\" \"$RUNNER_TEMP/release-tags\"; then\n printf 'RELEASE %s · exists\\n' \"$TAG\"\n else\n gh release create \"$TAG\" --verify-tag --draft --title \"$TAG\" --generate-notes\n printf 'RELEASE %s · draft created · awaiting signed assets\\n' \"$TAG\"\n fi\n - name: Read owner approval\n env:\n GH_TOKEN: ${{ github.token }}\n run: |\n set -euo pipefail\n mkdir .release\n gh release download \"$TAG\" --pattern approval-signed --dir .release\n node .instrument/node_modules/@lapxo/bound/dist/cli/verb.js fold --as release .release/approval-signed > .release/verdict\n cat .release/verdict\n - name: Judge the approved release archive\n id: judge\n env:\n GH_TOKEN: ${{ github.token }}\n run: |\n set -euo pipefail\n read -r status digest archive source extra < .release/verdict\n test \"$status\" = READY\n test -z \"$extra\"\n gh release download \"$TAG\" --pattern \"$archive\" --dir .release\n printf '%s %s\\n' \"${digest#sha256:}\" \".release/$archive\" | sha256sum -c -\n expected=\"$(node -p \"require('./package.json').name+'@'+require('./package.json').version\")\"\n actual=\"$(tar -xOf \".release/$archive\" package/package.json | node -p \"const p=JSON.parse(require('fs').readFileSync(0,'utf8'));p.name+'@'+p.version\")\"\n test \"$actual\" = \"$expected\"\n printf 'SOURCE release/%s/%s · %s · declared %s\\n' \"$TAG\" \"$archive\" \"$digest\" \"$source\"\n printf 'tag=%s\\ndigest=%s\\narchive=%s\\n' \"$TAG\" \"$digest\" \"$archive\" >> \"$GITHUB_OUTPUT\"\n bundle:\n needs: approve\n runs-on: macos-latest\n permissions:\n contents: write\n env:\n GH_TOKEN: ${{ github.token }}\n TAG: ${{ needs.approve.outputs.tag }}\n DIGEST: ${{ needs.approve.outputs.digest }}\n ARCHIVE: ${{ needs.approve.outputs.archive }}\n steps:\n - uses: actions/checkout@v4\n with:\n ref: ${{ github.event.workflow_run.head_sha || github.sha }}\n - uses: actions/setup-node@v4\n with:\n node-version: 24\n - run: npm ci\n - name: Make the Desktop Extension from the approved archive, twice, repacked with fixed times and order, and require one digest\n run: |\n set -euo pipefail\n mkdir -p \"$RUNNER_TEMP/release\"\n gh release download \"$TAG\" --pattern \"$ARCHIVE\" --dir \"$RUNNER_TEMP/release\"\n printf '%s %s\\n' \"${DIGEST#sha256:}\" \"$RUNNER_TEMP/release/$ARCHIVE\" | shasum -a 256 -c -\n test \"v$(node -p \"require('./manifest.json').version\")\" = \"$TAG\"\n export SOURCE_DATE_EPOCH=\"$(git log -1 --format=%ct)\"\n for n in 1 2; do\n stage=\"$RUNNER_TEMP/stage-$n\"\n mkdir -p \"$stage\"\n tar -xzf \"$RUNNER_TEMP/release/$ARCHIVE\" -C \"$stage\" --strip-components 1\n cp package-lock.json manifest.json .mcpbignore \"$stage/\"\n (cd \"$stage\" && npm ci --omit=dev --ignore-scripts --no-audit --no-fund --loglevel=error)\n npx --no-install mcpb pack \"$stage\" \"$RUNNER_TEMP/packed-$n.mcpb\"\n unpacked=\"$RUNNER_TEMP/unpacked-$n\"\n mkdir -p \"$unpacked\"\n unzip -q \"$RUNNER_TEMP/packed-$n.mcpb\" -d \"$unpacked\"\n chmod -R u=rwX,go=rX \"$unpacked\"\n TZ=UTC find \"$unpacked\" -exec touch -h -t 198001020000 {} +\n (cd \"$unpacked\" && find . -type f | LC_ALL=C sort | TZ=UTC zip -X -9 -q -@ \"$RUNNER_TEMP/head-$n.mcpb\")\n done\n one=\"$(shasum -a 256 \"$RUNNER_TEMP/head-1.mcpb\" | cut -d' ' -f1)\"\n two=\"$(shasum -a 256 \"$RUNNER_TEMP/head-2.mcpb\" | cut -d' ' -f1)\"\n for n in 1 2; do printf 'CONTENT %s · %s\\n' \"$n\" \"$(cd \"$RUNNER_TEMP/unpacked-$n\" && find . -type f | LC_ALL=C sort | xargs shasum -a 256 | shasum -a 256 | cut -d' ' -f1)\"; done\n test \"$one\" = \"$two\"\n bundle=\"head-${TAG#v}-${one:0:16}.mcpb\"\n cp \"$RUNNER_TEMP/head-1.mcpb\" \"$RUNNER_TEMP/$bundle\"\n printf 'BUNDLE=%s\\nMADE=sha256:%s\\n' \"$bundle\" \"$one\" >> \"$GITHUB_ENV\"\n printf 'BUNDLE %s · sha256:%s · made twice · from %s\\n' \"$bundle\" \"$one\" \"$DIGEST\"\n - name: Run it as a host would, from the unpacked bundle in a fresh home\n run: HEAD_BUNDLE=\"$RUNNER_TEMP/$BUNDLE\" node --test test/bundle.test.ts\n - name: Attach it to the release, its digest in the notes\n run: |\n set -euo pipefail\n gh release view \"$TAG\" --json body --jq .body > \"$RUNNER_TEMP/notes.md\"\n if grep -q 'The Desktop Extension `head-' \"$RUNNER_TEMP/notes.md\"; then\n grep -Fq \"$MADE\" \"$RUNNER_TEMP/notes.md\" || { printf 'REFUSE·bundle the release names another digest than %s\\n' \"$MADE\"; exit 1; }\n else\n printf '\\n\\nThe signature covers `%s` (`%s`). The Desktop Extension `%s` (`%s`) is made by this workflow from that archive, packed by mcpb and repacked with fixed times, modes and order; made again, it gives the same digest.\\n' \"$ARCHIVE\" \"$DIGEST\" \"$BUNDLE\" \"$MADE\" >> \"$RUNNER_TEMP/notes.md\"\n gh release edit \"$TAG\" --notes-file \"$RUNNER_TEMP/notes.md\"\n fi\n gh release upload \"$TAG\" \"$RUNNER_TEMP/$BUNDLE\" --clobber\n mkdir -p \"$RUNNER_TEMP/back\"\n gh release download \"$TAG\" --pattern \"$BUNDLE\" --dir \"$RUNNER_TEMP/back\"\n printf '%s %s\\n' \"${MADE#sha256:}\" \"$RUNNER_TEMP/back/$BUNDLE\" | shasum -a 256 -c -\n publish:\n needs: [approve, bundle]\n environment: release\n runs-on: ubuntu-latest\n permissions:\n contents: write\n id-token: write\n env:\n GH_TOKEN: ${{ github.token }}\n TAG: ${{ needs.approve.outputs.tag }}\n DIGEST: ${{ needs.approve.outputs.digest }}\n ARCHIVE: ${{ needs.approve.outputs.archive }}\n steps:\n - uses: actions/setup-node@v4\n with:\n node-version: 24\n - run: npm install --global npm@'12.1.0' --ignore-scripts\n - name: Stage the approved release archive\n run: |\n set -euo pipefail\n mkdir .release\n gh release download \"$TAG\" --repo \"$GITHUB_REPOSITORY\" --pattern \"$ARCHIVE\" --dir .release\n printf '%s %s\\n' \"${DIGEST#sha256:}\" \".release/$ARCHIVE\" | sha256sum -c -\n gh release edit \"$TAG\" --repo \"$GITHUB_REPOSITORY\" --draft=false\n printf 'RELEASE %s · published · %s\\n' \"$TAG\" \"$DIGEST\"\n npm stage publish \".release/$ARCHIVE\" --access public --ignore-scripts\n printf 'STAGED %s · %s · owner approval pending\\n' \"$ARCHIVE\" \"$DIGEST\"\n" at=policy:head/bound-repin/0.2.8 by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/release shape=.github/workflows/release.yml value=lock
|
|
422
451
|
bound-lock/1 about="name: suite-map\non:\n push:\n branches: ['suite-map/**']\npermissions:\n contents: read\njobs:\n map:\n strategy:\n fail-fast: false\n matrix:\n shard: [1, 2, 3, 4, 5, 6]\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n with:\n persist-credentials: false\n fetch-depth: 0\n - uses: actions/setup-node@v4\n with:\n node-version: 24\n - run: npm ci\n - name: Run each test file of this shard alone, three at a time, its processes measured, keeping only what of head they ran\n run: |\n set -uo pipefail\n map=\"$RUNNER_TEMP/suite-map\"\n mkdir -p \"$map\"\n measure() {\n out=\"$1/$(basename \"$2\")\"\n mkdir -p \"$out\"\n NODE_V8_COVERAGE=\"$out\" node --test \"$2\" > \"$out.log\" 2>&1 || echo \"FAILED $2\" >> \"$out.log\"\n grep -L -F \"$GITHUB_WORKSPACE/src/\" \"$out\"/*.json 2>/dev/null | xargs rm -f\n }\n export -f measure\n ls test/*.test.ts | awk -v s=\"${{ matrix.shard }}\" 'NR % 6 == s % 6' | xargs -P 3 -I{} bash -c 'measure \"$0\" \"$1\"' \"$map\" {}\n git log --format='%H %s' origin/main..HEAD > \"$map/commits.txt\"\n cat \"$map\"/*.log | grep -E '^(FAILED|ℹ (pass|fail))' || true\n - uses: actions/upload-artifact@v4\n if: always()\n with:\n name: suite-map-${{ matrix.shard }}\n path: ${{ runner.temp }}/suite-map/\n if-no-files-found: error\n" at=policy:head/forge/suite-map/0.1.6 by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/suite-map shape=.github/workflows/suite-map.yml value=lock
|
|
423
452
|
bound-lock/1 about="name: tag\non:\n push:\n branches: [main]\njobs:\n tag:\n runs-on: ubuntu-latest\n permissions:\n contents: write\n actions: read\n pull-requests: read\n steps:\n - uses: actions/checkout@v4\n with:\n fetch-depth: 0\n - name: Tag the version once the pull request that merged it was checked green on this very tree\n env:\n GH_TOKEN: ${{ github.token }}\n run: |\n set -euo pipefail\n version=\"v$(node -p \"require('./package.json').version\")\"\n git tag --list \"$version\" | grep -q . && { printf 'TAG %s · exists\\n' \"$version\"; exit 0; }\n tree=\"$(git rev-parse \"HEAD^{tree}\")\"\n pr=\"$(gh api \"repos/$GITHUB_REPOSITORY/commits/$GITHUB_SHA/pulls\" --jq '.[0].number // empty')\"\n test -n \"$pr\" || { printf 'REFUSE %s · no pull request merged %s\\n' \"$version\" \"$GITHUB_SHA\"; exit 1; }\n head=\"$(gh api \"repos/$GITHUB_REPOSITORY/pulls/$pr\" --jq .head.sha)\"\n run=\"$(gh api \"repos/$GITHUB_REPOSITORY/actions/workflows/test.yml/runs?event=pull_request&head_sha=$head&status=success\" --jq '.workflow_runs[0].id // empty')\"\n test -n \"$run\" || { printf 'REFUSE %s · pull request #%s has no green test run at %s\\n' \"$version\" \"$pr\" \"$head\"; exit 1; }\n gh run download \"$run\" -R \"$GITHUB_REPOSITORY\" --name tested-tree --dir \"$RUNNER_TEMP/tested\"\n tested=\"$(cat \"$RUNNER_TEMP/tested/tested-tree\")\"\n test \"$tested\" = \"$tree\" || { printf 'REFUSE %s · run %s of pull request #%s tested tree %s; main holds %s\\n' \"$version\" \"$run\" \"$pr\" \"$tested\" \"$tree\"; exit 1; }\n printf 'TAG %s · tree %s · tested by run %s of pull request #%s\\n' \"$version\" \"$tree\" \"$run\" \"$pr\"\n git tag \"$version\" && git push origin \"$version\"\n" at=policy:head/forge/tag/0.1.6 by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/tag shape=.github/workflows/tag.yml value=lock
|
|
@@ -528,7 +557,6 @@ bound-lock/1 about="the ledger a place-s history is said to come from, named by
|
|
|
528
557
|
bound-lock/1 about="the line a place declares its act result by; head lands nothing where land would print none" at=policy:head/bound by=target form=alphabet measure=id role=writes scope=bound/profile value=wire/act-result
|
|
529
558
|
bound-lock/1 about="the line that follows" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-world/next value=none
|
|
530
559
|
bound-lock/1 about="the lines a place admits a content transport by, the first the one a link is inspected only where it stands" at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=link/transport value=wire/transport|transport/https|transport/timeout|transport/response-bytes
|
|
531
|
-
bound-lock/1 about="the lines of all of head's source, together, read by head's suite; widened by the ports region removing what each bound run read once it ends, 4, as the owner ruled; widened by the signing key leaving head-s long process and its refusal written by every door, 7, as the owner ruled; B measured capacity: 2779 lines; witness sha256:30dbaabd472e14a868bbf3a5abe0ff1919232e33668de67fac07d57b572da3a0; C measured capacity: 2826 lines; witness sha256:5b13f1d6e99c3898a11a849d89608f6b92ec968e32b307ed8ae9e4a5242e1622" at=witness:head/configuration-preflight/source-lines by=target form=interval measure=source-lines role=writes scope=source/lines value=0..2826
|
|
532
560
|
bound-lock/1 about="the lines of each file of the onboard region, read by head-s suite: split from the sources that connect, never raised; a region ceiling landed after founding has no reading of bound-s, so bound holds it as data" at=policy:head/ceilings/0.1.2 by=target form=interval measure=file-lines role=writes scope=onboard/lines value=0..40
|
|
533
561
|
bound-lock/1 about="the lines of each file of the ports region, alone" at=policy:head/ceilings by=target form=interval measure=file-lines role=reads scope=ports/lines value=0..120
|
|
534
562
|
bound-lock/1 about="the lines of the access region, together" at=policy:head/ceilings by=target form=interval measure=access-lines role=reads scope=access/lines value=0..100
|
|
@@ -537,8 +565,6 @@ bound-lock/1 about="the lines of the ahead region, together, read by head-s suit
|
|
|
537
565
|
bound-lock/1 about="the lines of the answers region, together, read by head-s suite; paid from the ceiling of the whole source" at=policy:head/ceilings/0.1.6 by=target form=interval measure=answers-lines role=writes scope=answers/lines value=0..29
|
|
538
566
|
bound-lock/1 about="the lines of the claims region, together, read by head's suite; widened by an agent as an origin and the view of what was stated" at=witness:an-agent-as-an-origin by=target form=interval measure=claims-lines role=writes scope=claims/lines value=0..48
|
|
539
567
|
bound-lock/1 about="the lines of the compile region, together" at=policy:head/ceilings by=target form=interval measure=compile-lines role=reads scope=compile/lines value=0..80
|
|
540
|
-
bound-lock/1 about="the lines of the core region, together" at=policy:head/ceilings by=target form=interval measure=core-lines role=reads scope=core/lines value=0..800
|
|
541
|
-
bound-lock/1 about="the lines of the doors region, together, read by head's suite; widened by each door reading its ceiling of refusals from its own line; widened by head writing what it refuses, so MCP writes it as lines and http do, 6, as the owner ruled; C measured capacity: 205 lines; witness sha256:8fbd5a22177e9c61fb62fd7af605548d02b2cc425f7326b3c826cd23f333f658" at=witness:head/configuration-preflight/doors-lines by=target form=interval measure=doors-lines role=writes scope=doors/lines value=0..205
|
|
542
568
|
bound-lock/1 about="the lines of the kept region, together, read by head-s suite; paid from the ceiling of the whole source" at=policy:head/ceilings/0.1.5 by=target form=interval measure=kept-lines role=writes scope=kept/lines value=0..40
|
|
543
569
|
bound-lock/1 about="the lines of the links region, together, read by head-s suite; paid from the ceiling of the whole source; B measured capacity: 102 lines; witness sha256:2198bc9abd86e5f63c2fcf77409755d806eb8c579d4e05cac4baebe186a45806" at=witness:head/share-inspect/links-lines by=target form=interval measure=links-lines role=writes scope=links/lines value=0..102
|
|
544
570
|
bound-lock/1 about="the lines of the marks region, together, read by head-s suite; paid from the ceiling of the whole source" at=policy:head/ceilings/0.1.5 by=target form=interval measure=marks-lines role=writes scope=marks/lines value=0..60
|
|
@@ -565,7 +591,6 @@ bound-lock/1 about="the measure a source-s region names its document by, by dige
|
|
|
565
591
|
bound-lock/1 about="the measure that names what kinds of input an access flow asks" at=policy:head/vocabulary/0.1.1 by=target form=alphabet measure=id role=writes scope=vocab/asks value=asks
|
|
566
592
|
bound-lock/1 about="the most bytes head reads of a document it connects from an address" at=policy:head/transport/0.1.1 by=target form=interval measure=bytes role=writes scope=adapter/request/document-bytes value=0..16777216
|
|
567
593
|
bound-lock/1 about="the most bytes head reads of what bound prints, a process's output or a fold host's answer, and the most a fold host may hold queued; past it the process is stopped or the host closed, and what was printed is no reading" at=policy:head/host/0.1.7 by=target form=interval measure=bytes role=writes scope=bound/printed value=0..16777216
|
|
568
|
-
bound-lock/1 about="the most head reads of a world-s standing to learn its readers" at=policy:head/ceilings by=target form=interval measure=bytes role=reads scope=world/standing-bytes value=0..1048576
|
|
569
594
|
bound-lock/1 about="the next hour, or a wider read/rate the root signs" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/rate/next value=none
|
|
570
595
|
bound-lock/1 about="the next window, or a wider read/calls the root signs" at=policy:head/calls/0.1.7 by=target form=alphabet measure=id role=writes scope=said/calls-owed/next value=none
|
|
571
596
|
bound-lock/1 about="the numbers a cell shows that are exact by construction — epochs, counts and caps, pins, digests, the times lines carry: no model, kind structural" at=policy:head/numbers/0.1.6 by=target form=alphabet measure=id role=writes scope=numbers/structural value=ceiling|offers|reads|count|allowed|done|epoch|pinned|digest|card|pin|at|until|more
|
|
@@ -708,14 +733,13 @@ bound-lock/1 about="where an origin publishes the catalog of its documents (RFC
|
|
|
708
733
|
bound-lock/1 about="where the bound package head pins is fetched from, verified by its digest" at=policy:head/bound-repin/0.2.8 by=target form=alphabet measure=id role=writes scope=sources/bound value=https://registry.npmjs.org/@lapxo/bound/-/bound-0.2.8.tgz
|
|
709
734
|
bound-lock/1 about="where the sdk package head pins is fetched from, verified by its digest" at=policy:head/pins by=target form=alphabet measure=id role=writes scope=sources/sdk value=https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.32.1.tgz
|
|
710
735
|
bound-lock/1 about="where the topos package head pins is fetched from, verified by its digest" at=policy:head/pins/topos/0.2.4 by=target form=alphabet measure=id role=writes scope=sources/topos value=https://registry.npmjs.org/@lapxo/topos/-/topos-0.2.4.tgz
|
|
711
|
-
bound-lock/1 about="where topos-mcp 0.1.0 publishes its standing: bound fetches it there for every place that pins it, and head reads its readers from it, both by its digest" at=policy:head/worlds/0.2.0 by=target form=alphabet measure=id role=writes scope=sources/topos-mcp value=https://github.com/Lapxo/topos-mcp/releases/download/v0.1.1/standing.bound
|
|
712
736
|
bound-lock/1 about="where topos-openapi 0.1.0 publishes its standing: bound fetches it there for every place that pins it, and head reads its readers from it, both by its digest" at=policy:head/worlds/0.2.0 by=target form=alphabet measure=id role=writes scope=sources/topos-openapi value=https://github.com/Lapxo/topos-openapi/releases/download/v0.1.1/standing.bound
|
|
713
737
|
bound-lock/1 about="who is in a place: founding it with its root, admitting another device" at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/places value=src/places/**
|
|
714
738
|
bound-lock/1 about="whoever holds the place's root" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/no-root/next value=none
|
|
715
739
|
bound-lock/1 about="{\n \"example\": \"declared-lineage-retirement@1\",\n \"response\": {\n \"temperature\": 21,\n \"sky\": \"clear\"\n },\n \"sources\": [\n \"forecast\",\n \"mirror\"\n ],\n \"declare\": \"bound-lock/1 at=policy:person/lineage by=target form=alphabet measure=id role=writes scope=shares/mirror value=forecast\",\n \"withdraw\": \"bound-lock/1 at=policy:person/lineage by=target form=alphabet measure=id role=writes scope=shares/mirror value=withdraw\",\n \"before\": {\n \"code\": \"head/agreed-lineage\",\n \"marks\": \"●○\"\n },\n \"after\": {\n \"code\": \"head/agreed-unknown\",\n \"marks\": \"●●\"\n },\n \"interpretation\": \"No declaration after withdrawal is unknown lineage, never proof of independence; old per-source receipts remain.\"\n}\n" at=policy:head/documentation/0.2.0 by=target form=alphabet measure=text role=writes scope=prose/en/page/example-lineage shape=docs/examples/lineage.json value=lock
|
|
716
740
|
bound-lock/1 about="{\n \"example\": \"public-birth-inspection@1\",\n \"sender\": {\n \"scope\": \"lang\",\n \"value\": \"en\"\n },\n \"receiver\": {\n \"scope\": \"lang\",\n \"value\": \"fr\"\n },\n \"expectedCode\": \"head/birth-inspected\",\n \"expectedCollision\": \"lang\",\n \"negativeCode\": \"head/document-digest\",\n \"authorityTransferred\": false\n}\n" at=policy:head/documentation/0.2.0 by=target form=alphabet measure=text role=writes scope=prose/en/page/example-sharing shape=docs/examples/sharing.json value=lock
|
|
717
741
|
bound-lock/1 about="{\n \"example\": \"typed-local-api@1\",\n \"fixture\": \"Two-field OpenAPI forecast, not real weather\",\n \"source\": \"forecast\",\n \"operation\": \"get-forecast\",\n \"args\": {\n \"city\": \"lima\"\n },\n \"response\": {\n \"temperature\": 21,\n \"sky\": \"clear\"\n },\n \"expectedTypedValues\": {\n \"temperature\": \"21\",\n \"sky\": \"clear\"\n },\n \"secrets\": \"Simulated keychain and temporary home; no real credential\"\n}\n" at=policy:head/documentation/0.2.0 by=target form=alphabet measure=text role=writes scope=prose/en/page/example-first-minute shape=docs/examples/first-minute.json value=lock
|
|
718
|
-
bound-lock/1 about="{\n \"manifest_version\": \"0.3\",\n \"name\": \"head\",\n \"display_name\": \"head\",\n \"version\": \"0.2.
|
|
742
|
+
bound-lock/1 about="{\n \"manifest_version\": \"0.3\",\n \"name\": \"head\",\n \"display_name\": \"head\",\n \"version\": \"0.2.1\",\n \"description\": \"An MCP server that answers by its lines: it runs bound as a process, hands a model what bound printed, and lands what it read as receipts.\",\n \"author\": {\n \"name\": \"Lapxo\"\n },\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Lapxo/head\"\n },\n \"homepage\": \"https://github.com/Lapxo/head\",\n \"server\": {\n \"type\": \"node\",\n \"entry_point\": \"dist/src/index.js\",\n \"mcp_config\": {\n \"command\": \"node\",\n \"args\": [\n \"${__dirname}/dist/src/index.js\",\n \"run\"\n ],\n \"env\": {}\n }\n },\n \"tools\": [\n {\n \"name\": \"ask\",\n \"description\": \"Ask head, and nothing changes but the receipts of what was read. With nothing: what this device has connected. A source: its region, what it offers; with an operation and its parameters, one read of an offer of class read, answered with the receipt the device key landed for it, or, while the place allows reuse, the answer kept for it and nothing called. A view: as bound folds it. card: what is open, and the card do needs. lines: a lot for the person to sign. Nothing that is not a read is ever called. An answer about one place ends with its card, valid from it.\"\n },\n {\n \"name\": \"connect\",\n \"description\": \"Connect a source to a place, once the person says yes: its document, and an overlay beside it, laid whatever its kind and compiled once by whichever world reads it — or open, with the line that pays it — into what the source offers and how access is proven, pinned by digest. Nothing is called. A document at an address may be read as a source the place connected, with the access it holds, and checked against its digest. A package another place shared is connected whole: its lock as the document, named by its digest. A site alone or a folder is looked for its document first, before anything is founded. With no place yet, the first connect founds the person's place on one yes that also lets head read the source.\"\n },\n {\n \"name\": \"do\",\n \"description\": \"Do one action in a place, on the card ask answered for it: found a place, admit a device, land a lot ask planned, share a place, make this device's key, prove access to a source, call an offer that is not a read, or keep what the person states as theirs. An action on a place that moved since its card was asked is refused, with nothing done; one the place does not allow is said not to be in the card. The answer ends with the card valid from this act.\"\n }\n ],\n \"tools_generated\": false,\n \"keywords\": [\n \"bound\",\n \"openapi\",\n \"mcp\"\n ],\n \"compatibility\": {\n \"platforms\": [\n \"darwin\"\n ],\n \"runtimes\": {\n \"node\": \">=22.18\"\n }\n }\n}\n" at=policy:head/release/0.2.1 by=target form=alphabet measure=text role=writes scope=prose/en/bundle/manifest shape=manifest.json value=lock
|
|
719
743
|
bound-lock/1 about="{action} is not in the card of {place}: {why}. Nothing was done." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=said/not-in-card value=lock
|
|
720
744
|
bound-lock/1 about="{count} lines landed." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/landed value=lock
|
|
721
745
|
bound-lock/1 about="{dir} is a place already: nothing was made." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/place-exists value=lock
|
|
@@ -846,6 +870,12 @@ bound-lock/1 at=policy:head/access/0.1.4 by=target form=alphabet measure=id role
|
|
|
846
870
|
bound-lock/1 at=policy:head/access/0.1.4 by=target form=alphabet measure=id role=writes scope=said/access-refused/next/args value=action:access|source:$source|place:$place
|
|
847
871
|
bound-lock/1 at=policy:head/access/0.1.4 by=target form=alphabet measure=id role=writes scope=said/access-refused/state value=refused
|
|
848
872
|
bound-lock/1 at=policy:head/acts by=target form=alphabet measure=id role=writes scope=act/done value=done
|
|
873
|
+
bound-lock/1 at=policy:head/api-mcp-foundation/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|dist/test/|TARGET.bound role=writes scope=reader/source-lines shape=run value=dist/test/source-lines.js
|
|
874
|
+
bound-lock/1 at=policy:head/api-mcp-foundation/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|test/|dist/test/|samples/foundation/yes/|TARGET.bound role=writes scope=reader/foundation shape=run value=dist/test/foundation-reading.js
|
|
875
|
+
bound-lock/1 at=policy:head/api-mcp-foundation/0.2.1 by=target form=alphabet measure=coordinates role=reads scope=region/foundation value=samples/foundation/**
|
|
876
|
+
bound-lock/1 at=policy:head/api-mcp-foundation/0.2.1 by=target form=interval measure=defects needs=samples/foundation/yes/ role=demands scope=foundation/B1 value=0..0
|
|
877
|
+
bound-lock/1 at=policy:head/api-mcp-foundation/0.2.1 by=target form=interval measure=defects needs=samples/foundation/yes/ role=demands scope=foundation/B2 value=0..0
|
|
878
|
+
bound-lock/1 at=policy:head/api-mcp-foundation/0.2.1 by=target form=interval measure=defects needs=samples/foundation/yes/ role=demands scope=foundation/B3 value=0..0
|
|
849
879
|
bound-lock/1 at=policy:head/authority by=owner epoch=1 form=alphabet measure=public-key role=writes scope=keys/owner sig="ed25519:era1:HIVD8P4NcWjPd0Fec8d1Ff52oPI+PMa6U+w8WHKAbj8sJtUWvG5Epmt/44DGRkGB455ByTtcMTK2jMGPN3EPBQ==" value="MCowBQYDK2VwAyEAIYI0be8OWhf3HcVceKpibjgZ+hbYJKYO5ayX8Kk16LE="
|
|
850
880
|
bound-lock/1 at=policy:head/authority by=target form=alphabet measure=class role=writes scope=keys/owner value=authorize
|
|
851
881
|
bound-lock/1 at=policy:head/authority by=target form=alphabet measure=coverage role=writes scope=keys/owner value=*
|
|
@@ -903,6 +933,17 @@ bound-lock/1 at=policy:head/bound by=target form=alphabet measure=id role=writes
|
|
|
903
933
|
bound-lock/1 at=policy:head/bound by=target form=alphabet measure=id role=writes scope=bound/view value=--as
|
|
904
934
|
bound-lock/1 at=policy:head/calls/0.1.7 by=target form=alphabet measure=id role=writes scope=said/calls-owed/state value=open
|
|
905
935
|
bound-lock/1 at=policy:head/calls/0.1.7 by=target form=alphabet measure=id role=writes scope=said/calls-unwindowed/state value=refused
|
|
936
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet kind=js measure=reader needs=runtime.bundle.json|package.json|package-lock.json|TARGET.bound role=writes scope=reader/share-runtime-metadata shape=runtime.bundle.json|package.json|package-lock.json|TARGET.bound value=dist/test/share-runtime.js
|
|
937
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/authority-preflight-capture shape=samples/authority-preflight/yes/client.json value=sha256:1ff9d628ca14e1db144da9659565c0e9c9bdad6aef5093557fc2f6b9361464ad
|
|
938
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/foundation-capture shape=samples/foundation/yes/client.json value=sha256:9e92b75e05f0193b64394acc0f271097ea8e2638ed49858bfcb552f5eb5f506f
|
|
939
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/share-inspect-capture shape=samples/share-inspect/yes/client.json value=sha256:ab37d9ab5a7a2572f455e59a2d4ac884b65b5c6e949a7aff6e1dbf267b347fa9
|
|
940
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/walk-reading-capture shape=samples/walk-reading/yes/client.json value=sha256:c6cca891c755ebdc06279e37bb9cb924a281cfff9ef181595f89a8af6cc3d1a3
|
|
941
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-authority-preflight shape=dist/test/authority-preflight-reader.js value=sha256:bcc2825b0d8e9f0a325ec2ec7a90809b9621b95f54dcaac57bc19c81338afb28
|
|
942
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-foundation shape=dist/test/foundation-reading.js value=sha256:11d42f19030b5235cd69f6b27f571c55b30379a92cf48947f3018a6ef490164e
|
|
943
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-share-inspect shape=dist/test/share-inspect.js value=sha256:dbae11f97f8487c045a7b12e3c4c0b7f2ec4f2dfbb7cbc3bf08da1f637e98410
|
|
944
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-share-runtime shape=dist/test/share-runtime.js value=sha256:2234d5609ebc6a44f0b6af54775f5a7f63e4c28dd8d371de9c8f080ec20e1d77
|
|
945
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-walk-reading shape=dist/test/walk-reading.js value=sha256:16a8a0ace5fe3165768233aa8dd32d296f00a0e5c4d8d0309383d987c3141d35
|
|
946
|
+
bound-lock/1 at=policy:head/catalogue-share-successor/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/share-runtime-capture shape=samples/share-runtime/yes/client.json value=sha256:a1ead8412105b6da05acbb86163b213d8235c0109ce0543df4bc089a2e8de380
|
|
906
947
|
bound-lock/1 at=policy:head/ceilings by=target form=interval measure=count role=reads scope=literal/host value=0..0
|
|
907
948
|
bound-lock/1 at=policy:head/ceilings by=target form=interval measure=count role=reads scope=literal/key value=0..0
|
|
908
949
|
bound-lock/1 at=policy:head/ceilings by=target form=interval measure=count role=reads scope=literal/org value=0..0
|
|
@@ -927,6 +968,12 @@ bound-lock/1 at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=i
|
|
|
927
968
|
bound-lock/1 at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/claim-backed/state value=done
|
|
928
969
|
bound-lock/1 at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/claims-none/state value=done
|
|
929
970
|
bound-lock/1 at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/door-unoriginated/state value=refused
|
|
971
|
+
bound-lock/1 at=policy:head/composition-preparation/0.2.1 by=target form=alphabet measure=coordinates role=reads scope=region/composition-vectors value=samples/composition/**
|
|
972
|
+
bound-lock/1 at=policy:head/composition-preparation/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/composition-contract shape=docs/contracts/composition.json value=sha256:73ceb593ee1e891449dde2a62e8bbf03a5e2dd8d9afe80960b320ddca5d90f8f
|
|
973
|
+
bound-lock/1 at=policy:head/composition-preparation/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/composition-vectors shape=vectors/composition.json value=sha256:76465e408b34018eba9dabe3ea25db680410f8dfa57d69a5b447a60e18923939
|
|
974
|
+
bound-lock/1 at=policy:head/composition-preparation/0.2.1 by=target form=interval measure=defects needs=samples/composition/yes/ role=demands scope=composition/mcp-port-vector value=0..0
|
|
975
|
+
bound-lock/1 at=policy:head/composition-preparation/0.2.1 by=target form=interval measure=defects needs=samples/composition/yes/ role=demands scope=composition/mcpb-format-vector value=0..0
|
|
976
|
+
bound-lock/1 at=policy:head/composition-preparation/0.2.1 by=target form=interval measure=defects needs=samples/composition/yes/ role=demands scope=composition/selection-vector value=0..0
|
|
930
977
|
bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=coordinates role=reads scope=region/authority-preflight value=samples/authority-preflight/**
|
|
931
978
|
bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=coordinates role=reads scope=region/authority-preflight-fixtures value=test/**|docs/contracts/**
|
|
932
979
|
bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=bound/authority/clock value=unix
|
|
@@ -938,6 +985,8 @@ bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabe
|
|
|
938
985
|
bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=said/authority-refused/next value=none
|
|
939
986
|
bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=said/authority-refused/state value=refused
|
|
940
987
|
bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=interval measure=defects needs=samples/authority-preflight/yes/ role=demands scope=authority-preflight/configuration value=0..0
|
|
988
|
+
bound-lock/1 at=policy:head/configured-policy-input/0.2.1 by=target form=alphabet kind=js measure=reader needs=TARGET.bound role=writes scope=reader/configured-ports-policy shape=*.bound value=dist/test/configured-ports.js
|
|
989
|
+
bound-lock/1 at=policy:head/configured-policy-input/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|dist/src/|test/|dist/test/|docs/contracts/|vectors/|samples/configured-ports/yes/|TARGET.bound role=writes scope=reader/configured-ports shape=run value=dist/test/configured-ports.js
|
|
941
990
|
bound-lock/1 at=policy:head/cryptography by=target form=alphabet measure=id role=reads scope=wire/digest-algorithms value=sha256
|
|
942
991
|
bound-lock/1 at=policy:head/cryptography by=target form=alphabet measure=id role=reads scope=wire/era value=era1
|
|
943
992
|
bound-lock/1 at=policy:head/cryptography by=target form=alphabet measure=id role=reads scope=wire/signature-algorithms value=ed25519:era1
|
|
@@ -966,6 +1015,9 @@ bound-lock/1 at=policy:head/kept/0.1.5 by=target form=alphabet measure=id role=w
|
|
|
966
1015
|
bound-lock/1 at=policy:head/kept/0.1.5 by=target form=alphabet measure=id role=writes scope=said/kept-expired/state value=done
|
|
967
1016
|
bound-lock/1 at=policy:head/kept/0.1.5 by=target form=alphabet measure=id role=writes scope=said/kept-withdrawn/state value=done
|
|
968
1017
|
bound-lock/1 at=policy:head/kept/0.1.5 by=target form=alphabet measure=id role=writes scope=said/kept/state value=done
|
|
1018
|
+
bound-lock/1 at=policy:head/kind-boundary/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/protocol-surface-contract shape=docs/contracts/protocol-surface.json value=sha256:4780879d1ad578dc093a46bb20dbab580f909e3e84e2b8de2e87f3f884e0c206
|
|
1019
|
+
bound-lock/1 at=policy:head/kind-boundary/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-protocol-surface shape=dist/test/protocol-surface.js value=sha256:d15fbd9a058a4d33bb5dc00b557af3af5c69c7eff567b6e6f8d75494fc00e1aa
|
|
1020
|
+
bound-lock/1 at=policy:head/kind-boundary/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-protocol-surface-reading shape=dist/test/protocol-surface-reading.js value=sha256:9eda478073df605cdbcdf9414609e91a3d9631185b6376a80f26dde3f5bbb793
|
|
969
1021
|
bound-lock/1 at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/inspected/state value=done
|
|
970
1022
|
bound-lock/1 at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/link-owed/state value=open
|
|
971
1023
|
bound-lock/1 at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/link-refused/state value=refused
|
|
@@ -979,19 +1031,68 @@ bound-lock/1 at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=
|
|
|
979
1031
|
bound-lock/1 at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=said/agreed-undeclared/state value=done
|
|
980
1032
|
bound-lock/1 at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=said/agreed-unknown/state value=done
|
|
981
1033
|
bound-lock/1 at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=said/forked/state value=done
|
|
1034
|
+
bound-lock/1 at=policy:head/mcp-physical-counter/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-source-lines shape=dist/test/source-lines.js value=sha256:2f8006981ee9f9c40b342feb1b6214be10bb5b40a8beab959d8fe481237f7e43
|
|
1035
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet kind=js measure=reader needs=TARGET.bound role=writes scope=reader/mcp-receiver-policy shape=*.bound value=dist/test/mcp-receiver-reading.js
|
|
1036
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet kind=js measure=reader needs=runtime.bundle.json|package.json|package-lock.json|vectors/mcp-receiver-flow.json|docs/contracts/|samples/mcp-receiver/yes/ role=writes scope=reader/mcp-receiver-json shape=*.json value=dist/test/mcp-receiver-reading.js
|
|
1037
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet kind=js measure=reader needs=test/mcp-fixture.ts|test/mcp-transport.test.ts|test/mcp-flow-native.ts|test/answer-model.test.ts|test/adopt-model.test.ts role=writes scope=reader/mcp-receiver-tests shape=*.ts value=dist/test/mcp-receiver-reading.js
|
|
1038
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|dist/src/|docs/contracts/|vectors/mcp-receiver-flow.json|test/mcp-fixture.ts|test/mcp-transport.test.ts|test/mcp-flow-native.ts|test/answer-model.test.ts|test/adopt-model.test.ts|dist/test/mcp-receiver-reading.js|samples/mcp-receiver/yes/|runtime.bundle.json|package.json|package-lock.json|TARGET.bound role=writes scope=reader/mcp-receiver shape=run value=dist/test/mcp-receiver-reading.js
|
|
1039
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=coordinates role=reads scope=region/mcp-receiver value=samples/mcp-receiver/**
|
|
1040
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/composition-mcpb-contract shape=docs/contracts/composition-mcpb.json value=sha256:90fd486f82c50e4500e09d8673bb0b38e408131a32fb24d2968263b775b5719e
|
|
1041
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/mcp-receiver-vectors shape=vectors/mcp-receiver-flow.json value=sha256:335b2f28f4537cd1bf3dcf267d773eff7bf9e5366dc640889175da11f0a56565
|
|
1042
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/configured-ports-contract shape=docs/contracts/configured-receiver.json value=sha256:a18f55e36739ec65c9a3677756ea70b954e6c04c9515d06cce8f4d4641070921
|
|
1043
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/receiver-contract shape=docs/contracts/bundle-receiver.json value=sha256:4782fb3d7d11f5041589fc077f0cb51510ae8ead1a6be731e1efdef44a06a5db
|
|
1044
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/share-runtime-assembly-contract shape=docs/contracts/share-bundle.json value=sha256:ea46eed91ee5b954d7742b1652f66ed6e027bebea791558ad8100938c48745a5
|
|
1045
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-mcp-needed/next value=connect
|
|
1046
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-mcp-needed/next/args value=document:$document|source:$source|protocol:mcp
|
|
1047
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-mcp-needed/state value=open
|
|
1048
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=said/elicit-mcp-call/state value=asked
|
|
1049
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=alphabet measure=id role=writes scope=said/mcp-refused/state value=refused
|
|
1050
|
+
bound-lock/1 at=policy:head/mcp-receiver/0.2.1 by=target form=interval measure=defects needs=samples/mcp-receiver/yes/ role=demands scope=composition/mcp-receiver-transport value=0..0
|
|
982
1051
|
bound-lock/1 at=policy:head/numbers/0.1.5 by=target form=alphabet measure=id role=writes scope=said/unmeasured/state value=open
|
|
1052
|
+
bound-lock/1 at=policy:head/post-kind-acceptances/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/configured-ports-capture shape=samples/configured-ports/yes/client.json value=sha256:097426cc2a0a3b6923baf1e0461687bdb094880e2906afd8c73285359b85de85
|
|
1053
|
+
bound-lock/1 at=policy:head/post-kind-acceptances/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-configured-ports shape=dist/test/configured-ports.js value=sha256:0485b1fd07b8446b3cfa127f5f630eda3f8405e24c086c61d59dd152f1128694
|
|
1054
|
+
bound-lock/1 at=policy:head/protocol-parser-inputs/0.2.1 by=target form=alphabet kind=js measure=reader needs=TARGET.bound|node_modules/typescript/ role=writes scope=reader/protocol-surface-policy shape=*.bound value=dist/test/protocol-surface-reading.js
|
|
1055
|
+
bound-lock/1 at=policy:head/protocol-parser-inputs/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|dist/test/|docs/contracts/|node_modules/typescript/ role=writes scope=reader/protocol-surface shape=run value=dist/test/protocol-surface-reading.js
|
|
1056
|
+
bound-lock/1 at=policy:head/protocol-parser-inputs/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/protocol-surface-parser shape=node_modules/typescript/lib/typescript.js value=sha256:3ae902c92cc44dace175c0e69e13a4b0899f6983c6121d76b9ab8dd5795e7675
|
|
1057
|
+
bound-lock/1 at=policy:head/protocol-parser-inputs/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/protocol-surface-parser-manifest shape=node_modules/typescript/package.json value=sha256:822ef7ca6452205657b6288b066481ecf508bfbf43455d715cf7d3ec457561e6
|
|
1058
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=bundle/association-family value=packages
|
|
1059
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=bundle/receiver-folder value=head-packages
|
|
1060
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-associated/next value=ask
|
|
1061
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-associated/next/args value=place:$place
|
|
1062
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-associated/state value=done
|
|
1063
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-not-selected/next value=ask
|
|
1064
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-not-selected/next/args value=place:$place
|
|
1065
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-not-selected/state value=refused
|
|
1066
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-receiver-ready/next value=connect
|
|
1067
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-receiver-ready/next/args value=document:$document|digest:$digest|place:$place
|
|
1068
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-receiver-ready/state value=open
|
|
1069
|
+
bound-lock/1 at=policy:head/receiver-flow/0.2.1 by=target form=alphabet measure=id role=writes scope=said/elicit-bundle-receive/state value=asked
|
|
1070
|
+
bound-lock/1 at=policy:head/receiver-runtime/0.2.1 by=target form=alphabet kind=js measure=reader needs=TARGET.bound role=writes scope=reader/receiver-runtime-policy shape=*.bound value=dist/test/receiver-runtime.js
|
|
1071
|
+
bound-lock/1 at=policy:head/receiver-runtime/0.2.1 by=target form=alphabet kind=js measure=reader needs=runtime.bundle.json|package-lock.json|docs/contracts/bundle-receiver.json|vectors/bundle-receiver.json|samples/receiver-runtime/yes/client.json role=writes scope=reader/receiver-runtime-json shape=*.json value=dist/test/receiver-runtime.js
|
|
1072
|
+
bound-lock/1 at=policy:head/receiver-runtime/0.2.1 by=target form=alphabet kind=js measure=reader needs=test/receiver.test.ts|test/source-policy.test.ts|test/share-bundle.test.ts|test/runtime-resolution.test.ts role=writes scope=reader/receiver-runtime-tests shape=*.ts value=dist/test/receiver-runtime.js
|
|
1073
|
+
bound-lock/1 at=policy:head/receiver-runtime/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|dist/src/|test/receiver.test.ts|test/source-policy.test.ts|test/share-bundle.test.ts|test/runtime-resolution.test.ts|dist/test/receiver-runtime.js|docs/contracts/bundle-receiver.json|vectors/bundle-receiver.json|samples/receiver-runtime/yes/|runtime.bundle.json|package-lock.json|TARGET.bound role=writes scope=reader/receiver-runtime shape=run value=dist/test/receiver-runtime.js
|
|
1074
|
+
bound-lock/1 at=policy:head/receiver-runtime/0.2.1 by=target form=alphabet measure=coordinates role=reads scope=region/receiver-runtime value=samples/receiver-runtime/**
|
|
1075
|
+
bound-lock/1 at=policy:head/receiver-runtime/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/receiver-vectors shape=vectors/bundle-receiver.json value=sha256:bc3d8cb077542d54d2f2666ccb3603ed5af8e5c598007e53115815c3c6df0fac
|
|
1076
|
+
bound-lock/1 at=policy:head/receiver-runtime/0.2.1 by=target form=interval measure=defects needs=samples/receiver-runtime/yes/ role=demands scope=composition/receiver-runtime value=0..0
|
|
983
1077
|
bound-lock/1 at=policy:head/release by=target form=alphabet measure=id role=writes scope=release/blocks value=integrity|pins|cli|surface
|
|
984
1078
|
bound-lock/1 at=policy:head/release by=target form=alphabet measure=id role=writes scope=release/category/integrity value=literal/host|literal/key|literal/org|literal/path|duplicate/src|door/unreceipted
|
|
985
1079
|
bound-lock/1 at=policy:head/release by=target form=alphabet measure=id role=writes scope=release/category/surface value=surface/**|tools/config|core/lines|access/lines|places/lines|sources/lines|compile/lines|adopt/lines|walk/lines|ports/lines
|
|
1080
|
+
bound-lock/1 at=policy:head/release-acceptance/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/composition-capture shape=samples/composition/yes/client.json value=sha256:ff823082358cf7d8b83f91e76a6396b8dee0acdff1e07b2a1dcef609807e7ab4
|
|
1081
|
+
bound-lock/1 at=policy:head/release-acceptance/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/mcp-receiver-capture shape=samples/mcp-receiver/yes/client.json value=sha256:32c21ca4a06694b78c998a86fdc33a06c1b1a29a620b5f648a491536621ced82
|
|
1082
|
+
bound-lock/1 at=policy:head/release-acceptance/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/receiver-capture shape=samples/receiver-runtime/yes/client.json value=sha256:20cd9d32b193e0c801f571ee6238b81bea19adf5410f984b2cb756ab5608d76f
|
|
1083
|
+
bound-lock/1 at=policy:head/release-acceptance/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-composition-vectors shape=dist/test/composition-reading.js value=sha256:51d97f1ab12337b44ba2a5730e5f6d801cec5b99d976cd6511eb1a3a06b4a714
|
|
1084
|
+
bound-lock/1 at=policy:head/release-acceptance/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-first-minute shape=dist/test/first-minute.js value=sha256:267bfbd081d60fcb4b6ee5b66972c86aa7c69905394e46d876f0f0290a132f84
|
|
1085
|
+
bound-lock/1 at=policy:head/release-acceptance/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-mcp-receiver shape=dist/test/mcp-receiver-reading.js value=sha256:43e7081b56197d559249eb0a440304de9fcd98b5f72d8f0f8e2cd9be67ef3cdc
|
|
1086
|
+
bound-lock/1 at=policy:head/release-acceptance/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-receiver shape=dist/test/receiver-runtime.js value=sha256:c4b29227035b4fc5d12728537037ec76cb3b4d411d6d6be291b047f036fb017d
|
|
986
1087
|
bound-lock/1 at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=digest role=writes scope=dep/authority-preflight-contract shape=docs/contracts/authority-preflight.json value=sha256:7fced2a3721f0857fb78fbcf72c5b0225c8c1e80c10fc192869928014b748b35
|
|
987
|
-
bound-lock/1 at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=digest role=writes scope=dep/runtime-release-metadata shape=entry.js value=sha256:1e56d1365f21b99d6d0e84293803f680e9c33de5d933a6060d84b502704d88d1
|
|
988
|
-
bound-lock/1 at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=digest role=writes scope=uses/release-metadata value=sha256:801055d20e13ed42267021e7efdb9b1ac914e23ad053f7d151f2801fab57f7ae
|
|
989
|
-
bound-lock/1 at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=id role=writes scope=dep/runtime-first-minute shape=dist/test/first-minute.js value=sha256:0f27ad4d77d2fb60253dc64c593392fbb97f99c6820e12fcbda5981597ff402c
|
|
990
|
-
bound-lock/1 at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=id role=writes scope=sources/release-metadata value=https://github.com/Lapxo/head/releases/download/v0.2.0/801055d20e13ed42267021e7efdb9b1ac914e23ad053f7d151f2801fab57f7ae.bound
|
|
991
|
-
bound-lock/1 at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=id role=writes scope=sources/runtime-release-metadata value=https://github.com/Lapxo/head/releases/download/v0.2.0/1e56d1365f21b99d6d0e84293803f680e9c33de5d933a6060d84b502704d88d1.tgz
|
|
992
1088
|
bound-lock/1 at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=status needs=package-lock.json role=demands scope=release/metadata/lock shape=decision value=present
|
|
993
1089
|
bound-lock/1 at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=status needs=package.json role=demands scope=release/metadata/manifest shape=decision value=present
|
|
994
|
-
bound-lock/1 at=policy:head/release/0.2.
|
|
1090
|
+
bound-lock/1 at=policy:head/release-metadata/0.2.1 by=target form=alphabet measure=digest role=writes scope=dep/runtime-release-metadata shape=entry.js value=sha256:c0569d3c32decf3c064094ec9562e1e31b8aac456e07504871922d8fc5e342f0
|
|
1091
|
+
bound-lock/1 at=policy:head/release-metadata/0.2.1 by=target form=alphabet measure=digest role=writes scope=uses/release-metadata value=sha256:c09d3744bcd410b4634ffb78cc7cd787f4c029298f8ce60fe36f230461bb4885
|
|
1092
|
+
bound-lock/1 at=policy:head/release-metadata/0.2.1 by=target form=alphabet measure=id role=writes scope=sources/release-metadata value=https://github.com/Lapxo/head/releases/download/v0.2.1/c09d3744bcd410b4634ffb78cc7cd787f4c029298f8ce60fe36f230461bb4885.bound
|
|
1093
|
+
bound-lock/1 at=policy:head/release-metadata/0.2.1 by=target form=alphabet measure=id role=writes scope=sources/runtime-release-metadata value=https://github.com/Lapxo/head/releases/download/v0.2.1/c0569d3c32decf3c064094ec9562e1e31b8aac456e07504871922d8fc5e342f0.tgz
|
|
1094
|
+
bound-lock/1 at=policy:head/release/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-bundle shape=runtime.bundle.json value=sha256:f20d82a86d78a47086e5d043def1be3799d9132922c6227cfbc6186fdd6233cc
|
|
1095
|
+
bound-lock/1 at=policy:head/release/0.2.1 by=target form=alphabet measure=id role=writes scope=version value=0.2.1
|
|
995
1096
|
bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/access-anonymous/state value=done
|
|
996
1097
|
bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/access-kept/state value=done
|
|
997
1098
|
bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/access-unstated/state value=refused
|
|
@@ -1121,6 +1222,12 @@ bound-lock/1 at=policy:head/shape/0.1.6 by=target form=alphabet measure=id role=
|
|
|
1121
1222
|
bound-lock/1 at=policy:head/shape/0.1.6 by=target form=alphabet measure=id role=writes scope=said/pick-offer/state value=asked
|
|
1122
1223
|
bound-lock/1 at=policy:head/shape/0.1.6 by=target form=alphabet measure=id role=writes scope=said/why-transport/state value=done
|
|
1123
1224
|
bound-lock/1 at=policy:head/shape/0.1.6-answered by=target form=alphabet measure=id role=writes scope=said/answered-nothing/state value=done
|
|
1225
|
+
bound-lock/1 at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-protocol-pending/state value=open
|
|
1226
|
+
bound-lock/1 at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-refused/state value=refused
|
|
1227
|
+
bound-lock/1 at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-shared/state value=done
|
|
1228
|
+
bound-lock/1 at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-source-needed/next value=connect
|
|
1229
|
+
bound-lock/1 at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-source-needed/next/args value=source:$source|document:$document
|
|
1230
|
+
bound-lock/1 at=policy:head/share-assembly/0.2.1 by=target form=alphabet measure=id role=writes scope=said/bundle-source-needed/state value=open
|
|
1124
1231
|
bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=coordinates role=reads scope=region/share-inspect value=samples/share-inspect/**
|
|
1125
1232
|
bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=coordinates role=reads scope=region/share-inspect-fixtures value=test/**
|
|
1126
1233
|
bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=link/prefixes value=#bound:|#topos-reference:
|
|
@@ -1140,8 +1247,19 @@ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=
|
|
|
1140
1247
|
bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=share/birth-scopes value=lang
|
|
1141
1248
|
bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=interval measure=count role=writes scope=share/birth-items value=0..64
|
|
1142
1249
|
bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=interval measure=defects needs=samples/share-inspect/yes/ role=demands scope=share-inspect/verified value=0..0
|
|
1250
|
+
bound-lock/1 at=policy:head/share-runtime/0.2.1 by=target form=alphabet kind=js measure=reader needs=package.json|package-lock.json|runtime.bundle.json role=writes scope=reader/share-runtime-metadata shape=*.json value=dist/test/share-runtime.js
|
|
1251
|
+
bound-lock/1 at=policy:head/share-runtime/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/|test/|dist/src/|dist/test/|samples/share-runtime/yes/|docs/contracts/|vectors/|runtime.bundle*.json|package*.json|TARGET.bound role=writes scope=reader/share-runtime shape=run value=dist/test/share-runtime.js
|
|
1252
|
+
bound-lock/1 at=policy:head/share-runtime/0.2.1 by=target form=alphabet measure=coordinates role=reads scope=region/share-runtime value=samples/share-runtime/**
|
|
1253
|
+
bound-lock/1 at=policy:head/share-runtime/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/share-runtime-contract shape=docs/contracts/share-runtime.json value=sha256:028c37964e7f02519204203aac5e861458ef62af3b3fcb1b7d83ebbc3f58da60
|
|
1254
|
+
bound-lock/1 at=policy:head/share-runtime/0.2.1 by=target form=alphabet measure=id role=writes scope=share/bundle-suffix value=.mcpb
|
|
1255
|
+
bound-lock/1 at=policy:head/share-runtime/0.2.1 by=target form=interval measure=defects needs=samples/share-runtime/yes/ role=demands scope=composition/share-runtime value=0..0
|
|
1256
|
+
bound-lock/1 at=policy:head/share-runtime/0.2.1 by=target form=interval measure=share-public-bytes role=writes scope=share/bundle-bytes value=0..16777216
|
|
1257
|
+
bound-lock/1 at=policy:head/share-runtime/0.2.1 by=target form=interval measure=share-selections role=writes scope=share/bundle-selections value=0..64
|
|
1143
1258
|
bound-lock/1 at=policy:head/signer by=target form=interval measure=bytes role=writes scope=signer/response-bytes value=1048576..1048576
|
|
1144
1259
|
bound-lock/1 at=policy:head/signer by=target form=interval measure=milliseconds role=writes scope=signer/timeout value=30000..30000
|
|
1260
|
+
bound-lock/1 at=policy:head/single-sdk-prerequisites/0.2.1 by=target form=alphabet measure=coordinates role=reads scope=region/configured-ports value=samples/configured-ports/**
|
|
1261
|
+
bound-lock/1 at=policy:head/single-sdk-prerequisites/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/configured-ports-vectors shape=vectors/configured-receiver.json value=sha256:964b8698039b397e3c52f77bc1dda669ca7a639535c722752c03964134a59ace
|
|
1262
|
+
bound-lock/1 at=policy:head/single-sdk-prerequisites/0.2.1 by=target form=interval measure=defects needs=samples/configured-ports/yes/ role=demands scope=configured/prerequisite-ports value=0..0
|
|
1145
1263
|
bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/access/required value=source
|
|
1146
1264
|
bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/ask/required value=source|operation
|
|
1147
1265
|
bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/can/required value=source|operation|times
|
|
@@ -1233,12 +1351,6 @@ bound-lock/1 at=policy:head/walk by=target form=alphabet measure=id role=writes
|
|
|
1233
1351
|
bound-lock/1 at=policy:head/walk by=target form=alphabet measure=id role=writes scope=birth/wire/walk/projections value=0:inventory|1:summary|8:history
|
|
1234
1352
|
bound-lock/1 at=policy:head/walk by=target form=alphabet measure=id role=writes scope=birth/wire/walk/resolutions value=0|1|8
|
|
1235
1353
|
bound-lock/1 at=policy:head/walk-reading/0.2.0 by=target form=alphabet measure=coordinates role=reads scope=region/walk-reading value=samples/walk-reading/**
|
|
1236
|
-
bound-lock/1 at=policy:head/walk-reading/0.2.0 by=target form=alphabet measure=digest role=writes scope=dep/authority-preflight-capture shape=samples/authority-preflight/yes/client.json value=sha256:d35558a76bbb9051137da7befc5bee72c3cd6e4f9138e4531752f113dbda481e
|
|
1237
|
-
bound-lock/1 at=policy:head/walk-reading/0.2.0 by=target form=alphabet measure=digest role=writes scope=dep/share-inspect-capture shape=samples/share-inspect/yes/client.json value=sha256:5afcd841e5ad36c57df79e477f395656c9db7379af8c8939b169e2fe9a79a1fc
|
|
1238
|
-
bound-lock/1 at=policy:head/walk-reading/0.2.0 by=target form=alphabet measure=digest role=writes scope=dep/walk-reading-capture shape=samples/walk-reading/yes/client.json value=sha256:80dff9c0f4691ef8c8272bf6d8648a301a78186ba49eb02e3a5e89c3b1d26622
|
|
1239
|
-
bound-lock/1 at=policy:head/walk-reading/0.2.0 by=target form=alphabet measure=id role=writes scope=dep/runtime-authority-preflight shape=dist/test/authority-preflight-reader.js value=sha256:33b7431d0a22fe9639f05764b4f535bf2ea55948d470ba571ae4574f40fe4509
|
|
1240
|
-
bound-lock/1 at=policy:head/walk-reading/0.2.0 by=target form=alphabet measure=id role=writes scope=dep/runtime-share-inspect shape=dist/test/share-inspect.js value=sha256:7a0b8f97fbb7b134b9a5d7f0cc86c61b6d68e4f4e903eebcfe8494c1c30ea59d
|
|
1241
|
-
bound-lock/1 at=policy:head/walk-reading/0.2.0 by=target form=alphabet measure=id role=writes scope=dep/runtime-walk-reading shape=dist/test/walk-reading.js value=sha256:3ed223f5e659e3c47f1f81a561f84d86b99b8492ab31cf08c87a417b8e0d6936
|
|
1242
1354
|
bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads scope=wire/at-classes value=origin|place|receipt|witness|policy
|
|
1243
1355
|
bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads scope=wire/families value=audit|beat|block|cites|comments|concept|cost|dep|effect|fold|hazard|keys|law|license|lines|literal|offers|question|reader|region|release|render|roles|sample|session|take|test|tree|vector|view|write
|
|
1244
1356
|
bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads scope=wire/fields value=scope|role|form|measure|value|by|at|needs|sig|epoch|shape|restsOn|condition|about|kind|view
|
|
@@ -1252,10 +1364,14 @@ bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads s
|
|
|
1252
1364
|
bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads scope=wire/shapes value=decision|lock|package|reader|render|run|vector|view
|
|
1253
1365
|
bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads scope=wire/states value=absent|present|unread|withdraw
|
|
1254
1366
|
bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads scope=wire/templates value={cone}|{roots}
|
|
1367
|
+
bound-lock/1 at=policy:head/world-standing/0.2.1 by=target form=alphabet kind=process measure=reader needs=src/core/|dist/src/core/|test/|dist/test/|samples/world-standing/yes/|docs/contracts/|TARGET.bound role=writes scope=reader/world-standing shape=run value=dist/test/world-standing.js
|
|
1368
|
+
bound-lock/1 at=policy:head/world-standing/0.2.1 by=target form=alphabet measure=coordinates role=reads scope=region/world-standing value=samples/world-standing/**
|
|
1369
|
+
bound-lock/1 at=policy:head/world-standing/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/runtime-world-standing shape=dist/test/world-standing.js value=sha256:105dbf80dfca6572c7a3af5799b1e083943cd957fb47de3615a2f89169d115d5
|
|
1370
|
+
bound-lock/1 at=policy:head/world-standing/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/world-standing-contract shape=docs/contracts/world-standing-size.json value=sha256:25b0bfe9c37a169367ce0152ca1379623f3585e7111b3b3807bb45e64bcbd737
|
|
1371
|
+
bound-lock/1 at=policy:head/world-standing/0.2.1 by=target form=alphabet measure=id role=writes scope=dep/world-standing-helper shape=dist/src/core/worlds.js value=sha256:5987da9b517c1b4229eda2c2bc7871d64b610e267ed0f8817bf05ad864d3bf92
|
|
1372
|
+
bound-lock/1 at=policy:head/world-standing/0.2.1 by=target form=interval measure=defects needs=samples/world-standing/yes/ role=demands scope=world/standing-integrity value=0..0
|
|
1255
1373
|
bound-lock/1 at=policy:head/worlds by=target form=alphabet measure=id role=writes scope=world/shape value=dist/index.js
|
|
1256
|
-
bound-lock/1 at=policy:head/worlds/0.2.0 by=target form=alphabet measure=digest role=writes scope=world/topos-mcp/blob value=sha256:d2a4eaa804501a8425498499727954f3328a9bdda19651bc4757959f67cb0a6d
|
|
1257
1374
|
bound-lock/1 at=policy:head/worlds/0.2.0 by=target form=alphabet measure=digest role=writes scope=world/topos-openapi/blob value=sha256:13a79fc41f1b837a0527fbe4c5aed3cec190fae7d28215a36ec25e54f7d67274
|
|
1258
|
-
bound-lock/1 at=policy:head/worlds/0.2.0 by=target form=alphabet measure=id role=writes scope=sources/topos-mcp-blob value=https://github.com/Lapxo/topos-mcp/releases/download/v0.1.1/d2a4eaa804501a8425498499727954f3328a9bdda19651bc4757959f67cb0a6d.tar.gz
|
|
1259
1375
|
bound-lock/1 at=policy:head/worlds/0.2.0 by=target form=alphabet measure=id role=writes scope=sources/topos-openapi-blob value=https://github.com/Lapxo/topos-openapi/releases/download/v0.1.1/13a79fc41f1b837a0527fbe4c5aed3cec190fae7d28215a36ec25e54f7d67274.tar.gz
|
|
1260
1376
|
bound-lock/1 at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/checks value=test/**|vectors/**|samples/**
|
|
1261
1377
|
bound-lock/1 at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/project value=package.json|LICENSE
|