atomadic-forge 0.16.2__tar.gz → 0.19.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 (399) hide show
  1. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/workflows/ci.yml +21 -0
  2. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/workflows/customer-refactor.yml +4 -4
  3. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/CHANGELOG.md +241 -0
  4. atomadic_forge-0.19.0/PKG-INFO +235 -0
  5. atomadic_forge-0.19.0/README.md +203 -0
  6. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/01-getting-started.md +4 -0
  7. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/02-commands.md +6 -0
  8. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/AGENTS_GUIDE.md +71 -4
  9. atomadic_forge-0.19.0/docs/IDE_INTEGRATION.md +83 -0
  10. atomadic_forge-0.19.0/docs/PROVIDERS.md +153 -0
  11. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/pyproject.toml +17 -2
  12. atomadic_forge-0.19.0/src/atomadic_forge/a0_qk_constants/config_defaults.py +61 -0
  13. atomadic_forge-0.19.0/src/atomadic_forge/a0_qk_constants/gen_language.py +192 -0
  14. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +8 -1
  15. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +17 -0
  16. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/call_graph.py +47 -4
  17. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +11 -2
  18. atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/custom_provider_client.py +259 -0
  19. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +139 -2
  20. atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/polyglot_classify.py +111 -0
  21. atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/polyglot_imports.py +208 -0
  22. atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/polyglot_surface.py +418 -0
  23. atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/provider_resolver.py +141 -0
  24. atomadic_forge-0.19.0/src/atomadic_forge/a1_at_functions/scaffold_polyglot.py +273 -0
  25. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +129 -18
  26. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/smell_scan.py +4 -1
  27. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/test_selector.py +9 -1
  28. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/wire_check.py +92 -4
  29. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_loop.py +137 -15
  30. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/verify_umbrella.py +41 -2
  31. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/welcome_feature.py +6 -3
  32. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +12 -6
  33. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +7 -1
  34. atomadic_forge-0.19.0/src/atomadic_forge/commands/config_cmd.py +322 -0
  35. atomadic_forge-0.19.0/src/atomadic_forge.egg-info/PKG-INFO +235 -0
  36. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge.egg-info/SOURCES.txt +13 -0
  37. atomadic_forge-0.19.0/tests/test_custom_provider.py +248 -0
  38. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_evolve_js.py +8 -3
  39. atomadic_forge-0.19.0/tests/test_mcp_lazy_bootstrap.py +114 -0
  40. atomadic_forge-0.19.0/tests/test_polyglot_cli_mcp.py +343 -0
  41. atomadic_forge-0.19.0/tests/test_polyglot_full_pipeline.py +477 -0
  42. atomadic_forge-0.19.0/tests/test_polyglot_hardening.py +479 -0
  43. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_polyglot_swift_kotlin_go.py +20 -10
  44. atomadic_forge-0.19.0/tests/test_polyglot_symbol_parity.py +425 -0
  45. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_whoami_cmd.py +8 -2
  46. atomadic_forge-0.16.2/PKG-INFO +0 -808
  47. atomadic_forge-0.16.2/README.md +0 -776
  48. atomadic_forge-0.16.2/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -38
  49. atomadic_forge-0.16.2/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -116
  50. atomadic_forge-0.16.2/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -50
  51. atomadic_forge-0.16.2/src/atomadic_forge/commands/config_cmd.py +0 -145
  52. atomadic_forge-0.16.2/src/atomadic_forge.egg-info/PKG-INFO +0 -808
  53. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/FUNDING.yml +0 -0
  54. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  55. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  56. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  57. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/actions/forge-action/README.md +0 -0
  58. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/actions/forge-action/action.yml +0 -0
  59. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/dependabot.yml +0 -0
  60. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/pull_request_template.md +0 -0
  61. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/workflows/forge-self-certify.yml +0 -0
  62. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/workflows/release.yml +0 -0
  63. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/.github/workflows/surface-drift.yml +0 -0
  64. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/ARCHITECTURE.md +0 -0
  65. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/CONTRIBUTING.md +0 -0
  66. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/LICENSE +0 -0
  67. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/MANIFEST.in +0 -0
  68. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/SECURITY.md +0 -0
  69. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/assets/Atomadic-Forge-01.png +0 -0
  70. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/03-tutorial.md +0 -0
  71. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/04-llm-loops.md +0 -0
  72. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/05-faq.md +0 -0
  73. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/AIR_GAPPED.md +0 -0
  74. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/CI_CD.md +0 -0
  75. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/CODEX_WALKTHROUGH.md +0 -0
  76. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/COMMANDS.md +0 -0
  77. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/FIRST_10_MINUTES.md +0 -0
  78. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/FORMALIZATION.md +0 -0
  79. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/HIVE_PRIMITIVES.md +0 -0
  80. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/HIVE_STATUS.md +0 -0
  81. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/LANDSCAPE.md +0 -0
  82. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/MARKET_POSITIONING.md +0 -0
  83. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/MIGRATION.md +0 -0
  84. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/MULTI_REPO.md +0 -0
  85. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/README.md +0 -0
  86. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/RECEIPT.md +0 -0
  87. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/RELAY_PROTOCOL.md +0 -0
  88. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/RELEASE_CHECKLIST.md +0 -0
  89. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/RELEASE_MESSAGING.md +0 -0
  90. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/ROADMAP.md +0 -0
  91. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/SHOWCASE.md +0 -0
  92. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/SIDECAR.md +0 -0
  93. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/STUDIO.md +0 -0
  94. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
  95. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/WHY_NOW.md +0 -0
  96. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
  97. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/WORLD_COLLISION.md +0 -0
  98. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/INDEX.md +0 -0
  99. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/chat.md +0 -0
  100. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/commandsmith.md +0 -0
  101. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/config.md +0 -0
  102. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/demo.md +0 -0
  103. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/emergent-then-synergy.md +0 -0
  104. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/emergent.md +0 -0
  105. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/evolve-then-iterate.md +0 -0
  106. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/evolve.md +0 -0
  107. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/feature-then-emergent.md +0 -0
  108. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/iterate.md +0 -0
  109. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/synergy-then-emergent.md +0 -0
  110. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/commands/synergy.md +0 -0
  111. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
  112. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/compliance/CS-1.md +0 -0
  113. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
  114. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
  115. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/compliance/SR_11-7_MAPPING.md +0 -0
  116. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +0 -0
  117. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/01-quickstart.md +0 -0
  118. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/02-your-first-package.md +0 -0
  119. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/03-the-five-tier-law.md +0 -0
  120. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/04-plug-in-llms.md +0 -0
  121. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/05-multi-repo-absorb.md +0 -0
  122. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/docs/tutorials/06-javascript-quickstart.md +0 -0
  123. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/setup.cfg +0 -0
  124. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/__init__.py +0 -0
  125. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/__main__.py +0 -0
  126. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
  127. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
  128. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
  129. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
  130. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
  131. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +0 -0
  132. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
  133. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
  134. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
  135. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
  136. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +0 -0
  137. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/materialize_types.py +0 -0
  138. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
  139. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
  140. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
  141. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
  142. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/response_enrichment.py +0 -0
  143. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
  144. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +0 -0
  145. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
  146. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
  147. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
  148. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
  149. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/welcome_constants.py +0 -0
  150. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
  151. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
  152. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
  153. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
  154. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
  155. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
  156. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
  157. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
  158. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
  159. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
  160. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
  161. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
  162. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
  163. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
  164. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
  165. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
  166. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
  167. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
  168. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
  169. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
  170. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
  171. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
  172. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
  173. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +0 -0
  174. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
  175. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
  176. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
  177. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
  178. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
  179. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
  180. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
  181. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/handoff_builder.py +0 -0
  182. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
  183. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/hive_io.py +0 -0
  184. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
  185. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
  186. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
  187. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
  188. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/lifetime_savings.py +0 -0
  189. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
  190. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
  191. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
  192. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
  193. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
  194. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
  195. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
  196. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
  197. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
  198. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
  199. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
  200. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
  201. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
  202. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
  203. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
  204. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
  205. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/response_enricher.py +0 -0
  206. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
  207. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
  208. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
  209. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
  210. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
  211. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
  212. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
  213. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
  214. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
  215. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
  216. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
  217. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
  218. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
  219. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
  220. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
  221. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
  222. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
  223. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
  224. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/welcome_narrator.py +0 -0
  225. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +0 -0
  226. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/wisdom_io.py +0 -0
  227. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +0 -0
  228. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -0
  229. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
  230. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
  231. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
  232. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
  233. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
  234. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
  235. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
  236. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
  237. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
  238. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
  239. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/nexus_client.py +0 -0
  240. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
  241. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
  242. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
  243. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
  244. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
  245. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
  246. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
  247. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
  248. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/create_feature.py +0 -0
  249. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
  250. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
  251. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
  252. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
  253. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
  254. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
  255. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
  256. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
  257. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
  258. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/emergent_swarm.py +0 -0
  259. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +0 -0
  260. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
  261. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
  262. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
  263. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
  264. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
  265. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
  266. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
  267. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
  268. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/hive_sync.py +0 -0
  269. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
  270. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/materialize_feature.py +0 -0
  271. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/mcp_server.py +0 -0
  272. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -0
  273. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
  274. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
  275. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
  276. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
  277. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
  278. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -0
  279. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
  280. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
  281. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
  282. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/__init__.py +0 -0
  283. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/_registry.py +0 -0
  284. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/audit.py +0 -0
  285. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/chat.py +0 -0
  286. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/commandsmith.py +0 -0
  287. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/create.py +0 -0
  288. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/demo.py +0 -0
  289. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/emergent.py +0 -0
  290. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/emergent_swarm.py +0 -0
  291. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
  292. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/enhancement.py +0 -0
  293. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/evolve.py +0 -0
  294. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
  295. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
  296. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/guard_install.py +0 -0
  297. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/handoff.py +0 -0
  298. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/harvest.py +0 -0
  299. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/hive.py +0 -0
  300. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/iterate.py +0 -0
  301. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/materialize.py +0 -0
  302. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/recon_swarm.py +0 -0
  303. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/relay.py +0 -0
  304. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/surface.py +0 -0
  305. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/synergy.py +0 -0
  306. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
  307. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/welcome.py +0 -0
  308. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge/commands/wisdom.py +0 -0
  309. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
  310. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
  311. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge.egg-info/requires.txt +0 -0
  312. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
  313. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_aaaa_nexus_client.py +0 -0
  314. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_agent_hire_protocol.py +0 -0
  315. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_agent_plan.py +0 -0
  316. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_agent_plan_pkg_label.py +0 -0
  317. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_agent_summary.py +0 -0
  318. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_audit_verb.py +0 -0
  319. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_body_extractor_repairs.py +0 -0
  320. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_card_renderer.py +0 -0
  321. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_certify_operational_axis.py +0 -0
  322. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_chat.py +0 -0
  323. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_classify_tier.py +0 -0
  324. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_classify_tier_ast_signals.py +0 -0
  325. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_cli_smoke.py +0 -0
  326. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_cli_swarm_aliases.py +0 -0
  327. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_codex_5_complete.py +0 -0
  328. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_codex_6_enforce_polyglot.py +0 -0
  329. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_commandsmith.py +0 -0
  330. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_compiler_feedback.py +0 -0
  331. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_compliance_checker.py +0 -0
  332. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_config.py +0 -0
  333. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_copilots_copilot.py +0 -0
  334. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_cost_circuit_breaker.py +0 -0
  335. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_create_feature.py +0 -0
  336. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_cs1_renderer.py +0 -0
  337. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_dedup_engine.py +0 -0
  338. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_demo.py +0 -0
  339. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_emergent_compose.py +0 -0
  340. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_emergent_signature_extract.py +0 -0
  341. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_emergent_synthesize_imports.py +0 -0
  342. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_enhancement_proposal.py +0 -0
  343. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_error_codes.py +0 -0
  344. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_error_hints.py +0 -0
  345. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_exported_api_check.py +0 -0
  346. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_forge_action.py +0 -0
  347. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_forge_auth_a1.py +0 -0
  348. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_forge_auth_a2.py +0 -0
  349. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_forge_enforce.py +0 -0
  350. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_generation_quality.py +0 -0
  351. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_handoff.py +0 -0
  352. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_hierarchical_memory.py +0 -0
  353. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_hive_sync.py +0 -0
  354. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_ignore_and_docs.py +0 -0
  355. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_import_smoke.py +0 -0
  356. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_iterate_evolve.py +0 -0
  357. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_js_certify.py +0 -0
  358. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_js_parser.py +0 -0
  359. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_js_recon.py +0 -0
  360. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_js_wire.py +0 -0
  361. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_lineage_chain.py +0 -0
  362. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_ling_provider.py +0 -0
  363. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_local_signer.py +0 -0
  364. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_lsp_protocol.py +0 -0
  365. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_manifest_diff.py +0 -0
  366. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_materialize_feature.py +0 -0
  367. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_mcp_protocol.py +0 -0
  368. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_nexus_bridge.py +0 -0
  369. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_ollama_client.py +0 -0
  370. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_pipeline.py +0 -0
  371. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_plan_apply.py +0 -0
  372. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_pre_audit_smoke.py +0 -0
  373. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_precommit_hooks.py +0 -0
  374. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_progress_reporter.py +0 -0
  375. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_receipt_emitter.py +0 -0
  376. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_receipt_schema.py +0 -0
  377. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_receipt_signer.py +0 -0
  378. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_response_enricher.py +0 -0
  379. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_roi_calculator.py +0 -0
  380. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_sbom_cmd_text_summary.py +0 -0
  381. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_sbom_emitter.py +0 -0
  382. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_scaffold.py +0 -0
  383. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_sidecar.py +0 -0
  384. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_sidecar_validate.py +0 -0
  385. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_smell_score_formula.py +0 -0
  386. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_stagnation.py +0 -0
  387. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_stub_detector.py +0 -0
  388. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_surface_export.py +0 -0
  389. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_synergy.py +0 -0
  390. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_test_runner.py +0 -0
  391. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_tier_init_rebuild.py +0 -0
  392. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_trust_gate_response.py +0 -0
  393. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_verify_suggested_recipe.py +0 -0
  394. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_welcome.py +0 -0
  395. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_welcome_enhancements.py +0 -0
  396. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_wire_certify.py +0 -0
  397. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_wire_suggest_repairs.py +0 -0
  398. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_wire_type_checking.py +0 -0
  399. {atomadic_forge-0.16.2 → atomadic_forge-0.19.0}/tests/test_wisdom.py +0 -0
@@ -94,3 +94,24 @@ jobs:
94
94
  with:
95
95
  name: atomadic-forge-dist
96
96
  path: dist/*
97
+
98
+ metrics:
99
+ name: Metrics freshness
100
+ runs-on: ubuntu-latest
101
+ steps:
102
+ - name: Check out repository
103
+ uses: actions/checkout@v6
104
+
105
+ - name: Set up Python
106
+ uses: actions/setup-python@v6
107
+ with:
108
+ python-version: "3.12"
109
+ cache: pip
110
+
111
+ - name: Install package
112
+ run: |
113
+ python -m pip install --upgrade pip
114
+ python -m pip install -e ".[dev]"
115
+
116
+ - name: Verify forge_metrics.json is current
117
+ run: python scripts/update_metrics.py --check
@@ -1,4 +1,4 @@
1
- # Customer Refactor — fully automated $499 forge.atomadic.tech fulfillment.
1
+ # Customer Refactor — fully automated $149/$99 forge.atomadic.tech fulfillment.
2
2
  #
3
3
  # Triggered by Atomadic's REFACTOR_REPO action via the GitHub
4
4
  # repository_dispatch API. The cognition worker POSTs:
@@ -28,7 +28,7 @@
28
28
  # The cognition endpoint emails the customer (apology + refund offer) and
29
29
  # pings Dad on Discord so the order can be retried manually.
30
30
 
31
- name: Customer Refactor (forge.atomadic.tech $499 fulfillment)
31
+ name: Customer Refactor (forge.atomadic.tech $149/$99 fulfillment)
32
32
 
33
33
  on:
34
34
  repository_dispatch:
@@ -55,7 +55,7 @@ on:
55
55
  description: "Amount paid (cents)"
56
56
  required: false
57
57
  type: string
58
- default: "49900"
58
+ default: "9900"
59
59
 
60
60
  permissions:
61
61
  contents: read
@@ -234,7 +234,7 @@ jobs:
234
234
  echo " above."
235
235
  echo "4. Run your own test suite — Forge does not touch behavior."
236
236
  echo ""
237
- echo "One round of revisions is included with your $499 order."
237
+ echo "One round of revisions is included with your order."
238
238
  echo "Reply to the email you received from Atomadic with anything"
239
239
  echo "you want changed."
240
240
  echo ""
@@ -2,6 +2,247 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v0.19.0 — 2026-05-07 — MCP/CLI parity sweep: 8 tool fixes, call_graph overhaul, smell improvements
6
+
7
+ ### fix(recon): MCP recon now returns prior_wisdom
8
+
9
+ `_tool_recon` in `mcp_protocol.py` now injects the same `prior_wisdom`
10
+ field that the CLI has always produced via `recall_for_recon`. Agents
11
+ calling `recon` over MCP now see the top-5 repo-scoped wisdom entries in
12
+ the response — matching CLI parity and giving every MCP agent the
13
+ institutional memory it needs before starting work.
14
+
15
+ ### perf(mcp): certify skip-tests, wire dynamic-import allowlist, verify slim summaries
16
+
17
+ **certify**
18
+
19
+ - New `skip_tests: bool = False` parameter on `certify()` — skips the
20
+ pytest run, credits the behavioural axis at 1.0, and adds
21
+ `tests_skipped: true` to the result. Reduces certify time from ~40s
22
+ to ~500ms in CI pipelines that run pytest separately.
23
+ - `pytest_summary` raw dot-string is now stripped from the `test_run`
24
+ dict at source; agents receive structured counts only (no 1500-char dot
25
+ strings).
26
+ - MCP tool schema updated with a `skip_tests` boolean input parameter.
27
+
28
+ **wire**
29
+
30
+ - `_tool_wire` reads `[tool.forge.wire].allowed_dynamic_imports` from
31
+ `pyproject.toml`.
32
+ - Response now includes `new_dynamic_warnings` (count of genuinely new
33
+ warnings) and `whitelisted_dynamic_warnings_count`.
34
+ - `dynamic_import_warnings` array shows only non-whitelisted warnings.
35
+ - `pyproject.toml` gained a `[tool.forge.wire]` section with three
36
+ known-safe dynamic-import entries documented.
37
+
38
+ **verify**
39
+
40
+ - `wire` and `certify` keys in the verify response are now slim
41
+ summaries instead of full payloads (~80% response size reduction).
42
+ - Wire summary: `{verdict, violation_count, auto_fixable, new_dynamic_warnings}`
43
+ - Certify summary: `{score, verdict, blockers, score_components, issues, tests_skipped}`
44
+ - New top-level `wisdom_draft: {insight, tags, command}` field — no
45
+ more digging into the nested `wisdom_capture_prompt` structure.
46
+ - `auto_record_threshold_met` now fires on any PASS verdict, not only
47
+ score-delta events.
48
+
49
+ ### fix(batch3): select-tests CLI broken, test discovery gap, certify --skip-tests, context_pack best_next
50
+
51
+ - `select-tests` CLI: Typer group positional `Argument` never parsed — converted
52
+ `intent` to `--intent / -i` option (the only correct workaround for Typer groups).
53
+ - `test_selector`: stem-component token heuristic (≥6-char tokens) now catches
54
+ test files like `test_certify_operational_axis.py` for `certify_checks.py`.
55
+ Before: only exact `test_<stem>.py` mirror matches. After: 7 targeted tests
56
+ for a 3-file change instead of 1.
57
+ - `forge certify --skip-tests` CLI flag (was MCP-only and Python API-only).
58
+ - `context_pack.best_next_action` was always `null` on clean repos — now derives
59
+ a meaningful suggestion from the focus mode (recon / preflight / release / lineage).
60
+
61
+ ### fix(batch4): call_graph fully repaired — relative imports + package normalization; smell_scan build/ exclusion
62
+
63
+ **call_graph** — two independent bugs both produced `target_in_graph: false`:
64
+ - `package` defaulted to `project_root.name` (e.g. `"atomadic-forge"` with
65
+ hyphen); Python package is `"atomadic_forge"` — all qualnames in the graph
66
+ were wrong. Fix: `_detect_package_name()` reads `[project].name` from
67
+ `pyproject.toml` and normalizes `"-"` → `"_"`.
68
+ - Relative imports (`from ..a1_at_functions.certify_checks import certify as _certify`)
69
+ resolved to bare paths missing the package prefix (`a1_at_functions.certify_checks.certify`
70
+ instead of `atomadic_forge.a1_at_functions.certify_checks.certify`). Fix:
71
+ `_collect_imports()` now accepts `module_dotted` and resolves `node.level`
72
+ against it. `certify()` callers: 0 → **36**.
73
+
74
+ **smell_scan** — `_walk_functions()` now skips `build/`, `dist/`, `.eggs/`,
75
+ `.tox/`, `node_modules/`. The scanner was walking compiled artifacts in `build/`
76
+ and double-counting every function. Forge repo smell_score: 67.1 → **89.7**.
77
+
78
+ ### fix(batch5): trust-gate CLI crash, welcome certify verdict None
79
+
80
+ - `trust_gate_cmd`: `d = verdict.schema` set `d` to the schema-version string,
81
+ not a payload dict; subsequent `.get("safe_to_act")` crashed with
82
+ `AttributeError`. Fix: `dataclasses.asdict(verdict)` for the full dict.
83
+ - `welcome_feature.py`: `scan.certify.verdict` was always `None` because the
84
+ code read `certify_report.get("verdict")` (top-level, doesn't exist in normal
85
+ runs) instead of `certify_report["health_summary"]["verdict"]`. Fixed with
86
+ fallback chain: `health_summary.verdict` (normal) → `top-level verdict` (error
87
+ fallback path).
88
+
89
+ ## v0.18.0 — 2026-05-07 flexible LLM providers + VS Code extension + hook repairs
90
+
91
+ ### Flexible LLM provider config
92
+
93
+ Forge previously hardcoded six provider classes (Anthropic, OpenAI, Gemini,
94
+ Ollama, OpenRouter, AAAA-Nexus). v0.18.0 adds a generic OpenAI-compatible
95
+ client + a `custom_providers` config field so users can wire ANY
96
+ chat-completions-API service (DeepSeek, Groq, Together, Fireworks, xAI,
97
+ Mistral, Perplexity, Cerebras, Hyperbolic, internal proxies, …) without
98
+ writing Python.
99
+
100
+ - **NEW** `a1.custom_provider_client` — `CustomProviderClient` honours the
101
+ same `LLMClient` Protocol as the hardcoded clients. 11 bundled presets
102
+ (openai, openrouter, deepseek, groq, together, fireworks, xai, mistral,
103
+ perplexity, cerebras, hyperbolic) for one-line setup.
104
+ - **NEW** `a0.config_defaults.custom_providers: list[CustomProviderEntry]`
105
+ — declare any provider as `{name, base_url, model, api_key_env, format}`.
106
+ Resolver looks up config entries first (overrides win over presets), then
107
+ falls back to bundled presets, then to hardcoded backward-compat names.
108
+ - **NEW** CLI: `forge config provider {add | list | remove | presets}`.
109
+ `add` accepts a `--preset` for one-line setup, plus optional
110
+ `--base-url`, `--model`, `--api-key-env`, `--format`, `--global`.
111
+ - **NEW** env-var override on every preset: `FORGE_<NAME>_MODEL` swaps the
112
+ default model without rewriting config (e.g. `FORGE_GROQ_MODEL=…`).
113
+ - 27 new tests in `test_custom_provider.py` pinning the registry,
114
+ validation, network call shape, and resolver fallback chain.
115
+
116
+ ### VS Code extension
117
+
118
+ NEW `vscode-extension/` directory ships a complete VS Code package:
119
+
120
+ - **Status bar** — live certify score + wire violation count, click to
121
+ re-verify; turns red below the configured `failUnder` threshold.
122
+ - **Activity-bar panel** — two tree views: Wire Violations (click-through
123
+ to file) + Certify Axes (which of the 9 axes are passing).
124
+ - **10 commands** mapped 1:1 to forge CLI verbs (recon, wire, certify,
125
+ verify, smell, context-pack, enforce --apply, welcome, config wizard,
126
+ mcp serve).
127
+ - **MCP server launcher** — opens a terminal running `forge mcp serve` for
128
+ Claude Code / Cursor / Cowork / Windsurf to attach.
129
+ - **Auto-verify on save** (opt-in) for Python, JavaScript, TypeScript,
130
+ Rust, Go, Swift, Kotlin.
131
+ - Settings: `executable`, `provider`, `failUnder`, `statusBarFormat`,
132
+ `scanLanguages`, `autoVerifyOnSave`.
133
+ - Build: `cd vscode-extension && npm install && npm run package`.
134
+
135
+ ### Git hook repairs
136
+
137
+ The shipped `hooks/post-clone`, `hooks/pre-commit`, and `hooks/pre-push`
138
+ all called Forge verbs with the obsolete `--project` / `--suggest_repairs`
139
+ flag style. Verified against the live CLI: every verb takes a positional
140
+ path and uses kebab-case flags.
141
+
142
+ - `hooks/post-clone` — now invokes `forge welcome run --project-root …`
143
+ + `forge explain-repo` + `forge context-pack --target …`.
144
+ - `hooks/pre-commit` — switched to positional `forge certify PATH`,
145
+ `forge wire SOURCE`, kebab-case `--suggest-repairs` and `--apply`.
146
+ Auto-derives `SRC_ROOT` from the workspace.
147
+ - `hooks/pre-push` — same flag fixes; smoke-tested against the live repo:
148
+ `[forge-wire] PASS — 0 violations, verdict: PASS`.
149
+
150
+ ### Documentation
151
+
152
+ - **NEW** `docs/PROVIDERS.md` — full preset table, custom-provider walkthrough,
153
+ resolution-order spec, env-var override matrix.
154
+ - **NEW** `docs/IDE_INTEGRATION.md` — VS Code extension, MCP attach
155
+ configs for Claude Code / Cursor / Cowork / Windsurf / Claude Desktop,
156
+ recommended VS Code settings, hook installation.
157
+
158
+ ### Score
159
+
160
+ Self-certify: 100/100, wire 0 violations, all gates green.
161
+
162
+ ## v0.17.0 — 2026-05-06 full polyglot pipeline (Rust / Go / Swift / Kotlin native)
163
+
164
+ Forge now operates the full pipeline — recon, wire, certify, scaffold,
165
+ evolve — on **seven languages** with the same depth: **Python, JavaScript,
166
+ TypeScript, Rust, Go, Swift, Kotlin.** What used to be a Python+JS
167
+ classifier is now a true polyglot architecture engine.
168
+
169
+ ### Read pass (recon + wire)
170
+
171
+ - **Per-symbol harvest** for every native language. Rust / Go / Swift /
172
+ Kotlin files no longer collapse to a single ``module`` record — every
173
+ public function, struct/class/enum/trait/protocol/interface, method
174
+ (with parent type), and constant is emitted as its own symbol so
175
+ cherry-pick and emergent-compose treat native langs identically to
176
+ Python and JS. See ``a1.polyglot_surface``.
177
+ - **Tier classification by content** (not just by directory). A new
178
+ ``a1.polyglot_classify.classify_native_tier`` runs a 7-rule cascade
179
+ (path tier > main entry > I/O imports > stateful types > pure fns >
180
+ consts > a3 fallback) over each parsed surface.
181
+ - **Wire upward-import scan** for Rust ``use crate::aN_…``, Go
182
+ ``import "…/aN_…"``, Swift ``import aN_…``, Kotlin
183
+ ``import com.x.aN_…``. ``_tier_of_specifier`` now normalises ``::``
184
+ and ``.`` to ``/`` so every language's import path resolves to the
185
+ same tier dictionary. Violations carry the standard F0040–F0049
186
+ codes and ``auto_fixable`` is widened to all 7 langs.
187
+ - **Effect detection** (pure / state / io) per file, derived from
188
+ surface signals (presence of state-bearing types, I/O imports).
189
+
190
+ ### Write pass (scaffold + emit)
191
+
192
+ - ``Language`` literal extends to ``"rust" | "go" | "swift" | "kotlin"``
193
+ with full per-language tables: ``PKG_ROOT_TEMPLATE``,
194
+ ``ALLOWED_FILE_EXTS``, ``MAIN_EXT``, plus new ``EMITS_CARGO_TOML``,
195
+ ``EMITS_GO_MOD``, ``EMITS_PACKAGE_SWIFT``, ``EMITS_BUILD_GRADLE``,
196
+ ``EMITS_TIER_MOD_RS``.
197
+ - New ``a1.scaffold_polyglot`` renderers produce idiomatic shells:
198
+ Cargo crate (Cargo.toml + src/lib.rs + per-tier mod.rs); Go module
199
+ (go.mod + per-tier ``<tier>.go`` package decls); SwiftPM target
200
+ (Package.swift + Sources/<pkg>/<tier>/); Gradle library
201
+ (build.gradle.kts + settings.gradle.kts +
202
+ src/main/kotlin/<pkg>/<tier>/). Each renderer is pure (string in,
203
+ string out) so the emit branch in ``forge_loop._scaffold_package``
204
+ stays a single dispatcher.
205
+ - ``normalize_language`` accepts ``rs``/``rust``, ``go``/``golang``,
206
+ ``swift``, ``kt``/``kotlin``.
207
+
208
+ ### Hardening
209
+
210
+ - 156 polyglot tests across four files: ``test_polyglot_full_pipeline``
211
+ (registry + scaffold), ``test_polyglot_symbol_parity`` (per-symbol
212
+ harvest contract), ``test_polyglot_hardening`` (malformed source +
213
+ generics + async + extensions + idiomatic Rust crate fixture), and
214
+ ``test_polyglot_cli_mcp`` (CLI ↔ MCP equivalence on synthetic Rust /
215
+ Go / Swift / Kotlin repos).
216
+ - Whoami test fixture now removes ``FORGE_MASTER_API_KEY`` in addition
217
+ to ``FORGE_API_KEY`` so dev-shell test runs are hermetic. Was the
218
+ last 3 failures keeping certify off 100/100.
219
+ - ``mcp_protocol`` lazy a3-bootstrap. Downstream consumers that
220
+ imported ``a1.mcp_protocol`` directly (without going through
221
+ ``forge mcp serve``) used to get ``wired:false`` stubs from
222
+ registered tools (``verify``, ``emergent_scan``, ``synergy_scan``,
223
+ ``handoff_list``, ``wisdom_query``, …) until they remembered to
224
+ ``import atomadic_forge.a3_og_features.mcp_server`` themselves.
225
+ Fixed: every wrapper now calls ``_bootstrap_a3_handlers()`` which
226
+ performs an idempotent ``importlib.import_module`` of the a3 server
227
+ on first call. The static a1↔a3 import graph stays untouched (the
228
+ upward-only law is preserved); subsequent calls are a single
229
+ boolean check. Pinned by ``tests/test_mcp_lazy_bootstrap.py``.
230
+
231
+ ### Release-time bug fixes
232
+
233
+ - ``scripts/update_metrics.py`` — hardcoded language list updated to
234
+ the full 7-language polyglot set; ``sys.stdout.reconfigure('utf-8')``
235
+ guard added so the script's checkmarks don't crash on Windows
236
+ cp1252 (was breaking ``make release`` step 2).
237
+ - ``scripts/version-sync-check.sh`` — paths are now passed to embedded
238
+ Python via ``sys.argv[1]`` instead of interpolated into source code,
239
+ so ``!!AtomadicStandard``-style paths can't be misread as Python
240
+ escape sequences (was breaking the cross-repo sync check on Windows).
241
+
242
+ ### Score
243
+
244
+ Self-certify: **100/100**, wire 0 violations, 1460/1460 tests passing.
245
+
5
246
  ## v0.16.2 — 2026-05-06 welcome scope guard + Boris pre-demo hardening
6
247
 
7
248
  Pre-Boris-demo stress test surfaced a single class of welcome failure:
@@ -0,0 +1,235 @@
1
+ Metadata-Version: 2.4
2
+ Name: atomadic-forge
3
+ Version: 0.19.0
4
+ Summary: Atomadic Forge — absorb, enforce, emerge. Polyglot (Python · JavaScript/TypeScript · Rust · Go · Swift · Kotlin) architecture guardian for AI-generated code.
5
+ Author: Atomadic
6
+ License-Expression: BUSL-1.1
7
+ Keywords: atomadic,ass-ade,monadic,architecture,forge,code-quality,ai,agents,javascript,typescript,polyglot
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Topic :: Software Development :: Quality Assurance
14
+ Requires-Python: >=3.10
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: click<9,>=8.1
18
+ Requires-Dist: typer<1,>=0.15
19
+ Requires-Dist: rich<16,>=14
20
+ Requires-Dist: pyyaml<7,>=6
21
+ Provides-Extra: dev
22
+ Requires-Dist: pytest>=7; extra == "dev"
23
+ Requires-Dist: import-linter<3,>=2.0; extra == "dev"
24
+ Requires-Dist: ruff>=0.4; extra == "dev"
25
+ Requires-Dist: build<2,>=1; extra == "dev"
26
+ Requires-Dist: twine<7,>=5; extra == "dev"
27
+ Requires-Dist: tomli>=2; python_version < "3.11" and extra == "dev"
28
+ Requires-Dist: cryptography<48,>=42; extra == "dev"
29
+ Provides-Extra: signing
30
+ Requires-Dist: cryptography<48,>=42; extra == "signing"
31
+ Dynamic: license-file
32
+
33
+ <p align="center">
34
+ <img src="assets/Atomadic-Forge-01.png" alt="Atomadic Forge" width="600"/>
35
+ </p>
36
+
37
+ <h1 align="center">Atomadic Forge</h1>
38
+
39
+ <p align="center">
40
+ <strong>Spaghetti is Toast.</strong><br/>
41
+ The architecture enforcement engine for AI-generated code.
42
+ </p>
43
+
44
+ <p align="center">
45
+ <a href="https://pypi.org/project/atomadic-forge/"><img src="https://img.shields.io/pypi/v/atomadic-forge.svg" alt="PyPI"/></a>
46
+ <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/Python-3.10%2B-blue.svg" alt="Python 3.10+"/></a>
47
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-BSL--1.1-yellow.svg" alt="License: BSL-1.1"/></a>
48
+ <a href="https://github.com/atomadictech/atomadic-forge/actions/workflows/ci.yml"><img src="https://github.com/atomadictech/atomadic-forge/actions/workflows/ci.yml/badge.svg" alt="CI"/></a>
49
+ <a href="docs/SHOWCASE.md"><img src="https://img.shields.io/badge/forge_certify-100%2F100-brightgreen" alt="Forge certify"/></a>
50
+ <a href="https://registry.modelcontextprotocol.io/"><img src="https://img.shields.io/badge/MCP-Official_Registry-blue" alt="MCP Registry"/></a>
51
+ </p>
52
+
53
+ ---
54
+
55
+ AI agents write code **10x faster** than humans can review it. Pattern violations went from 5% to 60% post-LLM. Your codebase is accumulating architectural debt at machine speed.
56
+
57
+ **Forge fixes that.**
58
+
59
+ - **Catches architectural violations AI agents leave behind.** Deterministic tier-law enforcement — no LLM in the loop, no hallucinations.
60
+ - **Saves 40-60% on LLM tokens.** Structured code = smaller context windows = fewer tokens per turn.
61
+ - **One command: spaghetti -> certified architecture.** Python, JavaScript, TypeScript, **Rust, Go, Swift, Kotlin** — full pipeline (recon, wire, certify, scaffold, evolve) on every language.
62
+ - **Bring your own LLM.** Built-in presets for OpenAI, Anthropic, Gemini, OpenRouter, DeepSeek, Groq, Together, Fireworks, xAI, Mistral, Perplexity, Cerebras, Hyperbolic, AAAA-Nexus, and Ollama — plus `forge config provider add` for any custom OpenAI-compatible endpoint. See [docs/PROVIDERS.md](docs/PROVIDERS.md).
63
+ - **IDE-native.** VS Code extension (`vscode-extension/`), MCP server for Claude Code / Cursor / Cowork / Windsurf, four ready-to-use Claude Code skills. See [docs/IDE_INTEGRATION.md](docs/IDE_INTEGRATION.md).
64
+
65
+ ---
66
+
67
+ ## Quick Start
68
+
69
+ ```bash
70
+ pip install atomadic-forge # install
71
+ forge recon . # scan any repo (free, read-only)
72
+ forge certify . --print-card # get your architecture score (0-100)
73
+ ```
74
+
75
+ That's it. No API key, no config, no writes.
76
+
77
+ ---
78
+
79
+ ## What Forge Does
80
+
81
+ Forge enforces a **5-tier monadic law** — every source file belongs to exactly one tier, tiers compose upward only. AI agents generate code fast; Forge gives it gravity.
82
+
83
+ ```
84
+ a4_orchestration/ <- CLI, entry points
85
+ |
86
+ a3_features/ <- Feature modules
87
+ |
88
+ a2_composites/ <- Stateful classes
89
+ |
90
+ a1_functions/ <- Pure functions
91
+ |
92
+ a0_constants/ <- Constants, enums (zero logic)
93
+ ```
94
+
95
+ **Before Forge:**
96
+ ```
97
+ 62 import violations · certify score 23/100 · "it works on my machine"
98
+ ```
99
+
100
+ **After `forge auto`:**
101
+ ```
102
+ 0 violations · certify 100/100 · signed conformance receipt · ship it
103
+ ```
104
+
105
+ ---
106
+
107
+ ## CLI Commands
108
+
109
+ ### Core Pipeline
110
+
111
+ | Command | What it does |
112
+ |---------|-------------|
113
+ | `forge auto` | **Flagship.** scout -> cherry -> assimilate -> wire -> certify -> receipt |
114
+ | `forge recon` | Scan a repo — classify every symbol, show tier distribution |
115
+ | `forge wire` | Detect upward-import violations |
116
+ | `forge certify` | Architecture score (0-100): docs, tests, tier layout, imports |
117
+ | `forge verify` | Composite ship gate: PASS / REFINE / FAIL |
118
+ | `forge enforce` | Apply mechanical fixes (rollback-safe) |
119
+ | `forge status` | Wire + certify in one call |
120
+ | `forge welcome` | First-call handshake — score + guidance in one response |
121
+
122
+ ### Quality & Intelligence
123
+
124
+ | Command | What it does |
125
+ |---------|-------------|
126
+ | `forge smell` | Code smell scan: cyclomatic complexity, long functions, duplicates |
127
+ | `forge call-graph` | AST call graph for any symbol |
128
+ | `forge cna-check` | Compose-Not-Add — flag duplicates before writing |
129
+ | `forge trust-gate` | LLM response hallucination detector |
130
+ | `forge preflight` | Pre-edit guardrail: tier + import + scope check |
131
+
132
+ ### Composition & Multi-Repo
133
+
134
+ | Command | What it does |
135
+ |---------|-------------|
136
+ | `forge create` | Intent + seed repos -> new pip-installable package |
137
+ | `forge emergent scan` | Cross-domain composition discovery |
138
+ | `forge recon-swarm` | Walk N repos, unified report |
139
+ | `forge harvest` | Cross-repo capability gap finder |
140
+
141
+ ### Planning & LLM Loops
142
+
143
+ | Command | What it does |
144
+ |---------|-------------|
145
+ | `forge iterate` | LLM loop: intent -> code -> absorb -> score -> iterate |
146
+ | `forge evolve` | Recursive improvement over N rounds |
147
+ | `forge plan` | Bounded execution plan with risk + rollback |
148
+ | `forge chat` | Terminal copilot over forge docs |
149
+
150
+ **26+ CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
151
+
152
+ ---
153
+
154
+ ## MCP Server — 66 Tools
155
+
156
+ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aider, Devin, or any MCP-compatible agent:
157
+
158
+ ```json
159
+ {
160
+ "mcpServers": {
161
+ "atomadic-forge": {
162
+ "command": "forge",
163
+ "args": ["mcp", "serve", "--project", "/path/to/your/repo"]
164
+ }
165
+ }
166
+ }
167
+ ```
168
+
169
+ **66 tools locally. 40 on the deployed Worker at [forge.atomadic.tech/mcp](https://forge.atomadic.tech/mcp).** Listed in the [MCP Official Registry](https://registry.modelcontextprotocol.io/).
170
+
171
+ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welcome`
172
+
173
+ ---
174
+
175
+ ## By the Numbers
176
+
177
+ | Metric | Value |
178
+ |--------|-------|
179
+ | Tests | **1,291 passing** |
180
+ | MCP tools | **66** |
181
+ | Source files | **193** |
182
+ | CLI verbs | **26+** |
183
+ | Lean4 formal proofs | **624** (mathematically verified core logic) |
184
+ | Languages | Python, JS/TS, Swift, Kotlin, Go |
185
+ | Infrastructure cost | **$5/mo** |
186
+ | Self-score | **100/100** certify, 0 wire violations |
187
+ | License | BSL 1.1 (Apache 2.0 after 2030-04-27) |
188
+
189
+ Forge eats its own cooking. Every CI run scores itself.
190
+
191
+ ---
192
+
193
+ ## Pricing
194
+
195
+ | Tier | Price | What you get |
196
+ |------|-------|-------------|
197
+ | **Free** | $0 | OSS, 25 calls/day, read-only tools |
198
+ | **One-Time Refactor** | ~~$149~~ **$99** | We run `auto` on your repo -> PR targeting 100/100. One revision included. |
199
+ | **Starter** | $79/mo | All 66 tools, 5k calls/mo, signed receipts, custom recipes |
200
+ | **Pro** | $249/mo | + notarization, compliance attestations, cross-repo telemetry |
201
+ | **Founding Member** | $999/yr | Everything. Forever. First 25 only. |
202
+ | **Enterprise** | Custom | BSL commercial license, SSO, self-host, SLA |
203
+
204
+ > **Launch special:** The one-time refactor is **$99** (normally $149). See what Forge does to your codebase before committing to a subscription.
205
+
206
+ [Get started ->](https://forge.atomadic.tech/pricing)
207
+
208
+ ---
209
+
210
+ ## Docs
211
+
212
+ | | |
213
+ |---|---|
214
+ | [First 10 Minutes](docs/FIRST_10_MINUTES.md) | Install, demo, first scan |
215
+ | [Tutorials](docs/tutorials/) | Quickstart, 5-tier law, LLM integration |
216
+ | [Architecture](ARCHITECTURE.md) | How Forge itself is built |
217
+ | [CI/CD Integration](docs/CI_CD.md) | GitHub Actions, GitLab CI, pre-commit |
218
+ | [Showcase](docs/SHOWCASE.md) | Live run trajectories |
219
+ | [Changelog](CHANGELOG.md) | Version history |
220
+ | [Contributing](CONTRIBUTING.md) | How to extend Forge |
221
+ | [Security](SECURITY.md) | Vulnerability reporting |
222
+
223
+ ---
224
+
225
+ ## License
226
+
227
+ [Business Source License 1.1](LICENSE). Free for non-production use. Commercial license for production — see [COMMERCIAL_LICENSE.md](COMMERCIAL_LICENSE.md). Change Date: 2030-04-27 -> Apache 2.0.
228
+
229
+ ---
230
+
231
+ <p align="center">
232
+ <a href="https://forge.atomadic.tech">forge.atomadic.tech</a> — paste any GitHub repo, watch the analysis in real time.
233
+ <br/><br/>
234
+ <a href="https://invest.atomadic.tech">Interested in investing?</a>
235
+ </p>