@lapxo/head 0.1.6 → 0.2.0

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.
Files changed (68) hide show
  1. package/README.md +39 -14
  2. package/TARGET.bound +301 -118
  3. package/dist/src/access/contract.d.ts +0 -2
  4. package/dist/src/access/obtain.js +3 -3
  5. package/dist/src/ahead/budget.d.ts +4 -0
  6. package/dist/src/ahead/budget.js +8 -0
  7. package/dist/src/ahead/read.d.ts +2 -2
  8. package/dist/src/ahead/read.js +2 -4
  9. package/dist/src/claims/claim.d.ts +1 -0
  10. package/dist/src/claims/claim.js +15 -15
  11. package/dist/src/claims/view.d.ts +3 -0
  12. package/dist/src/claims/view.js +11 -0
  13. package/dist/src/compile/pin.d.ts +7 -0
  14. package/dist/src/compile/pin.js +6 -7
  15. package/dist/src/core/answer.d.ts +3 -0
  16. package/dist/src/core/answer.js +1 -0
  17. package/dist/src/core/device.d.ts +2 -2
  18. package/dist/src/core/device.js +5 -5
  19. package/dist/src/core/lock.d.ts +1 -0
  20. package/dist/src/core/lock.js +2 -1
  21. package/dist/src/core/package.js +3 -1
  22. package/dist/src/core/read.js +1 -2
  23. package/dist/src/core/worlds.js +2 -3
  24. package/dist/src/doors/guard.d.ts +18 -0
  25. package/dist/src/doors/guard.js +63 -0
  26. package/dist/src/doors/head.d.ts +60 -0
  27. package/dist/src/doors/head.js +141 -0
  28. package/dist/src/doors/http.d.ts +3 -0
  29. package/dist/src/doors/http.js +34 -0
  30. package/dist/src/doors/lines.d.ts +3 -0
  31. package/dist/src/doors/lines.js +21 -0
  32. package/dist/src/flows/device.d.ts +3 -0
  33. package/dist/src/flows/device.js +5 -7
  34. package/dist/src/flows/plan.d.ts +2 -0
  35. package/dist/src/flows/plan.js +22 -11
  36. package/dist/src/flows/read.js +4 -1
  37. package/dist/src/index.js +17 -116
  38. package/dist/src/links/birth.d.ts +6 -0
  39. package/dist/src/links/birth.js +48 -0
  40. package/dist/src/links/inspect.d.ts +1 -1
  41. package/dist/src/links/inspect.js +28 -19
  42. package/dist/src/links/link.d.ts +2 -2
  43. package/dist/src/links/link.js +7 -10
  44. package/dist/src/places/found.js +1 -1
  45. package/dist/src/ports/bound.d.ts +9 -11
  46. package/dist/src/ports/bound.js +37 -33
  47. package/dist/src/ports/host.d.ts +53 -0
  48. package/dist/src/ports/host.js +157 -0
  49. package/dist/src/ports/keychain.d.ts +14 -2
  50. package/dist/src/ports/keychain.js +19 -7
  51. package/dist/src/ports/scratch.d.ts +4 -0
  52. package/dist/src/ports/scratch.js +10 -0
  53. package/dist/src/signer.js +8 -7
  54. package/dist/src/sources/connect.js +3 -2
  55. package/dist/src/tools/card.js +4 -6
  56. package/dist/src/use/named.js +3 -3
  57. package/dist/src/verbs/ask.js +2 -1
  58. package/dist/src/verbs/card.js +2 -2
  59. package/dist/src/walk/context.js +3 -6
  60. package/package.json +3 -3
  61. package/dist/src/ports/reading.d.ts +0 -8
  62. package/dist/src/ports/reading.js +0 -14
  63. package/dist/src/ports/signers.d.ts +0 -6
  64. package/dist/src/ports/signers.js +0 -14
  65. package/dist/src/ports/spare.d.ts +0 -1
  66. package/dist/src/ports/spare.js +0 -33
  67. package/dist/src/ports/warm.d.ts +0 -19
  68. package/dist/src/ports/warm.js +0 -45
package/TARGET.bound CHANGED
@@ -1,114 +1,159 @@
1
+ bound-lock/1 about= at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=device/head/coverage value=read/**|kept/**|act/**|access/**|use/**|refused/**
2
+ bound-lock/1 about="# A typed answer from a local API\n\nThis checkout example needs macOS and Node 22.18 or later. From the repository root, install its pinned dependencies with `npm ci --ignore-scripts`.\n\nThe existing test client speaks MCP, follows cards and handles the catalogue actions through the three public tools. This demo creates a temporary home, simulated keychain and loopback API. Its automatic yes applies only to this fixture. In normal use, you approve the connection yourself. The first run may fetch pinned public world artifacts; the API itself is local.\n\nRun this from the repository root:\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 { api } from './test/two-sources.ts';\nimport { ask } from './test/client.ts';\nimport { fakeKeychain } from './test/fake-keychain.ts';\nimport { parse } from '@lapxo/topos/wire';\nconst demo = JSON.parse(readFileSync('docs/examples/first-minute.json', 'utf8'));\nconst fixture = await api(() => JSON.stringify(demo.response));\nconst home = mkdtempSync(join(tmpdir(), 'head-example-'));\nconst env = { ...fakeKeychain({}).env, HEAD_HOME: join(home, 'home'), HOME: home, USERPROFILE: home };\nconst call = (name, arguments_) => ({ method: 'tools/call', params: { name, arguments: arguments_ } });\ntry {\n const results = await ask([\n call('connect', { source: demo.source, document: fixture.document }),\n call('ask', { place: join(home, 'place'), source: demo.source, operation: demo.operation, args: demo.args })\n ], [], env, () => ({ action: 'accept', content: { yes: true } }));\n const output = results.at(-1).result.content[0].text;\n const lines = output.split('\\n').map(parse).filter(p => p.kind === 'fact').map(p => p.value.fields);\n for (const [field, value] of Object.entries(demo.expectedTypedValues))\n assert(lines.some(line => line.scope?.endsWith('/' + field) && line.value === value));\n assert(lines.some(line => line.scope?.startsWith('read/forecast/') && line.measure === 'digest' && line.sig));\n console.log(JSON.stringify({ source: demo.source, values: Object.fromEntries(Object.keys(demo.expectedTypedValues).map(field => [field, lines.find(line => line.scope?.endsWith('/' + field)).value])), receipt: lines.find(line => line.scope?.startsWith('read/forecast/') && line.measure === 'digest').value }, null, 2));\n} finally { fixture.close(); }\nJS\n```\n\nThe returned fields include `temperature = 21` and `sky = clear`, plus the read's signed digest receipt. Paths and signatures vary; those are observations, not fixed demo bytes. The fixture schema supplies the types. Another API with no usable schema is named untyped instead of receiving invented types.\n\nTo ask a real source, supply its document in your assistant, choose a source name, and approve its connection. An overlay can fill in what the provider declares separately. Access is anonymous only when permitted, or obtained by the declared flow or secret-input path. Never enter a secret in the model conversation. See [access options](connect-any-api.md).\n\nThe separate timing acceptance is `HEAD_ONBOARDING=1 HEAD_FIRST_CELL_STRICT=1 node --test test/onboarding.test.ts`. Running this demo is not a timing or platform certification.\n" at=policy:head/documentation/0.2.0 by=target form=alphabet measure=text role=writes scope=prose/en/page/first-minute shape=docs/first-minute.md value=lock
3
+ bound-lock/1 about="# Agreement keeps its sources\n\nTwo matching answers need not be two independent observations. head compares typed fields, keeps each source and its read receipt, and displays declared lineage rather than inventing a confidence score.\n\n| Marks | What the view says |\n|---|---|\n| `●○` | A later source shares declared lineage or a recognized source identity with an earlier one. |\n| `●●` | Separate source marks in this view. Unknown or undeclared lineage is not proof of independence. |\n\nIf values differ, head shows each source's value and time. It does not pick a winner or manufacture a numeric loss. A field missing from one source is partial evidence, not disagreement with an assertion nobody made.\n\nThis checkout example uses the existing two-source fixture and declaration/withdrawal mechanism. The fixture sources return the same two fields; these are not measurements or an independence experiment. Run `npm ci --ignore-scripts` first, then:\n\n```sh\nnode --input-type=module <<'JS'\nimport { readFileSync } from 'node:fs';\nimport { strict as assert } from 'node:assert';\nimport { api, person } from './test/two-sources.ts';\nconst demo = JSON.parse(readFileSync('docs/examples/lineage.json', 'utf8'));\nconst a = await api(() => JSON.stringify(demo.response));\nconst b = await api(() => JSON.stringify(demo.response));\ntry {\n const p = await person(a.document, b.document);\n p.rooted([demo.declare]);\n const grouped = await p.asked();\n assert(grouped.length > 0 && grouped.every(c => c.code === demo.before.code && c.fields.marks === demo.before.marks));\n const receipts = new Set(grouped.flatMap(c => c.fields.receipts.split('|')));\n assert(grouped.every(c => c.fields.sources === 'forecast, mirror' && c.fields.receipts.split('|').length === 2));\n assert([...receipts].every(receipt => p.receipts().has(receipt)));\n p.rooted([demo.withdraw]);\n const after = await p.asked();\n assert(after.length > 0 && after.every(c => c.code === demo.after.code && c.fields.marks === demo.after.marks));\n assert(after.every(c => c.fields.sources === 'forecast, mirror'));\n assert([...receipts].every(receipt => p.receipts().has(receipt)));\n console.log(JSON.stringify({ before: demo.before, after: demo.after, oldReceiptsRetained: true, independenceProved: false }, null, 2));\n} finally { a.close(); b.close(); }\nJS\n```\n\nThe declaration says that `mirror` shares `forecast`'s lineage. Its withdrawal removes that current claim, not the sources or old receipts. The later `●●` is reported as **unknown lineage**, not newfound independence. Each mark still points to a source-specific read; grouping does not merge receipt identities.\n" at=policy:head/documentation/0.2.0 by=target form=alphabet measure=text role=writes scope=prose/en/page/lineage shape=docs/lineage.md value=lock
1
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
2
- bound-lock/1 about="# head\n\nAn API already says what it offers, where it is reached and how access to it is proven. head reads that document once, compiles it into lines its place pins by digest, and from then on answers by those lines: which operation reads, what it asks, what it answered. It names no kind of source and no client: what it reads is said by the worlds it adopts, and what it asks through is what the client declares. [Connect any API](https://github.com/Lapxo/head/blob/main/docs/connect-any-api.md) shows each level of access.\n\nA person does four things, in the client they talk to. **Connect** an API: hand head its document, and an overlay beside it when it says too little; it is compiled once and pinned, and the first connect with no place founds `~/place` on the same yes, its root key kept in the keychain. **Ask**: name what you want by its name or in your own words; head finds it in its own registry of the source, never listing the rest to the model, obtains access the first time as the document declares it, calls only what reads, types the answer and lands a receipt. An answer of nothing is what the source holds today, said with its hour; no byte at all is no answer, and the read stays owed until one brings them. **Do** what is not a read, once you say yes to that very call. **Share** a place: share makes a package you can send and verify; your lines are a plain text file you can copy. A client starts head with `head run`; typed alone, `head` says this and starts nothing.\n\n**Your lines.** Beside your place's lock, `birth.bound` holds your lines and nothing of head's: your root and your devices, the sources you connected, what you allowed, each offer you used under the words you asked it by. It is a text file with your lines, in your own words: read it with `cat`, copy it, paste it. head's own lines are its profile, which you see when you ask why.\n\nAccess comes at three levels, and the place says which. **None**: the document states that a read needs nothing, or says nothing about access at all; then head tries the read once with nothing attached, and keeps what it saw as a receipt. **A declared flow**: the document, or its overlay, declares how access is obtained, as an Arazzo profile: a form, a one-time code, a choice, a provider's page. head runs it once per issuer and keeps only the token, in the keychain. **A secret entered by hand**: a key or a password, only where the place's root allows it, entered on head's own one-time page and never through the model.\n\nWhat head never does. It never guesses how access is proven: when a document does not state it, only a read is tried, with nothing attached, and nothing else is called. It never calls an operation that is not a read without the person's yes, nor past what the place allows; a place that would stand on another's lock as its parent is refused by name, since composing two places' policies is bound's. It never lets a secret reach the model, a file, an answer or an argument. And it never raises a ceiling to make room: what outgrows one stays open until its responsibilities are reduced or split.\n\n## Install\n\n- **As an extension:** download `head-<version>-<digest>.mcpb` from the [latest release](https://github.com/Lapxo/head/releases/latest) and open it. Its digest is in the release notes.\n- **By command:** `npx -y @lapxo/head@0.1.6 run`, for an assistant that starts its servers by command.\n\nhead runs on macOS for now. Its keys live in your keychain, never in a file.\n\n## The first minute\n\nhead connects nothing when it is installed, and names no provider: what it reads is the API you hand it.\n\n1. Ask your assistant something. With no place yet, head says so, and asks for the address of the document of an API that answers it.\n2. Give that address and say yes once. head founds your place in `~/place`, connects the API from its document, pinned by the digest of what it read, and lets head read it for the next 90 days.\n3. Your assistant asks again by itself, and the answer comes back typed, with the source it came from and a receipt signed by head's key.\n" at=policy:head/verified-delivery/0.1.6 by=target form=alphabet measure=text role=writes scope=prose/en/readme shape=README.md value=lock
3
- bound-lock/1 about="*.mts\n*changelog*\n" at=policy:head/bundle-exclusions/0.1.6 by=target form=alphabet measure=text role=writes scope=prose/en/bundle/exclusions shape=.mcpbignore value=lock
4
- bound-lock/1 about="A lot is drafted lines, one a line, each by=target and unsigned: nothing was asked." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/bad-lot value=lock
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
+ 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.0 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.0 by=target form=alphabet measure=text role=writes scope=prose/en/readme shape=README.md value=lock
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
+ 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
5
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
11
+ bound-lock/1 about="A sign or land uses its own host and an injected signer port for one call. Unknown admitted-key selection and missing signer binding are distinct negatives; no key is read before these refusals. The host closes and its own scratch is removed when the call finishes." at=policy:head/host/0.1.7-repin-027 by=target form=alphabet measure=id role=writes scope=bound/signing-host value=one-call@1
12
+ bound-lock/1 about="A source document, a historical or located standing reference, or a public birth record supplied inline or as a client-shared local birth.topos file. Birth records are inspected only." at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=tool/connect/document value=string
6
13
  bound-lock/1 about="A source the place compiles, by the name the place gives it: alone, its region, what of it was used and how much more it offers; with an operation, one read of it." at=policy:head/verbs/0.1.6 by=target form=alphabet measure=id role=writes scope=tool/ask/source value=string
7
14
  bound-lock/1 about="A source the place compiles." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/access/source value=string
8
15
  bound-lock/1 about="A source the place compiles." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/act/source value=string
9
16
  bound-lock/1 about="A source the place compiles: an API it holds the document of, by the name the place gives it." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/look/source value=string
10
- bound-lock/1 about="A source this place connected whose access reads the document, sent to that source-s own origin alone; optional." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=tool/connect/via value=string
17
+ bound-lock/1 about="A source this place connected whose access reads the document, sent to that source's own origin alone; optional." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/connect/via value=string
11
18
  bound-lock/1 about="Access to {source} ({flow}) was refused and is not proven since: {place} holds it open." at=policy:head/access/0.1.4 by=target form=alphabet measure=id role=writes scope=said/access-pending value=lock
12
19
  bound-lock/1 about="Access to {source} is kept in this keychain, its receipt landed without the secret: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/access-kept value=lock
13
20
  bound-lock/1 about="Admit another device into a place, once whoever holds its root says yes: the key its own key tool handed, under a name, covering what is given — without it, what a member is: asking, keeping what it read, proving access. What it claims to cover is not read." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/admit value=place|key|name|coverage
14
- bound-lock/1 about="All Head source lines under the existing 0.1.5 ceiling. No local identity fingerprint or duplicated call-resolution wrapper is delivered; contracts remain in the lock and source comments are concise." at=policy:head/verified-delivery/0.1.6 by=target form=interval measure=source-lines role=writes scope=source/lines value=0..2600
15
21
  bound-lock/1 about="Allow one offer that is not of class read, up to a number of times." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/can value=source|operation|times
16
22
  bound-lock/1 about="An API already says what it offers, where it is reached and how access to it is proven. head reads that document once, compiles it into lines its place pins by digest, and from then on answers by those lines: which operation reads, what it asks, what it answered. It names no kind of source and no client: what it reads is said by the worlds it adopts, and what it asks through is what the client declares. [Connect any API](docs/connect-any-api.md) shows each level of access.\n\nA person does three things. **Found a place**: a folder whose lock is the place, its root key kept in the keychain; the first source connected with no place founds `~/place` on the same yes. **Connect a source**: hand head an API document, and an overlay beside it when it says too little; it is compiled once, pinned, and every offer is listed with its class. **Ask**: read an operation. head obtains access the first time, as the document declares it, calls only what reads, types the answer and lands a receipt.\n\nAccess comes at three levels, and the place says which. **None**: the document states that a read needs nothing, or says nothing about access at all; then head tries the read once with nothing attached, and keeps what it saw as a receipt. **A declared flow**: the document, or its overlay, declares how access is obtained, as an Arazzo profile: a form, a one-time code, a choice, a provider's page. head runs it once per issuer and keeps only the token, in the keychain. **A secret entered by hand**: a key or a password, only where the place's root allows it, entered on head's own one-time page and never through the model.\n\nWhat head never does. It never guesses how access is proven: when a document does not state it, only a read is tried, with nothing attached, and nothing else is called. It never calls an operation that is not a read without the person's yes, nor past what the place allows; a place that would stand on another's lock as its parent is refused by name, since composing two places' policies is bound's. It never lets a secret reach the model, a file, an answer or an argument. And it never raises a ceiling to make room: what outgrows one is split by responsibility." at=policy:head/docs/0.1.4 by=target form=alphabet measure=text role=writes scope=prose/en/idea value=lock
17
23
  bound-lock/1 about="An MCP server that reads any API by its document: access asked once per issuer, every answer typed by the world that compiled it, every read kept with a signed receipt." at=policy:head/docs by=target form=alphabet measure=text role=writes scope=prose/en/what value=lock
18
24
  bound-lock/1 about="An earlier call of {operation} on {source} landed its intent {intent} and no receipt: look at what it would have changed with closes={intent}, then act again." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/open value=lock
19
- bound-lock/1 about="An intent an earlier act left open, by the scope it was named under: once this read lands, it closes that intent with the read-s digest. Look at what the act would have changed." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/look/closes value=string
20
- bound-lock/1 about="An intent an earlier act left open, by the scope it was named under: once this read lands, it closes that intent with the read-s digest. Look at what the act would have changed." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/ask/closes value=string
25
+ bound-lock/1 about="An intent an earlier act left open, by the scope it was named under: once this read lands, it closes that intent with the read's digest. Look at what the act would have changed." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/ask/closes value=string
26
+ bound-lock/1 about="An intent an earlier act left open, by the scope it was named under: once this read lands, it closes that intent with the read's digest. Look at what the act would have changed." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/look/closes value=string
21
27
  bound-lock/1 about="An overlay for the document, the same way; optional." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/connect/overlay value=string
22
28
  bound-lock/1 about="Answer latency depends on reuse of valid readings and an in-process Bound host; the declared answer ceiling remains unchanged." at=policy:head/release-checks/0.1.4 by=target form=alphabet measure=id role=writes scope=answer/seconds/rests-on value=bound/read-reuse|bound/in-process-host
23
- bound-lock/1 about="Answer the person in their words. Never show them a coordinate, a digest, a pin or a ledger epoch a cell carries — those are for you to act on — unless they ask why, or share a place, whose digest is what they send. Use claim only with the person-s exact words, never with a conclusion of yours." at=policy:head/claims/0.1.5 by=target form=alphabet measure=text role=writes scope=prose/en/instructions value=lock
24
- bound-lock/1 about="Answered from the receipt {scope} ({digest}), as the source answered it at {at}, within the reuse the place allows: nothing was called; nothing typed was kept of it, so the fold typed it again." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/reread value=lock
25
- bound-lock/1 about="Answered from what was kept for {scope} ({digest}), as the source answered it at {at}, within the reuse the place allows: nothing was called and nothing folded." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/reused value=lock
29
+ bound-lock/1 about="Answer the person in their words. Never show them a coordinate, a digest, a pin or a ledger epoch a cell carries — those are for you to act on — unless they ask why, or share a place, whose digest is what they send. Use claim only with the person's exact words, never with a conclusion of yours." at=policy:head/words/0.1.7 by=target form=alphabet measure=text role=writes scope=prose/en/instructions value=lock
30
+ bound-lock/1 about="Answered from the receipt {scope} ({digest}), as the source answered it at {at}, within the reuse the place allows: nothing was called; nothing typed was kept of it, so it was typed again." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/reread value=lock
31
+ bound-lock/1 about="Answered from what was kept for {scope} ({digest}), as the source answered it at {at}, within the reuse the place allows: nothing was called and nothing typed again." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/reused value=lock
26
32
  bound-lock/1 about="Any API, read by its document" at=policy:head/docs by=target form=alphabet measure=text role=writes scope=docs/tagline value=lock
27
- bound-lock/1 about="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." at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=tool/ask value=place|source|operation|args|view|card|key|lines|why|history|closes|sources
33
+ bound-lock/1 about="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." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=tool/ask value=place|source|operation|args|view|card|key|lines|why|history|closes|sources|preflight|authority
28
34
  bound-lock/1 about="Ask me before {operation} on {source} is called, every time. Plan this line for me to sign:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/ask/text value=lock
29
35
  bound-lock/1 about="Ask the person before an offer is called, every time." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/ask value=source|operation
30
- bound-lock/1 about="Asked of a link, the transport it is read by: the lines of head-s profile the place was born with, and who laid them." at=policy:head/verbs/0.1.6 by=target form=alphabet measure=id role=writes scope=tool/connect/why value=boolean
36
+ bound-lock/1 about="Asked of a link, the transport it is read by: the lines of head's profile the place was born with, and who laid them." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/connect/why value=boolean
37
+ bound-lock/1 about="At most one source file owns scheduling primitives, src/ports/host.ts, solely for each place fold host idle close. The native reader measures current source bytes using the same classifier as the surface test. No worker or other scheduled source is allowed; every other ceiling and host lifetime/budget remains unchanged." at=witness:head/scheduled-native/0.1.7 by=target form=interval measure=count role=reads scope=surface/scheduled value=0..1
38
+ bound-lock/1 about="At most three digest-bound HTTPS redirects under the existing Bound receiver contract; no credentials or private-network permission is added." at=policy:head/receiver/0.1.7 by=target form=interval measure=count role=writes scope=bound/receiver/redirects value=0..3
31
39
  bound-lock/1 about="Call one offer that is not of class read, only as far as the person allowed it and after their yes when they asked to be asked. The intent lands before the call and the receipt after; a call that never answered stays open until a look closes it." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/act value=place|source|operation|args
32
40
  bound-lock/1 about="Clone, `npm ci && npm test`. A vector that gives you a different answer is the contribution: send it with what it printed. Lines land through the fold, never by hand; when a page and the lock disagree, the lock is right." at=policy:head/docs by=target form=alphabet measure=text role=writes scope=prose/en/contributing value=lock
33
41
  bound-lock/1 about="Closed {intent} by this read ({digest}). It counts as done: act runs again only within what is still allowed." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/closed value=lock
42
+ bound-lock/1 about="Configuration preflight for {key}: {decision}; kind {kind}; needs {needs}. This is an observation at one supplied instant, not permission to execute APIs or a later changed action. Q4 domain checks remain separate." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=said/authority-card value=lock
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
+ 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
34
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
35
- 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/connect/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/connect value=place|source|document|overlay|digest|via|accept|operation|args
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/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/connect value=place|source|document|overlay|digest|via|accept|operation|args
36
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
37
48
  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
38
49
  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
50
+ 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
39
51
  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
40
- 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.5 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
52
+ 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
41
53
  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
42
54
  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
+ 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
56
+ 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/*
57
+ 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
43
58
  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
44
- 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/verbs/0.1.6 by=target form=alphabet measure=id role=writes scope=tool/do/operation value=string
59
+ 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
45
60
  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
46
- bound-lock/1 about="For admit: the lines the other device-s key action answered, or the line holding its public key." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/key value=string
61
+ bound-lock/1 about="For admit: the lines the other device's key action answered, or the line holding its public key." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/do/key value=string
47
62
  bound-lock/1 about="For admit: what it may sign there, as scopes joined by |; without it, what a member may." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/coverage value=string
63
+ bound-lock/1 about="For claim: agent, when the statement is yours, the agent's, never the person's." at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=tool/do/origin value=string
48
64
  bound-lock/1 about="For claim: take back what was kept of these words." at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=tool/do/withdraw value=boolean
49
65
  bound-lock/1 about="For claim: what the person stated, in their words, as they said it; never what you concluded from them." at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=tool/do/said value=string
50
66
  bound-lock/1 about="For key: head, for the key that signs what head read and did; person, for the key that signs what the person allows. Without one, head." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/who value=string
51
67
  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
52
- 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/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/name value=string
68
+ 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
53
69
  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
54
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
55
- 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/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/urls value=string
71
+ 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
56
72
  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
57
- 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/surface by=target form=alphabet measure=id role=writes scope=tool/place value=dir|name
73
+ 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
58
74
  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
59
75
  bound-lock/1 about="Help me start with head. Ask me what I want to know and the address of the document of an API that answers it; then connect that API and answer me." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/welcome/text value=lock
60
76
  bound-lock/1 about="History, not a current answer: what {source} answered to {operation} at {at}, under receipt {digest}. Nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/history value=lock
61
77
  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
62
- 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/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=said/trust value=lock
78
+ 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
63
79
  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
64
80
  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
65
- bound-lock/1 about="Its document: an https address, read with nothing attached and, named by its digest, followed wherever it moves to the bytes that digest names; or an absolute file inside the place or a folder the client shares; or a package-s lock, from either, with its digest. Or a site alone, such as api.example.com, its document found where the site publishes its catalog or at the paths head-s lock names; or a folder the client shares, its document found inside it at those names. A site or folder names the source when none is given." at=policy:head/connect/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/connect/document value=string
66
- 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/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/shared-link value=lock
81
+ 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
67
82
  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
68
- bound-lock/1 about="Keep what the person states in this conversation as theirs, signed by their own key: their words exactly as they said them, never what you concluded from them. The first time in a conversation they are asked once; each statement is said back as it goes in. With withdraw, the same words are taken back." at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=tool/claim value=place|said|withdraw
83
+ bound-lock/1 about="Keep what the person states in this conversation as theirs, signed by their own key: their words exactly as they said them, never what you concluded from them. The first time in a conversation they are asked once; each statement is said back as it goes in. With withdraw, the same words are taken back. With origin agent, what you yourself state is kept as an agent's, never as theirs, where the place admits an agent." at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=tool/claim value=place|said|withdraw|origin
69
84
  bound-lock/1 about="Keep {source} read-only. Plan this line for me to sign:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/readonly/text value=lock
70
85
  bound-lock/1 about="Kept as yours in {place}: {said}" at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/claimed value=lock
86
+ 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
71
87
  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
72
- 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/surface/0.1.6 by=target form=alphabet measure=id role=writes scope=said/pick-offer value=lock
88
+ 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
89
+ 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
90
+ 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
+ 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
+ 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
73
93
  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
74
94
  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
75
- bound-lock/1 about="No link: a link needs the address where its bytes are published. {document} is ready to publish as it is; share again with that address, or send the package-s digest apart as before." at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/shared-unlinked value=lock
76
95
  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
77
96
  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
78
- bound-lock/1 about="No place {place} is in head-s index on this device: a place is founded with the place tool, and then it is listed here." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/places-none value=lock
97
+ bound-lock/1 about="No place {place} is in head's index on this device: a place is founded with the place tool, and then it is listed here." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/places-none value=lock
79
98
  bound-lock/1 about="No retained read of {operation} on {source} is held here for whom it would be read as. Nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/history-none value=lock
80
99
  bound-lock/1 about="No world typed that answer, so nothing of it was kept to show; the receipt stands as evidence of the read." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/history-untyped value=lock
81
100
  bound-lock/1 about="Not kept: you said no to keeping what you state in {place} in this conversation. {said} was not kept." at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/claims-declined value=lock
82
101
  bound-lock/1 about="Nothing kept in {place} is {said}: nothing was taken back." at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/claim-none value=lock
83
- bound-lock/1 about="Nothing was admitted: hand the lines the other device-s key tool answered, and a name." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-key value=lock
102
+ bound-lock/1 about="Nothing was admitted: hand the lines the other device's key tool answered, and a name." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/no-key value=lock
84
103
  bound-lock/1 about="One place by its folder, absolute; without one, every place." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=tool/places/place value=string
85
104
  bound-lock/1 about="One view of a place as bound folds it, for a client to hold beside the conversation." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=resource/view value=bound://view/{view}{?place,at}
105
+ 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
86
106
  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
87
107
  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
88
- bound-lock/1 about="Pack a place for another place to receive: a lock naming by digest each world its sources were compiled under and each source-s document, overlay and compiled pin, written with those bytes into a folder — and, beside each digest, the encrypted address its bytes are also published at, where the person names one. It carries no key, no grant and no answer; nothing is asked, signed or landed. The folder or the addresses travel as the person chooses, and the digest apart, over a private channel." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=tool/share value=place|to|urls
108
+ 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
+ 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="Pack a place for another place to receive: a lock naming by digest each world its sources were compiled under and each source's document, overlay and compiled pin, written with those bytes into a folder — and, beside each digest, the encrypted address its bytes are also published at, where the person names one. It carries no key, no grant and no answer; nothing is asked, signed or landed. The folder or the addresses travel as the person chooses, and the digest apart, over a private channel." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/share value=place|to|urls
89
111
  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
90
112
  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
91
- 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/surface by=target form=alphabet measure=id role=writes scope=tool/plan value=place|lines
92
- 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/surface by=target form=alphabet measure=id role=writes scope=tool/access value=place|source|operation
93
- 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/surface by=target form=alphabet measure=id role=writes scope=prompt/access value=place|source
94
- 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/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/access/text 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/release-gates/0.2.0 by=target form=alphabet kind=process measure=reader needs=src/|test/|samples/first-minute/yes/|package.json|package-lock.json role=writes scope=reader/first-minute shape=run value=dist/test/first-minute.js
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/configuration-preflight/0.2.0 by=target form=alphabet kind=process measure=reader needs=src/|test/|docs/contracts/|samples/authority-preflight/yes/ role=writes scope=reader/authority-preflight shape=run value=dist/test/authority-preflight-reader.js
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/walk-reading/0.2.0 by=target form=alphabet kind=process measure=reader needs=src/|test/|samples/walk-reading/yes/|TARGET.bound role=writes scope=reader/walk-reading shape=run value=dist/test/walk-reading.js
116
+ 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
117
+ 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
+ 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
+ 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
120
+ bound-lock/1 about="Public place settings are ready in {document}. They are separate from the source package and grant nothing." at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-shared value=lock
121
+ bound-lock/1 about="Public place settings inspected: {inspection}. Already occupied here: {collisions}. No settings or authority were installed; changes require ordinary local review and admission." at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-inspected value=lock
122
+ bound-lock/1 about="Q4 remains partial. Bound checks exact configuration records; Head keeps API permissions, access negotiation and secret consent, plus device attestation admission, under its existing domain card. Native configuration failures are named without converting observations into grants." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=do/not-in-card/head value=not-covered|not-allowed|secret-unallowed|access-unstated|authority-refused|authority-needed
95
123
  bound-lock/1 about="Read one view of a place as bound folds it, at the resolution ask reads it at; or what a source offers, as typed lines: at 0 where it is reached and the class of each offer, past it their forms and how access is proven; or, with an operation of class read, that operation once: the response comes back with the receipt the device key landed for it, or, while the place allows reuse, the answer kept for it and nothing called. Nothing else is ever called." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/look value=place|view|source|operation|args|closes|history|why
124
+ bound-lock/1 about="Read the current bytes of every declared TypeScript source through the shared surface classifier. Emit the number of source files owning scheduling primitives; refuse any such source except src/ports/host.ts. Bound combines the readings and judges the admitted ceiling." at=policy:head/scheduled-native/0.1.7 by=target form=alphabet kind=js measure=reader needs=src/ role=writes scope=reader/surface-scheduled shape=*.ts value=dist/test/scheduled.js
125
+ bound-lock/1 about="Read the existing cells, or observe Bound configuration preflight for explicit records and key. This observation never installs authority and does not replace Head domain permissions." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=tool/card value=place|key|lines|preflight|authority
96
126
  bound-lock/1 about="Receive a package another place shared: from a file or an address, by the digest its sender sent apart from it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=prompt/receive value=package|digest|place
97
127
  bound-lock/1 about="Receive the package {package} into the place {place} with the connect tool: its lock as the document, named by the digest {digest}. Ask me before you do, and tell me which sources it connected and that access is asked here again." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=prompt/receive/text value=lock
128
+ 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/examples/first-minute.json value=derived
129
+ 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/examples/lineage.json value=derived
130
+ 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/examples/sharing.json value=derived
131
+ 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
+ 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
+ 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-gates/0.2.0 by=target form=alphabet measure=digest role=writes scope=dep/first-minute-capture shape=samples/first-minute/yes/installed.json value=sha256:0d4596f8fac4ee0613596dc8930d66ccb692f9818e76b18b2caae84717a527d2
98
135
  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
99
136
  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
100
- 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/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/share/text value=lock
137
+ 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
101
138
  bound-lock/1 about="Sign exactly these lines" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/elicit/yes value=lock
102
- bound-lock/1 about="Signed by who configures the place — its root where this keychain holds it, else the person-s key; nothing landed. Lot {lot}, made against base {base}. What bound printed, folding it as if it landed:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/planned value=lock
139
+ bound-lock/1 about="Signed by who configures the place — its root where this keychain holds it, else the person's key; nothing landed. Planned as {lot}, made against base {base}. What bound printed, reading it as if it landed:" at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/planned value=lock
103
140
  bound-lock/1 about="Start here: any API, by the address of its document." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/welcome value=
104
141
  bound-lock/1 about="Take back what was kept of these words." at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=tool/claim/withdraw value=boolean
105
142
  bound-lock/1 about="Taken back from {place}: {said}" at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/unclaimed value=lock
106
143
  bound-lock/1 about="The bytes the link names did not arrive from {source}: {place} owes them until they do, by this link or another channel." at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/link-owed value=lock
107
144
  bound-lock/1 about="The card of {place} is {card}, valid from this {from}: do acts there on it while nothing else lands." at=policy:head/card/0.1.4 by=target form=alphabet measure=id role=writes scope=said/card value=lock
108
145
  bound-lock/1 about="The card the last answer about the place ended with, or the one ask answers asked with card: an action on a place that moved since is refused, and nothing is done." at=policy:head/card/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/card value=string
109
- bound-lock/1 about="The digest its sender sent apart from it, sha256 and its hex." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=prompt/receive/digest value=string
146
+ bound-lock/1 about="The content reference has no holder location: {needs}. No bytes were fetched or authority admitted." at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/reference-needs value=lock
147
+ bound-lock/1 about="The content reference is {link}. No holder location is declared; {document} is ready to publish. Inspecting the reference grants nothing." at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/shared-unlinked value=lock
148
+ bound-lock/1 about="The declared documentation or executable example data, rendered by the existing pinned prose capsule." at=policy:head/documentation/0.2.0 by=target form=alphabet measure=id needs=docs/examples/first-minute.json role=demands scope=view/example-first-minute shape=docs/examples/first-minute.json value=text
149
+ bound-lock/1 about="The declared documentation or executable example data, rendered by the existing pinned prose capsule." at=policy:head/documentation/0.2.0 by=target form=alphabet measure=id needs=docs/examples/lineage.json role=demands scope=view/example-lineage shape=docs/examples/lineage.json value=text
150
+ bound-lock/1 about="The declared documentation or executable example data, rendered by the existing pinned prose capsule." at=policy:head/documentation/0.2.0 by=target form=alphabet measure=id needs=docs/examples/sharing.json role=demands scope=view/example-sharing shape=docs/examples/sharing.json value=text
151
+ bound-lock/1 about="The declared documentation or executable example data, rendered by the existing pinned prose capsule." at=policy:head/documentation/0.2.0 by=target form=alphabet measure=id needs=docs/first-minute.md role=demands scope=view/first-minute shape=docs/first-minute.md value=text
152
+ bound-lock/1 about="The declared documentation or executable example data, rendered by the existing pinned prose capsule." at=policy:head/documentation/0.2.0 by=target form=alphabet measure=id needs=docs/lineage.md role=demands scope=view/lineage shape=docs/lineage.md value=text
153
+ bound-lock/1 about="The declared documentation or executable example data, rendered by the existing pinned prose capsule." at=policy:head/documentation/0.2.0 by=target form=alphabet measure=id needs=docs/sharing.md role=demands scope=view/sharing shape=docs/sharing.md value=text
154
+ bound-lock/1 about="The digest its sender sent apart from it, exactly as they sent it." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=prompt/receive/digest value=string
110
155
  bound-lock/1 about="The digest plan answered for the lot." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/land/lot value=string
111
- bound-lock/1 about="The document-s digest, sha256 and its hex: a document that hashes otherwise is refused, and a document that moved to another address is followed only when named by it; a package is received only by the digest its sender sent apart from it. Optional otherwise." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=tool/connect/digest value=string
156
+ bound-lock/1 about="The document's digest, sha256 and its hex: a document that hashes otherwise is refused, and a document that moved to another address is followed only when named by it; a package is received only by the digest its sender sent apart from it. Optional otherwise." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/connect/digest value=string
112
157
  bound-lock/1 about="The drafted lines, one a line, each by=target and unsigned: what the person would allow." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/plan/lines value=string
113
158
  bound-lock/1 about="The flow {source} declares stopped at {input}: its answer held nothing the flow goes on with. Nothing was kept and nothing was called. An overlay whose step says where its answer holds it pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/step-unanswered value=lock
114
159
  bound-lock/1 about="The folder of the new place, absolute." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/place/dir value=string
@@ -124,33 +169,36 @@ bound-lock/1 about="The folder of the place, absolute; without one, the first ro
124
169
  bound-lock/1 about="The folder of the place, absolute; without one, the first root the client shares." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=tool/share/place value=string
125
170
  bound-lock/1 about="The folder of the place, absolute; without one, the first root the client shares." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/ask/place value=string
126
171
  bound-lock/1 about="The folder of the place, absolute; without one, the first root the client shares." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/place value=string
127
- bound-lock/1 about="The folder of the place, absolute; without one, the person-s place." at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=tool/claim/place value=string
172
+ 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
128
173
  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
129
174
  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
130
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
131
176
  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
132
177
  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
+ 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
179
+ bound-lock/1 about="The installed CLI starts and completes the six declared MCP client cells; the current native act retains its unchanged cost ceiling. Other door parity remains in the existing suite." at=policy:head/release-gates/0.2.0 by=target form=alphabet measure=id role=writes scope=release/category/cli value=release/cli-startup|cost/act
133
180
  bound-lock/1 about="The key whose cells are asked; without one, every open cell." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/card/key value=string
181
+ bound-lock/1 about="The key {key} names is a signing key, and only head's signer reads it: this door was refused it by name before the keychain was asked, and nothing was read. The refusal is written in {place}." at=policy:head/docs/0.1.7-signing-key by=target form=alphabet measure=id role=writes scope=said/signing-key-refused value=lock
134
182
  bound-lock/1 about="The keychain keeps a root for a place named {name} already: name this one otherwise." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/place-taken value=lock
135
183
  bound-lock/1 about="The lines that admit a key of this device in a place: its public key, its class, what it may sign and how deep. The key is made once in the keychain and never shown." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/key value=who
136
- bound-lock/1 about="The lines the other device-s key tool answered, or the line holding its public key." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/admit/key value=string
137
- bound-lock/1 about="The link names {sources}, as standing {digest} published at {source}: inspected, not authenticated, and nothing was connected or granted. To receive it, connect the package its sharer sent you by the digest they told you apart." at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/inspected value=lock
184
+ bound-lock/1 about="The lines the other device's key tool answered, or the line holding its public key." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/admit/key value=string
185
+ bound-lock/1 about="The link names {sources}, as {digest} published at {source}: inspected, not authenticated, and nothing was connected or granted. To receive it, connect the package its sharer sent you by the digest they told you apart." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/inspected value=lock
138
186
  bound-lock/1 about="The media type to ask the document as, where its address answers several; optional." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=tool/connect/accept value=string
139
187
  bound-lock/1 about="The name it is known by." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/place/name value=string
140
- bound-lock/1 about="The name it is known by; without one, the folder-s." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/place/name value=string
141
- bound-lock/1 about="The name of a view the place signs; lines, for the lines that stand." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/ask/view value=string
188
+ bound-lock/1 about="The name it is known by; without one, the folder's." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/place/name value=string
189
+ bound-lock/1 about="The name of a view the place signs; lines, for the lines that stand; claims, for what was stated there, by whom, and who else stated it." at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=tool/ask/view value=string
142
190
  bound-lock/1 about="The name of a view the place signs; without one, the lines that stand." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/look/view value=string
143
191
  bound-lock/1 about="The name the place knows that device by." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/admit/name value=string
144
192
  bound-lock/1 about="The name the source is known by in the place; none for a package, whose lock names its sources." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=tool/connect/source value=string
145
193
  bound-lock/1 about="The name the source is known by." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/connect/source value=string
146
194
  bound-lock/1 about="The operation asked before the source was connected, by the id the source offers it under: asked again once it is; optional." at=policy:head/birth/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/connect/operation value=string
147
- bound-lock/1 about="The operation, by its name or in the person-s words: head finds it among what the source offers, the person choosing where more than one fits." at=policy:head/verbs/0.1.6 by=target form=alphabet measure=id role=writes scope=tool/look/operation value=string
148
- bound-lock/1 about="The operation, by its name or in the person-s words: head finds it among what the source offers, the person choosing where more than one fits; read once, when it is of the class head reads." at=policy:head/verbs/0.1.6 by=target form=alphabet measure=id role=writes scope=tool/ask/operation value=string
195
+ bound-lock/1 about="The operation, by its name or in the person's words: head finds it among what the source offers, the person choosing where more than one fits." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/look/operation value=string
196
+ bound-lock/1 about="The operation, by its name or in the person's words: head finds it among what the source offers, the person choosing where more than one fits; read once, when it is of the class head reads." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/ask/operation value=string
149
197
  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/ask/operation value=string
150
198
  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
151
199
  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
152
200
  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
153
- bound-lock/1 about="The package-s lock: an absolute file, or an encrypted address." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=prompt/receive/package value=string
201
+ 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
154
202
  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
155
203
  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
156
204
  bound-lock/1 about="The parameters of the operation, by name." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/look/args value=object
@@ -159,43 +207,52 @@ bound-lock/1 about="The person did not finish entering what {source} asks for, o
159
207
  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
160
208
  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
161
209
  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
+ 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
+ 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
162
212
  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
163
- 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/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/ask/why value=boolean
213
+ 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
164
214
  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
165
215
  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
166
- bound-lock/1 about="The response from {source} ran past read/response-bytes: it was refused whole and nothing landed. A wider read/response-bytes the place-s root signs pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/too-large value=lock
216
+ bound-lock/1 about="The response from {source} ran past read/response-bytes: it was refused whole and nothing landed. A wider read/response-bytes the place's root signs pays it." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/too-large value=lock
167
217
  bound-lock/1 about="The source, as the place names it." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/ask/source value=string
168
218
  bound-lock/1 about="The source, as the place names it." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/can/source value=string
169
219
  bound-lock/1 about="The source, as the place names it." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/readonly/source value=string
170
220
  bound-lock/1 about="The source, as the place names it." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/why/source value=string
171
221
  bound-lock/1 about="The source." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/access/source value=string
222
+ bound-lock/1 about="The standard TypeScript output of test/scheduled.ts, used by the native source reader; reader identity commits its executable bytes." at=policy:head/scheduled-native/0.1.7 by=target form=alphabet measure=id role=writes scope=dep/runtime-surface-scheduled shape=dist/test/scheduled.js value=sha256:88e3859c85eee1b094962efd6f068d0cb5da8658a963afef290a783c318fd402
172
223
  bound-lock/1 about="The way {source} proves access asks its host for {input}, which head does not hand any flow: nothing was called. An overlay whose flow asks the person for it instead pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/host-input value=lock
173
224
  bound-lock/1 about="The world compiled nothing {source} offers: nothing was pinned. A document that offers at least one operation pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/nothing-offered value=lock
225
+ bound-lock/1 about="The {origin} stated, carried by {carrier}: {said}. Nobody backed it." at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/claim-alone value=lock
226
+ bound-lock/1 about="The {origin} stated, carried by {carrier}: {said}. The {backers} backed it." at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/claim-backed value=lock
227
+ bound-lock/1 about="There are no selected public place settings to share." at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-empty value=lock
174
228
  bound-lock/1 about="This client cannot ask you: sign these lines yourself in {place} with your key, then land them." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/sign-yourself value=lock
175
229
  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
176
230
  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
177
- bound-lock/1 about="This device-s person key already attests {scope} in {place}, or the place states it itself: a second line of it is read only through a fold of this key-s lines, which bound does not publish. Nothing was signed; the place-s root can sign it." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/attested-again value=lock
231
+ 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
178
232
  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
179
233
  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
+ 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
+ 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
+ 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
180
237
  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/share-inspect/0.2.0 by=target form=alphabet kind=process measure=reader needs=src/|test/|samples/share-inspect/yes/ role=writes scope=reader/share-inspect shape=run value=dist/test/share-inspect.js
181
239
  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
182
240
  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=
183
241
  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=
184
242
  bound-lock/1 about="What has head read and done in my place? List each read and each act, newest first, with when it happened." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/what-happened/text value=lock
185
- bound-lock/1 about="What is done: place founds one, admit lets another device in, land lands a lot ask planned, share packs a place, key makes this device-s key, access proves access to a source, act calls an offer that is not a read, claim keeps what the person states as theirs, in their words, or takes it back." at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=tool/do/action value=string
186
- bound-lock/1 about="What is open for a key: each cell no reading has answered, its ceiling, its origins and the states it may take, in the order bound ranks them." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/card value=place|key
243
+ bound-lock/1 about="What is done: place founds one, admit lets another device in, land lands a lot ask planned, share packs a place, key makes this device's key, access proves access to a source, act calls an offer that is not a read, claim keeps what the person states as theirs, in their words, or takes it back." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/do/action value=string
187
244
  bound-lock/1 about="What is open in the place, and the card do needs to act there." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/ask/card value=boolean
188
245
  bound-lock/1 about="What it may sign there, as scopes joined by |; without it, what a member may." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/admit/coverage value=string
189
246
  bound-lock/1 about="What next: the next step my place names." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/what-next value=
190
247
  bound-lock/1 about="What should I do next in head? Read my place and tell me the next step it names, and why." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/what-next/text value=lock
191
- bound-lock/1 about="What the fold typed of that answer is no longer held here; the receipt stands as evidence of the read." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/history-gone value=lock
192
248
  bound-lock/1 about="What the person stated, in their words, as they said it." at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=tool/claim/said value=string
193
- bound-lock/1 about="What this device has connected: every place head-s index names, the sources each pinned, the grants that stand today and the last read it kept a receipt of — read off each place-s lines as bound folds them. Nothing is asked, called or signed." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=tool/places value=place
249
+ bound-lock/1 about="What this device has connected: every place head's index names, the sources each pinned, the grants that stand today and the last read it kept a receipt of — read off each place's lines as bound folds them. Nothing is asked, called or signed." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/places value=place
194
250
  bound-lock/1 about="What was kept of {operation} on {source} at {at} is older than the place allows reusing, so it was read again." at=policy:head/kept/0.1.5 by=target form=alphabet measure=id role=writes scope=said/kept-expired value=lock
251
+ bound-lock/1 about="What was typed of that answer is no longer held here; the receipt stands as evidence of the read." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/history-gone value=lock
195
252
  bound-lock/1 about="What you state in this conversation will be kept as yours in {place}, signed, until you close it. Keep what you state as yours?" at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/elicit-claims value=lock
196
253
  bound-lock/1 about="What {source} carries for this offer is not one request: nothing was called. An overlay that makes it one pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/carry-unsettled value=lock
197
254
  bound-lock/1 about="What {source} would have the person enter would go to another origin than {source} itself: refused, nothing was sent and nothing was called. An overlay whose steps stay on {source}-s own origin pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/cross-origin value=lock
198
- bound-lock/1 about="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/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=tool/share/urls value=string
255
+ bound-lock/1 about="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/share/urls value=string
199
256
  bound-lock/1 about="Who receives it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=prompt/share/who value=string
200
257
  bound-lock/1 about="Who shared it is not shown: the link is not authenticated." at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/sharer-unverified value=lock
201
258
  bound-lock/1 about="Why an answer stands: who said it, when, and what it rests on." at=policy:head/surface/0.1.4 by=target form=alphabet measure=id role=writes scope=prompt/why value=source|operation
@@ -203,11 +260,14 @@ bound-lock/1 about="Why does the newest answer of {operation} from {source} stan
203
260
  bound-lock/1 about="Why head" at=policy:head/docs by=target form=alphabet measure=text role=writes scope=prose/en/idea/heading value=lock
204
261
  bound-lock/1 about="With an operation and its parameters: what was retained of that read, as of when it was made, instead of a current answer. Nothing is called; the place must allow it." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/look/history value=boolean
205
262
  bound-lock/1 about="With an operation and its parameters: what was retained of that read, as of when it was made, instead of a current answer. Nothing is called; the place must allow it." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/ask/history value=boolean
206
- bound-lock/1 about="With an operation and its parameters: why its newest answer stands — who said it and when, its receipt digest, and the pins it rests on, read off the place-s evidence and lines. Nothing is called." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=tool/look/why value=boolean
263
+ bound-lock/1 about="With an operation and its parameters: why its newest answer stands — who said it and when, its receipt digest, and the pins it rests on, read off the place's evidence and lines. Nothing is called." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/look/why value=boolean
264
+ bound-lock/1 about="With card true, observe the exact configuration intent named by tool/card/preflight; it grants no API action." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=tool/ask/preflight value=string
207
265
  bound-lock/1 about="With card: the key whose cells are asked; without one, every open cell." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/ask/key value=string
208
266
  bound-lock/1 about="You would have {operation} on {source} called, {call}, if you admit it for this call alone, your yes signed for it and nothing else. Yes?" at=policy:head/surface/0.1.6-suggest by=target form=alphabet measure=id role=writes scope=said/elicit-act value=lock
209
267
  bound-lock/1 about="You would have {sources} read in {place} until {until} if you admit it: no read asks again before then, writes still do. Yes?" at=policy:head/surface/0.1.6-suggest by=target form=alphabet measure=id role=writes scope=said/grant value=lock
210
- bound-lock/1 about="a client that asks, or head-s page opened" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/cannot-ask/next value=none
268
+ bound-lock/1 about="a POST to a verb, its args one JSON object" at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-unasked/next value=none
269
+ bound-lock/1 about="a ceiling whose window head reads, signed by the root" at=policy:head/calls/0.1.7 by=target form=alphabet measure=id role=writes scope=said/calls-unwindowed/next value=none
270
+ bound-lock/1 about="a client that asks, or head's page opened" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/cannot-ask/next value=none
211
271
  bound-lock/1 about="a count of the readings made ahead of a question apart from those a question made, so a read ahead never spends what a question needs; until then head marks its reads ahead itself" at=policy:head/ahead/0.1.5 by=target form=alphabet measure=id role=demands scope=bound/probes value=probes@1
212
272
  bound-lock/1 about="a device key attests; it never admits another key" at=policy:head/device by=target form=alphabet measure=id role=writes scope=device/head/class value=attest
213
273
  bound-lock/1 about="a device key attests; it never admits another key" at=policy:head/device by=target form=alphabet measure=id role=writes scope=device/person/class value=attest
@@ -215,13 +275,11 @@ bound-lock/1 about="a document compiled once into a standing a place pins from i
215
275
  bound-lock/1 about="a document of a profile a world reads" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/document-unsupported/next value=none
216
276
  bound-lock/1 about="a document that offers an operation" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/nothing-offered/next value=none
217
277
  bound-lock/1 about="a document the person names" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/use-none/next value=none
218
- bound-lock/1 about="a folder apart from the place-s own" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/share-to/next value=none
278
+ bound-lock/1 about="a folder apart from the place's own" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/share-to/next value=none
219
279
  bound-lock/1 about="a form read at its own resolution: none is given, and the form answers at the one it reads by default" at=policy:head/surface/0.1.6-answered by=target form=alphabet measure=id role=writes scope=resolution/own value=own
220
280
  bound-lock/1 about="a host head runs on" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/platform/next value=none
221
281
  bound-lock/1 about="a keychain head reaches" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-keychain/next value=none
222
282
  bound-lock/1 about="a link whose location is optional, as the plan of topos names it: until then share prints no link without an address, and the digest goes apart" at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=demands scope=bound/reference-location value=reference-location@1
223
- bound-lock/1 about="a lot of drafted lines, one a line, by=target and unsigned" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/bad-lot/next value=none
224
- bound-lock/1 about="a lot planned first" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-lot/next value=none
225
283
  bound-lock/1 about="a package as it is shared" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/package-line/next value=none
226
284
  bound-lock/1 about="a package shared from a head at this release" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/package-pin/next value=none
227
285
  bound-lock/1 about="a package shared from a head that pins the same world" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/package-world/next value=none
@@ -229,6 +287,8 @@ bound-lock/1 about="a page of head: connecting a public API at each level of acc
229
287
  bound-lock/1 about="a place is born admitting content to be read by its digest, one request at a time" at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=birth/wire/transport value=content-request/1
230
288
  bound-lock/1 about="a place is born closing its receipts: the readings its views open are rendered into receipts.bound beside its lock — observations at 8, so a copy without the private store verifies them — and a fold by bound alone checks them" at=policy:head/birth/0.1.2 by=target form=alphabet measure=id role=demands scope=birth/view/receipts shape=receipts.bound value=receipts@8|receipts@0|receipts@1
231
289
  bound-lock/1 about="a place is born letting a kept answer stand in for its source as long as a read grant lasts — 90 days, as access/period — so the same question twice calls nothing the second time; a line of the person-s for a source narrows or widens it" at=policy:head/birth/0.1.1g by=target form=interval measure=seconds role=writes scope=birth/allow/reuse value=0..7776000
290
+ bound-lock/1 about="a plan made first" at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/no-lot/next value=none
291
+ bound-lock/1 about="a port alone, or nothing" at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-bind/next value=none
232
292
  bound-lock/1 about="a question answered before is answered from what was kept, in no whole second: nothing is called and nothing folded" at=policy:head/ceilings by=target form=interval measure=seconds role=reads scope=answer/kept value=0..0
233
293
  bound-lock/1 about="a question the person answers" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/answer/next value=none
234
294
  bound-lock/1 about="a question the person answers" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit-act/next value=none
@@ -250,8 +310,10 @@ bound-lock/1 about="a question the person answers" at=policy:head/shape/0.1.2 by
250
310
  bound-lock/1 about="a question the person answers" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/visit/next value=none
251
311
  bound-lock/1 about="a question the person answers" at=policy:head/shape/0.1.6 by=target form=alphabet measure=id role=writes scope=said/pick-offer/next value=none
252
312
  bound-lock/1 about="a release category that admits the lines a release pins by (dep/* package digests, uses/* pins, sources/* tarballs) as what the release checks. On 0.2.5, release/category/pins pointed at uses/**|dep/**|sources/** resolves no pin: uses/** and dep/** name no obligation, and sources/** selects only sources/lines, a code ceiling. Until bound pays it, the category stands as it is and the pins are read in the lock" at=policy:head/release/pins/0.1.5 by=target form=alphabet measure=id role=demands scope=bound/release-pins value=release-pins@1
313
+ bound-lock/1 about="a request from a program, with no Origin" at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-origin/next value=none
314
+ bound-lock/1 about="a request to this device, by its own address" at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-host/next value=none
253
315
  bound-lock/1 about="a signer over an encrypted file, for hosts with no keychain: only where a place declares it and every line it signs is marked so; never a default" at=policy:head/platform by=target form=alphabet measure=id role=demands scope=signer/encrypted-file value=declared|marked
254
- bound-lock/1 about="a source reached at the document-s origin" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/fetch-cross-origin/next value=none
316
+ bound-lock/1 about="a source reached at the document's origin" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/fetch-cross-origin/next value=none
255
317
  bound-lock/1 about="a source-s own mark, and the mark of one that is the same source in another form or shares a declared lineage" at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=marks/mark value=●|○
256
318
  bound-lock/1 about="a text file with the person-s lines, in their own words, beside the place-s lock: each line head lands at the person-s at, drafted with no signature and gone with its withdraw. Bound reads it as it reads the place, so head writes it with the land, never while a fold runs. Read with cat, shared as it is; it grows with use" at=policy:head/founding/0.1.6/land by=target form=alphabet measure=id role=writes scope=founding/birth-file value=birth.bound
257
319
  bound-lock/1 about="a view explained: the lines it stands on with the readings of their ceilings; read for a person, a view is read with no resolution, at its own" at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=resolution/view/why value=1
@@ -265,13 +327,14 @@ bound-lock/1 about="access the document accepts" at=policy:head/shape/0.1.2 by=t
265
327
  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
266
328
  bound-lock/1 about="access/<source>/authorizer, receipts head-s key signs: the oauth2 authorization-code flow a resource-s refusal named — its protected resource metadata (RFC 9728), its authorization server-s (RFC 8414) — filled as a document would have declared it, a client registered (RFC 7591) only where the server offers it" at=policy:head/access/0.1.1g by=target form=alphabet measure=id role=writes scope=access/authorizer value=authorizer
267
329
  bound-lock/1 about="act changes the world outside the place" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/act/hints value=destructive|openWorld
268
- bound-lock/1 about="already attested" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/attested-again/next value=none
330
+ bound-lock/1 about="agent, when this is what you yourself state, as an agent; without it, what the person stated" at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=tool/claim/origin value=string
269
331
  bound-lock/1 about="already in use" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/use-held/next value=none
332
+ bound-lock/1 about="already stated" at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/attested-again/next value=none
270
333
  bound-lock/1 about="an absolute folder" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/place-absolute/next value=none
271
334
  bound-lock/1 about="an act of the place, by its identity, as bound committed it" at=policy:head/birth by=target form=alphabet measure=id role=demands scope=birth/view/act value=act
272
335
  bound-lock/1 about="an https address, or a file the client shares" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/document-unread/next value=none
273
336
  bound-lock/1 about="an origin reached the way head carries" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-transport/next value=none
274
- bound-lock/1 about="an overlay that keeps the person-s entry at its origin" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/cross-origin/next value=none
337
+ bound-lock/1 about="an overlay that keeps the person's entry at its origin" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/cross-origin/next value=none
275
338
  bound-lock/1 about="an overlay that makes it one request" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/carry-unsettled/next value=none
276
339
  bound-lock/1 about="an overlay that says how the token rides" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-adapter/next value=none
277
340
  bound-lock/1 about="an overlay that settles it" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/split-offer/next value=none
@@ -288,42 +351,47 @@ bound-lock/1 about="asked again, key answers the same lines; the first ask makes
288
351
  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
289
352
  bound-lock/1 about="bound did not settle the place {source} compiles to: {why} Nothing was called. What bound names there pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/unsettled value=lock
290
353
  bound-lock/1 about="bound installed beside head" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unreachable/next value=none
291
- bound-lock/1 about="bound is not installed beside head: nothing was folded." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/unreachable value=lock
292
- bound-lock/1 about="bound refused to fold {place}: {why} Nothing was signed and nothing landed. What bound names there pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/unfolded value=lock
354
+ bound-lock/1 about="bound is not installed beside head: nothing was read." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/unreachable value=lock
355
+ bound-lock/1 about="bound refused to read {place}: {why} Nothing was signed and nothing landed. What bound names there pays it." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/unfolded value=lock
356
+ bound-lock/1 about="bound's machinery a person never reads: counted in what a person reads, placeholders filled first, and its count is 0" at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=person-words/forbidden value=ledger|epoch|capsule|standing|wire|topos|attest|sha256|coverage|lot|scope|region|resolution|fold|measure
293
357
  bound-lock/1 about="bound-lock/1 at=policy:person/allows by=target form=interval measure=calls role=writes scope=allow/{source} value=0..0" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/readonly/line value=lock
294
358
  bound-lock/1 about="bound-lock/1 at=policy:person/allows by=target form=interval measure=calls role=writes scope=allow/{source}/{operation} value=0..{times}" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/can/line value=lock
295
359
  bound-lock/1 about="bound-lock/1 at=policy:person/asks by=target form=alphabet measure=status role=writes scope=ask/{source}/{operation} value=present" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/ask/line value=lock
296
360
  bound-lock/1 about="bound-s words a person sees in the first minute: no resolution number, no refusal of bound-s" at=policy:head/ceilings/0.1.4 by=target form=interval measure=count role=writes scope=person-words value=0..0
297
361
  bound-lock/1 about="card reads and never writes" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/card/hints value=readOnly|idempotent
298
362
  bound-lock/1 about="card, as a person reads it: at its own resolution" at=policy:head/surface/0.1.6-answered by=target form=alphabet measure=id role=writes scope=resolution/card/person value=own
299
- bound-lock/1 about="composing policies is bound-s" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/parent-lock/next value=none
363
+ bound-lock/1 about="composing policies is bound's" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/parent-lock/next value=none
300
364
  bound-lock/1 about="connecting a public API at each level of access, every example run against the real API" at=policy:head/docs/0.1.4 by=target form=alphabet measure=id needs=docs/connect-any-api.md role=demands scope=view/docs-connect-any-api shape=docs/connect-any-api.md value=text
301
365
  bound-lock/1 about="connecting a public API at each level of access, every example run against the real API" at=policy:head/docs/0.1.4 by=target form=alphabet measure=text role=writes scope=region/docs-connect-any-api value=lock
302
366
  bound-lock/1 about="connecting a source, from the ask to the pin, takes at most this; slower reads red with its coordinate" at=policy:head/ceilings by=target form=interval measure=seconds role=reads scope=connect/seconds value=0..10
303
367
  bound-lock/1 about="counted in whole seconds, the part of a second dropped" at=policy:head/numbers/0.1.5 by=target form=alphabet measure=id role=writes scope=numbers/seconds/params value=whole-seconds
304
368
  bound-lock/1 about="do changes the place, and with act the world outside it" at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=tool/do/hints value=destructive|openWorld
305
369
  bound-lock/1 about="do knows no action {action}: it does one of {actions}." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=said/unknown-action value=lock
370
+ bound-lock/1 about="drafted lines, one a line, by=target and unsigned" at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/bad-lot/next value=none
306
371
  bound-lock/1 about="every file between head and what it does not own — each adapter of access or transport, each port, the protocol binding — measured alone" at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/ports value=src/ports/**|src/index.ts|src/signer.ts
307
372
  bound-lock/1 about="every lot landed in a place head founds is one act, and land prints its result: the records it admitted, in one process" at=policy:head/birth by=target form=alphabet measure=id role=writes scope=birth/wire/act-result value=local-act@1
308
373
  bound-lock/1 about="every place head founds can be walked by bound: compared with a peer-s authenticated inventory, the regions that differ exchanged, the history converged by union" at=policy:head/walk by=target form=alphabet measure=id role=writes scope=birth/wire/walk/contract value=whole-region@1
309
374
  bound-lock/1 about="every reader of a place head founds is a bounded process: it answers within this, or is stopped and its reading refused" at=policy:head/birth by=target form=interval measure=milliseconds role=writes scope=birth/reader/timeout value=0..60000
310
375
  bound-lock/1 about="every reader of a place head founds is handed everything connected, and the fold decides which reads what: one that reads a document and finds nothing of its own answers empty, completed; a document no world reads is open by name" at=policy:head/birth by=target form=alphabet measure=id role=writes scope=birth/reader/empty value=allow
311
376
  bound-lock/1 about="every tool and resource line has its module, and every module its line" at=policy:head/ceilings by=target form=interval measure=count role=reads scope=surface/unmatched value=0..0
312
- bound-lock/1 about="head answers calls and nothing else: no timer, no worker, no resident process" at=policy:head/ceilings by=target form=interval measure=count role=reads scope=surface/scheduled value=0..0
313
- bound-lock/1 about="head answers inside an MCP client, which starts it with head run. There you connect an API, ask it, do what it offers and share your place. Your own lines are birth.bound beside your place-s lock: a plain text file you can copy." at=policy:head/cli/0.1.6 by=target form=alphabet measure=id role=writes scope=cli/help value=lock
377
+ bound-lock/1 about="head answers inside an MCP client, which starts it with head run. There you connect an API, ask it, do what it offers and share your place. Your own lines are birth.bound beside your place's lock: a plain text file you can copy." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=cli/help value=lock
378
+ bound-lock/1 about="head answers no page: a request carrying an Origin ({origin}) came through a browser, and this door answers only programs on this device. Nothing was asked or called." at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-origin value=lock
314
379
  bound-lock/1 about="head asks to admit the device {name} into {place}, covering {coverage}: it may sign only that there. Say yes only to this." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/elicit-admit value=lock
315
- bound-lock/1 about="head asks to connect to {place} every source the package {package} names whose bytes arrived, in its order: {sources}. Each is compiled here and held to the package-s pin; nothing the sharing place was granted comes with it. Waiting for their bytes, connected when they arrive: {open}. Say yes only to this." at=policy:head/surface/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit-receive value=lock
380
+ bound-lock/1 about="head asks to connect to {place} every source the package {package} names whose bytes arrived, in its order: {sources}. Each is compiled here and held to the package's pin; nothing the sharing place was granted comes with it. Waiting for their bytes, connected when they arrive: {open}. Say yes only to this." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/elicit-receive value=lock
316
381
  bound-lock/1 about="head asks to connect {source} to {place} from {document} {overlay}: compiled once and pinned; nothing is called. Say yes only to this." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/elicit-connect value=lock
317
382
  bound-lock/1 about="head asks to found the place {name} in {dir}: a root key made in your keychain, reads bounded, nothing it may write. Say yes only to this." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/elicit-place value=lock
318
- bound-lock/1 about="head asks to found your place at {dir} — a root key made in your keychain, reads bounded, nothing it may write — to connect {source} to it from {document}, compiled once and pinned, to prove access to it where its document declares how, on head-s page or at its provider, and to let head read {source} until {until}: no read of it asks again before then, and anything that is not a read still does. Say yes only to all of it; a place elsewhere, named as you like, can be founded instead." at=policy:head/access/0.1.4 by=target form=alphabet measure=id role=writes scope=said/elicit-first-run value=lock
383
+ bound-lock/1 about="head asks to found your place at {dir} — a root key made in your keychain, reads bounded, nothing it may write — to connect {source} to it from {document}, compiled once and pinned, to prove access to it where its document declares how, on head's page or at its provider, and to let head read {source} until {until}: no read of it asks again before then, and anything that is not a read still does. Say yes only to all of it; a place elsewhere, named as you like, can be founded instead." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/elicit-first-run value=lock
319
384
  bound-lock/1 about="head asks to use {origin}: a place of its own at {dir}, read-only — nothing that is not a read is ever called there — its document found where {origin} publishes it and compiled, and reads granted until {until}. Say yes only to this." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/elicit-use value=lock
320
385
  bound-lock/1 about="head asks you to sign {count} lines for {place}, made against base {base}:\n{lines}\nSay yes only to exactly these." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/elicit value=lock
321
386
  bound-lock/1 about="head carries no transport for {origin}: nothing was called. An origin reached the way head carries — encrypted, or on this device — pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/no-transport value=lock
322
- bound-lock/1 about="head could not reach the person: this client asks no form and sends no address, and this device-s browser did not open head-s page. Nothing was called. A client that asks forms or sends addresses, or a browser this device can open, would." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=said/cannot-ask value=lock
323
- bound-lock/1 about="head is a host: it answers a protocol and names no verb of its own" at=policy:head/ceilings by=target form=interval measure=cli-verbs role=reads scope=cli/verbs value=0..0
324
- bound-lock/1 about="head keeps no planned lot {lot}." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-lot value=lock
387
+ bound-lock/1 about="head could not reach the person: this client asks no form and sends no address, and this device's browser did not open head's page. Nothing was called. A client that asks forms or sends addresses, or a browser this device can open, would." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/cannot-ask value=lock
388
+ bound-lock/1 about="head has its place already: a connect with no place founds only the first one, so nothing was founded or called." at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=said/door-founded value=lock
389
+ bound-lock/1 about="head keeps no plan {lot}." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/no-lot value=lock
325
390
  bound-lock/1 about="head names no client anywhere, adapters included: what it asks through is what the client declares, read by its capabilities" at=policy:head/ceilings by=target form=interval measure=count role=reads scope=surface/client-words value=0..0
326
391
  bound-lock/1 about="head names no kind of source outside its transport adapters: those words live in worlds" at=policy:head/ceilings by=target form=interval measure=count role=reads scope=surface/kind-words value=0..0
392
+ bound-lock/1 about="head opens its door only on {loopback}, never on {asked}: nothing was opened." at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-bind value=lock
393
+ bound-lock/1 about="head read no request in that line: a request is one JSON object a line, naming one of {verbs} and its args. Nothing was asked or called." at=policy:head/doors/0.1.7-lines by=target form=alphabet measure=id role=writes scope=said/door-unread value=lock
394
+ bound-lock/1 about="head read no request there: a request is a POST to one of {verbs}, its args one JSON object. Nothing was asked or called." at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-unasked value=lock
327
395
  bound-lock/1 about="head runs on {supported}; this host is {platform}: nothing was done. Its secret store and browser opener are none head carries. A host head runs on pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/platform value=lock
328
396
  bound-lock/1 about="head, for the key that signs what head read and did; person, for the key that signs what the person allows. Without one, head." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/key/who value=string
329
397
  bound-lock/1 about="head-s own key: it attests what it read, what the fold typed of it and was kept, what it did and the access it obtained, and nothing else" at=policy:head/device by=target form=alphabet measure=id role=writes scope=device/head/account value=head
@@ -338,22 +406,30 @@ bound-lock/1 about="how access is obtained and what an adapter is handed: split
338
406
  bound-lock/1 about="how an input is asked, richest first, the first the client declares taken: the client-s own form; head-s one-time page, sent by the client as an address; the same page opened by this device-s browser" at=policy:head/ask by=target form=alphabet measure=id role=writes scope=ask/channels value=form|url|device
339
407
  bound-lock/1 about="how deep its scopes go: <family>/<source>/<operation>, an operation id holding its own steps" at=policy:head/device by=target form=interval measure=id role=writes scope=device/head/resolution value=1..8
340
408
  bound-lock/1 about="how deep its scopes go: <family>/<source>/<operation>, an operation id holding its own steps" at=policy:head/device by=target form=interval measure=id role=writes scope=device/person/resolution value=1..8
341
- bound-lock/1 about="how many bound processes head keeps started ahead while it answers a call: each has loaded what it runs before it is asked, is asked once, and none outlives the call it was started for" at=policy:head/warm by=target form=interval measure=count role=writes scope=bound/spares value=1..1
409
+ bound-lock/1 about="how long a place's fold host stays idle before it is closed, its process and its scratch gone: the one timer head keeps" at=policy:head/host/0.1.7 by=target form=interval measure=seconds role=writes scope=bound/host/idle value=60..60
410
+ bound-lock/1 about="how many reads of one place may wait on its fold host at once; one call's reads of a place are at most a few, its turn and its reads ahead" at=policy:head/host/0.1.7 by=target form=interval measure=count role=writes scope=bound/host/queued value=8..8
411
+ bound-lock/1 about="how many refusals the http door writes in one place each window, a request once a window with its count; past it the refusals still refuse, and one line says when the ceiling was reached" at=policy:head/doors/0.1.7-refusals by=target form=interval measure=refusals/R/2026-01-01T00:00:00Z/P1D role=writes scope=read/refusals/http value=0..20
412
+ bound-lock/1 about="how many refusals the lines door writes in one place each window, a request once a window with its count; past it the refusals still refuse, and one line says when the ceiling was reached" at=policy:head/doors/0.1.7-refusals by=target form=interval measure=refusals/R/2026-01-01T00:00:00Z/P1D role=writes scope=read/refusals/lines value=0..20
413
+ bound-lock/1 about="how many refusals the mcp door writes in one place each window, a request once a window with its count; past it the refusals still refuse, and one line says when the ceiling was reached" at=policy:head/docs/0.1.7-signing-key by=target form=interval measure=refusals/R/2026-01-01T00:00:00Z/P1D role=writes scope=read/refusals/mcp value=0..20
342
414
  bound-lock/1 about="how many tools may configure a place: what asks never configures, and what configures is counted" at=policy:head/ceilings by=target form=interval measure=count role=reads scope=tools/config value=0..4
343
- bound-lock/1 about="how to contribute, from this lock" at=policy:head/docs by=target form=alphabet measure=id role=demands scope=view/guide shape=CONTRIBUTING.md value=guide-at-zero
415
+ 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=id needs=SECURITY.md role=demands scope=view/security shape=SECURITY.md value=text
416
+ 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
344
417
  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
345
418
  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
346
- 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.5\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/bundle-exclusions/0.1.6 by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/release shape=.github/workflows/release.yml value=lock
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/configuration-preflight/0.2.0 by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/test shape=.github/workflows/test.yml value=lock
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/configuration-preflight/0.2.0 by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/measure shape=.github/workflows/measure.yml value=lock
421
+ 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
347
422
  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
348
423
  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
349
- bound-lock/1 about="name: test\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 node: [22, 24]\n shard: [1, 2, 3, 4, 5, 6]\n runs-on: ubuntu-latest\n env:\n SHARD_1: test/marks.test.ts test/named.test.ts test/answered.test.ts\n SHARD_2: test/ahead-read.test.ts test/gestures.test.ts test/claims.test.ts test/verbs.test.ts test/share-receive.test.ts test/world.test.ts test/numbers.test.ts test/session.test.ts\n SHARD_3: test/marks-lineage.test.ts test/authorizer.test.ts test/act.test.ts test/share-refused.test.ts test/consent.test.ts test/shape.test.ts test/adopt.test.ts test/trust.test.ts test/release.test.ts test/device.test.ts test/process.test.ts test/surface.test.ts test/stores.test.ts test/refusal-record.test.ts test/bound.test.ts test/welcome.test.ts test/signer.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/onboarding.test.ts test/bundle.test.ts\n SHARD_4: test/channels.test.ts test/kept-zero-moved.test.ts test/reuse.test.ts test/walk.test.ts test/kept-zero.test.ts test/first-run.test.ts test/fold-ahead.test.ts test/warm.test.ts test/asking.test.ts test/transport.test.ts\n SHARD_5: test/fetch.test.ts test/access.test.ts test/share.test.ts test/link-url.test.ts test/first-minute.test.ts test/places.test.ts test/born-closed.test.ts test/reading-identity.test.ts\n SHARD_6: test/org.test.ts test/connect.test.ts test/issuer.test.ts test/observed.test.ts test/read.test.ts test/use.test.ts test/place-neutral.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 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 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: 24\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/bundle-exclusions/0.1.6 by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/test shape=.github/workflows/test.yml value=lock
350
424
  bound-lock/1 about="no answer of head carries a secret: only public halves and lines leave" at=policy:head/ceilings by=target form=interval measure=count role=reads scope=surface/secrets-out value=0..0
351
425
  bound-lock/1 about="no world typed the answer" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/untyped/next value=none
352
426
  bound-lock/1 about="nothing arrived yet" at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/link-owed/next value=none
353
427
  bound-lock/1 about="nothing is measured to answer it yet" at=policy:head/numbers/0.1.5 by=target form=alphabet measure=id role=writes scope=said/unmeasured/next value=none
354
428
  bound-lock/1 about="nothing more is declared to explain it" at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=said/why-undeclared/next value=none
355
429
  bound-lock/1 about="nothing stands open" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/nothing-open/next value=none
430
+ bound-lock/1 about="nothing: a door never reads a signing key" at=policy:head/docs/0.1.7-signing-key by=target form=alphabet measure=id role=writes scope=said/signing-key-refused/next value=none
356
431
  bound-lock/1 about="of what the questions leave of a place-s rate, the most its reads ahead may spend: a read ahead never takes what the question it reads for needs" at=policy:head/ahead/0.1.5 by=target form=interval measure=percent role=writes scope=ahead/share value=0..50
432
+ bound-lock/1 about="one JSON object a line, with a verb and its args" at=policy:head/doors/0.1.7-lines by=target form=alphabet measure=id role=writes scope=said/door-unread/next value=none
357
433
  bound-lock/1 about="one document a source" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/document-collision/next value=none
358
434
  bound-lock/1 about="one of the actions do names" at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=said/unknown-action/next value=none
359
435
  bound-lock/1 about="open: no world reads {kind}. {document} was laid and taken back; nothing was connected. The line that pays it:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-world value=lock
@@ -363,32 +439,35 @@ bound-lock/1 about="places/<name> value=<folder>, signed by the index-s root: wh
363
439
  bound-lock/1 about="plan again" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/base-moved/next value=none
364
440
  bound-lock/1 about="plan, as a person reads it: at its own resolution" at=policy:head/surface/0.1.6-answered by=target form=alphabet measure=id role=writes scope=resolution/plan/person value=own
365
441
  bound-lock/1 about="questions the person answers before it: the place, the origin, reads — a new person and head 0.1.3 as published (the .mcpb of its release), Open-Meteo-s real document and API, on a client with forms and on one with none; harness baseline-013.mts" at=witness:baseline-013-open-meteo by=target form=interval measure=count role=writes scope=baseline/onboarding/questions value=3..3
366
- bound-lock/1 about="read/rate is spent for {source} this hour: nothing was called. The next hour pays it, or a wider read/rate the place-s root signs." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/rate value=lock
442
+ bound-lock/1 about="read/rate is spent for {source} this hour: nothing was called. The next hour pays it, or a wider read/rate the place's root signs." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/rate value=lock
443
+ bound-lock/1 about="record-coverage for drafts or admission for signed Root configuration records. Other intents are not in the native card; default record-coverage." at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=tool/card/preflight value=string
367
444
  bound-lock/1 about="red: {coordinate} took {seconds} s, over {scope} {ceiling}." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/red value=lock
368
445
  bound-lock/1 about="steps to the first real answer: install, connect, ask — a new person and head 0.1.3 as published (the .mcpb of its release), Open-Meteo-s real document and API, on a client with forms and on one with none; harness baseline-013.mts" at=witness:baseline-013-open-meteo by=target form=interval measure=count role=writes scope=baseline/onboarding/steps value=3..3
369
446
  bound-lock/1 about="structural numbers shown only where why is asked: a ledger epoch anywhere else is red" at=policy:head/numbers/0.1.5 by=target form=alphabet measure=id role=writes scope=numbers/structural/why value=epoch|pinned
370
- bound-lock/1 about="temporary: head-s own checks said as not in the card, until topos and bound publish the authority-card view that folds what a key may do (demand-authority-card.md)" at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=do/not-in-card/head value=not-covered|not-allowed|secret-unallowed|access-unstated
371
447
  bound-lock/1 about="the APIs head-s own lock names for a person to connect: none; head connects only what a person hands it, by the address of its document" at=policy:head/ceilings/0.1.4 by=target form=interval measure=count role=writes scope=first-minute/connects value=0..0
372
- bound-lock/1 about="the SDK head reads lines through, as published" at=policy:head/pins/topos/0.2.1 by=target form=alphabet measure=digest needs=node_modules/@lapxo/topos role=reads scope=dep/topos shape=package value=sha256:50086958553b9376d600583f7dff354196bfeb41170fc6d1482ca7bea7c493e2
448
+ bound-lock/1 about="the SDK head reads lines through, as published" at=policy:head/pins/topos/0.2.4 by=target form=alphabet measure=digest needs=node_modules/@lapxo/topos role=reads scope=dep/topos shape=package value=sha256:7aca161279d14bc0e054dcc281cd110aeb95be2e026b42fdf527a260e58b2aae
373
449
  bound-lock/1 about="the Secret Service of a Linux session, through libsecret-s secret-tool" at=policy:head/platform by=target form=alphabet measure=id role=writes scope=platform/linux/store value=secret-tool
374
450
  bound-lock/1 about="the Windows Credential Manager, through Windows PowerShell-s password vault" at=policy:head/platform by=target form=alphabet measure=id role=writes scope=platform/win32/store value=credential-manager
451
+ bound-lock/1 about="the action through a door that keeps a statement: there it is always an agent's, named by origin agent, and one that names none is refused" at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=doors/claim value=claim
375
452
  bound-lock/1 about="the actions do carries out, each by the catalogue tool of its name" at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=do/actions value=place|admit|land|share|key|access|act|claim
453
+ bound-lock/1 about="the at of the one line that admits an agent as an origin in a place: head's key covering the family statements are kept under, signed by the place's root" at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=claim/agent/admit value=policy:person/agents
376
454
  bound-lock/1 about="the at that says a line is the person-s: their root, their members, the sources they connect, what they grant and what they use. Their birth file holds the lines of the place said so, and no other" at=policy:head/founding/0.1.6 by=target form=alphabet measure=id role=writes scope=founding/person-at value=policy:person/
377
455
  bound-lock/1 about="the authenticated histories a place received, each with its origin" at=policy:head/walk by=target form=alphabet measure=id role=demands scope=birth/view/evidence value=evidence
378
456
  bound-lock/1 about="the bytes it waits on, then the package connected again" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/received-open/next value=none
379
457
  bound-lock/1 about="the bytes the digest names" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/document-digest/next value=none
380
458
  bound-lock/1 about="the calls a new person gives something to, to the first answer: install aside, a call made from a cell-s next alone is the model-s" at=policy:head/ceilings/0.1.4 by=target form=interval measure=count role=writes scope=onboarding/steps value=0..3
459
+ bound-lock/1 about="the card of the place head has, asked by its name" at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=said/door-founded/next value=none
381
460
  bound-lock/1 about="the carrier a statement names when the client says nothing of itself: head is told the client, never the model" at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=claim/via-unknown value=client
382
461
  bound-lock/1 about="the catalogue tools ask answers by: a view or a source by look, drafted lines by plan, the card by card, anything else by places" at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=ask/questions value=look|places|card|plan
383
462
  bound-lock/1 about="the ceiling it ran past" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/red/next value=none
384
463
  bound-lock/1 about="the ceiling, in the place-s lock and signed by its root, of how many secrets a flow may ask the person on head-s page; without it, none" at=policy:head/access by=target form=alphabet measure=id role=writes scope=access/secrets value=access/secret-inputs
385
- bound-lock/1 about="the check on every push and every proposal: the suite in shards on each node the place names, the timed tests alone, and the Desktop Extension made twice from the archive npm would publish" at=policy:head/forge by=target form=alphabet measure=id needs=.github/workflows/test.yml role=demands scope=view/pipeline-test shape=.github/workflows/test.yml value=text
386
- bound-lock/1 about="the check on every push and every proposal: the suite in shards on each node the place names, the timed tests alone, and the Desktop Extension made twice from the archive npm would publish" at=policy:head/forge by=target form=alphabet measure=text role=writes scope=region/pipeline-test value=lock
464
+ bound-lock/1 about="the check on every push and every proposal, on one platform and one node: the build, the suite in shards with the lines ceilings among it, the committed receipts on a clean checkout, the Desktop Extension made twice from the archive npm would publish, and the tree a tag rests on" at=policy:head/forge/0.1.7-check by=target form=alphabet measure=id needs=.github/workflows/test.yml role=demands scope=view/pipeline-test shape=.github/workflows/test.yml value=text
465
+ bound-lock/1 about="the check on every push and every proposal, on one platform and one node: the build, the suite in shards with the lines ceilings among it, the committed receipts on a clean checkout, the Desktop Extension made twice from the archive npm would publish, and the tree a tag rests on" at=policy:head/forge/0.1.7-check by=target form=alphabet measure=text role=writes scope=region/pipeline-test value=lock
387
466
  bound-lock/1 about="the class a receipt-s at names, followed by when it was read" at=policy:head/receipts by=target form=alphabet measure=id role=writes scope=receipt/at value=receipt
388
467
  bound-lock/1 about="the class of what a link names and the algorithm it names it by" at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=link/reference value=standing|sha256
389
468
  bound-lock/1 about="the command a client starts head with; a person never needs it, since four verbs are theirs: connect, ask, do and share" at=policy:head/cli/0.1.6 by=target form=alphabet measure=id role=writes scope=cli/run value=run
390
469
  bound-lock/1 about="the command that opens this device-s browser at head-s page when the client cannot send the person an address; started directly, never through a shell" at=policy:head/platform by=target form=alphabet measure=id role=writes scope=platform/darwin/browser value=open
391
- bound-lock/1 about="the compiled standing at {file} no longer hashes to the digest the place pins:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/compiled-moved value=lock
470
+ bound-lock/1 about="the compiled source at {file} no longer hashes to the digest the place pins:" at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/compiled-moved value=lock
392
471
  bound-lock/1 about="the coordinates a reader is given when only the view of answers reads its region: what a call answered" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=place/answers/coordinates value=.answers/**
393
472
  bound-lock/1 about="the coordinates a reader is given when the view of the place reads its region: what is connected" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=place/connected/coordinates value=connected/*
394
473
  bound-lock/1 about="the core: what answers every question — knows no source and no scheme; a host over bound, never a second fold" at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/core value=src/core/**|src/flows/**|src/tools/**|src/resources/**
@@ -397,16 +476,20 @@ bound-lock/1 about="the depth of scopes the owner-s key reaches (value read from
397
476
  bound-lock/1 about="the document mended" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/document-unparsed/next value=none
398
477
  bound-lock/1 about="the document share lays in a package-s folder to be published as it is: the package-s lines as one standing, the bytes its link names" at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=link/document value=standing.json
399
478
  bound-lock/1 about="the document that declares it, connected" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unresolved/next value=none
400
- bound-lock/1 about="the document-s digest named" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/fetch-redirect/next value=none
479
+ bound-lock/1 about="the document's digest named" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/fetch-redirect/next value=none
480
+ bound-lock/1 about="the doors head is started behind, one process each, ending with its client: the first is MCP's, `head run` alone; the others are named after run" at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=cli/run/doors value=mcp|lines|http
401
481
  bound-lock/1 about="the end an intent gets when a look closes it instead of its receipt" at=policy:head/acts by=target form=alphabet measure=id role=writes scope=act/closed value=closed
402
482
  bound-lock/1 about="the families of lines this place names, as topos declares them; its receipts are of the reader family (value read from Lapxo/topos)" at=policy:world/founding by=target form=alphabet measure=id role=reads scope=audit/wire/families value=audit|beat|block|cites|comments|concept|cost|dep|effect|fold|hazard|keys|law|license|lines|literal|offers|question|reader|region|render|roles|sample|session|take|test|tree|vector|view|write
403
483
  bound-lock/1 about="the family a place declares a source-s lineage under, signed by its person or root: the sources it shares lineage with, or none" at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=marks/shares value=shares
404
484
  bound-lock/1 about="the family a place demands a reading in: needs/<kind>, paid once a world it adopts reads that kind into the place view" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=place/needs value=needs
405
485
  bound-lock/1 about="the family a read is kept under: read/<source>/<operation>/<request>" at=policy:head/receipts by=target form=alphabet measure=id role=writes scope=receipt/family value=read
486
+ bound-lock/1 about="the family a refusal through a door is written under in the place's evidence, by head's own key, its scope the request's digest" at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=doors/refused/family value=refused
406
487
  bound-lock/1 about="the family a typed answer is kept under: kept/<source>/<operation>/<request>/<basis>, the digest of the lines the fold typed, kept while the place stands on that basis" at=policy:head/receipts by=target form=alphabet measure=id role=writes scope=receipt/kept value=kept
407
488
  bound-lock/1 about="the family a typed answer is said in: answer/<request>, one line a value" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=vocab/answer value=answer
408
489
  bound-lock/1 about="the family access is kept under: access/<flow>/obtained|renewed|entered, a receipt without the secret, the flow its issuer-s where one issues it" at=policy:head/access by=target form=alphabet measure=id role=writes scope=access/family value=access
409
490
  bound-lock/1 about="the family an act is kept under: act/<source>/<operation>/<request>, its intent, and /done, its receipt" at=policy:head/acts by=target form=alphabet measure=id role=writes scope=act/family value=act
491
+ bound-lock/1 about="the family of a door's ceiling of what it refuses a window, read/refusals/<door>: an interval of refusals whose measure names the window they are counted and set apart in, refusals/R/<start>/P<n>D or …/PT<n>H (ISO 8601)" at=policy:head/doors/0.1.7-refusals by=target form=alphabet measure=id role=writes scope=refusals/family value=read/refusals
492
+ bound-lock/1 about="the family of a source's ceiling of calls a window, read/calls/<source>: an interval of calls whose measure names the window they are counted in, calls/R/<start>/P<n>D or calls/R/<start>/PT<n>H (ISO 8601); without one, read/rate alone caps a source" at=policy:head/calls/0.1.7 by=target form=alphabet measure=id role=writes scope=calls/family value=read/calls
410
493
  bound-lock/1 about="the family of the person-s lines of use: use/<source>/<their name> names the offer a request reached, in the request-s own words, signed with the receipt of its first use" at=policy:head/use/0.1.6 by=target form=alphabet measure=id role=writes scope=use/family value=use
411
494
  bound-lock/1 about="the family of what a person allows: allow/<source>/<operation> times, allow/<source> a cap over all" at=policy:head/acts by=target form=alphabet measure=id role=writes scope=allow/family value=allow
412
495
  bound-lock/1 about="the family of what a person wants to be asked before" at=policy:head/acts by=target form=alphabet measure=id role=writes scope=ask/family value=ask
@@ -429,9 +512,11 @@ bound-lock/1 about="the folder of a place a body is laid in while bound reads it
429
512
  bound-lock/1 about="the folder of a place everything connected is laid in, whatever its kind: the fold decides which world reads it" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=place/connected value=connected
430
513
  bound-lock/1 about="the form of that document, as bound reads a standing by it" at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=link/profile value=semantic-standing@1
431
514
  bound-lock/1 about="the forms its values are read through (value read from Lapxo/topos)" at=policy:world/founding by=target form=alphabet measure=id role=reads scope=audit/wire/forms value=interval|alphabet|ladder
515
+ bound-lock/1 about="the heap a place's fold host is started with, Node's old-generation limit and not the process's whole memory" at=policy:head/host/0.1.7 by=target form=interval measure=mebibytes role=writes scope=bound/host/heap value=512..512
432
516
  bound-lock/1 about="the hosts head keeps keys on, each in its own secret store and opening its one-time page with its own opener; on any other host every call is refused by name" at=policy:head/platform by=target form=alphabet measure=id role=writes scope=platform/supported value=darwin|linux|win32
433
517
  bound-lock/1 about="the identity of a reading of a place, given without folding it, so what head folded before is kept under bound-s own identity and not a superset of it; until then head keys it by every file the place holds" at=policy:head/ahead/0.1.5 by=target form=alphabet measure=id role=demands scope=bound/reading-identity value=reading-identity@1
434
- bound-lock/1 about="the instrument head runs, as published" at=policy:head/pins/0.2.5 by=target form=alphabet measure=digest needs=node_modules/@lapxo/bound role=reads scope=dep/bound shape=package value=sha256:e0765eeb54fcfec1c9c89a67094641957efead062ffd8a45900f2a3e3d56696b
518
+ bound-lock/1 about="the installed bound's identity, as bound computes it from the installed bytes with head's selection (export ./engine, entry dist/cli/verb.js): a place's fold host is started on this instrument alone, and refused by name on any other; said again at every repin, beside dep/bound, which pins the archive" at=policy:head/bound-repin/0.2.8 by=target form=alphabet measure=digest role=writes scope=dep/bound/installed value=sha256:b097566fcb246614d9ebe55642c2b5b2f8f0ca81b073efc9edef76a1de075008
519
+ bound-lock/1 about="the instrument head runs, as published" at=policy:head/bound-repin/0.2.8 by=target form=alphabet measure=digest needs=node_modules/@lapxo/bound role=reads scope=dep/bound shape=package value=sha256:2d024747c2d2eca6b20c32e6dc7e963b0133caac36db3c380626482944ec0a1b
435
520
  bound-lock/1 about="the instrument head starts as a process for every fold, sign and land; nothing of it is imported" at=policy:project by=target form=alphabet measure=id role=writes scope=runs value=@lapxo/bound
436
521
  bound-lock/1 about="the key a place head founds is rooted in: made in the keychain under the place-s name, never a file, never the owner-s" at=policy:head/founding by=target form=alphabet measure=id role=writes scope=founding/root value=keys/root
437
522
  bound-lock/1 about="the keychain entry a source-s secret is kept under, one per place and source; a line names it, never holds it" at=policy:head/access by=target form=alphabet measure=id role=writes scope=access/account value=place/{place}/api/{source}
@@ -443,25 +528,29 @@ bound-lock/1 about="the ledger a place-s history is said to come from, named by
443
528
  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
444
529
  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
445
530
  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
446
532
  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
447
533
  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
448
534
  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
449
535
  bound-lock/1 about="the lines of the adopt region, together" at=policy:head/ceilings by=target form=interval measure=adopt-lines role=reads scope=adopt/lines value=0..60
450
536
  bound-lock/1 about="the lines of the ahead 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=ahead-lines role=writes scope=ahead/lines value=0..60
451
537
  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
452
- bound-lock/1 about="the lines of the claims 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=claims-lines role=writes scope=claims/lines value=0..40
538
+ 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
453
539
  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
454
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
455
542
  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
456
- bound-lock/1 about="the lines of the links 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=links-lines role=writes scope=links/lines value=0..60
543
+ 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
457
544
  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
458
545
  bound-lock/1 about="the lines of the places region, together: split from the places that also connected, never raised" at=policy:head/ceilings by=target form=interval measure=places-lines role=reads scope=places/lines value=0..90
459
546
  bound-lock/1 about="the lines of the sources region, together: split from the places that also founded, never raised" at=policy:head/ceilings by=target form=interval measure=sources-lines role=reads scope=sources/lines value=0..150
460
547
  bound-lock/1 about="the lines of the use region, together, read by head-s suite; paid from the ceiling of the whole source" at=witness:an-answer-of-nothing-kept-apart by=target form=interval measure=use-lines role=writes scope=use/lines value=0..49
461
548
  bound-lock/1 about="the lines of the verbs region, together, read by head-s suite; a region ceiling landed after founding has no reading of bound-s, so bound holds it as data" at=policy:head/ceilings/0.1.4 by=target form=interval measure=verbs-lines role=writes scope=verbs/lines value=0..80
462
549
  bound-lock/1 about="the lines of the walk region, together" at=policy:head/ceilings by=target form=interval measure=walk-lines role=reads scope=walk/lines value=0..40
463
- bound-lock/1 about="the lines the other device-s key tool answered" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-key/next value=none
464
- bound-lock/1 about="the longest head waits on bound; a view that has not answered by then is no reading, and nothing is called" at=policy:head/bound by=target form=interval measure=milliseconds role=writes scope=bound/wait value=60000..60000
550
+ bound-lock/1 about="the lines the other device's key tool answered" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/no-key/next value=none
551
+ bound-lock/1 about="the lines whose text a person or their client is shown: what head says, asks and offers, `head` alone, the instructions and the manifest; a family ending in / names every scope under it" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=person-words/families value=said/|prompt/|tool/|cli/help|prose/en/instructions|prose/en/bundle/manifest
552
+ bound-lock/1 about="the longest a place's fold host serves: a read past it closes the host and starts another" at=policy:head/host/0.1.7 by=target form=interval measure=seconds role=writes scope=bound/host/life value=3600..3600
553
+ bound-lock/1 about="the longest head waits on bound, a process or a place's fold host, a host's start included; a view that has not answered by then is no reading, and nothing is called" at=policy:head/host/0.1.7 by=target form=interval measure=milliseconds role=writes scope=bound/wait value=60000..60000
465
554
  bound-lock/1 about="the longest head-s one-time page waits for the person; a wait that runs out closes it with nothing, and nothing is called" at=policy:head/access by=target form=interval measure=milliseconds role=writes scope=access/wait value=0..120000
466
555
  bound-lock/1 about="the longest one request may take, its headers and its body; past it the request is stopped, its connection released, and nothing it sent back is read" at=policy:head/transport by=target form=interval measure=milliseconds role=writes scope=adapter/request/wait value=0..30000
467
556
  bound-lock/1 about="the macOS keychain, through the security command" at=policy:head/platform by=target form=alphabet measure=id role=writes scope=platform/darwin/store value=keychain
@@ -470,20 +559,27 @@ bound-lock/1 about="the manifest of the Desktop Extension, rendered from the loc
470
559
  bound-lock/1 about="the manifest of the Desktop Extension: what a host starts and the tools the lock offers" at=policy:head/forge by=target form=alphabet measure=id needs=manifest.json role=demands scope=view/bundle-manifest shape=manifest.json value=text
471
560
  bound-lock/1 about="the manifest of the Desktop Extension: what a host starts and the tools the lock offers" at=policy:head/forge by=target form=alphabet measure=text role=writes scope=region/bundle-manifest value=lock
472
561
  bound-lock/1 about="the marks an answer carries that rest on no receipt of a read, read by head-s suite: none" at=policy:head/ceilings/0.1.5 by=target form=interval measure=count role=writes scope=marks-without-evidence value=0..0
562
+ bound-lock/1 about="the measure a lot to be signed rests on, run by hand or on an epoch tag and never cancelled: the suite in shards on each node the place names, and the timed tests and the first minute alone on macOS" at=policy:head/forge/0.1.7-check by=target form=alphabet measure=id needs=.github/workflows/measure.yml role=demands scope=view/pipeline-measure shape=.github/workflows/measure.yml value=text
563
+ bound-lock/1 about="the measure a lot to be signed rests on, run by hand or on an epoch tag and never cancelled: the suite in shards on each node the place names, and the timed tests and the first minute alone on macOS" at=policy:head/forge/0.1.7-check by=target form=alphabet measure=text role=writes scope=region/pipeline-measure value=lock
473
564
  bound-lock/1 about="the measure a source-s region names its document by, by digest: two sources of one document are one source" at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=vocab/documents value=documents
474
565
  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
475
566
  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
476
- bound-lock/1 about="the most bytes head reads of what one bound process prints; past it the process is stopped, and what it printed is no reading" at=policy:head/bound by=target form=interval measure=bytes role=writes scope=bound/printed value=0..16777216
567
+ 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
477
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
478
569
  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
+ 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
479
571
  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
480
572
  bound-lock/1 about="the numbers a cell shows that head measured: each names its model and the params it was measured with" at=policy:head/numbers/0.1.5 by=target form=alphabet measure=id role=writes scope=numbers/measured value=seconds
481
573
  bound-lock/1 about="the one adapter access runs by, whatever the kind: the steps a scheme-s flow declares, the inputs it asks as it declares them, the token it keeps and how it rides a request" at=policy:head/access by=target form=alphabet measure=id role=writes scope=access/adapter value=flow
574
+ bound-lock/1 about="the one address the http door opens on and answers by: this device, never another" at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=doors/loopback value=127.0.0.1
482
575
  bound-lock/1 about="the one class of offer head reads; every other class is listed, never called" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=vocab/callable value=read
483
- bound-lock/1 about="the only files a kind of source, a scheme or a platform-s secret store is named in: one adapter each" at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/adapters value=src/ports/adapters/**|src/ports/access/**|src/ports/stores/**|src/ports/keychain.ts
576
+ bound-lock/1 about="the only files a kind of source, a scheme or a platform-s secret store is named in: one adapter each; the native Bound host port is also a transport adapter and consumes its public receiver options" at=policy:head/receiver/0.1.7 by=target form=alphabet measure=coordinates role=reads scope=region/adapters value=src/ports/adapters/**|src/ports/access/**|src/ports/stores/**|src/ports/keychain.ts|src/doors/http.ts|src/ports/host.ts
484
577
  bound-lock/1 about="the only forms whose words may ask to show a person a structural number: why, which explains, and share, whose digest is what is shared" at=policy:head/ahead/0.1.5 by=target form=alphabet measure=id role=writes scope=person-words/shown value=why|share
578
+ bound-lock/1 about="the origin an agent states with, and is shown by: what the agent says itself, never the person's" at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=claim/agent value=agent
579
+ bound-lock/1 about="the origin the person's own statements are shown by" at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=claim/person value=person
485
580
  bound-lock/1 about="the package digest, sent apart" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/shared/next value=none
486
581
  bound-lock/1 about="the page a repository and a registry show first, rendered from the lock and never written by hand" at=policy:head/docs/0.1.4 by=target form=alphabet measure=role role=reads scope=leaf-role/README.md value=derived
582
+ bound-lock/1 about="the page a repository shows for its security, rendered from the lock and never written by hand" at=policy:head/docs/0.1.7-security by=target form=alphabet measure=role role=reads scope=leaf-role/SECURITY.md value=derived
487
583
  bound-lock/1 about="the pages of head, rendered from the lock and never written by hand" at=policy:head/docs/0.1.4 by=target form=alphabet measure=role role=reads scope=leaf-role/docs value=derived
488
584
  bound-lock/1 about="the parameter it names" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/missing-param/next value=none
489
585
  bound-lock/1 about="the paths an origin-s document is looked for at when its catalog names none, in this order: the first a world compiles is connected" at=policy:head/use/0.1.1g by=target form=alphabet measure=id role=writes scope=use/documents value=/openapi.json|/openapi.yaml|/.well-known/openapi.json|/.well-known/openapi.yaml|/swagger.json|/v3/api-docs
@@ -514,6 +610,7 @@ bound-lock/1 about="the resolution at which look reads one offer: one response,
514
610
  bound-lock/1 about="the resolutions a place-s root signs at, explicit, as a walk authenticates every key by" at=policy:head/birth by=target form=interval measure=resolution role=writes scope=birth/keys/root value=1..8
515
611
  bound-lock/1 about="the roles a line of this place may have (value read from Lapxo/topos)" at=policy:world/founding by=target form=alphabet measure=id role=reads scope=audit/wire/roles value=reads|writes|demands
516
612
  bound-lock/1 about="the roles head and person" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-role/next value=none
613
+ bound-lock/1 about="the same statement, with origin agent" at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/door-unoriginated/next value=none
517
614
  bound-lock/1 about="the scheme an origin to use is reached by when the person names only its host" at=policy:head/use/0.1.1g by=target form=alphabet measure=id role=writes scope=use/scheme value=https:
518
615
  bound-lock/1 about="the sentence a person signs once per place and period: allow/read sources, allow/read until; reads never ask while it stands" at=policy:head/access by=target form=alphabet measure=id role=writes scope=grant/family value=allow/read
519
616
  bound-lock/1 about="the session-s opener, started directly, never through a shell" at=policy:head/platform by=target form=alphabet measure=id role=writes scope=platform/linux/browser value=xdg-open
@@ -526,6 +623,7 @@ bound-lock/1 about="the states a cell of head-s answers is in: done, refused, op
526
623
  bound-lock/1 about="the tag of the version the manifest names, made once, on the branch the check passed" at=policy:head/forge by=target form=alphabet measure=id needs=.github/workflows/tag.yml role=demands scope=view/pipeline-tag shape=.github/workflows/tag.yml value=text
527
624
  bound-lock/1 about="the tag of the version the manifest names, made once, on the branch the check passed" at=policy:head/forge by=target form=alphabet measure=text role=writes scope=region/pipeline-tag value=lock
528
625
  bound-lock/1 about="the text region a view of verbatim prose is rendered by, the capsule obligations pins" at=policy:head/forge by=target form=alphabet measure=digest needs=forge/prose-render.bound role=writes scope=uses/prose-render value=sha256:907115916d64425dd23305fc74d91ea937f933de4949fb0c4dc94fb1106bd33e
626
+ bound-lock/1 about="the tool a verb that is no tool is carried by, as its action" at=policy:head/doors/0.1.7-lines by=target form=alphabet measure=id role=writes scope=doors/carrier value=do
529
627
  bound-lock/1 about="the tools a client is offered: anything more to do is an action of do or a question of ask" at=policy:head/ceilings/0.1.4 by=target form=interval measure=count role=writes scope=tools/visible value=0..3
530
628
  bound-lock/1 about="the tools a client is offered; every other tool line is the catalogue ask and do carry out" at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=surface/tools value=connect|ask|do
531
629
  bound-lock/1 about="the tools that configure a place — found it, connect a source, prove access to it, admit a device — each answered from the places or the sources region, and no other; the surface grows only by this line" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tools/config value=place|connect|access|admit
@@ -534,12 +632,16 @@ bound-lock/1 about="the values and transforms a flow may name: extended by this
534
632
  bound-lock/1 about="the variable a host names its person-s home folder by" at=policy:head/platform by=target form=alphabet measure=id role=writes scope=platform/linux/home value=HOME
535
633
  bound-lock/1 about="the variable a host names its person-s home folder by" at=policy:head/platform by=target form=alphabet measure=id role=writes scope=platform/win32/home value=USERPROFILE
536
634
  bound-lock/1 about="the variable a host names its person-s home folder by, which head-s own folder sits under when no home is named for it" at=policy:head/platform by=target form=alphabet measure=id role=writes scope=platform/darwin/home value=HOME
537
- bound-lock/1 about="the variables node reads as it starts: a bound process started ahead is asked only under the same values of them, else one is started as it is asked" at=policy:head/warm by=target form=alphabet measure=id role=writes scope=bound/spare-env value=NODE_|UV_
635
+ bound-lock/1 about="the verb that asks for a card with none, card true" at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=doors/card value=ask
636
+ bound-lock/1 about="the verb that founds head's first place with no card, its answer ending with the card of what it founded" at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=doors/first value=connect
538
637
  bound-lock/1 about="the verbs a client is offered: each question and action routed to the catalogue module that answers it, on the card it was asked on" at=policy:project/0.1.4 by=target form=alphabet measure=coordinates role=reads scope=region/verbs value=src/verbs/**
638
+ bound-lock/1 about="the verbs whose tool checks the card itself; every other verb has it checked by the door, then set aside" at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=doors/checks value=do|share
539
639
  bound-lock/1 about="the view a place names to have bound compile its sources into the place vocabulary" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=place/view value=place
540
640
  bound-lock/1 about="the view a place names to have bound type what a source answered; without it, head hands no answer at all" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=place/answer value=answer
541
641
  bound-lock/1 about="the view bound renders a place-s receipts by, beside its lock, after each act its root lands" at=policy:head/birth/0.1.2 by=target form=alphabet measure=id role=writes scope=bound/receipts value=receipts
542
642
  bound-lock/1 about="the view of a place-s authenticated history: head reads its own receipts there, and the person-s attestations" at=policy:head/bound by=target form=alphabet measure=id role=writes scope=bound/evidence value=evidence
643
+ bound-lock/1 about="the view of what a place keeps of what was stated, by whom, and who else stated it" at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=claim/view value=claims
644
+ bound-lock/1 about="the why form, which may show what explains an answer" at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=person-words/forbidden/apart value=said/why
543
645
  bound-lock/1 about="the worlds every place adopts when it connects; topos-mcp is pinned beside them for the tests and the offline vector, and adopted once bound composes readings (0.1.7), in head 0.1.1" at=policy:head/worlds by=target form=alphabet measure=id role=writes scope=world/adopts value=topos-openapi
544
646
  bound-lock/1 about="unencrypted transport, which the adapter sends only to this device" at=policy:head/transport by=target form=alphabet measure=id role=writes scope=adapter/http value=request
545
647
  bound-lock/1 about="view, as a person reads it: at its own resolution" at=policy:head/surface/0.1.6-answered by=target form=alphabet measure=id role=writes scope=resolution/view/person value=own
@@ -549,8 +651,9 @@ bound-lock/1 about="what a device a place admits covers unless whoever admits it
549
651
  bound-lock/1 about="what a document connected is when it is a link to a standing, not a document of a source" at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=link/prefix value=#bound:
550
652
  bound-lock/1 about="what a first cell past its ceiling rests on: reading a place without a bound process each time, and its identity without folding it" at=policy:head/ceilings/0.1.5 by=target form=alphabet measure=id role=writes scope=seconds/first-cell/rests-on value=bound/read-reuse|bound/in-process-host|bound/reading-identity
551
653
  bound-lock/1 about="what a lineage line says when nobody declared that the source shares lineage: never that it is independent" at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=marks/undeclared value=none
654
+ bound-lock/1 about="what a person reads: the cells head says, its prompts, `head` alone and the description of its extension; a family ending in / names every scope under it" at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=person-words/forbidden/read value=said/|prompt/|cli/help|prose/en/bundle/manifest
552
655
  bound-lock/1 about="what a place adopts: every world head carries; a lock as its parent is refused by name, its composition being bound-s; split from the compile region at its ceiling, never raised" at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/adopt value=src/adopt/**
553
- bound-lock/1 about="what a place allows is its root-s to change" at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=said/not-in-card/next value=none
656
+ bound-lock/1 about="what a place allows is its root's to change" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/not-in-card/next value=none
554
657
  bound-lock/1 about="what a place allows of answering a present read from a retained one: allow/reuse/<source> in seconds, the longest a retained answer may stand in for the source; without it every read calls" at=policy:head/access by=target form=alphabet measure=id role=writes scope=reuse/family value=allow/reuse
555
658
  bound-lock/1 about="what a place allows of inspecting retained reads: allow/history/<source> present; history is evidence of the read it came from, never a current answer" at=policy:head/access by=target form=alphabet measure=id role=writes scope=history/family value=allow/history
556
659
  bound-lock/1 about="what a place is shared and looked at by: the link a package is published under, and the inspection a link is connected by" at=policy:project/0.1.5 by=target form=alphabet measure=coordinates role=reads scope=region/links value=src/links/**
@@ -561,6 +664,7 @@ bound-lock/1 about="what a question asked again adds to the model-s context, its
561
664
  bound-lock/1 about="what a question of a founded place, read fresh adds to the model-s context, its content beside its cells, by utf8-bytes/4: 240 in all four measures of CI run 39359639837 at cb6bf02, macOS, 3 cpus" at=policy:head/ceilings/0.1.5 by=target form=interval measure=tokens role=writes scope=tokens/answer/new-with-source value=0..240
562
665
  bound-lock/1 about="what a question read before is answered from: kept while its receipt and its context stand, read again and said why once either moved" at=policy:project/0.1.5 by=target form=alphabet measure=coordinates role=reads scope=region/kept value=src/kept/**
563
666
  bound-lock/1 about="what a read made ahead of its question is marked by, beside its receipt and under the receipt-s own at, so the place-s rate counts what reads ahead spent apart from what questions spent, each read once" at=policy:head/ahead/0.1.5 by=target form=alphabet measure=id role=writes scope=ahead/mark value=ahead
667
+ bound-lock/1 about="what a refusal is written at, as a receipt is, followed by its hour: evidence of what happened, so it never moves a card" at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=doors/refused/at value=receipt
564
668
  bound-lock/1 about="what a region of the place is measured by, as obligations reads it: its coordinates and the leaves it writes" at=policy:head/forge by=target form=alphabet measure=id role=reads scope=audit/wire/region-measures value=coordinates|leaves
565
669
  bound-lock/1 about="what a source answered, kept apart from what it never sent: a body of nothing is its answer, with its receipt and hour; no bytes is no answer, its cause said and the read owed as a need until bytes arrive" at=policy:project/0.1.6 by=target form=alphabet measure=coordinates role=reads scope=region/answers value=src/answers/**
566
670
  bound-lock/1 about="what a source offers, as a person reads it: where it is reached and the class of each offer" at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=resolution/offers/person value=0
@@ -574,13 +678,15 @@ bound-lock/1 about="what bound names" at=policy:head/shape/0.1.2 by=target form=
574
678
  bound-lock/1 about="what bound names" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unsettled/next value=none
575
679
  bound-lock/1 about="what bound prints before the result of an act it committed: then the records it admitted, then its receipt" at=policy:head/bound by=target form=alphabet measure=id role=writes scope=bound/act value="ACT "
576
680
  bound-lock/1 about="what bound says when the bytes a link names did not arrive, as against bytes that are not what it names" at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=link/unarrived value=REFUSE·transport
577
- bound-lock/1 about="what claim needs: the person-s words" at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=tool/claim/required value=said
578
- bound-lock/1 about="what connect needs: a document, or a package-s lock, which names its sources" at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=tool/connect/required value=document
681
+ bound-lock/1 about="what claim needs: the person's words" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/claim/required value=said
682
+ bound-lock/1 about="what connect needs: a document, or a package's lock, which names its sources" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=tool/connect/required value=document
683
+ bound-lock/1 about="what every door other than MCP answers: the four verbs, each by its own name" at=policy:head/doors/0.1.7-lines by=target form=alphabet measure=id role=writes scope=doors/verbs value=connect|ask|do|share
579
684
  bound-lock/1 about="what head folds before it is asked: a place-s fold kept for the conversation under what its reading reads, and the read a known next asks for, read ahead" at=policy:project/0.1.5 by=target form=alphabet measure=coordinates role=reads scope=region/ahead value=src/ahead/**
580
685
  bound-lock/1 about="what head hands a flow that asks its host for the name it registers a client under ($host.client-name); a world never names its host, and a flow asking the host for anything else head does not declare is refused by name" at=policy:head/access by=target form=alphabet measure=id role=writes scope=host/client-name value=head
581
686
  bound-lock/1 about="what head is, how it is installed and the first minute with it" at=policy:head/docs/0.1.4 by=target form=alphabet measure=id needs=README.md role=demands scope=view/readme shape=README.md value=text
582
687
  bound-lock/1 about="what head is, how it is installed and the first minute with it" at=policy:head/docs/0.1.4 by=target form=alphabet measure=text role=writes scope=region/readme value=lock
583
688
  bound-lock/1 about="what is not measured between sources that differ" at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=marks/loss value="the loss between"
689
+ bound-lock/1 about="what is the same behind every door: one call at a time, each answer read ahead as it leaves, the context a call is answered with; MCP's door is index.ts, every other door one file here" at=policy:head/doors/0.1.7 by=target form=alphabet measure=coordinates role=reads scope=region/doors value=src/doors/**
584
690
  bound-lock/1 about="what of head each test file runs, measured once by node-s own coverage with each file alone: the map the lane crosses with each change, nothing run" at=policy:head/forge/0.1.4 by=target form=alphabet measure=id needs=.github/workflows/suite-map.yml role=demands scope=view/pipeline-suite-map shape=.github/workflows/suite-map.yml value=text
585
691
  bound-lock/1 about="what of head each test file runs, measured once by node-s own coverage with each file alone: the map the lane crosses with each change, nothing run" at=policy:head/forge/0.1.4 by=target form=alphabet measure=text role=writes scope=region/pipeline-suite-map value=lock
586
692
  bound-lock/1 about="what of head-s birth is the person-s: the language they read, how long a kept answer may stand, their root-s resolution. It is said at the person-s at and written to their birth file; the rest of the birth is head-s profile, which the person sees only with why" at=policy:head/founding/0.1.6 by=target form=alphabet measure=id role=writes scope=founding/person value=lang|allow/reuse|keys/root
@@ -597,56 +703,63 @@ bound-lock/1 about="where a place head founds for an origin lives: a folder name
597
703
  bound-lock/1 about="where a place keeps each source compiled into a standing of its own, pinned by uses/<source>: the first folder is where head lays a compile, every one is read, the last where a head before 0.1.2 laid them; folders of the place-s own, named for what they hold, never for head" at=policy:head/vocabulary/0.1.2 by=target form=alphabet measure=id role=writes scope=place/compiled value=pins|.head/compiled
598
704
  bound-lock/1 about="where a place keeps its own walk context, laid beside its lock and pinned by walk/context; a place born before 0.1.2 keeps its own where it was laid" at=policy:head/walk/0.1.2 by=target form=alphabet measure=id role=writes scope=walk/context/file value=walk/context.bound
599
705
  bound-lock/1 about="where a place keeps the standing of each world it adopts, laid beside its lock as fetched and checked against the pin, so bound admits the pin on bytes the place holds: a folder named for what it holds" at=policy:head/vocabulary/0.2.0 by=target form=alphabet measure=id role=writes scope=place/worlds value=worlds
706
+ bound-lock/1 about="where an agent's statement is kept: an at whose class says an agent is its origin; head's own key signs it, since an agent has no key of its own" at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=claim/agent/at value=origin:agent
600
707
  bound-lock/1 about="where an origin publishes the catalog of its documents (RFC 9727), read with nothing attached" at=policy:head/use/0.1.1g by=target form=alphabet measure=id role=writes scope=use/catalog value=/.well-known/api-catalog
601
- bound-lock/1 about="where the bound package head pins is fetched from, verified by its digest" at=policy:head/pins/0.2.5 by=target form=alphabet measure=id role=writes scope=sources/bound value=https://registry.npmjs.org/@lapxo/bound/-/bound-0.2.5.tgz
708
+ 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
602
709
  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
603
- bound-lock/1 about="where the topos package head pins is fetched from, verified by its digest" at=policy:head/pins/topos/0.2.1 by=target form=alphabet measure=id role=writes scope=sources/topos value=https://registry.npmjs.org/@lapxo/topos/-/topos-0.2.1.tgz
710
+ 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
604
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
605
712
  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
606
713
  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/**
607
- bound-lock/1 about="whoever holds the place-s root" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-root/next value=none
608
- bound-lock/1 about="{\n \"manifest_version\": \"0.3\",\n \"name\": \"head\",\n \"display_name\": \"head\",\n \"version\": \"0.1.6\",\n \"description\": \"An MCP server that folds: 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/version/0.1.6 by=target form=alphabet measure=text role=writes scope=prose/en/bundle/manifest shape=manifest.json value=lock
714
+ 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
+ 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
+ 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
+ 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.0\",\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.0 by=target form=alphabet measure=text role=writes scope=prose/en/bundle/manifest shape=manifest.json value=lock
609
719
  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
610
720
  bound-lock/1 about="{count} lines landed." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/landed value=lock
611
721
  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
612
722
  bound-lock/1 about="{document} answered {status} at {at} to the access {via} holds. Nothing was connected. Access {via} holds that {document} accepts pays it." at=policy:head/numbers/0.1.5 by=target form=alphabet measure=id role=writes scope=said/fetch-status value=lock
613
- bound-lock/1 about="{document} carries {scope}, which a package does not: a package names by digest, each once, the worlds its sources were compiled under and each source-s document, overlay and pin, in an order its pins rest in, and grants nothing. Nothing was connected." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=said/package-line value=lock
723
+ bound-lock/1 about="{document} carries {scope}, which a package does not: a package names by digest, each once, the worlds its sources were compiled under and each source's document, overlay and pin, in an order its pins rest in, and grants nothing. Nothing was connected." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/package-line value=lock
614
724
  bound-lock/1 about="{document} has not arrived, so {source} is not connected yet: {place} owes it. Ask {operation} again, with {args}, once it can be read; nothing else is asked." at=policy:head/birth/0.1.4 by=target form=alphabet measure=id role=writes scope=said/bytes-owed value=lock
615
725
  bound-lock/1 about="{document} hashes to {got}, not to the {digest} it was named by. Nothing was connected. The bytes that digest names pay it, or the digest these bytes hash to, from whoever sent them." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/document-digest value=lock
616
726
  bound-lock/1 about="{document} is not at the origin {via} is reached at, and {via}-s access goes to its own origin alone: nothing was fetched. A source reached at {document}-s own origin, connected first, pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/fetch-cross-origin value=lock
617
- bound-lock/1 about="{document} moved to another address, which head follows only without the access and for bytes named by their digest: name the document-s digest. Nothing was connected." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=said/fetch-redirect value=lock
727
+ bound-lock/1 about="{document} moved to another address, which head follows only without the access and for bytes named by their digest: name the document's digest. Nothing was connected." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/fetch-redirect value=lock
618
728
  bound-lock/1 about="{document} was compiled under {world} {pin}, and this head pins {held}. Nothing was connected. A package shared from a head that pins {held}, or this head at the release that pins {pin}, pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/package-world value=lock
619
729
  bound-lock/1 about="{document} was not read: an https address, or a file inside the place or a folder the client shares, is. Nothing was connected." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/document-unread value=lock
620
730
  bound-lock/1 about="{flow} asks a one-time code" at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=said/trust-one-time value=lock
621
731
  bound-lock/1 about="{flow} asks a secret" at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=said/trust-secret value=lock
622
732
  bound-lock/1 about="{flow} asks no secret" at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=said/trust-none value=lock
623
- bound-lock/1 about="{form} declares no resolution that explains it: this is what ask reads, and nothing more." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=said/why-undeclared value=lock
733
+ bound-lock/1 about="{form} declares no deeper reading that explains it: this is what ask reads, and nothing more." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/why-undeclared value=lock
734
+ bound-lock/1 about="{host} is not this door: head answers only {own}, so nothing was asked or called." at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-host value=lock
624
735
  bound-lock/1 about="{link} was not inspected: {why}. Nothing was connected." at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/link-refused value=lock
625
736
  bound-lock/1 about="{message}. The page comes back to this device once, and only the secret it yields is kept, in your keychain." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/visit value=lock
626
- bound-lock/1 about="{name} at {dir} — sources: {sources}. Grants standing today: {grants}. Last read: {last}." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/place-held value=lock
737
+ bound-lock/1 about="{name} at {dir} — sources: {sources}. Grants in force today: {grants}. Last read: {last}." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/place-held value=lock
627
738
  bound-lock/1 about="{name} is admitted into {place}, covering {coverage}:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/admitted value=lock
628
- bound-lock/1 about="{name} is founded in {dir} and named in head-s index of places." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/born value=lock
739
+ bound-lock/1 about="{name} is founded in {dir} and named in head's index of places." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/born value=lock
629
740
  bound-lock/1 about="{operation} needs {param}: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/missing-param value=lock
630
741
  bound-lock/1 about="{operation} of {source} is of class read: look reads it at 8." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/is-read value=lock
631
742
  bound-lock/1 about="{operation} of {source} is of class {class}: listed, never called by a look. act calls it, as far as the person allows." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/not-callable value=lock
632
743
  bound-lock/1 about="{operation} of {source} was read two ways: it is never called until one reading stands. An overlay that settles it pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/split-offer value=lock
633
744
  bound-lock/1 about="{operation} on {source} did not answer: its intent {intent} stays open until a look closes it." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/act-failed value=lock
634
- bound-lock/1 about="{operation} on {source} is allowed {allowed} times and was done {done}: nothing was called. A wider allowance the person signs pays it, as far as the place-s own cap allows." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/not-allowed value=lock
745
+ bound-lock/1 about="{operation} on {source} is allowed {allowed} times and was done {done}: nothing was called. A wider allowance the person signs pays it, as far as the place's own cap allows." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/not-allowed value=lock
635
746
  bound-lock/1 about="{origin} is already in use from {dir}: ask what it offers with look, or connect another document to that place with connect." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/use-held value=lock
636
747
  bound-lock/1 about="{origin} is in use from {dir}, as {source}: read-only, every call that is not a read capped at zero, reads granted until {until}. What it offers, and how access is proven:" at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/used value=lock
637
748
  bound-lock/1 about="{origin} is not encrypted and is not this device: nothing was sent to it. Its encrypted address pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/insecure-origin value=lock
638
749
  bound-lock/1 about="{origin} published no document a world compiles: tried {tried}. The place stays founded; a document named by the person is connected to it with connect." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/use-none value=lock
639
- bound-lock/1 about="{place} admits a key named {name} already, or this key under another name: nothing was admitted. Another name pays it, or the old admission withdrawn by the place-s root." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/key-taken value=lock
750
+ bound-lock/1 about="{place} admits a key named {name} already, or this key under another name: nothing was admitted. Another name pays it, or the old admission withdrawn by the place's root." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/key-taken value=lock
751
+ bound-lock/1 about="{place} admits no agent to state anything there, so nothing was kept. Whoever configures {place} can sign this line, and an agent may: {lines}" at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/agent-unadmitted value=lock
640
752
  bound-lock/1 about="{place} admits no content transport, so no link is inspected there. These lines admit one, for you to sign: {lines}" at=policy:head/link/0.1.5 by=target form=alphabet measure=id role=writes scope=said/transport-missing value=lock
641
753
  bound-lock/1 about="{place} admits no field for who carried a statement here, its witness, so nothing was kept. Whoever configures {place} can sign these lines: {lines}" at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/claims-unadmitted value=lock
642
754
  bound-lock/1 about="{place} covers {coverage} for the key that would sign; {scope} is not in it, so nothing was asked, called or signed. Whoever configures {place} can sign these lines:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/not-covered value=lock
643
755
  bound-lock/1 about="{place} does not allow retained reads of {source} to be inspected. Whoever configures it can sign this line:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/history-undeclared value=lock
644
756
  bound-lock/1 about="{place} has no source connected: there is nothing to pack. Nothing was written." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=said/share-none value=lock
757
+ bound-lock/1 about="{place} keeps nothing anyone stated." at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/claims-none value=lock
645
758
  bound-lock/1 about="{place} moved since the card {card} was asked, or none was: nothing was done. Ask for its card again, and act on what it shows." at=policy:head/verbs/0.1.4 by=target form=alphabet measure=id role=writes scope=said/card-stale value=lock
646
- bound-lock/1 about="{place} reads a #bound: link by the transport head-s profile laid at its birth: these lines are head-s, never yours, and none of them grants anything of yours. A transport that carries something of yours is asked for the first time it is needed." at=policy:head/surface/0.1.6 by=target form=alphabet measure=id role=writes scope=said/why-transport value=lock
759
+ bound-lock/1 about="{place} reads a #bound: link by the transport head's profile laid at its birth: these lines are head's, never yours, and none of them grants anything of yours. A transport that carries something of yours is asked for the first time it is needed." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/why-transport value=lock
647
760
  bound-lock/1 about="{place} was acted in, and its receipts did not close: {why}" at=policy:head/surface/0.1.2 by=target form=alphabet measure=id role=writes scope=said/receipts-open value=lock
648
- bound-lock/1 about="{place} was born before its wire named who witnesses a widening, so nothing its root signs as one lands there until it does. head proposes this lot — the wire it stands on withdrawn and said again with the witness, signed by the root alone: plan it, then land it; nothing is migrated:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/unwitnessed value=lock
649
- bound-lock/1 about="{place} would stand on {parent} as its parent lock. Composing a parent-s policy with a child-s is bound-s to do, and this head does not: nothing was adopted, called or signed. A package another place shared is connected by the digest its sender sent apart from it." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=said/parent-lock value=lock
761
+ bound-lock/1 about="{place} was born before its lines named who witnesses a widening, so nothing its root signs as one lands there until they do. head proposes these lines — the fields it stands on withdrawn and said again with the witness, signed by the root alone: plan them, then land them; nothing is migrated:" at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/unwitnessed value=lock
762
+ bound-lock/1 about="{place} would stand on {parent} as its parent lock. Composing a parent's policy with a child's is bound's to do, and this head does not: nothing was adopted, called or signed. A package another place shared is connected by the digest its sender sent apart from it." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/parent-lock value=lock
650
763
  bound-lock/1 about="{sources} backed that {field} is {value} ({marks}). I don-t know whether they are independent." at=policy:head/surface/0.1.6-backed by=target form=alphabet measure=id role=writes scope=said/agreed-unknown value=lock
651
764
  bound-lock/1 about="{sources} backed that {field} is {value} ({marks}). Nobody has declared that they share lineage." at=policy:head/surface/0.1.6-backed by=target form=alphabet measure=id role=writes scope=said/agreed-undeclared value=lock
652
765
  bound-lock/1 about="{sources} backed that {field} is {value} ({marks}): {source} looks like the same lineage as {other} and may add nothing." at=policy:head/surface/0.1.6-backed by=target form=alphabet measure=id role=writes scope=said/agreed-lineage value=lock
@@ -654,37 +767,43 @@ bound-lock/1 about="{source} answered {operation} at {at}: the answer this conve
654
767
  bound-lock/1 about="{source} answered {operation} from {origin} at {at}: backed by the key {by} at epoch {epoch}, receipt {digest}. It rests on the pin {pin} of {source}, landed at epoch {pinned}, and on the world {worlds}. Who crossed it is not said: bound computes no encounters yet." at=policy:head/surface/0.1.6-backed by=target form=alphabet measure=id role=writes scope=said/why value=lock
655
768
  bound-lock/1 about="{source} answered {status} to {operation} at {at}, and no world typed the answer here {why}: head hands no body." at=policy:head/numbers/0.1.5 by=target form=alphabet measure=id role=writes scope=said/untyped value=lock
656
769
  bound-lock/1 about="{source} answered {status} to {operation} at {at}. What its document declares of the answer, one value a line:" at=policy:head/numbers/0.1.5 by=target form=alphabet measure=id role=writes scope=said/answered value=lock
657
- bound-lock/1 about="{source} answered {status} to {operation} at {at}: nothing, as it holds it today at this resolution, not that there never is. Its receipt stands; there is no body to hand." at=policy:head/surface/0.1.6-answered by=target form=alphabet measure=id role=writes scope=said/answered-nothing value=lock
770
+ bound-lock/1 about="{source} answered {status} to {operation} at {at}: nothing, as it holds it today for what was asked, not that there never is. Its receipt stands; there is no body to hand." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/answered-nothing value=lock
658
771
  bound-lock/1 about="{source} backed that {field} is {value}, at {at}." at=policy:head/surface/0.1.6-backed by=target form=alphabet measure=id role=writes scope=said/forked value=lock
659
772
  bound-lock/1 about="{source} backed that {field} is {value}, at {at}; no other requested source backed this field. This is incomplete evidence, not disagreement." at=policy:head/surface/0.1.6-backed by=target form=alphabet measure=id role=writes scope=said/partial value=lock
660
773
  bound-lock/1 about="{source} compiled here as {got}, not as the {pin} the package names: the same documents compile otherwise under this head. The place holds what it compiled, and the package is refused. A package shared from a head at this release pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/package-pin value=lock
661
- bound-lock/1 about="{source} declares no origin: nothing was called. The person-s line allow/origin/{source}, naming where it is reached, pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/no-origin value=lock
662
- bound-lock/1 about="{source} declares several origins ({origins}): the person picks one as region/{source} origin; none is a default, production least of all. Nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/pick-origin value=lock
774
+ bound-lock/1 about="{source} declares no origin: nothing was called. The person's line allow/origin/{source}, naming where it is reached, pays it." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/no-origin value=lock
775
+ bound-lock/1 about="{source} declares several origins ({origins}): the person picks one, kept as the place's origin for {source}; none is a default, production least of all. Nothing was called." at=policy:head/words/0.1.7-forbidden by=target form=alphabet measure=id role=writes scope=said/pick-origin value=lock
663
776
  bound-lock/1 about="{source} did not grant access the way it declares: nothing was kept and nothing was called. Entering it again, as {source} accepts it, pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/login-refused value=lock
664
777
  bound-lock/1 about="{source} does not state how access to {operation} is proven, and only a read is ever tried with nothing attached: nothing was called. An overlay beside its document that states the access of {method} {path} pays it." at=policy:head/connect/0.1.4 by=target form=alphabet measure=id role=writes scope=said/access-unstated value=lock
778
+ bound-lock/1 about="{source} has a ceiling of calls, but {window} names no window head counts in, so nothing was called: a window is calls/R/<start>/P<n>D, or calls/R/<start>/PT<n>H." at=policy:head/calls/0.1.7 by=target form=alphabet measure=id role=writes scope=said/calls-unwindowed value=lock
779
+ bound-lock/1 about="{source} has made the {calls} calls you allow it in this window ({window}): nothing was called. It stays open until the next window, or until you allow more." at=policy:head/calls/0.1.7 by=target form=alphabet measure=id role=writes scope=said/calls-owed value=lock
665
780
  bound-lock/1 about="{source} is a document of a profile the world does not read: {why}. It was laid and taken back; nothing was connected. A document of a profile a world reads pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/document-unsupported value=lock
666
781
  bound-lock/1 about="{source} is a document the world could not parse: {why}. It was laid and taken back; nothing was connected. The document mended where {why} points pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/document-unparsed value=lock
667
782
  bound-lock/1 about="{source} is connected to {place}, and head may read it: ask {operation} again, with {args}." at=policy:head/birth/0.1.4 by=target form=alphabet measure=id role=writes scope=said/ready value=lock
668
- bound-lock/1 about="{source} is connected to {place}: {offers} offers, {reads} of them read; each callable by its name or in the person-s words, none listed until used. Pinned as {pin}. How access is proven, and where it is reached:" at=policy:head/surface/0.1.6 by=target form=alphabet measure=id role=writes scope=said/connected value=lock
783
+ bound-lock/1 about="{source} is connected to {place}: {offers} offers, {reads} of them read; each callable by its name or in the person's words, none listed until used. Pinned as {pin}. How access is proven, and where it is reached:" at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/connected value=lock
669
784
  bound-lock/1 about="{source} is pinned otherwise than when {operation} was read at {at}, 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-changed value=lock
670
785
  bound-lock/1 about="{source} is reached through a provider that needs a client the person registered: sign keys/access/{source}/<scheme> client with it. head invents none. Nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-client value=lock
671
786
  bound-lock/1 about="{source} names two different documents ({why}), and a source is one: neither was read. It was laid and taken back; nothing was connected. One document for {source} pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/document-collision value=lock
672
787
  bound-lock/1 about="{source} offers no {operation}: nothing was called. What it offers is listed by look at 1." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/unknown-operation value=lock
673
- bound-lock/1 about="{source} offers {more} more, listed only once used: each is callable by its name or in the person-s words." at=policy:head/surface/0.1.6 by=target form=alphabet measure=id role=writes scope=said/more-offers value=lock
788
+ bound-lock/1 about="{source} offers {more} more, listed only once used: each is callable by its name or in the person's words." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/more-offers value=lock
674
789
  bound-lock/1 about="{source} proves access to {operation} by {kinds}, and none of them says how its token rides a request: nothing was called. An overlay that says it pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/no-adapter value=lock
675
790
  bound-lock/1 about="{source} referred to {by} before it was here: compiled again, its pin now {pin}. Nothing was reconnected and nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/resolved value=lock
676
791
  bound-lock/1 about="{source} refers to {refs}, which no document of this place declares yet: a demand, paid when the document that declares it is connected — {source} is then compiled again, never reconnected." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/unresolved value=lock
677
- bound-lock/1 about="{source} refused the read without access and named who issues it: {issuer}. head observed how — its metadata, the steps, a client where the server registers one — and the next read signs in there, on head-s page, once; its token and refresh are kept in this keychain and renewed on use." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/authorizer-observed value=lock
792
+ bound-lock/1 about="{source} refused the read without access and named who issues it: {issuer}. head observed how — its metadata, the steps, a client where the server registers one — and the next read signs in there, on head's page, once; its token and refresh are kept in this keychain and renewed on use." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/authorizer-observed value=lock
678
793
  bound-lock/1 about="{source} refused {operation} with the access head held for it: that access is spent, kept nowhere but marked so, and {place} shows it open. Prove it again once." at=policy:head/access/0.1.4 by=target form=alphabet measure=id role=writes scope=said/access-refused value=lock
679
794
  bound-lock/1 about="{source} sent no bytes ({why}): there is no answer and no receipt, and the read stays owed in the place until a read of it brings them." at=policy:head/surface/0.1.6-answered by=target form=alphabet measure=id role=writes scope=said/unreachable-source value=lock
680
795
  bound-lock/1 about="{source} states its reads need no access: nothing was kept and nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/access-anonymous value=lock
681
796
  bound-lock/1 about="{source} waits on bytes that did not arrive, or did not hash to the package, and were not used: {waits}. Bring them beside the package lock by any means and connect the package again; the place holds the demand until they arrive." at=policy:head/surface/0.1.2 by=target form=alphabet measure=id role=writes scope=said/received-open value=lock
682
- bound-lock/1 about="{source} would ask you for {input}, a secret, and this place-s root allows no more on head-s page: nothing was asked and nothing was called. Its root may sign access/secret-inputs to allow it." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/secret-unallowed value=lock
683
- bound-lock/1 about="{to} is not a folder a package is written into: it must be absolute, inside {place} or a folder the client shares, apart from the place-s own folders, and hold no lock but a package. Nothing was written." at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=said/share-to value=lock
797
+ bound-lock/1 about="{source} would ask you for {input}, a secret, and this place's root allows no more on head's page: nothing was asked and nothing was called. Its root may sign access/secret-inputs to allow it." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/secret-unallowed value=lock
798
+ bound-lock/1 about="{to} is not a folder a package is written into: it must be absolute, inside {place} or a folder the client shares, apart from the place's own folders, and hold no lock but a package. Nothing was written." at=policy:head/words/0.1.7 by=target form=alphabet measure=id role=writes scope=said/share-to value=lock
684
799
  bound-lock/1 about="{what} is not measured: it waits on {needs}, and no number stands for it." at=policy:head/numbers/0.1.5 by=target form=alphabet measure=id role=writes scope=said/unmeasured value=lock
685
800
  bound-lock/1 about=done at=policy:head/birth/0.1.4 by=target form=alphabet measure=id role=writes scope=said/connected/next value=ask
686
801
  bound-lock/1 about=done at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/claimed/next value=none
687
802
  bound-lock/1 about=done at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/unclaimed/next value=none
803
+ bound-lock/1 about=done at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/agent-claimed/next value=none
804
+ bound-lock/1 about=done at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/claim-alone/next value=none
805
+ bound-lock/1 about=done at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/claim-backed/next value=none
806
+ bound-lock/1 about=done at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/claims-none/next value=none
688
807
  bound-lock/1 about=done at=policy:head/kept/0.1.5 by=target form=alphabet measure=id role=writes scope=said/kept-changed/next value=none
689
808
  bound-lock/1 about=done at=policy:head/kept/0.1.5 by=target form=alphabet measure=id role=writes scope=said/kept-expired/next value=none
690
809
  bound-lock/1 about=done at=policy:head/kept/0.1.5 by=target form=alphabet measure=id role=writes scope=said/kept-withdrawn/next value=none
@@ -782,6 +901,8 @@ bound-lock/1 at=policy:head/bound by=target form=alphabet measure=id role=writes
782
901
  bound-lock/1 at=policy:head/bound by=target form=alphabet measure=id role=writes scope=bound/standing value=lines
783
902
  bound-lock/1 at=policy:head/bound by=target form=alphabet measure=id role=writes scope=bound/topos value="TOPOS "
784
903
  bound-lock/1 at=policy:head/bound by=target form=alphabet measure=id role=writes scope=bound/view value=--as
904
+ 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
+ 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
785
906
  bound-lock/1 at=policy:head/ceilings by=target form=interval measure=count role=reads scope=literal/host value=0..0
786
907
  bound-lock/1 at=policy:head/ceilings by=target form=interval measure=count role=reads scope=literal/key value=0..0
787
908
  bound-lock/1 at=policy:head/ceilings by=target form=interval measure=count role=reads scope=literal/org value=0..0
@@ -798,10 +919,40 @@ bound-lock/1 at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role
798
919
  bound-lock/1 at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/claims-unadmitted/state value=refused
799
920
  bound-lock/1 at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/elicit-claims/state value=asked
800
921
  bound-lock/1 at=policy:head/claims/0.1.5 by=target form=alphabet measure=id role=writes scope=said/unclaimed/state value=done
922
+ bound-lock/1 at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/agent-claimed/state value=done
923
+ bound-lock/1 at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/agent-unadmitted/next value=ask
924
+ bound-lock/1 at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/agent-unadmitted/next/args value=place:$place|lines:$lines
925
+ bound-lock/1 at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/agent-unadmitted/state value=refused
926
+ bound-lock/1 at=policy:head/claims/0.1.7-agent by=target form=alphabet measure=id role=writes scope=said/claim-alone/state value=done
927
+ 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
+ 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
+ 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
930
+ 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
+ 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
+ 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
933
+ bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=bound/authority/unit value=milliseconds
934
+ bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=said/authority-card/next value=none
935
+ bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=said/authority-card/state value=done
936
+ bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=said/authority-needed/next value=none
937
+ bound-lock/1 at=policy:head/configuration-preflight/0.2.0 by=target form=alphabet measure=id role=writes scope=said/authority-needed/state value=open
938
+ 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
+ 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
+ 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
801
941
  bound-lock/1 at=policy:head/cryptography by=target form=alphabet measure=id role=reads scope=wire/digest-algorithms value=sha256
802
942
  bound-lock/1 at=policy:head/cryptography by=target form=alphabet measure=id role=reads scope=wire/era value=era1
803
943
  bound-lock/1 at=policy:head/cryptography by=target form=alphabet measure=id role=reads scope=wire/signature-algorithms value=ed25519:era1
804
- bound-lock/1 at=policy:head/device/0.1.6 by=target form=alphabet measure=id role=writes scope=device/head/coverage value=read/**|kept/**|act/**|access/**|use/**
944
+ bound-lock/1 at=policy:head/docs/0.1.7-signing-key by=target form=alphabet measure=id role=writes scope=said/signing-key-refused/state value=refused
945
+ bound-lock/1 at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=said/door-founded/state value=refused
946
+ bound-lock/1 at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=said/door-uncarded/next value=ask
947
+ bound-lock/1 at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=said/door-uncarded/next/args value=card:true|place:$place
948
+ bound-lock/1 at=policy:head/doors/0.1.7-guard by=target form=alphabet measure=id role=writes scope=said/door-uncarded/state value=refused
949
+ bound-lock/1 at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-bind/state value=refused
950
+ bound-lock/1 at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-host/state value=refused
951
+ bound-lock/1 at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-origin/state value=refused
952
+ bound-lock/1 at=policy:head/doors/0.1.7-http by=target form=alphabet measure=id role=writes scope=said/door-unasked/state value=refused
953
+ bound-lock/1 at=policy:head/doors/0.1.7-lines by=target form=alphabet measure=id role=writes scope=said/door-unread/state value=refused
954
+ bound-lock/1 at=policy:head/first-minute/0.2.0 by=target form=alphabet measure=coordinates role=reads scope=region/first-minute value=samples/first-minute/**
955
+ bound-lock/1 at=policy:head/first-minute/0.2.0 by=target form=interval measure=defects needs=samples/first-minute/yes/ role=demands scope=first-minute/installed value=0..0
805
956
  bound-lock/1 at=policy:head/forge by=target form=alphabet measure=id role=writes scope=dep/runtime-prose-render shape=dist/regions/text.js value=sha256:67c56505dc51e1f7c0e9926df43d0e05d19a158edd4b1be1db95666d0bac8951
806
957
  bound-lock/1 at=policy:head/forge by=target form=alphabet measure=id role=writes scope=sources/prose-render value=https://github.com/Lapxo/topos/releases/download/v0.1.13/907115916d64425dd23305fc74d91ea937f933de4949fb0c4dc94fb1106bd33e
807
958
  bound-lock/1 at=policy:head/forge by=target form=alphabet measure=id role=writes scope=sources/runtime-prose-render value=https://github.com/Lapxo/topos/releases/download/v0.1.13/67c56505dc51e1f7c0e9926df43d0e05d19a158edd4b1be1db95666d0bac8951
@@ -830,10 +981,17 @@ bound-lock/1 at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=
830
981
  bound-lock/1 at=policy:head/marks/0.1.5 by=target form=alphabet measure=id role=writes scope=said/forked/state value=done
831
982
  bound-lock/1 at=policy:head/numbers/0.1.5 by=target form=alphabet measure=id role=writes scope=said/unmeasured/state value=open
832
983
  bound-lock/1 at=policy:head/release by=target form=alphabet measure=id role=writes scope=release/blocks value=integrity|pins|cli|surface
833
- bound-lock/1 at=policy:head/release by=target form=alphabet measure=id role=writes scope=release/category/cli value=cli/**|cost/act
834
984
  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
835
- bound-lock/1 at=policy:head/release by=target form=alphabet measure=id role=writes scope=release/category/pins value=resolve-by-url|offline|the-stranger
836
985
  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
986
+ 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
+ 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
+ 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.0 by=target form=alphabet measure=id role=writes scope=version value=0.2.0
837
995
  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
838
996
  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
839
997
  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
@@ -963,6 +1121,25 @@ bound-lock/1 at=policy:head/shape/0.1.6 by=target form=alphabet measure=id role=
963
1121
  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
964
1122
  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
965
1123
  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
1124
+ 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
+ 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
+ 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:
1127
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-empty/next value=none
1128
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-empty/state value=open
1129
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-inspected/next value=none
1130
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-inspected/state value=done
1131
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-needs/next value=none
1132
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-needs/state value=open
1133
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-refused/next value=none
1134
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-refused/state value=refused
1135
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-shared/next value=none
1136
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/birth-shared/state value=done
1137
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/reference-needs/next value=none
1138
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=said/reference-needs/state value=open
1139
+ bound-lock/1 at=policy:head/share-inspect/0.2.0 by=target form=alphabet measure=id role=writes scope=share/birth-file value=birth.topos
1140
+ 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
+ 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
+ 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
966
1143
  bound-lock/1 at=policy:head/signer by=target form=interval measure=bytes role=writes scope=signer/response-bytes value=1048576..1048576
967
1144
  bound-lock/1 at=policy:head/signer by=target form=interval measure=milliseconds role=writes scope=signer/timeout value=30000..30000
968
1145
  bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/access/required value=source
@@ -1055,6 +1232,13 @@ bound-lock/1 at=policy:head/vocabulary by=target form=alphabet measure=id role=w
1055
1232
  bound-lock/1 at=policy:head/walk by=target form=alphabet measure=id role=writes scope=birth/wire/walk/metadata-fields value=at|by|condition|epoch|form|measure|role|scope|sig|value
1056
1233
  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
1057
1234
  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
+ 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
1058
1242
  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
1059
1243
  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
1060
1244
  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
@@ -1078,4 +1262,3 @@ bound-lock/1 at=policy:project by=target form=alphabet measure=coordinates role=
1078
1262
  bound-lock/1 at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/source value=src/**
1079
1263
  bound-lock/1 at=policy:project by=target form=alphabet measure=id role=writes scope=license value=MIT
1080
1264
  bound-lock/1 at=policy:project by=target form=alphabet measure=id role=writes scope=name value=@lapxo/head
1081
- bound-lock/1 at=policy:project/0.1.6 by=target form=alphabet measure=id role=writes scope=version value=0.1.6