atomadic-forge 0.75.0__tar.gz → 0.75.2__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 (454) hide show
  1. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/mcp-registry-publish.yml +3 -3
  2. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/metrics-auto-regen.yml +24 -5
  3. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/metrics-drift.yml +9 -8
  4. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/CHANGELOG.md +15 -0
  5. {atomadic_forge-0.75.0/src/atomadic_forge.egg-info → atomadic_forge-0.75.2}/PKG-INFO +21 -6
  6. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/README.md +20 -5
  7. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/MCP_TOOLS.md +16 -10
  8. atomadic_forge-0.75.2/docs/commands/metrics.md +46 -0
  9. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/pyproject.toml +1 -1
  10. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/doc_auto_update.py +37 -20
  11. atomadic_forge-0.75.2/src/atomadic_forge/a1_at_functions/repo_public_surface.py +228 -0
  12. atomadic_forge-0.75.2/src/atomadic_forge/a2_mo_composites/repo_public_surface_sync.py +71 -0
  13. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/forge_metrics_feature.py +84 -5
  14. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a4_sy_orchestration/cli.py +32 -2
  15. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/metrics.py +76 -24
  16. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2/src/atomadic_forge.egg-info}/PKG-INFO +21 -6
  17. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge.egg-info/SOURCES.txt +3 -0
  18. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_doc_auto_update.py +16 -0
  19. atomadic_forge-0.75.2/tests/test_repo_public_surface.py +150 -0
  20. atomadic_forge-0.75.0/docs/commands/metrics.md +0 -9
  21. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/FUNDING.yml +0 -0
  22. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  23. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  24. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  25. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/actions/forge-action/README.md +0 -0
  26. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/actions/forge-action/action.yml +0 -0
  27. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/dependabot.yml +0 -0
  28. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/pull_request_template.md +0 -0
  29. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/ci.yml +0 -0
  30. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/customer-refactor.yml +0 -0
  31. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/forge-self-certify.yml +0 -0
  32. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/publish-on-tag.yml +0 -0
  33. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/release-readiness.yml +0 -0
  34. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/release.yml +0 -0
  35. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/surface-drift.yml +0 -0
  36. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/.github/workflows/uptime.yml +0 -0
  37. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/ARCHITECTURE.md +0 -0
  38. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/CONTRIBUTING.md +0 -0
  39. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/LICENSE +0 -0
  40. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/MANIFEST.in +0 -0
  41. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/SECURITY.md +0 -0
  42. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/assets/Atomadic-Forge-01.png +0 -0
  43. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/01-getting-started.md +0 -0
  44. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/02-commands.md +0 -0
  45. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/03-tutorial.md +0 -0
  46. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/04-llm-loops.md +0 -0
  47. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/05-faq.md +0 -0
  48. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/AGENTS_GUIDE.md +0 -0
  49. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/AIR_GAPPED.md +0 -0
  50. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/CI_CD.md +0 -0
  51. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/CODEX_WALKTHROUGH.md +0 -0
  52. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/COMMANDS.md +0 -0
  53. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/FIRST_10_MINUTES.md +0 -0
  54. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/FORMALIZATION.md +0 -0
  55. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/HIVE_PRIMITIVES.md +0 -0
  56. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/HIVE_STATUS.md +0 -0
  57. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/IDE_INTEGRATION.md +0 -0
  58. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/LANDSCAPE.md +0 -0
  59. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/MARKET_POSITIONING.md +0 -0
  60. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/MIGRATION.md +0 -0
  61. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/MULTI_REPO.md +0 -0
  62. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/PROVIDERS.md +0 -0
  63. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/README.md +0 -0
  64. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/RECEIPT.md +0 -0
  65. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/RELAY_PROTOCOL.md +0 -0
  66. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/RELEASE_CHECKLIST.md +0 -0
  67. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/RELEASE_MESSAGING.md +0 -0
  68. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/ROADMAP.md +0 -0
  69. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/SHOWCASE.md +0 -0
  70. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/SIDECAR.md +0 -0
  71. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/STUDIO.md +0 -0
  72. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
  73. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/V0.46.0_JUSTIFICATION_REPORT.md +0 -0
  74. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/V0.47.0_SELF_TEST_REPORT.md +0 -0
  75. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/WHY_NOW.md +0 -0
  76. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
  77. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/WORLD_COLLISION.md +0 -0
  78. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/INDEX.md +0 -0
  79. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/absorb.md +0 -0
  80. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/audit.md +0 -0
  81. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/chat.md +0 -0
  82. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/commandsmith.md +0 -0
  83. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/config.md +0 -0
  84. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/create.md +0 -0
  85. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/demo.md +0 -0
  86. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/emergent-swarm.md +0 -0
  87. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/emergent-then-synergy.md +0 -0
  88. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/emergent.md +0 -0
  89. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/enhancement.md +0 -0
  90. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/evolve-then-iterate.md +0 -0
  91. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/evolve.md +0 -0
  92. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/feature-then-emergent.md +0 -0
  93. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/guard-install.md +0 -0
  94. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/handoff.md +0 -0
  95. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/harvest.md +0 -0
  96. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/hive.md +0 -0
  97. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/iterate.md +0 -0
  98. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/materialize.md +0 -0
  99. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/recon-swarm.md +0 -0
  100. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/relay.md +0 -0
  101. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/surface.md +0 -0
  102. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/synergy-then-emergent.md +0 -0
  103. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/synergy.md +0 -0
  104. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/welcome.md +0 -0
  105. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/commands/wisdom.md +0 -0
  106. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
  107. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/compliance/CS-1.md +0 -0
  108. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
  109. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
  110. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/compliance/SR_11-7_MAPPING.md +0 -0
  111. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +0 -0
  112. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/tutorials/01-quickstart.md +0 -0
  113. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/tutorials/02-your-first-package.md +0 -0
  114. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/tutorials/03-the-five-tier-law.md +0 -0
  115. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/tutorials/04-plug-in-llms.md +0 -0
  116. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/tutorials/05-multi-repo-absorb.md +0 -0
  117. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/docs/tutorials/06-javascript-quickstart.md +0 -0
  118. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/setup.cfg +0 -0
  119. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/__init__.py +0 -0
  120. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/__main__.py +0 -0
  121. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
  122. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
  123. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
  124. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
  125. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
  126. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
  127. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +0 -0
  128. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
  129. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
  130. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
  131. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
  132. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
  133. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
  134. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +0 -0
  135. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/materialize_types.py +0 -0
  136. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
  137. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
  138. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
  139. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
  140. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/response_enrichment.py +0 -0
  141. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
  142. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +0 -0
  143. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
  144. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
  145. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
  146. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
  147. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/welcome_constants.py +0 -0
  148. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
  149. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
  150. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/abstract_method_repair.py +0 -0
  151. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
  152. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
  153. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
  154. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
  155. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/ast_scope_lock.py +0 -0
  156. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
  157. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/call_graph.py +0 -0
  158. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/capability_scout.py +0 -0
  159. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
  160. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
  161. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
  162. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
  163. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
  164. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
  165. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
  166. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
  167. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
  168. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
  169. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
  170. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
  171. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/custom_provider_client.py +0 -0
  172. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/dead_code_check.py +0 -0
  173. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
  174. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
  175. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
  176. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
  177. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
  178. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
  179. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +0 -0
  180. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
  181. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
  182. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
  183. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
  184. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
  185. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
  186. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/forge_metrics.py +0 -0
  187. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
  188. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/git_churn.py +0 -0
  189. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/handoff_builder.py +0 -0
  190. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/harvest_absorb.py +0 -0
  191. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/harvest_concept_bridge.py +0 -0
  192. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
  193. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/hive_io.py +0 -0
  194. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
  195. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
  196. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
  197. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
  198. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/lifetime_savings.py +0 -0
  199. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
  200. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
  201. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
  202. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
  203. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
  204. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/maintainability_index.py +0 -0
  205. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
  206. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +0 -0
  207. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
  208. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
  209. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
  210. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/polyglot_classify.py +0 -0
  211. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/polyglot_imports.py +0 -0
  212. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/polyglot_surface.py +0 -0
  213. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
  214. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
  215. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
  216. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
  217. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
  218. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
  219. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
  220. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
  221. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/response_enricher.py +0 -0
  222. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
  223. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
  224. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
  225. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
  226. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/scaffold_polyglot.py +0 -0
  227. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
  228. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
  229. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
  230. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
  231. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
  232. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/smell_scan.py +0 -0
  233. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/steersman_pack.py +0 -0
  234. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
  235. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/surface_gap_check.py +0 -0
  236. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
  237. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
  238. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
  239. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
  240. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
  241. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
  242. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
  243. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
  244. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
  245. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
  246. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/welcome_narrator.py +0 -0
  247. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
  248. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/wire_stubs_gen.py +0 -0
  249. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +0 -0
  250. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/wisdom_io.py +0 -0
  251. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +0 -0
  252. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -0
  253. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
  254. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
  255. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
  256. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
  257. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
  258. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
  259. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
  260. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
  261. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
  262. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
  263. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/nexus_client.py +0 -0
  264. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
  265. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
  266. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a2_mo_composites/remote_seed_store.py +0 -0
  267. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
  268. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/absorb_feature.py +0 -0
  269. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
  270. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
  271. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
  272. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
  273. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
  274. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/create_feature.py +0 -0
  275. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
  276. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
  277. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
  278. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
  279. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
  280. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
  281. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
  282. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
  283. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
  284. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/emergent_swarm.py +0 -0
  285. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +0 -0
  286. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
  287. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
  288. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
  289. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
  290. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
  291. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
  292. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
  293. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
  294. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
  295. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/hive_sync.py +0 -0
  296. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
  297. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/materialize_feature.py +0 -0
  298. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/mcp_server.py +0 -0
  299. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -0
  300. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
  301. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
  302. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
  303. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
  304. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
  305. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/verify_umbrella.py +0 -0
  306. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/welcome_feature.py +0 -0
  307. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -0
  308. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
  309. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +0 -0
  310. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
  311. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
  312. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/__init__.py +0 -0
  313. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/_registry.py +0 -0
  314. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/absorb.py +0 -0
  315. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/audit.py +0 -0
  316. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/chat.py +0 -0
  317. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/commandsmith.py +0 -0
  318. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/config_cmd.py +0 -0
  319. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/create.py +0 -0
  320. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/demo.py +0 -0
  321. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/emergent.py +0 -0
  322. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/emergent_swarm.py +0 -0
  323. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
  324. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/enhancement.py +0 -0
  325. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/evolve.py +0 -0
  326. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
  327. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
  328. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/guard_install.py +0 -0
  329. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/handoff.py +0 -0
  330. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/harvest.py +0 -0
  331. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/hive.py +0 -0
  332. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/iterate.py +0 -0
  333. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/materialize.py +0 -0
  334. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/recon_swarm.py +0 -0
  335. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/relay.py +0 -0
  336. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/surface.py +0 -0
  337. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/synergy.py +0 -0
  338. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
  339. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/welcome.py +0 -0
  340. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge/commands/wisdom.py +0 -0
  341. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
  342. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
  343. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge.egg-info/requires.txt +0 -0
  344. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/src/atomadic_forge.egg-info/top_level.txt +0 -0
  345. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_aaaa_nexus_client.py +0 -0
  346. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_abstract_method_repair.py +0 -0
  347. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_agent_hire_protocol.py +0 -0
  348. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_agent_plan.py +0 -0
  349. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_agent_plan_pkg_label.py +0 -0
  350. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_agent_summary.py +0 -0
  351. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_ast_scope_lock.py +0 -0
  352. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_audit_verb.py +0 -0
  353. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_body_extractor_repairs.py +0 -0
  354. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_call_graph_summary.py +0 -0
  355. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_capability_scout.py +0 -0
  356. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_card_renderer.py +0 -0
  357. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_certify_operational_axis.py +0 -0
  358. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_chat.py +0 -0
  359. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_cherry_pick.py +0 -0
  360. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_classify_tier.py +0 -0
  361. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_classify_tier_ast_signals.py +0 -0
  362. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_cli_smoke.py +0 -0
  363. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_cli_swarm_aliases.py +0 -0
  364. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_codex_5_complete.py +0 -0
  365. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_codex_6_enforce_polyglot.py +0 -0
  366. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_commandsmith.py +0 -0
  367. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_compiler_feedback.py +0 -0
  368. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_compliance_checker.py +0 -0
  369. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_config.py +0 -0
  370. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_copilots_copilot.py +0 -0
  371. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_cost_circuit_breaker.py +0 -0
  372. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_create_feature.py +0 -0
  373. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_cs1_renderer.py +0 -0
  374. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_custom_provider.py +0 -0
  375. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_dead_code_check.py +0 -0
  376. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_dedup_engine.py +0 -0
  377. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_demo.py +0 -0
  378. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_emergent_compose.py +0 -0
  379. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_emergent_signature_extract.py +0 -0
  380. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_emergent_synthesize_imports.py +0 -0
  381. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_enhancement_proposal.py +0 -0
  382. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_error_codes.py +0 -0
  383. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_error_hints.py +0 -0
  384. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_evolve_js.py +0 -0
  385. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_exported_api_check.py +0 -0
  386. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_finalize_scaffold.py +0 -0
  387. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_forge_action.py +0 -0
  388. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_forge_auth_a1.py +0 -0
  389. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_forge_auth_a2.py +0 -0
  390. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_forge_enforce.py +0 -0
  391. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_generation_quality.py +0 -0
  392. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_git_churn.py +0 -0
  393. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_handoff.py +0 -0
  394. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_harvest_concept_bridge.py +0 -0
  395. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_hierarchical_memory.py +0 -0
  396. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_hive_sync.py +0 -0
  397. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_ignore_and_docs.py +0 -0
  398. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_import_smoke.py +0 -0
  399. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_iterate_evolve.py +0 -0
  400. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_js_certify.py +0 -0
  401. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_js_parser.py +0 -0
  402. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_js_recon.py +0 -0
  403. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_js_wire.py +0 -0
  404. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_lineage_chain.py +0 -0
  405. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_ling_provider.py +0 -0
  406. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_local_signer.py +0 -0
  407. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_lsp_protocol.py +0 -0
  408. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_maintainability_index.py +0 -0
  409. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_manifest_diff.py +0 -0
  410. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_materialize_feature.py +0 -0
  411. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_mcp_lazy_bootstrap.py +0 -0
  412. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_mcp_protocol.py +0 -0
  413. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_nexus_bridge.py +0 -0
  414. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_ollama_client.py +0 -0
  415. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_pipeline.py +0 -0
  416. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_plan_apply.py +0 -0
  417. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_polyglot_cli_mcp.py +0 -0
  418. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_polyglot_full_pipeline.py +0 -0
  419. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_polyglot_hardening.py +0 -0
  420. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_polyglot_swift_kotlin_go.py +0 -0
  421. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_polyglot_symbol_parity.py +0 -0
  422. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_pre_audit_smoke.py +0 -0
  423. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_precommit_hooks.py +0 -0
  424. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_progress_reporter.py +0 -0
  425. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_receipt_emitter.py +0 -0
  426. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_receipt_schema.py +0 -0
  427. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_receipt_signer.py +0 -0
  428. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_remote_seed_store.py +0 -0
  429. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_response_enricher.py +0 -0
  430. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_roi_calculator.py +0 -0
  431. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_sbom_cmd_text_summary.py +0 -0
  432. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_sbom_emitter.py +0 -0
  433. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_scaffold.py +0 -0
  434. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_sidecar.py +0 -0
  435. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_sidecar_validate.py +0 -0
  436. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_smell_score_formula.py +0 -0
  437. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_stagnation.py +0 -0
  438. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_steersman_pack.py +0 -0
  439. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_stub_detector.py +0 -0
  440. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_surface_export.py +0 -0
  441. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_surface_gap_check.py +0 -0
  442. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_synergy.py +0 -0
  443. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_test_runner.py +0 -0
  444. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_tier_init_rebuild.py +0 -0
  445. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_trust_gate_response.py +0 -0
  446. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_verify_suggested_recipe.py +0 -0
  447. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_welcome.py +0 -0
  448. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_welcome_enhancements.py +0 -0
  449. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_whoami_cmd.py +0 -0
  450. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_wire_certify.py +0 -0
  451. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_wire_stubs_gen.py +0 -0
  452. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_wire_suggest_repairs.py +0 -0
  453. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_wire_type_checking.py +0 -0
  454. {atomadic_forge-0.75.0 → atomadic_forge-0.75.2}/tests/test_wisdom.py +0 -0
@@ -73,9 +73,9 @@ jobs:
73
73
  v="${{ steps.ver.outputs.version }}"
74
74
  # Pull live numbers so the registry description always cites
75
75
  # the current MCP tool / action count instead of drifting.
76
- tools=$(jq -r '.mcp_tools // 10' forge_metrics.json)
77
- actions=$(jq -r '.mcp_actions // 64' forge_metrics.json)
78
- theorems=$(jq -r '.lean_theorems.count // 886' forge_metrics.json)
76
+ tools=$(jq -r '.mcp_tools // .metrics.mcp_tool_count // 10' forge_metrics.json)
77
+ actions=$(jq -r '.mcp_actions // .metrics.mcp_action_count // 64' forge_metrics.json)
78
+ theorems=$(jq -r '.lean_theorems.count // .metrics.lean4_theorem_count // 886' forge_metrics.json)
79
79
  # Rewrite version (top-level + first package entry) and refresh
80
80
  # the description string with the live numbers.
81
81
  # Registry caps description at 100 chars — keep it punchy +
@@ -73,7 +73,22 @@ jobs:
73
73
  # Save the previous lean_theorems block so we can preserve it
74
74
  # when no proof corpus is attached (avoid zeroing the public
75
75
  # number on a routine source-only push).
76
- python -c "import json; d=json.load(open('forge_metrics.json')); print(json.dumps(d.get('lean_theorems', {})))" > /tmp/prev_lean.json
76
+ python - <<'PY' > /tmp/prev_lean.json
77
+ import json
78
+ d = json.load(open("forge_metrics.json"))
79
+ if isinstance(d.get("lean_theorems"), dict):
80
+ print(json.dumps(d["lean_theorems"]))
81
+ else:
82
+ m = d.get("metrics", {})
83
+ count = int(m.get("lean4_theorem_count") or 0)
84
+ print(json.dumps({
85
+ "count": count,
86
+ "theorems": count,
87
+ "lemmas": 0,
88
+ "files": int(m.get("lean4_file_count") or 0),
89
+ "found": bool(count),
90
+ }))
91
+ PY
77
92
  forge metrics --apply --tests-passing ${{ steps.pytest.outputs.passed }}
78
93
  # If no proof corpus was attached this run, restore prior lean block.
79
94
  if [ -z "${FORGE_PROOF_CORPUS:-}" ]; then
@@ -82,10 +97,14 @@ jobs:
82
97
  p = pathlib.Path("forge_metrics.json")
83
98
  d = json.loads(p.read_text())
84
99
  prev = json.loads(pathlib.Path("/tmp/prev_lean.json").read_text())
85
- # Only restore if the freshly-computed block reports found=False
86
- # (i.e. proof corpus unavailable) AND the prior had a real count.
87
- if not d.get("lean_theorems", {}).get("found") and prev.get("count"):
88
- d["lean_theorems"] = prev
100
+ # Only restore if proof corpus unavailable AND the prior had a
101
+ # real count. Supports both flat and public nested metric shapes.
102
+ if prev.get("count"):
103
+ if isinstance(d.get("metrics"), dict):
104
+ if not d["metrics"].get("lean4_theorem_count"):
105
+ d["metrics"]["lean4_theorem_count"] = prev["count"]
106
+ elif not d.get("lean_theorems", {}).get("found"):
107
+ d["lean_theorems"] = prev
89
108
  p.write_text(json.dumps(d, indent=2, sort_keys=True) + "\n")
90
109
  PY
91
110
  fi
@@ -43,22 +43,23 @@ jobs:
43
43
  cp forge_metrics.json /tmp/forge_metrics.committed.json
44
44
  # Recompute (Lean count zero in CI unless FORGE_PROOF_CORPUS is wired).
45
45
  forge metrics --apply
46
- # If the only delta is the timestamp, that's expected — strip it
47
- # before diffing so we only fail on substantive drift.
48
- jq 'del(.generated_at_utc)' /tmp/forge_metrics.committed.json > /tmp/a.json
49
- jq 'del(.generated_at_utc)' forge_metrics.json > /tmp/b.json
46
+ # If the only delta is the timestamp, that's expected — strip
47
+ # legacy and public timestamp fields before diffing so we only
48
+ # fail on substantive drift.
49
+ jq 'del(.generated_at_utc, .generated_utc)' /tmp/forge_metrics.committed.json > /tmp/a.json
50
+ jq 'del(.generated_at_utc, .generated_utc)' forge_metrics.json > /tmp/b.json
50
51
  # Always strip `tests_passing` from the diff — that field is
51
52
  # populated externally (CI test job + --tests-passing flag) and
52
53
  # the committed artifact carries the full pytest count, while
53
54
  # this gate doesn't run pytest. Comparing them is meaningless.
54
- jq 'del(.tests_passing)' /tmp/a.json > /tmp/a2.json && mv /tmp/a2.json /tmp/a.json
55
- jq 'del(.tests_passing)' /tmp/b.json > /tmp/b2.json && mv /tmp/b2.json /tmp/b.json
55
+ jq 'del(.tests_passing, .metrics.test_count)' /tmp/a.json > /tmp/a2.json && mv /tmp/a2.json /tmp/a.json
56
+ jq 'del(.tests_passing, .metrics.test_count)' /tmp/b.json > /tmp/b2.json && mv /tmp/b2.json /tmp/b.json
56
57
  # If FORGE_PROOF_CORPUS is not set, also ignore the lean_theorems
57
58
  # block (will be 0 in CI but the committed artifact has the real
58
59
  # count from the IP repo).
59
60
  if [ -z "${FORGE_PROOF_CORPUS:-}" ]; then
60
- jq 'del(.lean_theorems)' /tmp/a.json > /tmp/a2.json && mv /tmp/a2.json /tmp/a.json
61
- jq 'del(.lean_theorems)' /tmp/b.json > /tmp/b2.json && mv /tmp/b2.json /tmp/b.json
61
+ jq 'del(.lean_theorems, .metrics.lean4_theorem_count)' /tmp/a.json > /tmp/a2.json && mv /tmp/a2.json /tmp/a.json
62
+ jq 'del(.lean_theorems, .metrics.lean4_theorem_count)' /tmp/b.json > /tmp/b2.json && mv /tmp/b2.json /tmp/b.json
62
63
  fi
63
64
  if ! diff -u /tmp/a.json /tmp/b.json; then
64
65
  echo "::error::forge_metrics.json is stale. Run 'forge metrics --apply' and commit the result."
@@ -2,6 +2,21 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v0.75.2 — 2026-05-08
6
+
7
+ ### Changed
8
+
9
+ - c411603 fix(docs): close wrapped whitepaper drift (GP Lane C W6)
10
+
11
+
12
+ ## v0.75.1 — 2026-05-08
13
+
14
+ ### Changed
15
+
16
+ - 7f63594 feat(metrics): add repo public surface sync (GP Lane C W6)
17
+ - d8ac951 docs: sync README + metrics for v0.75.0 — 300-seed proof banner
18
+
19
+
5
20
  ## v0.75.0 — 2026-05-08
6
21
 
7
22
  - docs: HARVEST_LEDGER — 🎯🎯🎯🎯 HOLY GRAIL: 300 SEEDS ABSORBED (v0.75.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atomadic-forge
3
- Version: 0.75.0
3
+ Version: 0.75.2
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,16 @@ AI agents write code **10x faster** than humans can review it. Pattern violation
67
67
 
68
68
  **Forge fixes that.**
69
69
 
70
+ > 🎯 **300+ public OSS Python repositories absorbed end-to-end.** fastapi
71
+ > (98k★), scrapy (61k★), django-rest-framework (30k★), pytest (13.8k★),
72
+ > langgraph (31k★), openai-agents-python (26k★), cookiecutter (25k★),
73
+ > aiohttp (16k★), deepeval (15k★), DocsGPT (17k★), txtai (12k★), E2B
74
+ > (12k★), copier, apscheduler, msgspec, peewee, alembic, tortoise-orm,
75
+ > presidio, dagster, IBM mcp-context-forge, and ~290 more — every single
76
+ > one ran through one `forge auto` command, emerged 5-tier-organized,
77
+ > wire-clean, scaffold-complete, deterministic. Wire-PASS holds across
78
+ > the entire 300-seed corpus. Receipts in [`HARVEST_LEDGER.md`](HARVEST_LEDGER.md).
79
+
70
80
  - **Catches architectural violations AI agents leave behind.** Deterministic tier-law enforcement — no LLM in the loop, no hallucinations.
71
81
  - **Saves 40-60% on LLM tokens.** Structured code = smaller context windows = fewer tokens per turn.
72
82
  - **One command: spaghetti -> certified architecture.** Python, JavaScript, TypeScript, **Rust, Go, Swift, Kotlin** — full pipeline (recon, wire, certify, scaffold, evolve) on every language.
@@ -166,7 +176,7 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
166
176
  | `forge plan` | Bounded execution plan with risk + rollback |
167
177
  | `forge chat` | Terminal copilot over forge docs |
168
178
 
169
- **39 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
179
+ **84 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
170
180
 
171
181
  ---
172
182
 
@@ -192,7 +202,7 @@ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aide
192
202
  | `welcome` | — | RECOMMENDED FIRST CALL: onboarding scan, score, narrative, capability tour |
193
203
  | `explore` | 16 | Analyze, understand, discover — recon/explain/call_graph/call_graph_summary/smell/lineage/harvest/synergy/scan/swarm/churn/surface_gaps/capability_scout/dead_code/maintainability/concept_bridge |
194
204
  | `audit` | 23 | Quality gates, change safety, trust |
195
- | `plan` | 9 | Orient + dev utilities — context/compose/policy/recipes/generate/apply/locate/commit/scaffold |
205
+ | `plan` | 10 | Orient + dev utilities — context/compose/policy/recipes/generate/apply/locate/commit/scaffold/steersman |
196
206
  | `transmute` | 3 | **FLAGSHIP** spaghetti→certified pipeline — auto/cherry/finalize |
197
207
  | `loop` | 4 | LLM iteration loops — iterate/resume/evolve/evolve_step |
198
208
  | `hive` | 13 | Multi-agent coordination — lifecycle, consensus, handoffs, enhancements |
@@ -214,9 +224,9 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
214
224
  |--------|-------|
215
225
 
216
226
  | MCP tools | **10 tools · 112 actions** |
217
- | CLI verbs | **39** |
218
- | Source files | **226** (~45K LOC) |
219
- | Tests | **1555 passing** across **111 test files** |
227
+ | CLI verbs | **84** |
228
+ | Source files | **228** (~45K LOC) |
229
+ | Tests | **1555 passing** across **112 test files** |
220
230
  | Lean4 formal proofs | **872 theorems** (mathematically verified core logic) |
221
231
  | Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
222
232
  | Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
@@ -226,6 +236,11 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
226
236
 
227
237
  Forge eats its own cooking. Every CI run scores itself.
228
238
 
239
+ > **Production-tested at scale.** 300+ public Python repos absorbed
240
+ > end-to-end via `forge auto` — fastapi (98k★), scrapy (61k★), pytest
241
+ > (13.8k★), DRF (30k★), cookiecutter (25k★), and ~295 others. Wire-PASS
242
+ > on every single one. Full receipt: [`HARVEST_LEDGER.md`](HARVEST_LEDGER.md).
243
+
229
244
  ---
230
245
 
231
246
  ## Pricing
@@ -35,6 +35,16 @@ AI agents write code **10x faster** than humans can review it. Pattern violation
35
35
 
36
36
  **Forge fixes that.**
37
37
 
38
+ > 🎯 **300+ public OSS Python repositories absorbed end-to-end.** fastapi
39
+ > (98k★), scrapy (61k★), django-rest-framework (30k★), pytest (13.8k★),
40
+ > langgraph (31k★), openai-agents-python (26k★), cookiecutter (25k★),
41
+ > aiohttp (16k★), deepeval (15k★), DocsGPT (17k★), txtai (12k★), E2B
42
+ > (12k★), copier, apscheduler, msgspec, peewee, alembic, tortoise-orm,
43
+ > presidio, dagster, IBM mcp-context-forge, and ~290 more — every single
44
+ > one ran through one `forge auto` command, emerged 5-tier-organized,
45
+ > wire-clean, scaffold-complete, deterministic. Wire-PASS holds across
46
+ > the entire 300-seed corpus. Receipts in [`HARVEST_LEDGER.md`](HARVEST_LEDGER.md).
47
+
38
48
  - **Catches architectural violations AI agents leave behind.** Deterministic tier-law enforcement — no LLM in the loop, no hallucinations.
39
49
  - **Saves 40-60% on LLM tokens.** Structured code = smaller context windows = fewer tokens per turn.
40
50
  - **One command: spaghetti -> certified architecture.** Python, JavaScript, TypeScript, **Rust, Go, Swift, Kotlin** — full pipeline (recon, wire, certify, scaffold, evolve) on every language.
@@ -134,7 +144,7 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
134
144
  | `forge plan` | Bounded execution plan with risk + rollback |
135
145
  | `forge chat` | Terminal copilot over forge docs |
136
146
 
137
- **39 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
147
+ **84 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
138
148
 
139
149
  ---
140
150
 
@@ -160,7 +170,7 @@ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aide
160
170
  | `welcome` | — | RECOMMENDED FIRST CALL: onboarding scan, score, narrative, capability tour |
161
171
  | `explore` | 16 | Analyze, understand, discover — recon/explain/call_graph/call_graph_summary/smell/lineage/harvest/synergy/scan/swarm/churn/surface_gaps/capability_scout/dead_code/maintainability/concept_bridge |
162
172
  | `audit` | 23 | Quality gates, change safety, trust |
163
- | `plan` | 9 | Orient + dev utilities — context/compose/policy/recipes/generate/apply/locate/commit/scaffold |
173
+ | `plan` | 10 | Orient + dev utilities — context/compose/policy/recipes/generate/apply/locate/commit/scaffold/steersman |
164
174
  | `transmute` | 3 | **FLAGSHIP** spaghetti→certified pipeline — auto/cherry/finalize |
165
175
  | `loop` | 4 | LLM iteration loops — iterate/resume/evolve/evolve_step |
166
176
  | `hive` | 13 | Multi-agent coordination — lifecycle, consensus, handoffs, enhancements |
@@ -182,9 +192,9 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
182
192
  |--------|-------|
183
193
 
184
194
  | MCP tools | **10 tools · 112 actions** |
185
- | CLI verbs | **39** |
186
- | Source files | **226** (~45K LOC) |
187
- | Tests | **1555 passing** across **111 test files** |
195
+ | CLI verbs | **84** |
196
+ | Source files | **228** (~45K LOC) |
197
+ | Tests | **1555 passing** across **112 test files** |
188
198
  | Lean4 formal proofs | **872 theorems** (mathematically verified core logic) |
189
199
  | Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
190
200
  | Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
@@ -194,6 +204,11 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
194
204
 
195
205
  Forge eats its own cooking. Every CI run scores itself.
196
206
 
207
+ > **Production-tested at scale.** 300+ public Python repos absorbed
208
+ > end-to-end via `forge auto` — fastapi (98k★), scrapy (61k★), pytest
209
+ > (13.8k★), DRF (30k★), cookiecutter (25k★), and ~295 others. Wire-PASS
210
+ > on every single one. Full receipt: [`HARVEST_LEDGER.md`](HARVEST_LEDGER.md).
211
+
197
212
  ---
198
213
 
199
214
  ## Pricing
@@ -1,6 +1,7 @@
1
1
  # Forge MCP Tools Reference
2
2
 
3
- Forge ships a Model Context Protocol server exposing **10 tools dispatching 112 actions**. Counts are auto-synced from `forge_metrics.json` by `doc-update`.
3
+ Forge ships a Model Context Protocol server exposing **10 tools dispatching 112 registry-callable actions**. Counts are auto-synced from `forge_metrics.json` by `doc-update`.
4
+ The per-tool table below lists the primary dispatch actions; the headline total also includes compatibility routes that keep older callers working.
4
5
  All legacy tool names redirect automatically — existing callers keep working.
5
6
 
6
7
  - Local: `forge mcp serve --project /path/to/repo`
@@ -16,9 +17,9 @@ All legacy tool names redirect automatically — existing callers keep working.
16
17
  | Tool | Actions | Purpose |
17
18
  |------|---------|---------|
18
19
  | [`welcome`](#welcome) | — | Session onboarding: scan, score, narrative, capability tour |
19
- | [`explore`](#explore) | 21 | Analyze and understand a codebase — recon, call graphs, smells, harvest, discovery |
20
- | [`audit`](#audit) | 16 | Quality gates, change safety, trust verification |
21
- | [`plan`](#plan) | 9 | Dev orientation and utilities — context packs, recipes, commit messages |
20
+ | [`explore`](#explore) | 16 | Analyze and understand a codebase — recon, call graphs, smells, harvest, discovery |
21
+ | [`audit`](#audit) | 23 | Quality gates, change safety, trust verification |
22
+ | [`plan`](#plan) | 10 | Dev orientation and utilities — context packs, recipes, commit messages, steersman packs |
22
23
  | [`transmute`](#transmute) | 3 | **FLAGSHIP** spaghetti-to-certified pipeline |
23
24
  | [`loop`](#loop) | 4 | LLM iteration and self-improvement loops |
24
25
  | [`hive`](#hive) | 13 | Multi-agent coordination — consensus, handoffs, enhancements |
@@ -44,7 +45,7 @@ single most-useful next call for the session.
44
45
 
45
46
  ## `explore`
46
47
 
47
- **21 actions.** Use when you need to analyze, understand, or discover patterns in a codebase.
48
+ **16 actions.** Use when you need to analyze, understand, or discover patterns in a codebase.
48
49
  No LLM is invoked — all analysis is deterministic.
49
50
 
50
51
  | Action | What it does |
@@ -73,7 +74,7 @@ No LLM is invoked — all analysis is deterministic.
73
74
 
74
75
  ## `audit`
75
76
 
76
- **16 actions.** Use when you need to check correctness, apply fixes, or gate a change.
77
+ **23 actions.** Use when you need to check correctness, apply fixes, or gate a change.
77
78
 
78
79
  | Action | What it does |
79
80
  |--------|-------------|
@@ -91,17 +92,21 @@ No LLM is invoked — all analysis is deterministic.
91
92
  | `cna` | CNA (Compose-Not-Add) check — rejects new symbols that duplicate existing ones. |
92
93
  | `rollback` | Generate a rollback plan for a proposed change. |
93
94
  | `diff` | Structured diff analysis between two states. |
95
+ | `ast_scope` | Build multi-repo AST blueprints plus deterministic Nexus-attestable edit locks. |
94
96
  | `surface_gaps` | Surface capability gaps in the current repo. |
95
97
  | `wire_stubs` | Generate stub implementations to satisfy wire constraints. |
96
-
97
- Additional actions registered but not in the base 16: `dead_code`, `maintainability`,
98
- `concept_bridge`, `auto_wire`, `doc_update` (totaling 21 in the full dispatch table).
98
+ | `dead_code` | Identify unreachable or unused symbols. |
99
+ | `maintainability` | Maintainability index per file/module. |
100
+ | `concept_bridge` | Cross-domain concept linkage detection. |
101
+ | `auto_wire` | Deterministically wire generated surface stubs. |
102
+ | `doc_update` | Regenerate public docs from metrics. |
103
+ | `doc_drift` | Detect public-doc metric drift. |
99
104
 
100
105
  ---
101
106
 
102
107
  ## `plan`
103
108
 
104
- **9 actions.** Dev utilities for orientation, workflow recipes, and commit hygiene.
109
+ **10 actions.** Dev utilities for orientation, workflow recipes, commit hygiene, and tiny-model routing.
105
110
 
106
111
  | Action | What it does |
107
112
  |--------|-------------|
@@ -114,6 +119,7 @@ Additional actions registered but not in the base 16: `dead_code`, `maintainabil
114
119
  | `locate` | Return insertion-point line range + preview (~1000-token saving) |
115
120
  | `commit` | Assemble a structured commit message (~10k-token saving) |
116
121
  | `scaffold` | Scaffold a new module or feature at the correct tier |
122
+ | `steersman` | Build AST-lock decision packs tiny enough for a 1B semantic router |
117
123
 
118
124
  ---
119
125
 
@@ -0,0 +1,46 @@
1
+ # `atomadic-forge metrics`
2
+
3
+ _Emit forge_metrics.json — canonical metrics for README/CHANGELOG/welcome/worker._
4
+
5
+ - **Module**: `atomadic_forge.commands.metrics`
6
+ - **Surface**: `typer_app`
7
+ - **Source root**: `atomadic_forge_seed`
8
+ - **Hidden**: `False`
9
+
10
+ ## Forge metrics
11
+
12
+ Use the top-level command when updating Forge's own public counters.
13
+
14
+ ```bash
15
+ forge metrics
16
+ forge metrics --apply
17
+ forge metrics --json
18
+ ```
19
+
20
+ `--apply` rewrites `forge_metrics.json`. This artifact is Forge-specific:
21
+ README badges, release automation, and Worker metadata read from it.
22
+
23
+ ## Product repo metrics
24
+
25
+ Use the `repo` subcommand when updating any product repository's own public
26
+ surface.
27
+
28
+ ```bash
29
+ forge metrics repo --project /path/to/product
30
+ forge metrics repo --project /path/to/product --apply
31
+ forge metrics repo --project /path/to/product --json
32
+ ```
33
+
34
+ The repo sync is intentionally separate from Forge metrics. It computes the
35
+ target repo's source files, source lines, test files, languages, name, and
36
+ version, then plans these bounded writes:
37
+
38
+ | File | Update |
39
+ |------|--------|
40
+ | `repo_metrics.json` | Canonical product metrics artifact |
41
+ | `README.md` | Metrics copy block between `<!-- forge:metrics:start -->` markers |
42
+ | `server.json` | MCP registry version and description, when present |
43
+
44
+ Dry-run is the default. Passing `--apply` writes the product surface and does
45
+ not mutate `forge_metrics.json`.
46
+
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "atomadic-forge"
7
- version = "0.75.0"
7
+ version = "0.75.2"
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"
@@ -11,7 +11,7 @@ Updateable sections
11
11
  README.md
12
12
  • "By the Numbers" table (bounded by METRICS_START / METRICS_END anchors)
13
13
  • "## MCP Server — N Tools, M Actions" heading
14
- • Tool-table rows for ``explore`` and ``audit`` (action counts)
14
+ • Tool-table rows for MCP tools whose action enums are discoverable
15
15
  • "**N CLI verbs total.**" count
16
16
 
17
17
  CHANGELOG.md
@@ -49,8 +49,7 @@ _METRICS_END = "\nForge eats its own cooking."
49
49
 
50
50
  _MCP_HEADER_RE = re.compile(r"## MCP Server — \d+ Tools, \d+ Actions")
51
51
  _CLI_COUNT_RE = re.compile(r"\*\*(\d+) CLI verbs total\.\*\*")
52
- _EXPLORE_ROW_RE = re.compile(r"(\| `explore` \| )(\d+)( \|)")
53
- _AUDIT_ROW_RE = re.compile(r"(\| `audit` \| )(\d+)( \|)")
52
+ _TOOL_ROW_RE = re.compile(r"(\| `(?P<tool>[^`]+)` \| )(?P<count>\d+)( \|)")
54
53
 
55
54
  # ── CHANGELOG anchor ──────────────────────────────────────────────────────────
56
55
  _CHANGELOG_UNRELEASED = "## Unreleased"
@@ -60,8 +59,11 @@ _CHANGELOG_VER_RE = re.compile(r"^## v(\d+\.\d+\.\d+)", re.MULTILINE)
60
59
  # IDE_INTEGRATION.md: matches "**NN tools**" or "**NN tools dispatching NN actions**"
61
60
  _IDE_TOOLS_RE = re.compile(r'\*\*\d+ tools(?:\s+dispatching\s+\d+\s+actions)?\*\*')
62
61
 
63
- # WHITEPAPER.md: matches "NN MCP tools [word] dispatching NN actions" (optional mid-word)
64
- _WP_TOOLS_PHRASE_RE = re.compile(r'(\d+) MCP tools(?:\s+\w+)? dispatching (\d+) actions')
62
+ # WHITEPAPER.md: matches "NN MCP tools [word] dispatching NN actions",
63
+ # including prose line wraps between "MCP" and "tools".
64
+ _WP_TOOLS_PHRASE_RE = re.compile(
65
+ r'(\d+)\s+MCP\s+tools(?:\s+\w+)?\s+dispatching\s+(\d+)\s+actions'
66
+ )
65
67
  # WHITEPAPER.md: matches "NN,NNN passing tests" or "NN passing tests"
66
68
  _WP_TESTS_RE = re.compile(r'([\d,]+) passing tests')
67
69
 
@@ -145,6 +147,21 @@ def _count_mcp_actions_per_tool(project_root: Path) -> dict[str, int]:
145
147
  Anchors each enum to its tool name in the TOOLS dict so counts are
146
148
  correct even when audit grows larger than explore.
147
149
  """
150
+ try:
151
+ from .mcp_protocol import TOOLS
152
+ live: dict[str, int] = {}
153
+ for tool, spec in TOOLS.items():
154
+ props = (spec.get("inputSchema") or {}).get("properties") or {}
155
+ count = 0
156
+ for key in ("action", "op"):
157
+ enum = (props.get(key) or {}).get("enum") or []
158
+ count += len(enum)
159
+ if count:
160
+ live[tool] = count
161
+ if live:
162
+ return live
163
+ except Exception:
164
+ pass
148
165
  proto = project_root / "src" / "atomadic_forge" / "a1_at_functions" / "mcp_protocol.py"
149
166
  if not proto.exists():
150
167
  return {}
@@ -303,22 +320,22 @@ def update_readme(
303
320
  text = new_text
304
321
  changes.append("README: MCP Server heading updated")
305
322
 
306
- # 3. explore / audit action counts in tool table
323
+ # 3. MCP action counts in tool table
307
324
  action_counts = _count_mcp_actions_per_tool(project_root)
308
- if "explore" in action_counts:
309
- new_text, n = _EXPLORE_ROW_RE.subn(
310
- lambda m: m.group(1) + str(action_counts["explore"]) + m.group(3), text
311
- )
312
- if n:
313
- text = new_text
314
- changes.append(f"README: explore action count → {action_counts['explore']}")
315
- if "audit" in action_counts:
316
- new_text, n = _AUDIT_ROW_RE.subn(
317
- lambda m: m.group(1) + str(action_counts["audit"]) + m.group(3), text
318
- )
319
- if n:
320
- text = new_text
321
- changes.append(f"README: audit action count → {action_counts['audit']}")
325
+ changed_tools: list[str] = []
326
+
327
+ def _replace_tool_count(match: re.Match[str]) -> str:
328
+ tool = match.group("tool")
329
+ if tool not in action_counts:
330
+ return match.group(0)
331
+ new_count = str(action_counts[tool])
332
+ if match.group("count") != new_count:
333
+ changed_tools.append(tool)
334
+ return match.group(1) + new_count + match.group(4)
335
+
336
+ text = _TOOL_ROW_RE.sub(_replace_tool_count, text)
337
+ for tool in sorted(set(changed_tools)):
338
+ changes.append(f"README: {tool} action count → {action_counts[tool]}")
322
339
 
323
340
  # 4. CLI verb count
324
341
  cli_verbs = metrics.get("cli_verbs", 0)