atomadic-forge 0.14.0__tar.gz → 0.15.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 (376) hide show
  1. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/workflows/customer-refactor.yml +1 -1
  2. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/CHANGELOG.md +116 -0
  3. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/PKG-INFO +13 -6
  4. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/README.md +10 -3
  5. atomadic_forge-0.15.0/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +184 -0
  6. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/pyproject.toml +3 -3
  7. atomadic_forge-0.15.0/src/atomadic_forge/__init__.py +58 -0
  8. atomadic_forge-0.15.0/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +44 -0
  9. atomadic_forge-0.15.0/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +21 -0
  10. atomadic_forge-0.15.0/src/atomadic_forge/a0_qk_constants/materialize_types.py +35 -0
  11. atomadic_forge-0.15.0/src/atomadic_forge/a0_qk_constants/response_enrichment.py +38 -0
  12. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +7 -0
  13. atomadic_forge-0.15.0/src/atomadic_forge/a0_qk_constants/welcome_constants.py +38 -0
  14. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +24 -1
  15. atomadic_forge-0.15.0/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +95 -0
  16. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +22 -0
  17. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/handoff_builder.py +1 -1
  18. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/hive_io.py +4 -3
  19. atomadic_forge-0.15.0/src/atomadic_forge/a1_at_functions/lifetime_savings.py +119 -0
  20. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +168 -1
  21. atomadic_forge-0.15.0/src/atomadic_forge/a1_at_functions/response_enricher.py +283 -0
  22. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +16 -2
  23. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/synergy_detect.py +29 -2
  24. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +10 -10
  25. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +32 -11
  26. atomadic_forge-0.15.0/src/atomadic_forge/a1_at_functions/welcome_narrator.py +584 -0
  27. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/wire_check.py +28 -2
  28. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +20 -10
  29. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/wisdom_io.py +3 -2
  30. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +6 -7
  31. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -1
  32. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/nexus_client.py +1 -1
  33. atomadic_forge-0.15.0/src/atomadic_forge/a3_og_features/create_feature.py +211 -0
  34. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +28 -1
  35. atomadic_forge-0.15.0/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +195 -0
  36. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +29 -2
  37. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/hive_sync.py +1 -2
  38. atomadic_forge-0.15.0/src/atomadic_forge/a3_og_features/materialize_feature.py +356 -0
  39. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/mcp_server.py +94 -36
  40. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -1
  41. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +23 -1
  42. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/verify_umbrella.py +28 -1
  43. atomadic_forge-0.15.0/src/atomadic_forge/a3_og_features/welcome_feature.py +269 -0
  44. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -1
  45. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +10 -0
  46. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/_registry.py +4 -0
  47. atomadic_forge-0.15.0/src/atomadic_forge/commands/create.py +143 -0
  48. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/emergent_swarm.py +2 -2
  49. atomadic_forge-0.15.0/src/atomadic_forge/commands/enhancement.py +209 -0
  50. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/harvest.py +1 -1
  51. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/hive.py +2 -2
  52. atomadic_forge-0.15.0/src/atomadic_forge/commands/materialize.py +103 -0
  53. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/recon_swarm.py +1 -1
  54. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/relay.py +1 -1
  55. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/surface.py +0 -1
  56. atomadic_forge-0.15.0/src/atomadic_forge/commands/welcome.py +75 -0
  57. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/wisdom.py +7 -5
  58. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge.egg-info/PKG-INFO +13 -6
  59. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge.egg-info/SOURCES.txt +24 -0
  60. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge.egg-info/requires.txt +2 -2
  61. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_cli_smoke.py +18 -0
  62. atomadic_forge-0.15.0/tests/test_create_feature.py +183 -0
  63. atomadic_forge-0.15.0/tests/test_enhancement_proposal.py +304 -0
  64. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_evolve_js.py +15 -0
  65. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_hive_sync.py +16 -3
  66. atomadic_forge-0.15.0/tests/test_materialize_feature.py +203 -0
  67. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_mcp_protocol.py +4 -0
  68. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_nexus_bridge.py +0 -1
  69. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_polyglot_swift_kotlin_go.py +0 -1
  70. atomadic_forge-0.15.0/tests/test_response_enricher.py +222 -0
  71. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_surface_export.py +0 -4
  72. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_synergy.py +49 -0
  73. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_verify_suggested_recipe.py +0 -2
  74. atomadic_forge-0.15.0/tests/test_welcome.py +402 -0
  75. atomadic_forge-0.15.0/tests/test_welcome_enhancements.py +280 -0
  76. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_wisdom.py +0 -1
  77. atomadic_forge-0.14.0/src/atomadic_forge/__init__.py +0 -24
  78. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/FUNDING.yml +0 -0
  79. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  80. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  81. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  82. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/actions/forge-action/README.md +0 -0
  83. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/actions/forge-action/action.yml +0 -0
  84. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/dependabot.yml +0 -0
  85. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/pull_request_template.md +0 -0
  86. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/workflows/ci.yml +0 -0
  87. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/workflows/forge-self-certify.yml +0 -0
  88. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/workflows/release.yml +0 -0
  89. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/.github/workflows/surface-drift.yml +0 -0
  90. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/ARCHITECTURE.md +0 -0
  91. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/CONTRIBUTING.md +0 -0
  92. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/LICENSE +0 -0
  93. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/MANIFEST.in +0 -0
  94. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/SECURITY.md +0 -0
  95. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/assets/Atomadic-Forge-01.png +0 -0
  96. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/01-getting-started.md +0 -0
  97. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/02-commands.md +0 -0
  98. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/03-tutorial.md +0 -0
  99. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/04-llm-loops.md +0 -0
  100. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/05-faq.md +0 -0
  101. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/AGENTS_GUIDE.md +0 -0
  102. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/AIR_GAPPED.md +0 -0
  103. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/CI_CD.md +0 -0
  104. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/CODEX_WALKTHROUGH.md +0 -0
  105. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/COMMANDS.md +0 -0
  106. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/FIRST_10_MINUTES.md +0 -0
  107. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/FORMALIZATION.md +0 -0
  108. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/HIVE_PRIMITIVES.md +0 -0
  109. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/HIVE_STATUS.md +0 -0
  110. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/LANDSCAPE.md +0 -0
  111. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/MARKET_POSITIONING.md +0 -0
  112. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/MIGRATION.md +0 -0
  113. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/MULTI_REPO.md +0 -0
  114. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/README.md +0 -0
  115. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/RECEIPT.md +0 -0
  116. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/RELAY_PROTOCOL.md +0 -0
  117. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/RELEASE_CHECKLIST.md +0 -0
  118. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/RELEASE_MESSAGING.md +0 -0
  119. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/ROADMAP.md +0 -0
  120. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/SHOWCASE.md +0 -0
  121. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/SIDECAR.md +0 -0
  122. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/STUDIO.md +0 -0
  123. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
  124. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/WHY_NOW.md +0 -0
  125. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
  126. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/WORLD_COLLISION.md +0 -0
  127. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/INDEX.md +0 -0
  128. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/chat.md +0 -0
  129. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/commandsmith.md +0 -0
  130. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/config.md +0 -0
  131. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/demo.md +0 -0
  132. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/emergent-then-synergy.md +0 -0
  133. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/emergent.md +0 -0
  134. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/evolve-then-iterate.md +0 -0
  135. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/evolve.md +0 -0
  136. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/feature-then-emergent.md +0 -0
  137. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/iterate.md +0 -0
  138. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/synergy-then-emergent.md +0 -0
  139. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/commands/synergy.md +0 -0
  140. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
  141. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/compliance/CS-1.md +0 -0
  142. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
  143. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
  144. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/compliance/SR_11-7_MAPPING.md +0 -0
  145. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/tutorials/01-quickstart.md +0 -0
  146. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/tutorials/02-your-first-package.md +0 -0
  147. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/tutorials/03-the-five-tier-law.md +0 -0
  148. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/tutorials/04-plug-in-llms.md +0 -0
  149. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/tutorials/05-multi-repo-absorb.md +0 -0
  150. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/docs/tutorials/06-javascript-quickstart.md +0 -0
  151. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/setup.cfg +0 -0
  152. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/__main__.py +0 -0
  153. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
  154. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
  155. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
  156. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
  157. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
  158. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
  159. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
  160. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
  161. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
  162. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
  163. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
  164. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
  165. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
  166. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
  167. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
  168. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
  169. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
  170. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
  171. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
  172. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
  173. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
  174. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
  175. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
  176. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
  177. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
  178. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
  179. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
  180. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
  181. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/call_graph.py +0 -0
  182. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
  183. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
  184. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
  185. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
  186. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
  187. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
  188. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
  189. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
  190. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
  191. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
  192. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
  193. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
  194. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
  195. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
  196. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
  197. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
  198. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
  199. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
  200. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
  201. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
  202. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
  203. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
  204. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
  205. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
  206. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
  207. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
  208. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
  209. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
  210. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
  211. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
  212. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
  213. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
  214. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
  215. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
  216. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
  217. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
  218. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
  219. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
  220. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
  221. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
  222. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
  223. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
  224. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
  225. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
  226. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
  227. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
  228. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
  229. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
  230. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
  231. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
  232. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
  233. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
  234. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
  235. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/smell_scan.py +0 -0
  236. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
  237. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
  238. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
  239. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
  240. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
  241. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
  242. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
  243. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
  244. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
  245. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
  246. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
  247. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
  248. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
  249. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
  250. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
  251. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
  252. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
  253. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
  254. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
  255. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
  256. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
  257. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
  258. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
  259. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
  260. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
  261. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
  262. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
  263. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
  264. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
  265. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
  266. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
  267. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
  268. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
  269. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
  270. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/emergent_swarm.py +0 -0
  271. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
  272. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
  273. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
  274. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
  275. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
  276. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
  277. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
  278. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
  279. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
  280. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
  281. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
  282. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
  283. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
  284. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
  285. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +0 -0
  286. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
  287. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
  288. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/__init__.py +0 -0
  289. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/audit.py +0 -0
  290. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/chat.py +0 -0
  291. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/commandsmith.py +0 -0
  292. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/config_cmd.py +0 -0
  293. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/demo.py +0 -0
  294. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/emergent.py +0 -0
  295. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
  296. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/evolve.py +0 -0
  297. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
  298. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
  299. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/guard_install.py +0 -0
  300. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/handoff.py +0 -0
  301. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/iterate.py +0 -0
  302. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/synergy.py +0 -0
  303. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
  304. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
  305. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
  306. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
  307. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_aaaa_nexus_client.py +0 -0
  308. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_agent_hire_protocol.py +0 -0
  309. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_agent_plan.py +0 -0
  310. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_agent_summary.py +0 -0
  311. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_audit_verb.py +0 -0
  312. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_body_extractor_repairs.py +0 -0
  313. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_card_renderer.py +0 -0
  314. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_certify_operational_axis.py +0 -0
  315. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_chat.py +0 -0
  316. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_classify_tier.py +0 -0
  317. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_classify_tier_ast_signals.py +0 -0
  318. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_codex_5_complete.py +0 -0
  319. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_codex_6_enforce_polyglot.py +0 -0
  320. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_commandsmith.py +0 -0
  321. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_compiler_feedback.py +0 -0
  322. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_compliance_checker.py +0 -0
  323. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_config.py +0 -0
  324. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_copilots_copilot.py +0 -0
  325. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_cost_circuit_breaker.py +0 -0
  326. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_cs1_renderer.py +0 -0
  327. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_dedup_engine.py +0 -0
  328. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_demo.py +0 -0
  329. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_emergent_compose.py +0 -0
  330. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_emergent_signature_extract.py +0 -0
  331. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_error_codes.py +0 -0
  332. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_error_hints.py +0 -0
  333. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_exported_api_check.py +0 -0
  334. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_forge_action.py +0 -0
  335. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_forge_auth_a1.py +0 -0
  336. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_forge_auth_a2.py +0 -0
  337. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_forge_enforce.py +0 -0
  338. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_generation_quality.py +0 -0
  339. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_handoff.py +3 -3
  340. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_hierarchical_memory.py +0 -0
  341. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_ignore_and_docs.py +0 -0
  342. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_import_smoke.py +0 -0
  343. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_iterate_evolve.py +0 -0
  344. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_js_certify.py +0 -0
  345. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_js_parser.py +0 -0
  346. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_js_recon.py +0 -0
  347. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_js_wire.py +0 -0
  348. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_lineage_chain.py +0 -0
  349. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_ling_provider.py +0 -0
  350. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_local_signer.py +0 -0
  351. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_lsp_protocol.py +0 -0
  352. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_manifest_diff.py +0 -0
  353. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_ollama_client.py +0 -0
  354. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_pipeline.py +0 -0
  355. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_plan_apply.py +0 -0
  356. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_pre_audit_smoke.py +0 -0
  357. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_precommit_hooks.py +0 -0
  358. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_progress_reporter.py +0 -0
  359. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_receipt_emitter.py +0 -0
  360. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_receipt_schema.py +0 -0
  361. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_receipt_signer.py +0 -0
  362. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_roi_calculator.py +0 -0
  363. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_sbom_emitter.py +0 -0
  364. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_scaffold.py +0 -0
  365. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_sidecar.py +0 -0
  366. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_sidecar_validate.py +0 -0
  367. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_smell_score_formula.py +0 -0
  368. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_stagnation.py +0 -0
  369. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_stub_detector.py +0 -0
  370. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_test_runner.py +0 -0
  371. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_tier_init_rebuild.py +0 -0
  372. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_trust_gate_response.py +0 -0
  373. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_whoami_cmd.py +0 -0
  374. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_wire_certify.py +0 -0
  375. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_wire_suggest_repairs.py +0 -0
  376. {atomadic_forge-0.14.0 → atomadic_forge-0.15.0}/tests/test_wire_type_checking.py +0 -0
@@ -92,7 +92,7 @@ jobs:
92
92
  echo "Customer: $CUSTOMER_EMAIL"
93
93
 
94
94
  - name: Set up Python 3.12
95
- uses: actions/setup-python@v5
95
+ uses: actions/setup-python@v6
96
96
  with:
97
97
  python-version: "3.12"
98
98
 
@@ -1,5 +1,121 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ## v0.15.0 — 2026-05-06 forge create / forge materialize
6
+
7
+ Closes the loop from emergent composition discovery to a real,
8
+ pip-installable package on disk.
9
+
10
+ - **`forge materialize`** — emergent scan report → shippable Python
11
+ package. Tier-organized scaffold (a0..a4 + `__init__.py`),
12
+ `pyproject.toml`, `README.md`, `.gitignore`, `tests/conftest.py`,
13
+ `tests/__init__.py`, plus one a3 feature module + smoke test per
14
+ selected candidate. Slug uniqueness via candidate-id tail so name
15
+ collisions don't overwrite. Optional wire-check + certify pass with
16
+ the verdict embedded in the report. Refuses to overwrite a non-empty
17
+ unrelated directory. +9 tests.
18
+ - **`forge create`** — one-command pipeline. Resolves local seed-repo
19
+ paths (`src/<pkg>/`, tier-bearing dir, or auto-detect), runs
20
+ `emergent_swarm` across them, persists scan + receipt to
21
+ `.atomadic-forge/`, then pipes through `materialize` for the final
22
+ package. Strictly local paths — no GitHub cloning, no third-party
23
+ absorption. Phase 2/3 (clone + cross-framework merge) plug in ahead
24
+ of step 1 without changing this module's contract. +7 tests.
25
+ - End-to-end smoke verified on Forge itself: 570 union catalog → 25
26
+ candidates → 17-file package, `wire_violations=0`. On a JS-only
27
+ codebase (Atomadic cognition worker): 0 candidates, empty-but-valid
28
+ scaffold. The system reports what it found, not what was hoped for.
29
+
30
+ Also accumulated in this release:
31
+
32
+ ### Synergy signal and version repair
33
+
34
+ Forge-on-Forge evolution pass: `synergy_scan` now distinguishes
35
+ stdout-only `--json` switches from real artifact-writing path options
36
+ such as `--save`, `--out`, and `--report`. This removes false
37
+ JSON-handoff candidates like command groups that print JSON but do not
38
+ write an artifact file. The synergy adapter renderer also targets the
39
+ current `atomadic_forge.a4_sy_orchestration.cli` module instead of the
40
+ retired unified CLI path.
41
+
42
+ MCP doctor exposed a release drift in editable/worktree setups where
43
+ installed package metadata could still report `0.14.0a10` after the
44
+ checkout's `pyproject.toml` had advanced to `0.14.0`. Source checkouts
45
+ now prefer their local `pyproject.toml`; installed wheels continue to
46
+ fall back to package metadata.
47
+
48
+ Validation:
49
+
50
+ ```
51
+ forge emergent scan --src-root src --package atomadic_forge --top-n 10 --json
52
+ forge emergent_swarm -r ... --json
53
+ forge certify . --fail-under 100 --json
54
+ ```
55
+
56
+ Also pending in this slot:
57
+
58
+ - **`forge handoff create / list / show`** — structured agent-to-agent
59
+ session transfer at `.atomadic-forge/handoffs/<HOFF-id>.json`. CLI verb
60
+ + MCP tools `handoff_create` and `handoff_list` (surface 61 → 63).
61
+ Schema `atomadic-forge.handoff/v1` with `axiom_guard_status`
62
+ PASS|QUARANTINE so the next agent reads the trust verdict before it
63
+ resumes work. +18 tests.
64
+ - **AST-aware class classifier** — `body_extractor.detect_class_signals()`
65
+ returns `is_protocol`, `is_frozen_dataclass`, `all_static_methods`,
66
+ `has_cached_property` alongside the existing self-assign signals.
67
+ `classify_tier()` honors them BEFORE name heuristics: `Protocol → a0`,
68
+ `@dataclass(frozen=True) → a1`, all-`@staticmethod` → a1,
69
+ `@cached_property → a2`. New `classify_tier_with_confidence()`
70
+ returns `{tier, confidence, reasons}` for callers that want to route
71
+ low-confidence guesses to manual review. +17 tests.
72
+ - **`wire_check` edge cases** — `if TYPE_CHECKING:` guarded imports are
73
+ no longer flagged as runtime violations; surfaced under
74
+ `type_only_imports` for visibility. `importlib.import_module(...)`
75
+ calls land in `dynamic_import_warnings` (string-literal modules
76
+ resolved; non-literals marked `<dynamic>`). `from .X import *` always
77
+ surfaces in `star_import_warnings`. New `--strict-cycles` opt-in flag
78
+ detects same-tier file-pair cycles, reported in `same_tier_cycles`.
79
+ Backward compatible: existing v1 schema fields untouched. +10 tests.
80
+ - **First-pass tier discipline block** — `system_prompt()` (Python
81
+ variant) gains a section that mirrors the new AST-classifier signals
82
+ so the LLM lands tiers right on the first emission rather than paying
83
+ a feedback round-trip. Calls out: Protocol→a0, frozen dataclass→a1,
84
+ all-static→a1, self-assign→a2, cached_property→a2, TYPE_CHECKING
85
+ permitted, dynamic/star warnings explained. +1 test.
86
+
87
+ Cumulative: 1133 → 1177 tests, 61 → 63 MCP tools.
88
+
89
+ ## v0.14.0 — 2026-05-05 alpha-series finalization (PyPI release)
90
+
91
+ **release_commit_ts:** 2026-05-06T04:02:23Z (ef37eca)
92
+
93
+ The first non-prerelease in the v0.14.0 line. Drops the `aN` suffix
94
+ after ten alpha iterations (`a1` through `a10`) and ships the
95
+ cumulative surface to PyPI. `pip install atomadic-forge` now returns
96
+ `0.14.0` (was `0.10.0` since 2025).
97
+
98
+ Highlights (all already documented in their own alpha entries below):
99
+
100
+ - Full hive sync pipeline (`hive_register / observe / propose / vote /
101
+ result / list / deactivate / watch / needs-vote / recap`) for
102
+ multi-agent consensus over append-only public artifacts.
103
+ - AAAA-Nexus bridge: 7 LIVE primitives wired as MCP tools
104
+ (`nexus_identity_verify`, `nexus_federation_mint`,
105
+ `nexus_authorize_action`, `nexus_sys_trust_gate`,
106
+ `nexus_contract_verify`, `nexus_lineage_record`,
107
+ `nexus_ratchet_register`). Wisdom + consensus auto-mirror at
108
+ confidence ≥ 0.85.
109
+ - Local relay daemon (`forge relay serve`) — Worker → local job
110
+ dispatch over signed JSON-RPC envelopes.
111
+ - Surface artifact + drift CI gate (`surface.json` + `forge surface
112
+ emit/check/diff`).
113
+ - Wisdom DB on the MCP surface + wisdom → recipe promotion.
114
+
115
+ Surface at release: 61 MCP tools. Tests: 1131 passed, 2 skipped.
116
+ README, contact email (`thomas@atomadic.tech`), and version display
117
+ all reconciled with the live repo.
118
+
3
119
  ## v0.14.0a10 — 2026-05-06 forge hive recap (full lifecycle visualization)
4
120
 
5
121
  **release_commit_ts:** 2026-05-06T01:50:00Z
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atomadic-forge
3
- Version: 0.14.0
3
+ Version: 0.15.0
4
4
  Summary: Atomadic Forge — absorb, enforce, emerge. Polyglot (Python · JavaScript/TypeScript · Swift · Kotlin · Go) architecture guardian for AI-generated code.
5
5
  Author: Atomadic
6
6
  License-Expression: BUSL-1.1
@@ -25,9 +25,9 @@ Requires-Dist: ruff>=0.4; extra == "dev"
25
25
  Requires-Dist: build<2,>=1; extra == "dev"
26
26
  Requires-Dist: twine<7,>=5; extra == "dev"
27
27
  Requires-Dist: tomli>=2; python_version < "3.11" and extra == "dev"
28
- Requires-Dist: cryptography<46,>=42; extra == "dev"
28
+ Requires-Dist: cryptography<48,>=42; extra == "dev"
29
29
  Provides-Extra: signing
30
- Requires-Dist: cryptography<46,>=42; extra == "signing"
30
+ Requires-Dist: cryptography<48,>=42; extra == "signing"
31
31
  Dynamic: license-file
32
32
 
33
33
  <p align="center">
@@ -283,7 +283,7 @@ generate).
283
283
  ```bash
284
284
  git clone https://github.com/atomadictech/atomadic-forge && cd atomadic-forge
285
285
  pip install -e ".[dev]"
286
- python -m pytest # 1178 collected (1176 passed, 2 skipped)
286
+ python -m pytest # 1179 collected (1177 passed, 2 skipped)
287
287
  ```
288
288
 
289
289
  ## AI Agent integration (MCP)
@@ -303,6 +303,13 @@ Forge ships a **Model Context Protocol server** — add it to Cursor, Claude Cod
303
303
 
304
304
  ### All 63 MCP tools (local) · 40 on the deployed Worker
305
305
 
306
+ > **Recommended first call: `welcome`** — runs scout + certify + wire on the
307
+ > current repo and returns a structured situation report (score, top
308
+ > strengths, top priorities, suggested next call, agent guidance,
309
+ > capability tour, safety net). Surfaced to MCP clients via
310
+ > `serverInfo.recommended_first_call` and a per-tool
311
+ > `recommended_first_call: true` flag in `tools/list`.
312
+
306
313
  Grouped by purpose. Every tool is `tools/call`-able through the MCP
307
314
  contract; every tool returns a versioned schema (`atomadic-forge.<tool>/v<n>`).
308
315
  Run `forge mcp serve --help` for the full surface with examples.
@@ -594,7 +601,7 @@ Forge ships with named limits. No overpromise.
594
601
  | Product | What it is | Status |
595
602
  |---------|------------|--------|
596
603
  | **AAAA-Nexus** | Trust/safety/payments substrate for autonomous agents | Live at [atomadic.tech](https://atomadic.tech) |
597
- | **Atomadic Forge** | Absorb-and-emerge engine for developers (this repo) | **v0.14.0** — on PyPI, 1176 tests, 100/100, MCP server (63 tools local · 40 on Worker), four-agent hive primitives, AAAA-Nexus bridge |
604
+ | **Atomadic Forge** | Absorb-and-emerge engine for developers (this repo) | **v0.14.0** — on PyPI, 1177 tests, 100/100, MCP server (63 tools local · 40 on Worker), four-agent hive primitives, AAAA-Nexus bridge, agent-to-agent handoffs |
598
605
  | **Atomadic Assistant** | Sovereign AI assistant with cognitive loop on Cloudflare | In development |
599
606
 
600
607
  ## Pricing
@@ -643,7 +650,7 @@ Apache 2.0.
643
650
  **Forge itself is monadic.** Every source file belongs to one tier. The repo is a worked example:
644
651
 
645
652
  ```bash
646
- python -m pytest # 1176 passed, 2 skipped
653
+ python -m pytest # 1177 passed, 2 skipped
647
654
  forge doctor # Environment check
648
655
  forge wire src/atomadic_forge # Scan for violations (PASS)
649
656
  forge certify . --fail-under 100 # Score and gate the repo (100/100)
@@ -251,7 +251,7 @@ generate).
251
251
  ```bash
252
252
  git clone https://github.com/atomadictech/atomadic-forge && cd atomadic-forge
253
253
  pip install -e ".[dev]"
254
- python -m pytest # 1178 collected (1176 passed, 2 skipped)
254
+ python -m pytest # 1179 collected (1177 passed, 2 skipped)
255
255
  ```
256
256
 
257
257
  ## AI Agent integration (MCP)
@@ -271,6 +271,13 @@ Forge ships a **Model Context Protocol server** — add it to Cursor, Claude Cod
271
271
 
272
272
  ### All 63 MCP tools (local) · 40 on the deployed Worker
273
273
 
274
+ > **Recommended first call: `welcome`** — runs scout + certify + wire on the
275
+ > current repo and returns a structured situation report (score, top
276
+ > strengths, top priorities, suggested next call, agent guidance,
277
+ > capability tour, safety net). Surfaced to MCP clients via
278
+ > `serverInfo.recommended_first_call` and a per-tool
279
+ > `recommended_first_call: true` flag in `tools/list`.
280
+
274
281
  Grouped by purpose. Every tool is `tools/call`-able through the MCP
275
282
  contract; every tool returns a versioned schema (`atomadic-forge.<tool>/v<n>`).
276
283
  Run `forge mcp serve --help` for the full surface with examples.
@@ -562,7 +569,7 @@ Forge ships with named limits. No overpromise.
562
569
  | Product | What it is | Status |
563
570
  |---------|------------|--------|
564
571
  | **AAAA-Nexus** | Trust/safety/payments substrate for autonomous agents | Live at [atomadic.tech](https://atomadic.tech) |
565
- | **Atomadic Forge** | Absorb-and-emerge engine for developers (this repo) | **v0.14.0** — on PyPI, 1176 tests, 100/100, MCP server (63 tools local · 40 on Worker), four-agent hive primitives, AAAA-Nexus bridge |
572
+ | **Atomadic Forge** | Absorb-and-emerge engine for developers (this repo) | **v0.14.0** — on PyPI, 1177 tests, 100/100, MCP server (63 tools local · 40 on Worker), four-agent hive primitives, AAAA-Nexus bridge, agent-to-agent handoffs |
566
573
  | **Atomadic Assistant** | Sovereign AI assistant with cognitive loop on Cloudflare | In development |
567
574
 
568
575
  ## Pricing
@@ -611,7 +618,7 @@ Apache 2.0.
611
618
  **Forge itself is monadic.** Every source file belongs to one tier. The repo is a worked example:
612
619
 
613
620
  ```bash
614
- python -m pytest # 1176 passed, 2 skipped
621
+ python -m pytest # 1177 passed, 2 skipped
615
622
  forge doctor # Environment check
616
623
  forge wire src/atomadic_forge # Scan for violations (PASS)
617
624
  forge certify . --fail-under 100 # Score and gate the repo (100/100)
@@ -0,0 +1,184 @@
1
+ # Forge Worker auto-deploy handoff
2
+
3
+ > Doc/Orchestrator — 2026-05-06T05:22Z (T-9h to Boris demo)
4
+ >
5
+ > **Owner directive**: "Make sure the forge worker has the latest
6
+ > version and we need to somehow automate the worker update whenever
7
+ > we push a new version to github with the version tag. So all users
8
+ > who connect will always use the latest mcp and forge version."
9
+
10
+ ## Current state — and why "latest" never propagates
11
+
12
+ | Surface | Version | Source |
13
+ |---------|---------|--------|
14
+ | `pip install atomadic-forge` | **`0.14.0`** | PyPI (auto-published from `atomadictech/atomadic-forge` on tag) |
15
+ | `forge` CLI / local pip MCP | **`0.14.0`** | same |
16
+ | `forge.atomadic.tech/mcp` Worker | **`0.10.0`** ← four minor versions behind | manual `wrangler deploy` |
17
+ | Worker source | local files only at `C:\!!AtomadicStandard\atomadic-forge-cloudflare-workers\mcp\` | **NO git remote, NO CI** |
18
+
19
+ Live evidence (2026-05-06T05:18Z):
20
+
21
+ ```bash
22
+ $ curl -X POST https://forge.atomadic.tech/mcp \
23
+ -H "Content-Type: application/json" \
24
+ -H "X-API-Key: $FORGE_MASTER_API_KEY" \
25
+ --data '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"doctor","arguments":{}}}'
26
+
27
+ # {"runtime": "cloudflare-worker", "worker_version": "0.10.0", ...}
28
+ ```
29
+
30
+ ## Why this is a Boris-demo P0
31
+
32
+ Research agent caught it (`WIS-research-worker-version-drift`,
33
+ `WIS-research-worker-cli-score-divergence` on `atomadic-forge`):
34
+
35
+ - Worker v0.10.0 has the **Python-only tier classifier**.
36
+ - Local CLI v0.14.0 has the **polyglot TS/JS/Python classifier**.
37
+ - Same repo certified through Worker vs local CLI returns **different scores** (hono: Worker=30, CLI=55; atomadic-forge: Worker=80, CLI=100).
38
+ - Atomadic's chat-led `FORGE_DEMO` action calls the **Worker** via `callForgeService`, so an autonomous chat-led demo will **not reproduce captured terminal numbers**.
39
+
40
+ ## Why the Worker can't auto-update today
41
+
42
+ The Python repo `atomadictech/atomadic-forge` has the full release pipeline
43
+ (GitHub Actions on tag → PyPI publish + GitHub Release). But the **Worker
44
+ source isn't there**. It's in a sibling local directory that:
45
+
46
+ 1. has no `.git` folder
47
+ 2. is not in any GitHub repo
48
+ 3. has no `wrangler.toml [build]` triggered from CI
49
+ 4. was never linked to the Python release tag
50
+
51
+ So pushing a new tag to `atomadic-forge` does nothing for the Worker. No
52
+ matter how many `v0.14.x` releases ship, `forge.atomadic.tech/mcp` keeps
53
+ serving `0.10.0` until someone runs `wrangler deploy` manually.
54
+
55
+ ## The fix path (4 steps, all out of orchestrator scope)
56
+
57
+ ### Step 1 — get the Worker source onto GitHub
58
+
59
+ Two options. Both are dev/ops decisions for Thomas + Forge agent.
60
+
61
+ **Option A: dedicated repo** (clean separation)
62
+
63
+ ```bash
64
+ cd C:\!!AtomadicStandard\atomadic-forge-cloudflare-workers
65
+ git init
66
+ git add .
67
+ git commit -m "initial: forge MCP Worker (was local-only)"
68
+ gh repo create atomadictech/atomadic-forge-cloudflare-workers --public \
69
+ --description "Cloudflare Worker hosting forge.atomadic.tech/mcp"
70
+ git push -u origin main
71
+ ```
72
+
73
+ **Option B: subfolder of atomadic-forge** (shares CI + version)
74
+
75
+ ```bash
76
+ cd C:\!!AtomadicStandard\atomadic-forge
77
+ mkdir -p cloudflare-workers
78
+ cp -r ../atomadic-forge-cloudflare-workers/mcp cloudflare-workers/mcp
79
+ git add cloudflare-workers/
80
+ git commit -m "feat(worker): import MCP Worker source for CI auto-deploy"
81
+ git push origin main
82
+ ```
83
+
84
+ **Doc/Orchestrator's recommendation: Option B.** Reasons:
85
+
86
+ - Worker version SHOULD track Python release version — they're tied conceptually.
87
+ - The same release tag (`v0.14.0`) can fan out to PyPI AND wrangler deploy in one workflow.
88
+ - Less repo-management overhead.
89
+ - Forge agent already maintains the Python CI; adding wrangler is incremental.
90
+
91
+ ### Step 2 — add the auto-deploy workflow
92
+
93
+ Create `.github/workflows/deploy-worker.yml`:
94
+
95
+ ```yaml
96
+ name: Deploy Forge MCP Worker
97
+
98
+ on:
99
+ push:
100
+ tags:
101
+ - 'v*'
102
+ workflow_dispatch:
103
+
104
+ jobs:
105
+ deploy:
106
+ runs-on: ubuntu-latest
107
+ steps:
108
+ - uses: actions/checkout@v4
109
+
110
+ - uses: actions/setup-node@v6
111
+ with:
112
+ node-version: 20
113
+
114
+ - name: Sync Worker version with release tag
115
+ working-directory: cloudflare-workers/mcp
116
+ run: |
117
+ v="${GITHUB_REF_NAME#v}"
118
+ npm pkg set version="$v"
119
+ # Inline the version into the doctor response so the runtime
120
+ # reports it without a separate import.
121
+ sed -i "s/\"worker_version\": \"[^\"]*\"/\"worker_version\": \"$v\"/" src/a4_sy_orchestration/index.ts
122
+
123
+ - name: Install
124
+ working-directory: cloudflare-workers/mcp
125
+ run: npm ci
126
+
127
+ - name: Typecheck
128
+ working-directory: cloudflare-workers/mcp
129
+ run: npm run typecheck
130
+
131
+ - name: Deploy
132
+ working-directory: cloudflare-workers/mcp
133
+ env:
134
+ CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
135
+ CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
136
+ run: npx wrangler deploy --var WORKER_VERSION:"${GITHUB_REF_NAME#v}"
137
+ ```
138
+
139
+ ### Step 3 — add Cloudflare secrets to the repo
140
+
141
+ ```bash
142
+ gh secret set CLOUDFLARE_API_TOKEN --repo atomadictech/atomadic-forge
143
+ gh secret set CLOUDFLARE_ACCOUNT_ID --repo atomadictech/atomadic-forge
144
+ ```
145
+
146
+ (Token needs `Workers Scripts: Edit` + `Account: Read`. Operator already
147
+ has these in `.env`.)
148
+
149
+ ### Step 4 — port the v0.10.0 → v0.14.x deltas into the TS Worker
150
+
151
+ This is the part that's **NOT free**. The Worker is a TS port of the
152
+ Python tier classifier; it lags the Python source. v0.14.0's polyglot
153
+ classifier (TS/JS/Python tier detection, score 55/100 on hono / atproto /
154
+ fastapi / express) needs to be ported into `cloudflare-workers/mcp/src/`.
155
+
156
+ Proposed scope split:
157
+
158
+ - **Forge agent** writes the TS port of the polyglot classifier.
159
+ - **Cognition agent** updates `callForgeService` to read the Worker's
160
+ reported `worker_version` and degrade gracefully if the Worker is older
161
+ than the local CLI.
162
+ - **Doc agent** (this file) tracks the bump in the README + status report.
163
+
164
+ ## Interim mitigation for Boris demo (T-9h)
165
+
166
+ Per `WIS-research-worker-explain-rescue` (committed 2026-05-06T04:46Z):
167
+
168
+ - The Worker's `explain_repo` tool returns GitHub metadata + a basic
169
+ certify_score. It IS demoable.
170
+ - **Path**: chat-led demo skips `recon`/`certify`, uses `explain_repo`,
171
+ discloses **once** that this is the hosted lighter version.
172
+ - Backup: terminal-led path (`run_demo_live.bat`) uses the local CLI
173
+ v0.14.0 directly — bulletproof reproduction of captured numbers.
174
+
175
+ ## Verdict
176
+
177
+ **REFINE** — auto-deploy infrastructure does not exist; bringing the
178
+ Worker to parity with the Python release is product/ops work, not
179
+ orchestration. Doc agent has documented the gap, the fix path, and
180
+ the demo-time mitigation. Action lies with Thomas (Option A vs B
181
+ choice) and the Forge / Cognition agents (CI + classifier port).
182
+
183
+ — Docs/Orchestrator
184
+ 2026-05-06T05:22Z
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "atomadic-forge"
7
- version = "0.14.0"
7
+ version = "0.15.0"
8
8
  description = "Atomadic Forge — absorb, enforce, emerge. Polyglot (Python · JavaScript/TypeScript · Swift · Kotlin · Go) architecture guardian for AI-generated code."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -38,10 +38,10 @@ dev = [
38
38
  "build>=1,<2",
39
39
  "twine>=5,<7",
40
40
  "tomli>=2; python_version<'3.11'",
41
- "cryptography>=42,<46",
41
+ "cryptography>=42,<48",
42
42
  ]
43
43
  signing = [
44
- "cryptography>=42,<46",
44
+ "cryptography>=42,<48",
45
45
  ]
46
46
 
47
47
  [project.scripts]
@@ -0,0 +1,58 @@
1
+ """Atomadic Forge — absorb, enforce, emerge.
2
+
3
+ A monadic-architecture engine for absorbing Python or JavaScript /
4
+ TypeScript repositories into a verified 5-tier layout, enforcing layered
5
+ import discipline, and surfacing emergent compositions across the
6
+ resulting catalog.
7
+
8
+ Public version surface only — every symbol lives in its tier package and
9
+ is re-exported lazily by the CLI.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ from pathlib import Path
15
+
16
+
17
+ def _parse_project_version(text: str) -> str | None:
18
+ try:
19
+ try:
20
+ import tomllib
21
+ except ModuleNotFoundError: # pragma: no cover - Python 3.10
22
+ import tomli as tomllib # type: ignore[no-redef]
23
+ data = tomllib.loads(text)
24
+ project = data.get("project", {})
25
+ if project.get("name") == "atomadic-forge":
26
+ version = project.get("version")
27
+ return version if isinstance(version, str) else None
28
+ except Exception:
29
+ return None
30
+ return None
31
+
32
+
33
+ def _local_pyproject_version() -> str | None:
34
+ for parent in Path(__file__).resolve().parents:
35
+ pyproject = parent / "pyproject.toml"
36
+ if not pyproject.exists():
37
+ continue
38
+ version = _parse_project_version(pyproject.read_text(encoding="utf-8"))
39
+ if version:
40
+ return version
41
+ return None
42
+
43
+
44
+ def _installed_version() -> str | None:
45
+ try:
46
+ from importlib.metadata import PackageNotFoundError as _PNF
47
+ from importlib.metadata import version as _pkg_version
48
+ try:
49
+ return _pkg_version("atomadic-forge")
50
+ except _PNF:
51
+ return None
52
+ except ImportError: # pragma: no cover - Python < 3.8 path
53
+ return None
54
+
55
+
56
+ # Source checkouts prefer their own pyproject.toml; installed wheels fall
57
+ # back to package metadata because wheel installs do not ship pyproject.toml.
58
+ __version__ = _local_pyproject_version() or _installed_version() or "0.0.0+dev"
@@ -0,0 +1,44 @@
1
+ """Tier a0 — enhancement-proposal constants.
2
+
3
+ When Forge (or an agent driving Forge) discovers a pattern strong
4
+ enough to become a new tool / feature, it can submit an enhancement
5
+ proposal. Proposals are logged as JSONL; an optional AAAA-Nexus
6
+ trust-gate call gives the proposal a trust score; publishing to
7
+ GitHub stays human-gated (never auto-posted).
8
+ """
9
+ from __future__ import annotations
10
+
11
+ from typing import Final
12
+
13
+ SCHEMA_VERSION_ENHANCEMENT_PROPOSAL_V1: Final[str] = (
14
+ "atomadic-forge.enhancement_proposal/v1"
15
+ )
16
+
17
+ PROPOSAL_DIR_REL: Final[str] = ".atomadic-forge/enhancement_proposals"
18
+ PROPOSAL_LOG_REL: Final[str] = (
19
+ ".atomadic-forge/enhancement_proposals/forge_enhancement_proposals.jsonl"
20
+ )
21
+
22
+ # Trust threshold below which a proposal is logged-only (never published).
23
+ # Above this, the proposal becomes eligible for `forge enhancement publish`
24
+ # (which still requires an explicit human approval).
25
+ DEFAULT_TRUST_THRESHOLD: Final[float] = 0.75
26
+
27
+ # Trust verdicts accepted from the trust-gate response.
28
+ TRUST_VERDICT_PASS: Final[str] = "PASS"
29
+ TRUST_VERDICT_FAIL: Final[str] = "FAIL"
30
+ TRUST_VERDICT_OFFLINE: Final[str] = "OFFLINE"
31
+ TRUST_VERDICT_VALUES: Final[frozenset[str]] = frozenset({
32
+ TRUST_VERDICT_PASS, TRUST_VERDICT_FAIL, TRUST_VERDICT_OFFLINE,
33
+ })
34
+
35
+ __all__ = [
36
+ "DEFAULT_TRUST_THRESHOLD",
37
+ "PROPOSAL_DIR_REL",
38
+ "PROPOSAL_LOG_REL",
39
+ "SCHEMA_VERSION_ENHANCEMENT_PROPOSAL_V1",
40
+ "TRUST_VERDICT_FAIL",
41
+ "TRUST_VERDICT_OFFLINE",
42
+ "TRUST_VERDICT_PASS",
43
+ "TRUST_VERDICT_VALUES",
44
+ ]
@@ -0,0 +1,21 @@
1
+ """Tier a0 — lifetime token-savings ledger constants.
2
+
3
+ Every time a Forge welcome (or any opt-in tool) runs, it appends a
4
+ single JSONL line to the ledger with {timestamp, tool, tokens_saved}.
5
+ The welcome flow reads + sums to surface a lifetime cumulative total
6
+ so users see savings add up across sessions.
7
+ """
8
+ from __future__ import annotations
9
+
10
+ from typing import Final
11
+
12
+ LIFETIME_LEDGER_REL: Final[str] = ".atomadic-forge/tokens_saved.jsonl"
13
+
14
+ SCHEMA_VERSION_LIFETIME_SAVINGS_V1: Final[str] = (
15
+ "atomadic-forge.lifetime_savings/v1"
16
+ )
17
+
18
+ __all__ = [
19
+ "LIFETIME_LEDGER_REL",
20
+ "SCHEMA_VERSION_LIFETIME_SAVINGS_V1",
21
+ ]
@@ -0,0 +1,35 @@
1
+ """Tier a0 — types for the Materialize pipeline.
2
+
3
+ Materialize takes ranked emergent candidates and writes a fresh,
4
+ pip-installable Python package containing one a3 feature module per
5
+ selected candidate, plus a tier-organized scaffold (pyproject, README,
6
+ tests, tier __init__.py files).
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from typing import TypedDict
12
+
13
+
14
+ class MaterializedFileCard(TypedDict):
15
+ """One file written during materialize."""
16
+
17
+ path: str # absolute path on disk
18
+ role: str # "feature" | "scaffold" | "test" | "init"
19
+ candidate_id: str # "" if not feature-derived
20
+ bytes: int
21
+
22
+
23
+ class MaterializeReport(TypedDict):
24
+ """Top-level result of `forge materialize`."""
25
+
26
+ schema_version: str # "atomadic-forge.materialize/v1"
27
+ generated_at_utc: str
28
+ out_dir: str
29
+ package: str
30
+ candidates_selected: list[str] # candidate_ids in order
31
+ files_written: list[MaterializedFileCard]
32
+ certify_score: float | None # null if --no-certify
33
+ certify_grade: str | None # "PASS" | "REFINE" | "FAIL" | None
34
+ wire_violations: int | None # null if not run
35
+ summary_line: str
@@ -0,0 +1,38 @@
1
+ """Tier a0 — response-enrichment constants.
2
+
3
+ The ``scope`` block surfaces real measurements the tool already produced
4
+ (files scanned, symbols analyzed, traversal depth, wall-clock time)
5
+ alongside a transparent token-savings ESTIMATE. Every estimate ships
6
+ with its formula in ``tokens_saved_basis`` so a reader can audit the
7
+ math instead of trusting the number.
8
+
9
+ Defaults are conservative middle-ground heuristics. They will land in
10
+ the wrong neighborhood for any specific agent/model/prompt combo;
11
+ ``tokens_saved_basis`` is always present so callers can see exactly
12
+ how the number was derived and recompute if they want a different
13
+ baseline.
14
+ """
15
+ from __future__ import annotations
16
+
17
+ from typing import Final
18
+
19
+ SCHEMA_VERSION_SCOPE_V1: Final[str] = "atomadic-forge.scope/v1"
20
+
21
+ # Per-file token cost a human/agent would pay to manually open + scan
22
+ # one source file end-to-end. 40 tok ≈ ~150 chars ≈ a small Python
23
+ # module's signatures + dependencies (NOT full body). This is the
24
+ # lower-bound "bare review" cost; full reading + reasoning is much
25
+ # higher. We pick the lower bound deliberately so the estimate cannot
26
+ # be accused of inflating ROI.
27
+ TOKENS_PER_FILE_REVIEW: Final[int] = 40
28
+
29
+ # Per-symbol cost for traversal-style operations (emergent_scan,
30
+ # call_graph). One symbol ≈ ~12 tok of read cost when an agent is
31
+ # building a mental graph of a codebase.
32
+ TOKENS_PER_SYMBOL_TRAVERSAL: Final[int] = 12
33
+
34
+ __all__ = [
35
+ "SCHEMA_VERSION_SCOPE_V1",
36
+ "TOKENS_PER_FILE_REVIEW",
37
+ "TOKENS_PER_SYMBOL_TRAVERSAL",
38
+ ]
@@ -116,6 +116,13 @@ SCHEMA_VERSIONS: dict[str, str] = {
116
116
  # v0.14.0a9 — handoff: structured agent-to-agent session transfer
117
117
  "handoff_create": "atomadic-forge.handoff/v1",
118
118
  "handoff_list": "atomadic-forge.handoff/v1",
119
+
120
+ # v0.14.0a11 — enhancement proposals (trust-gated, human-published)
121
+ "enhancement_propose": "atomadic-forge.enhancement_proposal/v1",
122
+ "enhancement_list": "atomadic-forge.enhancement_proposal/v1",
123
+
124
+ # v0.14.0a12 — welcome: first-call handshake
125
+ "welcome": "atomadic-forge.welcome/v1",
119
126
  }
120
127
 
121
128