atomadic-forge 0.81.0__tar.gz → 0.83.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 (480) hide show
  1. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/CHANGELOG.md +30 -13
  2. {atomadic_forge-0.81.0/src/atomadic_forge.egg-info → atomadic_forge-0.83.0}/PKG-INFO +25 -9
  3. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/README.md +24 -8
  4. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/02-commands.md +111 -0
  5. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/05-faq.md +32 -0
  6. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/COMMANDS.md +97 -1
  7. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/MCP_TOOLS.md +20 -1
  8. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/pyproject.toml +1 -1
  9. atomadic_forge-0.83.0/src/atomadic_forge/a1_at_functions/closest_match.py +24 -0
  10. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/graft_extract.py +25 -0
  11. atomadic_forge-0.83.0/src/atomadic_forge/a1_at_functions/graft_extract_js.py +270 -0
  12. atomadic_forge-0.83.0/src/atomadic_forge/a1_at_functions/levenshtein_distance.py +29 -0
  13. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +185 -0
  14. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/graft_feature.py +78 -6
  15. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +452 -0
  16. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0/src/atomadic_forge.egg-info}/PKG-INFO +25 -9
  17. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge.egg-info/SOURCES.txt +4 -0
  18. atomadic_forge-0.83.0/tests/test_graft_js.py +102 -0
  19. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/FUNDING.yml +0 -0
  20. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  21. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  22. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  23. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/actions/forge-action/README.md +0 -0
  24. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/actions/forge-action/action.yml +0 -0
  25. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/dependabot.yml +0 -0
  26. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/pull_request_template.md +0 -0
  27. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/ci.yml +0 -0
  28. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/customer-refactor.yml +0 -0
  29. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/forge-self-certify.yml +0 -0
  30. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/mcp-registry-publish.yml +0 -0
  31. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/metrics-auto-regen.yml +0 -0
  32. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/metrics-drift.yml +0 -0
  33. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/publish-on-tag.yml +0 -0
  34. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/release-readiness.yml +0 -0
  35. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/release.yml +0 -0
  36. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/surface-drift.yml +0 -0
  37. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/.github/workflows/uptime.yml +0 -0
  38. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/ARCHITECTURE.md +0 -0
  39. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/CONTRIBUTING.md +0 -0
  40. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/LICENSE +0 -0
  41. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/MANIFEST.in +0 -0
  42. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/SECURITY.md +0 -0
  43. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/assets/Atomadic-Forge-01.png +0 -0
  44. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/01-getting-started.md +0 -0
  45. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/03-tutorial.md +0 -0
  46. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/04-llm-loops.md +0 -0
  47. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/AGENTS_GUIDE.md +0 -0
  48. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/AIR_GAPPED.md +0 -0
  49. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/CI_CD.md +0 -0
  50. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/CODEX_WALKTHROUGH.md +0 -0
  51. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/FIRST_10_MINUTES.md +0 -0
  52. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/FORMALIZATION.md +0 -0
  53. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/HIVE_PRIMITIVES.md +0 -0
  54. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/HIVE_STATUS.md +0 -0
  55. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/IDE_INTEGRATION.md +0 -0
  56. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/LANDSCAPE.md +0 -0
  57. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/MARKET_POSITIONING.md +0 -0
  58. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/MIGRATION.md +0 -0
  59. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/MULTI_REPO.md +0 -0
  60. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/PROVIDERS.md +0 -0
  61. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/README.md +0 -0
  62. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/RECEIPT.md +0 -0
  63. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/RELAY_PROTOCOL.md +0 -0
  64. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/RELEASE_CHECKLIST.md +0 -0
  65. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/RELEASE_MESSAGING.md +0 -0
  66. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/ROADMAP.md +0 -0
  67. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/SHOWCASE.md +0 -0
  68. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/SIDECAR.md +0 -0
  69. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/STUDIO.md +0 -0
  70. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
  71. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/V0.46.0_JUSTIFICATION_REPORT.md +0 -0
  72. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/V0.47.0_SELF_TEST_REPORT.md +0 -0
  73. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/WHY_NOW.md +0 -0
  74. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
  75. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/WORLD_COLLISION.md +0 -0
  76. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/INDEX.md +0 -0
  77. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/absorb.md +0 -0
  78. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/audit.md +0 -0
  79. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/chat.md +0 -0
  80. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/commandsmith.md +0 -0
  81. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/config.md +0 -0
  82. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/create.md +0 -0
  83. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/demo.md +0 -0
  84. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/emergent-swarm.md +0 -0
  85. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/emergent-then-synergy.md +0 -0
  86. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/emergent.md +0 -0
  87. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/enhancement.md +0 -0
  88. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/evolve-then-iterate.md +0 -0
  89. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/evolve.md +0 -0
  90. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/feature-then-emergent.md +0 -0
  91. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/guard-install.md +0 -0
  92. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/handoff.md +0 -0
  93. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/harvest.md +0 -0
  94. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/hive.md +0 -0
  95. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/iterate.md +0 -0
  96. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/materialize.md +0 -0
  97. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/metrics.md +0 -0
  98. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/recon-swarm.md +0 -0
  99. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/relay.md +0 -0
  100. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/surface.md +0 -0
  101. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/synergy-then-emergent.md +0 -0
  102. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/synergy.md +0 -0
  103. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/welcome.md +0 -0
  104. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/commands/wisdom.md +0 -0
  105. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
  106. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/compliance/CS-1.md +0 -0
  107. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
  108. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
  109. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/compliance/SR_11-7_MAPPING.md +0 -0
  110. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +0 -0
  111. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/tutorials/01-quickstart.md +0 -0
  112. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/tutorials/02-your-first-package.md +0 -0
  113. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/tutorials/03-the-five-tier-law.md +0 -0
  114. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/tutorials/04-plug-in-llms.md +0 -0
  115. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/tutorials/05-multi-repo-absorb.md +0 -0
  116. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/docs/tutorials/06-javascript-quickstart.md +0 -0
  117. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/setup.cfg +0 -0
  118. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/__init__.py +0 -0
  119. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/__main__.py +0 -0
  120. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
  121. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
  122. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
  123. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
  124. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
  125. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
  126. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +0 -0
  127. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
  128. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
  129. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
  130. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
  131. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
  132. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
  133. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +0 -0
  134. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/materialize_types.py +0 -0
  135. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
  136. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
  137. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
  138. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
  139. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/response_enrichment.py +0 -0
  140. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
  141. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +0 -0
  142. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
  143. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
  144. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
  145. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
  146. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/welcome_constants.py +0 -0
  147. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
  148. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
  149. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/abstract_method_repair.py +0 -0
  150. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
  151. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
  152. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
  153. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
  154. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/ast_scope_lock.py +0 -0
  155. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
  156. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/call_graph.py +0 -0
  157. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/capability_scout.py +0 -0
  158. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
  159. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
  160. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
  161. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
  162. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
  163. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
  164. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
  165. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
  166. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
  167. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
  168. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
  169. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/cosine_similarity.py +0 -0
  170. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
  171. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/custom_provider_client.py +0 -0
  172. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/dead_code_check.py +0 -0
  173. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/doc_auto_update.py +0 -0
  174. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
  175. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
  176. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
  177. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
  178. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
  179. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
  180. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +0 -0
  181. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
  182. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
  183. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
  184. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
  185. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
  186. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
  187. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/forge_metrics.py +0 -0
  188. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
  189. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/git_churn.py +0 -0
  190. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/handoff_builder.py +0 -0
  191. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/harvest_absorb.py +0 -0
  192. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/harvest_concept_bridge.py +0 -0
  193. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
  194. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/hive_io.py +0 -0
  195. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/ifwc_fuzz.py +0 -0
  196. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
  197. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
  198. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
  199. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
  200. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/lifetime_savings.py +0 -0
  201. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
  202. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
  203. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
  204. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
  205. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
  206. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/maintainability_index.py +0 -0
  207. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
  208. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/monadic_laws.py +0 -0
  209. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
  210. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
  211. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
  212. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/polyglot_classify.py +0 -0
  213. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/polyglot_imports.py +0 -0
  214. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/polyglot_surface.py +0 -0
  215. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
  216. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
  217. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
  218. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
  219. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
  220. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
  221. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/recon_cache.py +0 -0
  222. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
  223. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/repo_public_surface.py +0 -0
  224. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
  225. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/response_enricher.py +0 -0
  226. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
  227. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
  228. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
  229. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
  230. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/scaffold_polyglot.py +0 -0
  231. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
  232. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
  233. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
  234. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
  235. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
  236. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/smell_scan.py +0 -0
  237. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/steersman_pack.py +0 -0
  238. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
  239. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/surface_gap_check.py +0 -0
  240. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
  241. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
  242. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
  243. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
  244. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
  245. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
  246. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
  247. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
  248. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
  249. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
  250. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/welcome_narrator.py +0 -0
  251. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
  252. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/wire_stubs_gen.py +0 -0
  253. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +0 -0
  254. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/wisdom_io.py +0 -0
  255. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +0 -0
  256. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -0
  257. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
  258. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
  259. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
  260. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
  261. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
  262. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
  263. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
  264. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
  265. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
  266. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
  267. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/nexus_client.py +0 -0
  268. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
  269. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
  270. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/remote_seed_store.py +0 -0
  271. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a2_mo_composites/repo_public_surface_sync.py +0 -0
  272. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
  273. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/absorb_feature.py +0 -0
  274. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
  275. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
  276. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
  277. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
  278. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
  279. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/create_feature.py +0 -0
  280. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
  281. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
  282. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
  283. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
  284. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
  285. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
  286. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
  287. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
  288. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
  289. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/emergent_swarm.py +0 -0
  290. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +0 -0
  291. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
  292. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
  293. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
  294. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
  295. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
  296. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/forge_metrics_feature.py +0 -0
  297. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
  298. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
  299. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
  300. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
  301. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/hive_sync.py +0 -0
  302. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
  303. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/materialize_feature.py +0 -0
  304. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/mcp_server.py +0 -0
  305. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -0
  306. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/recipe_replay.py +0 -0
  307. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
  308. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
  309. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
  310. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
  311. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
  312. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/verify_umbrella.py +0 -0
  313. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/welcome_feature.py +0 -0
  314. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -0
  315. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
  316. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +0 -0
  317. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
  318. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
  319. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/__init__.py +0 -0
  320. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/_monadic_laws_shared.py +0 -0
  321. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/_registry.py +0 -0
  322. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/absorb.py +0 -0
  323. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/aiom_check.py +0 -0
  324. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/audit.py +0 -0
  325. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/chat.py +0 -0
  326. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/commandsmith.py +0 -0
  327. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/config_cmd.py +0 -0
  328. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/create.py +0 -0
  329. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/demo.py +0 -0
  330. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/emergent.py +0 -0
  331. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/emergent_swarm.py +0 -0
  332. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
  333. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/enhancement.py +0 -0
  334. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/evolve.py +0 -0
  335. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
  336. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
  337. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/fingerprint.py +0 -0
  338. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/fuzz.py +0 -0
  339. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/graft.py +0 -0
  340. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/guard_install.py +0 -0
  341. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/handoff.py +0 -0
  342. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/harvest.py +0 -0
  343. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/hive.py +0 -0
  344. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/iterate.py +0 -0
  345. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/materialize.py +0 -0
  346. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/mcb_check.py +0 -0
  347. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/metrics.py +0 -0
  348. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/recon_swarm.py +0 -0
  349. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/relay.py +0 -0
  350. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/replay.py +0 -0
  351. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/surface.py +0 -0
  352. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/synergy.py +0 -0
  353. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
  354. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/token_savings.py +0 -0
  355. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/welcome.py +0 -0
  356. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge/commands/wisdom.py +0 -0
  357. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
  358. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
  359. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge.egg-info/requires.txt +0 -0
  360. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
  361. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_aaaa_nexus_client.py +0 -0
  362. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_abstract_method_repair.py +0 -0
  363. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_agent_hire_protocol.py +0 -0
  364. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_agent_plan.py +0 -0
  365. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_agent_plan_pkg_label.py +0 -0
  366. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_agent_summary.py +0 -0
  367. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_ast_scope_lock.py +0 -0
  368. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_audit_verb.py +0 -0
  369. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_body_extractor_repairs.py +0 -0
  370. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_call_graph_summary.py +0 -0
  371. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_capability_scout.py +0 -0
  372. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_card_renderer.py +0 -0
  373. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_certify_operational_axis.py +0 -0
  374. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_chat.py +0 -0
  375. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_cherry_dedup_class_methods.py +0 -0
  376. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_cherry_pick.py +0 -0
  377. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_classify_tier.py +0 -0
  378. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_classify_tier_ast_signals.py +0 -0
  379. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_cli_smoke.py +0 -0
  380. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_cli_swarm_aliases.py +0 -0
  381. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_codex_5_complete.py +0 -0
  382. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_codex_6_enforce_polyglot.py +0 -0
  383. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_commandsmith.py +0 -0
  384. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_compiler_feedback.py +0 -0
  385. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_compliance_checker.py +0 -0
  386. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_config.py +0 -0
  387. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_copilots_copilot.py +0 -0
  388. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_cost_circuit_breaker.py +0 -0
  389. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_create_feature.py +0 -0
  390. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_cs1_renderer.py +0 -0
  391. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_custom_provider.py +0 -0
  392. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_dead_code_check.py +0 -0
  393. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_dedup_engine.py +0 -0
  394. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_demo.py +0 -0
  395. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_doc_auto_update.py +0 -0
  396. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_emergent_compose.py +0 -0
  397. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_emergent_signature_extract.py +0 -0
  398. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_emergent_synthesize_imports.py +0 -0
  399. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_enhancement_proposal.py +0 -0
  400. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_error_codes.py +0 -0
  401. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_error_hints.py +0 -0
  402. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_evolve_js.py +0 -0
  403. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_exported_api_check.py +0 -0
  404. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_finalize_scaffold.py +0 -0
  405. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_forge_action.py +0 -0
  406. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_forge_auth_a1.py +0 -0
  407. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_forge_auth_a2.py +0 -0
  408. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_forge_enforce.py +0 -0
  409. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_generation_quality.py +0 -0
  410. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_git_churn.py +0 -0
  411. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_graft_feature.py +0 -0
  412. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_handoff.py +0 -0
  413. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_harvest_concept_bridge.py +0 -0
  414. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_harvest_source_warnings.py +0 -0
  415. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_hierarchical_memory.py +0 -0
  416. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_hive_sync.py +0 -0
  417. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_ifwc_fuzz.py +0 -0
  418. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_ignore_and_docs.py +0 -0
  419. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_import_smoke.py +0 -0
  420. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_iterate_evolve.py +0 -0
  421. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_js_certify.py +0 -0
  422. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_js_parser.py +0 -0
  423. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_js_recon.py +0 -0
  424. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_js_wire.py +0 -0
  425. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_lineage_chain.py +0 -0
  426. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_ling_provider.py +0 -0
  427. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_local_signer.py +0 -0
  428. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_lsp_protocol.py +0 -0
  429. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_maintainability_index.py +0 -0
  430. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_manifest_diff.py +0 -0
  431. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_materialize_feature.py +0 -0
  432. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_mcp_lazy_bootstrap.py +0 -0
  433. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_mcp_protocol.py +0 -0
  434. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_monadic_laws.py +0 -0
  435. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_nexus_bridge.py +0 -0
  436. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_ollama_client.py +0 -0
  437. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_pipeline.py +0 -0
  438. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_plan_apply.py +0 -0
  439. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_polyglot_cli_mcp.py +0 -0
  440. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_polyglot_full_pipeline.py +0 -0
  441. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_polyglot_hardening.py +0 -0
  442. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_polyglot_swift_kotlin_go.py +0 -0
  443. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_polyglot_symbol_parity.py +0 -0
  444. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_pre_audit_smoke.py +0 -0
  445. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_precommit_hooks.py +0 -0
  446. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_progress_reporter.py +0 -0
  447. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_receipt_emitter.py +0 -0
  448. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_receipt_schema.py +0 -0
  449. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_receipt_signer.py +0 -0
  450. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_recipe_replay.py +0 -0
  451. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_recon_cache.py +0 -0
  452. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_remote_seed_store.py +0 -0
  453. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_repo_public_surface.py +0 -0
  454. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_response_enricher.py +0 -0
  455. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_roi_calculator.py +0 -0
  456. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_sbom_cmd_text_summary.py +0 -0
  457. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_sbom_emitter.py +0 -0
  458. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_scaffold.py +0 -0
  459. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_sidecar.py +0 -0
  460. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_sidecar_validate.py +0 -0
  461. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_smell_score_formula.py +0 -0
  462. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_stagnation.py +0 -0
  463. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_steersman_pack.py +0 -0
  464. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_stub_detector.py +0 -0
  465. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_surface_export.py +0 -0
  466. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_surface_gap_check.py +0 -0
  467. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_synergy.py +0 -0
  468. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_test_runner.py +0 -0
  469. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_tier_init_rebuild.py +0 -0
  470. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_token_savings_ledger.py +0 -0
  471. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_trust_gate_response.py +0 -0
  472. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_verify_suggested_recipe.py +0 -0
  473. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_welcome.py +0 -0
  474. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_welcome_enhancements.py +0 -0
  475. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_whoami_cmd.py +0 -0
  476. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_wire_certify.py +0 -0
  477. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_wire_stubs_gen.py +0 -0
  478. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_wire_suggest_repairs.py +0 -0
  479. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_wire_type_checking.py +0 -0
  480. {atomadic_forge-0.81.0 → atomadic_forge-0.83.0}/tests/test_wisdom.py +0 -0
@@ -2,44 +2,61 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v0.83.0 — 2026-05-08
6
+
7
+ - feat(forge): v0.83 — JS/TS graft support; arm Atomadic with capability transfer
8
+
9
+
10
+ ## v0.82.0 — 2026-05-08
11
+
12
+ - feat(forge): v0.82 — graft sibling-ref auto-import + 2 grafted helpers
13
+ - docs: README + CHANGELOG + docs/ updated for v0.76–v0.81
14
+
15
+
5
16
  ## v0.81.0 — 2026-05-08
6
17
 
7
- - feat(forge): v0.81 — auto-wire signature coercion + recon cache
18
+ - feat(forge): auto-wire signature coercion `list[T]` CLI args now parsed correctly; `forge cosine-similarity --a 1.0,0.0 --b 1.0,0.0` resolves without manual casting
19
+ - feat(forge): `run_recon(use_cache=True)` — skip AST walk on unchanged trees via `(file_count, max_mtime, total_bytes)` fingerprint; eliminates redundant recon passes in harvest pipelines
20
+ - fix(forge): close last harvest-pipeline residual exposed by recon cache audit
8
21
 
9
22
 
10
23
  ## v0.80.0 — 2026-05-08
11
24
 
12
- - feat(forge): v0.80 Monadic Laws — MCB / AHLP / AIOM / IFWC-lite
25
+ - feat(forge): `forge mcb-check` flag unbounded `while` loops and recursion in tier-a1 atoms (Monadic Compute Bounding); advisory by default, `--fail-on-violations` to enforce
26
+ - feat(forge): `forge aiom-check` — flag forbidden I/O imports (`requests`, `urllib`, `socket`, `subprocess`) in tier-a1 (Algebraic I/O Monad law); advisory by default
27
+ - feat(forge): `forge fingerprint` — SHA-256 of every a1 module's normalised AST (AHLP); stable across whitespace, tamper-evident, deterministic
28
+ - feat(forge): `forge fuzz <module>` — hypothesis property tests on any a1 callable carrying `__invariants__` (IFWC-lite); all four verbs ship advisory, opt-in `--fail-on-violations` to block CI
13
29
 
14
30
 
15
31
  ## v0.79.0 — 2026-05-08
16
32
 
17
- - feat(forge): replay — deterministic golden-recipe execution
18
- - fix(compat): replace datetime.UTC with timezone.utc for Python 3.10 compat
19
- - fix(ci): null-safe head_commit.message in metrics-auto-regen if condition
20
- - chore(metrics): sync forge_metrics.json after cli_verb_count method change
21
- - fix(surface): regenerate surface.json with package_version 0.78.0
22
- - fix(metrics): replace upward a4 import in _live_cli_verb_count with file scan
33
+ - feat(forge): `forge replay <recipe>` runs a golden recipe's `validation_gate` as subprocesses with zero LLM round-trips per step; recipes: `release_hardening`, `add_cli_command`, `fix_wire_violation`, `add_feature`, `publish_mcp`; auto-logs pass+fail (×80 tokens) to ledger as `replay/<recipe-name>`
34
+ - feat(forge): `--dry-run`, `--keep-going`, `--list`, `--json` flags on `forge replay`
35
+ - fix(compat): replace `datetime.UTC` with `timezone.utc` for Python 3.10 compatibility
36
+ - fix(ci): null-safe `head_commit.message` in metrics-auto-regen `if` condition
37
+ - chore(metrics): sync `forge_metrics.json` after `cli_verb_count` method change
38
+ - fix(surface): regenerate `surface.json` with package_version 0.78.0
39
+ - fix(metrics): replace upward a4 import in `_live_cli_verb_count` with file scan
23
40
  - chore(release): sync artifacts + doc anchors for v0.78.0
24
41
 
25
42
 
26
43
  ## v0.78.0 — 2026-05-08
27
44
 
28
- - feat(forge): token-savings auto-ledger across every enriched verb
45
+ - feat(forge): token-savings auto-ledger every verb that calls `enrich_response` appends to `<project>/.atomadic-forge/lifetime_savings.jsonl`; verbs covered: recon, certify, wire, verify, auto, emergent, synergy
46
+ - feat(forge): `forge token-savings` — display lifetime total + per-tool breakdown from the JSONL ledger; file-backed, verifiable, auditable
29
47
 
30
48
 
31
49
  ## v0.77.0 — 2026-05-08
32
50
 
33
- - fix(forge): cherry-pick — collapse Class.method explosion (root-cause)
51
+ - fix(forge): cherry-pick now folds method qualnames whose parent class is already selected, collapsing the 47-file class explosion observed during IndexStore absorption; root-cause fix in `cherry_pick._dedup_methods_under_class`
34
52
  - feat(doc-update): auto-update 6 previously missed doc files on release
35
53
 
36
54
 
37
55
  ## v0.76.0 — 2026-05-08
38
56
 
39
- - feat(forge): graft — surgical single-symbol cross-repo capability transfer
57
+ - feat(forge): `forge graft --source-file <f> --symbol <name>` — extract one function or class from any Python source and land it in the target's correct tier; `--rename` flag for private-to-public conversion; auto-wires CLI + MCP via `auto-wire` integration; closes the gap between `transmute auto` (whole-repo) and single-symbol surgical absorption
40
58
  - fix(lint): clear 14 ruff violations blocking CI
41
- - release: v0.75.3
42
- - fix(forge): GAP-014 — harvest fail-loud on missing/empty sources
59
+ - fix(forge): GAP-014 — harvest fail-loud on missing/empty sources
43
60
 
44
61
 
45
62
  ## v0.75.3 — 2026-05-08
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atomadic-forge
3
- Version: 0.81.0
3
+ Version: 0.83.0
4
4
  Summary: Atomadic Forge — absorb, enforce, emerge. Polyglot (Python · JavaScript/TypeScript · Rust · Go · Swift · Kotlin) architecture guardian for AI-generated code.
5
5
  Author: Atomadic
6
6
  License-Expression: BUSL-1.1
@@ -67,6 +67,8 @@ AI agents write code **10x faster** than humans can review it. Pattern violation
67
67
 
68
68
  **Forge fixes that.**
69
69
 
70
+ ---
71
+
70
72
  > 🎯 **300+ public OSS Python repositories absorbed end-to-end.** fastapi
71
73
  > (98k★), scrapy (61k★), django-rest-framework (30k★), pytest (13.8k★),
72
74
  > langgraph (31k★), openai-agents-python (26k★), cookiecutter (25k★),
@@ -77,9 +79,11 @@ AI agents write code **10x faster** than humans can review it. Pattern violation
77
79
  > wire-clean, scaffold-complete, deterministic. Wire-PASS holds across
78
80
  > the entire 300-seed corpus. Receipts in [`HARVEST_LEDGER.md`](HARVEST_LEDGER.md).
79
81
 
80
- - **Catches architectural violations AI agents leave behind.** Deterministic tier-law enforcement — no LLM in the loop, no hallucinations.
81
- - **Saves 40-60% on LLM tokens.** Structured code = smaller context windows = fewer tokens per turn.
82
- - **One command: spaghetti -> certified architecture.** Python, JavaScript, TypeScript, **Rust, Go, Swift, Kotlin** full pipeline (recon, wire, certify, scaffold, evolve) on every language.
82
+ - **Catches architectural violations AI agents leave behind.** Deterministic tier-law enforcement — no LLM in the loop, no hallucinations. Four monadic laws (MCB, AIOM, AHLP, IFWC) shipped as advisory AST scanners; promote to `--fail-on-violations` when ready.
83
+ - **Verifiable token savings.** Every Forge verb auto-appends to a file-backed JSONL ledger at `<project>/.atomadic-forge/lifetime_savings.jsonl`. `forge token-savings` prints the running total and per-tool breakdown. Auditable line-by-line — not a marketing claim.
84
+ - **Surgical capability grafting.** `forge graft --source-file X --symbol Y` extracts a single function or class from any Python source, lands it in the right tier, and auto-wires CLI + MCP. Sibling references resolve automatically. Closes the gap between whole-repo `transmute auto` and one-shot surgical absorption.
85
+ - **Deterministic recipe replay.** `forge replay <recipe>` runs a golden command chain (release hardening, add-cli-command, fix-wire-violation, add-feature, publish-mcp) as subprocesses — zero LLM round-trips per step.
86
+ - **One command: spaghetti -> certified architecture.** Python, JavaScript, TypeScript, **Rust, Go, Swift, Kotlin** — full pipeline (recon, wire, certify, scaffold, evolve) on every language. Recon cache short-circuits the AST walk on unchanged trees via tree fingerprint.
83
87
  - **Bring your own LLM.** Built-in presets for OpenAI, Anthropic, Gemini, OpenRouter, DeepSeek, Groq, Together, Fireworks, xAI, Mistral, Perplexity, Cerebras, Hyperbolic, AAAA-Nexus, and Ollama — plus `forge config provider add` for any custom OpenAI-compatible endpoint. See [docs/PROVIDERS.md](docs/PROVIDERS.md).
84
88
  - **IDE-native.** VS Code extension (`vscode-extension/`), MCP server for Claude Code / Cursor / Cowork / Windsurf, four ready-to-use Claude Code skills. See [docs/IDE_INTEGRATION.md](docs/IDE_INTEGRATION.md).
85
89
 
@@ -157,6 +161,17 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
157
161
  | `forge dead-code` | AST-walk dead symbol detector (vulture synthesis) |
158
162
  | `forge maintainability` | Maintainability Index per module (radon MI: A/B/C/D ranking) |
159
163
  | `forge concept-bridge --harvest-json path/to/harvest.json` | Convert harvest candidates below TAU_TRUST into actionable synthesis plans |
164
+ | `forge token-savings` | Lifetime token-savings total + per-tool breakdown from `.atomadic-forge/lifetime_savings.jsonl` |
165
+ | `forge replay <recipe>` | Run a golden recipe's validation gate as subprocesses — zero LLM round-trips; flags: `--dry-run`, `--keep-going`, `--list`, `--json` |
166
+
167
+ ### Monadic Law Verbs (advisory; `--fail-on-violations` to enforce)
168
+
169
+ | Command | What it does |
170
+ |---------|-------------|
171
+ | `forge mcb-check` | Flag unbounded `while` loops and recursion in tier-a1 atoms (Monadic Compute Bounding) |
172
+ | `forge aiom-check` | Flag forbidden I/O imports (`requests`, `urllib`, `socket`, `subprocess`) in tier-a1 (Algebraic I/O Monad) |
173
+ | `forge fingerprint` | SHA-256 of every a1 module's normalised AST — tamper-evident, stable across whitespace (AHLP) |
174
+ | `forge fuzz <module>` | Hypothesis property tests on any a1 callable carrying `__invariants__` (IFWC-lite) |
160
175
 
161
176
  ### Composition & Multi-Repo
162
177
 
@@ -166,6 +181,7 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
166
181
  | `forge emergent scan` | Cross-domain composition discovery |
167
182
  | `forge recon-swarm` | Walk N repos, unified report |
168
183
  | `forge harvest` | Cross-repo capability gap finder |
184
+ | `forge graft --source-file <f> --symbol <name>` | Extract one function/class from any Python source and land it in the target's correct tier; `--rename` for private→public; auto-wires CLI + MCP |
169
185
 
170
186
  ### Planning & LLM Loops
171
187
 
@@ -176,7 +192,7 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
176
192
  | `forge plan` | Bounded execution plan with risk + rollback |
177
193
  | `forge chat` | Terminal copilot over forge docs |
178
194
 
179
- **59 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
195
+ **79 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
180
196
 
181
197
  ---
182
198
 
@@ -195,7 +211,7 @@ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aide
195
211
  }
196
212
  ```
197
213
 
198
- **10 tools, 112 actions locally.** All legacy tool names redirect automatically — existing callers keep working. Deployed Worker at [forge.atomadic.tech/mcp](https://forge.atomadic.tech/mcp). Listed in the [MCP Official Registry](https://registry.modelcontextprotocol.io/).
214
+ **10 tools, 116 actions locally.** All legacy tool names redirect automatically — existing callers keep working. Deployed Worker at [forge.atomadic.tech/mcp](https://forge.atomadic.tech/mcp). Listed in the [MCP Official Registry](https://registry.modelcontextprotocol.io/).
199
215
 
200
216
  | Tool | Actions | What it does |
201
217
  |------|---------|-------------|
@@ -224,9 +240,9 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
224
240
  |--------|-------|
225
241
 
226
242
  | MCP tools | **10 tools · 116 actions** |
227
- | CLI verbs | **59** |
228
- | Source files | **243** (~48K LOC) |
229
- | Tests | **1616 passing** across **120 test files** |
243
+ | CLI verbs | **79** |
244
+ | Source files | **246** (~49K LOC) |
245
+ | Tests | **1625 passing** across **121 test files** |
230
246
  | Lean4 formal proofs | **872 theorems** (mathematically verified core logic) |
231
247
  | Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
232
248
  | Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
@@ -35,6 +35,8 @@ AI agents write code **10x faster** than humans can review it. Pattern violation
35
35
 
36
36
  **Forge fixes that.**
37
37
 
38
+ ---
39
+
38
40
  > 🎯 **300+ public OSS Python repositories absorbed end-to-end.** fastapi
39
41
  > (98k★), scrapy (61k★), django-rest-framework (30k★), pytest (13.8k★),
40
42
  > langgraph (31k★), openai-agents-python (26k★), cookiecutter (25k★),
@@ -45,9 +47,11 @@ AI agents write code **10x faster** than humans can review it. Pattern violation
45
47
  > wire-clean, scaffold-complete, deterministic. Wire-PASS holds across
46
48
  > the entire 300-seed corpus. Receipts in [`HARVEST_LEDGER.md`](HARVEST_LEDGER.md).
47
49
 
48
- - **Catches architectural violations AI agents leave behind.** Deterministic tier-law enforcement — no LLM in the loop, no hallucinations.
49
- - **Saves 40-60% on LLM tokens.** Structured code = smaller context windows = fewer tokens per turn.
50
- - **One command: spaghetti -> certified architecture.** Python, JavaScript, TypeScript, **Rust, Go, Swift, Kotlin** full pipeline (recon, wire, certify, scaffold, evolve) on every language.
50
+ - **Catches architectural violations AI agents leave behind.** Deterministic tier-law enforcement — no LLM in the loop, no hallucinations. Four monadic laws (MCB, AIOM, AHLP, IFWC) shipped as advisory AST scanners; promote to `--fail-on-violations` when ready.
51
+ - **Verifiable token savings.** Every Forge verb auto-appends to a file-backed JSONL ledger at `<project>/.atomadic-forge/lifetime_savings.jsonl`. `forge token-savings` prints the running total and per-tool breakdown. Auditable line-by-line — not a marketing claim.
52
+ - **Surgical capability grafting.** `forge graft --source-file X --symbol Y` extracts a single function or class from any Python source, lands it in the right tier, and auto-wires CLI + MCP. Sibling references resolve automatically. Closes the gap between whole-repo `transmute auto` and one-shot surgical absorption.
53
+ - **Deterministic recipe replay.** `forge replay <recipe>` runs a golden command chain (release hardening, add-cli-command, fix-wire-violation, add-feature, publish-mcp) as subprocesses — zero LLM round-trips per step.
54
+ - **One command: spaghetti -> certified architecture.** Python, JavaScript, TypeScript, **Rust, Go, Swift, Kotlin** — full pipeline (recon, wire, certify, scaffold, evolve) on every language. Recon cache short-circuits the AST walk on unchanged trees via tree fingerprint.
51
55
  - **Bring your own LLM.** Built-in presets for OpenAI, Anthropic, Gemini, OpenRouter, DeepSeek, Groq, Together, Fireworks, xAI, Mistral, Perplexity, Cerebras, Hyperbolic, AAAA-Nexus, and Ollama — plus `forge config provider add` for any custom OpenAI-compatible endpoint. See [docs/PROVIDERS.md](docs/PROVIDERS.md).
52
56
  - **IDE-native.** VS Code extension (`vscode-extension/`), MCP server for Claude Code / Cursor / Cowork / Windsurf, four ready-to-use Claude Code skills. See [docs/IDE_INTEGRATION.md](docs/IDE_INTEGRATION.md).
53
57
 
@@ -125,6 +129,17 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
125
129
  | `forge dead-code` | AST-walk dead symbol detector (vulture synthesis) |
126
130
  | `forge maintainability` | Maintainability Index per module (radon MI: A/B/C/D ranking) |
127
131
  | `forge concept-bridge --harvest-json path/to/harvest.json` | Convert harvest candidates below TAU_TRUST into actionable synthesis plans |
132
+ | `forge token-savings` | Lifetime token-savings total + per-tool breakdown from `.atomadic-forge/lifetime_savings.jsonl` |
133
+ | `forge replay <recipe>` | Run a golden recipe's validation gate as subprocesses — zero LLM round-trips; flags: `--dry-run`, `--keep-going`, `--list`, `--json` |
134
+
135
+ ### Monadic Law Verbs (advisory; `--fail-on-violations` to enforce)
136
+
137
+ | Command | What it does |
138
+ |---------|-------------|
139
+ | `forge mcb-check` | Flag unbounded `while` loops and recursion in tier-a1 atoms (Monadic Compute Bounding) |
140
+ | `forge aiom-check` | Flag forbidden I/O imports (`requests`, `urllib`, `socket`, `subprocess`) in tier-a1 (Algebraic I/O Monad) |
141
+ | `forge fingerprint` | SHA-256 of every a1 module's normalised AST — tamper-evident, stable across whitespace (AHLP) |
142
+ | `forge fuzz <module>` | Hypothesis property tests on any a1 callable carrying `__invariants__` (IFWC-lite) |
128
143
 
129
144
  ### Composition & Multi-Repo
130
145
 
@@ -134,6 +149,7 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
134
149
  | `forge emergent scan` | Cross-domain composition discovery |
135
150
  | `forge recon-swarm` | Walk N repos, unified report |
136
151
  | `forge harvest` | Cross-repo capability gap finder |
152
+ | `forge graft --source-file <f> --symbol <name>` | Extract one function/class from any Python source and land it in the target's correct tier; `--rename` for private→public; auto-wires CLI + MCP |
137
153
 
138
154
  ### Planning & LLM Loops
139
155
 
@@ -144,7 +160,7 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
144
160
  | `forge plan` | Bounded execution plan with risk + rollback |
145
161
  | `forge chat` | Terminal copilot over forge docs |
146
162
 
147
- **59 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
163
+ **79 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
148
164
 
149
165
  ---
150
166
 
@@ -163,7 +179,7 @@ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aide
163
179
  }
164
180
  ```
165
181
 
166
- **10 tools, 112 actions locally.** All legacy tool names redirect automatically — existing callers keep working. Deployed Worker at [forge.atomadic.tech/mcp](https://forge.atomadic.tech/mcp). Listed in the [MCP Official Registry](https://registry.modelcontextprotocol.io/).
182
+ **10 tools, 116 actions locally.** All legacy tool names redirect automatically — existing callers keep working. Deployed Worker at [forge.atomadic.tech/mcp](https://forge.atomadic.tech/mcp). Listed in the [MCP Official Registry](https://registry.modelcontextprotocol.io/).
167
183
 
168
184
  | Tool | Actions | What it does |
169
185
  |------|---------|-------------|
@@ -192,9 +208,9 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
192
208
  |--------|-------|
193
209
 
194
210
  | MCP tools | **10 tools · 116 actions** |
195
- | CLI verbs | **59** |
196
- | Source files | **243** (~48K LOC) |
197
- | Tests | **1616 passing** across **120 test files** |
211
+ | CLI verbs | **79** |
212
+ | Source files | **246** (~49K LOC) |
213
+ | Tests | **1625 passing** across **121 test files** |
198
214
  | Lean4 formal proofs | **872 theorems** (mathematically verified core logic) |
199
215
  | Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
200
216
  | Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
@@ -1371,6 +1371,117 @@ Both append-only, content-addressed, supersession-aware on read.
1371
1371
 
1372
1372
  ---
1373
1373
 
1374
+ ---
1375
+
1376
+ ## Cross-repo surgery
1377
+
1378
+ ### forge graft (v0.76)
1379
+
1380
+ Surgical single-symbol cross-repo capability transfer.
1381
+
1382
+ ```bash
1383
+ forge graft \
1384
+ --source-file <path.py> \
1385
+ --symbol <name> \
1386
+ [--rename <new_name>] \
1387
+ [--tier a1_at_functions] \
1388
+ [--target .] \
1389
+ [--package atomadic_forge] \
1390
+ [--overwrite] \
1391
+ [--dry-run] \
1392
+ [--auto-wire | --no-auto-wire] \
1393
+ [--json]
1394
+ ```
1395
+
1396
+ Pipeline: `graft_extract.extract_symbol` (a1) extracts the symbol slice →
1397
+ module is rendered with a `SCHEMA_VERSION_GRAFT_<NAME>` marker → written to the
1398
+ correct tier directory → wire-violations check → optional auto-wire to surface
1399
+ the result as a CLI verb and MCP action. On wire-violation the write is rolled
1400
+ back automatically from the pre-write backup.
1401
+
1402
+ ---
1403
+
1404
+ ## Token ledger
1405
+
1406
+ ### forge token-savings (v0.78)
1407
+
1408
+ Display the lifetime token-savings ledger. Every enriched Forge verb
1409
+ auto-appends an entry to `.atomadic-forge/lifetime_savings.jsonl`.
1410
+
1411
+ ```bash
1412
+ forge token-savings [--project .] [--json]
1413
+ ```
1414
+
1415
+ Returns lifetime total, entry count, first/last timestamps, and a `by_tool`
1416
+ breakdown.
1417
+
1418
+ ---
1419
+
1420
+ ## Golden-path replay
1421
+
1422
+ ### forge replay (v0.79)
1423
+
1424
+ Deterministic golden-recipe execution. Runs a pre-defined recipe end-to-end and
1425
+ logs ~80 tokens saved per successful step to the lifetime ledger.
1426
+
1427
+ ```bash
1428
+ forge replay <recipe-name> [--list] [--dry-run] [--keep-going] \
1429
+ [--project .] [--json]
1430
+ ```
1431
+
1432
+ **Options:**
1433
+ - `--list` — list all available recipes
1434
+ - `--dry-run` — show steps without executing
1435
+ - `--keep-going` — continue past a failing step
1436
+
1437
+ **Built-in recipes:** `release_hardening`, `add_cli_command`,
1438
+ `fix_wire_violation`, `add_feature`, `publish_mcp`.
1439
+
1440
+ ---
1441
+
1442
+ ## Monadic law scanners (v0.80)
1443
+
1444
+ Four advisory AST scanners for tier-a1 conformance. All CLI-only; no MCP
1445
+ actions yet.
1446
+
1447
+ ### forge mcb-check
1448
+
1449
+ Flag unbounded `while` loops and uncapped recursion in tier-a1 modules.
1450
+
1451
+ ```bash
1452
+ forge mcb-check [--package atomadic_forge] [--fail-on-violations] [--json]
1453
+ ```
1454
+
1455
+ ### forge aiom-check
1456
+
1457
+ Flag forbidden I/O imports (`requests`, `urllib`, `http`, `socket`, `smtplib`,
1458
+ `ftplib`, `telnetlib`, `subprocess`, `multiprocessing`, `httpx`, `aiohttp`) in
1459
+ tier-a1 modules.
1460
+
1461
+ ```bash
1462
+ forge aiom-check [--package atomadic_forge] [--fail-on-violations] [--json]
1463
+ ```
1464
+
1465
+ ### forge fingerprint
1466
+
1467
+ SHA-256 of every a1 module's normalized AST. Stable across whitespace/comment
1468
+ changes, sensitive to logic changes.
1469
+
1470
+ ```bash
1471
+ forge fingerprint [--package atomadic_forge] [--json]
1472
+ ```
1473
+
1474
+ ### forge fuzz
1475
+
1476
+ Hypothesis property fuzzing on a1 callables annotated with `__invariants__`
1477
+ (`"args": {param: strategy_name}` and `"post": "lambda r, **kwargs: bool"`).
1478
+
1479
+ ```bash
1480
+ forge fuzz <module> [--max-examples 100] [--project .] [--json]
1481
+ ```
1482
+
1483
+ ---
1484
+
1374
1485
  ## Global options
1375
1486
 
1376
1487
  All commands support:
@@ -424,6 +424,38 @@ absorb:
424
424
 
425
425
  ## Advanced questions
426
426
 
427
+ ### What is the token-savings ledger and what does `forge token-savings` show?
428
+
429
+ Every enriched Forge verb (recon, certify, context-pack, replay steps, and
430
+ others) appends an entry to `.atomadic-forge/lifetime_savings.jsonl` recording
431
+ approximately how many tokens the structured output saved compared to raw prose.
432
+ `forge token-savings` reads that file and returns the lifetime total, entry
433
+ count, first/last timestamps, and a per-tool breakdown. The ledger is
434
+ append-only and project-local; commit it if you want the metric to persist
435
+ across clones. Added in v0.78.
436
+
437
+ ```bash
438
+ forge token-savings --project . --json
439
+ ```
440
+
441
+ ---
442
+
443
+ ### What does `forge graft` do and when should I use it instead of `forge auto`?
444
+
445
+ `forge graft` transfers a single named symbol — one function or class — from a
446
+ source file into the current project's tier tree. Use it when you want exactly
447
+ one capability from an external module without absorbing the entire repo. The
448
+ pipeline: extracts the symbol's complete slice, renders a new module with a
449
+ `SCHEMA_VERSION_GRAFT_<NAME>` marker, places it in the correct tier directory,
450
+ runs a wire check, and optionally auto-wires the result as a CLI verb and MCP
451
+ action. If the wire check fails the write is rolled back automatically.
452
+
453
+ Use `forge auto` (or `forge cherry` + `forge finalize`) when you want to absorb
454
+ multiple symbols or an entire repo. Use `forge graft` for surgical one-symbol
455
+ transfers. Added in v0.76.
456
+
457
+ ---
458
+
427
459
  ### Can I customize the tier classification?
428
460
 
429
461
  Not yet, but the scout report logs the rationale per symbol. You can override manually by moving files after absorption.
@@ -1,11 +1,38 @@
1
1
  # Atomadic Forge — Command Reference
2
2
 
3
- All verbs available in the `forge` CLI as of 0.78.0
3
+ All verbs available in the `forge` CLI as of 0.81.0
4
4
 
5
5
  > For the structured per-verb reference (with options, examples, and
6
6
  > output samples), see [02-commands.md](02-commands.md). This page is
7
7
  > the legacy summary kept for backward compatibility.
8
8
 
9
+ ## Cross-repo surgery
10
+
11
+ ### `forge graft --source-file <path.py> --symbol <name>` (v0.76)
12
+
13
+ Surgical single-symbol cross-repo capability transfer. Extracts one symbol's
14
+ complete slice (using `graft_extract.extract_symbol` at a1), renders it into a
15
+ tier-correct module stamped with a `SCHEMA_VERSION_GRAFT_<NAME>` marker, writes
16
+ it to the target package, runs a wire-violations check, and optionally
17
+ auto-wires the result into the CLI and MCP surfaces. Rolls back to a backup on
18
+ wire failure.
19
+
20
+ ```bash
21
+ forge graft \
22
+ --source-file path/to/source.py \
23
+ --symbol my_function \
24
+ [--rename new_name] \
25
+ [--tier a1_at_functions] \
26
+ [--target .] \
27
+ [--package atomadic_forge] \
28
+ [--overwrite] \
29
+ [--dry-run] \
30
+ [--auto-wire | --no-auto-wire] \
31
+ [--json]
32
+ ```
33
+
34
+ ---
35
+
9
36
  ## Pipeline / absorption
10
37
 
11
38
  ### `forge auto SOURCE OUTPUT`
@@ -212,6 +239,75 @@ The sidecar drift band is populated today (Lane D W11):
212
239
  Reserved (Lane D W20): `F0105` `compose_with` mismatch, `F0107`
213
240
  `proves:` clause unverified.
214
241
 
242
+ ## Token ledger
243
+
244
+ ### `forge token-savings [--project .] [--json]` (v0.78)
245
+
246
+ Displays the lifetime token-savings ledger accumulated across all enriched Forge
247
+ verbs. Every verb that produces enriched output auto-appends an entry to
248
+ `.atomadic-forge/lifetime_savings.jsonl`. The command reads that file and
249
+ returns the lifetime total, entry count, first/last timestamps, and a
250
+ `by_tool` breakdown.
251
+
252
+ ```bash
253
+ forge token-savings --project . --json
254
+ ```
255
+
256
+ ---
257
+
258
+ ## Golden-path replay
259
+
260
+ ### `forge replay <recipe-name> [OPTIONS]` (v0.79)
261
+
262
+ Deterministic golden-recipe execution. Runs a named recipe step-by-step and
263
+ logs approximately 80 tokens saved per successful step to the lifetime ledger.
264
+
265
+ ```bash
266
+ forge replay release_hardening [--list] [--dry-run] [--keep-going] \
267
+ [--project .] [--json]
268
+ ```
269
+
270
+ **Options:**
271
+ - `--list` — list all available recipes instead of running one
272
+ - `--dry-run` — show steps without executing
273
+ - `--keep-going` — continue past a failing step
274
+
275
+ **Built-in recipes:** `release_hardening`, `add_cli_command`,
276
+ `fix_wire_violation`, `add_feature`, `publish_mcp`.
277
+
278
+ ---
279
+
280
+ ## Monadic law scanners (v0.80)
281
+
282
+ Four advisory AST-scanner verbs. All are CLI-only; MCP actions are not yet
283
+ exposed.
284
+
285
+ ### `forge mcb-check [--package atomadic_forge] [--fail-on-violations] [--json]`
286
+
287
+ Flags unbounded `while` loops and uncapped recursion inside tier-a1 modules.
288
+ Advisory by default; exits non-zero with `--fail-on-violations`.
289
+
290
+ ### `forge aiom-check [--package atomadic_forge] [--fail-on-violations] [--json]`
291
+
292
+ Flags forbidden I/O imports inside tier-a1 modules. Blocked import families:
293
+ `requests`, `urllib`, `http`, `socket`, `smtplib`, `ftplib`, `telnetlib`,
294
+ `subprocess`, `multiprocessing`, `httpx`, `aiohttp`.
295
+
296
+ ### `forge fingerprint [--package atomadic_forge] [--json]`
297
+
298
+ SHA-256 fingerprint of every a1 module's normalized AST. Stable across
299
+ whitespace and comment changes; sensitive to logic changes. Use to detect
300
+ silent behavioral drift.
301
+
302
+ ### `forge fuzz <module> [--max-examples 100] [--project .] [--json]`
303
+
304
+ Hypothesis-driven property fuzzing on any a1 callable that carries an
305
+ `__invariants__` dict with `"args": {param: strategy_name}` and
306
+ `"post": "lambda r, **kwargs: bool"` keys. Runs up to `--max-examples`
307
+ generated cases and reports counterexamples.
308
+
309
+ ---
310
+
215
311
  ## Agent integration (MCP)
216
312
 
217
313
  ### `forge mcp serve`
@@ -98,7 +98,7 @@ No LLM is invoked — all analysis is deterministic.
98
98
  | `dead_code` | Identify unreachable or unused symbols. |
99
99
  | `maintainability` | Maintainability index per file/module. |
100
100
  | `concept_bridge` | Cross-domain concept linkage detection. |
101
- | `auto_wire` | Deterministically wire generated surface stubs. |
101
+ | `auto_wire` | Deterministically wire generated surface stubs. CLI stubs produced by auto-wire coerce `list[float]`/`list[int]`/`list[str]` arguments from comma-separated strings (v0.81). |
102
102
  | `doc_update` | Regenerate public docs from metrics. |
103
103
  | `doc_drift` | Detect public-doc metric drift. |
104
104
 
@@ -239,5 +239,24 @@ All tools except `nexus` and `welcome` use `action=<name>` for dispatch:
239
239
 
240
240
  ---
241
241
 
242
+ ---
243
+
244
+ ## CLI-only verbs (no MCP action yet)
245
+
246
+ The following verbs added in v0.76–v0.80 are available on the CLI but do not
247
+ yet have corresponding MCP actions:
248
+
249
+ | CLI verb | Version | What it does |
250
+ |----------|---------|-------------|
251
+ | `forge graft` | v0.76 | Single-symbol cross-repo capability transfer |
252
+ | `forge token-savings` | v0.78 | Display lifetime token-savings ledger |
253
+ | `forge replay` | v0.79 | Deterministic golden-recipe execution |
254
+ | `forge mcb-check` | v0.80 | Flag unbounded loops/recursion in tier-a1 |
255
+ | `forge aiom-check` | v0.80 | Flag forbidden I/O imports in tier-a1 |
256
+ | `forge fingerprint` | v0.80 | SHA-256 normalized-AST fingerprint per a1 module |
257
+ | `forge fuzz` | v0.80 | Hypothesis property fuzzing on `__invariants__`-annotated a1 callables |
258
+
259
+ ---
260
+
242
261
  *Numbers sourced from `forge_metrics.json` (canonical, regenerated on every push).*
243
262
  *Full CLI reference: [docs/02-commands.md](02-commands.md)*
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "atomadic-forge"
7
- version = "0.81.0"
7
+ version = "0.83.0"
8
8
  description = "Atomadic Forge — absorb, enforce, emerge. Polyglot (Python · JavaScript/TypeScript · Rust · Go · Swift · Kotlin) architecture guardian for AI-generated code."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -0,0 +1,24 @@
1
+ """Grafted from string_distance.py (lines 30–45) by `forge graft`."""
2
+ from __future__ import annotations
3
+
4
+ from .levenshtein_distance import levenshtein_distance
5
+
6
+ SCHEMA_VERSION_GRAFT_CLOSEST_MATCH = "atomadic-forge.graft.closest_match/v1"
7
+
8
+ def closest_match(query: str, candidates: list[str]) -> str:
9
+ """Return the candidate string with the smallest Levenshtein distance.
10
+
11
+ Empty candidates list returns the query itself. Ties resolve to
12
+ the first candidate by input order (deterministic).
13
+ """
14
+ if not candidates:
15
+ return query
16
+ best = candidates[0]
17
+ best_d = levenshtein_distance(query, best)
18
+ for cand in candidates[1:]:
19
+ d = levenshtein_distance(query, cand)
20
+ if d < best_d:
21
+ best = cand
22
+ best_d = d
23
+ return best
24
+
@@ -27,6 +27,10 @@ class GraftExtract:
27
27
  * ``imports_needed`` — the set of bare module names the symbol's body
28
28
  references. Caller resolves these against the source file's import
29
29
  table to build the new module's import block.
30
+ * ``sibling_refs`` (v0.81.1) — names referenced by the symbol's body
31
+ that are top-level defs in the SAME donor file but live outside
32
+ this slice. The caller emits relative imports (``from .<name>
33
+ import <name>``) for them so multi-symbol grafts compose cleanly.
30
34
  * ``start_line`` / ``end_line`` — 1-based line numbers in the source
31
35
  file (for diagnostics and lineage).
32
36
  """
@@ -36,6 +40,7 @@ class GraftExtract:
36
40
  imports_needed: frozenset[str]
37
41
  start_line: int
38
42
  end_line: int
43
+ sibling_refs: frozenset[str] = frozenset()
39
44
 
40
45
 
41
46
  def _walk_imports_used(node: ast.AST) -> set[str]:
@@ -144,6 +149,17 @@ def extract_symbol(source_file: Path, symbol_name: str) -> GraftExtract:
144
149
  table = _import_table(tree)
145
150
  imports_needed = frozenset(name for name in used if name in table)
146
151
 
152
+ # v0.81.1 — sibling-reference detection. Names the body references
153
+ # that are top-level defs in the SAME donor file but NOT in this
154
+ # slice. The renderer uses these to emit `from .<name> import <name>`
155
+ # relative imports so multi-symbol grafts compose without manual fix.
156
+ sibling_top_defs: set[str] = {
157
+ n.name for n in tree.body
158
+ if isinstance(n, ast.FunctionDef | ast.AsyncFunctionDef | ast.ClassDef)
159
+ and n.name != symbol_name
160
+ }
161
+ sibling_refs = frozenset(used & sibling_top_defs)
162
+
147
163
  if isinstance(target, ast.AsyncFunctionDef):
148
164
  kind = "async_function"
149
165
  elif isinstance(target, ast.FunctionDef):
@@ -158,6 +174,7 @@ def extract_symbol(source_file: Path, symbol_name: str) -> GraftExtract:
158
174
  imports_needed=imports_needed,
159
175
  start_line=start,
160
176
  end_line=end,
177
+ sibling_refs=sibling_refs,
161
178
  )
162
179
 
163
180
 
@@ -205,6 +222,14 @@ def render_grafted_module(
205
222
  if needed_imports:
206
223
  parts.extend(needed_imports)
207
224
  parts.append("")
225
+ # v0.81.1 — emit relative imports for sibling top-level defs the
226
+ # body references. Caller is responsible for grafting those
227
+ # siblings to the same destination tier (default lands them
228
+ # alongside this module so the relative import resolves).
229
+ if extract.sibling_refs:
230
+ for sib in sorted(extract.sibling_refs):
231
+ parts.append(f"from .{sib} import {sib}")
232
+ parts.append("")
208
233
  # Surface-gap-discoverable: emit a SCHEMA_VERSION_GRAFT_<NAME>
209
234
  # constant so the existing entry-point walker recognizes the grafted
210
235
  # symbol as a wireable a1 function. Without this, auto-wire skips