techtree 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. techtree/__init__.py +35 -0
  2. techtree/__main__.py +14 -0
  3. techtree/canonical.py +239 -0
  4. techtree/catalog/__init__.py +25 -0
  5. techtree/catalog/repository.py +400 -0
  6. techtree/catalog/service.py +419 -0
  7. techtree/cli/__init__.py +1 -0
  8. techtree/cli/app.py +416 -0
  9. techtree/cli/commands/__init__.py +1 -0
  10. techtree/cli/commands/climb.py +1223 -0
  11. techtree/cli/commands/doctor.py +147 -0
  12. techtree/cli/commands/engine.py +207 -0
  13. techtree/cli/commands/proof.py +556 -0
  14. techtree/cli/commands/publish.py +447 -0
  15. techtree/cli/commands/release.py +303 -0
  16. techtree/cli/commands/run.py +1067 -0
  17. techtree/cli/commands/setup.py +181 -0
  18. techtree/cli/commands/skill.py +221 -0
  19. techtree/cli/commands/uplift.py +698 -0
  20. techtree/cli/commands/withdraw.py +212 -0
  21. techtree/cli/confirm.py +47 -0
  22. techtree/cli/context.py +96 -0
  23. techtree/cli/invoke.py +220 -0
  24. techtree/cli/output.py +280 -0
  25. techtree/constants.py +138 -0
  26. techtree/crypto.py +128 -0
  27. techtree/doctor/__init__.py +1 -0
  28. techtree/doctor/checks.py +675 -0
  29. techtree/doctor/execution_checks.py +435 -0
  30. techtree/doctor/service.py +326 -0
  31. techtree/drafts/__init__.py +32 -0
  32. techtree/drafts/source.py +146 -0
  33. techtree/drafts/store.py +992 -0
  34. techtree/engines/__init__.py +1 -0
  35. techtree/engines/bundle.py +251 -0
  36. techtree/engines/installer.py +679 -0
  37. techtree/engines/registry.py +235 -0
  38. techtree/engines/runner.py +170 -0
  39. techtree/errors.py +262 -0
  40. techtree/fs.py +234 -0
  41. techtree/harness.py +108 -0
  42. techtree/identity/__init__.py +41 -0
  43. techtree/identity/models.py +113 -0
  44. techtree/identity/service.py +199 -0
  45. techtree/identity/store.py +263 -0
  46. techtree/ids.py +85 -0
  47. techtree/manifests/__init__.py +39 -0
  48. techtree/manifests/builder.py +433 -0
  49. techtree/manifests/compare.py +376 -0
  50. techtree/models/__init__.py +282 -0
  51. techtree/models/base.py +201 -0
  52. techtree/models/campaign.py +484 -0
  53. techtree/models/catalog.py +227 -0
  54. techtree/models/cli.py +151 -0
  55. techtree/models/climb.py +254 -0
  56. techtree/models/data_policy.py +130 -0
  57. techtree/models/engine.py +156 -0
  58. techtree/models/episode_receipt.py +130 -0
  59. techtree/models/evaluation_backend.py +113 -0
  60. techtree/models/experiment.py +154 -0
  61. techtree/models/run.py +214 -0
  62. techtree/models/skill.py +156 -0
  63. techtree/models/uplift_report.py +158 -0
  64. techtree/models/validation.py +299 -0
  65. techtree/paths.py +116 -0
  66. techtree/presentation/__init__.py +31 -0
  67. techtree/presentation/build.py +1242 -0
  68. techtree/presentation/compact.py +246 -0
  69. techtree/presentation/evidence.py +169 -0
  70. techtree/presentation/models.py +358 -0
  71. techtree/presentation/rich.py +312 -0
  72. techtree/presentation/sanitize.py +156 -0
  73. techtree/publication/__init__.py +44 -0
  74. techtree/publication/address.py +180 -0
  75. techtree/publication/coordinates.py +26 -0
  76. techtree/publication/journal.py +212 -0
  77. techtree/publication/keccak.py +183 -0
  78. techtree/publication/models.py +209 -0
  79. techtree/publication/offer.py +35 -0
  80. techtree/publication/service.py +618 -0
  81. techtree/publication/transport.py +296 -0
  82. techtree/publication/verify.py +242 -0
  83. techtree/publication/withdraw.py +156 -0
  84. techtree/py.typed +0 -0
  85. techtree/receipts/__init__.py +52 -0
  86. techtree/receipts/bundle.py +578 -0
  87. techtree/receipts/compare.py +1065 -0
  88. techtree/receipts/episode.py +672 -0
  89. techtree/receipts/execution.py +630 -0
  90. techtree/receipts/observed.py +474 -0
  91. techtree/receipts/set.py +336 -0
  92. techtree/receipts/uplift.py +655 -0
  93. techtree/receipts/verify.py +1055 -0
  94. techtree/release/__init__.py +9 -0
  95. techtree/release/bootstrap.py +509 -0
  96. techtree/release/checks.py +376 -0
  97. techtree/release/document.py +125 -0
  98. techtree/release/generate.py +221 -0
  99. techtree/release/models.py +293 -0
  100. techtree/release/provenance.py +109 -0
  101. techtree/resources/catalog/campaigns/hello-world-climb.json +1 -0
  102. techtree/resources/catalog/catalog.json +32 -0
  103. techtree/resources/catalog/climbs/hello-world-climb.json +1 -0
  104. techtree/resources/catalog/data-policies/hello-world-climb.json +1 -0
  105. techtree/resources/catalog/taskset-validations/hello-world-climb.json +1 -0
  106. techtree/resources/catalog/validation-evidence/hello-world-climb.json +1 -0
  107. techtree/resources/engines/default/engine.json +20 -0
  108. techtree/resources/engines/default/packages/procedure-transfer-v1/procedure_transfer_v1/__init__.py +7 -0
  109. techtree/resources/engines/default/packages/procedure-transfer-v1/procedure_transfer_v1/algorithm.py +136 -0
  110. techtree/resources/engines/default/packages/procedure-transfer-v1/procedure_transfer_v1/dataset.py +156 -0
  111. techtree/resources/engines/default/packages/procedure-transfer-v1/procedure_transfer_v1/env.py +48 -0
  112. techtree/resources/engines/default/packages/procedure-transfer-v1/procedure_transfer_v1/taskset.py +163 -0
  113. techtree/resources/engines/default/packages/procedure-transfer-v1/pyproject.toml +13 -0
  114. techtree/resources/engines/default/pyproject.toml +23 -0
  115. techtree/resources/engines/default/tools/inspect_taskset.py +124 -0
  116. techtree/resources/engines/default/tools/normalize_eval_output.py +470 -0
  117. techtree/resources/engines/default/tools/normalize_validation.py +222 -0
  118. techtree/resources/engines/default/uv.lock +1758 -0
  119. techtree/resources/harness/hermes-agent-0.19.0.json +69 -0
  120. techtree/resources/release/build-provenance.json +4 -0
  121. techtree/resources/release/release-core.json +24 -0
  122. techtree/runs/__init__.py +31 -0
  123. techtree/runs/artifacts.py +750 -0
  124. techtree/runs/child_registry.py +228 -0
  125. techtree/runs/events.py +478 -0
  126. techtree/runs/executor.py +140 -0
  127. techtree/runs/fake.py +741 -0
  128. techtree/runs/launcher.py +253 -0
  129. techtree/runs/machine.py +489 -0
  130. techtree/runs/real.py +789 -0
  131. techtree/runs/service.py +616 -0
  132. techtree/runs/store.py +555 -0
  133. techtree/runs/validation.py +259 -0
  134. techtree/runs/variants.py +684 -0
  135. techtree/settings.py +143 -0
  136. techtree/skills/__init__.py +14 -0
  137. techtree/skills/archive.py +282 -0
  138. techtree/skills/policy.py +62 -0
  139. techtree/skills/scanner.py +394 -0
  140. techtree/skills/service.py +752 -0
  141. techtree/skills/starter.py +434 -0
  142. techtree/tasksets/__init__.py +1 -0
  143. techtree/tasksets/membership.py +269 -0
  144. techtree/tasksets/provider.py +207 -0
  145. techtree/tasksets/resolver.py +311 -0
  146. techtree/tasksets/service.py +484 -0
  147. techtree/tasksets/verifiers_cli.py +538 -0
  148. techtree/uplift/__init__.py +20 -0
  149. techtree/uplift/context.py +544 -0
  150. techtree/uplift/derive.py +203 -0
  151. techtree/uplift/public_tasks.py +151 -0
  152. techtree/uplift/service.py +719 -0
  153. techtree/uplift/source.py +160 -0
  154. techtree/verifiers/__init__.py +31 -0
  155. techtree/verifiers/budget.py +219 -0
  156. techtree/verifiers/child.py +633 -0
  157. techtree/verifiers/compiler.py +432 -0
  158. techtree/verifiers/config.py +365 -0
  159. techtree/verifiers/credentials.py +321 -0
  160. techtree/verifiers/image.py +126 -0
  161. techtree/verifiers/models.py +527 -0
  162. techtree/verifiers/outputs.py +368 -0
  163. techtree/verifiers/progress.py +192 -0
  164. techtree/verifiers/supervisor.py +341 -0
  165. techtree/verifiers/verify.py +782 -0
  166. techtree/version.py +39 -0
  167. techtree/worker/__init__.py +18 -0
  168. techtree/worker/execute.py +487 -0
  169. techtree/worker/main.py +57 -0
  170. techtree-0.1.0.dist-info/METADATA +344 -0
  171. techtree-0.1.0.dist-info/RECORD +174 -0
  172. techtree-0.1.0.dist-info/WHEEL +4 -0
  173. techtree-0.1.0.dist-info/entry_points.txt +3 -0
  174. techtree-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,69 @@
1
+ {
2
+ "harness_id": "hermes-agent",
3
+ "harness_version": "0.19.0",
4
+ "recorded_from": "the WP6c paid probes of 2026-08-13 and the WP11 acceptance comparison, which offered an identical surface",
5
+ "schema_version": "techtree.harness-conformance.v1alpha1",
6
+ "skill_index_tool": "skill_manage",
7
+ "tools": [
8
+ {
9
+ "name": "delegate_task",
10
+ "parameters_digest": "sha256:13eead2bbea0ffda081c86cca20b52b7e1bdb8fa8de0a4aa4cdb8036c578b4bc"
11
+ },
12
+ {
13
+ "name": "execute_code",
14
+ "parameters_digest": "sha256:95906f90716a48b6ab95738056315ab1d565e31894b2e3f9508ba03c32d7a76b"
15
+ },
16
+ {
17
+ "name": "memory",
18
+ "parameters_digest": "sha256:3ddbf0c04cc580177048062b57a7dba80c72284243a6b7cdc7a60d1b13c03307"
19
+ },
20
+ {
21
+ "name": "patch",
22
+ "parameters_digest": "sha256:be197048bc5ffffafdb754e9c424df2a7f29a4a43c757f892467ffdefc442f30"
23
+ },
24
+ {
25
+ "name": "process",
26
+ "parameters_digest": "sha256:f4c9f9214c8ad482b275a6b8a0cb756319e21d4ac1bfaa1fe7f281d31ee8301f"
27
+ },
28
+ {
29
+ "name": "read_file",
30
+ "parameters_digest": "sha256:cb38b632732acc596fd5f5d3f0b33644c0ad5b3354ac01e82b1b238c7f3b7122"
31
+ },
32
+ {
33
+ "name": "search_files",
34
+ "parameters_digest": "sha256:853033131cf11f9db86cf043b6ba8b23445f328baa9d11072ce8a82de81da6cf"
35
+ },
36
+ {
37
+ "name": "session_search",
38
+ "parameters_digest": "sha256:9092600f7504b88a1bbb6348c957aec52ac387c7a02f50605e96c65ebc3f8ebe"
39
+ },
40
+ {
41
+ "name": "skill_manage",
42
+ "parameters_digest": "sha256:9b3b5fa010e839f04430999946d7c8d3a0fee425740e337c77af12799177e56d"
43
+ },
44
+ {
45
+ "name": "skill_view",
46
+ "parameters_digest": "sha256:2baab7037c7ec14eb9e9476d31d2a49844158d0161420307dd0e6d28e77c8fb5"
47
+ },
48
+ {
49
+ "name": "skills_list",
50
+ "parameters_digest": "sha256:d577f592e050f14fc397ac2f9865984beaa09dccf56caeacef2ff99e6aa9204c"
51
+ },
52
+ {
53
+ "name": "terminal",
54
+ "parameters_digest": "sha256:439982c1434ccdc7b7f5b968fb2d4474a8557483528e5a1bbc6dc703f23108a8"
55
+ },
56
+ {
57
+ "name": "todo",
58
+ "parameters_digest": "sha256:0ee6425f020b1f539ee1e74ad011b0ab7255cf4643be34ce1b651ee7f0213b1e"
59
+ },
60
+ {
61
+ "name": "vision_analyze",
62
+ "parameters_digest": "sha256:59f8105711073175ad5cf040d2c97c3bfbf359793fbb26a3fcaaea7d17dee013"
63
+ },
64
+ {
65
+ "name": "write_file",
66
+ "parameters_digest": "sha256:90cce6e84b9b53a665d4dd69060eea52b3fe99fbe0b6642e17fef86fd441d9e3"
67
+ }
68
+ ]
69
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "schema_version": "techtree.build-provenance.v1",
3
+ "source_commit": "2e714835469dc0a3fb4bece3ed2f861317fe4d7c"
4
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "catalog_digest": "sha256:10a7fcc5de1951c14509947c0512a4eeb247a703cdf01cc3f268580979a7d12c",
3
+ "cli_version": "0.1.0",
4
+ "engine_digest": "sha256:29b1bbb8327d8f1a9ade03ff4504695ad3783ae34aaaa559e5c6bf9fc95e879b",
5
+ "intro_climb_reference": "hello-world-climb@1",
6
+ "maximum_tested_host_hermes_version": "0.20.1",
7
+ "minimum_host_hermes_version": "0.20.1",
8
+ "protocol_version": "v1alpha1",
9
+ "publication": {
10
+ "network_key": {
11
+ "algorithm": "ed25519",
12
+ "key_id": "sha256:84ea8ffad2b0fc59f9db9f14b7d97f25c060e71b644dec316ecd582ac040b966",
13
+ "public_key": "FbKdOrQUNLohljAE31P5ts99ynqvGpesCktW3aez0I4="
14
+ },
15
+ "public_log_url": "https://techtree.sh/runs",
16
+ "submission_endpoint": "https://techtree.sh/api/v1/publications"
17
+ },
18
+ "release_id": "climb-v0.1.0",
19
+ "schema_version": "techtree.release-core.v1",
20
+ "skill_improver_digest": "sha256:d5a381bed8ae5ddd5bbd6035775154dc47d2cb11b1da14f11d30ed47ff371678",
21
+ "starter_skill_digest": "sha256:596d1368ac157975accce7ceff835eed6bfb789eaf68528a0aefa25a68793b0b",
22
+ "starter_skill_object_url": "https://techtree.sh/api/v1/objects/sha256:2aff27070177d9f37b99d5bef6fa372586887e78180005195cb808971ae55a4c",
23
+ "subject_hermes_version": "0.19.0"
24
+ }
@@ -0,0 +1,31 @@
1
+ """The run event log, its state machine, and the store that owns both.
2
+
3
+ Spec section 18.
4
+
5
+ A run is a long-lived thing executed by a separate process, watched by a
6
+ command-line client that comes and goes. Nothing in that arrangement lets the
7
+ two share memory, so the run's history is the only thing they can both trust:
8
+ every fact about a run is first appended to ``events.jsonl`` and only then
9
+ projected into ``state.json``. The projection is a cache. The log is the truth.
10
+
11
+ Three modules divide the work:
12
+
13
+ :mod:`techtree.runs.events`
14
+ Bytes. Appending one line durably, reading the log back, and refusing a log
15
+ whose sequence numbers skip.
16
+
17
+ :mod:`techtree.runs.machine`
18
+ Meaning. Which phase may follow which, and how a list of events becomes one
19
+ ``RunState``.
20
+
21
+ :mod:`techtree.runs.store`
22
+ Placement and mutual exclusion. Where each file lives under
23
+ ``runs/<run-id>/``, and the per-run lock every writer passes through.
24
+
25
+ The narrative version, including heartbeat, PID, cancellation, and recovery
26
+ semantics, is in ``docs/run-state-machine.md``.
27
+ """
28
+
29
+ from __future__ import annotations
30
+
31
+ __all__: list[str] = []