autofab 0.2.0__tar.gz

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 (832) hide show
  1. autofab-0.2.0/.gitignore +34 -0
  2. autofab-0.2.0/.python-version +1 -0
  3. autofab-0.2.0/.vscode/settings.json +33 -0
  4. autofab-0.2.0/AGENTS.md +96 -0
  5. autofab-0.2.0/PKG-INFO +340 -0
  6. autofab-0.2.0/README.md +320 -0
  7. autofab-0.2.0/autofab/README.md +5 -0
  8. autofab-0.2.0/autofab/autofab_roles.toml +257 -0
  9. autofab-0.2.0/autofab/guides/low_to_lib.md +89 -0
  10. autofab-0.2.0/autofab/guides/meta_guide.md +146 -0
  11. autofab-0.2.0/autofab/parts/__init__.py +3 -0
  12. autofab-0.2.0/autofab/parts/agent/__init__.py +0 -0
  13. autofab-0.2.0/autofab/parts/agent/description.md +31 -0
  14. autofab-0.2.0/autofab/parts/agent/high/agent_config.md +34 -0
  15. autofab-0.2.0/autofab/parts/agent/high/file_alias.md +34 -0
  16. autofab-0.2.0/autofab/parts/agent/high/node_config.md +36 -0
  17. autofab-0.2.0/autofab/parts/agent/high/node_storage.md +32 -0
  18. autofab-0.2.0/autofab/parts/agent/high/session.md +22 -0
  19. autofab-0.2.0/autofab/parts/agent/lib/__init__.py +3 -0
  20. autofab-0.2.0/autofab/parts/agent/lib/agent_config.py +46 -0
  21. autofab-0.2.0/autofab/parts/agent/lib/file_alias.py +70 -0
  22. autofab-0.2.0/autofab/parts/agent/lib/node_config.py +174 -0
  23. autofab-0.2.0/autofab/parts/agent/lib/node_storage.py +33 -0
  24. autofab-0.2.0/autofab/parts/agent/lib/session.py +17 -0
  25. autofab-0.2.0/autofab/parts/agent/low/agent_config.pyi +50 -0
  26. autofab-0.2.0/autofab/parts/agent/low/file_alias.pyi +123 -0
  27. autofab-0.2.0/autofab/parts/agent/low/node_config.pyi +230 -0
  28. autofab-0.2.0/autofab/parts/agent/low/node_storage.pyi +79 -0
  29. autofab-0.2.0/autofab/parts/agent/low/session.pyi +30 -0
  30. autofab-0.2.0/autofab/parts/agent/planning/agent_config.md +44 -0
  31. autofab-0.2.0/autofab/parts/agent/planning/file_alias.md +56 -0
  32. autofab-0.2.0/autofab/parts/agent/planning/node_config.md +64 -0
  33. autofab-0.2.0/autofab/parts/agent/planning/node_storage.md +47 -0
  34. autofab-0.2.0/autofab/parts/agent/planning/session.md +46 -0
  35. autofab-0.2.0/autofab/parts/agent/pretense/__init__.py +1 -0
  36. autofab-0.2.0/autofab/parts/agent/pretense/agent_config_pretense.py +207 -0
  37. autofab-0.2.0/autofab/parts/agent/pretense/file_alias_pretense.py +245 -0
  38. autofab-0.2.0/autofab/parts/agent/pretense/node_config_pretense.py +362 -0
  39. autofab-0.2.0/autofab/parts/agent/pretense/node_storage_pretense.py +196 -0
  40. autofab-0.2.0/autofab/parts/agent/scenarios/agent_config.md +126 -0
  41. autofab-0.2.0/autofab/parts/agent/scenarios/file_alias.md +90 -0
  42. autofab-0.2.0/autofab/parts/agent/scenarios/node_config.md +137 -0
  43. autofab-0.2.0/autofab/parts/agent/scenarios/node_storage.md +117 -0
  44. autofab-0.2.0/autofab/parts/agent/scenarios/session.md +73 -0
  45. autofab-0.2.0/autofab/parts/agent/tests/__init__.py +0 -0
  46. autofab-0.2.0/autofab/parts/antigravity/description.md +23 -0
  47. autofab-0.2.0/autofab/parts/antigravity/high/antigravity_asm.md +26 -0
  48. autofab-0.2.0/autofab/parts/antigravity/high/antigravity_coordinator.md +40 -0
  49. autofab-0.2.0/autofab/parts/antigravity/high/antigravity_coordinator_impl.md +45 -0
  50. autofab-0.2.0/autofab/parts/antigravity/high/antigravity_ext.md +29 -0
  51. autofab-0.2.0/autofab/parts/antigravity/high/antigravity_harness.md +42 -0
  52. autofab-0.2.0/autofab/parts/antigravity/high/antigravity_harness_impl.md +39 -0
  53. autofab-0.2.0/autofab/parts/antigravity/high/antigravity_workspace.md +34 -0
  54. autofab-0.2.0/autofab/parts/antigravity/lib/__init__.py +5 -0
  55. autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_asm.py +29 -0
  56. autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_coordinator.py +103 -0
  57. autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_coordinator_impl.py +301 -0
  58. autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_harness.py +104 -0
  59. autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_harness_impl.py +384 -0
  60. autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_workspace.py +48 -0
  61. autofab-0.2.0/autofab/parts/antigravity/low/antigravity_asm.pyi +18 -0
  62. autofab-0.2.0/autofab/parts/antigravity/low/antigravity_coordinator.pyi +117 -0
  63. autofab-0.2.0/autofab/parts/antigravity/low/antigravity_coordinator_impl.pyi +107 -0
  64. autofab-0.2.0/autofab/parts/antigravity/low/antigravity_ext.pyi +74 -0
  65. autofab-0.2.0/autofab/parts/antigravity/low/antigravity_harness.pyi +141 -0
  66. autofab-0.2.0/autofab/parts/antigravity/low/antigravity_harness_impl.pyi +156 -0
  67. autofab-0.2.0/autofab/parts/antigravity/low/antigravity_workspace.pyi +54 -0
  68. autofab-0.2.0/autofab/parts/antigravity/planning/antigravity_coordinator.md +48 -0
  69. autofab-0.2.0/autofab/parts/antigravity/planning/antigravity_coordinator_impl.md +55 -0
  70. autofab-0.2.0/autofab/parts/antigravity/planning/antigravity_harness.md +55 -0
  71. autofab-0.2.0/autofab/parts/antigravity/planning/antigravity_harness_impl.md +55 -0
  72. autofab-0.2.0/autofab/parts/antigravity/planning/antigravity_workspace.md +42 -0
  73. autofab-0.2.0/autofab/parts/antigravity/pretense/__init__.py +1 -0
  74. autofab-0.2.0/autofab/parts/antigravity/pretense/antigravity_coordinator_impl_pretense.py +295 -0
  75. autofab-0.2.0/autofab/parts/antigravity/pretense/antigravity_harness_impl_pretense.py +162 -0
  76. autofab-0.2.0/autofab/parts/antigravity/scenarios/antigravity_coordinator.md +35 -0
  77. autofab-0.2.0/autofab/parts/antigravity/scenarios/antigravity_coordinator_impl.md +39 -0
  78. autofab-0.2.0/autofab/parts/antigravity/scenarios/antigravity_harness.md +49 -0
  79. autofab-0.2.0/autofab/parts/antigravity/scenarios/antigravity_harness_impl.md +55 -0
  80. autofab-0.2.0/autofab/parts/antigravity/scenarios/antigravity_workspace.md +28 -0
  81. autofab-0.2.0/autofab/parts/antigravity/tests/antigravity_asm_test.py +49 -0
  82. autofab-0.2.0/autofab/parts/antigravity/tests/antigravity_coordinator_impl_test.py +164 -0
  83. autofab-0.2.0/autofab/parts/antigravity/tests/antigravity_harness_impl_test.py +210 -0
  84. autofab-0.2.0/autofab/parts/autofab.toml +4 -0
  85. autofab-0.2.0/autofab/parts/benchmark/BUILD.bazel +10 -0
  86. autofab-0.2.0/autofab/parts/benchmark/__init__.py +1 -0
  87. autofab-0.2.0/autofab/parts/benchmark/description.md +23 -0
  88. autofab-0.2.0/autofab/parts/benchmark/high/benchmark.md +32 -0
  89. autofab-0.2.0/autofab/parts/benchmark/high/benchmark_impl.md +47 -0
  90. autofab-0.2.0/autofab/parts/benchmark/lib/benchmark.py +164 -0
  91. autofab-0.2.0/autofab/parts/benchmark/lib/benchmark_impl.py +2391 -0
  92. autofab-0.2.0/autofab/parts/benchmark/low/benchmark.pyi +224 -0
  93. autofab-0.2.0/autofab/parts/benchmark/low/benchmark_impl.pyi +236 -0
  94. autofab-0.2.0/autofab/parts/benchmark/planning/benchmark.md +53 -0
  95. autofab-0.2.0/autofab/parts/benchmark/planning/benchmark_impl.md +65 -0
  96. autofab-0.2.0/autofab/parts/benchmark/pretense/benchmark_impl_pretense.py +165 -0
  97. autofab-0.2.0/autofab/parts/benchmark/scenarios/benchmark.md +97 -0
  98. autofab-0.2.0/autofab/parts/benchmark/scenarios/benchmark_impl.md +127 -0
  99. autofab-0.2.0/autofab/parts/benchmark/tests/benchmark_impl_test.py +1395 -0
  100. autofab-0.2.0/autofab/parts/control/__init__.py +0 -0
  101. autofab-0.2.0/autofab/parts/control/description.md +29 -0
  102. autofab-0.2.0/autofab/parts/control/high/attribution.md +34 -0
  103. autofab-0.2.0/autofab/parts/control/high/attribution_impl.md +59 -0
  104. autofab-0.2.0/autofab/parts/control/high/control_asm.md +24 -0
  105. autofab-0.2.0/autofab/parts/control/high/coordinate.md +36 -0
  106. autofab-0.2.0/autofab/parts/control/high/coordinate_impl.md +47 -0
  107. autofab-0.2.0/autofab/parts/control/high/submit.md +42 -0
  108. autofab-0.2.0/autofab/parts/control/high/submit_impl.md +51 -0
  109. autofab-0.2.0/autofab/parts/control/high/verification.md +32 -0
  110. autofab-0.2.0/autofab/parts/control/high/verification_impl.md +37 -0
  111. autofab-0.2.0/autofab/parts/control/high/work_scheduler.md +36 -0
  112. autofab-0.2.0/autofab/parts/control/high/work_scheduler_impl.md +41 -0
  113. autofab-0.2.0/autofab/parts/control/lib/__init__.py +0 -0
  114. autofab-0.2.0/autofab/parts/control/lib/attribution.py +74 -0
  115. autofab-0.2.0/autofab/parts/control/lib/attribution_impl.py +625 -0
  116. autofab-0.2.0/autofab/parts/control/lib/control_asm.py +35 -0
  117. autofab-0.2.0/autofab/parts/control/lib/coordinate.py +109 -0
  118. autofab-0.2.0/autofab/parts/control/lib/coordinate_impl.py +701 -0
  119. autofab-0.2.0/autofab/parts/control/lib/submit.py +62 -0
  120. autofab-0.2.0/autofab/parts/control/lib/submit_impl.py +714 -0
  121. autofab-0.2.0/autofab/parts/control/lib/verification.py +39 -0
  122. autofab-0.2.0/autofab/parts/control/lib/verification_impl.py +219 -0
  123. autofab-0.2.0/autofab/parts/control/lib/work_scheduler.py +58 -0
  124. autofab-0.2.0/autofab/parts/control/lib/work_scheduler_impl.py +557 -0
  125. autofab-0.2.0/autofab/parts/control/low/attribution.pyi +127 -0
  126. autofab-0.2.0/autofab/parts/control/low/attribution_impl.pyi +159 -0
  127. autofab-0.2.0/autofab/parts/control/low/control_asm.pyi +21 -0
  128. autofab-0.2.0/autofab/parts/control/low/coordinate.pyi +152 -0
  129. autofab-0.2.0/autofab/parts/control/low/coordinate_impl.pyi +226 -0
  130. autofab-0.2.0/autofab/parts/control/low/submit.pyi +97 -0
  131. autofab-0.2.0/autofab/parts/control/low/submit_impl.pyi +117 -0
  132. autofab-0.2.0/autofab/parts/control/low/verification.pyi +70 -0
  133. autofab-0.2.0/autofab/parts/control/low/verification_impl.pyi +65 -0
  134. autofab-0.2.0/autofab/parts/control/low/work_scheduler.pyi +91 -0
  135. autofab-0.2.0/autofab/parts/control/low/work_scheduler_impl.pyi +75 -0
  136. autofab-0.2.0/autofab/parts/control/planning/attribution.md +62 -0
  137. autofab-0.2.0/autofab/parts/control/planning/attribution_impl.md +62 -0
  138. autofab-0.2.0/autofab/parts/control/planning/coordinate.md +62 -0
  139. autofab-0.2.0/autofab/parts/control/planning/coordinate_impl.md +71 -0
  140. autofab-0.2.0/autofab/parts/control/planning/submit.md +62 -0
  141. autofab-0.2.0/autofab/parts/control/planning/submit_impl.md +64 -0
  142. autofab-0.2.0/autofab/parts/control/planning/verification.md +53 -0
  143. autofab-0.2.0/autofab/parts/control/planning/verification_impl.md +54 -0
  144. autofab-0.2.0/autofab/parts/control/planning/work_scheduler.md +55 -0
  145. autofab-0.2.0/autofab/parts/control/planning/work_scheduler_impl.md +57 -0
  146. autofab-0.2.0/autofab/parts/control/pretense/__init__.py +1 -0
  147. autofab-0.2.0/autofab/parts/control/pretense/attribution_impl_pretense.py +644 -0
  148. autofab-0.2.0/autofab/parts/control/pretense/coordinate_impl_pretense.py +628 -0
  149. autofab-0.2.0/autofab/parts/control/pretense/submit_impl_pretense.py +461 -0
  150. autofab-0.2.0/autofab/parts/control/pretense/verification_impl_pretense.py +363 -0
  151. autofab-0.2.0/autofab/parts/control/pretense/work_scheduler_impl_pretense.py +440 -0
  152. autofab-0.2.0/autofab/parts/control/scenarios/attribution.md +122 -0
  153. autofab-0.2.0/autofab/parts/control/scenarios/attribution_impl.md +248 -0
  154. autofab-0.2.0/autofab/parts/control/scenarios/coordinate.md +136 -0
  155. autofab-0.2.0/autofab/parts/control/scenarios/coordinate_impl.md +266 -0
  156. autofab-0.2.0/autofab/parts/control/scenarios/submit.md +165 -0
  157. autofab-0.2.0/autofab/parts/control/scenarios/submit_impl.md +304 -0
  158. autofab-0.2.0/autofab/parts/control/scenarios/verification.md +66 -0
  159. autofab-0.2.0/autofab/parts/control/scenarios/verification_impl.md +159 -0
  160. autofab-0.2.0/autofab/parts/control/scenarios/work_scheduler.md +105 -0
  161. autofab-0.2.0/autofab/parts/control/scenarios/work_scheduler_impl.md +241 -0
  162. autofab-0.2.0/autofab/parts/control/tests/attribution_impl_test.py +265 -0
  163. autofab-0.2.0/autofab/parts/control/tests/coordinate_impl_test.py +333 -0
  164. autofab-0.2.0/autofab/parts/control/tests/submit_impl_test.py +284 -0
  165. autofab-0.2.0/autofab/parts/control/tests/verification_impl_test.py +112 -0
  166. autofab-0.2.0/autofab/parts/control/tests/work_scheduler_impl_test.py +190 -0
  167. autofab-0.2.0/autofab/parts/core/__init__.py +0 -0
  168. autofab-0.2.0/autofab/parts/core/description.md +33 -0
  169. autofab-0.2.0/autofab/parts/core/high/app_info_ext.md +31 -0
  170. autofab-0.2.0/autofab/parts/core/high/autofab_files_ext.md +37 -0
  171. autofab-0.2.0/autofab/parts/core/high/commonmark_ext.md +29 -0
  172. autofab-0.2.0/autofab/parts/core/high/file_paths.md +32 -0
  173. autofab-0.2.0/autofab/parts/core/high/file_paths_impl.md +27 -0
  174. autofab-0.2.0/autofab/parts/core/high/filesystem_ext.md +27 -0
  175. autofab-0.2.0/autofab/parts/core/high/json_ext.md +31 -0
  176. autofab-0.2.0/autofab/parts/core/high/topological_order_ext.md +33 -0
  177. autofab-0.2.0/autofab/parts/core/lib/__init__.py +0 -0
  178. autofab-0.2.0/autofab/parts/core/lib/file_paths.py +163 -0
  179. autofab-0.2.0/autofab/parts/core/lib/file_paths_impl.py +89 -0
  180. autofab-0.2.0/autofab/parts/core/low/app_info_ext.pyi +71 -0
  181. autofab-0.2.0/autofab/parts/core/low/autofab_files_ext.pyi +106 -0
  182. autofab-0.2.0/autofab/parts/core/low/commonmark_ext.pyi +51 -0
  183. autofab-0.2.0/autofab/parts/core/low/file_paths.pyi +159 -0
  184. autofab-0.2.0/autofab/parts/core/low/file_paths_impl.pyi +87 -0
  185. autofab-0.2.0/autofab/parts/core/low/filesystem_ext.pyi +119 -0
  186. autofab-0.2.0/autofab/parts/core/low/json_ext.pyi +144 -0
  187. autofab-0.2.0/autofab/parts/core/low/topological_order_ext.pyi +51 -0
  188. autofab-0.2.0/autofab/parts/core/planning/file_paths.md +64 -0
  189. autofab-0.2.0/autofab/parts/core/planning/file_paths_impl.md +55 -0
  190. autofab-0.2.0/autofab/parts/core/pretense/__init__.py +1 -0
  191. autofab-0.2.0/autofab/parts/core/pretense/file_paths_impl_pretense.py +269 -0
  192. autofab-0.2.0/autofab/parts/core/scenarios/file_paths.md +71 -0
  193. autofab-0.2.0/autofab/parts/core/scenarios/file_paths_impl.md +170 -0
  194. autofab-0.2.0/autofab/parts/core/tests/__init__.py +0 -0
  195. autofab-0.2.0/autofab/parts/core/tests/file_paths_impl_test.py +94 -0
  196. autofab-0.2.0/autofab/parts/dag/__init__.py +0 -0
  197. autofab-0.2.0/autofab/parts/dag/description.md +29 -0
  198. autofab-0.2.0/autofab/parts/dag/high/dag_asm.md +24 -0
  199. autofab-0.2.0/autofab/parts/dag/high/dag_config.md +24 -0
  200. autofab-0.2.0/autofab/parts/dag/high/dag_storage.md +44 -0
  201. autofab-0.2.0/autofab/parts/dag/high/subgraph.md +30 -0
  202. autofab-0.2.0/autofab/parts/dag/high/subgraph_impl.md +31 -0
  203. autofab-0.2.0/autofab/parts/dag/lib/__init__.py +0 -0
  204. autofab-0.2.0/autofab/parts/dag/lib/dag_asm.py +25 -0
  205. autofab-0.2.0/autofab/parts/dag/lib/dag_config.py +32 -0
  206. autofab-0.2.0/autofab/parts/dag/lib/dag_storage.py +236 -0
  207. autofab-0.2.0/autofab/parts/dag/lib/subgraph.py +72 -0
  208. autofab-0.2.0/autofab/parts/dag/lib/subgraph_impl.py +225 -0
  209. autofab-0.2.0/autofab/parts/dag/low/dag_asm.pyi +18 -0
  210. autofab-0.2.0/autofab/parts/dag/low/dag_config.pyi +34 -0
  211. autofab-0.2.0/autofab/parts/dag/low/dag_storage.pyi +228 -0
  212. autofab-0.2.0/autofab/parts/dag/low/subgraph.pyi +74 -0
  213. autofab-0.2.0/autofab/parts/dag/low/subgraph_impl.pyi +106 -0
  214. autofab-0.2.0/autofab/parts/dag/planning/dag_config.md +43 -0
  215. autofab-0.2.0/autofab/parts/dag/planning/dag_storage.md +89 -0
  216. autofab-0.2.0/autofab/parts/dag/planning/subgraph.md +63 -0
  217. autofab-0.2.0/autofab/parts/dag/planning/subgraph_impl.md +61 -0
  218. autofab-0.2.0/autofab/parts/dag/pretense/__init__.py +1 -0
  219. autofab-0.2.0/autofab/parts/dag/pretense/dag_config_pretense.py +65 -0
  220. autofab-0.2.0/autofab/parts/dag/pretense/dag_storage_pretense.py +123 -0
  221. autofab-0.2.0/autofab/parts/dag/pretense/subgraph_impl_pretense.py +450 -0
  222. autofab-0.2.0/autofab/parts/dag/scenarios/dag_config.md +46 -0
  223. autofab-0.2.0/autofab/parts/dag/scenarios/dag_storage.md +176 -0
  224. autofab-0.2.0/autofab/parts/dag/scenarios/subgraph.md +156 -0
  225. autofab-0.2.0/autofab/parts/dag/scenarios/subgraph_impl.md +290 -0
  226. autofab-0.2.0/autofab/parts/dag/tests/__init__.py +0 -0
  227. autofab-0.2.0/autofab/parts/dag/tests/subgraph_impl_test.py +403 -0
  228. autofab-0.2.0/autofab/parts/dsh/description.md +24 -0
  229. autofab-0.2.0/autofab/parts/dsh/high/dsh_asm.md +26 -0
  230. autofab-0.2.0/autofab/parts/dsh/high/dsh_ext.md +33 -0
  231. autofab-0.2.0/autofab/parts/dsh/high/dsh_harness.md +42 -0
  232. autofab-0.2.0/autofab/parts/dsh/high/dsh_harness_impl.md +47 -0
  233. autofab-0.2.0/autofab/parts/dsh/high/dsh_telemetry.md +42 -0
  234. autofab-0.2.0/autofab/parts/dsh/high/dsh_telemetry_impl.md +43 -0
  235. autofab-0.2.0/autofab/parts/dsh/high/dsh_workspace.md +38 -0
  236. autofab-0.2.0/autofab/parts/dsh/high/dsh_workspace_impl.md +37 -0
  237. autofab-0.2.0/autofab/parts/dsh/lib/__init__.py +1 -0
  238. autofab-0.2.0/autofab/parts/dsh/lib/dsh_asm.py +32 -0
  239. autofab-0.2.0/autofab/parts/dsh/lib/dsh_harness.py +72 -0
  240. autofab-0.2.0/autofab/parts/dsh/lib/dsh_harness_impl.py +776 -0
  241. autofab-0.2.0/autofab/parts/dsh/lib/dsh_telemetry.py +131 -0
  242. autofab-0.2.0/autofab/parts/dsh/lib/dsh_telemetry_impl.py +924 -0
  243. autofab-0.2.0/autofab/parts/dsh/lib/dsh_workspace.py +48 -0
  244. autofab-0.2.0/autofab/parts/dsh/lib/dsh_workspace_impl.py +398 -0
  245. autofab-0.2.0/autofab/parts/dsh/low/dsh_asm.pyi +19 -0
  246. autofab-0.2.0/autofab/parts/dsh/low/dsh_ext.pyi +86 -0
  247. autofab-0.2.0/autofab/parts/dsh/low/dsh_harness.pyi +103 -0
  248. autofab-0.2.0/autofab/parts/dsh/low/dsh_harness_impl.pyi +148 -0
  249. autofab-0.2.0/autofab/parts/dsh/low/dsh_telemetry.pyi +171 -0
  250. autofab-0.2.0/autofab/parts/dsh/low/dsh_telemetry_impl.pyi +151 -0
  251. autofab-0.2.0/autofab/parts/dsh/low/dsh_workspace.pyi +56 -0
  252. autofab-0.2.0/autofab/parts/dsh/low/dsh_workspace_impl.pyi +44 -0
  253. autofab-0.2.0/autofab/parts/dsh/planning/dsh_harness.md +53 -0
  254. autofab-0.2.0/autofab/parts/dsh/planning/dsh_harness_impl.md +59 -0
  255. autofab-0.2.0/autofab/parts/dsh/planning/dsh_telemetry.md +48 -0
  256. autofab-0.2.0/autofab/parts/dsh/planning/dsh_telemetry_impl.md +49 -0
  257. autofab-0.2.0/autofab/parts/dsh/planning/dsh_workspace.md +45 -0
  258. autofab-0.2.0/autofab/parts/dsh/planning/dsh_workspace_impl.md +46 -0
  259. autofab-0.2.0/autofab/parts/dsh/pretense/dsh_harness_impl_pretense.py +318 -0
  260. autofab-0.2.0/autofab/parts/dsh/pretense/dsh_telemetry_impl_pretense.py +233 -0
  261. autofab-0.2.0/autofab/parts/dsh/pretense/dsh_workspace_impl_pretense.py +194 -0
  262. autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_harness.md +56 -0
  263. autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_harness_impl.md +71 -0
  264. autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_telemetry.md +51 -0
  265. autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_telemetry_impl.md +62 -0
  266. autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_workspace.md +38 -0
  267. autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_workspace_impl.md +43 -0
  268. autofab-0.2.0/autofab/parts/dsh/tests/dsh_asm_test.py +38 -0
  269. autofab-0.2.0/autofab/parts/dsh/tests/dsh_harness_impl_test.py +869 -0
  270. autofab-0.2.0/autofab/parts/dsh/tests/dsh_telemetry_impl_test.py +364 -0
  271. autofab-0.2.0/autofab/parts/dsh/tests/dsh_workspace_impl_test.py +207 -0
  272. autofab-0.2.0/autofab/parts/metadata/__init__.py +0 -0
  273. autofab-0.2.0/autofab/parts/metadata/description.md +36 -0
  274. autofab-0.2.0/autofab/parts/metadata/high/metadata_asm.md +24 -0
  275. autofab-0.2.0/autofab/parts/metadata/high/src_metadata.md +34 -0
  276. autofab-0.2.0/autofab/parts/metadata/high/src_metadata_ext.md +29 -0
  277. autofab-0.2.0/autofab/parts/metadata/high/src_metadata_impl.md +37 -0
  278. autofab-0.2.0/autofab/parts/metadata/high/src_storage_impl.md +67 -0
  279. autofab-0.2.0/autofab/parts/metadata/lib/__init__.py +0 -0
  280. autofab-0.2.0/autofab/parts/metadata/lib/metadata_asm.py +29 -0
  281. autofab-0.2.0/autofab/parts/metadata/lib/src_metadata.py +611 -0
  282. autofab-0.2.0/autofab/parts/metadata/lib/src_metadata_impl.py +388 -0
  283. autofab-0.2.0/autofab/parts/metadata/lib/src_storage_impl.py +769 -0
  284. autofab-0.2.0/autofab/parts/metadata/low/metadata_asm.pyi +18 -0
  285. autofab-0.2.0/autofab/parts/metadata/low/src_metadata.pyi +304 -0
  286. autofab-0.2.0/autofab/parts/metadata/low/src_metadata_ext.pyi +76 -0
  287. autofab-0.2.0/autofab/parts/metadata/low/src_metadata_impl.pyi +265 -0
  288. autofab-0.2.0/autofab/parts/metadata/low/src_storage_impl.pyi +449 -0
  289. autofab-0.2.0/autofab/parts/metadata/planning/src_metadata.md +66 -0
  290. autofab-0.2.0/autofab/parts/metadata/planning/src_metadata_impl.md +56 -0
  291. autofab-0.2.0/autofab/parts/metadata/planning/src_storage_impl.md +100 -0
  292. autofab-0.2.0/autofab/parts/metadata/pretense/__init__.py +1 -0
  293. autofab-0.2.0/autofab/parts/metadata/pretense/src_metadata_impl_pretense.py +850 -0
  294. autofab-0.2.0/autofab/parts/metadata/pretense/src_storage_impl_pretense.py +909 -0
  295. autofab-0.2.0/autofab/parts/metadata/scenarios/src_metadata.md +160 -0
  296. autofab-0.2.0/autofab/parts/metadata/scenarios/src_metadata_impl.md +252 -0
  297. autofab-0.2.0/autofab/parts/metadata/scenarios/src_storage_impl.md +581 -0
  298. autofab-0.2.0/autofab/parts/metadata/tests/src_metadata_impl_test.py +234 -0
  299. autofab-0.2.0/autofab/parts/metadata/tests/src_storage_impl_test.py +725 -0
  300. autofab-0.2.0/autofab/parts/subagent/description.md +33 -0
  301. autofab-0.2.0/autofab/parts/subagent/high/subagent_asm.md +26 -0
  302. autofab-0.2.0/autofab/parts/subagent/high/subagent_coordinator.md +68 -0
  303. autofab-0.2.0/autofab/parts/subagent/high/subagent_coordinator_impl.md +57 -0
  304. autofab-0.2.0/autofab/parts/subagent/high/subagent_harness.md +40 -0
  305. autofab-0.2.0/autofab/parts/subagent/high/subagent_harness_impl.md +39 -0
  306. autofab-0.2.0/autofab/parts/subagent/high/subagent_tool.md +28 -0
  307. autofab-0.2.0/autofab/parts/subagent/high/subagent_tool_impl.md +29 -0
  308. autofab-0.2.0/autofab/parts/subagent/lib/__init__.py +1 -0
  309. autofab-0.2.0/autofab/parts/subagent/lib/subagent_asm.py +31 -0
  310. autofab-0.2.0/autofab/parts/subagent/lib/subagent_coordinator.py +205 -0
  311. autofab-0.2.0/autofab/parts/subagent/lib/subagent_coordinator_impl.py +747 -0
  312. autofab-0.2.0/autofab/parts/subagent/lib/subagent_harness.py +95 -0
  313. autofab-0.2.0/autofab/parts/subagent/lib/subagent_harness_impl.py +422 -0
  314. autofab-0.2.0/autofab/parts/subagent/lib/subagent_tool.py +42 -0
  315. autofab-0.2.0/autofab/parts/subagent/lib/subagent_tool_impl.py +254 -0
  316. autofab-0.2.0/autofab/parts/subagent/low/subagent_asm.pyi +19 -0
  317. autofab-0.2.0/autofab/parts/subagent/low/subagent_coordinator.pyi +256 -0
  318. autofab-0.2.0/autofab/parts/subagent/low/subagent_coordinator_impl.pyi +139 -0
  319. autofab-0.2.0/autofab/parts/subagent/low/subagent_harness.pyi +141 -0
  320. autofab-0.2.0/autofab/parts/subagent/low/subagent_harness_impl.pyi +136 -0
  321. autofab-0.2.0/autofab/parts/subagent/low/subagent_tool.pyi +54 -0
  322. autofab-0.2.0/autofab/parts/subagent/low/subagent_tool_impl.pyi +73 -0
  323. autofab-0.2.0/autofab/parts/subagent/planning/subagent_coordinator.md +61 -0
  324. autofab-0.2.0/autofab/parts/subagent/planning/subagent_coordinator_impl.md +65 -0
  325. autofab-0.2.0/autofab/parts/subagent/planning/subagent_harness.md +56 -0
  326. autofab-0.2.0/autofab/parts/subagent/planning/subagent_harness_impl.md +56 -0
  327. autofab-0.2.0/autofab/parts/subagent/planning/subagent_tool.md +38 -0
  328. autofab-0.2.0/autofab/parts/subagent/planning/subagent_tool_impl.md +40 -0
  329. autofab-0.2.0/autofab/parts/subagent/pretense/subagent_coordinator_impl_pretense.py +318 -0
  330. autofab-0.2.0/autofab/parts/subagent/pretense/subagent_harness_impl_pretense.py +172 -0
  331. autofab-0.2.0/autofab/parts/subagent/pretense/subagent_tool_impl_pretense.py +191 -0
  332. autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_coordinator.md +91 -0
  333. autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_coordinator_impl.md +135 -0
  334. autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_harness.md +63 -0
  335. autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_harness_impl.md +71 -0
  336. autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_tool.md +42 -0
  337. autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_tool_impl.md +40 -0
  338. autofab-0.2.0/autofab/parts/subagent/tests/subagent_asm_test.py +43 -0
  339. autofab-0.2.0/autofab/parts/subagent/tests/subagent_coordinator_impl_test.py +1215 -0
  340. autofab-0.2.0/autofab/parts/subagent/tests/subagent_harness_impl_test.py +258 -0
  341. autofab-0.2.0/autofab/parts/subagent/tests/subagent_tool_impl_test.py +222 -0
  342. autofab-0.2.0/autofab/parts/systems/__init__.py +0 -0
  343. autofab-0.2.0/autofab/parts/systems/description.md +23 -0
  344. autofab-0.2.0/autofab/parts/systems/high/autofab_asm.md +26 -0
  345. autofab-0.2.0/autofab/parts/systems/lib/__init__.py +0 -0
  346. autofab-0.2.0/autofab/parts/systems/lib/autofab_asm.py +35 -0
  347. autofab-0.2.0/autofab/parts/systems/low/autofab_asm.pyi +23 -0
  348. autofab-0.2.0/autofab/parts/systems/tests/__init__.py +0 -0
  349. autofab-0.2.0/autofab/parts/uv/description.md +25 -0
  350. autofab-0.2.0/autofab/parts/uv/high/manifest_ext.md +27 -0
  351. autofab-0.2.0/autofab/parts/uv/high/manifest_loader.md +34 -0
  352. autofab-0.2.0/autofab/parts/uv/high/manifest_loader_impl.md +53 -0
  353. autofab-0.2.0/autofab/parts/uv/high/model_config_ext.md +27 -0
  354. autofab-0.2.0/autofab/parts/uv/high/model_config_impl.md +32 -0
  355. autofab-0.2.0/autofab/parts/uv/high/node_config_impl.md +59 -0
  356. autofab-0.2.0/autofab/parts/uv/high/target.md +24 -0
  357. autofab-0.2.0/autofab/parts/uv/high/target_impl.md +27 -0
  358. autofab-0.2.0/autofab/parts/uv/high/target_labels_ext.md +27 -0
  359. autofab-0.2.0/autofab/parts/uv/high/uv_asm.md +26 -0
  360. autofab-0.2.0/autofab/parts/uv/lib/__init__.py +0 -0
  361. autofab-0.2.0/autofab/parts/uv/lib/manifest_loader.py +43 -0
  362. autofab-0.2.0/autofab/parts/uv/lib/manifest_loader_impl.py +581 -0
  363. autofab-0.2.0/autofab/parts/uv/lib/model_config_impl.py +280 -0
  364. autofab-0.2.0/autofab/parts/uv/lib/node_config_impl.py +538 -0
  365. autofab-0.2.0/autofab/parts/uv/lib/target.py +29 -0
  366. autofab-0.2.0/autofab/parts/uv/lib/target_impl.py +157 -0
  367. autofab-0.2.0/autofab/parts/uv/lib/uv_asm.py +31 -0
  368. autofab-0.2.0/autofab/parts/uv/low/manifest_ext.pyi +64 -0
  369. autofab-0.2.0/autofab/parts/uv/low/manifest_loader.pyi +92 -0
  370. autofab-0.2.0/autofab/parts/uv/low/manifest_loader_impl.pyi +83 -0
  371. autofab-0.2.0/autofab/parts/uv/low/model_config_ext.pyi +68 -0
  372. autofab-0.2.0/autofab/parts/uv/low/model_config_impl.pyi +113 -0
  373. autofab-0.2.0/autofab/parts/uv/low/node_config_impl.pyi +333 -0
  374. autofab-0.2.0/autofab/parts/uv/low/target.pyi +57 -0
  375. autofab-0.2.0/autofab/parts/uv/low/target_impl.pyi +62 -0
  376. autofab-0.2.0/autofab/parts/uv/low/target_labels_ext.pyi +62 -0
  377. autofab-0.2.0/autofab/parts/uv/low/uv_asm.pyi +20 -0
  378. autofab-0.2.0/autofab/parts/uv/planning/manifest_loader.md +69 -0
  379. autofab-0.2.0/autofab/parts/uv/planning/manifest_loader_impl.md +58 -0
  380. autofab-0.2.0/autofab/parts/uv/planning/model_config_impl.md +54 -0
  381. autofab-0.2.0/autofab/parts/uv/planning/node_config_impl.md +92 -0
  382. autofab-0.2.0/autofab/parts/uv/planning/target.md +45 -0
  383. autofab-0.2.0/autofab/parts/uv/planning/target_impl.md +47 -0
  384. autofab-0.2.0/autofab/parts/uv/pretense/__init__.py +1 -0
  385. autofab-0.2.0/autofab/parts/uv/pretense/manifest_loader_impl_pretense.py +191 -0
  386. autofab-0.2.0/autofab/parts/uv/pretense/model_config_impl_pretense.py +178 -0
  387. autofab-0.2.0/autofab/parts/uv/pretense/node_config_impl_pretense.py +171 -0
  388. autofab-0.2.0/autofab/parts/uv/pretense/target_impl_pretense.py +187 -0
  389. autofab-0.2.0/autofab/parts/uv/scenarios/manifest_loader.md +76 -0
  390. autofab-0.2.0/autofab/parts/uv/scenarios/manifest_loader_impl.md +333 -0
  391. autofab-0.2.0/autofab/parts/uv/scenarios/model_config_impl.md +290 -0
  392. autofab-0.2.0/autofab/parts/uv/scenarios/node_config_impl.md +648 -0
  393. autofab-0.2.0/autofab/parts/uv/scenarios/target.md +72 -0
  394. autofab-0.2.0/autofab/parts/uv/scenarios/target_impl.md +469 -0
  395. autofab-0.2.0/autofab/parts/uv/tests/__init__.py +1 -0
  396. autofab-0.2.0/autofab/parts/uv/tests/manifest_loader_impl_test.py +440 -0
  397. autofab-0.2.0/autofab/parts/uv/tests/model_config_impl_test.py +368 -0
  398. autofab-0.2.0/autofab/parts/uv/tests/node_config_impl_test.py +340 -0
  399. autofab-0.2.0/autofab/parts/uv/tests/target_impl_test.py +134 -0
  400. autofab-0.2.0/autofab/parts/workspace/description.md +31 -0
  401. autofab-0.2.0/autofab/parts/workspace/high/provision.md +38 -0
  402. autofab-0.2.0/autofab/parts/workspace/high/provision_impl.md +62 -0
  403. autofab-0.2.0/autofab/parts/workspace/high/role_registry.md +34 -0
  404. autofab-0.2.0/autofab/parts/workspace/high/role_registry_impl.md +31 -0
  405. autofab-0.2.0/autofab/parts/workspace/high/roles.md +30 -0
  406. autofab-0.2.0/autofab/parts/workspace/high/roles_impl.md +33 -0
  407. autofab-0.2.0/autofab/parts/workspace/high/scaffold.md +36 -0
  408. autofab-0.2.0/autofab/parts/workspace/high/scaffold_impl.md +45 -0
  409. autofab-0.2.0/autofab/parts/workspace/high/stub.md +34 -0
  410. autofab-0.2.0/autofab/parts/workspace/high/stub_impl.md +35 -0
  411. autofab-0.2.0/autofab/parts/workspace/high/sync.md +38 -0
  412. autofab-0.2.0/autofab/parts/workspace/high/sync_impl.md +47 -0
  413. autofab-0.2.0/autofab/parts/workspace/high/workspace_asm.md +26 -0
  414. autofab-0.2.0/autofab/parts/workspace/lib/__init__.py +0 -0
  415. autofab-0.2.0/autofab/parts/workspace/lib/provision.py +68 -0
  416. autofab-0.2.0/autofab/parts/workspace/lib/provision_impl.py +594 -0
  417. autofab-0.2.0/autofab/parts/workspace/lib/role_registry.py +98 -0
  418. autofab-0.2.0/autofab/parts/workspace/lib/role_registry_impl.py +324 -0
  419. autofab-0.2.0/autofab/parts/workspace/lib/roles.py +97 -0
  420. autofab-0.2.0/autofab/parts/workspace/lib/roles_impl.py +825 -0
  421. autofab-0.2.0/autofab/parts/workspace/lib/scaffold.py +67 -0
  422. autofab-0.2.0/autofab/parts/workspace/lib/scaffold_impl.py +947 -0
  423. autofab-0.2.0/autofab/parts/workspace/lib/stub.py +59 -0
  424. autofab-0.2.0/autofab/parts/workspace/lib/stub_impl.py +575 -0
  425. autofab-0.2.0/autofab/parts/workspace/lib/sync.py +71 -0
  426. autofab-0.2.0/autofab/parts/workspace/lib/sync_impl.py +723 -0
  427. autofab-0.2.0/autofab/parts/workspace/lib/workspace_asm.py +37 -0
  428. autofab-0.2.0/autofab/parts/workspace/low/provision.pyi +133 -0
  429. autofab-0.2.0/autofab/parts/workspace/low/provision_impl.pyi +184 -0
  430. autofab-0.2.0/autofab/parts/workspace/low/role_registry.pyi +134 -0
  431. autofab-0.2.0/autofab/parts/workspace/low/role_registry_impl.pyi +166 -0
  432. autofab-0.2.0/autofab/parts/workspace/low/roles.pyi +119 -0
  433. autofab-0.2.0/autofab/parts/workspace/low/roles_impl.pyi +70 -0
  434. autofab-0.2.0/autofab/parts/workspace/low/scaffold.pyi +109 -0
  435. autofab-0.2.0/autofab/parts/workspace/low/scaffold_impl.pyi +132 -0
  436. autofab-0.2.0/autofab/parts/workspace/low/stub.pyi +69 -0
  437. autofab-0.2.0/autofab/parts/workspace/low/stub_impl.pyi +88 -0
  438. autofab-0.2.0/autofab/parts/workspace/low/sync.pyi +119 -0
  439. autofab-0.2.0/autofab/parts/workspace/low/sync_impl.pyi +138 -0
  440. autofab-0.2.0/autofab/parts/workspace/low/workspace_asm.pyi +23 -0
  441. autofab-0.2.0/autofab/parts/workspace/planning/provision.md +53 -0
  442. autofab-0.2.0/autofab/parts/workspace/planning/provision_impl.md +60 -0
  443. autofab-0.2.0/autofab/parts/workspace/planning/role_registry.md +52 -0
  444. autofab-0.2.0/autofab/parts/workspace/planning/role_registry_impl.md +53 -0
  445. autofab-0.2.0/autofab/parts/workspace/planning/roles.md +45 -0
  446. autofab-0.2.0/autofab/parts/workspace/planning/roles_impl.md +44 -0
  447. autofab-0.2.0/autofab/parts/workspace/planning/scaffold.md +47 -0
  448. autofab-0.2.0/autofab/parts/workspace/planning/scaffold_impl.md +48 -0
  449. autofab-0.2.0/autofab/parts/workspace/planning/stub.md +43 -0
  450. autofab-0.2.0/autofab/parts/workspace/planning/stub_impl.md +47 -0
  451. autofab-0.2.0/autofab/parts/workspace/planning/sync.md +52 -0
  452. autofab-0.2.0/autofab/parts/workspace/planning/sync_impl.md +55 -0
  453. autofab-0.2.0/autofab/parts/workspace/pretense/__init__.py +1 -0
  454. autofab-0.2.0/autofab/parts/workspace/pretense/provision_impl_pretense.py +313 -0
  455. autofab-0.2.0/autofab/parts/workspace/pretense/role_registry_impl_pretense.py +509 -0
  456. autofab-0.2.0/autofab/parts/workspace/pretense/roles_impl_pretense.py +490 -0
  457. autofab-0.2.0/autofab/parts/workspace/pretense/scaffold_impl_pretense.py +330 -0
  458. autofab-0.2.0/autofab/parts/workspace/pretense/stub_impl_pretense.py +271 -0
  459. autofab-0.2.0/autofab/parts/workspace/pretense/sync_impl_pretense.py +494 -0
  460. autofab-0.2.0/autofab/parts/workspace/scenarios/provision.md +97 -0
  461. autofab-0.2.0/autofab/parts/workspace/scenarios/provision_impl.md +177 -0
  462. autofab-0.2.0/autofab/parts/workspace/scenarios/role_registry.md +171 -0
  463. autofab-0.2.0/autofab/parts/workspace/scenarios/role_registry_impl.md +252 -0
  464. autofab-0.2.0/autofab/parts/workspace/scenarios/roles.md +31 -0
  465. autofab-0.2.0/autofab/parts/workspace/scenarios/roles_impl.md +31 -0
  466. autofab-0.2.0/autofab/parts/workspace/scenarios/scaffold.md +50 -0
  467. autofab-0.2.0/autofab/parts/workspace/scenarios/scaffold_impl.md +61 -0
  468. autofab-0.2.0/autofab/parts/workspace/scenarios/stub.md +28 -0
  469. autofab-0.2.0/autofab/parts/workspace/scenarios/stub_impl.md +24 -0
  470. autofab-0.2.0/autofab/parts/workspace/scenarios/sync.md +107 -0
  471. autofab-0.2.0/autofab/parts/workspace/scenarios/sync_impl.md +181 -0
  472. autofab-0.2.0/autofab/parts/workspace/tests/provision_impl_test.py +735 -0
  473. autofab-0.2.0/autofab/parts/workspace/tests/role_registry_impl_test.py +334 -0
  474. autofab-0.2.0/autofab/parts/workspace/tests/roles_impl_test.py +145 -0
  475. autofab-0.2.0/autofab/parts/workspace/tests/scaffold_impl_test.py +414 -0
  476. autofab-0.2.0/autofab/parts/workspace/tests/stub_impl_test.py +208 -0
  477. autofab-0.2.0/autofab/parts/workspace/tests/sync_impl_test.py +1004 -0
  478. autofab-0.2.0/autofab/parts/workspace_cli/__init__.py +1 -0
  479. autofab-0.2.0/autofab/parts/workspace_cli/description.md +33 -0
  480. autofab-0.2.0/autofab/parts/workspace_cli/high/check.md +30 -0
  481. autofab-0.2.0/autofab/parts/workspace_cli/high/check_impl.md +31 -0
  482. autofab-0.2.0/autofab/parts/workspace_cli/high/cli_tool.md +38 -0
  483. autofab-0.2.0/autofab/parts/workspace_cli/high/cli_tool_impl.md +31 -0
  484. autofab-0.2.0/autofab/parts/workspace_cli/high/commands.md +42 -0
  485. autofab-0.2.0/autofab/parts/workspace_cli/high/commands_impl.md +41 -0
  486. autofab-0.2.0/autofab/parts/workspace_cli/high/coverage.md +30 -0
  487. autofab-0.2.0/autofab/parts/workspace_cli/high/coverage_impl.md +34 -0
  488. autofab-0.2.0/autofab/parts/workspace_cli/high/dirtiness.md +36 -0
  489. autofab-0.2.0/autofab/parts/workspace_cli/high/dirtiness_impl.md +37 -0
  490. autofab-0.2.0/autofab/parts/workspace_cli/high/pending.md +36 -0
  491. autofab-0.2.0/autofab/parts/workspace_cli/high/pending_impl.md +37 -0
  492. autofab-0.2.0/autofab/parts/workspace_cli/high/work.md +50 -0
  493. autofab-0.2.0/autofab/parts/workspace_cli/high/work_impl.md +63 -0
  494. autofab-0.2.0/autofab/parts/workspace_cli/high/workspace_cli_asm.md +24 -0
  495. autofab-0.2.0/autofab/parts/workspace_cli/lib/__init__.py +0 -0
  496. autofab-0.2.0/autofab/parts/workspace_cli/lib/check.py +46 -0
  497. autofab-0.2.0/autofab/parts/workspace_cli/lib/check_impl.py +1068 -0
  498. autofab-0.2.0/autofab/parts/workspace_cli/lib/cli_tool.py +129 -0
  499. autofab-0.2.0/autofab/parts/workspace_cli/lib/cli_tool_impl.py +454 -0
  500. autofab-0.2.0/autofab/parts/workspace_cli/lib/commands.py +110 -0
  501. autofab-0.2.0/autofab/parts/workspace_cli/lib/commands_impl.py +647 -0
  502. autofab-0.2.0/autofab/parts/workspace_cli/lib/coverage.py +96 -0
  503. autofab-0.2.0/autofab/parts/workspace_cli/lib/coverage_impl.py +464 -0
  504. autofab-0.2.0/autofab/parts/workspace_cli/lib/dirtiness.py +61 -0
  505. autofab-0.2.0/autofab/parts/workspace_cli/lib/dirtiness_impl.py +635 -0
  506. autofab-0.2.0/autofab/parts/workspace_cli/lib/pending.py +36 -0
  507. autofab-0.2.0/autofab/parts/workspace_cli/lib/pending_impl.py +305 -0
  508. autofab-0.2.0/autofab/parts/workspace_cli/lib/work.py +108 -0
  509. autofab-0.2.0/autofab/parts/workspace_cli/lib/work_impl.py +642 -0
  510. autofab-0.2.0/autofab/parts/workspace_cli/lib/workspace_cli_asm.py +37 -0
  511. autofab-0.2.0/autofab/parts/workspace_cli/low/check.pyi +72 -0
  512. autofab-0.2.0/autofab/parts/workspace_cli/low/check_impl.pyi +99 -0
  513. autofab-0.2.0/autofab/parts/workspace_cli/low/cli_tool.pyi +137 -0
  514. autofab-0.2.0/autofab/parts/workspace_cli/low/cli_tool_impl.pyi +176 -0
  515. autofab-0.2.0/autofab/parts/workspace_cli/low/commands.pyi +138 -0
  516. autofab-0.2.0/autofab/parts/workspace_cli/low/commands_impl.pyi +197 -0
  517. autofab-0.2.0/autofab/parts/workspace_cli/low/coverage.pyi +166 -0
  518. autofab-0.2.0/autofab/parts/workspace_cli/low/coverage_impl.pyi +188 -0
  519. autofab-0.2.0/autofab/parts/workspace_cli/low/dirtiness.pyi +93 -0
  520. autofab-0.2.0/autofab/parts/workspace_cli/low/dirtiness_impl.pyi +90 -0
  521. autofab-0.2.0/autofab/parts/workspace_cli/low/pending.pyi +76 -0
  522. autofab-0.2.0/autofab/parts/workspace_cli/low/pending_impl.pyi +95 -0
  523. autofab-0.2.0/autofab/parts/workspace_cli/low/work.pyi +202 -0
  524. autofab-0.2.0/autofab/parts/workspace_cli/low/work_impl.pyi +217 -0
  525. autofab-0.2.0/autofab/parts/workspace_cli/low/workspace_cli_asm.pyi +24 -0
  526. autofab-0.2.0/autofab/parts/workspace_cli/planning/check.md +40 -0
  527. autofab-0.2.0/autofab/parts/workspace_cli/planning/check_impl.md +50 -0
  528. autofab-0.2.0/autofab/parts/workspace_cli/planning/cli_tool.md +49 -0
  529. autofab-0.2.0/autofab/parts/workspace_cli/planning/cli_tool_impl.md +45 -0
  530. autofab-0.2.0/autofab/parts/workspace_cli/planning/commands.md +49 -0
  531. autofab-0.2.0/autofab/parts/workspace_cli/planning/commands_impl.md +67 -0
  532. autofab-0.2.0/autofab/parts/workspace_cli/planning/coverage.md +55 -0
  533. autofab-0.2.0/autofab/parts/workspace_cli/planning/coverage_impl.md +60 -0
  534. autofab-0.2.0/autofab/parts/workspace_cli/planning/dirtiness.md +45 -0
  535. autofab-0.2.0/autofab/parts/workspace_cli/planning/dirtiness_impl.md +51 -0
  536. autofab-0.2.0/autofab/parts/workspace_cli/planning/pending.md +47 -0
  537. autofab-0.2.0/autofab/parts/workspace_cli/planning/pending_impl.md +54 -0
  538. autofab-0.2.0/autofab/parts/workspace_cli/planning/work.md +62 -0
  539. autofab-0.2.0/autofab/parts/workspace_cli/planning/work_impl.md +76 -0
  540. autofab-0.2.0/autofab/parts/workspace_cli/pretense/__init__.py +1 -0
  541. autofab-0.2.0/autofab/parts/workspace_cli/pretense/check_impl_pretense.py +202 -0
  542. autofab-0.2.0/autofab/parts/workspace_cli/pretense/cli_tool_impl_pretense.py +225 -0
  543. autofab-0.2.0/autofab/parts/workspace_cli/pretense/commands_impl_pretense.py +297 -0
  544. autofab-0.2.0/autofab/parts/workspace_cli/pretense/coverage_impl_pretense.py +281 -0
  545. autofab-0.2.0/autofab/parts/workspace_cli/pretense/dirtiness_impl_pretense.py +301 -0
  546. autofab-0.2.0/autofab/parts/workspace_cli/pretense/pending_impl_pretense.py +246 -0
  547. autofab-0.2.0/autofab/parts/workspace_cli/pretense/work_impl_pretense.py +308 -0
  548. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/check.md +21 -0
  549. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/check_impl.md +70 -0
  550. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/cli_tool.md +113 -0
  551. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/cli_tool_impl.md +228 -0
  552. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/commands.md +67 -0
  553. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/commands_impl.md +53 -0
  554. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/coverage.md +97 -0
  555. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/coverage_impl.md +163 -0
  556. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/dirtiness.md +41 -0
  557. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/dirtiness_impl.md +38 -0
  558. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/pending.md +37 -0
  559. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/pending_impl.md +41 -0
  560. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/work.md +81 -0
  561. autofab-0.2.0/autofab/parts/workspace_cli/scenarios/work_impl.md +220 -0
  562. autofab-0.2.0/autofab/parts/workspace_cli/tests/check_impl_test.py +665 -0
  563. autofab-0.2.0/autofab/parts/workspace_cli/tests/cli_tool_impl_test.py +306 -0
  564. autofab-0.2.0/autofab/parts/workspace_cli/tests/commands_impl_test.py +609 -0
  565. autofab-0.2.0/autofab/parts/workspace_cli/tests/coverage_impl_test.py +190 -0
  566. autofab-0.2.0/autofab/parts/workspace_cli/tests/dirtiness_impl_test.py +281 -0
  567. autofab-0.2.0/autofab/parts/workspace_cli/tests/pending_impl_test.py +192 -0
  568. autofab-0.2.0/autofab/parts/workspace_cli/tests/work_impl_test.py +962 -0
  569. autofab-0.2.0/autofab/support/__init__.py +5 -0
  570. autofab-0.2.0/autofab/support/lib/__init__.py +5 -0
  571. autofab-0.2.0/autofab/support/lib/app_info.py +129 -0
  572. autofab-0.2.0/autofab/support/lib/autofab_role_tool.py +3342 -0
  573. autofab-0.2.0/autofab/support/lib/build_lint_common.py +5247 -0
  574. autofab-0.2.0/autofab/support/lib/lib_lint.py +1244 -0
  575. autofab-0.2.0/autofab/support/lib/pretense_lint.py +1228 -0
  576. autofab-0.2.0/autofab/support/lib/test_lint.py +729 -0
  577. autofab-0.2.0/autofab/support/tests/__init__.py +1 -0
  578. autofab-0.2.0/autofab/support/tests/app_info_test.py +73 -0
  579. autofab-0.2.0/autofab/support/tests/autofab_role_tool_test.py +1186 -0
  580. autofab-0.2.0/autofab/support/tests/build_lint_common_test.py +472 -0
  581. autofab-0.2.0/autofab/support/tests/src_metadata_test.py +571 -0
  582. autofab-0.2.0/autofab/tests/example/bar.txt +9 -0
  583. autofab-0.2.0/autofab/tests/example/foo.txt +5 -0
  584. autofab-0.2.0/autofab_python/README.md +18 -0
  585. autofab-0.2.0/autofab_python/autofab_roles.toml +257 -0
  586. autofab-0.2.0/autofab_python/guides/coverage.md +45 -0
  587. autofab-0.2.0/autofab_python/guides/high_level_spec.md +148 -0
  588. autofab-0.2.0/autofab_python/guides/high_to_planning.md +105 -0
  589. autofab-0.2.0/autofab_python/guides/high_to_scenario.md +98 -0
  590. autofab-0.2.0/autofab_python/guides/low_to_lib.md +89 -0
  591. autofab-0.2.0/autofab_python/guides/low_to_test.md +92 -0
  592. autofab-0.2.0/autofab_python/guides/planning_to_low.md +123 -0
  593. autofab-0.2.0/autofab_python/guides/pretense.md +111 -0
  594. autofab-0.2.0/autofab_python/guides/pretense_coverage.md +39 -0
  595. autofab-0.2.0/autofab_python/guides/pretense_qa.md +43 -0
  596. autofab-0.2.0/autofab_python/guides/qa.md +118 -0
  597. autofab-0.2.0/autofab_python/guides/spec_qa.md +101 -0
  598. autofab-0.2.0/autofab_python/guides/uncontracted_bash.md +90 -0
  599. autofab-0.2.0/autofab_python/pyproject.toml +24 -0
  600. autofab-0.2.0/autofab_python/pyright_spec.json +5 -0
  601. autofab-0.2.0/autofab_python/support/__init__.py +5 -0
  602. autofab-0.2.0/autofab_python/support/lib/__init__.py +5 -0
  603. autofab-0.2.0/autofab_python/support/lib/app_info.py +129 -0
  604. autofab-0.2.0/autofab_python/support/lib/build_lint_common.py +5247 -0
  605. autofab-0.2.0/autofab_python/support/lib/framework.py +135 -0
  606. autofab-0.2.0/autofab_python/support/lib/framework.pyi +144 -0
  607. autofab-0.2.0/autofab_python/support/lib/high_lint.py +408 -0
  608. autofab-0.2.0/autofab_python/support/lib/lib_lint.py +1244 -0
  609. autofab-0.2.0/autofab_python/support/lib/lifecycle.py +759 -0
  610. autofab-0.2.0/autofab_python/support/lib/lifecycle.pyi +399 -0
  611. autofab-0.2.0/autofab_python/support/lib/low_lint.py +775 -0
  612. autofab-0.2.0/autofab_python/support/lib/pretense_lint.py +1228 -0
  613. autofab-0.2.0/autofab_python/support/lib/spec_lint.py +732 -0
  614. autofab-0.2.0/autofab_python/support/lib/test_lint.py +729 -0
  615. autofab-0.2.0/autofab_python/support/tests/app_info_test.py +84 -0
  616. autofab-0.2.0/autofab_python/support/tests/autofab_role_tool_test.py +1186 -0
  617. autofab-0.2.0/autofab_python/support/tests/build_lint_common_test.py +472 -0
  618. autofab-0.2.0/autofab_python/support/tests/high_lint_test.sh +169 -0
  619. autofab-0.2.0/autofab_python/support/tests/import_boundaries_lint_test.py +149 -0
  620. autofab-0.2.0/autofab_python/support/tests/lib_lint_test.sh +1436 -0
  621. autofab-0.2.0/autofab_python/support/tests/lifecycle_test.py +707 -0
  622. autofab-0.2.0/autofab_python/support/tests/linter_gates_test.py +38 -0
  623. autofab-0.2.0/autofab_python/support/tests/low_lint_test.sh +263 -0
  624. autofab-0.2.0/autofab_python/support/tests/pretense_lint_test.py +474 -0
  625. autofab-0.2.0/autofab_python/support/tests/test_lint_test.sh +1100 -0
  626. autofab-0.2.0/autofab_python/templates/empty_template.txt +0 -0
  627. autofab-0.2.0/autofab_python/templates/hls_template.md +37 -0
  628. autofab-0.2.0/autofab_python/templates/lib_template.py +10 -0
  629. autofab-0.2.0/autofab_python/templates/low_template.pyi +6 -0
  630. autofab-0.2.0/autofab_python/templates/model_configs.toml +250 -0
  631. autofab-0.2.0/autofab_python/templates/planning_template.md +37 -0
  632. autofab-0.2.0/autofab_python/templates/pretense_template.py +168 -0
  633. autofab-0.2.0/autofab_python/templates/scenario_template.md +22 -0
  634. autofab-0.2.0/autofab_python/templates/test_template.py +10 -0
  635. autofab-0.2.0/benchmarks/README.md +43 -0
  636. autofab-0.2.0/benchmarks/__init__.py +1 -0
  637. autofab-0.2.0/benchmarks/parts/autofab.toml +4 -0
  638. autofab-0.2.0/benchmarks/parts/dag_engine/__init__.py +1 -0
  639. autofab-0.2.0/benchmarks/parts/dag_engine/description.md +9 -0
  640. autofab-0.2.0/benchmarks/parts/dag_engine/high/dag_engine.md +72 -0
  641. autofab-0.2.0/benchmarks/parts/dag_engine/high/dag_engine_impl.md +44 -0
  642. autofab-0.2.0/benchmarks/parts/dag_engine/lib/dag_engine.py +190 -0
  643. autofab-0.2.0/benchmarks/parts/dag_engine/lib/dag_engine_impl.py +142 -0
  644. autofab-0.2.0/benchmarks/parts/dag_engine/low/dag_engine.pyi +525 -0
  645. autofab-0.2.0/benchmarks/parts/dag_engine/low/dag_engine_impl.pyi +333 -0
  646. autofab-0.2.0/benchmarks/parts/dag_engine/planning/dag_engine.md +78 -0
  647. autofab-0.2.0/benchmarks/parts/dag_engine/planning/dag_engine_impl.md +66 -0
  648. autofab-0.2.0/benchmarks/parts/dag_engine/scenarios/dag_engine.md +62 -0
  649. autofab-0.2.0/benchmarks/parts/dag_engine/scenarios/dag_engine_impl.md +84 -0
  650. autofab-0.2.0/benchmarks/parts/dag_engine/tests/dag_engine_impl_test.py +502 -0
  651. autofab-0.2.0/benchmarks/parts/dag_engine_lite/__init__.py +1 -0
  652. autofab-0.2.0/benchmarks/parts/dag_engine_lite/description.md +9 -0
  653. autofab-0.2.0/benchmarks/parts/dag_engine_lite/high/dag_engine_lite.md +66 -0
  654. autofab-0.2.0/benchmarks/parts/dag_engine_lite/high/dag_engine_lite_impl.md +44 -0
  655. autofab-0.2.0/benchmarks/parts/dag_engine_lite/lib/dag_engine_lite.py +173 -0
  656. autofab-0.2.0/benchmarks/parts/dag_engine_lite/lib/dag_engine_lite_impl.py +138 -0
  657. autofab-0.2.0/benchmarks/parts/dag_engine_lite/low/dag_engine_lite.pyi +496 -0
  658. autofab-0.2.0/benchmarks/parts/dag_engine_lite/low/dag_engine_lite_impl.pyi +320 -0
  659. autofab-0.2.0/benchmarks/parts/dag_engine_lite/planning/dag_engine_lite.md +86 -0
  660. autofab-0.2.0/benchmarks/parts/dag_engine_lite/planning/dag_engine_lite_impl.md +71 -0
  661. autofab-0.2.0/benchmarks/parts/dag_engine_lite/scenarios/dag_engine_lite.md +85 -0
  662. autofab-0.2.0/benchmarks/parts/dag_engine_lite/scenarios/dag_engine_lite_impl.md +104 -0
  663. autofab-0.2.0/benchmarks/parts/dag_engine_lite/tests/dag_engine_lite_impl_test.py +32 -0
  664. autofab-0.2.0/benchmarks/parts/semver_solver/__init__.py +1 -0
  665. autofab-0.2.0/benchmarks/parts/semver_solver/description.md +10 -0
  666. autofab-0.2.0/benchmarks/parts/semver_solver/high/backtracking_solver_ext.md +32 -0
  667. autofab-0.2.0/benchmarks/parts/semver_solver/high/semver_solver.md +66 -0
  668. autofab-0.2.0/benchmarks/parts/semver_solver/high/semver_solver_impl.md +51 -0
  669. autofab-0.2.0/benchmarks/parts/semver_solver/low/backtracking_solver_ext.pyi +132 -0
  670. autofab-0.2.0/benchmarks/parts/semver_solver/low/semver_solver.pyi +352 -0
  671. autofab-0.2.0/benchmarks/parts/semver_solver/low/semver_solver_impl.pyi +188 -0
  672. autofab-0.2.0/benchmarks/parts/semver_solver/planning/semver_solver.md +82 -0
  673. autofab-0.2.0/benchmarks/parts/semver_solver/planning/semver_solver_impl.md +65 -0
  674. autofab-0.2.0/benchmarks/parts/semver_solver/scenarios/semver_solver.md +94 -0
  675. autofab-0.2.0/benchmarks/parts/semver_solver/scenarios/semver_solver_impl.md +115 -0
  676. autofab-0.2.0/benchmarks/results/dag_engine/Qwen3.6-35B-A3B-oQ6-mtp+dsh/cleanroom_2.log +61 -0
  677. autofab-0.2.0/benchmarks/results/dag_engine/Qwen3.6-35B-A3B-oQ6-mtp+dsh/lib_1.py +1136 -0
  678. autofab-0.2.0/benchmarks/results/dag_engine/Qwen3.6-35B-A3B-oQ6-mtp+dsh/lib_2.py +1268 -0
  679. autofab-0.2.0/benchmarks/results/dag_engine/Qwen3.6-35B-A3B-oQ6-mtp+dsh/test_1.py +1170 -0
  680. autofab-0.2.0/benchmarks/results/dag_engine/Qwen3.6-35B-A3B-oQ6-mtp+dsh/test_2.py +914 -0
  681. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/cleanroom_2.log +12 -0
  682. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/cleanroom_3.log +13 -0
  683. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/cleanroom_4.log +23 -0
  684. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/lib_1.py +1310 -0
  685. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/lib_2.py +1270 -0
  686. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/lib_3.py +1413 -0
  687. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/lib_4.py +1446 -0
  688. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/test_1.py +951 -0
  689. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/test_2.py +797 -0
  690. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/test_3.py +681 -0
  691. autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/test_4.py +996 -0
  692. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/cleanroom_2.log +20 -0
  693. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/cleanroom_3.log +17 -0
  694. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/cleanroom_4.log +31 -0
  695. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/lib_1.py +1090 -0
  696. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/lib_2.py +984 -0
  697. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/lib_3.py +904 -0
  698. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/lib_4.py +951 -0
  699. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/test_1.py +856 -0
  700. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/test_2.py +657 -0
  701. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/test_3.py +769 -0
  702. autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/test_4.py +905 -0
  703. autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity/cleanroom_1.log +15 -0
  704. autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity/lib_1.py +1095 -0
  705. autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity/test_1.py +754 -0
  706. autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity-baseline/cleanroom_1.log +439 -0
  707. autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity-baseline/lib_1.py +1313 -0
  708. autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity-baseline/test_1.py +488 -0
  709. autofab-0.2.0/benchmarks/results/dag_engine/qwen-flash-next-288-q4+dsh/lib_1.py +1225 -0
  710. autofab-0.2.0/benchmarks/results/dag_engine/qwen-flash-next-288-q4+dsh/test_1.py +1072 -0
  711. autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense/cleanroom_1.log +19 -0
  712. autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense/lib_1.py +1204 -0
  713. autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense/pretense_1.py +1843 -0
  714. autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense-baseline/cleanroom_1.log +525 -0
  715. autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense-baseline/lib_1.py +1063 -0
  716. autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense-baseline/pretense_1.py +1480 -0
  717. autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense/cleanroom_1.log +26 -0
  718. autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense/lib_1.py +801 -0
  719. autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense/pretense_1.py +1033 -0
  720. autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense-baseline/cleanroom_1.log +525 -0
  721. autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense-baseline/lib_1.py +734 -0
  722. autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense-baseline/pretense_1.py +799 -0
  723. autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense/cleanroom_1.log +74 -0
  724. autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense/lib_1.py +1203 -0
  725. autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense/pretense_1.py +1160 -0
  726. autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense-baseline/cleanroom_1.log +6 -0
  727. autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense-baseline/lib_1.py +912 -0
  728. autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense-baseline/pretense_1.py +855 -0
  729. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/cleanroom_1.log +35 -0
  730. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/cleanroom_2.log +19 -0
  731. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/cleanroom_3.log +19 -0
  732. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/lib_1.py +1045 -0
  733. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/lib_2.py +1116 -0
  734. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/lib_3.py +998 -0
  735. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/pretense_1.py +1824 -0
  736. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/pretense_2.py +1733 -0
  737. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/pretense_3.py +2064 -0
  738. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/cleanroom_1.log +521 -0
  739. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/cleanroom_2.log +525 -0
  740. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/cleanroom_3.log +525 -0
  741. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/lib_1.py +749 -0
  742. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/lib_2.py +926 -0
  743. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/lib_3.py +879 -0
  744. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/pretense_1.py +880 -0
  745. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/pretense_2.py +1182 -0
  746. autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/pretense_3.py +1381 -0
  747. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/cleanroom_1.log +22 -0
  748. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/cleanroom_2.log +15 -0
  749. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/cleanroom_3.log +17 -0
  750. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/lib_1.py +796 -0
  751. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/lib_2.py +769 -0
  752. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/lib_3.py +765 -0
  753. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/pretense_1.py +1624 -0
  754. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/pretense_2.py +1262 -0
  755. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/pretense_3.py +1497 -0
  756. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/cleanroom_1.log +33 -0
  757. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/cleanroom_2.log +525 -0
  758. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/cleanroom_3.log +533 -0
  759. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/lib_1.py +625 -0
  760. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/lib_2.py +898 -0
  761. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/lib_3.py +631 -0
  762. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/pretense_1.py +573 -0
  763. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/pretense_2.py +1055 -0
  764. autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/pretense_3.py +964 -0
  765. autofab-0.2.0/benchmarks/results/semver_solver/qwen-moe+dsh-pretense-baseline/cleanroom_1.log +533 -0
  766. autofab-0.2.0/benchmarks/results/semver_solver/qwen-moe+dsh-pretense-baseline/lib_1.py +840 -0
  767. autofab-0.2.0/benchmarks/results/semver_solver/qwen-moe+dsh-pretense-baseline/pretense_1.py +1170 -0
  768. autofab-0.2.0/bin/autofab +10 -0
  769. autofab-0.2.0/bin/autofab-loop +1 -0
  770. autofab-0.2.0/bin/autofab_loop +3 -0
  771. autofab-0.2.0/bin/clean +3 -0
  772. autofab-0.2.0/bin/cleanroom +1 -0
  773. autofab-0.2.0/bin/cleanroom-loop +1 -0
  774. autofab-0.2.0/bin/cleanroom_loop +1 -0
  775. autofab-0.2.0/bin/evaluate_model_efficiency.py +29 -0
  776. autofab-0.2.0/bin/format_workspace.sh +100 -0
  777. autofab-0.2.0/bin/orchestrate +3 -0
  778. autofab-0.2.0/bin/run_cross_tests.py +780 -0
  779. autofab-0.2.0/bin/sync_autofab +1 -0
  780. autofab-0.2.0/bin/sync_autofab.sh +5 -0
  781. autofab-0.2.0/bin/sync_partsdir.sh +309 -0
  782. autofab-0.2.0/bin/sync_staging +1 -0
  783. autofab-0.2.0/bin/sync_staging.sh +5 -0
  784. autofab-0.2.0/bin/test +227 -0
  785. autofab-0.2.0/design-docs/README.md +172 -0
  786. autofab-0.2.0/design-docs/benchmark_design_doc.md +1418 -0
  787. autofab-0.2.0/design-docs/concrete_scenario_validation.md +257 -0
  788. autofab-0.2.0/design-docs/design.md +649 -0
  789. autofab-0.2.0/design-docs/dual_baseline.md +292 -0
  790. autofab-0.2.0/design-docs/grounded_specification_language_and_neural_compilation.md +613 -0
  791. autofab-0.2.0/design-docs/high_level_spec_format.md +340 -0
  792. autofab-0.2.0/design-docs/low_level_spec_format.md +176 -0
  793. autofab-0.2.0/design-docs/modular_subsystems_architecture.md +315 -0
  794. autofab-0.2.0/design-docs/paper_submission_design_doc.md +2665 -0
  795. autofab-0.2.0/design-docs/planning_format.md +309 -0
  796. autofab-0.2.0/design-docs/pretense.md +2599 -0
  797. autofab-0.2.0/design-docs/template_format.md +130 -0
  798. autofab-0.2.0/design-docs/todo.md +640 -0
  799. autofab-0.2.0/design-docs/toolchain_and_verification.md +270 -0
  800. autofab-0.2.0/pretense/README.md +33 -0
  801. autofab-0.2.0/pretense/__init__.py +82 -0
  802. autofab-0.2.0/pretense/cli.py +35 -0
  803. autofab-0.2.0/pretense/collections.py +206 -0
  804. autofab-0.2.0/pretense/compiler.py +47 -0
  805. autofab-0.2.0/pretense/context.py +9 -0
  806. autofab-0.2.0/pretense/fake.py +5 -0
  807. autofab-0.2.0/pretense/parts/autofab.toml +4 -0
  808. autofab-0.2.0/pretense/parts/pretense/__init__.py +1 -0
  809. autofab-0.2.0/pretense/parts/pretense/description.md +20 -0
  810. autofab-0.2.0/pretense/parts/pretense/high/pretense.md +23 -0
  811. autofab-0.2.0/pretense/parts/pretense/high/pretense_impl.md +23 -0
  812. autofab-0.2.0/pretense/parts/pretense/lib/pretense.py +1303 -0
  813. autofab-0.2.0/pretense/parts/pretense/lib/pretense_impl.py +806 -0
  814. autofab-0.2.0/pretense/parts/pretense/low/pretense.pyi +422 -0
  815. autofab-0.2.0/pretense/parts/pretense/low/pretense_impl.pyi +86 -0
  816. autofab-0.2.0/pretense/parts/pretense/planning/pretense.md +72 -0
  817. autofab-0.2.0/pretense/parts/pretense/planning/pretense_impl.md +59 -0
  818. autofab-0.2.0/pretense/parts/pretense/pretense/pretense_impl_pretense.py +218 -0
  819. autofab-0.2.0/pretense/parts/pretense/scenarios/pretense.md +76 -0
  820. autofab-0.2.0/pretense/parts/pretense/scenarios/pretense_impl.md +58 -0
  821. autofab-0.2.0/pretense/parts/pretense/tests/pretense_impl_test.py +895 -0
  822. autofab-0.2.0/pretense/proto.py +9 -0
  823. autofab-0.2.0/pretense/pyproject.toml +40 -0
  824. autofab-0.2.0/pretense/sentinels.py +25 -0
  825. autofab-0.2.0/pretense/support/tests/counterexample_synthesis_test.py +97 -0
  826. autofab-0.2.0/pretense/support/tests/pretense_core_test.py +244 -0
  827. autofab-0.2.0/pretense/synthesis.py +44 -0
  828. autofab-0.2.0/pretense/transition.py +11 -0
  829. autofab-0.2.0/pyproject.toml +96 -0
  830. autofab-0.2.0/requirements.txt +8 -0
  831. autofab-0.2.0/requirements_lock.txt +148 -0
  832. autofab-0.2.0/uv.lock +763 -0
@@ -0,0 +1,34 @@
1
+ /bazel-*
2
+ /agent_loop.log*
3
+ /staging/
4
+ /testing/
5
+ __pycache__/
6
+ *.py[cod]
7
+ *$py.class
8
+ .update_with_ai.textproto
9
+ .update_with_ai.proto
10
+ /.mcp.active*
11
+ /.cleanroom/
12
+ /.autofab/
13
+ .pytest_cache/
14
+ .ruff_cache/
15
+ .hypothesis/
16
+ .mcp.worker_sessions.json
17
+ .DS_Store
18
+ /.cleanroom_workspaces.json
19
+ /.cleanroom_blame_buffer.json
20
+ /.autofab_workspaces.json
21
+ /.autofab_blame_buffer.json
22
+ *.bak
23
+ *.bak/
24
+ /logs/
25
+ *.cleanroom.log*
26
+ *.autofab.log*
27
+ /benchmark_*
28
+ scratch/
29
+ .coverage*
30
+ autofab_role_workspaces/
31
+ role_workspaces/
32
+ dist/
33
+ build/
34
+ *.egg-info/
@@ -0,0 +1 @@
1
+ 3.12.0
@@ -0,0 +1,33 @@
1
+ {
2
+ "python.analysis.extraPaths": [
3
+ "${workspaceFolder}/update_with_ai",
4
+ "${workspaceFolder}/update_with_ai/lib",
5
+ "${workspaceFolder}/update_with_ai/specs/grounding_pyi"
6
+ ],
7
+ "editor.inlineSuggest.enabled": false,
8
+ "editor.quickSuggestions": {
9
+ "other": "off",
10
+ "comments": "off",
11
+ "strings": "off"
12
+ },
13
+ "editor.suggestOnTriggerCharacters": false,
14
+ "editor.acceptSuggestionOnEnter": "off",
15
+ "editor.tabCompletion": "off",
16
+ "editor.wordBasedSuggestions": "off",
17
+ "editor.snippetSuggestions": "none",
18
+ "editor.parameterHints.enabled": false,
19
+ "[markdown]": {
20
+ "editor.quickSuggestions": {
21
+ "other": "off",
22
+ "comments": "off",
23
+ "strings": "off"
24
+ },
25
+ "editor.suggestOnTriggerCharacters": false,
26
+ "editor.wordBasedSuggestions": "off",
27
+ "editor.inlineSuggest.enabled": false
28
+ },
29
+ "editor.wordWrap": "on",
30
+ "files.associations": {
31
+ "*.gt": "prolog"
32
+ }
33
+ }
@@ -0,0 +1,96 @@
1
+ # Autofab Behavioral Constraints & Guide References
2
+
3
+ ## Workspace Boundaries & File Locations
4
+
5
+ - **NEVER modify or rely on the `staging/` directory**: The `staging/` directory is an ephemeral test consumer directory that can be deleted or wiped at any time. Running `bin/sync_staging.sh` counts as modifying the `staging/` directory.
6
+ - **Canonical Codebase**: All production specifications, library implementations, and builds live exclusively in:
7
+ - `autofab/`
8
+ - `autofab_python/`
9
+ - `pretense/`
10
+
11
+ ## Strict Prohibition on Hardcoding Specific Paths, Directory Names, and Role Names
12
+
13
+ - **NO Hardcoded Directory Names or Paths**: Specific directory names, package scopes, or ephemeral workspace paths (such as `staging`, `autofab`, `autofab_python`, `pretense`, `autofab_role_workspaces`, `role_workspaces`, or temporary directories) must NEVER be hardcoded into tools, linters, runners, verifiers, test assertions, or library implementations.
14
+ - **NO Hardcoded Role Names**: Role names (such as `high`, `planning`, `low`, `spec_qa`, `lib`, `test`, `qa`, `coverage`, `scenario`, `pretense`, `pretense_qa`, `pretense_coverage`, etc.) must NEVER be hardcoded into core tools, workspace provisioners, runners, orchestrators, or library logic. Roles must be discovered dynamically from the active methodology configuration (e.g., `autofab_roles.toml`, `cleanroom_roles.toml`, `autofab.toml`, `cleanroom.toml`) and target definitions.
15
+ - **Dynamic Scoping and Target Derivation**: Package scopes, workspace roots, role definitions, and directory paths must always be derived dynamically from the target address (e.g., `//<scope>/parts/...#<role>`), active configuration files (e.g., `autofab.toml`, `autofab_roles.toml`), environment variables (e.g., `BUILD_WORKSPACE_DIRECTORY`), or passed explicitly as arguments without hardcoded directory or role defaults.
16
+ - **Agnostic Linters, Runners, and Verifiers**: Linters, runners, and verification tools must verify imports, package structures, and role execution relative to the active target's resolved package root, methodology manifest, and declared dependencies, rather than asserting against hardcoded directory strings or static role enumerations.
17
+
18
+ ## Mandatory Specification-First (HLS-First) Rule
19
+
20
+ - **ALWAYS start with HLS changes when changing code in a parts directory**: Never make stealth changes to library code (`lib/*.py`) or unit tests (`tests/*_test.py`) without first authoring and aligning the corresponding High-Level Specification (`high/*.md`).
21
+ - **Every Bug or Defect is a Specification Defect**: Do NOT treat bug fixing, troubleshooting, or runtime failures as an excuse to jump directly to patching `lib/*.py` or `tests/*_test.py`. If code behaved incorrectly, determine what high-level behavioral contract was omitted or violated, author the change in `high/*.md` first, and cascade down.
22
+ - **Automatic Downstream Alignment**: Whenever changes are made to HLS files (`high/*.md`), immediately and automatically cascade alignment across the entire downstream pipeline: `HLS` (`high/*.md`) $\to$ `Planning` (`planning/*.md`) $\to$ `Scenarios` (`scenarios/*.md`) $\to$ `Low` (`low/*.pyi`) $\to$ `Spec QA` $\to$ `Library` (`lib/*.py`) $\to$ `Unit Tests` (`tests/*_test.py`). Do not stop after editing HLS files or wait for separate prompts to complete downstream alignment.
23
+ - **Pre-Edit Gate (STOP before touching `lib/` or `tests/`)**: Before editing any file under `parts/*/lib/` or `parts/*/tests/`, verify:
24
+ 1. Has the corresponding `high/*.md` been authored first, with planning, scenarios, and low specifications aligned?
25
+ 2. Or are you specifically dealing with preexisting uncontracted code?
26
+ If neither, **STOP**. Author the HLS change first.
27
+
28
+ ## Handling Uncontracted Code
29
+
30
+ - **Permitted to Delete**: When specifically discovering preexisting uncontracted code in `lib/` or `tests/`, you are fully permitted to delete it if it is unneeded, redundant, or uncontracted fallback logic.
31
+ - **Retrofitting Contracts is Discouraged but Permitted**: Retrofitting contracts backwards from code to spec is discouraged, but is sometimes the only way to deal with essential uncontracted code that must be preserved. When retrofitting, author the missing contracts up the ladder (`low/`, `scenarios/`, `planning/`, `high/`) so the functionality is no longer uncontracted. Once retrofitted, all subsequent changes must follow the strict HLS-first rule.
32
+
33
+ ## Semantic Analysis Over Syntactic Checking (Anti-Mechanistic Rule)
34
+
35
+ - **Mechanistic Checking is Only 1%**: Passing linters, type checkers, or verifiers with zero errors is merely a baseline mechanical sanity check. It does NOT mean the specification or implementation is correct or meaningful. Stop treating tasks as syntactic constraint-satisfaction games.
36
+ - **Mandatory Deep Semantic Analysis**: Every specification, implementation, contract, and test must be derived by analyzing the actual behavioral semantics and contracts in upstream artifacts rather than shallow mechanistic checks.
37
+
38
+ ## Standard Terminology: Step vs Round (Strict Prohibition on "Turn")
39
+
40
+ - **STRICT PROHIBITION ON "TURN"**: The term "turn" is ambiguous (historically conflated between a single tool-call step and a full role dispatch wave) and is strictly deprecated and prohibited in documentation, guides, design docs, specifications, prompts, and code. Use **step** or **round** explicitly.
41
+ - **Step**: A single prompt $\leftrightarrow$ tool-call interaction cycle between an agent/model and the runtime/harness (e.g., model prompt $\to$ internal reasoning $\to$ tool call(s) $\to$ tool response).
42
+ - **Round**: A full Autofab role dispatch wave or execution pass across assigned targets (from role dispatch into a role workspace until completion, submission, blame, or exhaustion). A round encompasses all model steps executed within that role dispatch pass. Re-entry of a role (e.g. after downstream rejection or loop propagation) initiates a subsequent round.
43
+
44
+ ## Mandatory Tool Execution and Round Conclusion (Prohibition on Conversational Halting)
45
+
46
+ - **Ground Truth First (Anti-Speculation Rule)**: Always run `bin/check_files <target>` immediately as the first action after `bin/get_work` to obtain deterministic error diagnostics. Never guess, infer, or speculate about defects from reading prose before checking the actual oracle output.
47
+ - **Continuous Tool Execution While Work Remains**: While ready targets remain unresolved, role workers operate exclusively via tool execution. Producing conversational commentary, explanations, or announcing actions in prose (such as ending a message with a colon or promising a tool call) without invoking tools in the same step is strictly prohibited and causes runtime harnesses to terminate rounds prematurely.
48
+ - **Targeted Reads Over Repeated Dumps**: Never repeatedly read entire files when output is pruned. Use grep to locate symbols, or read narrow line ranges with offset and limit.
49
+ - **Mandatory Round Conclusion When Work is Done**: When a role worker has no outstanding work to do and `bin/get_work` does not give it more work to do (all assigned ready targets have been resolved via `bin/check_files <target>` followed by `bin/submit`, `bin/blame`, or `bin/fail`, or only blocked targets remain), the worker can and MUST conclude the round immediately. The worker must output its concise summary text WITHOUT invoking any further tools (`ls`, `bin/get_work`, dummy commands). Delivering text with zero tool calls is the expected mechanism that cleanly concludes the round in autonomous harnesses. Leaving assigned targets unresolved without tool execution triggers coordinator reminders and trips the impasse circuit breaker.
50
+
51
+ ## Guide Editing & Meta-Rules
52
+
53
+ - **Editing Guides**: ALWAYS read and maintain in context `autofab/guides/meta_guide.md` before creating, updating, or editing any guide.
54
+
55
+ ## Required Guides for Alignments & Tasks
56
+
57
+ Always read and maintain in context the relevant guide from `autofab_python/guides/` when modifying specs, implementations, tests, or doing alignments:
58
+
59
+ - **High-Level Specs (HLS)**: `autofab_python/guides/high_level_spec.md`
60
+ - **HLS to Planning Alignment**: `autofab_python/guides/high_to_planning.md`
61
+ - **Planning to Low Alignment**: `autofab_python/guides/planning_to_low.md`
62
+ - **Spec QA Arbiter**: `autofab_python/guides/spec_qa.md`
63
+ - **Low-Level Specification to Library Code Alignment**: `autofab_python/guides/low_to_lib.md`
64
+ - **Low-Level Specification to Unit Tests Alignment**: `autofab_python/guides/low_to_test.md`
65
+ - **QA Verification**: `autofab_python/guides/qa.md`
66
+ - **Coverage Arbiter**: `autofab_python/guides/coverage.md`
67
+
68
+ ## Test Execution (bin/test)
69
+
70
+ - **Required Test Runner**: Use `bin/test` to run repo verification and tests cleanly.
71
+
72
+ ## Local Python Linter Invocations (test_lint.py)
73
+
74
+ - **Required PYTHONPATH**: When running `test_lint.py` directly (such as during dry-run collection verification), ensure `PYTHONPATH` includes `autofab_python`, `pretense`, and all constituent library directories (`autofab/parts/*/lib`, `pretense/parts/*/lib`, or package roots) to prevent cross-package `ModuleNotFoundError` during test module dry runs.
75
+
76
+ ## DO NOT EDIT pyrightconfig.json to fix type problems!
77
+
78
+ If a test doesn't matter, don't run the test! Do not edit pyrightconfig.json to make the test not matter anymore. If you have a type error that you can't fix, don't edit pyrightconfig.json to make the type error go away. Etc...
79
+
80
+ ## Direct Command Execution
81
+
82
+ - **Immediate Execution of Explicit Shell Commands**: When the user provides an explicit shell command to run (e.g., `uv run ...`, `bin/...`, `pytest ...`), execute `run_command` immediately in the very first step. Do NOT inspect source code, read files, second-guess, or perform pre-flight research before running the command.
83
+
84
+ ## Git Operations
85
+
86
+ - **NO Unprompted Commits or Pushes**: NEVER commit or push to git unless explicitly directed to do so by the user.
87
+
88
+ ## Autonomous Orchestration Antigravity Execution
89
+
90
+ - **Immediate Coordinator Invocation on orchestrate & benchmarks (Antigravity Only)**: When running under the Google Antigravity agent, if any command resolving to the Antigravity harness (such as `uv run autofab orchestrate ...`, `uv run autofab clean ...`, `uv run autofab benchmark ...`, or `uv run bin/evaluate_model_efficiency.py ...`) is executed (or emits the `AUTONOMOUS ANTIGRAVITY COORDINATION DIRECTIVE`):
91
+ 1. If `agentapi send-message` reactive wakeup message is received in the chat, use the target scope specified directly in the message.
92
+ 2. If the command runs as a background task and no message arrived, immediately inspect the task log (`.system_generated/tasks/task-X.log`) or `logs/*_runner.log` to extract the scope name (`benchmarks_flight_*` or target scope). Do NOT wait for the background command to finish before launching the coordinator—the command is waiting for the coordinator to converge the DAG.
93
+ 3. Immediately invoke:
94
+ `invoke_subagent(TypeName="autofab_coordinator", Role="Autofab Coordinator", Prompt="Clean all dirty nodes in <scope> using autofab_coordinator")`
95
+ In other environments (such as DeepSeek Harness / DSH Desktop), run `uv run autofab clean <scope> [target_role]` directly via the terminal tool (configured with a model using the `dsh` harness in `model_configs.toml`).
96
+ For autonomous DAG convergence under Antigravity, run `uv run autofab clean <target>` with a model using the `antigravity` harness.
autofab-0.2.0/PKG-INFO ADDED
@@ -0,0 +1,340 @@
1
+ Metadata-Version: 2.5
2
+ Name: autofab
3
+ Version: 0.2.0
4
+ Summary: Literate, specification-driven software engineering framework for autonomous AI pair-programming
5
+ Author-email: Sean McDirmid <mcdirmid@outlook.com>
6
+ License: Apache-2.0
7
+ Requires-Python: >=3.11
8
+ Requires-Dist: coverage>=7.0.0
9
+ Requires-Dist: hypothesis>=6.100.0
10
+ Requires-Dist: openai>=1.0.0
11
+ Requires-Dist: pydantic>=2.5.0
12
+ Requires-Dist: pyright>=1.1.350
13
+ Requires-Dist: pytest-cov>=5.0.0
14
+ Requires-Dist: pytest-timeout>=2.3.0
15
+ Requires-Dist: pytest>=8.0.0
16
+ Requires-Dist: python-dotenv>=1.0.0
17
+ Requires-Dist: tqdm>=4.66.0
18
+ Requires-Dist: typing-extensions>=4.8.0
19
+ Description-Content-Type: text/markdown
20
+
21
+ # Autofab CLI Reference & Invocation Guide
22
+
23
+ Autofab (formerly Cleanroom) is a literate, specification-driven software engineering framework for autonomous AI pair programming, double-blind verification, and deterministic DAG convergence.
24
+
25
+ All workspace lifecycle, inspection, submission, and execution operations in the canonical repository are invoked via **`uv run autofab`** (or `./bin/autofab` as a convenience wrapper, with `cleanroom` preserved as a backwards-compatible alias).
26
+
27
+ ---
28
+
29
+ ## 1. Quick Start
30
+
31
+ ### Autonomous Loop Execution (`--loop`)
32
+ To execute in-process autonomous DAG cleaning using an LLM without setting up external subagent processes, pass `--loop`:
33
+
34
+ ```bash
35
+ # Clean an entire package scope across all roles in topological order
36
+ uv run cleanroom orchestrate staging --loop
37
+
38
+ # Clean a package scope up to a specific role boundary (e.g., up to planning or lib)
39
+ uv run cleanroom orchestrate staging#planning --loop
40
+ uv run cleanroom orchestrate staging#lib --loop
41
+
42
+ # Clean a specific component target node or implementation file
43
+ uv run cleanroom orchestrate //staging/parts/agent:agent_config#lib --loop
44
+ uv run cleanroom staging/parts/agent/lib/agent_config.py --loop
45
+
46
+ # Equivalent shorthand syntax for cleaning a target or scope
47
+ uv run cleanroom clean staging
48
+ uv run cleanroom clean staging#lib
49
+ uv run cleanroom clean //staging/parts/agent:agent_config#lib
50
+
51
+ # Specify a custom model configuration label or model name
52
+ uv run cleanroom orchestrate staging --loop --model default
53
+ ```
54
+
55
+ ### Multi-Agent Subagent Orchestration
56
+ To orchestrate multi-agent DAG convergence across isolated, double-blind role workspaces:
57
+
58
+ ```bash
59
+ # Antigravity interactive pair-programming pre-flight (prints DAG state & directives)
60
+ uv run cleanroom orchestrate staging
61
+
62
+ # Orchestrate up to a specific role boundary
63
+ uv run cleanroom orchestrate staging#qa
64
+
65
+ # Headless multi-agent execution via DeepSeek Harness (DSH)
66
+ uv run cleanroom orchestrate staging --harness dsh
67
+
68
+ # Headless simulation run (useful for verification and test assertions)
69
+ uv run cleanroom orchestrate staging --harness simulation
70
+ ```
71
+
72
+ ---
73
+
74
+ ## 2. Command Reference
75
+
76
+ ### `orchestrate`
77
+ Orchestrates multi-agent convergence across topological waves until the DAG evaluates clean.
78
+
79
+ ```bash
80
+ uv run cleanroom orchestrate <scope_or_target> [options]
81
+ ```
82
+
83
+ Examples:
84
+ ```bash
85
+ # Orchestrate full scope
86
+ uv run cleanroom orchestrate staging
87
+
88
+ # Orchestrate up to and including role boundary (e.g. qa)
89
+ uv run cleanroom orchestrate staging#qa
90
+ ```
91
+
92
+ **Options:**
93
+ - `--loop`: Run autonomous in-process loop execution rather than an external subagent harness.
94
+ - `--harness <name>`: Subagent execution platform (`antigravity`, `dsh`, `simulation`, `loop`). Default: `antigravity`.
95
+ - `--model <name>`: Model profile or configuration name (e.g. `default`, `deepseek-v41-flash`, `gemini-3.8-flash`).
96
+ - `--max-waves <n>`: Maximum execution waves before stopping (default: `50`).
97
+ - `--batch-size <n>`: Maximum targets dispatched per role wave.
98
+ - `--timeout <seconds>`: Subprocess execution timeout in seconds.
99
+ - `--headless`: Run in headless mode without interactive prompting (used in automated CI environments; `--harness dsh` and `--loop` run headlessly by default).
100
+
101
+ ---
102
+
103
+ ### `work-queue` (alias: `queue`)
104
+ Inspects the dependency DAG and prints ready vs. blocked tasks for a scope or role.
105
+
106
+ ```bash
107
+ # Inspect all ready and blocked nodes across a scope
108
+ uv run cleanroom work-queue staging
109
+
110
+ # Inspect work queue for a specific role boundary
111
+ uv run cleanroom work-queue staging#lib
112
+ uv run cleanroom work-queue staging#qa
113
+
114
+ # Output JSON structured task metadata (used by agent coordinators)
115
+ uv run cleanroom work-queue staging --json
116
+ ```
117
+
118
+ ---
119
+
120
+ ### `mark-clean`
121
+ Marks target nodes or entire directory scopes clean in metadata and DAG storage without invoking the generative LLM loop.
122
+
123
+ ```bash
124
+ # Mark all nodes in a scope clean
125
+ uv run cleanroom mark-clean staging
126
+
127
+ # Mark a specific role within a scope clean
128
+ uv run cleanroom mark-clean staging/parts/agent/lib
129
+
130
+ # Mark a specific target or file clean
131
+ uv run cleanroom mark-clean staging/parts/agent/lib/agent_config.py
132
+ uv run cleanroom mark-clean //staging/parts/agent:agent_config#lib
133
+ ```
134
+
135
+ ---
136
+
137
+ ### `dirty`
138
+ Marks target nodes or directory scopes dirty in DAG storage, recording an optional diagnostic reason.
139
+
140
+ ```bash
141
+ # Mark a scope dirty with default reason
142
+ uv run cleanroom dirty staging
143
+
144
+ # Mark a specific target dirty with an actionable reason
145
+ uv run cleanroom dirty staging/parts/agent/lib/agent_config.py "Type signature mismatch with low spec"
146
+ uv run cleanroom dirty //staging/parts/agent:agent_config#lib -m "Unit test regression"
147
+ ```
148
+
149
+ ---
150
+
151
+ ### `submit`
152
+ Verifies and submits changes for a file to the canonical repository with in-band metadata updates (`LAST_CLEANED`, `LAST_CHANGED`, and `CODE_HASH`).
153
+
154
+ ```bash
155
+ # Submit an updated implementation with verification checks
156
+ uv run cleanroom submit staging/parts/agent/lib/agent_config.py "Implement timeout property"
157
+
158
+ # Bypass verification checks during rapid authoring
159
+ uv run cleanroom submit --no-verify staging/parts/agent/high/agent_config.md "Author HLS"
160
+ ```
161
+
162
+ ---
163
+
164
+ ### `feedback` (alias: `blame`)
165
+ Attributes an actionable defect critique or feedback to an upstream culprit contract, specification file, or DAG target node, triggering upstream invalidation and recording diagnostic feedback.
166
+
167
+ Supports both positional critique syntax and `-m / --message` flags:
168
+
169
+ ```bash
170
+ # Deliver blame feedback to an upstream contract or specification file (in-band metadata mutation)
171
+ uv run cleanroom feedback staging/parts/agent/low/agent_config.pyi "Contract missing parameter 'timeout'"
172
+ uv run cleanroom feedback staging/parts/agent/low/agent_config.pyi -m "Contract missing parameter 'timeout'"
173
+
174
+ # Deliver feedback to a target node in the DAG
175
+ uv run cleanroom feedback //staging/parts/agent:agent_config#low "Contract missing parameter 'timeout'"
176
+ uv run cleanroom feedback //staging/parts/agent:agent_config#low -m "Contract missing parameter 'timeout'"
177
+
178
+ # 'blame' is supported as a direct alias
179
+ uv run cleanroom blame staging/parts/agent/low/agent_config.pyi "Contract missing parameter 'timeout'"
180
+ ```
181
+
182
+ ---
183
+
184
+ ### `fail`
185
+ Records a verification failure for a target, forcing it into a dirty state with captured diagnostic failure logs.
186
+
187
+ ```bash
188
+ uv run cleanroom fail staging/parts/agent/lib/agent_config.py "Abstract method resolution error in pytest"
189
+ ```
190
+
191
+ ---
192
+
193
+ ### `check_files` (alias: `check-files`)
194
+ Runs role-specific deterministic verification checks (HLS prose linter, Planning epistemic linter, Low Pyright type checks, or unit test runners).
195
+
196
+ ```bash
197
+ # Run verification checks on a specific target
198
+ uv run cleanroom check_files staging/parts/agent/lib/agent_config.py
199
+
200
+ # Run checks across pending work in the active scope
201
+ uv run cleanroom check_files
202
+ ```
203
+
204
+ ---
205
+
206
+ ### `coverage`
207
+ Evaluates statement test coverage between an implementation and its double-blind test suite.
208
+
209
+ ```bash
210
+ # Assert 100% test coverage on a module
211
+ uv run cleanroom coverage --impl staging/parts/agent/lib/agent_config.py --test staging/parts/agent/tests/agent_config_test.py -t 100.0
212
+
213
+ # Output coverage metrics in JSON
214
+ uv run cleanroom coverage staging/parts/agent:agent_config --json
215
+ ```
216
+
217
+ ---
218
+
219
+ ### `change` & `prompt`
220
+ ```bash
221
+ # Record an explicit manual change description on a target
222
+ uv run cleanroom change staging/parts/agent/lib/agent_config.py "Refactored timeout helper"
223
+
224
+ # Print the task prompt and contract instructions for a target
225
+ uv run cleanroom prompt //staging/parts/agent:agent_config#lib
226
+ ```
227
+
228
+ ---
229
+
230
+ ### `commission` & `decommission`
231
+ Manages isolated, double-blind role workspaces (`role_workspaces/<scope>_<role>/`).
232
+
233
+ `commission` provisions and initializes role workspaces—binding model configurations, configuring harness-specific agent instructions (`AGENTS.md` and overlay patches), copying system files, and deploying role guides and tool wrappers—**without executing the subagent or running any LLM loop**:
234
+
235
+ ```bash
236
+ # Initialize all declared role workspaces for a scope bound to a specific model profile without executing
237
+ uv run cleanroom commission --all staging --model deepseek-v41-flash
238
+
239
+ # Initialize role workspaces tailored for DeepSeek Harness (DSH)
240
+ uv run cleanroom commission --all staging --harness dsh --model deepseek-v41-flash
241
+
242
+ # Initialize a single role workspace bound to a specific model and harness
243
+ uv run cleanroom commission staging#lib --harness antigravity --model deepseek-v41-flash
244
+ uv run cleanroom commission staging#qa --harness dsh --model deepseek-v41-flash
245
+
246
+ # Reset an existing role workspace back to a clean state
247
+ uv run cleanroom commission staging#lib --reset
248
+
249
+ # Decommission and delete provisioned workspaces for a scope (or up to a role)
250
+ uv run cleanroom decommission staging
251
+ uv run cleanroom decommission staging#lib
252
+ ```
253
+
254
+ ---
255
+
256
+ ### `refresh-sys`
257
+ Synchronizes system tools, linters, methodology configs (`cleanroom_roles.toml`), and guides from canonical roots to provisioned role workspaces.
258
+
259
+ ```bash
260
+ uv run cleanroom refresh-sys
261
+ ```
262
+
263
+ ---
264
+
265
+ ### `install-plugin`
266
+ Installs or refreshes the Cleanroom Antigravity extension, subagent role definitions, and coordinator tools into `~/.gemini/antigravity`.
267
+
268
+ ```bash
269
+ uv run cleanroom install-plugin
270
+ ```
271
+
272
+ ---
273
+
274
+ ## 3. Target Addressing Syntax
275
+
276
+ Cleanroom targets can be addressed using multiple canonical notations:
277
+
278
+ | Format | Example | Description |
279
+ | :--- | :--- | :--- |
280
+ | **Fully Qualified Target** | `//staging/parts/agent:agent_config#lib` | Exact unit and role address |
281
+ | **File Path** | `staging/parts/agent/lib/agent_config.py` | Automatically resolved to target address |
282
+ | **Role Partition** | `staging/parts/agent/lib` or `staging#lib` | All units under the `lib` role |
283
+ | **Part Directory** | `staging/parts/agent` | All roles and units under `agent` part |
284
+ | **Scope Directory** | `staging` | Entire directory scope across all parts & roles |
285
+
286
+ ---
287
+
288
+ ## 4. Test Suite Execution
289
+
290
+ To run repository verification checks, static type checks, and pytest suites cleanly:
291
+
292
+ ```bash
293
+ bin/test
294
+ ```
295
+
296
+ ---
297
+
298
+ ## 5. Model Configuration Schema (`model_configs.toml`)
299
+
300
+ Cleanroom resolves model definitions, capability tiers, and financial rate cards from:
301
+ 1. Explicit CLI flag: `--model-config <path>` or `CLEANROOM_MODEL_CONFIG_FILE` environment override
302
+ 2. Local repository candidate: `./model_configs.toml`
303
+ 3. Canonical user configuration: `~/.config/cleanroom/model_configs.toml`
304
+ 4. Canonical starter template: [`update_python_with_ai/templates/model_configs.toml`](update_python_with_ai/templates/model_configs.toml)
305
+
306
+ Run `uv run cleanroom configure` to scaffold `~/.config/cleanroom/model_configs.toml` and credentials templates.
307
+
308
+ ### TOML Schema Reference
309
+
310
+ ```toml
311
+ # Top-Level Harness Defaults
312
+ default = "qwen-moe-q6" # Default model profile name
313
+ loop_default = "qwen-moe-q6" # Default for autonomous loop harness
314
+ antigravity_default = "gemini-4-argon" # Default for Antigravity harness
315
+ dsh_default = "deepseek-v41-flash" # Default for DeepSeek Harness (DSH)
316
+ max_unproductive_rounds = 5 # Global circuit-breaker round limit
317
+
318
+ # Model Profiles: [models.<profile-name>]
319
+ # IMPORTANT: Model keys containing dots must be quoted in TOML, e.g. [models."gemini-3.8-flash"]
320
+
321
+ [models.deepseek-v41-flash]
322
+ model = "deepseek-flash" # Model identifier sent to provider API
323
+ provider = "deepseek" # Protocol adapter ("deepseek", "google", "openai", "anthropic", "mlx", "omlx")
324
+ tier = 2 # Capability tier (1=Local, 2=Budget, 3=Mid-Tier, 4=Frontier)
325
+ tier_label = "Budget API" # Descriptive capability label
326
+ rate_uncached_in = 0.15 # USD per 1,000,000 uncached input tokens
327
+ rate_cached_in = 0.003 # USD per 1,000,000 cached input tokens (prompt cache hit)
328
+ rate_out = 0.60 # USD per 1,000,000 output tokens (including reasoning tokens)
329
+ default_harness = "dsh" # Recommended runtime harness ("dsh", "antigravity", "loop")
330
+ base_url = "https://api.deepseek.com/v1" # HTTP base endpoint
331
+ api_key_env = "DEEPSEEK_API_KEY" # Environment variable holding the API key
332
+ max_tokens = 8192 # Max completion tokens per request
333
+ subagent_batch_size = 10 # Maximum concurrent role subagent dispatches
334
+ conversation_max_tokens = 256000 # Context window compaction threshold in tokens
335
+ max_feedback_chars = 4000 # Max feedback buffer length preserved across rounds
336
+ max_unproductive_rounds = 5 # Profile-level circuit breaker
337
+ temperature = 0.7 # Generation temperature
338
+ timeout_seconds = 120.0 # Request/process timeout in seconds
339
+ ```
340
+