@lapxo/head 0.1.0 → 0.1.3

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 (66) hide show
  1. package/TARGET.bound +392 -49
  2. package/dist/src/access/contract.d.ts +2 -0
  3. package/dist/src/access/obtain.js +2 -2
  4. package/dist/src/adopt/adopt.js +5 -2
  5. package/dist/src/compile/pin.js +5 -5
  6. package/dist/src/core/act.d.ts +1 -0
  7. package/dist/src/core/act.js +1 -0
  8. package/dist/src/core/answer.d.ts +16 -4
  9. package/dist/src/core/answer.js +7 -4
  10. package/dist/src/core/lock.d.ts +2 -0
  11. package/dist/src/core/lock.js +2 -0
  12. package/dist/src/core/package.d.ts +54 -0
  13. package/dist/src/core/package.js +65 -0
  14. package/dist/src/core/read.d.ts +3 -0
  15. package/dist/src/core/read.js +8 -4
  16. package/dist/src/core/surface.d.ts +1 -40
  17. package/dist/src/core/surface.js +4 -29
  18. package/dist/src/core/trust.d.ts +7 -0
  19. package/dist/src/core/trust.js +19 -0
  20. package/dist/src/flows/device.js +1 -6
  21. package/dist/src/flows/read.js +18 -8
  22. package/dist/src/flows/world.js +3 -3
  23. package/dist/src/index.js +37 -18
  24. package/dist/src/onboard/first.d.ts +7 -0
  25. package/dist/src/onboard/first.js +21 -0
  26. package/dist/src/places/admit.js +1 -1
  27. package/dist/src/places/found.d.ts +1 -0
  28. package/dist/src/places/found.js +8 -7
  29. package/dist/src/ports/access/authorizer.d.ts +10 -0
  30. package/dist/src/ports/access/authorizer.js +34 -0
  31. package/dist/src/ports/access/flow.js +13 -3
  32. package/dist/src/ports/access/person.d.ts +3 -2
  33. package/dist/src/ports/access/person.js +12 -5
  34. package/dist/src/ports/adapters/request.d.ts +3 -0
  35. package/dist/src/ports/adapters/request.js +5 -3
  36. package/dist/src/ports/bound.d.ts +12 -2
  37. package/dist/src/ports/bound.js +30 -13
  38. package/dist/src/ports/documents.d.ts +34 -0
  39. package/dist/src/ports/documents.js +64 -0
  40. package/dist/src/ports/keychain.d.ts +2 -1
  41. package/dist/src/ports/keychain.js +3 -2
  42. package/dist/src/ports/place.d.ts +1 -0
  43. package/dist/src/ports/place.js +7 -1
  44. package/dist/src/ports/process.d.ts +9 -0
  45. package/dist/src/ports/process.js +5 -3
  46. package/dist/src/ports/spare.d.ts +1 -0
  47. package/dist/src/ports/spare.js +33 -0
  48. package/dist/src/ports/surface.d.ts +126 -0
  49. package/dist/src/ports/surface.js +48 -0
  50. package/dist/src/ports/warm.d.ts +19 -0
  51. package/dist/src/ports/warm.js +46 -0
  52. package/dist/src/signer.js +1 -1
  53. package/dist/src/sources/access.d.ts +10 -1
  54. package/dist/src/sources/access.js +15 -10
  55. package/dist/src/sources/connect.d.ts +5 -2
  56. package/dist/src/sources/connect.js +98 -36
  57. package/dist/src/tools/card.js +1 -1
  58. package/dist/src/tools/look.d.ts +2 -2
  59. package/dist/src/tools/look.js +4 -3
  60. package/dist/src/tools/places.d.ts +7 -0
  61. package/dist/src/tools/places.js +32 -0
  62. package/dist/src/tools/share.d.ts +1 -0
  63. package/dist/src/tools/share.js +1 -0
  64. package/package.json +6 -5
  65. /package/dist/src/{core → ports}/keys.d.ts +0 -0
  66. /package/dist/src/{core → ports}/keys.js +0 -0
package/TARGET.bound CHANGED
@@ -3,6 +3,7 @@ bound-lock/1 about="A place is founded in an absolute folder: nothing was made."
3
3
  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
4
4
  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
5
5
  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
6
+ 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
6
7
  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
7
8
  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
8
9
  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
@@ -20,41 +21,56 @@ bound-lock/1 about="Call one offer that is not of class read, only as far as the
20
21
  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
21
22
  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
22
23
  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
23
- 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." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/connect value=place|source|document|overlay
24
+ 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. And an origin alone, with no source, is used on one yes: a read-only place of its own, its document found where the origin says, compiled, and reads granted." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=tool/connect value=place|source|document|overlay|digest|via|accept
24
25
  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
25
26
  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
27
+ 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
26
28
  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
27
29
  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
28
30
  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
29
31
  bound-lock/1 about="Found the place {name} in {dir} with the place tool. Ask me before you do." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/place/text value=lock
30
32
  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
31
33
  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
34
+ 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
32
35
  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
33
36
  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
34
- bound-lock/1 about="Its document: an https address, or an absolute file inside the place or a folder the client shares." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/connect/document value=string
37
+ 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. An origin alone, such as api.example.com, with no source, is used: on one yes head founds a read-only place of its own for it, finds its document where the origin publishes its catalog or at the paths head-s lock names, compiles it, caps every call that is not a read at zero and grants reads for the period head-s lock names." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=tool/connect/document value=string
35
38
  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
36
39
  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
37
40
  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
41
+ 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
38
42
  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
39
43
  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
44
+ 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
40
45
  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
41
46
  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
42
47
  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
48
+ 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
43
49
  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}
44
50
  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
45
51
  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
52
+ 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
53
+ 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
46
54
  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
47
55
  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
48
56
  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
49
57
  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
50
58
  bound-lock/1 about="Prove access to {source} in {place} with the access tool. I will enter what it asks on head-s own page or at its provider, never here." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/access/text value=lock
51
- bound-lock/1 about="Read one view of a place as bound folds it; or what a source offers, as typed lines: at 0 where it is reached and the class of each offer, at 1 (the default) their forms and how access is proven; or, at 8 with an operation of class read, that operation once: the response comes back with the receipt the device key landed for it. Nothing else is ever called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/look value=place|view|at|source|operation|args|closes|history
59
+ bound-lock/1 about="Read one view of a place as bound folds it; or what a source offers, as typed lines: at 0 where it is reached and the class of each offer, at 1 (the default) their forms and how access is proven; or, at 8 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/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=tool/look value=place|view|at|source|operation|args|closes|history|why
60
+ 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
61
+ 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
62
+ 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
63
+ bound-lock/1 about="Share the place {place} with {who}: pack it with the share tool 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/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=prompt/share/text value=lock
52
64
  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
53
65
  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
66
+ 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
54
67
  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
68
+ 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
55
69
  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
56
- 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." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/step-unanswered value=lock
70
+ 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
57
71
  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
72
+ bound-lock/1 about="The folder of the place it is received into, absolute." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=prompt/receive/place value=string
73
+ bound-lock/1 about="The folder of the place, absolute." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=prompt/share/place value=string
58
74
  bound-lock/1 about="The folder of the place, absolute; without one, the first root the client shares." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/access/place value=string
59
75
  bound-lock/1 about="The folder of the place, absolute; without one, the first root the client shares." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/act/place value=string
60
76
  bound-lock/1 about="The folder of the place, absolute; without one, the first root the client shares." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/admit/place value=string
@@ -62,40 +78,43 @@ bound-lock/1 about="The folder of the place, absolute; without one, the first ro
62
78
  bound-lock/1 about="The folder of the place, absolute; without one, the first root the client shares." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/connect/place value=string
63
79
  bound-lock/1 about="The folder of the place, absolute; without one, the first root the client shares." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/look/place value=string
64
80
  bound-lock/1 about="The folder of the place, absolute; without one, the first root the client shares." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/plan/place value=string
81
+ 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
65
82
  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
66
83
  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
84
+ 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
67
85
  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
68
86
  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
69
87
  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
70
88
  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
71
89
  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
90
+ 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
72
91
  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
73
92
  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
74
93
  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
75
94
  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
76
- bound-lock/1 about="The name the source is known by in the place." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/connect/source value=string
95
+ 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
77
96
  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
78
97
  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
79
98
  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
80
99
  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
81
100
  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/look/operation value=string
101
+ 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
82
102
  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
83
103
  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
84
- bound-lock/1 about="The person asked to be asked first and this client cannot ask: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/cannot-ask value=lock
85
- bound-lock/1 about="The person did not finish entering what {source} asks for, or no page could be offered: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/entry-unfinished value=lock
104
+ bound-lock/1 about="The person did not finish entering what {source} asks for, or no page could be offered: nothing was called. Asking again, with the person there, pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/entry-unfinished value=lock
86
105
  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
87
106
  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
88
107
  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
89
108
  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
90
109
  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
91
110
  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
92
- bound-lock/1 about="The response from {source} ran past read/response-bytes: it was refused whole and nothing landed." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/too-large value=lock
111
+ 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
93
112
  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
94
113
  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
95
114
  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
96
115
  bound-lock/1 about="The source." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/access/source value=string
97
- bound-lock/1 about="The way {source} proves access asks its host for {input}, which head does not hand any flow: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/host-input value=lock
98
- bound-lock/1 about="The world compiled nothing {source} offers: nothing was pinned." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/nothing-offered value=lock
116
+ 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
117
+ 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
99
118
  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
100
119
  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
101
120
  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
@@ -105,30 +124,90 @@ bound-lock/1 about="This place signs no view of cells: nothing is open to ask."
105
124
  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
106
125
  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
107
126
  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
108
- bound-lock/1 about="What {source} carries for this offer is not one request: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/carry-unsettled value=lock
109
- 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." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/cross-origin value=lock
127
+ 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
128
+ 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
129
+ 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
130
+ 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
131
+ 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
110
132
  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
111
133
  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
134
+ 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
135
+ 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
112
136
  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
113
137
  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
114
138
  bound-lock/1 about="a document compiled once into a standing a place pins from its own store, and the demands a later document pays: split from the sources when connect reached its ceiling, never raised" at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/compile value=src/compile/**
139
+ 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
140
+ 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
141
+ 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
142
+ 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
143
+ 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
144
+ 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
145
+ 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
146
+ 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
147
+ 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
148
+ 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
149
+ 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
115
150
  bound-lock/1 about="a page of head: connecting a public API at each level of access, every example run against the real API" at=policy:head/docs by=target form=alphabet measure=id role=writes scope=docs/page/connect-any-api value=docs/connect-any-api.md
151
+ 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
152
+ 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
116
153
  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
154
+ 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
155
+ 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
156
+ 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-admit/next value=none
157
+ 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-connect/next value=none
158
+ 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-first-run/next value=none
159
+ 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-place/next value=none
160
+ 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-receive/next value=none
161
+ 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-use/next value=none
162
+ 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/next value=none
163
+ 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/yes/next value=none
164
+ 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/enter/next value=none
165
+ 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/grant/next value=none
166
+ 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/pick/next value=none
167
+ 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/trust-none/next value=none
168
+ 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/trust-one-time/next value=none
169
+ 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/trust-secret/next value=none
170
+ 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/trust/next value=none
171
+ 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
117
172
  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
173
+ 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
118
174
  bound-lock/1 about="a view is lines of text" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=resource/view/mime value=text/plain
119
- bound-lock/1 about="a world head carries and adopts in every place it connects, pinned by its standing and its blob where its release publishes them; what it reads is said by its standing, never here" at=policy:head/worlds by=target form=alphabet measure=digest role=writes scope=world/topos-mcp/standing value=sha256:b3de7547323c523c1bb6847872a2602c9734950a7bd677607c981e7332f982c8
120
- bound-lock/1 about="a world head carries and adopts in every place it connects, pinned by its standing and its blob where its release publishes them; what it reads is said by its standing, never here" at=policy:head/worlds by=target form=alphabet measure=digest role=writes scope=world/topos-openapi/standing value=sha256:03d1d957c2df3086a0d11d2ee95eb028a5a8230b423ea72d3e9562f9bd031d4b
175
+ bound-lock/1 about="a view of cells the place signs" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-cells/next value=none
176
+ bound-lock/1 about="a wider allowance the person signs" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-allowed/next value=none
177
+ bound-lock/1 about="a wider read/response-bytes the root signs" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/too-large/next value=none
178
+ bound-lock/1 about="a world head carries and adopts in every place it connects, pinned by its standing and its blob where its release publishes them; what it reads is said by its standing, never here" at=policy:head/worlds/0.2.0 by=target form=alphabet measure=digest role=writes scope=world/topos-mcp/standing value=sha256:bb3fe7c5e79fc72e6dd6548cfdcb33dcfea62344f1d4c629ebdc828c7c865899
179
+ bound-lock/1 about="a world head carries and adopts in every place it connects, pinned by its standing and its blob where its release publishes them; what it reads is said by its standing, never here" at=policy:head/worlds/0.2.0 by=target form=alphabet measure=digest role=writes scope=world/topos-openapi/standing value=sha256:24e6ad5fd58afce93964cdf1079a353046b09b5a075906b3dad225bfe21cda74
180
+ bound-lock/1 about="access the document accepts" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/fetch-status/next value=none
181
+ 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
182
+ 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
121
183
  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
184
+ 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
185
+ 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
186
+ 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
122
187
  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
188
+ 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
189
+ 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
190
+ 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
191
+ 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
192
+ 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
193
+ 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
194
+ bound-lock/1 about="an overlay that states it" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/access-unstated/next value=none
195
+ bound-lock/1 about="an overlay whose flow asks the person" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/host-input/next value=none
196
+ bound-lock/1 about="an overlay whose flow goes on" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/step-unanswered/next value=none
197
+ bound-lock/1 about="another name" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/place-taken/next value=none
198
+ bound-lock/1 about="another name, or the old admission withdrawn" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/key-taken/next value=none
123
199
  bound-lock/1 about="answering a question takes at most this; slower reads red with its coordinate" at=policy:head/ceilings by=target form=interval measure=seconds role=reads scope=answer/seconds value=0..2
124
200
  bound-lock/1 about="asked again, key answers the same lines; the first ask makes the key" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/key/hints value=idempotent
125
- bound-lock/1 about="bound did not settle the place {source} compiles to: {why} Nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/unsettled value=lock
201
+ 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
202
+ 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
203
+ 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
126
204
  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
127
- bound-lock/1 about="bound refused to fold {place}: {why} Nothing was signed and nothing landed." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/unfolded value=lock
205
+ 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
128
206
  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
129
207
  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
130
208
  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
131
209
  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
210
+ 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
132
211
  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
133
212
  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
134
213
  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
@@ -139,41 +218,61 @@ bound-lock/1 about="every tool and resource line has its module, and every modul
139
218
  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
140
219
  bound-lock/1 about="head asks before it calls {operation} on {source}: {call}. Say yes only to this call; your yes is signed for it alone." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/elicit-act value=lock
141
220
  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
221
+ 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
142
222
  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
143
223
  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
224
+ 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 — and to connect {source} to it from {document}: compiled once and pinned; nothing is called. Say yes only to this; a place elsewhere, named as you like, is founded with the place tool." at=policy:head/surface/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit-first-run value=lock
225
+ 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
144
226
  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
145
- bound-lock/1 about="head carries no transport for {origin}: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-transport value=lock
227
+ 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
228
+ 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
146
229
  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
147
230
  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
148
231
  bound-lock/1 about="head may read {sources} in {place} until {until}: no read asks again before then, writes still do. Say yes only to exactly this." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/grant value=lock
149
232
  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
150
233
  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
151
234
  bound-lock/1 about="head reads an API by the document its provider already publishes. Here is one way for each level of access: the first two run against a real public API and its real document, and the third as head does it for any document that declares a key.\n\n### No access: Open-Meteo\n\nOpen-Meteo's forecast needs no key, but its document ([forecast.yml](https://github.com/open-meteo/open-meteo/blob/main/openapi/forecast.yml)) does not say so, and head never guesses: an operation whose document says nothing about access is listed and never called. One overlay says what the provider says on its own site:\n\n```yaml\noverlay: 1.0.0\ninfo: { title: Open-Meteo forecast, read without a key, version: '1' }\nactions:\n - target: \"$.paths['/v1/forecast'].get\"\n description: the free forecast needs no key, as open-meteo.com says\n update: { security: [] }\n```\n\nConnect `forecast.yml` as `weather` with that overlay beside it and read `get-v1-forecast` at a latitude and a longitude. The document names two servers, so the person picks one, once. 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/286b453612143d46/current/temperature_2m number 11.9\nanswer/286b453612143d46/current_units/temperature_2m text °C\nanswer/286b453612143d46/current/wind_speed_10m number 7.9\nread/weather/get-v1-forecast/286b453612143d46 digest sha256:… signed by head\n```\n\n### A declared flow: Spotify\n\nSpotify's document ([the community OpenAPI description](https://github.com/sonallux/spotify-web-api)) 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 Spotify, signed into the place as `keys/access/music/oauth_2_0 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." at=policy:head/docs by=target form=alphabet measure=text role=writes scope=prose/en/page/connect-any-api value=lock
152
- 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." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/platform value=lock
235
+ 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
153
236
  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
154
237
  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
155
238
  bound-lock/1 about="head-s own place — the index of the places it founded — is this folder, or ~/<home/folder> without it" at=policy:head/home by=target form=alphabet measure=id role=writes scope=home/env value=HEAD_HOME
239
+ bound-lock/1 about="history, not a current answer" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history/next value=none
156
240
  bound-lock/1 about="how a place is made walkable: the context a peer authenticates it by, folded and pinned" at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/walk value=src/walk/**
157
241
  bound-lock/1 about="how a reader installs the package: this verb, then the name its manifest carries" at=policy:head/docs by=target form=alphabet measure=id role=writes scope=install value="npm install"
158
242
  bound-lock/1 about="how a secret is asked: only on head-s one-time page, never a form the model could see" at=policy:head/ask by=target form=alphabet measure=id role=writes scope=ask/secret-channels value=url|device
159
- bound-lock/1 about="how a yes is asked: only through what the client declares; a client that declares neither leaves the lines to the person to sign" at=policy:head/ask by=target form=alphabet measure=id role=writes scope=ask/consent-channels value=form|url
243
+ bound-lock/1 about="how a yes is asked, 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. The yes is the person-s answer on it, never the model-s" at=policy:head/ask/0.1.1 by=target form=alphabet measure=id role=writes scope=ask/consent-channels value=form|url|device
160
244
  bound-lock/1 about="how access is obtained and what an adapter is handed: split from the core when the core reached its ceiling, never raised" at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/access value=src/access/**
161
245
  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
162
246
  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
163
247
  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
248
+ 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
164
249
  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
165
250
  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
251
+ 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
166
252
  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
253
+ 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.1\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 \"$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/forge by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/release shape=.github/workflows/release.yml value=lock
254
+ bound-lock/1 about="name: tag\non:\n workflow_run:\n workflows: [test]\n types: [completed]\njobs:\n tag:\n if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' && github.event.workflow_run.head_branch == 'main'\n runs-on: ubuntu-latest\n permissions:\n contents: write\n steps:\n - uses: actions/checkout@v4\n with:\n ref: ${{ github.event.workflow_run.head_sha }}\n fetch-depth: 0\n - run: |\n version=\"v$(node -p \"require('./package.json').version\")\"\n git tag --list \"$version\" | grep -q . && exit 0\n git tag \"$version\" && git push origin \"$version\"\n" at=policy:head/forge by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/tag shape=.github/workflows/tag.yml value=lock
255
+ bound-lock/1 about="name: test\non:\n push:\n branches: [main]\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]\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 tests, shard ${{ matrix.shard }} of 3\n run: |\n set -euo pipefail\n node --test --test-shard=${{ matrix.shard }}/3 test/*.test.ts 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: ${{ runner.temp }}/head-tests.log\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: 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: 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: 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 \"$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" at=policy:head/forge by=target form=alphabet measure=text role=writes scope=prose/en/pipeline/test shape=.github/workflows/test.yml value=lock
167
256
  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
257
+ 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
258
+ 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
259
+ 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
168
260
  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
261
+ bound-lock/1 about="places reads and never writes; asked twice it answers the same" at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=tool/places/hints value=readOnly|idempotent
169
262
  bound-lock/1 about="places/<name> value=<folder>, signed by the index-s root: where each place head founded lives" at=policy:head/home by=target form=alphabet measure=id role=writes scope=home/family value=places
170
- bound-lock/1 about="read/rate is spent for {source} this hour: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/rate value=lock
263
+ 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
264
+ 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
171
265
  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
172
- bound-lock/1 about="the SDK head reads lines through, as published" at=policy:head/pins by=target form=alphabet measure=digest needs=node_modules/@lapxo/topos role=reads scope=dep/topos shape=package value=sha256:21e030acdc0d825e183b30f94d400daf351b02f782d474635f246de9e6e12b83
266
+ bound-lock/1 about="the SDK head reads lines through, as published" at=policy:head/pins/0.2.0 by=target form=alphabet measure=digest needs=node_modules/@lapxo/topos role=reads scope=dep/topos shape=package value=sha256:fd7fb3783cad1919a7b0236df096c6b4c0d71d5a2f81fb14532779e1e83da261
173
267
  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
174
268
  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
175
269
  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
270
+ 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
271
+ 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
272
+ 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
176
273
  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
274
+ 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
275
+ 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
177
276
  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
178
277
  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
179
278
  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
@@ -182,6 +281,9 @@ bound-lock/1 about="the coordinates a reader is given when the view of the place
182
281
  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/**
183
282
  bound-lock/1 about="the days one signed sentence lets head read the sources of a place, before the person is asked again" at=policy:head/access by=target form=alphabet measure=id role=writes scope=access/period value=90
184
283
  bound-lock/1 about="the depth of scopes the owner-s key reaches (value read from Lapxo/topos)" at=policy:world/founding by=target form=interval measure=resolution role=reads scope=keys/owner value=1..16
284
+ 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
285
+ 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
286
+ 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
185
287
  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
186
288
  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
187
289
  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
@@ -194,20 +296,26 @@ bound-lock/1 about="the family of what a person allows: allow/<source>/<operatio
194
296
  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
195
297
  bound-lock/1 about="the field a widening its root signs names who said yes in, by the key the place knows them by: the policy is the place-s, the witness is named" at=policy:head/places by=target form=alphabet measure=id role=writes scope=widening/witness value=witness
196
298
  bound-lock/1 about="the fields a line of this place may carry (value read from Lapxo/topos)" at=policy:world/founding by=target form=alphabet measure=id role=reads scope=audit/wire/fields value=scope|role|form|measure|value|by|at|needs|sig|epoch|shape|restsOn|condition|about|kind|view
299
+ bound-lock/1 about="the fields a place-s native receipts project, as topos declares them, so bound renders its receipts with no other world" at=policy:head/birth/0.1.2 by=target form=alphabet measure=id role=writes scope=birth/audit/wire/receipt-fields value=scope|role|measure|form|value|at
300
+ bound-lock/1 about="the fields a walked line may carry: a world-s blob is pinned with its shape, and a grant the person witnessed names its witness; a field the contract omits makes the place unwalkable" at=policy:head/walk/0.1.1 by=target form=alphabet measure=id role=writes scope=birth/wire/walk/fields value=scope|role|form|measure|value|by|at|epoch|condition|needs|shape|witness
197
301
  bound-lock/1 about="the fields this place-s native receipts project, as topos declares them, so bound renders receipts.bound with no other world (value read from Lapxo/topos)" at=policy:world/founding by=target form=alphabet measure=id role=reads scope=audit/wire/receipt-fields value=scope|role|measure|form|value|at
302
+ bound-lock/1 about="the folder a person-s first place is founded in, under their own home, when they connect a source naming no place: named for what it holds, theirs to rename by founding another with the place tool" at=policy:head/onboard/0.1.2 by=target form=alphabet measure=id role=writes scope=first-run/folder value=place
198
303
  bound-lock/1 about="the folder of a place a body is laid in while bound reads it, and taken from once it has" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=place/answers value=.answers
199
304
  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
200
305
  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
201
306
  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
202
- bound-lock/1 about="the instrument head runs, as published" at=policy:head/pins by=target form=alphabet measure=digest needs=node_modules/@lapxo/bound role=reads scope=dep/bound shape=package value=sha256:15236cbc9354a4c769a08a7acff962bcf9279a0d05c06beb16edef2db1c8aaaa
307
+ bound-lock/1 about="the instrument head runs, as published" at=policy:head/pins/0.2.1 by=target form=alphabet measure=digest needs=node_modules/@lapxo/bound role=reads scope=dep/bound shape=package value=sha256:f232bcd244be5f98e7c5bff6061273e220545e4a70abc2dbcfce0cb20be891f8
203
308
  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
204
309
  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
205
310
  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}
206
311
  bound-lock/1 about="the keychain entry the token an issuer grants is kept under, one per place and issuer: every source whose scheme names that issuer attaches it" at=policy:head/access by=target form=alphabet measure=id role=writes scope=access/issuer-account value=place/{place}/issuer/{issuer}
207
312
  bound-lock/1 about="the keychain service every device secret is kept under; a secret never leaves the keychain but through the signer" at=policy:head/device by=target form=alphabet measure=id role=writes scope=device/service value=@lapxo/head
313
+ bound-lock/1 about="the kinds of input that lower an access flow-s trust, the least trusted first; a flow that asks none of them asks no secret" at=policy:head/access/0.1.1 by=target form=alphabet measure=id role=writes scope=access/trust-order value=secret|one-time
208
314
  bound-lock/1 about="the language head's pages are said in" at=policy:head/docs by=target form=alphabet measure=id role=writes scope=lang value=en
209
315
  bound-lock/1 about="the ledger a place-s history is said to come from, named by the place" at=policy:head/walk by=target form=alphabet measure=id role=writes scope=birth/walk/origin value={place}-ledger
210
316
  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
317
+ 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
318
+ 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
211
319
  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
212
320
  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
213
321
  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
@@ -216,39 +324,68 @@ bound-lock/1 about="the lines of the core region, together" at=policy:head/ceili
216
324
  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
217
325
  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
218
326
  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
327
+ 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
219
328
  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
220
329
  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
221
330
  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
222
331
  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
332
+ bound-lock/1 about="the manifest of the Desktop Extension, rendered from the lock and never written by hand" at=policy:head/forge by=target form=alphabet measure=role role=reads scope=leaf-role/manifest.json value=derived
333
+ 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
334
+ 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
335
+ 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
336
+ 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
223
337
  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
224
338
  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
339
+ 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
225
340
  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
226
341
  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
227
342
  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
343
+ 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
344
+ 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
345
+ 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
346
+ bound-lock/1 about="the person picks one origin" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/pick-origin/next value=none
347
+ bound-lock/1 about="the person said no" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-yes/next value=none
348
+ bound-lock/1 about="the person signs these lines in their place and lands them" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/sign-yourself/next value=none
228
349
  bound-lock/1 about="the person-s key on this device: it signs what the person allows and when they must be asked, and nothing else" at=policy:head/device by=target form=alphabet measure=id role=writes scope=device/person/account value=person
229
350
  bound-lock/1 about="the place vocabulary head reads a source in: where it is reached, how access is proven, what it offers; no word of a kind of source" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=vocab/offers value=offers
351
+ bound-lock/1 about="the profile of the record bound prints after the diagnostic of a refusal, from 0.2.1: head reads it apart, and the diagnostic stays what the refusal says" at=policy:head/bound/0.2.1 by=target form=alphabet measure=id role=writes scope=bound/refusal value=bound-refusal@1
230
352
  bound-lock/1 about="the protocol handler Windows opens an address with, started directly, never through cmd" at=policy:head/platform by=target form=alphabet measure=id role=writes scope=platform/win32/browser value=rundll32|url.dll,FileProtocolHandler
231
353
  bound-lock/1 about="the protocol head answers through, imported by one file only" at=policy:head/pins by=target form=alphabet measure=digest needs=node_modules/@modelcontextprotocol/sdk role=reads scope=dep/sdk shape=package value=sha256:63a3962282ff29d2ce532945c2edefd9b7c7195b8ec20c027e120e4498b0cb19
232
354
  bound-lock/1 about="the protocol is spoken by one file; everything else answers in lines" at=policy:head/ceilings by=target form=interval measure=count role=reads scope=surface/sdk-importers value=0..1
233
355
  bound-lock/1 about="the readme of head, in the one shape every place follows, every word of it a line of this lock; open and check are left out while a place outside the tree renders it: open would read the instrument's own demands as head's, and check counts cases from receipts head's vectors do not land yet" at=policy:head/docs by=target form=alphabet measure=id role=demands scope=view/readme shape=README.md value=hero|media|door|idea|figure|claims|learn|refuses|install|reading|how-they-rest|rested-on-by|pointers
356
+ bound-lock/1 about="the receipt stands as evidence" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-gone/next value=none
357
+ bound-lock/1 about="the receipt stands as evidence" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-untyped/next value=none
234
358
  bound-lock/1 about="the receipts head-s repository carries: the observations at 8, the summary at 0, the region bytes at 1" at=policy:head/docs by=target form=alphabet measure=id role=demands scope=view/receipts shape=receipts.bound value=receipts@8|receipts@0|receipts@1
235
359
  bound-lock/1 about="the region a walk context is folded under" at=policy:head/walk by=target form=alphabet measure=id role=writes scope=walk/context/region value=region/context
360
+ bound-lock/1 about="the relation a catalog names a document by (RFC 8631)" at=policy:head/use/0.1.1g by=target form=alphabet measure=id role=writes scope=use/catalog-rel value=service-desc
361
+ bound-lock/1 about="the release of that version: the archive the owner approved, judged by bound, the Desktop Extension made from it twice on macOS, then staged on npm by the trusted publisher" at=policy:head/forge by=target form=alphabet measure=id needs=.github/workflows/release.yml role=demands scope=view/pipeline-release shape=.github/workflows/release.yml value=text
362
+ bound-lock/1 about="the release of that version: the archive the owner approved, judged by bound, the Desktop Extension made from it twice on macOS, then staged on npm by the trusted publisher" at=policy:head/forge by=target form=alphabet measure=text role=writes scope=region/pipeline-release value=lock
236
363
  bound-lock/1 about="the resolution a source is looked at without one: its offers, their forms and how access is proven" at=policy:head/look by=target form=alphabet measure=id role=writes scope=look/default value=1
237
364
  bound-lock/1 about="the resolution at which look reads one offer: one response, under the read ceilings" at=policy:head/look by=target form=alphabet measure=id role=writes scope=look/call value=8
238
365
  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
239
366
  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
367
+ 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
368
+ 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:
240
369
  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
241
370
  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
242
371
  bound-lock/1 about="the signer name a place declares for this key; the host binds it to head-s signer program" at=policy:head/device by=target form=alphabet measure=id role=writes scope=device/head/signer value=keychain
243
372
  bound-lock/1 about="the signer name a place declares for this key; the host binds it to head-s signer program" at=policy:head/device by=target form=alphabet measure=id role=writes scope=device/person/signer value=keychain
373
+ bound-lock/1 about="the source answering" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unreachable-source/next value=none
374
+ bound-lock/1 about="the source connected again" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/compiled-moved/next value=none
375
+ bound-lock/1 about="the states a cell of head-s answers is in: done, refused, open (something owed is named), red (a ceiling ran past, for the cell it measured), asked (a question the person reads)" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=shape/states value=done|refused|open|red|asked
376
+ 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
377
+ 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
378
+ 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
244
379
  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
245
380
  bound-lock/1 about="the transport an origin is reached by, chosen by its scheme; head carries one adapter per line" at=policy:head/transport by=target form=alphabet measure=id role=writes scope=adapter/https value=request
246
381
  bound-lock/1 about="the values and transforms a flow may name: extended by this line, never by a flow" at=policy:head/access by=target form=alphabet measure=id role=reads scope=wire/access-values value=$inputs|$steps|$response|$callback|$state|$verifier|$client|$scopes|$host|s256|base64url|base64
247
382
  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
248
383
  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
249
384
  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
385
+ 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_
250
386
  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
251
387
  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
388
+ 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
252
389
  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
253
390
  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
254
391
  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
@@ -260,54 +397,106 @@ bound-lock/1 about="what a place allows of inspecting retained reads: allow/hist
260
397
  bound-lock/1 about="what a place offers a peer it walks with: its policy and what it pins, never an identity" at=policy:head/walk by=target form=alphabet measure=id needs=allow/**|uses/**|dep/**|access/** role=demands scope=birth/view/walk value=walk@*
261
398
  bound-lock/1 about="what a place reads: a source connected and compiled once, access to it obtained" at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/sources value=src/sources/**
262
399
  bound-lock/1 about="what a place-s walk context holds: the keys a peer authenticates it by, its wire and its origin" at=policy:head/walk by=target form=alphabet measure=id role=writes scope=walk/context/reads value=keys/**|wire/**|walk/origin
400
+ 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
401
+ bound-lock/1 about="what bound names" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-landed/next value=none
402
+ bound-lock/1 about="what bound names" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/receipts-open/next value=none
403
+ bound-lock/1 about="what bound names" at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unfolded/next value=none
404
+ 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
263
405
  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 "
406
+ 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
264
407
  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
408
+ bound-lock/1 about="what share needs: the folder it writes" at=policy:head/surface/0.1.1 by=target form=alphabet measure=id role=writes scope=tool/share/required value=to
265
409
  bound-lock/1 about="what the first resolution shows of a source: where it is reached and the class of each offer" at=policy:head/look by=target form=alphabet measure=id role=writes scope=look/first value=origins|origin|class|tags
410
+ bound-lock/1 about="what the forge runs, rendered from the lock and never written by hand" at=policy:head/forge by=target form=alphabet measure=role role=reads scope=leaf-role/.github value=derived
411
+ bound-lock/1 about="where a person starts: the first place, founded with the first source they connect when they name none, and nothing else head needs to begin" at=policy:project/0.1.2 by=target form=alphabet measure=coordinates role=reads scope=region/onboard value=src/onboard/**
266
412
  bound-lock/1 about="where a place born before 0.1.0 kept a lock it adopted as its parent: a uses/<name> pinned from here makes head refuse the place by name" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=place/adopted value=.head/adopted
267
- bound-lock/1 about="where a place keeps each source compiled into a standing of its own, pinned by uses/<source> from its own store" at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=place/compiled value=.head/compiled
268
- bound-lock/1 about="where a place keeps its own walk context, laid beside its lock and pinned by walk/context" at=policy:head/walk by=target form=alphabet measure=id role=writes scope=walk/context/file value=.head/walk/context.bound
269
- bound-lock/1 about="where the bound package head pins is fetched from, verified by its digest" at=policy:head/pins by=target form=alphabet measure=id role=writes scope=sources/bound value=https://registry.npmjs.org/@lapxo/bound/-/bound-0.1.6.tgz
413
+ bound-lock/1 about="where a place head founds for an origin lives: a folder named by the origin, beside head-s own" at=policy:head/use/0.1.1g by=target form=alphabet measure=id role=writes scope=use/folder value={home}-places
414
+ 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
415
+ 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
416
+ 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
417
+ 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
418
+ bound-lock/1 about="where the bound package head pins is fetched from, verified by its digest" at=policy:head/pins/0.2.1 by=target form=alphabet measure=id role=writes scope=sources/bound value=https://registry.npmjs.org/@lapxo/bound/-/bound-0.2.1.tgz
270
419
  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
271
- bound-lock/1 about="where the topos package head pins is fetched from, verified by its digest" at=policy:head/pins by=target form=alphabet measure=id role=writes scope=sources/topos value=https://registry.npmjs.org/@lapxo/topos/-/topos-0.1.12.tgz
272
- 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 by=target form=alphabet measure=id role=writes scope=sources/topos-mcp value=https://github.com/Lapxo/topos-mcp/releases/download/v0.1.0/standing.bound
273
- 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 by=target form=alphabet measure=id role=writes scope=sources/topos-openapi value=https://github.com/Lapxo/topos-openapi/releases/download/v0.1.0/standing.bound
420
+ bound-lock/1 about="where the topos package head pins is fetched from, verified by its digest" at=policy:head/pins/0.2.0 by=target form=alphabet measure=id role=writes scope=sources/topos value=https://registry.npmjs.org/@lapxo/topos/-/topos-0.2.0.tgz
421
+ 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
422
+ 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
274
423
  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/**
424
+ 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
425
+ bound-lock/1 about="{\n \"manifest_version\": \"0.3\",\n \"name\": \"head\",\n \"display_name\": \"head\",\n \"version\": \"0.1.3\",\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 ],\n \"env\": {}\n }\n },\n \"tools\": [\n {\n \"name\": \"access\",\n \"description\": \"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.\"\n },\n {\n \"name\": \"act\",\n \"description\": \"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.\"\n },\n {\n \"name\": \"admit\",\n \"description\": \"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.\"\n },\n {\n \"name\": \"card\",\n \"description\": \"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.\"\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. And an origin alone, with no source, is used on one yes: a read-only place of its own, its document found where the origin says, compiled, and reads granted.\"\n },\n {\n \"name\": \"key\",\n \"description\": \"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.\"\n },\n {\n \"name\": \"land\",\n \"description\": \"Land a lot plan signed, by its digest, while the place still stands on the base it was planned against.\"\n },\n {\n \"name\": \"look\",\n \"description\": \"Read one view of a place as bound folds it; or what a source offers, as typed lines: at 0 where it is reached and the class of each offer, at 1 (the default) their forms and how access is proven; or, at 8 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.\"\n },\n {\n \"name\": \"place\",\n \"description\": \"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.\"\n },\n {\n \"name\": \"places\",\n \"description\": \"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.\"\n },\n {\n \"name\": \"plan\",\n \"description\": \"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.\"\n },\n {\n \"name\": \"share\",\n \"description\": \"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.\"\n }\n ],\n \"tools_generated\": false,\n \"keywords\": [\n \"bound\",\n \"openapi\",\n \"mcp\"\n ],\n \"compatibility\": {\n \"platforms\": [\n \"darwin\",\n \"win32\"\n ],\n \"runtimes\": {\n \"node\": \">=22.18\"\n }\n }\n}\n" at=policy:head/forge by=target form=alphabet measure=text role=writes scope=prose/en/bundle/manifest shape=manifest.json value=lock
275
426
  bound-lock/1 about="{count} lines landed." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/landed value=lock
276
427
  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
428
+ bound-lock/1 about="{document} answered {status} to the access {via} holds. Nothing was connected. Access {via} holds that {document} accepts pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/fetch-status value=lock
429
+ 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
430
+ 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
431
+ 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
432
+ 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
433
+ 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
277
434
  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
435
+ 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
436
+ 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
437
+ 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
278
438
  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
439
+ 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
279
440
  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
280
441
  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
281
442
  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
282
443
  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
283
- bound-lock/1 about="{operation} of {source} is of class {class}: listed, never called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/not-callable value=lock
284
- bound-lock/1 about="{operation} of {source} was read two ways: it is never called until one reading stands." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/split-offer value=lock
444
+ 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
445
+ 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
285
446
  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
286
- bound-lock/1 about="{operation} on {source} is allowed {allowed} times and was done {done}: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/not-allowed value=lock
287
- bound-lock/1 about="{origin} is not encrypted and is not this device: nothing was sent to it." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/insecure-origin value=lock
288
- bound-lock/1 about="{place} admits a key named {name} already, or this key under another name: nothing was admitted." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/key-taken value=lock
447
+ 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
448
+ 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
449
+ 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
450
+ 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
451
+ 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
452
+ 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
289
453
  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
290
454
  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
455
+ 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
456
+ 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
291
457
  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
292
- 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." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/parent-lock value=lock
458
+ 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
459
+ bound-lock/1 about="{source} answered {operation} from {origin} at {at}: said under 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.1g by=target form=alphabet measure=id role=writes scope=said/why value=lock
293
460
  bound-lock/1 about="{source} answered {status} to {operation}, and no world typed the answer here {why}: head hands no body." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/untyped value=lock
294
461
  bound-lock/1 about="{source} answered {status} to {operation}. What its document declares of the answer, one value a line:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/answered value=lock
295
- bound-lock/1 about="{source} declares no origin: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-origin value=lock
462
+ 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
463
+ 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
296
464
  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
297
465
  bound-lock/1 about="{source} did not answer: nothing landed." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/unreachable-source value=lock
298
- bound-lock/1 about="{source} did not grant access the way it declares: nothing was kept and nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/login-refused value=lock
299
- bound-lock/1 about="{source} does not state how access to {operation} is proven: head never guesses it. Nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/access-unstated value=lock
300
- 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." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/document-unsupported value=lock
301
- bound-lock/1 about="{source} is a document the world could not parse: {why}. It was laid and taken back; nothing was connected." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/document-unparsed value=lock
466
+ 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
467
+ 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 it pays it." at=policy:head/surface/0.1.1g by=target form=alphabet measure=id role=writes scope=said/access-unstated value=lock
468
+ 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
469
+ 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
302
470
  bound-lock/1 about="{source} is connected to {place}: {offers} offers, {reads} of them read; every other is listed, never called. Pinned as {pin}. How access is proven, and where it is reached:" at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/connected value=lock
303
471
  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
304
- 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." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/document-collision value=lock
305
- bound-lock/1 about="{source} offers no {operation}: nothing was called." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/unknown-operation value=lock
306
- 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." at=policy:head/surface by=target form=alphabet measure=id role=writes scope=said/no-adapter value=lock
472
+ 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
473
+ 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
474
+ 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
307
475
  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
308
476
  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
477
+ 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
309
478
  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
479
+ 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
310
480
  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
481
+ 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
482
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/access-anonymous/next value=none
483
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/access-kept/next value=none
484
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/admitted/next value=none
485
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/answered/next value=none
486
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/authorizer-observed/next value=none
487
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/born/next value=none
488
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/closed/next value=none
489
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/connected/next value=none
490
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-earlier/next value=none
491
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/landed/next value=none
492
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/place-held/next value=none
493
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/planned/next value=none
494
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/received/next value=none
495
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/reread/next value=none
496
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/resolved/next value=none
497
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/reused/next value=none
498
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/used/next value=none
499
+ bound-lock/1 about=done at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/why/next value=none
311
500
  bound-lock/1 at=policy:head/acts by=target form=alphabet measure=id role=writes scope=act/done value=done
312
501
  bound-lock/1 at=policy:head/authority by=owner epoch=1 form=alphabet measure=public-key role=writes scope=keys/owner sig="ed25519:era1:HIVD8P4NcWjPd0Fec8d1Ff52oPI+PMa6U+w8WHKAbj8sJtUWvG5Epmt/44DGRkGB455ByTtcMTK2jMGPN3EPBQ==" value="MCowBQYDK2VwAyEAIYI0be8OWhf3HcVceKpibjgZ+hbYJKYO5ayX8Kk16LE="
313
502
  bound-lock/1 at=policy:head/authority by=target form=alphabet measure=class role=writes scope=keys/owner value=authorize
@@ -366,6 +555,9 @@ bound-lock/1 at=policy:head/cryptography by=target form=alphabet measure=id role
366
555
  bound-lock/1 at=policy:head/cryptography by=target form=alphabet measure=id role=reads scope=wire/signature-algorithms value=ed25519:era1
367
556
  bound-lock/1 at=policy:head/device by=target form=alphabet measure=id role=writes scope=device/head/coverage value=read/**|kept/**|act/**|access/**
368
557
  bound-lock/1 at=policy:head/device by=target form=alphabet measure=id role=writes scope=device/person/coverage value=allow/**|ask/**
558
+ 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
559
+ 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
560
+ 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
369
561
  bound-lock/1 at=policy:head/founding by=target form=alphabet measure=id role=writes scope=founding/algorithm value=ed25519:era1
370
562
  bound-lock/1 at=policy:head/founding by=target form=alphabet measure=id role=writes scope=founding/root-account value=place/{place}/root
371
563
  bound-lock/1 at=policy:head/home by=target form=alphabet measure=id role=writes scope=home/folder value=.config/head
@@ -377,6 +569,159 @@ bound-lock/1 at=policy:head/release by=target form=alphabet measure=id role=writ
377
569
  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
378
570
  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
379
571
  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
572
+ 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
573
+ 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
574
+ 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
575
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/act-failed/next value=look
576
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/act-failed/next/args value=source:$source|operation:$operation|closes:$intent
577
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/act-failed/state value=open
578
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/admitted/state value=done
579
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/answer/state value=asked
580
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/answered/state value=done
581
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/attested-again/state value=done
582
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/authorizer-observed/state value=done
583
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/bad-lot/state value=refused
584
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/base-moved/state value=refused
585
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/born/state value=done
586
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/cannot-ask/state value=refused
587
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/carry-unsettled/state value=refused
588
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/closed/state value=done
589
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/compiled-moved/state value=refused
590
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/connected/state value=done
591
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/cross-origin/state value=refused
592
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/document-collision/state value=refused
593
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/document-digest/state value=refused
594
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/document-unparsed/state value=refused
595
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/document-unread/state value=refused
596
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/document-unsupported/state value=refused
597
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit-act/state value=asked
598
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit-admit/state value=asked
599
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit-connect/state value=asked
600
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit-first-run/state value=asked
601
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit-place/state value=asked
602
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit-receive/state value=asked
603
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit-use/state value=asked
604
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit/state value=asked
605
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/elicit/yes/state value=asked
606
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/enter/state value=asked
607
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/entry-unfinished/next value=access
608
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/entry-unfinished/next/args value=source:$source
609
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/entry-unfinished/state value=refused
610
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/fetch-cross-origin/state value=refused
611
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/fetch-redirect/state value=refused
612
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/fetch-status/state value=refused
613
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/grant/state value=asked
614
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-earlier/state value=done
615
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-gone/state value=done
616
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-none/next value=look
617
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-none/next/args value=source:$source|operation:$operation|at:8
618
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-none/state value=refused
619
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-undeclared/next value=plan
620
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-undeclared/next/args value=place:$place
621
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-undeclared/state value=refused
622
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history-untyped/state value=done
623
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/history/state value=done
624
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/host-input/state value=refused
625
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/insecure-origin/state value=refused
626
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/is-read/next value=look
627
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/is-read/next/args value=source:$source|operation:$operation|at:8
628
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/is-read/state value=refused
629
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/key-taken/state value=refused
630
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/landed/state value=done
631
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/login-refused/next value=access
632
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/login-refused/next/args value=source:$source
633
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/login-refused/state value=refused
634
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/missing-param/state value=refused
635
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-adapter/state value=refused
636
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-cells/state value=refused
637
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-client/next value=plan
638
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-client/state value=refused
639
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-key/state value=refused
640
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-keychain/state value=refused
641
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-lot/state value=refused
642
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-origin/next value=plan
643
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-origin/state value=refused
644
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-place/next value=places
645
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-place/state value=refused
646
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-role/state value=refused
647
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-root/state value=refused
648
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-transport/state value=refused
649
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-world/state value=open
650
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/no-yes/state value=refused
651
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-allowed/state value=refused
652
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-callable/next value=act
653
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-callable/next/args value=source:$source|operation:$operation
654
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-callable/state value=refused
655
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-covered/next value=plan
656
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-covered/next/args value=place:$place
657
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-covered/state value=refused
658
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/not-landed/state value=refused
659
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/nothing-offered/state value=refused
660
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/nothing-open/state value=refused
661
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/open/next value=look
662
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/open/next/args value=source:$source|operation:$operation|closes:$intent
663
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/open/state value=open
664
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/package-line/state value=refused
665
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/package-pin/state value=refused
666
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/package-world/state value=refused
667
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/parent-lock/state value=refused
668
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/pick-origin/state value=refused
669
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/pick/state value=asked
670
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/place-absolute/state value=refused
671
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/place-exists/next value=places
672
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/place-exists/state value=refused
673
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/place-held/state value=done
674
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/place-taken/state value=refused
675
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/places-none/next value=place
676
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/places-none/state value=refused
677
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/planned/state value=done
678
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/platform/state value=refused
679
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/rate/state value=refused
680
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/receipts-open/state value=red
681
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/received-open/state value=open
682
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/received/state value=done
683
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/red/state value=red
684
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/reread/state value=done
685
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/resolved/state value=done
686
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/reused/state value=done
687
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/secret-unallowed/next value=plan
688
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/secret-unallowed/state value=refused
689
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/share-none/next value=connect
690
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/share-none/next/args value=place:$place
691
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/share-none/state value=refused
692
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/share-to/state value=refused
693
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/shared/state value=done
694
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/sign-yourself/state value=open
695
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/split-offer/state value=refused
696
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/step-unanswered/state value=refused
697
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/too-large/state value=refused
698
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/trust-none/state value=asked
699
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/trust-one-time/state value=asked
700
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/trust-secret/state value=asked
701
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/trust/state value=asked
702
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unfolded/state value=refused
703
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unknown-operation/next value=look
704
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unknown-operation/next/args value=source:$source|at:1
705
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unknown-operation/state value=refused
706
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unreachable-source/state value=refused
707
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unreachable/state value=refused
708
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unread/next value=connect
709
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unread/next/args value=source:$source
710
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unread/state value=open
711
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unresolved/state value=open
712
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unsettled/state value=refused
713
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/untyped/state value=done
714
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unwitnessed/next value=plan
715
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unwitnessed/next/args value=place:$place
716
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/unwitnessed/state value=refused
717
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/use-held/state value=done
718
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/use-none/state value=refused
719
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/used/state value=done
720
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/visit/state value=asked
721
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/why-none/next value=look
722
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/why-none/next/args value=source:$source|operation:$operation|at:8
723
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/why-none/state value=refused
724
+ bound-lock/1 at=policy:head/shape/0.1.2 by=target form=alphabet measure=id role=writes scope=said/why/state value=done
380
725
  bound-lock/1 at=policy:head/signer by=target form=interval measure=bytes role=writes scope=signer/response-bytes value=1048576..1048576
381
726
  bound-lock/1 at=policy:head/signer by=target form=interval measure=milliseconds role=writes scope=signer/timeout value=30000..30000
382
727
  bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=prompt/access/required value=source
@@ -390,7 +735,6 @@ bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writ
390
735
  bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/access/required value=source
391
736
  bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/act/required value=source|operation
392
737
  bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/admit/required value=key|name
393
- bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/connect/required value=source|document
394
738
  bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/land/required value=lot
395
739
  bound-lock/1 at=policy:head/surface by=target form=alphabet measure=id role=writes scope=tool/place/required value=dir
396
740
  bound-lock/1 at=policy:head/transport by=target form=alphabet measure=id role=writes scope=adapter/request/content-type value=content-type
@@ -413,7 +757,6 @@ bound-lock/1 at=policy:head/vocabulary by=target form=alphabet measure=id role=w
413
757
  bound-lock/1 at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=vocab/unresolved value=unresolved
414
758
  bound-lock/1 at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=vocab/unstated value=unstated
415
759
  bound-lock/1 at=policy:head/vocabulary by=target form=alphabet measure=id role=writes scope=vocab/unsupported value=unsupported
416
- bound-lock/1 at=policy:head/walk by=target form=alphabet measure=id role=writes scope=birth/wire/walk/fields value=scope|role|form|measure|value|by|at|epoch|condition|needs
417
760
  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
418
761
  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
419
762
  bound-lock/1 at=policy:head/walk by=target form=alphabet measure=id role=writes scope=birth/wire/walk/resolutions value=0|1|8
@@ -430,14 +773,14 @@ bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads s
430
773
  bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads scope=wire/shapes value=decision|lock|package|reader|render|run|vector|view
431
774
  bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads scope=wire/states value=absent|present|unread|withdraw
432
775
  bound-lock/1 at=policy:head/wire by=target form=alphabet measure=id role=reads scope=wire/templates value={cone}|{roots}
433
- bound-lock/1 at=policy:head/worlds by=target form=alphabet measure=digest role=writes scope=world/topos-mcp/blob value=sha256:6d802285520ab4bc1b908bdfbf24216f62b154fa57fc4ab7ebd7f8c53c81c760
434
- bound-lock/1 at=policy:head/worlds by=target form=alphabet measure=digest role=writes scope=world/topos-openapi/blob value=sha256:931f99f5c8d4ea1a1945ad8dc4d9ee9bae6d0ac5c79996b7c04e67e719fcff0c
435
- bound-lock/1 at=policy:head/worlds by=target form=alphabet measure=id role=writes scope=sources/topos-mcp-blob value=https://github.com/Lapxo/topos-mcp/releases/download/v0.1.0/6d802285520ab4bc1b908bdfbf24216f62b154fa57fc4ab7ebd7f8c53c81c760.tar.gz
436
- bound-lock/1 at=policy:head/worlds by=target form=alphabet measure=id role=writes scope=sources/topos-openapi-blob value=https://github.com/Lapxo/topos-openapi/releases/download/v0.1.0/931f99f5c8d4ea1a1945ad8dc4d9ee9bae6d0ac5c79996b7c04e67e719fcff0c.tar.gz
437
776
  bound-lock/1 at=policy:head/worlds by=target form=alphabet measure=id role=writes scope=world/shape value=dist/index.js
777
+ bound-lock/1 at=policy:head/worlds/0.2.0 by=target form=alphabet measure=digest role=writes scope=world/topos-mcp/blob value=sha256:d2a4eaa804501a8425498499727954f3328a9bdda19651bc4757959f67cb0a6d
778
+ bound-lock/1 at=policy:head/worlds/0.2.0 by=target form=alphabet measure=digest role=writes scope=world/topos-openapi/blob value=sha256:13a79fc41f1b837a0527fbe4c5aed3cec190fae7d28215a36ec25e54f7d67274
779
+ bound-lock/1 at=policy:head/worlds/0.2.0 by=target form=alphabet measure=id role=writes scope=sources/topos-mcp-blob value=https://github.com/Lapxo/topos-mcp/releases/download/v0.1.1/d2a4eaa804501a8425498499727954f3328a9bdda19651bc4757959f67cb0a6d.tar.gz
780
+ bound-lock/1 at=policy:head/worlds/0.2.0 by=target form=alphabet measure=id role=writes scope=sources/topos-openapi-blob value=https://github.com/Lapxo/topos-openapi/releases/download/v0.1.1/13a79fc41f1b837a0527fbe4c5aed3cec190fae7d28215a36ec25e54f7d67274.tar.gz
438
781
  bound-lock/1 at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/checks value=test/**|vectors/**|samples/**
439
782
  bound-lock/1 at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/project value=package.json|LICENSE
440
783
  bound-lock/1 at=policy:project by=target form=alphabet measure=coordinates role=reads scope=region/source value=src/**
441
784
  bound-lock/1 at=policy:project by=target form=alphabet measure=id role=writes scope=license value=MIT
442
785
  bound-lock/1 at=policy:project by=target form=alphabet measure=id role=writes scope=name value=@lapxo/head
443
- bound-lock/1 at=policy:project by=target form=alphabet measure=id role=writes scope=version value=0.1.0
786
+ bound-lock/1 at=policy:project/0.1.3 by=target form=alphabet measure=id role=writes scope=version value=0.1.3