@prestack/thread 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,190 @@
1
1
  # @prestack/thread
2
2
 
3
+ ## 0.1.6
4
+
5
+ it only added, so everything built against the last one still works.
6
+
7
+ ### Gained
8
+
9
+ - `commits`
10
+
11
+ ### Fixed
12
+
13
+ - `attach` — its code moved and what it exports did not.
14
+ - `compiler-scope` — its code moved and what it exports did not.
15
+ - `core-attach` — its code moved and what it exports did not.
16
+ - `gate-writer` — its code moved and what it exports did not.
17
+
18
+ <!-- release 0.1.6 -->
19
+ <!-- holds
20
+ actor 3fe4eda6870f core/actor#Env:e97761857593 core/actor#ENVIRONMENT:c63ce331e66a core/actor#Environment:0e63440f7ed9 core/actor#Actor:da6a0a4f6d1a core/actor#PUBLIC_ROLE:0708d38af082 core/actor#ANONYMOUS:7aac93520d5f
21
+ attach e94af452832f core/attach#packageOf:95b5fff25591 core/attach#Appending:a9e0459b54b9 core/attach#Writing:be521774d91f core/attach#Attaching:8fc9a32f36f5 core/attach#UnattachableError:c0915e9e2ee4 core/attach#StillADependencyError:92c932b34a0a core/attach#StillDeclaredError:055509e3ed65 core/attach#DependencyRingError:2efe6ca0a2a5 core/attach#TakenFileError:58b4ac596857 core/attach#UnthreadedError:cb4f87163654 core/attach#attaches:253b1b546924 core/attach#behind:35e21849c546 core/attach#attach:dbf8043d1045 core/attach#detach:90e9cd60ecd5 core/attach#ATTACH:8b0b999ca5c9
22
+ build-writer 7f4a8d9f8201 derivation/generators/build#declared:f833228cb868 derivation/generators/build#wanted:ca9066873bf3
23
+ capability-writer 1d6b51150561 operations/generators/capability#Surfaced:9c1e29582b29 operations/generators/capability#defaulted:480e1df52387 operations/generators/capability#derive:d3661d4b28ee operations/generators/capability#reaching:96904eb501f6 operations/generators/capability#asArray:7fe62b04f8cb
24
+ chain e14ea2ab54de core/chain#generators:714b6bd5de71 core/chain#offers:6dadb72b44b4 core/chain#RAN:8720636fbac7 core/chain#REFUSED_BY:3eae304480a7 core/chain#batched:97a8754eeaf1 core/chain#settling:ca839ad0fbd3
25
+ commits 269f05bc2f60
26
+ compile-writer 241f763d71e5 operations/generators/compile#parts:a2c39cf9feb9 operations/generators/compile#compile:2fb552595d35
27
+ compiler-scope c78718dff992
28
+ condition ec0eb30e786a core/condition#COMPARE_OPS:6a33a047f408 core/condition#CompareOp:97849b9d273e core/condition#AGGREGATIONS:d213c6d7a137 core/condition#ACTOR_FACTS:752e796b5c97 core/condition#AGO:09aa52ab5287 core/condition#Operand:451f00cec049 core/condition#Condition:29dadf7cfd50 core/condition#walkOperands:9aa17730b2ab core/condition#mentionsActor:793e52b424e1 core/condition#agoSeconds:5d4cb8909c84 core/condition#satisfies:32daa43a97f3 core/condition#CONDITION_ANSWERS:a4a5fdf48aa5 core/condition#conditioned:3b65b55a7c83 core/condition#said:d7feb19d07d8
29
+ constraint-shape 94af466fc692 integrity/constraint#Sourced:7a4a750b4216 integrity/constraint#Proof:ed7d660baa12 integrity/constraint#shown:6522e6fa1dbf integrity/constraint#Constraint:9f751237a030 integrity/constraint#CONSTRAINTS:a99a22a9f325
30
+ core-attach e94af452832f core/attach#packageOf:95b5fff25591 core/attach#Appending:a9e0459b54b9 core/attach#Writing:be521774d91f core/attach#Attaching:8fc9a32f36f5 core/attach#UnattachableError:c0915e9e2ee4 core/attach#StillADependencyError:92c932b34a0a core/attach#StillDeclaredError:055509e3ed65 core/attach#DependencyRingError:2efe6ca0a2a5 core/attach#TakenFileError:58b4ac596857 core/attach#UnthreadedError:cb4f87163654 core/attach#attaches:253b1b546924 core/attach#behind:35e21849c546 core/attach#attach:dbf8043d1045 core/attach#detach:90e9cd60ecd5 core/attach#ATTACH:8b0b999ca5c9
31
+ core-capabilities bf5370c49664 operations/capabilities#SURFACES:462a2a1a7395 operations/capabilities#Surface:f6edd9874bdb operations/capabilities#isSurface:b576dba589f2 operations/capabilities#MEANS:3658f1c4eb73 operations/capabilities#DEFAULTS_AT:aa7e7135823b operations/capabilities#UNSTATED:cfcca264f76f operations/capabilities#Defaults:a9803c2f1af4 operations/capabilities#CAPABILITIES_AT:b837276e2b3f operations/capabilities#CLIENT_AT:69106f1a9d39 operations/capabilities#DISPATCHING_AT:79217c5a5a98 operations/capabilities#REACHING_AT:cd2556536e41 operations/capabilities#ACTOR_AT:81a568a0fb0c operations/capabilities#routeAt:b80bb4b90b70 operations/capabilities#ROUTE:7dec5eba4788 operations/capabilities#inboundAt:1a4583a141f1 operations/capabilities#OPENAPI_AT:d6b86d9cb07d operations/capabilities#MCP_AT:5b46a2eec16c operations/capabilities#Capability:878bfe369e2b operations/capabilities#reachable:40d77d9b3ba7 operations/capabilities#switched:a654a4b88939
32
+ core-dispatch 1874eb1e70a7 operations/dispatch#DISPATCH_AT:4e8f2c0639bf operations/dispatch#dispatched:b8a8e12c37e2
33
+ databases 1a5345f17774 integrations/pglite#shapeOf:c5582022770c integrations/pglite#Kept:6057152b4e6e integrations/pglite#Stood:aa41216d75b6 integrations/pglite#standing:78b2926e3f47 integrations/pglite#storing:4bbdae21bdcc
34
+ derivation-attach 33ee19bee9e7 derivation/attach#ATTACH:8b0b999ca5c9
35
+ derived-check d0b098621843 derivation/generators/check#CheckStatus:3d5184654de8 derivation/generators/check#FileCheck:5fc2fc17d9dc derivation/generators/check#CheckReport:0a85b0b7a552 derivation/generators/check#ReadFile:bfe47da3146a derivation/generators/check#CheckOptions:12047b27ac13 derivation/generators/check#checkGenerated:303b484f0191 derivation/generators/check#formatCheckReport:f1ffd8d71128 derivation/generators/check#detectHandEdits:4cb9374c9dec
36
+ descend 16cd7dcb60b3 core/descend#ROOT:16475c413846 core/descend#TREE:16475c413846 core/descend#THREAD_AT:16475c413846 core/descend#unkept:c4b11ba631c2 core/descend#LISTS:4bc9c06ef52b core/descend#ROW_LISTS:c9d0aa651f7b core/descend#Row:b97aa507e223 core/descend#Pass:6d224c4baa3b core/descend#Finding:59d032ea6dfc core/descend#under:9d2961e6c891 core/descend#sources:3ccbfc44dc32 core/descend#configured:08dd6fe94449 core/descend#hosting:03773213bb0d core/descend#uncompiled:e6cc5d02da1f core/descend#read:5b91d50130a7 core/descend#shapesNamed:b7e8c501d5a3 core/descend#threading:4203b54a8ba4 core/descend#shapeFields:c90f90e89613 core/descend#Field:3cff13ab8ec4 core/descend#listShape:de887cd9f0d5 core/descend#listFields:0ac02ba9a2d7 core/descend#rowShape:de887cd9f0d5 core/descend#nodesIn:0e1ab44ef9ff core/descend#reached:3ccbfc44dc32 core/descend#forget:a3965c1dfabe core/descend#descend:cb2c0f44b0be
37
+ descent-check 21b078209d19 integrity/check-threads#ROOT:fed419935721 integrity/check-threads#THREAD_AT:ad73a49b2e42 integrity/check-threads#TREE:b1b38c62f173 integrity/check-threads#descend:e424ec88ff49 integrity/check-threads#Finding:59d032ea6dfc integrity/check-threads#Pass:ebdf8cc00bc4 integrity/check-threads#trackedFiles:3ccbfc44dc32 integrity/check-threads#unthreaded:461b6e326ac7 integrity/check-threads#twiceParented:e96bea943ec4 integrity/check-threads#refusals:f9f72d575f28
38
+ determinism 30bc0a11b902 derivation/generators/determinism#GeneratedFile:1f5dc83a87cd derivation/generators/determinism#sortedBy:f08908497eb1 derivation/generators/determinism#compare:8ad383dc8043 derivation/generators/determinism#sortedEntries:61aff6982b60 derivation/generators/determinism#bodyHash:155def245510 derivation/generators/determinism#withHeader:1561e9fea045 derivation/generators/determinism#ParsedFile:078b3aa626c3 derivation/generators/determinism#parseGenerated:e4beb7be1f99 derivation/generators/determinism#lines:c0f235ccf1c6 derivation/generators/determinism#tsString:8a273616993f derivation/generators/determinism#stableJson:5d314875cc3d derivation/generators/determinism#pascal:ff8fa0760be2 derivation/generators/determinism#camel:ff8fa0760be2
39
+ docs-writer 3133175d51ef
40
+ error-catalogue e8bbd9220d52 core/errors/catalogue#AuthUnauthenticated:7e24f688d95d core/errors/catalogue#AuthInvalidCredentials:6e9c9b5413b8 core/errors/catalogue#AuthTokenExpired:3d4e6245d4fc core/errors/catalogue#AuthTokenReused:1f9440e9b282 core/errors/catalogue#AuthSessionRevoked:85af3a32bd03 core/errors/catalogue#AuthDenied:2f7a896f225a core/errors/catalogue#QuotaExceeded:62810e277123 core/errors/catalogue#QuotaReservationExpired:eec8b5e6df5e core/errors/catalogue#RateLimitExceeded:90b8438d32ae core/errors/catalogue#FeatureNotInPlan:304ce3f7caf9 core/errors/catalogue#DbNotFound:60f59203aba5 core/errors/catalogue#DbConstraintViolation:9c00c2863608 core/errors/catalogue#DbAlreadyExists:3b70497d8a74 core/errors/catalogue#DbConflict:2b62291e50de core/errors/catalogue#DbMigrationChecksumMismatch:85390d325334 core/errors/catalogue#DbDestructiveWithoutDryRun:3a740a2a33eb core/errors/catalogue#DbRoundTripBudgetExceeded:163a19f0d8d6 core/errors/catalogue#DbCursorInvalid:ce7f9cc9c08f core/errors/catalogue#DbCursorExpired:3d2f1df512e8 core/errors/catalogue#WorkflowNodeFailed:1c4b5a94fe09 core/errors/catalogue#WorkflowInvalidTransition:fdcb1b51d4ac core/errors/catalogue#WorkflowCompensationFailed:c75b034c6ac9 core/errors/catalogue#WorkflowAlreadyRunning:fbb480d80e00 core/errors/catalogue#QueueJobFailed:27181968a2f5 core/errors/catalogue#QueueDlqExhausted:6aea1c485aa9 core/errors/catalogue#AiProviderUnavailable:81a440a67d2b core/errors/catalogue#AiSchemaValidationFailed:af8093c663e0 core/errors/catalogue#AiToolNotInMask:e146b0a15718 core/errors/catalogue#AiNodeCapExceeded:fe1c6e7a515b core/errors/catalogue#SearchIndexFailed:7dfae99b2c09 core/errors/catalogue#SearchQueryInvalid:0d12d8cbd08f core/errors/catalogue#CommsChannelKindUndeclared:aee44b376a96 core/errors/catalogue#CommsChannelKindUndescribed:3d9b33eab1a5 core/errors/catalogue#CommsChannelKindUnlabelled:d133c17b625f core/errors/catalogue#CommsChannelKindUndocumented:ba7825c59599 core/errors/catalogue#CommsChannelKindDuplicate:bfb8e5a55815 core/errors/catalogue#ConfigInvalid:d60b61c23be3 core/errors/catalogue#ConfigMissingEnv:b9894f249713 core/errors/catalogue#ConfigSecretInPublicVar:52d6b7523d93 core/errors/catalogue#ConfigCredentialInvalid:3b2093f17fe9 core/errors/catalogue#ConfigScopeMissing:ae883fc18dd8 core/errors/catalogue#ConfigResourceNotFound:adfbe73a76e9 core/errors/catalogue#ConfigDestinationIncompatible:7c8f1af25018 core/errors/catalogue#ConfigBlocksExit:89e1100f3501 core/errors/catalogue#NetTimeout:b58c1472a696 core/errors/catalogue#NetUpstreamUnavailable:f0970ddb2b72 core/errors/catalogue#NetDestinationRefused:bc6fbc18e2d8 core/errors/catalogue#InternalUnexpected:928b73a76ab6 core/errors/catalogue#InternalNotImplemented:c5c6590041d7 core/errors/catalogue#InternalInvalidArgument:ce6701313197 core/errors/catalogue#PLATFORM_ERRORS:99af67671495 core/errors/catalogue#PlatformErrorCode:8f4f69419324
41
+ error-classes 9e5a171ecfc9 core/errors/classes#ErrorClassDef:f86478155103 core/errors/classes#ERROR_CLASSES:edfbdd775e5f core/errors/classes#ErrorClass:76fd5e188a3d core/errors/classes#ERROR_CLASS_NAMES:74c194ba25bd core/errors/classes#classDef:7d0a82d47941
42
+ error-namespaces e446f70fbaf3 core/errors/namespaces#NAMESPACES:e337ac1a0dcc core/errors/namespaces#Namespace:605585a58c10 core/errors/namespaces#ErrorCode:9c332e778de1
43
+ error-results e57bf4578348 operations/error-results#errorDefForResult:d20408abb638 operations/error-results#platformErrorForResult:cfa19576d3d2
44
+ error-shape 88996a2a97a2 core/errors/error#ErrorCode:b1b889e0a6a2 core/errors/error#ErrorDef:7cbf5075cdfe core/errors/error#DefineErrorInput:26ba65e1ba53 core/errors/error#PlatformErrorInit:46fb5f54ad40 core/errors/error#PlatformError:cb9f313b940e core/errors/error#isPlatformError:54c7e704b130 core/errors/error#ErrorFactory:ac8e16652a4c core/errors/error#DuplicateErrorCodeError:c2e0d4b9a453 core/errors/error#ErrorCatalog:2d6513801aad core/errors/error#catalog:6f8193fbf011 core/errors/error#defineError:b63127ff92f5
45
+ files e98027045f8f integrations/disk#Answering:ac82a4270dab integrations/disk#Kind:f5387f9bb6ed integrations/disk#Listed:78797afdac99 integrations/disk#Measured:9298c8f4b3ff integrations/disk#Ran:b6a7c95e785f integrations/disk#CHANNEL:aed3e27aa991 integrations/disk#FOLDER:e95be41b2cdc integrations/disk#answeredBy:c00c834376b3 integrations/disk#across:c4b11ba631c2 integrations/disk#beyond:c4b11ba631c2 integrations/disk#attached:f8c2780ce4f6 integrations/disk#here:f971b85d3d6d integrations/disk#kind:485fa3d1c1c6 integrations/disk#existsSync:219e8de5f523 integrations/disk#readFileSync:84627dee3e2a integrations/disk#writeFileSync:b65098c20781 integrations/disk#createFileSync:a37d24a0bcc9 integrations/disk#Named:a490c22afabe integrations/disk#readdirSync:2fab39d45004 integrations/disk#Held:488919ee8a4c integrations/disk#statSync:658893a15fb6 integrations/disk#rmSync:92d8fa578550 integrations/disk#rmdirSync:9473a29789e7 integrations/disk#renameSync:9c9fbadb45e6 integrations/disk#appendFileSync:ecfd24b4e865 integrations/disk#realpathSync:626005f54fe3 integrations/disk#HERE:b5fa160c6f41 integrations/disk#standing:860b93996daf
46
+ finding 9058cbe2ee32 core/finding#Finding:180d780f4cd9 core/finding#forbids:019885a2a7da core/finding#runChecker:bea68acae26f
47
+ gate-writer 9f32b3557c07
48
+ glossary-shape 8e609bb71c20 knowledge/glossary#Glossary:e30f4c6fe581
49
+ glossary-writer fb212157b8ef
50
+ grant-shape 3faea89db7de operations/access#PERMITS_AT:747bdea9514c operations/access#declaredWords:5a76b6349900 operations/access#undeclared:f8a1498208ca operations/access#Declaring:d425aa11e994 operations/access#Caller:e84d64e1d650 operations/access#keyIn:9590087fcf75 operations/access#declaredCallers:935aee93abaa operations/access#Grant:e7cec0376200 operations/access#opensToEverybody:10368b21fa22 operations/access#grantedTwice:563aa26b055e operations/access#unanswerable:563aa26b055e
51
+ http 7393c692f6a1 integrations/https#HTTP_CALL_ACTION:b90d08fc2104 integrations/https#HttpNotConfiguredError:cb4f87163654 integrations/https#OutwardTransportError:b169a7a9de9a integrations/https#refusedPath:7ece79538abe integrations/https#outwardUrl:ab5ee055ae1c integrations/https#HttpOptions:d44a8302e1a2 integrations/https#STREAMED:0f44419eff19 integrations/https#TOLD:ca7940b4fc66 integrations/https#called:e21f31899fb4 integrations/https#sendingHttp:945b8b045042 integrations/https#RecordedCall:318c0983fea1 integrations/https#ScriptedAnswer:9f4273f0ade9 integrations/https#Scripted:6df9ac9d9f15 integrations/https#recordingHttp:fc2ad46f8053
52
+ init 1cc74e78bbcd core/init#TREE:0b34eb8c6947 core/init#ROOT:23a226909662 core/init#SHAPED:babaddbfd35d core/init#AlreadyThreadedError:6b783660d574 core/init#COMPILER:09b3efa678f5 core/init#MANIFEST:495fdf585250 core/init#REGISTRY:16475c413846 core/init#IGNORED:16475c413846 core/init#ignored:15de269b224c core/init#compiler:15de269b224c core/init#root:383996e16a82 core/init#init:8121415e87a8
53
+ integrations-attach 70f267f5b0c2 integrations/attach#CONCEPTS:7a75843a03cf integrations/attach#ATTACH:8b0b999ca5c9
54
+ integrity-attach c3c1df5cf9f7 integrity/attach#ATTACH:8b0b999ca5c9
55
+ invoked d7be95a29ed4 core/invoked#invoked:9133dcc091f3 core/invoked#SOURCE:e43353c41f9b core/invoked#BESIDE:95b5fff25591 core/invoked#LOADER:4de2138e3a11 core/invoked#CLI:4de2138e3a11 core/invoked#REFUSED:5cbef15de1fd core/invoked#shared:4820653ff101 core/invoked#exit:a631d3ee5cd5 core/invoked#refusal:51d097295f50
56
+ issues-writer 66733ec4dec8
57
+ knowledge-attach 02fc3cfaa4fe knowledge/attach#ATTACH:8b0b999ca5c9
58
+ lint 9797b6cb8cbc integrity/lint#ruleMessage:cbd1b8bbcf00 integrity/lint#agentInstructions:3ccbfc44dc32 integrity/lint#defineRule:d391a4a1f3aa integrity/lint#defineRules:8bfd1bf6cfa5 integrity/lint#ruleRule:466d7d9ccaa3 integrity/lint#ruleRules:b7cc8a626183 integrity/lint#ruleSeverities:4506861e89ae integrity/lint#plugin:948c4ffe9079 integrity/lint#default:af79bdaf6dee integrity/lint#rules:f3a0aef9ed97 integrity/lint#ruleDeclarations:30516a9f1aa2 integrity/lint#RuleViolation:31a1a1e48e80 integrity/lint#RuleRunner:bbf72f90b110 integrity/lint#theRules:89139ffca783
59
+ lsp-bin f592352bce19
60
+ lsp-diagnostics 49801c4b0424 integrity/lsp/diagnostics#DiagnosticSource:d08c813cf00a integrity/lsp/diagnostics#repoSource:dff5c2ce8d38 integrity/lsp/diagnostics#ERROR:d674d8e65aca integrity/lsp/diagnostics#WARNING:00a4f8869ab3 integrity/lsp/diagnostics#Position:46e0a3561d8b integrity/lsp/diagnostics#Diagnostic:ae6f64604dbe integrity/lsp/diagnostics#SOURCE_NAME:2514d79dbd06 integrity/lsp/diagnostics#toDiagnostic:fcae9032abb1 integrity/lsp/diagnostics#report:0dbedc0cd91b
61
+ lsp-findings 72f7d80645c0 integrity/lsp/findings#At:f235cb016ba3 integrity/lsp/findings#Finding:7d5c3a039f29 integrity/lsp/findings#detailOf:c2c587190fb0 integrity/lsp/findings#anchorIn:a250e5899ebf integrity/lsp/findings#locate:3793c6d451b7 integrity/lsp/findings#headOf:1a535cdf8f10 integrity/lsp/findings#rangeOf:f398dcb2f343
62
+ lsp-lint 87850cd24e7c integrity/lsp/lint#isLintable:fd3e0e886f7d integrity/lsp/lint#LINT_CONFIG:82d55ccf289a integrity/lsp/lint#LintUnavailableError:f8f16a4068e3 integrity/lsp/lint#lintFindings:8fa9b43d2fa3
63
+ lsp-protocol d0ad8650307b integrity/lsp/protocol#RpcMessage:50bff985f883 integrity/lsp/protocol#METHOD_NOT_FOUND:ada3d6776590 integrity/lsp/protocol#encode:f00f8f2ab7bb integrity/lsp/protocol#MalformedMessageError:f8f16a4068e3 integrity/lsp/protocol#MessageBuffer:b1e528cf49fb
64
+ lsp-server a66c663b032d integrity/lsp/server#ServerOptions:b2f4aaebe993 integrity/lsp/server#LspServer:5fa4c9448c6f
65
+ operation-nodes 20b2da81c3ba operations/nodes#Node:2112c57d9bb8 operations/nodes#Held:0ec1b9f302e4 operations/nodes#STOPPED:5cbef15de1fd operations/nodes#stopped:2f6d794b907c operations/nodes#nd_read:7bebde547b8e operations/nodes#nd_action:65eae62feaaa operations/nodes#nd_branch:2c5b4a591cd3 operations/nodes#nd_each:bae680443754 operations/nodes#nd_parallel:bfa84c79ec03 operations/nodes#nd_repeat:3966ebc9c7c8 operations/nodes#nd_stop:61b8668ab2a5
66
+ operation-shape 76f2a87e0f89 operations/operations#OPERATIONS_FILE:e46dfbcf462b operations/operations#TRIALS_AT:aaf352faa5b3 operations/operations#NODES_FILE:210e774203a3 operations/operations#MEMBERS_LIST:23961436d339 operations/operations#Reaching:deebde0237b4 operations/operations#Opened:eb6571a8c1bb operations/operations#Reads:f8c3a12083b7 operations/operations#WINDOWS:89b1baaceb71 operations/operations#Window:c777511a8ae1 operations/operations#Allowance:04d9eb029682 operations/operations#Counting:7e197fa63f26 operations/operations#Operation:f6d6334481b9 operations/operations#OPERATIONS:7e34107beaa8
67
+ operations-attach a3351a64ef85 operations/attach#TAKES:6cddee9943a2 operations/attach#WOVEN:a99aa29866b3 operations/attach#said:c89bb33d7607 operations/attach#ATTACH:8b0b999ca5c9
68
+ permits-writer cf8a23c58b6d
69
+ programs 1ecc1f8d7cef integrations/cli#Starting:960e2047c9fb integrations/cli#starts:0e1bf71a8735 integrations/cli#started:cd7548fe9f9c integrations/cli#handed:d687c7041310 integrations/cli#Holding:39f4bf3d6d9e integrations/cli#Held:aa0aeeffb516 integrations/cli#releases:a3965c1dfabe integrations/cli#claims:3aa4752f056f integrations/cli#programFor:bd904f4e38b2 integrations/cli#SIGNING:8cd5f4b56b1b integrations/cli#signing:15de269b224c integrations/cli#running:ea5213e21370 integrations/cli#Expansion:fbb6d3ec7c7f integrations/cli#expansions:ebec34e2d4e0 integrations/cli#calls:979f9d21a871 integrations/cli#LOCKFILES:0d3bc577e11b integrations/cli#manager:45f7b3a950fa integrations/cli#adding:8c0a5aa2eb4b integrations/cli#needing:6ad702835da5 integrations/cli#installing:38eeb450b217
70
+ publish-writer 58a8d9768b1b
71
+ read-command b963de5ab710
72
+ release-shape 969a84467fb1 derivation/release#PREFIXES:b8074240fbd0 derivation/release#KINDS:48b5fc802be2 derivation/release#Written:c43100ae39af derivation/release#WRITES:e54e839a5471 derivation/release#LISTENS:58f03905ca9e derivation/release#SAID:5bd0783b90d3 derivation/release#kindOf:4176df8c51b9 derivation/release#WRITTEN_BY:9173a6988956 derivation/release#CHECKED_BY:da31b0e1d991
73
+ release-writer 2ed92545845c derivation/generators/release#CHECKED_BY:50e734bb9f42 derivation/generators/release#WRITES:b89e55dbc69c derivation/generators/release#made:ea0890697a77
74
+ result 9f5e98a1c646 operations/result#ResultCode:2c9cb831da2e operations/result#FailureIdentity:8af44679ea20 operations/result#Result:51fa3d37b70f operations/result#ok:012b7060c34a operations/result#fail:5787814702d4 operations/result#ValidationError:8056c1ea409e
75
+ round 5f921eb9c8f9
76
+ rows 6194da5f7cb9 core/rows#Bounds:9f96256b89fa core/rows#inCode:3aa8ca939e44 core/rows#matched:efe81f54e0c4 core/rows#listBounds:3adc84a88226 core/rows#nestedBounds:eecf676136a9 core/rows#holdsRow:745a20ac8a94 core/rows#seededAt:483fd49afaa5 core/rows#rowsIn:98b8583dd419 core/rows#withRow:dcc57512f05d core/rows#withSeed:dd37a3bf5b3b core/rows#withRequires:d11efd3851ea core/rows#seedsIn:2de54e168233 core/rows#afterRow:6c07ac3f763a core/rows#quoted:7cb4ec66102d core/rows#valuesIn:84f1cf0a2b48 core/rows#unread:a2c39cf9feb9 core/rows#STATED:3c39f854eb6a core/rows#reconciled:36df6a2bfcce core/rows#fieldIn:13b49f086cce core/rows#withField:7c52e0fd3d24 core/rows#withTopField:6ac3873438fe core/rows#withoutField:04bf213eb8dc core/rows#withoutRow:ecc4a8d269f9 core/rows#marked:ca0a5bc98816 core/rows#showing:2d45570925a8
77
+ scope 5ac2ae9efe74 core/scope#ORGANISATION:8510114ffd9e core/scope#THING:2514d79dbd06 core/scope#NAMED:c33cb60b8e33 core/scope#named:72b4c80878b8 core/scope#idOf:3ab7154bd91a core/scope#ours:ab9daad14f31 core/scope#installed:f0f987abd6f9
78
+ sealed-store 53b4c569beaa integrations/vault#VAULT_DIR:5dd2b28d7cef integrations/vault#SEALED_NAME:4eaaac010b8c integrations/vault#KEY_NAME:065de823d162 integrations/vault#SEALED_AT:548d924665e3 integrations/vault#KEY_AT:2bcb12622e0d integrations/vault#ALGORITHM:84a84e44a5a1 integrations/vault#KEY_BYTES:95940045d335 integrations/vault#keyOf:71ea2ee0c552 integrations/vault#keyed:878e72b78d7b integrations/vault#seal:48aead05fdcd integrations/vault#sealedIn:d0d2e1cc0461 integrations/vault#opened:fea1d83b295a integrations/vault#unseal:e06ef898eab9 integrations/vault#IGNORES:4de2138e3a11
79
+ secret a544a5e4fa77 integrations/secret#SECRECY:0fd167bfea16 integrations/secret#SAID:7b6a22f69118 integrations/secret#Vault:8dc7e8d666b8 integrations/secret#Secret:7cbfaeada097 integrations/secret#secrecyOf:53c866c6d50d integrations/secret#isServerOnly:14af671c09c3 integrations/secret#unclassified:3f18056f2160 integrations/secret#valued:3f18056f2160
80
+ seed-writer 668285683682 operations/generators/seed#quoted:b3a2bd470cb2 operations/generators/seed#beside:6c0fa306492b operations/generators/seed#runtime:b909738618a0 operations/generators/seed#types:2aee6c512ee7 operations/generators/seed#builtFrom:3b21d7bfce78 operations/generators/seed#operations:69e0b4d6cf2d operations/generators/seed#problem:44d3a33067da operations/generators/seed#blockIn:4aa89e8da0ca operations/generators/seed#scaffold:d58c01b2574a operations/generators/seed#nodeText:f7813131ffee operations/generators/seed#seed:9a4c29314682
81
+ shape 079cfa1542bf core/thread#Quote:34b9cab8ecec core/thread#Threaded:aa8a41b1903e core/thread#Member:2112c57d9bb8 core/thread#PREFIXES:263416accca5
82
+ slopnator 63d10fea4cda integrity/slopnators/sl_broken_lineage#slopnator:42fb769c73ec integrity/slopnators/sl_declared_elsewhere#slopnator:42fb769c73ec integrity/slopnators/sl_derived_drift#Derivation:a7cc81c002ff integrity/slopnators/sl_derived_drift#derivations:f46b8572fa7c integrity/slopnators/sl_derived_drift#slopnator:42fb769c73ec integrity/slopnators/sl_door_in_a_node#slopnator:42fb769c73ec integrity/slopnators/sl_hardcoded_style#slopnator:42fb769c73ec integrity/slopnators/sl_inert_island#slopnator:42fb769c73ec integrity/slopnators/sl_inert_slopnator#slopnator:42fb769c73ec integrity/slopnators/sl_missing_row#slopnator:42fb769c73ec integrity/slopnators/sl_no_barrel#slopnator:42fb769c73ec integrity/slopnators/sl_no_child_process#slopnator:42fb769c73ec integrity/slopnators/sl_no_comment#slopnator:42fb769c73ec integrity/slopnators/sl_no_dispatch_bypass#slopnator:42fb769c73ec integrity/slopnators/sl_no_import_cycle#slopnator:42fb769c73ec integrity/slopnators/sl_no_such_command#slopnator:42fb769c73ec integrity/slopnators/sl_only_takes_a_literal#slopnator:42fb769c73ec integrity/slopnators/sl_outside_an_operation#slopnator:42fb769c73ec integrity/slopnators/sl_screen_holds_only_declared#slopnator:42fb769c73ec integrity/slopnators/sl_secret_literal#slopnator:42fb769c73ec integrity/slopnators/sl_stale_path#slopnator:42fb769c73ec integrity/slopnators/sl_twice_meant#slopnator:42fb769c73ec integrity/slopnators/sl_twice_parented#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_crossing#DOORWAY:7291424d5e4c integrity/slopnators/sl_undeclared_crossing#HANDED_TO:43e1dac30e33 integrity/slopnators/sl_undeclared_crossing#judging:73bfee6bcfe2 integrity/slopnators/sl_undeclared_crossing#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_destination#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_element#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_list#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_node#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_operation#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_variant#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_webhook#slopnator:42fb769c73ec integrity/slopnators/sl_underived_route#slopnator:42fb769c73ec integrity/slopnators/sl_undescribed#slopnator:42fb769c73ec integrity/slopnators/sl_ungoverned_island#slopnator:42fb769c73ec integrity/slopnators/sl_unlisted_program#slopnator:42fb769c73ec integrity/slopnators/sl_unnamed_island#slopnator:42fb769c73ec integrity/slopnators/sl_unpaired_member#slopnator:42fb769c73ec integrity/slopnators/sl_unpaired_slopnator#slopnator:42fb769c73ec integrity/slopnators/sl_unprefixed_member#slopnator:42fb769c73ec integrity/slopnators/sl_unthreaded#Reach:ee1c5ae840ce integrity/slopnators/sl_unthreaded#Meaning:eb5d28d0d101 integrity/slopnators/sl_unthreaded#here:7186c669fd80 integrity/slopnators/sl_unthreaded#atsIn:2a22e0fd79d4 integrity/slopnators/sl_unthreaded#rowsIn:e0b6bdfd102e integrity/slopnators/sl_unthreaded#Governed:26751a8a4a1c integrity/slopnators/sl_unthreaded#governedBy:7fd12eca7c1b integrity/slopnators/sl_unthreaded#filesGoverned:65cdfbe444d1 integrity/slopnators/sl_unthreaded#foldersGoverned:65cdfbe444d1 integrity/slopnators/sl_unthreaded#governs:a4fad74ada50 integrity/slopnators/sl_unthreaded#Declared:28a6c94b90c6 integrity/slopnators/sl_unthreaded#canonical:74c647d3ad5c integrity/slopnators/sl_unthreaded#islandsDeclared:16048ec0c690 integrity/slopnators/sl_unthreaded#declaresIsland:f3daaa415aee integrity/slopnators/sl_unthreaded#meaningsIn:53683e6a54b6 integrity/slopnators/sl_unthreaded#Index:1768b6501864 integrity/slopnators/sl_unthreaded#index:b914d00e9d0f integrity/slopnators/sl_unthreaded#forget:a3965c1dfabe integrity/slopnators/sl_unthreaded#threaded:2b0e40c55bac integrity/slopnators/sl_unthreaded#parses:df7c6aede8b6 integrity/slopnators/sl_unthreaded#unreadable:cb6cf51129a6 integrity/slopnators/sl_unthreaded#names:0096812bd8bb integrity/slopnators/sl_unthreaded#slopnator:42fb769c73ec integrity/slopnators/sl_untranslated_key#slopnator:42fb769c73ec integrity/slopnators/sl_unvaulted_secret#slopnator:42fb769c73ec integrity/slopnators/sl_unversioned#slopnator:42fb769c73ec
83
+ slopnator-shape 51d078034457 integrity/slopnator#NOT_WRITTEN:5cbef15de1fd integrity/slopnator#SHIPPED:16475c413846 integrity/slopnator#SEEDED:16475c413846 integrity/slopnator#ROOT:16475c413846 integrity/slopnator#SlopnatorContext:d2a635854c3c integrity/slopnator#Spoken:e2c874045414 integrity/slopnator#Proves:0369cb81daa2 integrity/slopnator#Reads:b81a76c9cc9a integrity/slopnator#Reading:76ea63cd70a7 integrity/slopnator#Running:25cbab8e340a integrity/slopnator#Slopnator:ad0ae14e5f13 integrity/slopnator#Visiting:9af67a68f078 integrity/slopnator#reads:e851af39272f integrity/slopnator#visits:6e4f7f5deee8 integrity/slopnator#sweeps:e851af39272f integrity/slopnator#Byproduct:1b8a6fb06159 integrity/slopnator#slopnatorName:c452dd2bdbbc integrity/slopnator#region:637499d76201 integrity/slopnator#derivedHere:7186fd9fd284 integrity/slopnator#subject:e8d0ab22f1d4 integrity/slopnator#governs:91c49fcb7fdf integrity/slopnator#UnloadableSlopnatorError:9028dcb4c5ec integrity/slopnator#UnreadableRulesError:b60942b119f0 integrity/slopnator#load:5eaf126b2fda integrity/slopnator#proofsOf:763e7a5e9da3 integrity/slopnator#scaffold:15de269b224c integrity/slopnator#write:5c9de9c9d484 integrity/slopnator#onDisk:d463041c43a5 integrity/slopnator#named:c6a6a92894dc integrity/slopnator#rules:13ef34c2acc6 integrity/slopnator#seeds:a6a029998d40 integrity/slopnator#GENERALLY:baedbff8be54 integrity/slopnator#declaring:7229d8fb559f integrity/slopnator#declareSeeded:e732adf1e1e2
84
+ sweep-walk ef2bdac3afa7 integrity/sweep#visit:9b8811eccd92 integrity/sweep#Caught:5b4dba207f58 integrity/sweep#tracked:d463041c43a5 integrity/sweep#sweep:c668e953efb7
85
+ target-shape 6a040b114324 integrations/target#REACH:7f6cf3225ee3 integrations/target#Reach:28718a29ebbb integrations/target#ADDRESS:0ac7d4249d53 integrations/target#Addressed:83aeecdb60d8 integrations/target#Holds:dc775c87554b integrations/target#HOLDS:191fd51c8c5e integrations/target#SAID:cbb49ee60a17 integrations/target#OPENS:49659340ec1b integrations/target#Kind:8f9d1230cc55 integrations/target#Listed:60ef88b9766a integrations/target#Measured:ba8fd66caf68 integrations/target#Answering:94596db14850 integrations/target#Attached:92ca42ae2289 integrations/target#ORDERS:18b2c6e76a2b integrations/target#Order:a8b50f8b7042 integrations/target#Answer:eabf66413c91 integrations/target#Recorded:fc9fb7439786 integrations/target#How:29dc321843d4 integrations/target#Ran:8a9d78d05850 integrations/target#Running:b730520aa405 integrations/target#Calling:8a1fa971be64 integrations/target#HttpMethod:52ada6a3365a integrations/target#HttpRequest:a2d4c8dbe75f integrations/target#HttpResponse:b56874e51801 integrations/target#Http:834fa96f4955 integrations/target#Row:6f5edf17a61c integrations/target#PropertyValue:4885bb975ac1 integrations/target#isRow:539dcd1c4a4b integrations/target#ReadField:99e67343fe70 integrations/target#FieldList:83120b2166e7 integrations/target#Store:3e01b6e1529c integrations/target#Transactional:c8d08d0622c4 integrations/target#isTransactional:1170f66cd9b8 integrations/target#Integration:d851a497f22c integrations/target#Target:be9e72681022 integrations/target#Webhook:859980501775 integrations/target#Call:6f9ff3b7255b integrations/target#CALL_PREFIX:471df1e09d10 integrations/target#fills:ebc8be09b0a4 integrations/target#reachOf:20d02de80d4c integrations/target#standsHere:44e3d70360f8 integrations/target#holdsOf:901a78c9a0d2 integrations/target#requirable:babe69707585 integrations/target#driverOf:6e977f406f5c integrations/target#addressOf:586d8e0c699d integrations/target#credentialsOf:cba586002fb2 integrations/target#servesBrowser:88b5a2eb80b0 integrations/target#unreachable:3fd2b82d0e99 integrations/target#LOCKFILES:f79c78e2421b integrations/target#PACKAGER:5c86349b8352 integrations/target#managerOf:2fb3ef208615 integrations/target#programOf:0438b85eb0d1 integrations/target#unlisted:95b5fff25591 integrations/target#misnamed:b92bbf30de70 integrations/target#misaccepted:4bb2e3fb0b7d integrations/target#placedAt:040d115c24d8 integrations/target#placed:8954a87a6efd integrations/target#unaddressed:2dff7cf19161 integrations/target#unheld:2dff7cf19161 integrations/target#unanswered:a6d304c26fd3 integrations/target#unplaced:840ddd6855b4 integrations/target#refusals:acca65833de8 integrations/target#targetOf:822f8d420b17
86
+ tree 296438e3beb4 core/tree#FOLDER:2027dbad6ffb core/tree#Tree:8f338d863404 core/tree#UnthreadedRepositoryError:9ee18e1932c0 core/tree#folder:15de269b224c core/tree#findTree:49ec72a1c670 core/tree#strayFiles:495876581332 core/tree#inTree:9763add68f9f
87
+ trial-runner 79913cceed92 operations/generators/trial#TRIALS_AT:48cf5b1696fb operations/generators/trial#Scenario:7e6b3edabc0c operations/generators/trial#Trial:ec5363988c79 operations/generators/trial#Outcome:0b6ac6861c30 operations/generators/trial#Run:4064695a5df2 operations/generators/trial#runScenario:7e1119843a5d operations/generators/trial#scenariosFor:807a80dc6acb operations/generators/trial#compared:c81d29fd44b2 operations/generators/trial#unproven:27bd1e31789b operations/generators/trial#record:2ba585ade9fe
88
+ trial-writer 0bb31c131a9b integrity/generators/trial#Scenario:cec489475009 integrity/generators/trial#Trial:0ed5a9870dc8 integrity/generators/trial#Derivation:5542c019485a integrity/generators/trial#Outcome:4a336cfdb388 integrity/generators/trial#Run:4e6160f4a4fd integrity/generators/trial#probeAt:cbd1b8bbcf00 integrity/generators/trial#deriveTrials:801b86fffdcc integrity/generators/trial#runTrial:9d8f24783d10 integrity/generators/trial#crossed:ccfbf430e6ea integrity/generators/trial#runTrials:0b4ce7fbb41d
89
+ types df0eae11185b core/types#VALUE_TYPES:9d3af11975a0 core/types#ValueType:de0a55f12333 core/types#KEYBOARDS:187f8f1b5fef core/types#Keyboard:0f9fcadff185 core/types#ENTRY_MODES:6937aa450f33 core/types#EntryMode:619a8cf61463 core/types#Checked:3be2f12a6aae core/types#held:ecda2d49d546 core/types#refused:6c4e70ea8940 core/types#Facts:f94c9b180191 core/types#Format:f0fc652558a7 core/types#stripControl:ffc10711842d core/types#BOUNDED:ae1a8dd96249 core/types#FORMATS:a879ae389a3c core/types#formatsOf:1dda69cdbc5b core/types#formatNamed:2007301c8e1b core/types#plainFormat:f683a8a755a5 core/types#formatFor:36746cc1a7ad core/types#checkValue:c4d6bf4e05e4 core/types#showValue:68bfeaa86be4
90
+ vault-writer 8d195f000c9c
91
+ -->
92
+
93
+ ## 0.1.5
94
+
95
+ it only added, so everything built against the last one still works.
96
+
97
+ ### Added
98
+
99
+ - `init` now exports `core/init#SHAPED`.
100
+ - `scope` now exports `core/scope#installed`.
101
+
102
+ ### Fixed
103
+
104
+ - `attach` — its code moved and what it exports did not.
105
+ - `core-attach` — its code moved and what it exports did not.
106
+ - `derivation-attach` — its code moved and what it exports did not.
107
+ - `descend` — its code moved and what it exports did not.
108
+ - `integrations-attach` — its code moved and what it exports did not.
109
+ - `integrity-attach` — its code moved and what it exports did not.
110
+ - `knowledge-attach` — its code moved and what it exports did not.
111
+ - `operations-attach` — its code moved and what it exports did not.
112
+ - `slopnator-shape` — its code moved and what it exports did not.
113
+
114
+ <!-- release 0.1.5 -->
115
+ <!-- holds
116
+ actor 3fe4eda6870f core/actor#Env:e97761857593 core/actor#ENVIRONMENT:c63ce331e66a core/actor#Environment:0e63440f7ed9 core/actor#Actor:da6a0a4f6d1a core/actor#PUBLIC_ROLE:0708d38af082 core/actor#ANONYMOUS:7aac93520d5f
117
+ attach 7ff4aa590d11 core/attach#packageOf:95b5fff25591 core/attach#Appending:a9e0459b54b9 core/attach#Writing:be521774d91f core/attach#Attaching:8fc9a32f36f5 core/attach#UnattachableError:c0915e9e2ee4 core/attach#StillADependencyError:92c932b34a0a core/attach#StillDeclaredError:055509e3ed65 core/attach#DependencyRingError:2efe6ca0a2a5 core/attach#TakenFileError:58b4ac596857 core/attach#UnthreadedError:cb4f87163654 core/attach#attaches:253b1b546924 core/attach#behind:35e21849c546 core/attach#attach:dbf8043d1045 core/attach#detach:90e9cd60ecd5 core/attach#ATTACH:8b0b999ca5c9
118
+ build-writer 7f4a8d9f8201 derivation/generators/build#declared:f833228cb868 derivation/generators/build#wanted:ca9066873bf3
119
+ capability-writer 1d6b51150561 operations/generators/capability#Surfaced:9c1e29582b29 operations/generators/capability#defaulted:480e1df52387 operations/generators/capability#derive:d3661d4b28ee operations/generators/capability#reaching:96904eb501f6 operations/generators/capability#asArray:7fe62b04f8cb
120
+ chain e14ea2ab54de core/chain#generators:714b6bd5de71 core/chain#offers:6dadb72b44b4 core/chain#RAN:8720636fbac7 core/chain#REFUSED_BY:3eae304480a7 core/chain#batched:97a8754eeaf1 core/chain#settling:ca839ad0fbd3
121
+ compile-writer 241f763d71e5 operations/generators/compile#parts:a2c39cf9feb9 operations/generators/compile#compile:2fb552595d35
122
+ compiler-scope 5d47184ac2ea
123
+ condition ec0eb30e786a core/condition#COMPARE_OPS:6a33a047f408 core/condition#CompareOp:97849b9d273e core/condition#AGGREGATIONS:d213c6d7a137 core/condition#ACTOR_FACTS:752e796b5c97 core/condition#AGO:09aa52ab5287 core/condition#Operand:451f00cec049 core/condition#Condition:29dadf7cfd50 core/condition#walkOperands:9aa17730b2ab core/condition#mentionsActor:793e52b424e1 core/condition#agoSeconds:5d4cb8909c84 core/condition#satisfies:32daa43a97f3 core/condition#CONDITION_ANSWERS:a4a5fdf48aa5 core/condition#conditioned:3b65b55a7c83 core/condition#said:d7feb19d07d8
124
+ constraint-shape 94af466fc692 integrity/constraint#Sourced:7a4a750b4216 integrity/constraint#Proof:ed7d660baa12 integrity/constraint#shown:6522e6fa1dbf integrity/constraint#Constraint:9f751237a030 integrity/constraint#CONSTRAINTS:a99a22a9f325
125
+ core-attach 7ff4aa590d11 core/attach#packageOf:95b5fff25591 core/attach#Appending:a9e0459b54b9 core/attach#Writing:be521774d91f core/attach#Attaching:8fc9a32f36f5 core/attach#UnattachableError:c0915e9e2ee4 core/attach#StillADependencyError:92c932b34a0a core/attach#StillDeclaredError:055509e3ed65 core/attach#DependencyRingError:2efe6ca0a2a5 core/attach#TakenFileError:58b4ac596857 core/attach#UnthreadedError:cb4f87163654 core/attach#attaches:253b1b546924 core/attach#behind:35e21849c546 core/attach#attach:dbf8043d1045 core/attach#detach:90e9cd60ecd5 core/attach#ATTACH:8b0b999ca5c9
126
+ core-capabilities bf5370c49664 operations/capabilities#SURFACES:462a2a1a7395 operations/capabilities#Surface:f6edd9874bdb operations/capabilities#isSurface:b576dba589f2 operations/capabilities#MEANS:3658f1c4eb73 operations/capabilities#DEFAULTS_AT:aa7e7135823b operations/capabilities#UNSTATED:cfcca264f76f operations/capabilities#Defaults:a9803c2f1af4 operations/capabilities#CAPABILITIES_AT:b837276e2b3f operations/capabilities#CLIENT_AT:69106f1a9d39 operations/capabilities#DISPATCHING_AT:79217c5a5a98 operations/capabilities#REACHING_AT:cd2556536e41 operations/capabilities#ACTOR_AT:81a568a0fb0c operations/capabilities#routeAt:b80bb4b90b70 operations/capabilities#ROUTE:7dec5eba4788 operations/capabilities#inboundAt:1a4583a141f1 operations/capabilities#OPENAPI_AT:d6b86d9cb07d operations/capabilities#MCP_AT:5b46a2eec16c operations/capabilities#Capability:878bfe369e2b operations/capabilities#reachable:40d77d9b3ba7 operations/capabilities#switched:a654a4b88939
127
+ core-dispatch 1874eb1e70a7 operations/dispatch#DISPATCH_AT:4e8f2c0639bf operations/dispatch#dispatched:b8a8e12c37e2
128
+ databases 1a5345f17774 integrations/pglite#shapeOf:c5582022770c integrations/pglite#Kept:6057152b4e6e integrations/pglite#Stood:aa41216d75b6 integrations/pglite#standing:78b2926e3f47 integrations/pglite#storing:4bbdae21bdcc
129
+ derivation-attach 33ee19bee9e7 derivation/attach#ATTACH:8b0b999ca5c9
130
+ derived-check d0b098621843 derivation/generators/check#CheckStatus:3d5184654de8 derivation/generators/check#FileCheck:5fc2fc17d9dc derivation/generators/check#CheckReport:0a85b0b7a552 derivation/generators/check#ReadFile:bfe47da3146a derivation/generators/check#CheckOptions:12047b27ac13 derivation/generators/check#checkGenerated:303b484f0191 derivation/generators/check#formatCheckReport:f1ffd8d71128 derivation/generators/check#detectHandEdits:4cb9374c9dec
131
+ descend 16cd7dcb60b3 core/descend#ROOT:16475c413846 core/descend#TREE:16475c413846 core/descend#THREAD_AT:16475c413846 core/descend#unkept:c4b11ba631c2 core/descend#LISTS:4bc9c06ef52b core/descend#ROW_LISTS:c9d0aa651f7b core/descend#Row:b97aa507e223 core/descend#Pass:6d224c4baa3b core/descend#Finding:59d032ea6dfc core/descend#under:9d2961e6c891 core/descend#sources:3ccbfc44dc32 core/descend#configured:08dd6fe94449 core/descend#hosting:03773213bb0d core/descend#uncompiled:e6cc5d02da1f core/descend#read:5b91d50130a7 core/descend#shapesNamed:b7e8c501d5a3 core/descend#threading:4203b54a8ba4 core/descend#shapeFields:c90f90e89613 core/descend#Field:3cff13ab8ec4 core/descend#listShape:de887cd9f0d5 core/descend#listFields:0ac02ba9a2d7 core/descend#rowShape:de887cd9f0d5 core/descend#nodesIn:0e1ab44ef9ff core/descend#reached:3ccbfc44dc32 core/descend#forget:a3965c1dfabe core/descend#descend:cb2c0f44b0be
132
+ descent-check 21b078209d19 integrity/check-threads#ROOT:fed419935721 integrity/check-threads#THREAD_AT:ad73a49b2e42 integrity/check-threads#TREE:b1b38c62f173 integrity/check-threads#descend:e424ec88ff49 integrity/check-threads#Finding:59d032ea6dfc integrity/check-threads#Pass:ebdf8cc00bc4 integrity/check-threads#trackedFiles:3ccbfc44dc32 integrity/check-threads#unthreaded:461b6e326ac7 integrity/check-threads#twiceParented:e96bea943ec4 integrity/check-threads#refusals:f9f72d575f28
133
+ determinism 30bc0a11b902 derivation/generators/determinism#GeneratedFile:1f5dc83a87cd derivation/generators/determinism#sortedBy:f08908497eb1 derivation/generators/determinism#compare:8ad383dc8043 derivation/generators/determinism#sortedEntries:61aff6982b60 derivation/generators/determinism#bodyHash:155def245510 derivation/generators/determinism#withHeader:1561e9fea045 derivation/generators/determinism#ParsedFile:078b3aa626c3 derivation/generators/determinism#parseGenerated:e4beb7be1f99 derivation/generators/determinism#lines:c0f235ccf1c6 derivation/generators/determinism#tsString:8a273616993f derivation/generators/determinism#stableJson:5d314875cc3d derivation/generators/determinism#pascal:ff8fa0760be2 derivation/generators/determinism#camel:ff8fa0760be2
134
+ docs-writer 3133175d51ef
135
+ error-catalogue e8bbd9220d52 core/errors/catalogue#AuthUnauthenticated:7e24f688d95d core/errors/catalogue#AuthInvalidCredentials:6e9c9b5413b8 core/errors/catalogue#AuthTokenExpired:3d4e6245d4fc core/errors/catalogue#AuthTokenReused:1f9440e9b282 core/errors/catalogue#AuthSessionRevoked:85af3a32bd03 core/errors/catalogue#AuthDenied:2f7a896f225a core/errors/catalogue#QuotaExceeded:62810e277123 core/errors/catalogue#QuotaReservationExpired:eec8b5e6df5e core/errors/catalogue#RateLimitExceeded:90b8438d32ae core/errors/catalogue#FeatureNotInPlan:304ce3f7caf9 core/errors/catalogue#DbNotFound:60f59203aba5 core/errors/catalogue#DbConstraintViolation:9c00c2863608 core/errors/catalogue#DbAlreadyExists:3b70497d8a74 core/errors/catalogue#DbConflict:2b62291e50de core/errors/catalogue#DbMigrationChecksumMismatch:85390d325334 core/errors/catalogue#DbDestructiveWithoutDryRun:3a740a2a33eb core/errors/catalogue#DbRoundTripBudgetExceeded:163a19f0d8d6 core/errors/catalogue#DbCursorInvalid:ce7f9cc9c08f core/errors/catalogue#DbCursorExpired:3d2f1df512e8 core/errors/catalogue#WorkflowNodeFailed:1c4b5a94fe09 core/errors/catalogue#WorkflowInvalidTransition:fdcb1b51d4ac core/errors/catalogue#WorkflowCompensationFailed:c75b034c6ac9 core/errors/catalogue#WorkflowAlreadyRunning:fbb480d80e00 core/errors/catalogue#QueueJobFailed:27181968a2f5 core/errors/catalogue#QueueDlqExhausted:6aea1c485aa9 core/errors/catalogue#AiProviderUnavailable:81a440a67d2b core/errors/catalogue#AiSchemaValidationFailed:af8093c663e0 core/errors/catalogue#AiToolNotInMask:e146b0a15718 core/errors/catalogue#AiNodeCapExceeded:fe1c6e7a515b core/errors/catalogue#SearchIndexFailed:7dfae99b2c09 core/errors/catalogue#SearchQueryInvalid:0d12d8cbd08f core/errors/catalogue#CommsChannelKindUndeclared:aee44b376a96 core/errors/catalogue#CommsChannelKindUndescribed:3d9b33eab1a5 core/errors/catalogue#CommsChannelKindUnlabelled:d133c17b625f core/errors/catalogue#CommsChannelKindUndocumented:ba7825c59599 core/errors/catalogue#CommsChannelKindDuplicate:bfb8e5a55815 core/errors/catalogue#ConfigInvalid:d60b61c23be3 core/errors/catalogue#ConfigMissingEnv:b9894f249713 core/errors/catalogue#ConfigSecretInPublicVar:52d6b7523d93 core/errors/catalogue#ConfigCredentialInvalid:3b2093f17fe9 core/errors/catalogue#ConfigScopeMissing:ae883fc18dd8 core/errors/catalogue#ConfigResourceNotFound:adfbe73a76e9 core/errors/catalogue#ConfigDestinationIncompatible:7c8f1af25018 core/errors/catalogue#ConfigBlocksExit:89e1100f3501 core/errors/catalogue#NetTimeout:b58c1472a696 core/errors/catalogue#NetUpstreamUnavailable:f0970ddb2b72 core/errors/catalogue#NetDestinationRefused:bc6fbc18e2d8 core/errors/catalogue#InternalUnexpected:928b73a76ab6 core/errors/catalogue#InternalNotImplemented:c5c6590041d7 core/errors/catalogue#InternalInvalidArgument:ce6701313197 core/errors/catalogue#PLATFORM_ERRORS:99af67671495 core/errors/catalogue#PlatformErrorCode:8f4f69419324
136
+ error-classes 9e5a171ecfc9 core/errors/classes#ErrorClassDef:f86478155103 core/errors/classes#ERROR_CLASSES:edfbdd775e5f core/errors/classes#ErrorClass:76fd5e188a3d core/errors/classes#ERROR_CLASS_NAMES:74c194ba25bd core/errors/classes#classDef:7d0a82d47941
137
+ error-namespaces e446f70fbaf3 core/errors/namespaces#NAMESPACES:e337ac1a0dcc core/errors/namespaces#Namespace:605585a58c10 core/errors/namespaces#ErrorCode:9c332e778de1
138
+ error-results e57bf4578348 operations/error-results#errorDefForResult:d20408abb638 operations/error-results#platformErrorForResult:cfa19576d3d2
139
+ error-shape 88996a2a97a2 core/errors/error#ErrorCode:b1b889e0a6a2 core/errors/error#ErrorDef:7cbf5075cdfe core/errors/error#DefineErrorInput:26ba65e1ba53 core/errors/error#PlatformErrorInit:46fb5f54ad40 core/errors/error#PlatformError:cb9f313b940e core/errors/error#isPlatformError:54c7e704b130 core/errors/error#ErrorFactory:ac8e16652a4c core/errors/error#DuplicateErrorCodeError:c2e0d4b9a453 core/errors/error#ErrorCatalog:2d6513801aad core/errors/error#catalog:6f8193fbf011 core/errors/error#defineError:b63127ff92f5
140
+ files e98027045f8f integrations/disk#Answering:ac82a4270dab integrations/disk#Kind:f5387f9bb6ed integrations/disk#Listed:78797afdac99 integrations/disk#Measured:9298c8f4b3ff integrations/disk#Ran:b6a7c95e785f integrations/disk#CHANNEL:aed3e27aa991 integrations/disk#FOLDER:e95be41b2cdc integrations/disk#answeredBy:c00c834376b3 integrations/disk#across:c4b11ba631c2 integrations/disk#beyond:c4b11ba631c2 integrations/disk#attached:f8c2780ce4f6 integrations/disk#here:f971b85d3d6d integrations/disk#kind:485fa3d1c1c6 integrations/disk#existsSync:219e8de5f523 integrations/disk#readFileSync:84627dee3e2a integrations/disk#writeFileSync:b65098c20781 integrations/disk#createFileSync:a37d24a0bcc9 integrations/disk#Named:a490c22afabe integrations/disk#readdirSync:2fab39d45004 integrations/disk#Held:488919ee8a4c integrations/disk#statSync:658893a15fb6 integrations/disk#rmSync:92d8fa578550 integrations/disk#rmdirSync:9473a29789e7 integrations/disk#renameSync:9c9fbadb45e6 integrations/disk#appendFileSync:ecfd24b4e865 integrations/disk#realpathSync:626005f54fe3 integrations/disk#HERE:b5fa160c6f41 integrations/disk#standing:860b93996daf
141
+ finding 9058cbe2ee32 core/finding#Finding:180d780f4cd9 core/finding#forbids:019885a2a7da core/finding#runChecker:bea68acae26f
142
+ gate-writer 85994b5ddb7d
143
+ glossary-shape 8e609bb71c20 knowledge/glossary#Glossary:e30f4c6fe581
144
+ glossary-writer fb212157b8ef
145
+ grant-shape 3faea89db7de operations/access#PERMITS_AT:747bdea9514c operations/access#declaredWords:5a76b6349900 operations/access#undeclared:f8a1498208ca operations/access#Declaring:d425aa11e994 operations/access#Caller:e84d64e1d650 operations/access#keyIn:9590087fcf75 operations/access#declaredCallers:935aee93abaa operations/access#Grant:e7cec0376200 operations/access#opensToEverybody:10368b21fa22 operations/access#grantedTwice:563aa26b055e operations/access#unanswerable:563aa26b055e
146
+ http 7393c692f6a1 integrations/https#HTTP_CALL_ACTION:b90d08fc2104 integrations/https#HttpNotConfiguredError:cb4f87163654 integrations/https#OutwardTransportError:b169a7a9de9a integrations/https#refusedPath:7ece79538abe integrations/https#outwardUrl:ab5ee055ae1c integrations/https#HttpOptions:d44a8302e1a2 integrations/https#STREAMED:0f44419eff19 integrations/https#TOLD:ca7940b4fc66 integrations/https#called:e21f31899fb4 integrations/https#sendingHttp:945b8b045042 integrations/https#RecordedCall:318c0983fea1 integrations/https#ScriptedAnswer:9f4273f0ade9 integrations/https#Scripted:6df9ac9d9f15 integrations/https#recordingHttp:fc2ad46f8053
147
+ init 1cc74e78bbcd core/init#TREE:0b34eb8c6947 core/init#ROOT:23a226909662 core/init#SHAPED:babaddbfd35d core/init#AlreadyThreadedError:6b783660d574 core/init#COMPILER:09b3efa678f5 core/init#MANIFEST:495fdf585250 core/init#REGISTRY:16475c413846 core/init#IGNORED:16475c413846 core/init#ignored:15de269b224c core/init#compiler:15de269b224c core/init#root:383996e16a82 core/init#init:8121415e87a8
148
+ integrations-attach 70f267f5b0c2 integrations/attach#CONCEPTS:7a75843a03cf integrations/attach#ATTACH:8b0b999ca5c9
149
+ integrity-attach c3c1df5cf9f7 integrity/attach#ATTACH:8b0b999ca5c9
150
+ invoked d7be95a29ed4 core/invoked#invoked:9133dcc091f3 core/invoked#SOURCE:e43353c41f9b core/invoked#BESIDE:95b5fff25591 core/invoked#LOADER:4de2138e3a11 core/invoked#CLI:4de2138e3a11 core/invoked#REFUSED:5cbef15de1fd core/invoked#shared:4820653ff101 core/invoked#exit:a631d3ee5cd5 core/invoked#refusal:51d097295f50
151
+ issues-writer 66733ec4dec8
152
+ knowledge-attach 02fc3cfaa4fe knowledge/attach#ATTACH:8b0b999ca5c9
153
+ lint 9797b6cb8cbc integrity/lint#ruleMessage:cbd1b8bbcf00 integrity/lint#agentInstructions:3ccbfc44dc32 integrity/lint#defineRule:d391a4a1f3aa integrity/lint#defineRules:8bfd1bf6cfa5 integrity/lint#ruleRule:466d7d9ccaa3 integrity/lint#ruleRules:b7cc8a626183 integrity/lint#ruleSeverities:4506861e89ae integrity/lint#plugin:948c4ffe9079 integrity/lint#default:af79bdaf6dee integrity/lint#rules:f3a0aef9ed97 integrity/lint#ruleDeclarations:30516a9f1aa2 integrity/lint#RuleViolation:31a1a1e48e80 integrity/lint#RuleRunner:bbf72f90b110 integrity/lint#theRules:89139ffca783
154
+ lsp-bin f592352bce19
155
+ lsp-diagnostics 49801c4b0424 integrity/lsp/diagnostics#DiagnosticSource:d08c813cf00a integrity/lsp/diagnostics#repoSource:dff5c2ce8d38 integrity/lsp/diagnostics#ERROR:d674d8e65aca integrity/lsp/diagnostics#WARNING:00a4f8869ab3 integrity/lsp/diagnostics#Position:46e0a3561d8b integrity/lsp/diagnostics#Diagnostic:ae6f64604dbe integrity/lsp/diagnostics#SOURCE_NAME:2514d79dbd06 integrity/lsp/diagnostics#toDiagnostic:fcae9032abb1 integrity/lsp/diagnostics#report:0dbedc0cd91b
156
+ lsp-findings 72f7d80645c0 integrity/lsp/findings#At:f235cb016ba3 integrity/lsp/findings#Finding:7d5c3a039f29 integrity/lsp/findings#detailOf:c2c587190fb0 integrity/lsp/findings#anchorIn:a250e5899ebf integrity/lsp/findings#locate:3793c6d451b7 integrity/lsp/findings#headOf:1a535cdf8f10 integrity/lsp/findings#rangeOf:f398dcb2f343
157
+ lsp-lint 87850cd24e7c integrity/lsp/lint#isLintable:fd3e0e886f7d integrity/lsp/lint#LINT_CONFIG:82d55ccf289a integrity/lsp/lint#LintUnavailableError:f8f16a4068e3 integrity/lsp/lint#lintFindings:8fa9b43d2fa3
158
+ lsp-protocol d0ad8650307b integrity/lsp/protocol#RpcMessage:50bff985f883 integrity/lsp/protocol#METHOD_NOT_FOUND:ada3d6776590 integrity/lsp/protocol#encode:f00f8f2ab7bb integrity/lsp/protocol#MalformedMessageError:f8f16a4068e3 integrity/lsp/protocol#MessageBuffer:b1e528cf49fb
159
+ lsp-server a66c663b032d integrity/lsp/server#ServerOptions:b2f4aaebe993 integrity/lsp/server#LspServer:5fa4c9448c6f
160
+ operation-nodes 20b2da81c3ba operations/nodes#Node:2112c57d9bb8 operations/nodes#Held:0ec1b9f302e4 operations/nodes#STOPPED:5cbef15de1fd operations/nodes#stopped:2f6d794b907c operations/nodes#nd_read:7bebde547b8e operations/nodes#nd_action:65eae62feaaa operations/nodes#nd_branch:2c5b4a591cd3 operations/nodes#nd_each:bae680443754 operations/nodes#nd_parallel:bfa84c79ec03 operations/nodes#nd_repeat:3966ebc9c7c8 operations/nodes#nd_stop:61b8668ab2a5
161
+ operation-shape 76f2a87e0f89 operations/operations#OPERATIONS_FILE:e46dfbcf462b operations/operations#TRIALS_AT:aaf352faa5b3 operations/operations#NODES_FILE:210e774203a3 operations/operations#MEMBERS_LIST:23961436d339 operations/operations#Reaching:deebde0237b4 operations/operations#Opened:eb6571a8c1bb operations/operations#Reads:f8c3a12083b7 operations/operations#WINDOWS:89b1baaceb71 operations/operations#Window:c777511a8ae1 operations/operations#Allowance:04d9eb029682 operations/operations#Counting:7e197fa63f26 operations/operations#Operation:f6d6334481b9 operations/operations#OPERATIONS:7e34107beaa8
162
+ operations-attach a3351a64ef85 operations/attach#TAKES:6cddee9943a2 operations/attach#WOVEN:a99aa29866b3 operations/attach#said:c89bb33d7607 operations/attach#ATTACH:8b0b999ca5c9
163
+ permits-writer cf8a23c58b6d
164
+ programs 1ecc1f8d7cef integrations/cli#Starting:960e2047c9fb integrations/cli#starts:0e1bf71a8735 integrations/cli#started:cd7548fe9f9c integrations/cli#handed:d687c7041310 integrations/cli#Holding:39f4bf3d6d9e integrations/cli#Held:aa0aeeffb516 integrations/cli#releases:a3965c1dfabe integrations/cli#claims:3aa4752f056f integrations/cli#programFor:bd904f4e38b2 integrations/cli#SIGNING:8cd5f4b56b1b integrations/cli#signing:15de269b224c integrations/cli#running:ea5213e21370 integrations/cli#Expansion:fbb6d3ec7c7f integrations/cli#expansions:ebec34e2d4e0 integrations/cli#calls:979f9d21a871 integrations/cli#LOCKFILES:0d3bc577e11b integrations/cli#manager:45f7b3a950fa integrations/cli#adding:8c0a5aa2eb4b integrations/cli#needing:6ad702835da5 integrations/cli#installing:38eeb450b217
165
+ publish-writer 58a8d9768b1b
166
+ read-command b963de5ab710
167
+ release-shape 969a84467fb1 derivation/release#PREFIXES:b8074240fbd0 derivation/release#KINDS:48b5fc802be2 derivation/release#Written:c43100ae39af derivation/release#WRITES:e54e839a5471 derivation/release#LISTENS:58f03905ca9e derivation/release#SAID:5bd0783b90d3 derivation/release#kindOf:4176df8c51b9 derivation/release#WRITTEN_BY:9173a6988956 derivation/release#CHECKED_BY:da31b0e1d991
168
+ release-writer 2ed92545845c derivation/generators/release#CHECKED_BY:50e734bb9f42 derivation/generators/release#WRITES:b89e55dbc69c derivation/generators/release#made:ea0890697a77
169
+ result 9f5e98a1c646 operations/result#ResultCode:2c9cb831da2e operations/result#FailureIdentity:8af44679ea20 operations/result#Result:51fa3d37b70f operations/result#ok:012b7060c34a operations/result#fail:5787814702d4 operations/result#ValidationError:8056c1ea409e
170
+ round 5f921eb9c8f9
171
+ rows 6194da5f7cb9 core/rows#Bounds:9f96256b89fa core/rows#inCode:3aa8ca939e44 core/rows#matched:efe81f54e0c4 core/rows#listBounds:3adc84a88226 core/rows#nestedBounds:eecf676136a9 core/rows#holdsRow:745a20ac8a94 core/rows#seededAt:483fd49afaa5 core/rows#rowsIn:98b8583dd419 core/rows#withRow:dcc57512f05d core/rows#withSeed:dd37a3bf5b3b core/rows#withRequires:d11efd3851ea core/rows#seedsIn:2de54e168233 core/rows#afterRow:6c07ac3f763a core/rows#quoted:7cb4ec66102d core/rows#valuesIn:84f1cf0a2b48 core/rows#unread:a2c39cf9feb9 core/rows#STATED:3c39f854eb6a core/rows#reconciled:36df6a2bfcce core/rows#fieldIn:13b49f086cce core/rows#withField:7c52e0fd3d24 core/rows#withTopField:6ac3873438fe core/rows#withoutField:04bf213eb8dc core/rows#withoutRow:ecc4a8d269f9 core/rows#marked:ca0a5bc98816 core/rows#showing:2d45570925a8
172
+ scope 5ac2ae9efe74 core/scope#ORGANISATION:8510114ffd9e core/scope#THING:2514d79dbd06 core/scope#NAMED:c33cb60b8e33 core/scope#named:72b4c80878b8 core/scope#idOf:3ab7154bd91a core/scope#ours:ab9daad14f31 core/scope#installed:f0f987abd6f9
173
+ sealed-store 53b4c569beaa integrations/vault#VAULT_DIR:5dd2b28d7cef integrations/vault#SEALED_NAME:4eaaac010b8c integrations/vault#KEY_NAME:065de823d162 integrations/vault#SEALED_AT:548d924665e3 integrations/vault#KEY_AT:2bcb12622e0d integrations/vault#ALGORITHM:84a84e44a5a1 integrations/vault#KEY_BYTES:95940045d335 integrations/vault#keyOf:71ea2ee0c552 integrations/vault#keyed:878e72b78d7b integrations/vault#seal:48aead05fdcd integrations/vault#sealedIn:d0d2e1cc0461 integrations/vault#opened:fea1d83b295a integrations/vault#unseal:e06ef898eab9 integrations/vault#IGNORES:4de2138e3a11
174
+ secret a544a5e4fa77 integrations/secret#SECRECY:0fd167bfea16 integrations/secret#SAID:7b6a22f69118 integrations/secret#Vault:8dc7e8d666b8 integrations/secret#Secret:7cbfaeada097 integrations/secret#secrecyOf:53c866c6d50d integrations/secret#isServerOnly:14af671c09c3 integrations/secret#unclassified:3f18056f2160 integrations/secret#valued:3f18056f2160
175
+ seed-writer 668285683682 operations/generators/seed#quoted:b3a2bd470cb2 operations/generators/seed#beside:6c0fa306492b operations/generators/seed#runtime:b909738618a0 operations/generators/seed#types:2aee6c512ee7 operations/generators/seed#builtFrom:3b21d7bfce78 operations/generators/seed#operations:69e0b4d6cf2d operations/generators/seed#problem:44d3a33067da operations/generators/seed#blockIn:4aa89e8da0ca operations/generators/seed#scaffold:d58c01b2574a operations/generators/seed#nodeText:f7813131ffee operations/generators/seed#seed:9a4c29314682
176
+ shape 079cfa1542bf core/thread#Quote:34b9cab8ecec core/thread#Threaded:aa8a41b1903e core/thread#Member:2112c57d9bb8 core/thread#PREFIXES:263416accca5
177
+ slopnator 63d10fea4cda integrity/slopnators/sl_broken_lineage#slopnator:42fb769c73ec integrity/slopnators/sl_declared_elsewhere#slopnator:42fb769c73ec integrity/slopnators/sl_derived_drift#Derivation:a7cc81c002ff integrity/slopnators/sl_derived_drift#derivations:f46b8572fa7c integrity/slopnators/sl_derived_drift#slopnator:42fb769c73ec integrity/slopnators/sl_door_in_a_node#slopnator:42fb769c73ec integrity/slopnators/sl_hardcoded_style#slopnator:42fb769c73ec integrity/slopnators/sl_inert_island#slopnator:42fb769c73ec integrity/slopnators/sl_inert_slopnator#slopnator:42fb769c73ec integrity/slopnators/sl_missing_row#slopnator:42fb769c73ec integrity/slopnators/sl_no_barrel#slopnator:42fb769c73ec integrity/slopnators/sl_no_child_process#slopnator:42fb769c73ec integrity/slopnators/sl_no_comment#slopnator:42fb769c73ec integrity/slopnators/sl_no_dispatch_bypass#slopnator:42fb769c73ec integrity/slopnators/sl_no_import_cycle#slopnator:42fb769c73ec integrity/slopnators/sl_no_such_command#slopnator:42fb769c73ec integrity/slopnators/sl_only_takes_a_literal#slopnator:42fb769c73ec integrity/slopnators/sl_outside_an_operation#slopnator:42fb769c73ec integrity/slopnators/sl_screen_holds_only_declared#slopnator:42fb769c73ec integrity/slopnators/sl_secret_literal#slopnator:42fb769c73ec integrity/slopnators/sl_stale_path#slopnator:42fb769c73ec integrity/slopnators/sl_twice_meant#slopnator:42fb769c73ec integrity/slopnators/sl_twice_parented#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_crossing#DOORWAY:7291424d5e4c integrity/slopnators/sl_undeclared_crossing#HANDED_TO:43e1dac30e33 integrity/slopnators/sl_undeclared_crossing#judging:73bfee6bcfe2 integrity/slopnators/sl_undeclared_crossing#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_destination#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_element#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_list#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_node#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_operation#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_variant#slopnator:42fb769c73ec integrity/slopnators/sl_undeclared_webhook#slopnator:42fb769c73ec integrity/slopnators/sl_underived_route#slopnator:42fb769c73ec integrity/slopnators/sl_undescribed#slopnator:42fb769c73ec integrity/slopnators/sl_ungoverned_island#slopnator:42fb769c73ec integrity/slopnators/sl_unlisted_program#slopnator:42fb769c73ec integrity/slopnators/sl_unnamed_island#slopnator:42fb769c73ec integrity/slopnators/sl_unpaired_member#slopnator:42fb769c73ec integrity/slopnators/sl_unpaired_slopnator#slopnator:42fb769c73ec integrity/slopnators/sl_unprefixed_member#slopnator:42fb769c73ec integrity/slopnators/sl_unthreaded#Reach:ee1c5ae840ce integrity/slopnators/sl_unthreaded#Meaning:eb5d28d0d101 integrity/slopnators/sl_unthreaded#here:7186c669fd80 integrity/slopnators/sl_unthreaded#atsIn:2a22e0fd79d4 integrity/slopnators/sl_unthreaded#rowsIn:e0b6bdfd102e integrity/slopnators/sl_unthreaded#Governed:26751a8a4a1c integrity/slopnators/sl_unthreaded#governedBy:7fd12eca7c1b integrity/slopnators/sl_unthreaded#filesGoverned:65cdfbe444d1 integrity/slopnators/sl_unthreaded#foldersGoverned:65cdfbe444d1 integrity/slopnators/sl_unthreaded#governs:a4fad74ada50 integrity/slopnators/sl_unthreaded#Declared:28a6c94b90c6 integrity/slopnators/sl_unthreaded#canonical:74c647d3ad5c integrity/slopnators/sl_unthreaded#islandsDeclared:16048ec0c690 integrity/slopnators/sl_unthreaded#declaresIsland:f3daaa415aee integrity/slopnators/sl_unthreaded#meaningsIn:53683e6a54b6 integrity/slopnators/sl_unthreaded#Index:1768b6501864 integrity/slopnators/sl_unthreaded#index:b914d00e9d0f integrity/slopnators/sl_unthreaded#forget:a3965c1dfabe integrity/slopnators/sl_unthreaded#threaded:2b0e40c55bac integrity/slopnators/sl_unthreaded#parses:df7c6aede8b6 integrity/slopnators/sl_unthreaded#unreadable:cb6cf51129a6 integrity/slopnators/sl_unthreaded#names:0096812bd8bb integrity/slopnators/sl_unthreaded#slopnator:42fb769c73ec integrity/slopnators/sl_untranslated_key#slopnator:42fb769c73ec integrity/slopnators/sl_unvaulted_secret#slopnator:42fb769c73ec integrity/slopnators/sl_unversioned#slopnator:42fb769c73ec
178
+ slopnator-shape 51d078034457 integrity/slopnator#NOT_WRITTEN:5cbef15de1fd integrity/slopnator#SHIPPED:16475c413846 integrity/slopnator#SEEDED:16475c413846 integrity/slopnator#ROOT:16475c413846 integrity/slopnator#SlopnatorContext:d2a635854c3c integrity/slopnator#Spoken:e2c874045414 integrity/slopnator#Proves:0369cb81daa2 integrity/slopnator#Reads:b81a76c9cc9a integrity/slopnator#Reading:76ea63cd70a7 integrity/slopnator#Running:25cbab8e340a integrity/slopnator#Slopnator:ad0ae14e5f13 integrity/slopnator#Visiting:9af67a68f078 integrity/slopnator#reads:e851af39272f integrity/slopnator#visits:6e4f7f5deee8 integrity/slopnator#sweeps:e851af39272f integrity/slopnator#Byproduct:1b8a6fb06159 integrity/slopnator#slopnatorName:c452dd2bdbbc integrity/slopnator#region:637499d76201 integrity/slopnator#derivedHere:7186fd9fd284 integrity/slopnator#subject:e8d0ab22f1d4 integrity/slopnator#governs:91c49fcb7fdf integrity/slopnator#UnloadableSlopnatorError:9028dcb4c5ec integrity/slopnator#UnreadableRulesError:b60942b119f0 integrity/slopnator#load:5eaf126b2fda integrity/slopnator#proofsOf:763e7a5e9da3 integrity/slopnator#scaffold:15de269b224c integrity/slopnator#write:5c9de9c9d484 integrity/slopnator#onDisk:d463041c43a5 integrity/slopnator#named:c6a6a92894dc integrity/slopnator#rules:13ef34c2acc6 integrity/slopnator#seeds:a6a029998d40 integrity/slopnator#GENERALLY:baedbff8be54 integrity/slopnator#declaring:7229d8fb559f integrity/slopnator#declareSeeded:e732adf1e1e2
179
+ sweep-walk ef2bdac3afa7 integrity/sweep#visit:9b8811eccd92 integrity/sweep#Caught:5b4dba207f58 integrity/sweep#tracked:d463041c43a5 integrity/sweep#sweep:c668e953efb7
180
+ target-shape 6a040b114324 integrations/target#REACH:7f6cf3225ee3 integrations/target#Reach:28718a29ebbb integrations/target#ADDRESS:0ac7d4249d53 integrations/target#Addressed:83aeecdb60d8 integrations/target#Holds:dc775c87554b integrations/target#HOLDS:191fd51c8c5e integrations/target#SAID:cbb49ee60a17 integrations/target#OPENS:49659340ec1b integrations/target#Kind:8f9d1230cc55 integrations/target#Listed:60ef88b9766a integrations/target#Measured:ba8fd66caf68 integrations/target#Answering:94596db14850 integrations/target#Attached:92ca42ae2289 integrations/target#ORDERS:18b2c6e76a2b integrations/target#Order:a8b50f8b7042 integrations/target#Answer:eabf66413c91 integrations/target#Recorded:fc9fb7439786 integrations/target#How:29dc321843d4 integrations/target#Ran:8a9d78d05850 integrations/target#Running:b730520aa405 integrations/target#Calling:8a1fa971be64 integrations/target#HttpMethod:52ada6a3365a integrations/target#HttpRequest:a2d4c8dbe75f integrations/target#HttpResponse:b56874e51801 integrations/target#Http:834fa96f4955 integrations/target#Row:6f5edf17a61c integrations/target#PropertyValue:4885bb975ac1 integrations/target#isRow:539dcd1c4a4b integrations/target#ReadField:99e67343fe70 integrations/target#FieldList:83120b2166e7 integrations/target#Store:3e01b6e1529c integrations/target#Transactional:c8d08d0622c4 integrations/target#isTransactional:1170f66cd9b8 integrations/target#Integration:d851a497f22c integrations/target#Target:be9e72681022 integrations/target#Webhook:859980501775 integrations/target#Call:6f9ff3b7255b integrations/target#CALL_PREFIX:471df1e09d10 integrations/target#fills:ebc8be09b0a4 integrations/target#reachOf:20d02de80d4c integrations/target#standsHere:44e3d70360f8 integrations/target#holdsOf:901a78c9a0d2 integrations/target#requirable:babe69707585 integrations/target#driverOf:6e977f406f5c integrations/target#addressOf:586d8e0c699d integrations/target#credentialsOf:cba586002fb2 integrations/target#servesBrowser:88b5a2eb80b0 integrations/target#unreachable:3fd2b82d0e99 integrations/target#LOCKFILES:f79c78e2421b integrations/target#PACKAGER:5c86349b8352 integrations/target#managerOf:2fb3ef208615 integrations/target#programOf:0438b85eb0d1 integrations/target#unlisted:95b5fff25591 integrations/target#misnamed:b92bbf30de70 integrations/target#misaccepted:4bb2e3fb0b7d integrations/target#placedAt:040d115c24d8 integrations/target#placed:8954a87a6efd integrations/target#unaddressed:2dff7cf19161 integrations/target#unheld:2dff7cf19161 integrations/target#unanswered:a6d304c26fd3 integrations/target#unplaced:840ddd6855b4 integrations/target#refusals:acca65833de8 integrations/target#targetOf:822f8d420b17
181
+ tree 296438e3beb4 core/tree#FOLDER:2027dbad6ffb core/tree#Tree:8f338d863404 core/tree#UnthreadedRepositoryError:9ee18e1932c0 core/tree#folder:15de269b224c core/tree#findTree:49ec72a1c670 core/tree#strayFiles:495876581332 core/tree#inTree:9763add68f9f
182
+ trial-runner 79913cceed92 operations/generators/trial#TRIALS_AT:48cf5b1696fb operations/generators/trial#Scenario:7e6b3edabc0c operations/generators/trial#Trial:ec5363988c79 operations/generators/trial#Outcome:0b6ac6861c30 operations/generators/trial#Run:4064695a5df2 operations/generators/trial#runScenario:7e1119843a5d operations/generators/trial#scenariosFor:807a80dc6acb operations/generators/trial#compared:c81d29fd44b2 operations/generators/trial#unproven:27bd1e31789b operations/generators/trial#record:2ba585ade9fe
183
+ trial-writer 0bb31c131a9b integrity/generators/trial#Scenario:cec489475009 integrity/generators/trial#Trial:0ed5a9870dc8 integrity/generators/trial#Derivation:5542c019485a integrity/generators/trial#Outcome:4a336cfdb388 integrity/generators/trial#Run:4e6160f4a4fd integrity/generators/trial#probeAt:cbd1b8bbcf00 integrity/generators/trial#deriveTrials:801b86fffdcc integrity/generators/trial#runTrial:9d8f24783d10 integrity/generators/trial#crossed:ccfbf430e6ea integrity/generators/trial#runTrials:0b4ce7fbb41d
184
+ types df0eae11185b core/types#VALUE_TYPES:9d3af11975a0 core/types#ValueType:de0a55f12333 core/types#KEYBOARDS:187f8f1b5fef core/types#Keyboard:0f9fcadff185 core/types#ENTRY_MODES:6937aa450f33 core/types#EntryMode:619a8cf61463 core/types#Checked:3be2f12a6aae core/types#held:ecda2d49d546 core/types#refused:6c4e70ea8940 core/types#Facts:f94c9b180191 core/types#Format:f0fc652558a7 core/types#stripControl:ffc10711842d core/types#BOUNDED:ae1a8dd96249 core/types#FORMATS:a879ae389a3c core/types#formatsOf:1dda69cdbc5b core/types#formatNamed:2007301c8e1b core/types#plainFormat:f683a8a755a5 core/types#formatFor:36746cc1a7ad core/types#checkValue:c4d6bf4e05e4 core/types#showValue:68bfeaa86be4
185
+ vault-writer 8d195f000c9c
186
+ -->
187
+
3
188
  ## 0.1.4
4
189
 
5
190
  something it shipped is gone or is not the shape it was, so taking this one can stop your code compiling.
@@ -508,7 +508,14 @@ const SEEDED = {
508
508
  ' },',
509
509
  ].join('\n'),
510
510
  };
511
- const SHIPPED = [];
511
+ const SHIPPED = [
512
+ {
513
+ into: 'derivation.ts',
514
+ list: 'GENERATORS',
515
+ id: 'commit',
516
+ source: " {\n id: 'commit',\n at: 'node_modules/@prestack/thread/dist/core/generators/commit.js',\n describes: 'Commits every change in this app, so a create or an edit leaves a mark in version control without anyone typing a git command. Unlike `cl_commit`, which runs real git to record a release on the machine the command runs on, this writes the commit in the node the command already runs in, so it works inside the permission fence an attached app runs behind, where no program may be started. It stages what changed, records it under the message it is given, and starts a repository the first time there is none. Pushing and undoing stay deliberate.',\n version: 1,\n by: 'thread commit',\n },",
517
+ },
518
+ ];
512
519
  export const ATTACH = {
513
520
  attaches: SEEDED.attaches,
514
521
  id: SEEDED.id,
@@ -565,6 +565,12 @@ const SEEDED = {
565
565
  }
566
566
 
567
567
  const SHIPPED: readonly { readonly into: string; readonly list: string; readonly id: string; readonly source: string }[] = [
568
+ {
569
+ into: 'derivation.ts',
570
+ list: 'GENERATORS',
571
+ id: 'commit',
572
+ source: " {\n id: 'commit',\n at: 'node_modules/@prestack/thread/dist/core/generators/commit.js',\n describes: 'Commits every change in this app, so a create or an edit leaves a mark in version control without anyone typing a git command. Unlike `cl_commit`, which runs real git to record a release on the machine the command runs on, this writes the commit in the node the command already runs in, so it works inside the permission fence an attached app runs behind, where no program may be started. It stages what changed, records it under the message it is given, and starts a repository the first time there is none. Pushing and undoing stay deliberate.',\n version: 1,\n by: 'thread commit',\n },",
573
+ },
568
574
  ]
569
575
  export const ATTACH: Attaching = {
570
576
  attaches: SEEDED.attaches,
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,150 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { deflateSync, inflateSync } from 'node:zlib';
3
+ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from 'node:fs';
4
+ import { join, relative, sep } from 'node:path';
5
+ import { argv, cwd, stdout, stderr } from 'node:process';
6
+ const dir = cwd();
7
+ const message = (argv[2] ?? 'thread').slice(0, 400);
8
+ const NL = String.fromCharCode(10);
9
+ const NUL = String.fromCharCode(0);
10
+ const SLASH = String.fromCharCode(47);
11
+ const matches = (pat, name) => {
12
+ const parts = pat.split('*');
13
+ if (parts.length === 1)
14
+ return name === pat;
15
+ const first = parts[0];
16
+ if (!name.startsWith(first))
17
+ return false;
18
+ let at = first.length;
19
+ for (let k = 1; k < parts.length - 1; k += 1) {
20
+ const found = name.indexOf(parts[k], at);
21
+ if (found === -1)
22
+ return false;
23
+ at = found + parts[k].length;
24
+ }
25
+ const last = parts[parts.length - 1];
26
+ return name.length - last.length >= at && name.endsWith(last);
27
+ };
28
+ let text = '';
29
+ try {
30
+ text = readFileSync(join(dir, '.gitignore'), 'utf8');
31
+ }
32
+ catch {
33
+ text = '';
34
+ }
35
+ const patterns = [];
36
+ for (const raw of text.split(NL)) {
37
+ let line = raw.trim();
38
+ if (line === '' || line.startsWith('#'))
39
+ continue;
40
+ const negate = line.startsWith('!');
41
+ if (negate)
42
+ line = line.slice(1);
43
+ const dirOnly = line.endsWith(SLASH);
44
+ if (dirOnly)
45
+ line = line.slice(0, -1);
46
+ let anchored = line.startsWith(SLASH);
47
+ if (anchored)
48
+ line = line.slice(1);
49
+ if (line.includes(SLASH))
50
+ anchored = true;
51
+ if (line !== '')
52
+ patterns.push({ negate, dirOnly, anchored, pat: line });
53
+ }
54
+ const ignored = (rel, name, isDir) => {
55
+ if (name === '.git')
56
+ return true;
57
+ let hit = false;
58
+ for (const one of patterns) {
59
+ if (one.dirOnly && !isDir)
60
+ continue;
61
+ if (matches(one.pat, one.anchored ? rel : name))
62
+ hit = !one.negate;
63
+ }
64
+ return hit;
65
+ };
66
+ const BRANCH = ['refs', 'heads', 'main'].join(SLASH);
67
+ const store = (kind, body) => {
68
+ const whole = Buffer.concat([Buffer.from(kind + ' ' + String(body.length) + NUL), body]);
69
+ const sha = createHash('sha1').update(whole).digest('hex');
70
+ const at = join(dir, '.git', 'objects', sha.slice(0, 2), sha.slice(2));
71
+ if (!existsSync(at)) {
72
+ mkdirSync(join(dir, '.git', 'objects', sha.slice(0, 2)), { recursive: true });
73
+ writeFileSync(at, deflateSync(whole));
74
+ }
75
+ return sha;
76
+ };
77
+ const tree = (at) => {
78
+ const entries = [];
79
+ for (const name of readdirSync(at)) {
80
+ const full = join(at, name);
81
+ const stat = statSync(full);
82
+ const rel = relative(dir, full).split(sep).join(SLASH);
83
+ if (ignored(rel, name, stat.isDirectory()))
84
+ continue;
85
+ if (stat.isDirectory()) {
86
+ const sub = tree(full);
87
+ if (sub !== '')
88
+ entries.push({ mode: '40000', name, sha: sub });
89
+ }
90
+ else if (stat.isFile()) {
91
+ const sha = store('blob', readFileSync(full));
92
+ entries.push({ mode: (stat.mode & 0o111) !== 0 ? '100755' : '100644', name, sha });
93
+ }
94
+ }
95
+ if (entries.length === 0)
96
+ return '';
97
+ const key = (one) => one.name + (one.mode === '40000' ? SLASH : '');
98
+ entries.sort((one, two) => (key(one) < key(two) ? -1 : key(one) > key(two) ? 1 : 0));
99
+ const body = Buffer.concat(entries.map((one) => Buffer.concat([Buffer.from(one.mode + ' ' + one.name + NUL), Buffer.from(one.sha, 'hex')])));
100
+ return store('tree', body);
101
+ };
102
+ const treeOf = (sha) => {
103
+ const at = join(dir, '.git', 'objects', sha.slice(0, 2), sha.slice(2));
104
+ const raw = inflateSync(readFileSync(at));
105
+ const body = raw.slice(raw.indexOf(0) + 1).toString('utf8');
106
+ const first = body.split(NL)[0] ?? '';
107
+ return first.startsWith('tree ') ? first.slice(5) : '';
108
+ };
109
+ const record = () => {
110
+ const gitDir = join(dir, '.git');
111
+ if (!existsSync(join(gitDir, 'HEAD'))) {
112
+ mkdirSync(join(gitDir, 'objects'), { recursive: true });
113
+ mkdirSync(join(gitDir, 'refs', 'heads'), { recursive: true });
114
+ writeFileSync(join(gitDir, 'HEAD'), 'ref: ' + BRANCH + NL);
115
+ }
116
+ const head = readFileSync(join(gitDir, 'HEAD'), 'utf8').trim();
117
+ const ref = head.startsWith('ref: ') ? head.slice(5) : BRANCH;
118
+ const refAt = join(gitDir, ref);
119
+ const parent = existsSync(refAt) ? readFileSync(refAt, 'utf8').trim() : '';
120
+ const root = tree(dir);
121
+ if (root === '') {
122
+ stdout.write('commit: nothing to commit' + NL);
123
+ return;
124
+ }
125
+ if (parent !== '' && treeOf(parent) === root) {
126
+ stdout.write('commit: nothing changed' + NL);
127
+ return;
128
+ }
129
+ const when = String(Math.floor(Date.now() / 1000)) + ' +0000';
130
+ const who = 'thread <thread@prestack> ' + when;
131
+ const body = [
132
+ 'tree ' + root,
133
+ ...(parent === '' ? [] : ['parent ' + parent]),
134
+ 'author ' + who,
135
+ 'committer ' + who,
136
+ '',
137
+ message,
138
+ '',
139
+ ].join(NL);
140
+ const sha = store('commit', Buffer.from(body));
141
+ writeFileSync(refAt, sha + NL);
142
+ stdout.write('commit: ' + sha.slice(0, 8) + ' on ' + (ref.split(SLASH).pop() ?? 'main') + NL);
143
+ };
144
+ try {
145
+ record();
146
+ }
147
+ catch (thrown) {
148
+ stderr.write('commit: ' + (thrown instanceof Error ? thrown.message : String(thrown)) + NL);
149
+ process.exit(1);
150
+ }
@@ -0,0 +1,157 @@
1
+ import { createHash } from 'node:crypto'
2
+ import { deflateSync, inflateSync } from 'node:zlib'
3
+ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from 'node:fs'
4
+ import { join, relative, sep } from 'node:path'
5
+ import { argv, cwd, stdout, stderr } from 'node:process'
6
+
7
+ const dir = cwd()
8
+ const message = (argv[2] ?? 'thread').slice(0, 400)
9
+ const NL = String.fromCharCode(10)
10
+ const NUL = String.fromCharCode(0)
11
+ const SLASH = String.fromCharCode(47)
12
+ const matches = (pat: string, name: string): boolean => {
13
+ const parts = pat.split('*')
14
+ if (parts.length === 1) return name === pat
15
+ const first = parts[0]
16
+ if (!name.startsWith(first)) return false
17
+ let at = first.length
18
+ for (let k = 1; k < parts.length - 1; k += 1) {
19
+ const found = name.indexOf(parts[k], at)
20
+ if (found === -1) return false
21
+ at = found + parts[k].length
22
+ }
23
+ const last = parts[parts.length - 1]
24
+ return name.length - last.length >= at && name.endsWith(last)
25
+ }
26
+
27
+ interface Ignore {
28
+ readonly negate: boolean
29
+ readonly dirOnly: boolean
30
+ readonly anchored: boolean
31
+ readonly pat: string
32
+ }
33
+
34
+ let text = ''
35
+ try {
36
+ text = readFileSync(join(dir, '.gitignore'), 'utf8')
37
+ } catch {
38
+ text = ''
39
+ }
40
+ const patterns: Ignore[] = []
41
+ for (const raw of text.split(NL)) {
42
+ let line = raw.trim()
43
+ if (line === '' || line.startsWith('#')) continue
44
+ const negate = line.startsWith('!')
45
+ if (negate) line = line.slice(1)
46
+ const dirOnly = line.endsWith(SLASH)
47
+ if (dirOnly) line = line.slice(0, -1)
48
+ let anchored = line.startsWith(SLASH)
49
+ if (anchored) line = line.slice(1)
50
+ if (line.includes(SLASH)) anchored = true
51
+ if (line !== '') patterns.push({ negate, dirOnly, anchored, pat: line })
52
+ }
53
+
54
+ const ignored = (rel: string, name: string, isDir: boolean): boolean => {
55
+ if (name === '.git') return true
56
+ let hit = false
57
+ for (const one of patterns) {
58
+ if (one.dirOnly && !isDir) continue
59
+ if (matches(one.pat, one.anchored ? rel : name)) hit = !one.negate
60
+ }
61
+ return hit
62
+ }
63
+ const BRANCH = ['refs', 'heads', 'main'].join(SLASH)
64
+
65
+ interface Entry {
66
+ readonly mode: string
67
+ readonly name: string
68
+ readonly sha: string
69
+ }
70
+
71
+ const store = (kind: string, body: Buffer): string => {
72
+ const whole = Buffer.concat([Buffer.from(kind + ' ' + String(body.length) + NUL), body])
73
+ const sha = createHash('sha1').update(whole).digest('hex')
74
+ const at = join(dir, '.git', 'objects', sha.slice(0, 2), sha.slice(2))
75
+ if (!existsSync(at)) {
76
+ mkdirSync(join(dir, '.git', 'objects', sha.slice(0, 2)), { recursive: true })
77
+ writeFileSync(at, deflateSync(whole))
78
+ }
79
+ return sha
80
+ }
81
+
82
+ const tree = (at: string): string => {
83
+ const entries: Entry[] = []
84
+ for (const name of readdirSync(at)) {
85
+ const full = join(at, name)
86
+ const stat = statSync(full)
87
+ const rel = relative(dir, full).split(sep).join(SLASH)
88
+ if (ignored(rel, name, stat.isDirectory())) continue
89
+ if (stat.isDirectory()) {
90
+ const sub = tree(full)
91
+ if (sub !== '') entries.push({ mode: '40000', name, sha: sub })
92
+ } else if (stat.isFile()) {
93
+ const sha = store('blob', readFileSync(full))
94
+ entries.push({ mode: (stat.mode & 0o111) !== 0 ? '100755' : '100644', name, sha })
95
+ }
96
+ }
97
+ if (entries.length === 0) return ''
98
+ const key = (one: Entry): string => one.name + (one.mode === '40000' ? SLASH : '')
99
+ entries.sort((one, two) => (key(one) < key(two) ? -1 : key(one) > key(two) ? 1 : 0))
100
+ const body = Buffer.concat(
101
+ entries.map((one) => Buffer.concat([Buffer.from(one.mode + ' ' + one.name + NUL), Buffer.from(one.sha, 'hex')])),
102
+ )
103
+ return store('tree', body)
104
+ }
105
+
106
+ const treeOf = (sha: string): string => {
107
+ const at = join(dir, '.git', 'objects', sha.slice(0, 2), sha.slice(2))
108
+ const raw = inflateSync(readFileSync(at))
109
+ const body = raw.slice(raw.indexOf(0) + 1).toString('utf8')
110
+ const first = body.split(NL)[0] ?? ''
111
+ return first.startsWith('tree ') ? first.slice(5) : ''
112
+ }
113
+
114
+ const record = (): void => {
115
+ const gitDir = join(dir, '.git')
116
+ if (!existsSync(join(gitDir, 'HEAD'))) {
117
+ mkdirSync(join(gitDir, 'objects'), { recursive: true })
118
+ mkdirSync(join(gitDir, 'refs', 'heads'), { recursive: true })
119
+ writeFileSync(join(gitDir, 'HEAD'), 'ref: ' + BRANCH + NL)
120
+ }
121
+ const head = readFileSync(join(gitDir, 'HEAD'), 'utf8').trim()
122
+ const ref = head.startsWith('ref: ') ? head.slice(5) : BRANCH
123
+ const refAt = join(gitDir, ref)
124
+ const parent = existsSync(refAt) ? readFileSync(refAt, 'utf8').trim() : ''
125
+
126
+ const root = tree(dir)
127
+ if (root === '') {
128
+ stdout.write('commit: nothing to commit' + NL)
129
+ return
130
+ }
131
+ if (parent !== '' && treeOf(parent) === root) {
132
+ stdout.write('commit: nothing changed' + NL)
133
+ return
134
+ }
135
+
136
+ const when = String(Math.floor(Date.now() / 1000)) + ' +0000'
137
+ const who = 'thread <thread@prestack> ' + when
138
+ const body = [
139
+ 'tree ' + root,
140
+ ...(parent === '' ? [] : ['parent ' + parent]),
141
+ 'author ' + who,
142
+ 'committer ' + who,
143
+ '',
144
+ message,
145
+ '',
146
+ ].join(NL)
147
+ const sha = store('commit', Buffer.from(body))
148
+ writeFileSync(refAt, sha + NL)
149
+ stdout.write('commit: ' + sha.slice(0, 8) + ' on ' + (ref.split(SLASH).pop() ?? 'main') + NL)
150
+ }
151
+
152
+ try {
153
+ record()
154
+ } catch (thrown) {
155
+ stderr.write('commit: ' + (thrown instanceof Error ? thrown.message : String(thrown)) + NL)
156
+ process.exit(1)
157
+ }
@@ -1,11 +1,8 @@
1
- import { starts } from '../../integrations/cli.js';
2
- import { attached, readdirSync, readFileSync, writeFileSync } from '../../integrations/disk.js';
3
- import { createRequire } from 'node:module';
4
- import { dirname, join, resolve } from 'node:path';
5
- import { argv, execPath, stderr, stdout } from 'node:process';
1
+ import { readdirSync, readFileSync, writeFileSync } from '../../integrations/disk.js';
2
+ import { join, resolve } from 'node:path';
3
+ import { argv, stderr, stdout } from 'node:process';
6
4
  import { exit } from '../../core/invoked.js';
7
- import { ROOT, THREAD_AT, descend } from '../../core/descend.js';
8
- import { MANIFEST } from '../../core/init.js';
5
+ import { ROOT, THREAD_AT, descend, uncompiled } from '../../core/descend.js';
9
6
  import { forbids, runChecker } from '../../core/finding.js';
10
7
  function refuse(why) {
11
8
  stderr.write(`compiler: ${why}\n`);
@@ -97,32 +94,9 @@ if (argv.includes('--check')) {
97
94
  instead: 'run `thread compiler`. What the compiler reads is derived from what the tree declares — an edit here is a declaration somebody skipped, and a path put here by hand is taken back out on the next settle',
98
95
  });
99
96
  }
97
+ findings.push(...uncompiled());
100
98
  runChecker('compiler', findings, `${String(leave.length)} path(s) left out, over ${String(pass.declarations)} declaration(s)`);
101
- if (findings.length > 0)
102
- exit(1);
103
- const asks = createRequire(join(ROOT, MANIFEST));
104
- let cli;
105
- try {
106
- const manifest = asks.resolve(`typescript/${MANIFEST}`);
107
- const bin = JSON.parse(readFileSync(manifest, 'utf8')).bin;
108
- const named = typeof bin === 'string' ? bin : (bin?.tsc ?? Object.values(bin ?? {})[0]);
109
- if (named === undefined)
110
- refuse(`the installed \`typescript\` states no executable in its ${MANIFEST}, so there is nothing here to run.`);
111
- cli = resolve(dirname(manifest), named);
112
- }
113
- catch (cause) {
114
- refuse(`the compiler is not installed — ${String(cause)}. \`typescript\` is a dependency this app declares, so \`npm install\` is what puts it there.`);
115
- }
116
- if (attached()) {
117
- stderr.write('compiler: NOT RUN. The typecheck is a separate compiler process, so it reads the disk of the machine this is\n' +
118
- 'running on rather than the tree being answered for. It would report on the wrong files, and a check that\n' +
119
- 'passed against the wrong machine says nothing about this one.\n');
120
- exit(1);
121
- }
122
- const built = starts(execPath, [cli, '--noEmit'], { at: ROOT, shows: true });
123
- if (!built.there)
124
- refuse(`the compiler could not be started — ${built.why}.`);
125
- exit(built.code);
99
+ exit(findings.length > 0 ? 1 : 0);
126
100
  }
127
101
  if (has) {
128
102
  stdout.write(`compiler: ${AT} already leaves out exactly what this tree declares nothing under.\n`);
@@ -1,12 +1,11 @@
1
- import { starts } from '../../integrations/cli.ts'
2
- import { attached, readdirSync, readFileSync, writeFileSync } from '../../integrations/disk.ts'
3
- import { createRequire } from 'node:module'
4
- import { dirname, join, resolve } from 'node:path'
5
- import { argv, execPath, stderr, stdout } from 'node:process'
1
+
2
+ import { readdirSync, readFileSync, writeFileSync } from '../../integrations/disk.ts'
3
+ import { join, resolve } from 'node:path'
4
+ import { argv, stderr, stdout } from 'node:process'
6
5
 
7
6
  import { exit } from '../../core/invoked.ts'
8
- import { ROOT, THREAD_AT, descend } from '../../core/descend.ts'
9
- import { MANIFEST } from '../../core/init.ts'
7
+ import { ROOT, THREAD_AT, descend, uncompiled } from '../../core/descend.ts'
8
+
10
9
  import { forbids, runChecker, type Finding } from '../../core/finding.ts'
11
10
 
12
11
  function refuse(why: string): never {
@@ -123,36 +122,10 @@ if (argv.includes('--check')) {
123
122
  'run `thread compiler`. What the compiler reads is derived from what the tree declares — an edit here is a declaration somebody skipped, and a path put here by hand is taken back out on the next settle',
124
123
  })
125
124
  }
126
-
125
+ findings.push(...uncompiled())
127
126
  runChecker('compiler', findings, `${String(leave.length)} path(s) left out, over ${String(pass.declarations)} declaration(s)`)
128
- if (findings.length > 0) exit(1)
129
-
130
- const asks = createRequire(join(ROOT, MANIFEST))
131
- let cli: string
132
- try {
133
- const manifest = asks.resolve(`typescript/${MANIFEST}`)
134
- const bin = (JSON.parse(readFileSync(manifest, 'utf8')) as { bin?: string | Record<string, string> }).bin
135
- const named = typeof bin === 'string' ? bin : (bin?.tsc ?? Object.values(bin ?? {})[0])
136
- if (named === undefined) refuse(`the installed \`typescript\` states no executable in its ${MANIFEST}, so there is nothing here to run.`)
137
- cli = resolve(dirname(manifest), named)
138
- } catch (cause) {
139
- refuse(
140
- `the compiler is not installed — ${String(cause)}. \`typescript\` is a dependency this app declares, so \`npm install\` is what puts it there.`,
141
- )
142
- }
143
-
144
- if (attached()) {
145
- stderr.write(
146
- 'compiler: NOT RUN. The typecheck is a separate compiler process, so it reads the disk of the machine this is\n' +
147
- 'running on rather than the tree being answered for. It would report on the wrong files, and a check that\n' +
148
- 'passed against the wrong machine says nothing about this one.\n',
149
- )
150
- exit(1)
151
- }
127
+ exit(findings.length > 0 ? 1 : 0)
152
128
 
153
- const built = starts(execPath, [cli, '--noEmit'], { at: ROOT, shows: true })
154
- if (!built.there) refuse(`the compiler could not be started — ${built.why}.`)
155
- exit(built.code)
156
129
  }
157
130
 
158
131
  if (has) {
@@ -3,7 +3,7 @@ import { createHash } from 'node:crypto';
3
3
  import { join } from 'node:path';
4
4
  import { argv, execPath, stderr, stdout } from 'node:process';
5
5
  import { descend } from '../../core/descend.js';
6
- import { attached, existsSync, readdirSync, readFileSync, rmSync, writeFileSync } from '../../integrations/disk.js';
6
+ import { attached, existsSync, here, readdirSync, readFileSync, rmSync, writeFileSync } from '../../integrations/disk.js';
7
7
  import { LOADER, exit } from '../../core/invoked.js';
8
8
  import { valuesIn } from '../../core/rows.js';
9
9
  import { ORGANISATION, ours } from '../../core/scope.js';
@@ -66,6 +66,12 @@ function ran(runs) {
66
66
  stderr.write(`gate: nothing in this tree is written by \`${of}\`, so this step names a command that does not exist here\n`);
67
67
  return 1;
68
68
  }
69
+ if (attached()) {
70
+ const ordered = here().run(join(ROOT, at), said.slice(2));
71
+ stdout.write(ordered.out);
72
+ stderr.write(ordered.err);
73
+ return ordered.there ? ordered.code : 1;
74
+ }
69
75
  const spun = starts(execPath, [...LOADER, join(ROOT, at), ...said.slice(2)], spent);
70
76
  return spun.there ? spun.code : 1;
71
77
  }
@@ -4,7 +4,7 @@ import { dirname, join } from 'node:path'
4
4
  import { argv, execPath, stderr, stdout } from 'node:process'
5
5
  import { fileURLToPath } from 'node:url'
6
6
  import { descend } from '../../core/descend.ts'
7
- import { attached, existsSync, readdirSync, readFileSync, rmSync, writeFileSync } from '../../integrations/disk.ts'
7
+ import { attached, existsSync, here, readdirSync, readFileSync, rmSync, writeFileSync } from '../../integrations/disk.ts'
8
8
  import { LOADER, exit } from '../../core/invoked.ts'
9
9
  import { valuesIn } from '../../core/rows.ts'
10
10
  import { ORGANISATION, ours } from '../../core/scope.ts'
@@ -95,6 +95,13 @@ function ran(runs: string): number {
95
95
  return 1
96
96
  }
97
97
 
98
+ if (attached()) {
99
+ const ordered = here().run(join(ROOT, at), said.slice(2))
100
+ stdout.write(ordered.out)
101
+ stderr.write(ordered.err)
102
+ return ordered.there ? ordered.code : 1
103
+ }
104
+
98
105
  const spun = starts(execPath, [...LOADER, join(ROOT, at), ...said.slice(2)], spent)
99
106
  return spun.there ? spun.code : 1
100
107
  }
@@ -6,10 +6,14 @@ const ROOT = findTree().at;
6
6
  const TREE = findTree().name;
7
7
  const canonical = (at) => (at.startsWith('threads/') ? `${TREE}/${at.slice('threads/'.length)}` : at);
8
8
  const NAMES_A_FILE = /\.[a-z]{1,5}$/;
9
- const derived = (() => {
9
+ const known = new WeakMap();
10
+ const derived = () => {
10
11
  const found = new Set();
11
12
  try {
12
13
  const pass = descend();
14
+ const cached = known.get(pass);
15
+ if (cached !== undefined)
16
+ return cached;
13
17
  for (const [at, held] of pass.threaded) {
14
18
  if (held.some((one) => one.row.by !== undefined))
15
19
  found.add(at);
@@ -17,11 +21,12 @@ const derived = (() => {
17
21
  for (const one of pass.derived.values())
18
22
  if (one.at !== undefined)
19
23
  found.add(one.at);
24
+ known.set(pass, found);
20
25
  }
21
26
  catch {
22
27
  }
23
28
  return found;
24
- })();
29
+ };
25
30
  const ours = () => {
26
31
  try {
27
32
  return new Set(readdirSync(ROOT).filter((one) => one !== 'node_modules' && statSync(resolve(ROOT, one), { throwIfNoEntry: false })?.isDirectory() === true));
@@ -69,7 +74,7 @@ export const slopnator = {
69
74
  return false;
70
75
  if (existsSync(resolve(ROOT, path)))
71
76
  return false;
72
- if (derived.has(path))
77
+ if (derived().has(path))
73
78
  return false;
74
79
  return `\`${value}\` is not on disk`;
75
80
  },
@@ -137,6 +142,8 @@ export const slopnator = {
137
142
  "const said = 'a sentence about packages/core/integrity/src/constraint.ts and nothing else'",
138
143
  {
139
144
  files: [
145
+ { at: 'thread/core/thread.ts', source: 'export interface Threaded {\n readonly id?: string\n readonly at?: string\n readonly describes?: string\n readonly by?: string\n readonly runs?: string\n readonly declares?: readonly Threaded[]\n readonly derives?: readonly Threaded[]\n readonly seeds?: readonly Threaded[]\n}\n' },
146
+ { at: 'threads/thread.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const THREAD: Threaded = {\n derives: [\n {\n id: 'layout',\n at: 'app/layout.tsx',\n by: 'thread routes',\n runs: 'thread routes --check',\n },\n ],\n}\n" },
140
147
  { at: 'app/_probe_there.tsx', source: 'export const THERE = 1\n' },
141
148
  { at: 'probe.tsx', source: "const at = 'app/layout.tsx'\n" },
142
149
  ],
@@ -10,18 +10,23 @@ const TREE = findTree().name
10
10
  const canonical = (at: string): string => (at.startsWith('threads/') ? `${TREE}/${at.slice('threads/'.length)}` : at)
11
11
  const NAMES_A_FILE = /\.[a-z]{1,5}$/
12
12
 
13
- const derived = ((): ReadonlySet<string> => {
13
+ const known = new WeakMap<object, ReadonlySet<string>>()
14
+
15
+ const derived = (): ReadonlySet<string> => {
14
16
  const found = new Set<string>()
15
17
  try {
16
18
  const pass = descend()
19
+ const cached = known.get(pass)
20
+ if (cached !== undefined) return cached
17
21
  for (const [at, held] of pass.threaded) {
18
22
  if (held.some((one) => one.row.by !== undefined)) found.add(at)
19
23
  }
20
24
  for (const one of pass.derived.values()) if (one.at !== undefined) found.add(one.at)
25
+ known.set(pass, found)
21
26
  } catch {
22
27
  }
23
28
  return found
24
- })()
29
+ }
25
30
 
26
31
  const ours = (): ReadonlySet<string> => {
27
32
  try {
@@ -79,7 +84,7 @@ export const slopnator: Slopnator = {
79
84
 
80
85
  if (!NAMES_A_FILE.test(path)) return false
81
86
  if (existsSync(resolve(ROOT, path))) return false
82
- if (derived.has(path)) return false
87
+ if (derived().has(path)) return false
83
88
  return `\`${value}\` is not on disk`
84
89
  },
85
90
  proves: {
@@ -146,6 +151,8 @@ export const slopnator: Slopnator = {
146
151
  "const said = 'a sentence about packages/core/integrity/src/constraint.ts and nothing else'",
147
152
  {
148
153
  files: [
154
+ { at: 'thread/core/thread.ts', source: 'export interface Threaded {\n readonly id?: string\n readonly at?: string\n readonly describes?: string\n readonly by?: string\n readonly runs?: string\n readonly declares?: readonly Threaded[]\n readonly derives?: readonly Threaded[]\n readonly seeds?: readonly Threaded[]\n}\n' },
155
+ { at: 'threads/thread.ts', source: "import type { Threaded } from '../thread/core/thread.ts'\n\nexport const THREAD: Threaded = {\n derives: [\n {\n id: 'layout',\n at: 'app/layout.tsx',\n by: 'thread routes',\n runs: 'thread routes --check',\n },\n ],\n}\n" },
149
156
  { at: 'app/_probe_there.tsx', source: 'export const THERE = 1\n' },
150
157
  { at: 'probe.tsx', source: "const at = 'app/layout.tsx'\n" },
151
158
  ],
@@ -6,7 +6,11 @@ import { packageOf } from '../../core/attach.js';
6
6
  import { PREFIXES } from '../../core/thread.js';
7
7
  import { HOLDS, OPENS } from '../../integrations/target.js';
8
8
  const FROM_SOURCE = import.meta.url.endsWith('.ts');
9
- const OPENED_AT = fileURLToPath(new URL(FROM_SOURCE ? '../../operations/operations.ts' : '../../operations/operations.d.ts', import.meta.url));
9
+ const SHAPE = 'operations/operations';
10
+ const OPENED_AT = fileURLToPath(new URL('../../' + SHAPE + (FROM_SOURCE ? '.ts' : '.d.ts'), import.meta.url));
11
+ const FRAMEWORK = 'thread';
12
+ const STATED_AT = resolve(ROOT, FRAMEWORK, SHAPE + '.ts');
13
+ const SHAPES = [...new Set([STATED_AT, OPENED_AT])];
10
14
  const HANDED = 'Opened';
11
15
  const EVERY = '';
12
16
  const IMPORTED = 'import ';
@@ -147,15 +151,14 @@ function compiled() {
147
151
  return built;
148
152
  const options = configured().options;
149
153
  const roots = [THREAD_AT, ...sources()].filter((one) => SOURCE.test(one)).map((one) => resolve(ROOT, one));
150
- const program = ts.createProgram([...new Set([OPENED_AT, ...roots])], options, hosting(options));
154
+ const program = ts.createProgram([...new Set([...SHAPES, ...roots])], options, hosting(options));
151
155
  const checker = program.getTypeChecker();
152
156
  const hands = new Map();
153
157
  const own = (symbol) => (symbol.getDeclarations() ?? []).some((one) => {
154
158
  const from = one.getSourceFile();
155
159
  return !program.isSourceFileDefaultLibrary(from) && !program.isSourceFileFromExternalLibrary(from);
156
160
  });
157
- const shape = program.getSourceFile(OPENED_AT);
158
- for (const statement of shape?.statements ?? []) {
161
+ for (const statement of SHAPES.flatMap((one) => program.getSourceFile(one)?.statements ?? [])) {
159
162
  if (!ts.isTypeAliasDeclaration(statement) || statement.name.text !== HANDED)
160
163
  continue;
161
164
  const alias = checker.getSymbolAtLocation(statement.name);
@@ -376,7 +379,7 @@ export function judging(at, wanted, closing) {
376
379
  if (!SOURCE.test(path))
377
380
  return false;
378
381
  const held = compiled();
379
- if (held.hands.size === 0 && resolve(ROOT, path) === OPENED_AT) {
382
+ if (held.hands.size === 0 && SHAPES.includes(resolve(ROOT, path))) {
380
383
  return 'no type called ' + HANDED + ' can be read here, so nothing can tell what an operation was opened with from any other value, and a call on it outside an operation goes unmeasured';
381
384
  }
382
385
  const found = judged(path, held, operational(held.of, path), wanted);
@@ -12,7 +12,15 @@ import type { Slopnator, SlopnatorContext } from '../slopnator.ts'
12
12
 
13
13
  const FROM_SOURCE = import.meta.url.endsWith('.ts')
14
14
 
15
- const OPENED_AT = fileURLToPath(new URL(FROM_SOURCE ? '../../operations/operations.ts' : '../../operations/operations.d.ts', import.meta.url))
15
+ const SHAPE = 'operations/operations'
16
+
17
+ const OPENED_AT = fileURLToPath(new URL('../../' + SHAPE + (FROM_SOURCE ? '.ts' : '.d.ts'), import.meta.url))
18
+
19
+ const FRAMEWORK = 'thread'
20
+
21
+ const STATED_AT = resolve(ROOT, FRAMEWORK, SHAPE + '.ts')
22
+
23
+ const SHAPES = [...new Set([STATED_AT, OPENED_AT])]
16
24
 
17
25
 
18
26
  const HANDED = 'Opened'
@@ -184,7 +192,7 @@ function compiled(): Built {
184
192
  if (built !== undefined && built.of === pass) return built
185
193
  const options = configured().options
186
194
  const roots = [THREAD_AT, ...sources()].filter((one) => SOURCE.test(one)).map((one) => resolve(ROOT, one))
187
- const program = ts.createProgram([...new Set([OPENED_AT, ...roots])], options, hosting(options))
195
+ const program = ts.createProgram([...new Set([...SHAPES, ...roots])], options, hosting(options))
188
196
  const checker = program.getTypeChecker()
189
197
  const hands = new Map<ts.Symbol, string>()
190
198
  const own = (symbol: ts.Symbol): boolean =>
@@ -192,8 +200,7 @@ function compiled(): Built {
192
200
  const from = one.getSourceFile()
193
201
  return !program.isSourceFileDefaultLibrary(from) && !program.isSourceFileFromExternalLibrary(from)
194
202
  })
195
- const shape = program.getSourceFile(OPENED_AT)
196
- for (const statement of shape?.statements ?? []) {
203
+ for (const statement of SHAPES.flatMap((one) => program.getSourceFile(one)?.statements ?? [])) {
197
204
  if (!ts.isTypeAliasDeclaration(statement) || statement.name.text !== HANDED) continue
198
205
  const alias = checker.getSymbolAtLocation(statement.name)
199
206
  if (alias !== undefined) hands.set(alias, EVERY)
@@ -400,7 +407,7 @@ export function judging(at: SlopnatorContext, wanted: string, closing: string):
400
407
  const path = here(at.filename)
401
408
  if (!SOURCE.test(path)) return false
402
409
  const held = compiled()
403
- if (held.hands.size === 0 && resolve(ROOT, path) === OPENED_AT) {
410
+ if (held.hands.size === 0 && SHAPES.includes(resolve(ROOT, path))) {
404
411
  return 'no type called ' + HANDED + ' can be read here, so nothing can tell what an operation was opened with from any other value, and a call on it outside an operation goes unmeasured'
405
412
  }
406
413
  const found = judged(path, held, operational(held.of, path), wanted)
@@ -30,7 +30,13 @@ export const slopnator = {
30
30
  "export const TARGETS: readonly Target[] = [{ id: 'cli_bash', of: 'in_shell', describes: 'The shell on the machine a command runs on.', version: 1, takes: [], requires: [] }]",
31
31
  ],
32
32
  right: [
33
- "export const TARGETS: readonly Target[] = [{ id: 'cli_tsc', of: 'in_typescript', describes: 'The compiler this tree is checked and built with.', version: 1, takes: [], requires: [] }]",
33
+ {
34
+ files: [
35
+ { at: 'node_modules/.bin/tsc', source: '' },
36
+ { at: 'threads/_probe_targets.ts', source: "export const TARGETS: readonly Target[] = [{ id: 'cli_tsc', of: 'in_typescript', describes: 'The compiler this tree is checked and built with.', version: 1, takes: [], requires: [] }]\n" },
37
+ ],
38
+ at: 'threads/_probe_targets.ts',
39
+ },
34
40
  "export const TARGETS: readonly Target[] = [{ id: 'cli_packager', of: 'in_packager', describes: 'The package manager the lockfile beside this tree picks.', version: 1, takes: [], requires: [] }]",
35
41
  "export const TARGETS: readonly Target[] = [{ id: 'cli_node', of: 'in_node', describes: 'The runtime this framework runs on.', version: 1, takes: [], requires: [] }]",
36
42
  "export const TARGETS: readonly Target[] = [{ id: 'ht_registry', of: 'in_registry', describes: 'The registry every package goes to.', version: 1, takes: [], requires: [], address: 'https://registry.npmjs.org' }]",
@@ -31,7 +31,13 @@ export const slopnator: Slopnator = {
31
31
  "export const TARGETS: readonly Target[] = [{ id: 'cli_bash', of: 'in_shell', describes: 'The shell on the machine a command runs on.', version: 1, takes: [], requires: [] }]",
32
32
  ],
33
33
  right: [
34
- "export const TARGETS: readonly Target[] = [{ id: 'cli_tsc', of: 'in_typescript', describes: 'The compiler this tree is checked and built with.', version: 1, takes: [], requires: [] }]",
34
+ {
35
+ files: [
36
+ { at: 'node_modules/.bin/tsc', source: '' },
37
+ { at: 'threads/_probe_targets.ts', source: "export const TARGETS: readonly Target[] = [{ id: 'cli_tsc', of: 'in_typescript', describes: 'The compiler this tree is checked and built with.', version: 1, takes: [], requires: [] }]\n" },
38
+ ],
39
+ at: 'threads/_probe_targets.ts',
40
+ },
35
41
  "export const TARGETS: readonly Target[] = [{ id: 'cli_packager', of: 'in_packager', describes: 'The package manager the lockfile beside this tree picks.', version: 1, takes: [], requires: [] }]",
36
42
  "export const TARGETS: readonly Target[] = [{ id: 'cli_node', of: 'in_node', describes: 'The runtime this framework runs on.', version: 1, takes: [], requires: [] }]",
37
43
  "export const TARGETS: readonly Target[] = [{ id: 'ht_registry', of: 'in_registry', describes: 'The registry every package goes to.', version: 1, takes: [], requires: [], address: 'https://registry.npmjs.org' }]",
@@ -238,23 +238,6 @@ export const CONCEPTS: readonly Concept[] = [
238
238
  },
239
239
  ]
240
240
  `;
241
- const OWN = [
242
- {
243
- into: 'knowledge.ts',
244
- list: 'declares',
245
- id: 'skills',
246
- source: [
247
- ' {',
248
- " id: 'skills',",
249
- " at: '_threads/_generated/skills.ts',",
250
- " describes: 'One row per skill `thread skills` writes, so every `skills/<noun>.md` is declared by the command that wrote it instead of being refused as a file nothing named. It sits beside the files it names because the nouns are not known until the tree is read, and a list somebody keeps by hand would go stale the first time a package brings a new maker.',",
251
- ' version: 1,',
252
- " by: 'thread skills',",
253
- " runs: 'thread skills --check',",
254
- ' },',
255
- ].join('\n'),
256
- },
257
- ];
258
241
  const SEEDED = {
259
242
  attaches: ['@prestack/thread/derivation/attach'],
260
243
  id: 'knowledge',
@@ -330,5 +313,5 @@ export const ATTACH = {
330
313
  source: CONCEPTS_SOURCE,
331
314
  },
332
315
  ],
333
- rows: [...OWN, ...SHIPPED],
316
+ rows: SHIPPED,
334
317
  };
@@ -246,24 +246,6 @@ export const CONCEPTS: readonly Concept[] = [
246
246
  ]
247
247
  `
248
248
 
249
- const OWN: readonly { readonly into: string; readonly list: string; readonly id: string; readonly source: string }[] = [
250
- {
251
- into: 'knowledge.ts',
252
- list: 'declares',
253
- id: 'skills',
254
- source: [
255
- ' {',
256
- " id: 'skills',",
257
- " at: '_threads/_generated/skills.ts',",
258
- " describes: 'One row per skill `thread skills` writes, so every `skills/<noun>.md` is declared by the command that wrote it instead of being refused as a file nothing named. It sits beside the files it names because the nouns are not known until the tree is read, and a list somebody keeps by hand would go stale the first time a package brings a new maker.',",
259
- ' version: 1,',
260
- " by: 'thread skills',",
261
- " runs: 'thread skills --check',",
262
- ' },',
263
- ].join('\n'),
264
- },
265
- ]
266
-
267
249
  const SEEDED = {
268
250
  attaches: ['@prestack/thread/derivation/attach'] as const,
269
251
  id: 'knowledge',
@@ -341,5 +323,5 @@ export const ATTACH: Attaching = {
341
323
  source: CONCEPTS_SOURCE,
342
324
  },
343
325
  ],
344
- rows: [...OWN, ...SHIPPED],
326
+ rows: SHIPPED,
345
327
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prestack/thread",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",