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.
- autofab-0.2.0/.gitignore +34 -0
- autofab-0.2.0/.python-version +1 -0
- autofab-0.2.0/.vscode/settings.json +33 -0
- autofab-0.2.0/AGENTS.md +96 -0
- autofab-0.2.0/PKG-INFO +340 -0
- autofab-0.2.0/README.md +320 -0
- autofab-0.2.0/autofab/README.md +5 -0
- autofab-0.2.0/autofab/autofab_roles.toml +257 -0
- autofab-0.2.0/autofab/guides/low_to_lib.md +89 -0
- autofab-0.2.0/autofab/guides/meta_guide.md +146 -0
- autofab-0.2.0/autofab/parts/__init__.py +3 -0
- autofab-0.2.0/autofab/parts/agent/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/agent/description.md +31 -0
- autofab-0.2.0/autofab/parts/agent/high/agent_config.md +34 -0
- autofab-0.2.0/autofab/parts/agent/high/file_alias.md +34 -0
- autofab-0.2.0/autofab/parts/agent/high/node_config.md +36 -0
- autofab-0.2.0/autofab/parts/agent/high/node_storage.md +32 -0
- autofab-0.2.0/autofab/parts/agent/high/session.md +22 -0
- autofab-0.2.0/autofab/parts/agent/lib/__init__.py +3 -0
- autofab-0.2.0/autofab/parts/agent/lib/agent_config.py +46 -0
- autofab-0.2.0/autofab/parts/agent/lib/file_alias.py +70 -0
- autofab-0.2.0/autofab/parts/agent/lib/node_config.py +174 -0
- autofab-0.2.0/autofab/parts/agent/lib/node_storage.py +33 -0
- autofab-0.2.0/autofab/parts/agent/lib/session.py +17 -0
- autofab-0.2.0/autofab/parts/agent/low/agent_config.pyi +50 -0
- autofab-0.2.0/autofab/parts/agent/low/file_alias.pyi +123 -0
- autofab-0.2.0/autofab/parts/agent/low/node_config.pyi +230 -0
- autofab-0.2.0/autofab/parts/agent/low/node_storage.pyi +79 -0
- autofab-0.2.0/autofab/parts/agent/low/session.pyi +30 -0
- autofab-0.2.0/autofab/parts/agent/planning/agent_config.md +44 -0
- autofab-0.2.0/autofab/parts/agent/planning/file_alias.md +56 -0
- autofab-0.2.0/autofab/parts/agent/planning/node_config.md +64 -0
- autofab-0.2.0/autofab/parts/agent/planning/node_storage.md +47 -0
- autofab-0.2.0/autofab/parts/agent/planning/session.md +46 -0
- autofab-0.2.0/autofab/parts/agent/pretense/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/agent/pretense/agent_config_pretense.py +207 -0
- autofab-0.2.0/autofab/parts/agent/pretense/file_alias_pretense.py +245 -0
- autofab-0.2.0/autofab/parts/agent/pretense/node_config_pretense.py +362 -0
- autofab-0.2.0/autofab/parts/agent/pretense/node_storage_pretense.py +196 -0
- autofab-0.2.0/autofab/parts/agent/scenarios/agent_config.md +126 -0
- autofab-0.2.0/autofab/parts/agent/scenarios/file_alias.md +90 -0
- autofab-0.2.0/autofab/parts/agent/scenarios/node_config.md +137 -0
- autofab-0.2.0/autofab/parts/agent/scenarios/node_storage.md +117 -0
- autofab-0.2.0/autofab/parts/agent/scenarios/session.md +73 -0
- autofab-0.2.0/autofab/parts/agent/tests/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/antigravity/description.md +23 -0
- autofab-0.2.0/autofab/parts/antigravity/high/antigravity_asm.md +26 -0
- autofab-0.2.0/autofab/parts/antigravity/high/antigravity_coordinator.md +40 -0
- autofab-0.2.0/autofab/parts/antigravity/high/antigravity_coordinator_impl.md +45 -0
- autofab-0.2.0/autofab/parts/antigravity/high/antigravity_ext.md +29 -0
- autofab-0.2.0/autofab/parts/antigravity/high/antigravity_harness.md +42 -0
- autofab-0.2.0/autofab/parts/antigravity/high/antigravity_harness_impl.md +39 -0
- autofab-0.2.0/autofab/parts/antigravity/high/antigravity_workspace.md +34 -0
- autofab-0.2.0/autofab/parts/antigravity/lib/__init__.py +5 -0
- autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_asm.py +29 -0
- autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_coordinator.py +103 -0
- autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_coordinator_impl.py +301 -0
- autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_harness.py +104 -0
- autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_harness_impl.py +384 -0
- autofab-0.2.0/autofab/parts/antigravity/lib/antigravity_workspace.py +48 -0
- autofab-0.2.0/autofab/parts/antigravity/low/antigravity_asm.pyi +18 -0
- autofab-0.2.0/autofab/parts/antigravity/low/antigravity_coordinator.pyi +117 -0
- autofab-0.2.0/autofab/parts/antigravity/low/antigravity_coordinator_impl.pyi +107 -0
- autofab-0.2.0/autofab/parts/antigravity/low/antigravity_ext.pyi +74 -0
- autofab-0.2.0/autofab/parts/antigravity/low/antigravity_harness.pyi +141 -0
- autofab-0.2.0/autofab/parts/antigravity/low/antigravity_harness_impl.pyi +156 -0
- autofab-0.2.0/autofab/parts/antigravity/low/antigravity_workspace.pyi +54 -0
- autofab-0.2.0/autofab/parts/antigravity/planning/antigravity_coordinator.md +48 -0
- autofab-0.2.0/autofab/parts/antigravity/planning/antigravity_coordinator_impl.md +55 -0
- autofab-0.2.0/autofab/parts/antigravity/planning/antigravity_harness.md +55 -0
- autofab-0.2.0/autofab/parts/antigravity/planning/antigravity_harness_impl.md +55 -0
- autofab-0.2.0/autofab/parts/antigravity/planning/antigravity_workspace.md +42 -0
- autofab-0.2.0/autofab/parts/antigravity/pretense/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/antigravity/pretense/antigravity_coordinator_impl_pretense.py +295 -0
- autofab-0.2.0/autofab/parts/antigravity/pretense/antigravity_harness_impl_pretense.py +162 -0
- autofab-0.2.0/autofab/parts/antigravity/scenarios/antigravity_coordinator.md +35 -0
- autofab-0.2.0/autofab/parts/antigravity/scenarios/antigravity_coordinator_impl.md +39 -0
- autofab-0.2.0/autofab/parts/antigravity/scenarios/antigravity_harness.md +49 -0
- autofab-0.2.0/autofab/parts/antigravity/scenarios/antigravity_harness_impl.md +55 -0
- autofab-0.2.0/autofab/parts/antigravity/scenarios/antigravity_workspace.md +28 -0
- autofab-0.2.0/autofab/parts/antigravity/tests/antigravity_asm_test.py +49 -0
- autofab-0.2.0/autofab/parts/antigravity/tests/antigravity_coordinator_impl_test.py +164 -0
- autofab-0.2.0/autofab/parts/antigravity/tests/antigravity_harness_impl_test.py +210 -0
- autofab-0.2.0/autofab/parts/autofab.toml +4 -0
- autofab-0.2.0/autofab/parts/benchmark/BUILD.bazel +10 -0
- autofab-0.2.0/autofab/parts/benchmark/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/benchmark/description.md +23 -0
- autofab-0.2.0/autofab/parts/benchmark/high/benchmark.md +32 -0
- autofab-0.2.0/autofab/parts/benchmark/high/benchmark_impl.md +47 -0
- autofab-0.2.0/autofab/parts/benchmark/lib/benchmark.py +164 -0
- autofab-0.2.0/autofab/parts/benchmark/lib/benchmark_impl.py +2391 -0
- autofab-0.2.0/autofab/parts/benchmark/low/benchmark.pyi +224 -0
- autofab-0.2.0/autofab/parts/benchmark/low/benchmark_impl.pyi +236 -0
- autofab-0.2.0/autofab/parts/benchmark/planning/benchmark.md +53 -0
- autofab-0.2.0/autofab/parts/benchmark/planning/benchmark_impl.md +65 -0
- autofab-0.2.0/autofab/parts/benchmark/pretense/benchmark_impl_pretense.py +165 -0
- autofab-0.2.0/autofab/parts/benchmark/scenarios/benchmark.md +97 -0
- autofab-0.2.0/autofab/parts/benchmark/scenarios/benchmark_impl.md +127 -0
- autofab-0.2.0/autofab/parts/benchmark/tests/benchmark_impl_test.py +1395 -0
- autofab-0.2.0/autofab/parts/control/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/control/description.md +29 -0
- autofab-0.2.0/autofab/parts/control/high/attribution.md +34 -0
- autofab-0.2.0/autofab/parts/control/high/attribution_impl.md +59 -0
- autofab-0.2.0/autofab/parts/control/high/control_asm.md +24 -0
- autofab-0.2.0/autofab/parts/control/high/coordinate.md +36 -0
- autofab-0.2.0/autofab/parts/control/high/coordinate_impl.md +47 -0
- autofab-0.2.0/autofab/parts/control/high/submit.md +42 -0
- autofab-0.2.0/autofab/parts/control/high/submit_impl.md +51 -0
- autofab-0.2.0/autofab/parts/control/high/verification.md +32 -0
- autofab-0.2.0/autofab/parts/control/high/verification_impl.md +37 -0
- autofab-0.2.0/autofab/parts/control/high/work_scheduler.md +36 -0
- autofab-0.2.0/autofab/parts/control/high/work_scheduler_impl.md +41 -0
- autofab-0.2.0/autofab/parts/control/lib/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/control/lib/attribution.py +74 -0
- autofab-0.2.0/autofab/parts/control/lib/attribution_impl.py +625 -0
- autofab-0.2.0/autofab/parts/control/lib/control_asm.py +35 -0
- autofab-0.2.0/autofab/parts/control/lib/coordinate.py +109 -0
- autofab-0.2.0/autofab/parts/control/lib/coordinate_impl.py +701 -0
- autofab-0.2.0/autofab/parts/control/lib/submit.py +62 -0
- autofab-0.2.0/autofab/parts/control/lib/submit_impl.py +714 -0
- autofab-0.2.0/autofab/parts/control/lib/verification.py +39 -0
- autofab-0.2.0/autofab/parts/control/lib/verification_impl.py +219 -0
- autofab-0.2.0/autofab/parts/control/lib/work_scheduler.py +58 -0
- autofab-0.2.0/autofab/parts/control/lib/work_scheduler_impl.py +557 -0
- autofab-0.2.0/autofab/parts/control/low/attribution.pyi +127 -0
- autofab-0.2.0/autofab/parts/control/low/attribution_impl.pyi +159 -0
- autofab-0.2.0/autofab/parts/control/low/control_asm.pyi +21 -0
- autofab-0.2.0/autofab/parts/control/low/coordinate.pyi +152 -0
- autofab-0.2.0/autofab/parts/control/low/coordinate_impl.pyi +226 -0
- autofab-0.2.0/autofab/parts/control/low/submit.pyi +97 -0
- autofab-0.2.0/autofab/parts/control/low/submit_impl.pyi +117 -0
- autofab-0.2.0/autofab/parts/control/low/verification.pyi +70 -0
- autofab-0.2.0/autofab/parts/control/low/verification_impl.pyi +65 -0
- autofab-0.2.0/autofab/parts/control/low/work_scheduler.pyi +91 -0
- autofab-0.2.0/autofab/parts/control/low/work_scheduler_impl.pyi +75 -0
- autofab-0.2.0/autofab/parts/control/planning/attribution.md +62 -0
- autofab-0.2.0/autofab/parts/control/planning/attribution_impl.md +62 -0
- autofab-0.2.0/autofab/parts/control/planning/coordinate.md +62 -0
- autofab-0.2.0/autofab/parts/control/planning/coordinate_impl.md +71 -0
- autofab-0.2.0/autofab/parts/control/planning/submit.md +62 -0
- autofab-0.2.0/autofab/parts/control/planning/submit_impl.md +64 -0
- autofab-0.2.0/autofab/parts/control/planning/verification.md +53 -0
- autofab-0.2.0/autofab/parts/control/planning/verification_impl.md +54 -0
- autofab-0.2.0/autofab/parts/control/planning/work_scheduler.md +55 -0
- autofab-0.2.0/autofab/parts/control/planning/work_scheduler_impl.md +57 -0
- autofab-0.2.0/autofab/parts/control/pretense/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/control/pretense/attribution_impl_pretense.py +644 -0
- autofab-0.2.0/autofab/parts/control/pretense/coordinate_impl_pretense.py +628 -0
- autofab-0.2.0/autofab/parts/control/pretense/submit_impl_pretense.py +461 -0
- autofab-0.2.0/autofab/parts/control/pretense/verification_impl_pretense.py +363 -0
- autofab-0.2.0/autofab/parts/control/pretense/work_scheduler_impl_pretense.py +440 -0
- autofab-0.2.0/autofab/parts/control/scenarios/attribution.md +122 -0
- autofab-0.2.0/autofab/parts/control/scenarios/attribution_impl.md +248 -0
- autofab-0.2.0/autofab/parts/control/scenarios/coordinate.md +136 -0
- autofab-0.2.0/autofab/parts/control/scenarios/coordinate_impl.md +266 -0
- autofab-0.2.0/autofab/parts/control/scenarios/submit.md +165 -0
- autofab-0.2.0/autofab/parts/control/scenarios/submit_impl.md +304 -0
- autofab-0.2.0/autofab/parts/control/scenarios/verification.md +66 -0
- autofab-0.2.0/autofab/parts/control/scenarios/verification_impl.md +159 -0
- autofab-0.2.0/autofab/parts/control/scenarios/work_scheduler.md +105 -0
- autofab-0.2.0/autofab/parts/control/scenarios/work_scheduler_impl.md +241 -0
- autofab-0.2.0/autofab/parts/control/tests/attribution_impl_test.py +265 -0
- autofab-0.2.0/autofab/parts/control/tests/coordinate_impl_test.py +333 -0
- autofab-0.2.0/autofab/parts/control/tests/submit_impl_test.py +284 -0
- autofab-0.2.0/autofab/parts/control/tests/verification_impl_test.py +112 -0
- autofab-0.2.0/autofab/parts/control/tests/work_scheduler_impl_test.py +190 -0
- autofab-0.2.0/autofab/parts/core/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/core/description.md +33 -0
- autofab-0.2.0/autofab/parts/core/high/app_info_ext.md +31 -0
- autofab-0.2.0/autofab/parts/core/high/autofab_files_ext.md +37 -0
- autofab-0.2.0/autofab/parts/core/high/commonmark_ext.md +29 -0
- autofab-0.2.0/autofab/parts/core/high/file_paths.md +32 -0
- autofab-0.2.0/autofab/parts/core/high/file_paths_impl.md +27 -0
- autofab-0.2.0/autofab/parts/core/high/filesystem_ext.md +27 -0
- autofab-0.2.0/autofab/parts/core/high/json_ext.md +31 -0
- autofab-0.2.0/autofab/parts/core/high/topological_order_ext.md +33 -0
- autofab-0.2.0/autofab/parts/core/lib/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/core/lib/file_paths.py +163 -0
- autofab-0.2.0/autofab/parts/core/lib/file_paths_impl.py +89 -0
- autofab-0.2.0/autofab/parts/core/low/app_info_ext.pyi +71 -0
- autofab-0.2.0/autofab/parts/core/low/autofab_files_ext.pyi +106 -0
- autofab-0.2.0/autofab/parts/core/low/commonmark_ext.pyi +51 -0
- autofab-0.2.0/autofab/parts/core/low/file_paths.pyi +159 -0
- autofab-0.2.0/autofab/parts/core/low/file_paths_impl.pyi +87 -0
- autofab-0.2.0/autofab/parts/core/low/filesystem_ext.pyi +119 -0
- autofab-0.2.0/autofab/parts/core/low/json_ext.pyi +144 -0
- autofab-0.2.0/autofab/parts/core/low/topological_order_ext.pyi +51 -0
- autofab-0.2.0/autofab/parts/core/planning/file_paths.md +64 -0
- autofab-0.2.0/autofab/parts/core/planning/file_paths_impl.md +55 -0
- autofab-0.2.0/autofab/parts/core/pretense/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/core/pretense/file_paths_impl_pretense.py +269 -0
- autofab-0.2.0/autofab/parts/core/scenarios/file_paths.md +71 -0
- autofab-0.2.0/autofab/parts/core/scenarios/file_paths_impl.md +170 -0
- autofab-0.2.0/autofab/parts/core/tests/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/core/tests/file_paths_impl_test.py +94 -0
- autofab-0.2.0/autofab/parts/dag/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/dag/description.md +29 -0
- autofab-0.2.0/autofab/parts/dag/high/dag_asm.md +24 -0
- autofab-0.2.0/autofab/parts/dag/high/dag_config.md +24 -0
- autofab-0.2.0/autofab/parts/dag/high/dag_storage.md +44 -0
- autofab-0.2.0/autofab/parts/dag/high/subgraph.md +30 -0
- autofab-0.2.0/autofab/parts/dag/high/subgraph_impl.md +31 -0
- autofab-0.2.0/autofab/parts/dag/lib/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/dag/lib/dag_asm.py +25 -0
- autofab-0.2.0/autofab/parts/dag/lib/dag_config.py +32 -0
- autofab-0.2.0/autofab/parts/dag/lib/dag_storage.py +236 -0
- autofab-0.2.0/autofab/parts/dag/lib/subgraph.py +72 -0
- autofab-0.2.0/autofab/parts/dag/lib/subgraph_impl.py +225 -0
- autofab-0.2.0/autofab/parts/dag/low/dag_asm.pyi +18 -0
- autofab-0.2.0/autofab/parts/dag/low/dag_config.pyi +34 -0
- autofab-0.2.0/autofab/parts/dag/low/dag_storage.pyi +228 -0
- autofab-0.2.0/autofab/parts/dag/low/subgraph.pyi +74 -0
- autofab-0.2.0/autofab/parts/dag/low/subgraph_impl.pyi +106 -0
- autofab-0.2.0/autofab/parts/dag/planning/dag_config.md +43 -0
- autofab-0.2.0/autofab/parts/dag/planning/dag_storage.md +89 -0
- autofab-0.2.0/autofab/parts/dag/planning/subgraph.md +63 -0
- autofab-0.2.0/autofab/parts/dag/planning/subgraph_impl.md +61 -0
- autofab-0.2.0/autofab/parts/dag/pretense/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/dag/pretense/dag_config_pretense.py +65 -0
- autofab-0.2.0/autofab/parts/dag/pretense/dag_storage_pretense.py +123 -0
- autofab-0.2.0/autofab/parts/dag/pretense/subgraph_impl_pretense.py +450 -0
- autofab-0.2.0/autofab/parts/dag/scenarios/dag_config.md +46 -0
- autofab-0.2.0/autofab/parts/dag/scenarios/dag_storage.md +176 -0
- autofab-0.2.0/autofab/parts/dag/scenarios/subgraph.md +156 -0
- autofab-0.2.0/autofab/parts/dag/scenarios/subgraph_impl.md +290 -0
- autofab-0.2.0/autofab/parts/dag/tests/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/dag/tests/subgraph_impl_test.py +403 -0
- autofab-0.2.0/autofab/parts/dsh/description.md +24 -0
- autofab-0.2.0/autofab/parts/dsh/high/dsh_asm.md +26 -0
- autofab-0.2.0/autofab/parts/dsh/high/dsh_ext.md +33 -0
- autofab-0.2.0/autofab/parts/dsh/high/dsh_harness.md +42 -0
- autofab-0.2.0/autofab/parts/dsh/high/dsh_harness_impl.md +47 -0
- autofab-0.2.0/autofab/parts/dsh/high/dsh_telemetry.md +42 -0
- autofab-0.2.0/autofab/parts/dsh/high/dsh_telemetry_impl.md +43 -0
- autofab-0.2.0/autofab/parts/dsh/high/dsh_workspace.md +38 -0
- autofab-0.2.0/autofab/parts/dsh/high/dsh_workspace_impl.md +37 -0
- autofab-0.2.0/autofab/parts/dsh/lib/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/dsh/lib/dsh_asm.py +32 -0
- autofab-0.2.0/autofab/parts/dsh/lib/dsh_harness.py +72 -0
- autofab-0.2.0/autofab/parts/dsh/lib/dsh_harness_impl.py +776 -0
- autofab-0.2.0/autofab/parts/dsh/lib/dsh_telemetry.py +131 -0
- autofab-0.2.0/autofab/parts/dsh/lib/dsh_telemetry_impl.py +924 -0
- autofab-0.2.0/autofab/parts/dsh/lib/dsh_workspace.py +48 -0
- autofab-0.2.0/autofab/parts/dsh/lib/dsh_workspace_impl.py +398 -0
- autofab-0.2.0/autofab/parts/dsh/low/dsh_asm.pyi +19 -0
- autofab-0.2.0/autofab/parts/dsh/low/dsh_ext.pyi +86 -0
- autofab-0.2.0/autofab/parts/dsh/low/dsh_harness.pyi +103 -0
- autofab-0.2.0/autofab/parts/dsh/low/dsh_harness_impl.pyi +148 -0
- autofab-0.2.0/autofab/parts/dsh/low/dsh_telemetry.pyi +171 -0
- autofab-0.2.0/autofab/parts/dsh/low/dsh_telemetry_impl.pyi +151 -0
- autofab-0.2.0/autofab/parts/dsh/low/dsh_workspace.pyi +56 -0
- autofab-0.2.0/autofab/parts/dsh/low/dsh_workspace_impl.pyi +44 -0
- autofab-0.2.0/autofab/parts/dsh/planning/dsh_harness.md +53 -0
- autofab-0.2.0/autofab/parts/dsh/planning/dsh_harness_impl.md +59 -0
- autofab-0.2.0/autofab/parts/dsh/planning/dsh_telemetry.md +48 -0
- autofab-0.2.0/autofab/parts/dsh/planning/dsh_telemetry_impl.md +49 -0
- autofab-0.2.0/autofab/parts/dsh/planning/dsh_workspace.md +45 -0
- autofab-0.2.0/autofab/parts/dsh/planning/dsh_workspace_impl.md +46 -0
- autofab-0.2.0/autofab/parts/dsh/pretense/dsh_harness_impl_pretense.py +318 -0
- autofab-0.2.0/autofab/parts/dsh/pretense/dsh_telemetry_impl_pretense.py +233 -0
- autofab-0.2.0/autofab/parts/dsh/pretense/dsh_workspace_impl_pretense.py +194 -0
- autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_harness.md +56 -0
- autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_harness_impl.md +71 -0
- autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_telemetry.md +51 -0
- autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_telemetry_impl.md +62 -0
- autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_workspace.md +38 -0
- autofab-0.2.0/autofab/parts/dsh/scenarios/dsh_workspace_impl.md +43 -0
- autofab-0.2.0/autofab/parts/dsh/tests/dsh_asm_test.py +38 -0
- autofab-0.2.0/autofab/parts/dsh/tests/dsh_harness_impl_test.py +869 -0
- autofab-0.2.0/autofab/parts/dsh/tests/dsh_telemetry_impl_test.py +364 -0
- autofab-0.2.0/autofab/parts/dsh/tests/dsh_workspace_impl_test.py +207 -0
- autofab-0.2.0/autofab/parts/metadata/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/metadata/description.md +36 -0
- autofab-0.2.0/autofab/parts/metadata/high/metadata_asm.md +24 -0
- autofab-0.2.0/autofab/parts/metadata/high/src_metadata.md +34 -0
- autofab-0.2.0/autofab/parts/metadata/high/src_metadata_ext.md +29 -0
- autofab-0.2.0/autofab/parts/metadata/high/src_metadata_impl.md +37 -0
- autofab-0.2.0/autofab/parts/metadata/high/src_storage_impl.md +67 -0
- autofab-0.2.0/autofab/parts/metadata/lib/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/metadata/lib/metadata_asm.py +29 -0
- autofab-0.2.0/autofab/parts/metadata/lib/src_metadata.py +611 -0
- autofab-0.2.0/autofab/parts/metadata/lib/src_metadata_impl.py +388 -0
- autofab-0.2.0/autofab/parts/metadata/lib/src_storage_impl.py +769 -0
- autofab-0.2.0/autofab/parts/metadata/low/metadata_asm.pyi +18 -0
- autofab-0.2.0/autofab/parts/metadata/low/src_metadata.pyi +304 -0
- autofab-0.2.0/autofab/parts/metadata/low/src_metadata_ext.pyi +76 -0
- autofab-0.2.0/autofab/parts/metadata/low/src_metadata_impl.pyi +265 -0
- autofab-0.2.0/autofab/parts/metadata/low/src_storage_impl.pyi +449 -0
- autofab-0.2.0/autofab/parts/metadata/planning/src_metadata.md +66 -0
- autofab-0.2.0/autofab/parts/metadata/planning/src_metadata_impl.md +56 -0
- autofab-0.2.0/autofab/parts/metadata/planning/src_storage_impl.md +100 -0
- autofab-0.2.0/autofab/parts/metadata/pretense/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/metadata/pretense/src_metadata_impl_pretense.py +850 -0
- autofab-0.2.0/autofab/parts/metadata/pretense/src_storage_impl_pretense.py +909 -0
- autofab-0.2.0/autofab/parts/metadata/scenarios/src_metadata.md +160 -0
- autofab-0.2.0/autofab/parts/metadata/scenarios/src_metadata_impl.md +252 -0
- autofab-0.2.0/autofab/parts/metadata/scenarios/src_storage_impl.md +581 -0
- autofab-0.2.0/autofab/parts/metadata/tests/src_metadata_impl_test.py +234 -0
- autofab-0.2.0/autofab/parts/metadata/tests/src_storage_impl_test.py +725 -0
- autofab-0.2.0/autofab/parts/subagent/description.md +33 -0
- autofab-0.2.0/autofab/parts/subagent/high/subagent_asm.md +26 -0
- autofab-0.2.0/autofab/parts/subagent/high/subagent_coordinator.md +68 -0
- autofab-0.2.0/autofab/parts/subagent/high/subagent_coordinator_impl.md +57 -0
- autofab-0.2.0/autofab/parts/subagent/high/subagent_harness.md +40 -0
- autofab-0.2.0/autofab/parts/subagent/high/subagent_harness_impl.md +39 -0
- autofab-0.2.0/autofab/parts/subagent/high/subagent_tool.md +28 -0
- autofab-0.2.0/autofab/parts/subagent/high/subagent_tool_impl.md +29 -0
- autofab-0.2.0/autofab/parts/subagent/lib/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/subagent/lib/subagent_asm.py +31 -0
- autofab-0.2.0/autofab/parts/subagent/lib/subagent_coordinator.py +205 -0
- autofab-0.2.0/autofab/parts/subagent/lib/subagent_coordinator_impl.py +747 -0
- autofab-0.2.0/autofab/parts/subagent/lib/subagent_harness.py +95 -0
- autofab-0.2.0/autofab/parts/subagent/lib/subagent_harness_impl.py +422 -0
- autofab-0.2.0/autofab/parts/subagent/lib/subagent_tool.py +42 -0
- autofab-0.2.0/autofab/parts/subagent/lib/subagent_tool_impl.py +254 -0
- autofab-0.2.0/autofab/parts/subagent/low/subagent_asm.pyi +19 -0
- autofab-0.2.0/autofab/parts/subagent/low/subagent_coordinator.pyi +256 -0
- autofab-0.2.0/autofab/parts/subagent/low/subagent_coordinator_impl.pyi +139 -0
- autofab-0.2.0/autofab/parts/subagent/low/subagent_harness.pyi +141 -0
- autofab-0.2.0/autofab/parts/subagent/low/subagent_harness_impl.pyi +136 -0
- autofab-0.2.0/autofab/parts/subagent/low/subagent_tool.pyi +54 -0
- autofab-0.2.0/autofab/parts/subagent/low/subagent_tool_impl.pyi +73 -0
- autofab-0.2.0/autofab/parts/subagent/planning/subagent_coordinator.md +61 -0
- autofab-0.2.0/autofab/parts/subagent/planning/subagent_coordinator_impl.md +65 -0
- autofab-0.2.0/autofab/parts/subagent/planning/subagent_harness.md +56 -0
- autofab-0.2.0/autofab/parts/subagent/planning/subagent_harness_impl.md +56 -0
- autofab-0.2.0/autofab/parts/subagent/planning/subagent_tool.md +38 -0
- autofab-0.2.0/autofab/parts/subagent/planning/subagent_tool_impl.md +40 -0
- autofab-0.2.0/autofab/parts/subagent/pretense/subagent_coordinator_impl_pretense.py +318 -0
- autofab-0.2.0/autofab/parts/subagent/pretense/subagent_harness_impl_pretense.py +172 -0
- autofab-0.2.0/autofab/parts/subagent/pretense/subagent_tool_impl_pretense.py +191 -0
- autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_coordinator.md +91 -0
- autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_coordinator_impl.md +135 -0
- autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_harness.md +63 -0
- autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_harness_impl.md +71 -0
- autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_tool.md +42 -0
- autofab-0.2.0/autofab/parts/subagent/scenarios/subagent_tool_impl.md +40 -0
- autofab-0.2.0/autofab/parts/subagent/tests/subagent_asm_test.py +43 -0
- autofab-0.2.0/autofab/parts/subagent/tests/subagent_coordinator_impl_test.py +1215 -0
- autofab-0.2.0/autofab/parts/subagent/tests/subagent_harness_impl_test.py +258 -0
- autofab-0.2.0/autofab/parts/subagent/tests/subagent_tool_impl_test.py +222 -0
- autofab-0.2.0/autofab/parts/systems/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/systems/description.md +23 -0
- autofab-0.2.0/autofab/parts/systems/high/autofab_asm.md +26 -0
- autofab-0.2.0/autofab/parts/systems/lib/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/systems/lib/autofab_asm.py +35 -0
- autofab-0.2.0/autofab/parts/systems/low/autofab_asm.pyi +23 -0
- autofab-0.2.0/autofab/parts/systems/tests/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/uv/description.md +25 -0
- autofab-0.2.0/autofab/parts/uv/high/manifest_ext.md +27 -0
- autofab-0.2.0/autofab/parts/uv/high/manifest_loader.md +34 -0
- autofab-0.2.0/autofab/parts/uv/high/manifest_loader_impl.md +53 -0
- autofab-0.2.0/autofab/parts/uv/high/model_config_ext.md +27 -0
- autofab-0.2.0/autofab/parts/uv/high/model_config_impl.md +32 -0
- autofab-0.2.0/autofab/parts/uv/high/node_config_impl.md +59 -0
- autofab-0.2.0/autofab/parts/uv/high/target.md +24 -0
- autofab-0.2.0/autofab/parts/uv/high/target_impl.md +27 -0
- autofab-0.2.0/autofab/parts/uv/high/target_labels_ext.md +27 -0
- autofab-0.2.0/autofab/parts/uv/high/uv_asm.md +26 -0
- autofab-0.2.0/autofab/parts/uv/lib/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/uv/lib/manifest_loader.py +43 -0
- autofab-0.2.0/autofab/parts/uv/lib/manifest_loader_impl.py +581 -0
- autofab-0.2.0/autofab/parts/uv/lib/model_config_impl.py +280 -0
- autofab-0.2.0/autofab/parts/uv/lib/node_config_impl.py +538 -0
- autofab-0.2.0/autofab/parts/uv/lib/target.py +29 -0
- autofab-0.2.0/autofab/parts/uv/lib/target_impl.py +157 -0
- autofab-0.2.0/autofab/parts/uv/lib/uv_asm.py +31 -0
- autofab-0.2.0/autofab/parts/uv/low/manifest_ext.pyi +64 -0
- autofab-0.2.0/autofab/parts/uv/low/manifest_loader.pyi +92 -0
- autofab-0.2.0/autofab/parts/uv/low/manifest_loader_impl.pyi +83 -0
- autofab-0.2.0/autofab/parts/uv/low/model_config_ext.pyi +68 -0
- autofab-0.2.0/autofab/parts/uv/low/model_config_impl.pyi +113 -0
- autofab-0.2.0/autofab/parts/uv/low/node_config_impl.pyi +333 -0
- autofab-0.2.0/autofab/parts/uv/low/target.pyi +57 -0
- autofab-0.2.0/autofab/parts/uv/low/target_impl.pyi +62 -0
- autofab-0.2.0/autofab/parts/uv/low/target_labels_ext.pyi +62 -0
- autofab-0.2.0/autofab/parts/uv/low/uv_asm.pyi +20 -0
- autofab-0.2.0/autofab/parts/uv/planning/manifest_loader.md +69 -0
- autofab-0.2.0/autofab/parts/uv/planning/manifest_loader_impl.md +58 -0
- autofab-0.2.0/autofab/parts/uv/planning/model_config_impl.md +54 -0
- autofab-0.2.0/autofab/parts/uv/planning/node_config_impl.md +92 -0
- autofab-0.2.0/autofab/parts/uv/planning/target.md +45 -0
- autofab-0.2.0/autofab/parts/uv/planning/target_impl.md +47 -0
- autofab-0.2.0/autofab/parts/uv/pretense/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/uv/pretense/manifest_loader_impl_pretense.py +191 -0
- autofab-0.2.0/autofab/parts/uv/pretense/model_config_impl_pretense.py +178 -0
- autofab-0.2.0/autofab/parts/uv/pretense/node_config_impl_pretense.py +171 -0
- autofab-0.2.0/autofab/parts/uv/pretense/target_impl_pretense.py +187 -0
- autofab-0.2.0/autofab/parts/uv/scenarios/manifest_loader.md +76 -0
- autofab-0.2.0/autofab/parts/uv/scenarios/manifest_loader_impl.md +333 -0
- autofab-0.2.0/autofab/parts/uv/scenarios/model_config_impl.md +290 -0
- autofab-0.2.0/autofab/parts/uv/scenarios/node_config_impl.md +648 -0
- autofab-0.2.0/autofab/parts/uv/scenarios/target.md +72 -0
- autofab-0.2.0/autofab/parts/uv/scenarios/target_impl.md +469 -0
- autofab-0.2.0/autofab/parts/uv/tests/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/uv/tests/manifest_loader_impl_test.py +440 -0
- autofab-0.2.0/autofab/parts/uv/tests/model_config_impl_test.py +368 -0
- autofab-0.2.0/autofab/parts/uv/tests/node_config_impl_test.py +340 -0
- autofab-0.2.0/autofab/parts/uv/tests/target_impl_test.py +134 -0
- autofab-0.2.0/autofab/parts/workspace/description.md +31 -0
- autofab-0.2.0/autofab/parts/workspace/high/provision.md +38 -0
- autofab-0.2.0/autofab/parts/workspace/high/provision_impl.md +62 -0
- autofab-0.2.0/autofab/parts/workspace/high/role_registry.md +34 -0
- autofab-0.2.0/autofab/parts/workspace/high/role_registry_impl.md +31 -0
- autofab-0.2.0/autofab/parts/workspace/high/roles.md +30 -0
- autofab-0.2.0/autofab/parts/workspace/high/roles_impl.md +33 -0
- autofab-0.2.0/autofab/parts/workspace/high/scaffold.md +36 -0
- autofab-0.2.0/autofab/parts/workspace/high/scaffold_impl.md +45 -0
- autofab-0.2.0/autofab/parts/workspace/high/stub.md +34 -0
- autofab-0.2.0/autofab/parts/workspace/high/stub_impl.md +35 -0
- autofab-0.2.0/autofab/parts/workspace/high/sync.md +38 -0
- autofab-0.2.0/autofab/parts/workspace/high/sync_impl.md +47 -0
- autofab-0.2.0/autofab/parts/workspace/high/workspace_asm.md +26 -0
- autofab-0.2.0/autofab/parts/workspace/lib/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/workspace/lib/provision.py +68 -0
- autofab-0.2.0/autofab/parts/workspace/lib/provision_impl.py +594 -0
- autofab-0.2.0/autofab/parts/workspace/lib/role_registry.py +98 -0
- autofab-0.2.0/autofab/parts/workspace/lib/role_registry_impl.py +324 -0
- autofab-0.2.0/autofab/parts/workspace/lib/roles.py +97 -0
- autofab-0.2.0/autofab/parts/workspace/lib/roles_impl.py +825 -0
- autofab-0.2.0/autofab/parts/workspace/lib/scaffold.py +67 -0
- autofab-0.2.0/autofab/parts/workspace/lib/scaffold_impl.py +947 -0
- autofab-0.2.0/autofab/parts/workspace/lib/stub.py +59 -0
- autofab-0.2.0/autofab/parts/workspace/lib/stub_impl.py +575 -0
- autofab-0.2.0/autofab/parts/workspace/lib/sync.py +71 -0
- autofab-0.2.0/autofab/parts/workspace/lib/sync_impl.py +723 -0
- autofab-0.2.0/autofab/parts/workspace/lib/workspace_asm.py +37 -0
- autofab-0.2.0/autofab/parts/workspace/low/provision.pyi +133 -0
- autofab-0.2.0/autofab/parts/workspace/low/provision_impl.pyi +184 -0
- autofab-0.2.0/autofab/parts/workspace/low/role_registry.pyi +134 -0
- autofab-0.2.0/autofab/parts/workspace/low/role_registry_impl.pyi +166 -0
- autofab-0.2.0/autofab/parts/workspace/low/roles.pyi +119 -0
- autofab-0.2.0/autofab/parts/workspace/low/roles_impl.pyi +70 -0
- autofab-0.2.0/autofab/parts/workspace/low/scaffold.pyi +109 -0
- autofab-0.2.0/autofab/parts/workspace/low/scaffold_impl.pyi +132 -0
- autofab-0.2.0/autofab/parts/workspace/low/stub.pyi +69 -0
- autofab-0.2.0/autofab/parts/workspace/low/stub_impl.pyi +88 -0
- autofab-0.2.0/autofab/parts/workspace/low/sync.pyi +119 -0
- autofab-0.2.0/autofab/parts/workspace/low/sync_impl.pyi +138 -0
- autofab-0.2.0/autofab/parts/workspace/low/workspace_asm.pyi +23 -0
- autofab-0.2.0/autofab/parts/workspace/planning/provision.md +53 -0
- autofab-0.2.0/autofab/parts/workspace/planning/provision_impl.md +60 -0
- autofab-0.2.0/autofab/parts/workspace/planning/role_registry.md +52 -0
- autofab-0.2.0/autofab/parts/workspace/planning/role_registry_impl.md +53 -0
- autofab-0.2.0/autofab/parts/workspace/planning/roles.md +45 -0
- autofab-0.2.0/autofab/parts/workspace/planning/roles_impl.md +44 -0
- autofab-0.2.0/autofab/parts/workspace/planning/scaffold.md +47 -0
- autofab-0.2.0/autofab/parts/workspace/planning/scaffold_impl.md +48 -0
- autofab-0.2.0/autofab/parts/workspace/planning/stub.md +43 -0
- autofab-0.2.0/autofab/parts/workspace/planning/stub_impl.md +47 -0
- autofab-0.2.0/autofab/parts/workspace/planning/sync.md +52 -0
- autofab-0.2.0/autofab/parts/workspace/planning/sync_impl.md +55 -0
- autofab-0.2.0/autofab/parts/workspace/pretense/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/workspace/pretense/provision_impl_pretense.py +313 -0
- autofab-0.2.0/autofab/parts/workspace/pretense/role_registry_impl_pretense.py +509 -0
- autofab-0.2.0/autofab/parts/workspace/pretense/roles_impl_pretense.py +490 -0
- autofab-0.2.0/autofab/parts/workspace/pretense/scaffold_impl_pretense.py +330 -0
- autofab-0.2.0/autofab/parts/workspace/pretense/stub_impl_pretense.py +271 -0
- autofab-0.2.0/autofab/parts/workspace/pretense/sync_impl_pretense.py +494 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/provision.md +97 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/provision_impl.md +177 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/role_registry.md +171 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/role_registry_impl.md +252 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/roles.md +31 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/roles_impl.md +31 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/scaffold.md +50 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/scaffold_impl.md +61 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/stub.md +28 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/stub_impl.md +24 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/sync.md +107 -0
- autofab-0.2.0/autofab/parts/workspace/scenarios/sync_impl.md +181 -0
- autofab-0.2.0/autofab/parts/workspace/tests/provision_impl_test.py +735 -0
- autofab-0.2.0/autofab/parts/workspace/tests/role_registry_impl_test.py +334 -0
- autofab-0.2.0/autofab/parts/workspace/tests/roles_impl_test.py +145 -0
- autofab-0.2.0/autofab/parts/workspace/tests/scaffold_impl_test.py +414 -0
- autofab-0.2.0/autofab/parts/workspace/tests/stub_impl_test.py +208 -0
- autofab-0.2.0/autofab/parts/workspace/tests/sync_impl_test.py +1004 -0
- autofab-0.2.0/autofab/parts/workspace_cli/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/workspace_cli/description.md +33 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/check.md +30 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/check_impl.md +31 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/cli_tool.md +38 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/cli_tool_impl.md +31 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/commands.md +42 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/commands_impl.md +41 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/coverage.md +30 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/coverage_impl.md +34 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/dirtiness.md +36 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/dirtiness_impl.md +37 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/pending.md +36 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/pending_impl.md +37 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/work.md +50 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/work_impl.md +63 -0
- autofab-0.2.0/autofab/parts/workspace_cli/high/workspace_cli_asm.md +24 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/__init__.py +0 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/check.py +46 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/check_impl.py +1068 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/cli_tool.py +129 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/cli_tool_impl.py +454 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/commands.py +110 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/commands_impl.py +647 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/coverage.py +96 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/coverage_impl.py +464 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/dirtiness.py +61 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/dirtiness_impl.py +635 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/pending.py +36 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/pending_impl.py +305 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/work.py +108 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/work_impl.py +642 -0
- autofab-0.2.0/autofab/parts/workspace_cli/lib/workspace_cli_asm.py +37 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/check.pyi +72 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/check_impl.pyi +99 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/cli_tool.pyi +137 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/cli_tool_impl.pyi +176 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/commands.pyi +138 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/commands_impl.pyi +197 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/coverage.pyi +166 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/coverage_impl.pyi +188 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/dirtiness.pyi +93 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/dirtiness_impl.pyi +90 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/pending.pyi +76 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/pending_impl.pyi +95 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/work.pyi +202 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/work_impl.pyi +217 -0
- autofab-0.2.0/autofab/parts/workspace_cli/low/workspace_cli_asm.pyi +24 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/check.md +40 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/check_impl.md +50 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/cli_tool.md +49 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/cli_tool_impl.md +45 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/commands.md +49 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/commands_impl.md +67 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/coverage.md +55 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/coverage_impl.md +60 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/dirtiness.md +45 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/dirtiness_impl.md +51 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/pending.md +47 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/pending_impl.md +54 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/work.md +62 -0
- autofab-0.2.0/autofab/parts/workspace_cli/planning/work_impl.md +76 -0
- autofab-0.2.0/autofab/parts/workspace_cli/pretense/__init__.py +1 -0
- autofab-0.2.0/autofab/parts/workspace_cli/pretense/check_impl_pretense.py +202 -0
- autofab-0.2.0/autofab/parts/workspace_cli/pretense/cli_tool_impl_pretense.py +225 -0
- autofab-0.2.0/autofab/parts/workspace_cli/pretense/commands_impl_pretense.py +297 -0
- autofab-0.2.0/autofab/parts/workspace_cli/pretense/coverage_impl_pretense.py +281 -0
- autofab-0.2.0/autofab/parts/workspace_cli/pretense/dirtiness_impl_pretense.py +301 -0
- autofab-0.2.0/autofab/parts/workspace_cli/pretense/pending_impl_pretense.py +246 -0
- autofab-0.2.0/autofab/parts/workspace_cli/pretense/work_impl_pretense.py +308 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/check.md +21 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/check_impl.md +70 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/cli_tool.md +113 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/cli_tool_impl.md +228 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/commands.md +67 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/commands_impl.md +53 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/coverage.md +97 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/coverage_impl.md +163 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/dirtiness.md +41 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/dirtiness_impl.md +38 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/pending.md +37 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/pending_impl.md +41 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/work.md +81 -0
- autofab-0.2.0/autofab/parts/workspace_cli/scenarios/work_impl.md +220 -0
- autofab-0.2.0/autofab/parts/workspace_cli/tests/check_impl_test.py +665 -0
- autofab-0.2.0/autofab/parts/workspace_cli/tests/cli_tool_impl_test.py +306 -0
- autofab-0.2.0/autofab/parts/workspace_cli/tests/commands_impl_test.py +609 -0
- autofab-0.2.0/autofab/parts/workspace_cli/tests/coverage_impl_test.py +190 -0
- autofab-0.2.0/autofab/parts/workspace_cli/tests/dirtiness_impl_test.py +281 -0
- autofab-0.2.0/autofab/parts/workspace_cli/tests/pending_impl_test.py +192 -0
- autofab-0.2.0/autofab/parts/workspace_cli/tests/work_impl_test.py +962 -0
- autofab-0.2.0/autofab/support/__init__.py +5 -0
- autofab-0.2.0/autofab/support/lib/__init__.py +5 -0
- autofab-0.2.0/autofab/support/lib/app_info.py +129 -0
- autofab-0.2.0/autofab/support/lib/autofab_role_tool.py +3342 -0
- autofab-0.2.0/autofab/support/lib/build_lint_common.py +5247 -0
- autofab-0.2.0/autofab/support/lib/lib_lint.py +1244 -0
- autofab-0.2.0/autofab/support/lib/pretense_lint.py +1228 -0
- autofab-0.2.0/autofab/support/lib/test_lint.py +729 -0
- autofab-0.2.0/autofab/support/tests/__init__.py +1 -0
- autofab-0.2.0/autofab/support/tests/app_info_test.py +73 -0
- autofab-0.2.0/autofab/support/tests/autofab_role_tool_test.py +1186 -0
- autofab-0.2.0/autofab/support/tests/build_lint_common_test.py +472 -0
- autofab-0.2.0/autofab/support/tests/src_metadata_test.py +571 -0
- autofab-0.2.0/autofab/tests/example/bar.txt +9 -0
- autofab-0.2.0/autofab/tests/example/foo.txt +5 -0
- autofab-0.2.0/autofab_python/README.md +18 -0
- autofab-0.2.0/autofab_python/autofab_roles.toml +257 -0
- autofab-0.2.0/autofab_python/guides/coverage.md +45 -0
- autofab-0.2.0/autofab_python/guides/high_level_spec.md +148 -0
- autofab-0.2.0/autofab_python/guides/high_to_planning.md +105 -0
- autofab-0.2.0/autofab_python/guides/high_to_scenario.md +98 -0
- autofab-0.2.0/autofab_python/guides/low_to_lib.md +89 -0
- autofab-0.2.0/autofab_python/guides/low_to_test.md +92 -0
- autofab-0.2.0/autofab_python/guides/planning_to_low.md +123 -0
- autofab-0.2.0/autofab_python/guides/pretense.md +111 -0
- autofab-0.2.0/autofab_python/guides/pretense_coverage.md +39 -0
- autofab-0.2.0/autofab_python/guides/pretense_qa.md +43 -0
- autofab-0.2.0/autofab_python/guides/qa.md +118 -0
- autofab-0.2.0/autofab_python/guides/spec_qa.md +101 -0
- autofab-0.2.0/autofab_python/guides/uncontracted_bash.md +90 -0
- autofab-0.2.0/autofab_python/pyproject.toml +24 -0
- autofab-0.2.0/autofab_python/pyright_spec.json +5 -0
- autofab-0.2.0/autofab_python/support/__init__.py +5 -0
- autofab-0.2.0/autofab_python/support/lib/__init__.py +5 -0
- autofab-0.2.0/autofab_python/support/lib/app_info.py +129 -0
- autofab-0.2.0/autofab_python/support/lib/build_lint_common.py +5247 -0
- autofab-0.2.0/autofab_python/support/lib/framework.py +135 -0
- autofab-0.2.0/autofab_python/support/lib/framework.pyi +144 -0
- autofab-0.2.0/autofab_python/support/lib/high_lint.py +408 -0
- autofab-0.2.0/autofab_python/support/lib/lib_lint.py +1244 -0
- autofab-0.2.0/autofab_python/support/lib/lifecycle.py +759 -0
- autofab-0.2.0/autofab_python/support/lib/lifecycle.pyi +399 -0
- autofab-0.2.0/autofab_python/support/lib/low_lint.py +775 -0
- autofab-0.2.0/autofab_python/support/lib/pretense_lint.py +1228 -0
- autofab-0.2.0/autofab_python/support/lib/spec_lint.py +732 -0
- autofab-0.2.0/autofab_python/support/lib/test_lint.py +729 -0
- autofab-0.2.0/autofab_python/support/tests/app_info_test.py +84 -0
- autofab-0.2.0/autofab_python/support/tests/autofab_role_tool_test.py +1186 -0
- autofab-0.2.0/autofab_python/support/tests/build_lint_common_test.py +472 -0
- autofab-0.2.0/autofab_python/support/tests/high_lint_test.sh +169 -0
- autofab-0.2.0/autofab_python/support/tests/import_boundaries_lint_test.py +149 -0
- autofab-0.2.0/autofab_python/support/tests/lib_lint_test.sh +1436 -0
- autofab-0.2.0/autofab_python/support/tests/lifecycle_test.py +707 -0
- autofab-0.2.0/autofab_python/support/tests/linter_gates_test.py +38 -0
- autofab-0.2.0/autofab_python/support/tests/low_lint_test.sh +263 -0
- autofab-0.2.0/autofab_python/support/tests/pretense_lint_test.py +474 -0
- autofab-0.2.0/autofab_python/support/tests/test_lint_test.sh +1100 -0
- autofab-0.2.0/autofab_python/templates/empty_template.txt +0 -0
- autofab-0.2.0/autofab_python/templates/hls_template.md +37 -0
- autofab-0.2.0/autofab_python/templates/lib_template.py +10 -0
- autofab-0.2.0/autofab_python/templates/low_template.pyi +6 -0
- autofab-0.2.0/autofab_python/templates/model_configs.toml +250 -0
- autofab-0.2.0/autofab_python/templates/planning_template.md +37 -0
- autofab-0.2.0/autofab_python/templates/pretense_template.py +168 -0
- autofab-0.2.0/autofab_python/templates/scenario_template.md +22 -0
- autofab-0.2.0/autofab_python/templates/test_template.py +10 -0
- autofab-0.2.0/benchmarks/README.md +43 -0
- autofab-0.2.0/benchmarks/__init__.py +1 -0
- autofab-0.2.0/benchmarks/parts/autofab.toml +4 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/__init__.py +1 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/description.md +9 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/high/dag_engine.md +72 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/high/dag_engine_impl.md +44 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/lib/dag_engine.py +190 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/lib/dag_engine_impl.py +142 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/low/dag_engine.pyi +525 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/low/dag_engine_impl.pyi +333 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/planning/dag_engine.md +78 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/planning/dag_engine_impl.md +66 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/scenarios/dag_engine.md +62 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/scenarios/dag_engine_impl.md +84 -0
- autofab-0.2.0/benchmarks/parts/dag_engine/tests/dag_engine_impl_test.py +502 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/__init__.py +1 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/description.md +9 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/high/dag_engine_lite.md +66 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/high/dag_engine_lite_impl.md +44 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/lib/dag_engine_lite.py +173 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/lib/dag_engine_lite_impl.py +138 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/low/dag_engine_lite.pyi +496 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/low/dag_engine_lite_impl.pyi +320 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/planning/dag_engine_lite.md +86 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/planning/dag_engine_lite_impl.md +71 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/scenarios/dag_engine_lite.md +85 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/scenarios/dag_engine_lite_impl.md +104 -0
- autofab-0.2.0/benchmarks/parts/dag_engine_lite/tests/dag_engine_lite_impl_test.py +32 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/__init__.py +1 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/description.md +10 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/high/backtracking_solver_ext.md +32 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/high/semver_solver.md +66 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/high/semver_solver_impl.md +51 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/low/backtracking_solver_ext.pyi +132 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/low/semver_solver.pyi +352 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/low/semver_solver_impl.pyi +188 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/planning/semver_solver.md +82 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/planning/semver_solver_impl.md +65 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/scenarios/semver_solver.md +94 -0
- autofab-0.2.0/benchmarks/parts/semver_solver/scenarios/semver_solver_impl.md +115 -0
- autofab-0.2.0/benchmarks/results/dag_engine/Qwen3.6-35B-A3B-oQ6-mtp+dsh/cleanroom_2.log +61 -0
- autofab-0.2.0/benchmarks/results/dag_engine/Qwen3.6-35B-A3B-oQ6-mtp+dsh/lib_1.py +1136 -0
- autofab-0.2.0/benchmarks/results/dag_engine/Qwen3.6-35B-A3B-oQ6-mtp+dsh/lib_2.py +1268 -0
- autofab-0.2.0/benchmarks/results/dag_engine/Qwen3.6-35B-A3B-oQ6-mtp+dsh/test_1.py +1170 -0
- autofab-0.2.0/benchmarks/results/dag_engine/Qwen3.6-35B-A3B-oQ6-mtp+dsh/test_2.py +914 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/cleanroom_2.log +12 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/cleanroom_3.log +13 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/cleanroom_4.log +23 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/lib_1.py +1310 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/lib_2.py +1270 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/lib_3.py +1413 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/lib_4.py +1446 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/test_1.py +951 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/test_2.py +797 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/test_3.py +681 -0
- autofab-0.2.0/benchmarks/results/dag_engine/deepseek-flash+dsh/test_4.py +996 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/cleanroom_2.log +20 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/cleanroom_3.log +17 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/cleanroom_4.log +31 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/lib_1.py +1090 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/lib_2.py +984 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/lib_3.py +904 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/lib_4.py +951 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/test_1.py +856 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/test_2.py +657 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/test_3.py +769 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-3.8-flash+antigravity/test_4.py +905 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity/cleanroom_1.log +15 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity/lib_1.py +1095 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity/test_1.py +754 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity-baseline/cleanroom_1.log +439 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity-baseline/lib_1.py +1313 -0
- autofab-0.2.0/benchmarks/results/dag_engine/gemini-4-argon+antigravity-baseline/test_1.py +488 -0
- autofab-0.2.0/benchmarks/results/dag_engine/qwen-flash-next-288-q4+dsh/lib_1.py +1225 -0
- autofab-0.2.0/benchmarks/results/dag_engine/qwen-flash-next-288-q4+dsh/test_1.py +1072 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense/cleanroom_1.log +19 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense/lib_1.py +1204 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense/pretense_1.py +1843 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense-baseline/cleanroom_1.log +525 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense-baseline/lib_1.py +1063 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/deepseek-flash+dsh-pretense-baseline/pretense_1.py +1480 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense/cleanroom_1.log +26 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense/lib_1.py +801 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense/pretense_1.py +1033 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense-baseline/cleanroom_1.log +525 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense-baseline/lib_1.py +734 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/gemini-3.8-flash+antigravity-pretense-baseline/pretense_1.py +799 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense/cleanroom_1.log +74 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense/lib_1.py +1203 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense/pretense_1.py +1160 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense-baseline/cleanroom_1.log +6 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense-baseline/lib_1.py +912 -0
- autofab-0.2.0/benchmarks/results/dag_engine_lite/qwen-moe+dsh-pretense-baseline/pretense_1.py +855 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/cleanroom_1.log +35 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/cleanroom_2.log +19 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/cleanroom_3.log +19 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/lib_1.py +1045 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/lib_2.py +1116 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/lib_3.py +998 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/pretense_1.py +1824 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/pretense_2.py +1733 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense/pretense_3.py +2064 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/cleanroom_1.log +521 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/cleanroom_2.log +525 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/cleanroom_3.log +525 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/lib_1.py +749 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/lib_2.py +926 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/lib_3.py +879 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/pretense_1.py +880 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/pretense_2.py +1182 -0
- autofab-0.2.0/benchmarks/results/semver_solver/deepseek-flash+dsh-pretense-baseline/pretense_3.py +1381 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/cleanroom_1.log +22 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/cleanroom_2.log +15 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/cleanroom_3.log +17 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/lib_1.py +796 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/lib_2.py +769 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/lib_3.py +765 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/pretense_1.py +1624 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/pretense_2.py +1262 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense/pretense_3.py +1497 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/cleanroom_1.log +33 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/cleanroom_2.log +525 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/cleanroom_3.log +533 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/lib_1.py +625 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/lib_2.py +898 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/lib_3.py +631 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/pretense_1.py +573 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/pretense_2.py +1055 -0
- autofab-0.2.0/benchmarks/results/semver_solver/gemini-3.8-flash+antigravity-pretense-baseline/pretense_3.py +964 -0
- autofab-0.2.0/benchmarks/results/semver_solver/qwen-moe+dsh-pretense-baseline/cleanroom_1.log +533 -0
- autofab-0.2.0/benchmarks/results/semver_solver/qwen-moe+dsh-pretense-baseline/lib_1.py +840 -0
- autofab-0.2.0/benchmarks/results/semver_solver/qwen-moe+dsh-pretense-baseline/pretense_1.py +1170 -0
- autofab-0.2.0/bin/autofab +10 -0
- autofab-0.2.0/bin/autofab-loop +1 -0
- autofab-0.2.0/bin/autofab_loop +3 -0
- autofab-0.2.0/bin/clean +3 -0
- autofab-0.2.0/bin/cleanroom +1 -0
- autofab-0.2.0/bin/cleanroom-loop +1 -0
- autofab-0.2.0/bin/cleanroom_loop +1 -0
- autofab-0.2.0/bin/evaluate_model_efficiency.py +29 -0
- autofab-0.2.0/bin/format_workspace.sh +100 -0
- autofab-0.2.0/bin/orchestrate +3 -0
- autofab-0.2.0/bin/run_cross_tests.py +780 -0
- autofab-0.2.0/bin/sync_autofab +1 -0
- autofab-0.2.0/bin/sync_autofab.sh +5 -0
- autofab-0.2.0/bin/sync_partsdir.sh +309 -0
- autofab-0.2.0/bin/sync_staging +1 -0
- autofab-0.2.0/bin/sync_staging.sh +5 -0
- autofab-0.2.0/bin/test +227 -0
- autofab-0.2.0/design-docs/README.md +172 -0
- autofab-0.2.0/design-docs/benchmark_design_doc.md +1418 -0
- autofab-0.2.0/design-docs/concrete_scenario_validation.md +257 -0
- autofab-0.2.0/design-docs/design.md +649 -0
- autofab-0.2.0/design-docs/dual_baseline.md +292 -0
- autofab-0.2.0/design-docs/grounded_specification_language_and_neural_compilation.md +613 -0
- autofab-0.2.0/design-docs/high_level_spec_format.md +340 -0
- autofab-0.2.0/design-docs/low_level_spec_format.md +176 -0
- autofab-0.2.0/design-docs/modular_subsystems_architecture.md +315 -0
- autofab-0.2.0/design-docs/paper_submission_design_doc.md +2665 -0
- autofab-0.2.0/design-docs/planning_format.md +309 -0
- autofab-0.2.0/design-docs/pretense.md +2599 -0
- autofab-0.2.0/design-docs/template_format.md +130 -0
- autofab-0.2.0/design-docs/todo.md +640 -0
- autofab-0.2.0/design-docs/toolchain_and_verification.md +270 -0
- autofab-0.2.0/pretense/README.md +33 -0
- autofab-0.2.0/pretense/__init__.py +82 -0
- autofab-0.2.0/pretense/cli.py +35 -0
- autofab-0.2.0/pretense/collections.py +206 -0
- autofab-0.2.0/pretense/compiler.py +47 -0
- autofab-0.2.0/pretense/context.py +9 -0
- autofab-0.2.0/pretense/fake.py +5 -0
- autofab-0.2.0/pretense/parts/autofab.toml +4 -0
- autofab-0.2.0/pretense/parts/pretense/__init__.py +1 -0
- autofab-0.2.0/pretense/parts/pretense/description.md +20 -0
- autofab-0.2.0/pretense/parts/pretense/high/pretense.md +23 -0
- autofab-0.2.0/pretense/parts/pretense/high/pretense_impl.md +23 -0
- autofab-0.2.0/pretense/parts/pretense/lib/pretense.py +1303 -0
- autofab-0.2.0/pretense/parts/pretense/lib/pretense_impl.py +806 -0
- autofab-0.2.0/pretense/parts/pretense/low/pretense.pyi +422 -0
- autofab-0.2.0/pretense/parts/pretense/low/pretense_impl.pyi +86 -0
- autofab-0.2.0/pretense/parts/pretense/planning/pretense.md +72 -0
- autofab-0.2.0/pretense/parts/pretense/planning/pretense_impl.md +59 -0
- autofab-0.2.0/pretense/parts/pretense/pretense/pretense_impl_pretense.py +218 -0
- autofab-0.2.0/pretense/parts/pretense/scenarios/pretense.md +76 -0
- autofab-0.2.0/pretense/parts/pretense/scenarios/pretense_impl.md +58 -0
- autofab-0.2.0/pretense/parts/pretense/tests/pretense_impl_test.py +895 -0
- autofab-0.2.0/pretense/proto.py +9 -0
- autofab-0.2.0/pretense/pyproject.toml +40 -0
- autofab-0.2.0/pretense/sentinels.py +25 -0
- autofab-0.2.0/pretense/support/tests/counterexample_synthesis_test.py +97 -0
- autofab-0.2.0/pretense/support/tests/pretense_core_test.py +244 -0
- autofab-0.2.0/pretense/synthesis.py +44 -0
- autofab-0.2.0/pretense/transition.py +11 -0
- autofab-0.2.0/pyproject.toml +96 -0
- autofab-0.2.0/requirements.txt +8 -0
- autofab-0.2.0/requirements_lock.txt +148 -0
- autofab-0.2.0/uv.lock +763 -0
autofab-0.2.0/.gitignore
ADDED
|
@@ -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
|
+
}
|
autofab-0.2.0/AGENTS.md
ADDED
|
@@ -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
|
+
|