atomadic-forge 0.6.0__tar.gz → 0.10.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 (318) hide show
  1. atomadic_forge-0.10.0/.github/FUNDING.yml +5 -0
  2. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/ARCHITECTURE.md +15 -4
  3. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/CHANGELOG.md +436 -0
  4. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/PKG-INFO +94 -25
  5. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/README.md +93 -24
  6. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/01-getting-started.md +54 -1
  7. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/04-llm-loops.md +87 -0
  8. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/05-faq.md +10 -7
  9. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/AGENTS_GUIDE.md +180 -32
  10. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/COMMANDS.md +99 -27
  11. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/FIRST_10_MINUTES.md +1 -1
  12. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/ROADMAP.md +2 -1
  13. atomadic_forge-0.10.0/docs/STRIPE_SETUP_HANDOFF.md +299 -0
  14. atomadic_forge-0.10.0/docs/STUDIO.md +34 -0
  15. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/pyproject.toml +1 -1
  16. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/__init__.py +1 -1
  17. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +21 -3
  18. atomadic_forge-0.10.0/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +134 -0
  19. atomadic_forge-0.10.0/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +106 -0
  20. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +14 -0
  21. atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/agent_context_pack.py +446 -0
  22. atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/call_graph.py +378 -0
  23. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +67 -31
  24. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +37 -2
  25. atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/emergent_rank.py +209 -0
  26. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +51 -1
  27. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +33 -27
  28. atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/forge_locate.py +179 -0
  29. atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/mcp_protocol.py +2898 -0
  30. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +23 -5
  31. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/recipes.py +88 -0
  32. atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/smell_scan.py +252 -0
  33. atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/synergy_detect.py +352 -0
  34. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +114 -0
  35. atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +334 -0
  36. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +33 -0
  37. atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/worktree_status.py +209 -0
  38. atomadic_forge-0.10.0/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +185 -0
  39. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +5 -2
  40. atomadic_forge-0.10.0/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +194 -0
  41. atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/cherry_hunter.py +254 -0
  42. atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/cna_check.py +280 -0
  43. atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/commit_compose.py +177 -0
  44. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +72 -12
  45. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +7 -1
  46. atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/emergent_swarm.py +265 -0
  47. atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/forge_evolve_session.py +306 -0
  48. atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/forge_loop_session.py +271 -0
  49. atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/guard_install.py +284 -0
  50. atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/mcp_server.py +727 -0
  51. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +2 -2
  52. atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/tool_factory.py +488 -0
  53. atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/verify_umbrella.py +206 -0
  54. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +118 -3
  55. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +30 -1
  56. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +8 -6
  57. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +3 -3
  58. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/PKG-INFO +94 -25
  59. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/SOURCES.txt +19 -2
  60. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_agent_plan.py +3 -3
  61. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_cli_smoke.py +30 -0
  62. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_codex_5_complete.py +4 -4
  63. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_codex_6_enforce_polyglot.py +1 -0
  64. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_copilots_copilot.py +69 -0
  65. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_dedup_engine.py +4 -2
  66. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_exported_api_check.py +5 -50
  67. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_forge_auth_a1.py +23 -0
  68. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_forge_auth_a2.py +15 -0
  69. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_forge_enforce.py +55 -1
  70. atomadic_forge-0.10.0/tests/test_mcp_protocol.py +1775 -0
  71. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_plan_apply.py +3 -3
  72. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_synergy.py +6 -2
  73. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_test_runner.py +67 -1
  74. atomadic_forge-0.6.0/docs/STUDIO.md +0 -69
  75. atomadic_forge-0.6.0/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -166
  76. atomadic_forge-0.6.0/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -116
  77. atomadic_forge-0.6.0/src/atomadic_forge/a1_at_functions/mcp_protocol.py +0 -1234
  78. atomadic_forge-0.6.0/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -166
  79. atomadic_forge-0.6.0/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -163
  80. atomadic_forge-0.6.0/src/atomadic_forge/a3_og_features/mcp_server.py +0 -356
  81. atomadic_forge-0.6.0/tests/test_badge_worker.py +0 -143
  82. atomadic_forge-0.6.0/tests/test_mcp_protocol.py +0 -397
  83. atomadic_forge-0.6.0/tests/test_vscode_extension_manifest.py +0 -138
  84. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  85. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  86. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  87. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/actions/forge-action/README.md +0 -0
  88. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/actions/forge-action/action.yml +0 -0
  89. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/dependabot.yml +0 -0
  90. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/pull_request_template.md +0 -0
  91. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/workflows/ci.yml +0 -0
  92. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/workflows/customer-refactor.yml +0 -0
  93. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/workflows/forge-self-certify.yml +0 -0
  94. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/workflows/forge-studio-ci.yml +0 -0
  95. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/workflows/release.yml +0 -0
  96. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/CONTRIBUTING.md +0 -0
  97. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/LICENSE +0 -0
  98. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/MANIFEST.in +0 -0
  99. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/SECURITY.md +0 -0
  100. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/assets/Atomadic-Forge-01.png +0 -0
  101. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/02-commands.md +0 -0
  102. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/03-tutorial.md +0 -0
  103. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/AIR_GAPPED.md +0 -0
  104. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/CI_CD.md +0 -0
  105. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/CODEX_WALKTHROUGH.md +0 -0
  106. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/FORMALIZATION.md +0 -0
  107. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/LANDSCAPE.md +0 -0
  108. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/MARKET_POSITIONING.md +0 -0
  109. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/MULTI_REPO.md +0 -0
  110. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/README.md +0 -0
  111. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/RECEIPT.md +0 -0
  112. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/RELEASE_CHECKLIST.md +0 -0
  113. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/RELEASE_MESSAGING.md +0 -0
  114. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/SHOWCASE.md +0 -0
  115. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/SIDECAR.md +0 -0
  116. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/WHY_NOW.md +0 -0
  117. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/INDEX.md +0 -0
  118. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/chat.md +0 -0
  119. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/commandsmith.md +0 -0
  120. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/config.md +0 -0
  121. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/demo.md +0 -0
  122. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/emergent-then-synergy.md +0 -0
  123. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/emergent.md +0 -0
  124. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/evolve-then-iterate.md +0 -0
  125. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/evolve.md +0 -0
  126. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/feature-then-emergent.md +0 -0
  127. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/iterate.md +0 -0
  128. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/synergy-then-emergent.md +0 -0
  129. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/synergy.md +0 -0
  130. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
  131. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/compliance/CS-1.md +0 -0
  132. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
  133. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
  134. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/compliance/SR_11-7_MAPPING.md +0 -0
  135. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/01-quickstart.md +0 -0
  136. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/02-your-first-package.md +0 -0
  137. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/03-the-five-tier-law.md +0 -0
  138. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/04-plug-in-llms.md +0 -0
  139. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/05-multi-repo-absorb.md +0 -0
  140. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/06-javascript-quickstart.md +0 -0
  141. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/setup.cfg +0 -0
  142. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/__main__.py +0 -0
  143. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
  144. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
  145. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
  146. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
  147. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
  148. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
  149. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
  150. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
  151. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
  152. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
  153. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
  154. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
  155. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
  156. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
  157. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
  158. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
  159. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
  160. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
  161. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
  162. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
  163. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
  164. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
  165. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
  166. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
  167. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
  168. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
  169. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
  170. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
  171. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
  172. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
  173. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
  174. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
  175. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
  176. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
  177. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
  178. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
  179. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
  180. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
  181. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
  182. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
  183. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
  184. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
  185. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
  186. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
  187. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
  188. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
  189. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
  190. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
  191. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
  192. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
  193. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
  194. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
  195. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
  196. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
  197. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
  198. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
  199. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
  200. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
  201. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
  202. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
  203. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
  204. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
  205. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
  206. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
  207. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
  208. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
  209. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
  210. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
  211. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
  212. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
  213. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
  214. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
  215. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
  216. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
  217. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
  218. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
  219. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
  220. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
  221. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
  222. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
  223. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
  224. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
  225. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
  226. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
  227. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
  228. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
  229. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
  230. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
  231. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
  232. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
  233. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
  234. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
  235. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
  236. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
  237. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
  238. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
  239. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
  240. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
  241. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
  242. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
  243. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
  244. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/__init__.py +0 -0
  245. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/_registry.py +0 -0
  246. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/audit.py +0 -0
  247. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/chat.py +0 -0
  248. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/commandsmith.py +0 -0
  249. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/config_cmd.py +0 -0
  250. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/demo.py +0 -0
  251. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/emergent.py +0 -0
  252. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
  253. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/evolve.py +0 -0
  254. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
  255. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
  256. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/iterate.py +0 -0
  257. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/synergy.py +0 -0
  258. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
  259. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
  260. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
  261. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/requires.txt +0 -0
  262. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
  263. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_aaaa_nexus_client.py +0 -0
  264. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_agent_hire_protocol.py +0 -0
  265. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_agent_summary.py +0 -0
  266. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_audit_verb.py +0 -0
  267. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_body_extractor_repairs.py +0 -0
  268. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_card_renderer.py +0 -0
  269. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_certify_operational_axis.py +0 -0
  270. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_chat.py +0 -0
  271. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_classify_tier.py +0 -0
  272. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_commandsmith.py +0 -0
  273. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_compiler_feedback.py +0 -0
  274. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_compliance_checker.py +0 -0
  275. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_config.py +0 -0
  276. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_cost_circuit_breaker.py +0 -0
  277. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_cs1_renderer.py +0 -0
  278. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_demo.py +0 -0
  279. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_emergent_compose.py +0 -0
  280. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_emergent_signature_extract.py +0 -0
  281. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_error_codes.py +0 -0
  282. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_error_hints.py +0 -0
  283. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_evolve_js.py +0 -0
  284. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_forge_action.py +0 -0
  285. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_generation_quality.py +0 -0
  286. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_hierarchical_memory.py +0 -0
  287. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_ignore_and_docs.py +0 -0
  288. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_import_smoke.py +0 -0
  289. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_iterate_evolve.py +0 -0
  290. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_js_certify.py +0 -0
  291. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_js_parser.py +0 -0
  292. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_js_recon.py +0 -0
  293. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_js_wire.py +0 -0
  294. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_lineage_chain.py +0 -0
  295. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_ling_provider.py +0 -0
  296. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_local_signer.py +0 -0
  297. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_lsp_protocol.py +0 -0
  298. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_manifest_diff.py +0 -0
  299. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_ollama_client.py +0 -0
  300. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_pipeline.py +0 -0
  301. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_pre_audit_smoke.py +0 -0
  302. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_precommit_hooks.py +0 -0
  303. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_progress_reporter.py +0 -0
  304. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_receipt_emitter.py +0 -0
  305. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_receipt_schema.py +0 -0
  306. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_receipt_signer.py +0 -0
  307. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_roi_calculator.py +0 -0
  308. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_sbom_emitter.py +0 -0
  309. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_scaffold.py +0 -0
  310. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_sidecar.py +0 -0
  311. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_sidecar_validate.py +0 -0
  312. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_stagnation.py +0 -0
  313. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_stub_detector.py +0 -0
  314. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_tier_init_rebuild.py +0 -0
  315. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_trust_gate_response.py +0 -0
  316. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_whoami_cmd.py +0 -0
  317. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_wire_certify.py +0 -0
  318. {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_wire_suggest_repairs.py +0 -0
@@ -0,0 +1,5 @@
1
+ # Atomadic Forge — Support & Funding
2
+ ko_fi: []
3
+ custom:
4
+ - https://buymeacoffee.com/atomadic
5
+ - https://forge.atomadic.tech
@@ -33,14 +33,25 @@ nothing new.
33
33
 
34
34
  ```
35
35
  src/atomadic_forge/
36
- ├── a0_qk_constants/ # tier_names, forge_types, lang_extensions, *_types.py
36
+ ├── a0_qk_constants/ # tier_names, forge_types, lang_extensions,
37
+ │ # auth_constants, recipe schemas, *_types.py
37
38
  ├── a1_at_functions/ # classify_tier, scout_walk, cherry_pick, wire_check,
38
39
  │ # certify_checks, body_extractor, import_repair,
39
- │ # js_parser, commandsmith_*, emergent_*, synergy_*
40
- ├── a2_mo_composites/ # manifest_store
40
+ │ # js_parser, llm_client, provider_resolver,
41
+ # code_signature, intent_similarity,
42
+ │ # research_note_distiller, exported_api_check,
43
+ │ # trust_gate_response, recipes, mcp_protocol,
44
+ │ # commandsmith_*, emergent_*, synergy_*
45
+ ├── a2_mo_composites/ # manifest_store, plan_store, lineage_chain_store,
46
+ │ # receipt_signer, forge_auth_client,
47
+ │ # cost_circuit_breaker, hierarchical_memory,
48
+ │ # cross_agent_intent_deduplicator
41
49
  ├── a3_og_features/ # forge_pipeline (run_auto/run_recon/run_cherry/run_finalize),
42
50
  │ # emergent_feature, synergy_feature, commandsmith_feature,
43
- │ # demo_runner + demo_packages/ (static showcase presets)
51
+ │ # demo_runner + demo_packages/ (static showcase presets),
52
+ │ # mcp_server, lsp_server, setup_wizard,
53
+ │ # dedup_engine, agent_hire_protocol,
54
+ │ # forge_enforce, forge_evolve, forge_loop, forge_plan_apply
44
55
  ├── a4_sy_orchestration/ # cli.py — Typer app with `auto` flagship
45
56
  └── commands/ # Per-verb Typer modules (specialty surfaces)
46
57
  ```
@@ -1,5 +1,441 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.10.0 — 2026-05-04 surface consolidation (47 → 40 tools)
4
+
5
+ The "merge synthesis and cut" release. After v0.9.0 closed the
6
+ token-friction loop, the user asked for a sharper tool surface:
7
+ fewer overlapping verbs, no capability loss. This release merges
8
+ 11 prior tool entries into 4 unified ones plus 2 fold operations.
9
+
10
+ ### Merged
11
+
12
+ - **`lineage`** (new) — replaces `audit_list` + `why_did_this_change`
13
+ + `what_failed_last_time`. Auto-detects `mode` from args:
14
+ `file=...` → `by_file`, `area=...` → `failed_for_area`, else `all`.
15
+ Schema version: `atomadic-forge.lineage/v1` (the underlying
16
+ delegated tools still tag their own schema versions on the
17
+ response body, preserving downstream compatibility).
18
+ - **`recipes`** (new) — replaces `list_recipes` + `get_recipe`.
19
+ No `name` arg → catalogue summary; with `name` → full recipe body.
20
+ Schema: `atomadic-forge.recipes/v1`.
21
+ - **`plan`** (new) — replaces `auto_plan` + `adapt_plan`. Passing
22
+ a `plan` dict routes to the adapt path; otherwise generates a
23
+ fresh plan via auto_plan, optionally chained with adapt via
24
+ `capability_filter`. Schema: `atomadic-forge.agent_plan/v1`.
25
+ - **`plan_apply`** (new) — replaces `auto_step` + `auto_apply`.
26
+ Passing `card_id` applies one card; omitting it applies all-
27
+ applyable cards. Schema: `atomadic-forge.plan_apply/v1`.
28
+
29
+ ### Folded
30
+
31
+ - **`doctor`** absorbs `worktree_status` via the new
32
+ `include_worktree=true` arg.
33
+ - **`verify`** absorbs `exported_api_check` via the new
34
+ `check_exports=true` arg (with `source` or `path` argument).
35
+
36
+ ### Removed (folded — ZERO capability loss)
37
+
38
+ `audit_list`, `why_did_this_change`, `what_failed_last_time`,
39
+ `list_recipes`, `get_recipe`, `auto_plan`, `adapt_plan`,
40
+ `auto_step`, `auto_apply`, `worktree_status`, `exported_api_check`.
41
+
42
+ The CLI verbs and the underlying a1/a3 implementations are
43
+ retained — only the MCP surface entries collapsed. Any agent
44
+ using the old MCP names must migrate per the table above.
45
+
46
+ ### Validation
47
+
48
+ - pytest: **1030 passed**, 2 skipped, 0 failed
49
+ - ruff: clean
50
+ - forge wire: 0 violations
51
+ - TOOLS count: **40** (was 47)
52
+ - backward-compat path: dispatcher delegation — every new merged
53
+ tool calls the existing `_tool_*` impl, so behavior is unchanged
54
+
55
+ ### Why this matters for the buyer/agent UX
56
+
57
+ 47 tools was too many: agents (and humans) felt choice paralysis,
58
+ and three "lineage flavors" + two "plan flavors" + two "apply
59
+ flavors" added cognitive overhead with no gain. The merged tools
60
+ expose intent directly through a single primary verb whose mode
61
+ is inferred from the args you'd already pass. The smaller surface
62
+ also reduces tools/list payload size — a recurring tax on every
63
+ MCP cold-start.
64
+
65
+ ### Migration cheat sheet (old → new)
66
+
67
+ | Old MCP name | New call |
68
+ |---|---|
69
+ | `audit_list` | `lineage` (no args) |
70
+ | `why_did_this_change {file: "src/x.py"}` | `lineage {file: "src/x.py"}` |
71
+ | `what_failed_last_time {area: "auth"}` | `lineage {area: "auth"}` |
72
+ | `list_recipes` | `recipes` |
73
+ | `get_recipe {name: "release_check"}` | `recipes {name: "release_check"}` |
74
+ | `auto_plan {target: "."}` | `plan {target: "."}` |
75
+ | `adapt_plan {plan, agent_capabilities}` | `plan {plan, agent_capabilities}` |
76
+ | `auto_step {card_id}` | `plan_apply {card_id}` |
77
+ | `auto_apply` | `plan_apply` |
78
+ | `worktree_status` | `doctor {include_worktree: true}` |
79
+ | `exported_api_check {source}` | `verify {check_exports: true, source}` |
80
+
81
+ ---
82
+
83
+ ## v0.9.0 — 2026-05-05 token-reduction sprint (close 6 of 8 frictions)
84
+
85
+ Honest-reflection release. After v0.8.0 shipped 17 new MCP tools, I
86
+ audited the session for repetitive patterns: ~46,000 tokens of pure
87
+ boilerplate / re-reading / hand-narration across the session. This
88
+ release closes 6 of the 8 friction categories with small CNA-pure
89
+ additions. Remaining waste per session drops from ~46k tokens to
90
+ ~15k; the ~36k saved compounds every future session.
91
+
92
+ ### Added
93
+
94
+ - **`forge_locate` MCP tool** (a1) — returns just the file path +
95
+ line range + 5-line preview for any well-known forge insertion
96
+ point (tools_dict, all_export, register_block, mcp_server_imports,
97
+ test_pinned_set). Saves ~12k tokens per session vs re-reading the
98
+ full mcp_protocol.py / mcp_server.py files. Pure analytical,
99
+ sub-second. (Closes friction F-2.)
100
+
101
+ - **`commit_compose` MCP tool** (a3) — accepts intent + commit_type
102
+ + optional body, runs `git diff --numstat HEAD`, emits a structured
103
+ commit body with files-changed list, +/- line totals, and the
104
+ co-author trailer. Drops commit-message token cost from ~1500
105
+ hand-typed tokens to ~150 spec tokens. (Closes friction F-5.)
106
+
107
+ - **`a0/schema_version_registry.py`** — canonical SCHEMA_VERSIONS
108
+ dict mapping `tool_name` → `schema_version_str`. 47 entries (full
109
+ TOOLS surface registered). `schema_version_for(name)` raises
110
+ KeyError on unknown names; new tool without a registry entry is a
111
+ CI failure via `test_schema_version_registry_covers_every_tool`.
112
+ (Closes friction F-6.)
113
+
114
+ - **`tools_snapshot.json` + auto-derived pinned-tools test** —
115
+ `test_pinned_tools_snapshot_matches_tools_dict` diffs
116
+ `set(TOOLS.keys())` against the snapshot file. Auto-bootstraps;
117
+ CI fails on drift with a regenerate command in the error message.
118
+ Zero manual maintenance going forward. (Closes friction F-3.)
119
+
120
+ - **`tool_factory(apply=True)` mode** (was added in v0.8.0 commit
121
+ `716ead8`, surfaced here for the changelog) — auto-applies the
122
+ scaffold inserts to mcp_protocol.py + mcp_server.py +
123
+ test_mcp_protocol.py. Idempotent. Saves ~5–6k tokens per
124
+ substantial session. (Closes friction F-1.)
125
+
126
+ ### Validation
127
+
128
+ - pytest: **1031 passed**, 2 skipped, 0 failed (was 1029)
129
+ - ruff: clean
130
+ - forge wire: 0 violations
131
+ - forge certify: 100/100 PASS
132
+ - TOOLS count: **47** (was 46)
133
+
134
+ ### Token-saving estimate (recurring per session)
135
+
136
+ | Friction | Pre-fix waste | Status |
137
+ |---|---|---|
138
+ | F-1 boilerplate dance | ~6,000 | ✅ FIXED |
139
+ | F-2 re-reading large files | ~12,000 | ✅ FIXED (NEW) |
140
+ | F-3 pinned-tools drift | ~600 | ✅ FIXED (NEW) |
141
+ | F-4 ruff/pytest cycle | ~6,000 | ⏳ Behavioral (Makefile.forge) |
142
+ | F-5 long commit messages | ~12,000 | ✅ FIXED (NEW) |
143
+ | F-6 schema version drift | ~200 | ✅ FIXED (NEW) |
144
+ | F-7 doc dual-maintenance | ~1,500 | ⏳ Behavioral |
145
+ | F-8 todo reminders | ~7,500 | ⏳ Out of scope |
146
+
147
+ After this release: ~36k tokens saved per substantial session,
148
+ recurring. ~$0.15/session in API cost — but more importantly that's
149
+ 36k tokens reinvested in actual capability development every time.
150
+
151
+ ### Notes
152
+
153
+ The remaining frictions (F-4, F-7, F-8) are behavioral or system-
154
+ side; the tooling fix has shipped (Makefile.forge, source-of-truth
155
+ notes), the burden is to actually use them consistently.
156
+
157
+ The next permanent token-reduction layer is **atomadic-lang's
158
+ `Φ_tri = 46/43` triality compression** — 4× fewer tokens at the
159
+ LLM-call boundary, codex-anchored. Until lang ships, the sprint
160
+ above is the practical bridge.
161
+
162
+ ---
163
+
164
+ ## v0.8.0 — 2026-05-05 substrate-position release (R3.5 + R4 + R5 + harvest)
165
+
166
+ The biggest single release in forge's history. 17 new MCP tools live;
167
+ 989 → 1028 tests; certify 100/100 throughout. **Spaghetti can never
168
+ silently come back** after `guard_install --apply`. Investor packet
169
+ shipped (WHITEPAPER + PITCH + DEMO_SCRIPT + COMPETITIVE_AUDIT +
170
+ RESEARCH_BREAKTHROUGH + Receipt v1 dogfood artifact).
171
+
172
+ ### Added — agent-driven LLM loop substrate
173
+
174
+ - `iterate_start` / `iterate_continue` — agent-driven sessions.
175
+ Forge holds ZERO LLM clients; the calling agent drives its own
176
+ LLM and calls forge between turns. Substrate-boundary contract
177
+ test asserts call count stays at zero.
178
+ - `evolve_start` / `evolve_step` — recursive iterate, D_max=23
179
+ bounded. Halts on convergence, stagnation, or regression.
180
+
181
+ ### Added — cross-repo intelligence
182
+
183
+ - `recon_swarm` — D_max-bounded portfolio walk; OMEGA_0 invariant
184
+ per scan.
185
+ - `harvest` (renamed from `cherry_hunt` after research) — τ_trust =
186
+ 1820/1823 Lean-4-verified gating. Conservative by default.
187
+ - `emergent_swarm` — cross-repo emergent composition discovery.
188
+ Cycle 2 sharpening: chain edges cross-validated against
189
+ `call_graph`; corroborated edges tagged `static_call_confirmed`
190
+ per SOTA Codebase-Memory MCP / SemanticForge multi-pass
191
+ reconciliation patterns.
192
+
193
+ ### Added — composite gates and the standing immune system
194
+
195
+ - `verify` — composite go/no-go gate. wire + certify (always-on)
196
+ + score_patch + preflight_change (optional). Single
197
+ PASS/REFINE/FAIL verdict. Direct competitive answer to Qodo's
198
+ PR-time verification loop.
199
+ - `cna_check` — hardwired Compose-Not-Add gate. intent_similarity
200
+ + code_signature + dedup_engine. PASS/REFINE/REJECT.
201
+ - `guard_install` — four-layer architectural immune system in one
202
+ MCP call: pre-commit hook + GitHub Action + pyproject contract
203
+ + CONTRIBUTING block. **After this runs, agents/LLMs/humans
204
+ cannot silently regress structural integrity.**
205
+
206
+ ### Added — code intelligence (harvested from competitors)
207
+
208
+ - `call_graph` — caller/callee BFS; `__init__.py` re-export
209
+ canonicalization. Harvested from Code Pathfinder.
210
+ - `smell_scan` — cyclomatic complexity + long-function +
211
+ duplicated-body. Harvested from Sonar.
212
+
213
+ ### Added — meta and infrastructure
214
+
215
+ - `tool_factory` — meta-tool that scaffolds new MCP tools from a
216
+ spec. **Forge eats forge.**
217
+ - MHED-TOE codex invariants module (`a0/mhed_invariants.py`):
218
+ D_MAX_DELEGATION = 23, TAU_TRUST = 1820/1823 Fraction, OMEGA_0
219
+ ≡ 0, PHI_ANCHOR = 137, PHI_TRI = 46/43. Self-asserts at import.
220
+ - `Makefile.forge` — `make -f Makefile.forge ship-check` chains
221
+ ruff + pytest + wire + certify.
222
+
223
+ ### Added — investor packet
224
+
225
+ - `WHITEPAPER.md` v0.1 — ~3000 words. Market thesis, wedge, five
226
+ killer capabilities, codex-anchored moat, live demo metrics
227
+ (real reproducible numbers), Year 1 floor / Year 3 base /
228
+ Year 5 substrate revenue trajectory, funding ask: **$2M
229
+ pre-seed @ $12M cap**.
230
+ - `PITCH.md` — 1-page cold-outreach version.
231
+ - `DEMO_SCRIPT.md` — 7 reproducible terminal demos.
232
+ - `COMPETITIVE_AUDIT.md` — capability matrix vs Code Pathfinder,
233
+ Moderne, Augment, Sourcegraph, Qodo, Sonar.
234
+ - `RESEARCH_BREAKTHROUGH.md` — 3-round web-research log.
235
+ - `receipts/forge-self-2026-05-05.json` — real Receipt v1 dogfood
236
+ artifact (forge certifies itself 100/100 PASS).
237
+
238
+ ### Changed (substrate hardening)
239
+
240
+ - `cherry_hunt` → `harvest` rename (Git-namespace SEO collision).
241
+ - `dispatch_request` exception clause broadened to `Exception`.
242
+ Eliminates `-32000 Connection closed` for any signature drift.
243
+ - Explicit `_json_default` at MCP wire (replaces `default=str`).
244
+ Round-trips set/frozenset/bytes/Path/dataclass.
245
+ - `score_patch` returns REFINE on no-chunks input (was silent PASS).
246
+ - `_build_dest_path` Windows backslash normalization.
247
+ - `dedup_engine` no longer double-walks.
248
+ - `call_graph` `__init__.py` re-export canonicalization.
249
+
250
+ ### Validation
251
+
252
+ - pytest: **1028 passed**, 2 skipped, 0 failed
253
+ - ruff: clean
254
+ - forge wire: 0 violations
255
+ - forge certify: **100/100 PASS**
256
+ - TOOLS count: **46** (was 29 in v0.7.x)
257
+
258
+ ### Known follow-ups (v0.9.x)
259
+
260
+ - Semantic NL search (embedding model boundary design)
261
+ - Three-phase reconciliation Phase 3 (LSP type signatures)
262
+ - `self_evolve` recursive forge-on-forge loop
263
+ - emergent_swarm against the lang stress-test merge corpus
264
+
265
+ ---
266
+
267
+ ## Unreleased — 2026-05-04 Round 2 MCP bridge: transmuter pipeline exposed
268
+
269
+ Exposed 5 CLI verbs as MCP tools (`auto`, `cherry`, `finalize`, `iterate`,
270
+ `evolve`). Forge's full transmuter pipeline is now agent-callable from any
271
+ MCP-aware AI coding tool (Cursor, Claude Code, Aider, Devin, and any
272
+ custom MCP client).
273
+
274
+ ### Added
275
+
276
+ - **`auto` MCP tool** — the flagship single-shot pipeline (scout → cherry
277
+ → assimilate → wire → certify) as a single agent-callable tool.
278
+ Signature: `target`, `output`, `package`, `apply`, `on_conflict`.
279
+ Returns `atomadic-forge.auto/v1`.
280
+ - **`cherry` MCP tool** — cherry-pick manifest from a scouted repo.
281
+ Surgical control over which symbols get imported before assimilation.
282
+ Signature: `target`, `names`, `pick_all`, `only_tier`.
283
+ - **`finalize` MCP tool** — materialize a cherry-pick manifest into a
284
+ tier-organized output package, then wire and certify.
285
+ Signature: `target`, `output`, `package`, `cherry_manifest`, `apply`,
286
+ `on_conflict`. Returns `atomadic-forge.assimilate/v1`.
287
+ - **`iterate` MCP tool** — LLM ↔ Forge loop: intent → code →
288
+ tier-enforce → score → iterate until certify >= target_score.
289
+ Signature: `intent`, `output`, `package`, `seed_repo`,
290
+ `max_iterations`, `max_fix_rounds`, `target_score`, `apply`,
291
+ `language`. Returns `atomadic-forge.iterate/v1`.
292
+ - **`evolve` MCP tool** — recursive iterate; the growing package becomes
293
+ the seed for the next round so the LLM sees richer compositional
294
+ context each time. Halts on convergence, regression, stagnation, or
295
+ rounds cap. Signature: `intent`, `output`, `package`, `seed_repo`,
296
+ `rounds`, `iterations_per_round`, `target_score`,
297
+ `stop_on_regression`, `stagnation_threshold`, `language`. Returns
298
+ `atomadic-forge.evolve/v1`.
299
+ - Total MCP tool count: **34** (was 29).
300
+
301
+ ### Docs updated
302
+
303
+ - `README.md` — "From spaghetti to shippable in one MCP call" headline
304
+ section; updated tool count to 34.
305
+ - `docs/AGENTS_GUIDE.md` — "The transmuter" section with trigger map,
306
+ argument shapes, and four-tier integration ladder.
307
+ - `docs/COMMANDS.md` — MCP equivalents table for all five pipeline tools,
308
+ including return schemas.
309
+ - `docs/01-getting-started.md` — "From any repo to shippable in one call"
310
+ MCP example section.
311
+ - `docs/04-llm-loops.md` — "MCP tool usage" section for `iterate` and
312
+ `evolve` with full parameter reference.
313
+
314
+ ---
315
+
316
+ ## Unreleased — 2026-05-04 field-report fixes + MCP registry hardening
317
+
318
+ ### Fixed
319
+
320
+ - **`enforce` destination path** — the absorb pipeline now correctly nests
321
+ emitted files under `src/<pkg>/aN_*/` instead of `<pkg>/aN_*/` when the
322
+ output directory has an `src/` wrapper. Fixes the most-reported field
323
+ report from teams absorbing into an existing `src/` layout.
324
+ - **`dedup` defensive caps** — `dedup_engine` now enforces
325
+ `DEDUP_MAX_FILES = 5000` and `DEDUP_MAX_DUPLICATES_PER_GROUP = 64` to
326
+ prevent unbounded corpus walks on very large monorepos. The truncated
327
+ result is flagged with a `"max_files cap reached"` note so callers know
328
+ to scope down or raise the cap.
329
+ - **pytest parser regression** — test-detection in `certify` no longer
330
+ misclassifies parametrized `@pytest.mark.*` test stubs as non-test code.
331
+ Covered by new regression tests.
332
+
333
+ ### Improved
334
+
335
+ - **29 "Use this when:" trigger prefixes** — every tool in the MCP
336
+ `TOOLS` registry now starts with a one-line `"Use this when: …"` phrase
337
+ so agent tool-selection systems can pick the right tool without reading
338
+ the full description. Applies to all 29 tools: `recon`, `wire`,
339
+ `certify`, `enforce`, `audit_list`, `auto_plan`, `auto_step`,
340
+ `auto_apply`, `context_pack`, `preflight_change`, `score_patch`,
341
+ `select_tests`, `rollback_plan`, `explain_repo`, `adapt_plan`,
342
+ `compose_tools`, `load_policy`, `why_did_this_change`,
343
+ `what_failed_last_time`, `list_recipes`, `get_recipe`,
344
+ `worktree_status`, `trust_gate_response`, `exported_api_check`,
345
+ `emergent_scan`, `synergy_scan`, `doctor`, `sidecar_validate`,
346
+ `manifest_diff`.
347
+
348
+ ### Coming next (Round 1 hardening — landing now)
349
+
350
+ - Broader dispatcher `except` clause to prevent raw Python tracebacks
351
+ from escaping the MCP boundary on unexpected error types.
352
+ - Explicit JSON serializer for non-serializable MCP tool results.
353
+ - `score_patch` returns `REFINE` (not `PASS`) on empty or malformed diff
354
+ input.
355
+ - `dedup` double-walk fix — the corpus walker no longer counts the same
356
+ path twice when symlinks resolve to the same inode.
357
+ - Backslash path normalization — Windows paths from `worktree_status` are
358
+ now forward-slash normalized before being returned to MCP clients.
359
+ - Contract tests covering all five fixes above.
360
+
361
+ ---
362
+
363
+ ## 0.7.0 — Pricing v4 + Founder's Pack live
364
+
365
+ Forge Standard's monetization layer goes live. Two-product roadmap (Standard
366
+ mature + Deluxe in active development) is published; only Standard is sold
367
+ today, Deluxe holds until its catalog has real exclusive tools.
368
+
369
+ ### Added
370
+
371
+ - **Forge Standard tier ladder** — Free / Basic $19 / Dev $39 / Pro $99/user /
372
+ Enterprise (from $2,500/mo). Yearly billing saves 2 months.
373
+ - **Atomadic Lifetime Founder** — $999 one-time, first 25 only. Lifetime Forge
374
+ Standard Pro + Lifetime AAAA-Nexus Pro + Lifetime Forge Deluxe (when launched)
375
+ + every future Atomadic product. Numbered master keys F001–F025.
376
+ - **Prepaid call packs** — $25 / $100 / $500 / $2,500 with up to 50% bonus
377
+ credits for higher tiers; subscribers get an additional 25% off.
378
+ - **x402 PAYMENT-REQUIRED** on `forge.atomadic.tech/mcp` — pay-per-call
379
+ pricing per tool class ($0.001 reads → $0.25 mutating).
380
+ - **`forge-auth-worker`** — `checkout.session.completed` webhook now mints
381
+ numbered master keys for Founder's Pack purchases and credits buyers'
382
+ ledgers for credit-pack purchases.
383
+ - **Site surfaces** — new `/pricing` page (5-tier ladder + Founder's Pack +
384
+ prepaid packs), `/subscribe` redirects to `/pricing`, `/account` shows
385
+ Founder badge + dual MCP config snippets (hosted HTTP + local stdio).
386
+ - **`COMMERCIAL_LICENSE.md`** — explicit BSL→commercial conversion paths
387
+ for procurement teams.
388
+ - **Plan type expansion** in `forge-auth-worker` — added v4 plan names
389
+ (`basic`, `dev`, `pro`) and `forge_founder_lifetime` to ForgePlan + the
390
+ KNOWN_PLANS allow-list. Legacy v1 plans (`starter`, `founding`,
391
+ `professional`, `enterprise`) remain valid for existing customers.
392
+
393
+ ### Status
394
+
395
+ - Forge **Deluxe** subscription tier and `/deluxe/mcp` are *live but not
396
+ publicly listed* — endpoint works for Founder keys (alpha access), public
397
+ pricing page does not advertise it. Listing waits until Deluxe has 5+
398
+ exclusive tools beyond Standard.
399
+
400
+ ## Unreleased
401
+
402
+ ### Added
403
+
404
+ - `forge worktree status` and MCP `worktree_status` give agents a
405
+ pre-edit checkout report: git root, branch, upstream drift, dirty
406
+ files, remotes, version surfaces, resolved `forge` command, stale
407
+ install detection, and concrete recommendations.
408
+
409
+ ### Improved
410
+
411
+ - `context-pack` accepts `--focus`, `--intent`, and repeatable
412
+ `--file` arguments. Targeted packs add file context, preflight
413
+ results, selected tests, and concrete next-step suggestions while
414
+ preserving the original first-call orientation fields.
415
+ - MCP `context_pack` accepts the same `focus`, `intent`, and `files`
416
+ arguments as the CLI.
417
+ - `tools/list` now reports Forge version and server source path so
418
+ agents can diagnose stale MCP hosts without guessing.
419
+ - `forge mcp doctor` now includes Python executable, resolved
420
+ `forge` command path, source module paths, and a recommended
421
+ `python -m atomadic_forge mcp serve` config.
422
+ - `forge explain-repo` now computes repo purpose/scout/wire/certify
423
+ context before calling the a1 explainer, matching the MCP path.
424
+ - Recipe listing JSON now includes `recipe_count`, and the human CLI
425
+ list no longer truncates descriptions.
426
+ - Synced `atomadic_forge.__version__` and README current-version
427
+ snippets with the published `0.6.1` package metadata.
428
+
429
+ ---
430
+
431
+ ## 0.6.1 - MCP registry publication metadata
432
+
433
+ Patch release for MCP registry publication metadata. The package
434
+ version is `0.6.1`; source docs and runtime version surfaces should
435
+ report the same line.
436
+
437
+ ---
438
+
3
439
  ## 0.6.0 - Frontier features: dedup, budget, memory, swarm hiring, Ling-2.6-1T
4
440
 
5
441
  Major minor — five new capabilities cherry-picked from forge-deluxe-seed