atomadic-forge 0.52.0__tar.gz → 0.53.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 (425) hide show
  1. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/metrics-auto-regen.yml +15 -14
  2. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/metrics-drift.yml +5 -5
  3. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/CHANGELOG.md +68 -9
  4. {atomadic_forge-0.52.0/src/atomadic_forge.egg-info → atomadic_forge-0.53.0}/PKG-INFO +2 -2
  5. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/README.md +1 -1
  6. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/AGENTS_GUIDE.md +1 -1
  7. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/RECEIPT.md +3 -3
  8. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/compliance/CMMC_AI_MAPPING.md +1 -1
  9. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +2 -2
  10. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/compliance/FDA_PCCP_MAPPING.md +1 -1
  11. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/compliance/SR_11-7_MAPPING.md +1 -1
  12. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/pyproject.toml +1 -1
  13. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +1 -1
  14. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +11 -1
  15. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/call_graph.py +110 -0
  16. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/forge_metrics.py +13 -13
  17. atomadic_forge-0.53.0/src/atomadic_forge/a1_at_functions/git_churn.py +129 -0
  18. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +51 -7
  19. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/emergent_swarm.py +18 -5
  20. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/forge_metrics_feature.py +16 -17
  21. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +79 -0
  22. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/metrics.py +6 -6
  23. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0/src/atomadic_forge.egg-info}/PKG-INFO +2 -2
  24. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge.egg-info/SOURCES.txt +3 -0
  25. atomadic_forge-0.53.0/tests/test_call_graph_summary.py +65 -0
  26. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_card_renderer.py +1 -1
  27. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_cli_smoke.py +4 -0
  28. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_compliance_checker.py +1 -1
  29. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_copilots_copilot.py +8 -0
  30. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_cs1_renderer.py +2 -2
  31. atomadic_forge-0.53.0/tests/test_git_churn.py +80 -0
  32. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_mcp_protocol.py +65 -0
  33. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/FUNDING.yml +0 -0
  34. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  35. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  36. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  37. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/actions/forge-action/README.md +0 -0
  38. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/actions/forge-action/action.yml +0 -0
  39. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/dependabot.yml +0 -0
  40. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/pull_request_template.md +0 -0
  41. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/ci.yml +0 -0
  42. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/customer-refactor.yml +0 -0
  43. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/forge-self-certify.yml +0 -0
  44. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/mcp-registry-publish.yml +0 -0
  45. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/publish-on-tag.yml +0 -0
  46. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/release-readiness.yml +0 -0
  47. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/release.yml +0 -0
  48. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/surface-drift.yml +0 -0
  49. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/.github/workflows/uptime.yml +0 -0
  50. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/ARCHITECTURE.md +0 -0
  51. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/CONTRIBUTING.md +0 -0
  52. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/LICENSE +0 -0
  53. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/MANIFEST.in +0 -0
  54. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/SECURITY.md +0 -0
  55. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/assets/Atomadic-Forge-01.png +0 -0
  56. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/01-getting-started.md +0 -0
  57. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/02-commands.md +0 -0
  58. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/03-tutorial.md +0 -0
  59. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/04-llm-loops.md +0 -0
  60. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/05-faq.md +0 -0
  61. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/AIR_GAPPED.md +0 -0
  62. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/CI_CD.md +0 -0
  63. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/CODEX_WALKTHROUGH.md +0 -0
  64. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/COMMANDS.md +0 -0
  65. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/FIRST_10_MINUTES.md +0 -0
  66. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/FORMALIZATION.md +0 -0
  67. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/HIVE_PRIMITIVES.md +0 -0
  68. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/HIVE_STATUS.md +0 -0
  69. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/IDE_INTEGRATION.md +0 -0
  70. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/LANDSCAPE.md +0 -0
  71. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/MARKET_POSITIONING.md +0 -0
  72. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/MIGRATION.md +0 -0
  73. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/MULTI_REPO.md +0 -0
  74. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/PROVIDERS.md +0 -0
  75. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/README.md +0 -0
  76. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/RELAY_PROTOCOL.md +0 -0
  77. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/RELEASE_CHECKLIST.md +0 -0
  78. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/RELEASE_MESSAGING.md +0 -0
  79. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/ROADMAP.md +0 -0
  80. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/SHOWCASE.md +0 -0
  81. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/SIDECAR.md +0 -0
  82. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/STUDIO.md +0 -0
  83. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
  84. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/V0.46.0_JUSTIFICATION_REPORT.md +0 -0
  85. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/V0.47.0_SELF_TEST_REPORT.md +0 -0
  86. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/WHY_NOW.md +0 -0
  87. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
  88. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/WORLD_COLLISION.md +0 -0
  89. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/INDEX.md +0 -0
  90. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/absorb.md +0 -0
  91. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/audit.md +0 -0
  92. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/chat.md +0 -0
  93. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/commandsmith.md +0 -0
  94. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/config.md +0 -0
  95. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/create.md +0 -0
  96. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/demo.md +0 -0
  97. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/emergent-swarm.md +0 -0
  98. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/emergent-then-synergy.md +0 -0
  99. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/emergent.md +0 -0
  100. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/enhancement.md +0 -0
  101. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/evolve-then-iterate.md +0 -0
  102. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/evolve.md +0 -0
  103. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/feature-then-emergent.md +0 -0
  104. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/guard-install.md +0 -0
  105. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/handoff.md +0 -0
  106. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/harvest.md +0 -0
  107. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/hive.md +0 -0
  108. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/iterate.md +0 -0
  109. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/materialize.md +0 -0
  110. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/metrics.md +0 -0
  111. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/recon-swarm.md +0 -0
  112. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/relay.md +0 -0
  113. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/surface.md +0 -0
  114. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/synergy-then-emergent.md +0 -0
  115. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/synergy.md +0 -0
  116. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/welcome.md +0 -0
  117. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/commands/wisdom.md +0 -0
  118. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/compliance/CS-1.md +0 -0
  119. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +0 -0
  120. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/tutorials/01-quickstart.md +0 -0
  121. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/tutorials/02-your-first-package.md +0 -0
  122. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/tutorials/03-the-five-tier-law.md +0 -0
  123. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/tutorials/04-plug-in-llms.md +0 -0
  124. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/tutorials/05-multi-repo-absorb.md +0 -0
  125. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/docs/tutorials/06-javascript-quickstart.md +0 -0
  126. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/setup.cfg +0 -0
  127. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/__init__.py +0 -0
  128. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/__main__.py +0 -0
  129. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
  130. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
  131. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
  132. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
  133. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
  134. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
  135. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +0 -0
  136. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
  137. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
  138. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
  139. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
  140. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
  141. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
  142. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +0 -0
  143. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/materialize_types.py +0 -0
  144. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
  145. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
  146. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
  147. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/response_enrichment.py +0 -0
  148. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
  149. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +0 -0
  150. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
  151. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
  152. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
  153. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
  154. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/welcome_constants.py +0 -0
  155. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
  156. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
  157. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
  158. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
  159. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
  160. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
  161. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
  162. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
  163. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
  164. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
  165. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
  166. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
  167. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
  168. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
  169. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
  170. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
  171. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
  172. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
  173. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/custom_provider_client.py +0 -0
  174. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
  175. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
  176. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
  177. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
  178. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
  179. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
  180. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +0 -0
  181. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
  182. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
  183. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
  184. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
  185. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
  186. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
  187. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
  188. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/handoff_builder.py +0 -0
  189. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/harvest_absorb.py +0 -0
  190. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
  191. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/hive_io.py +0 -0
  192. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
  193. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
  194. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
  195. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
  196. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/lifetime_savings.py +0 -0
  197. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
  198. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
  199. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
  200. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
  201. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
  202. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
  203. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
  204. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
  205. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
  206. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/polyglot_classify.py +0 -0
  207. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/polyglot_imports.py +0 -0
  208. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/polyglot_surface.py +0 -0
  209. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
  210. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
  211. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
  212. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
  213. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
  214. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
  215. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
  216. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
  217. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/response_enricher.py +0 -0
  218. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
  219. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
  220. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
  221. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
  222. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/scaffold_polyglot.py +0 -0
  223. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
  224. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
  225. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
  226. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
  227. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
  228. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/smell_scan.py +0 -0
  229. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
  230. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
  231. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
  232. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
  233. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
  234. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
  235. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
  236. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
  237. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
  238. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
  239. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
  240. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/welcome_narrator.py +0 -0
  241. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
  242. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +0 -0
  243. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/wisdom_io.py +0 -0
  244. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +0 -0
  245. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -0
  246. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
  247. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
  248. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
  249. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
  250. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
  251. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
  252. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
  253. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
  254. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
  255. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
  256. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/nexus_client.py +0 -0
  257. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
  258. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
  259. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
  260. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/absorb_feature.py +0 -0
  261. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
  262. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
  263. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
  264. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
  265. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
  266. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/create_feature.py +0 -0
  267. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
  268. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
  269. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
  270. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
  271. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
  272. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
  273. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
  274. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
  275. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
  276. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +0 -0
  277. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
  278. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
  279. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
  280. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
  281. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
  282. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
  283. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
  284. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
  285. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
  286. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/hive_sync.py +0 -0
  287. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
  288. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/materialize_feature.py +0 -0
  289. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/mcp_server.py +0 -0
  290. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -0
  291. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
  292. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
  293. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
  294. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
  295. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
  296. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/verify_umbrella.py +0 -0
  297. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/welcome_feature.py +0 -0
  298. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -0
  299. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
  300. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +0 -0
  301. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
  302. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
  303. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/__init__.py +0 -0
  304. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/_registry.py +0 -0
  305. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/absorb.py +0 -0
  306. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/audit.py +0 -0
  307. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/chat.py +0 -0
  308. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/commandsmith.py +0 -0
  309. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/config_cmd.py +0 -0
  310. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/create.py +0 -0
  311. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/demo.py +0 -0
  312. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/emergent.py +0 -0
  313. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/emergent_swarm.py +0 -0
  314. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
  315. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/enhancement.py +0 -0
  316. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/evolve.py +0 -0
  317. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
  318. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
  319. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/guard_install.py +0 -0
  320. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/handoff.py +0 -0
  321. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/harvest.py +0 -0
  322. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/hive.py +0 -0
  323. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/iterate.py +0 -0
  324. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/materialize.py +0 -0
  325. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/recon_swarm.py +0 -0
  326. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/relay.py +0 -0
  327. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/surface.py +0 -0
  328. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/synergy.py +0 -0
  329. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
  330. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/welcome.py +0 -0
  331. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge/commands/wisdom.py +0 -0
  332. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
  333. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
  334. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge.egg-info/requires.txt +0 -0
  335. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
  336. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_aaaa_nexus_client.py +0 -0
  337. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_agent_hire_protocol.py +0 -0
  338. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_agent_plan.py +0 -0
  339. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_agent_plan_pkg_label.py +0 -0
  340. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_agent_summary.py +0 -0
  341. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_audit_verb.py +0 -0
  342. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_body_extractor_repairs.py +0 -0
  343. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_certify_operational_axis.py +0 -0
  344. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_chat.py +0 -0
  345. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_classify_tier.py +0 -0
  346. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_classify_tier_ast_signals.py +0 -0
  347. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_cli_swarm_aliases.py +0 -0
  348. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_codex_5_complete.py +0 -0
  349. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_codex_6_enforce_polyglot.py +0 -0
  350. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_commandsmith.py +0 -0
  351. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_compiler_feedback.py +0 -0
  352. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_config.py +0 -0
  353. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_cost_circuit_breaker.py +0 -0
  354. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_create_feature.py +0 -0
  355. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_custom_provider.py +0 -0
  356. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_dedup_engine.py +0 -0
  357. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_demo.py +0 -0
  358. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_emergent_compose.py +0 -0
  359. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_emergent_signature_extract.py +0 -0
  360. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_emergent_synthesize_imports.py +0 -0
  361. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_enhancement_proposal.py +0 -0
  362. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_error_codes.py +0 -0
  363. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_error_hints.py +0 -0
  364. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_evolve_js.py +0 -0
  365. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_exported_api_check.py +0 -0
  366. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_forge_action.py +0 -0
  367. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_forge_auth_a1.py +0 -0
  368. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_forge_auth_a2.py +0 -0
  369. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_forge_enforce.py +0 -0
  370. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_generation_quality.py +0 -0
  371. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_handoff.py +0 -0
  372. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_hierarchical_memory.py +0 -0
  373. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_hive_sync.py +0 -0
  374. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_ignore_and_docs.py +0 -0
  375. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_import_smoke.py +0 -0
  376. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_iterate_evolve.py +0 -0
  377. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_js_certify.py +0 -0
  378. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_js_parser.py +0 -0
  379. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_js_recon.py +0 -0
  380. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_js_wire.py +0 -0
  381. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_lineage_chain.py +0 -0
  382. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_ling_provider.py +0 -0
  383. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_local_signer.py +0 -0
  384. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_lsp_protocol.py +0 -0
  385. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_manifest_diff.py +0 -0
  386. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_materialize_feature.py +0 -0
  387. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_mcp_lazy_bootstrap.py +0 -0
  388. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_nexus_bridge.py +0 -0
  389. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_ollama_client.py +0 -0
  390. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_pipeline.py +0 -0
  391. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_plan_apply.py +0 -0
  392. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_polyglot_cli_mcp.py +0 -0
  393. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_polyglot_full_pipeline.py +0 -0
  394. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_polyglot_hardening.py +0 -0
  395. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_polyglot_swift_kotlin_go.py +0 -0
  396. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_polyglot_symbol_parity.py +0 -0
  397. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_pre_audit_smoke.py +0 -0
  398. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_precommit_hooks.py +0 -0
  399. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_progress_reporter.py +0 -0
  400. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_receipt_emitter.py +0 -0
  401. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_receipt_schema.py +0 -0
  402. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_receipt_signer.py +0 -0
  403. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_response_enricher.py +0 -0
  404. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_roi_calculator.py +0 -0
  405. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_sbom_cmd_text_summary.py +0 -0
  406. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_sbom_emitter.py +0 -0
  407. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_scaffold.py +0 -0
  408. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_sidecar.py +0 -0
  409. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_sidecar_validate.py +0 -0
  410. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_smell_score_formula.py +0 -0
  411. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_stagnation.py +0 -0
  412. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_stub_detector.py +0 -0
  413. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_surface_export.py +0 -0
  414. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_synergy.py +0 -0
  415. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_test_runner.py +0 -0
  416. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_tier_init_rebuild.py +0 -0
  417. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_trust_gate_response.py +0 -0
  418. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_verify_suggested_recipe.py +0 -0
  419. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_welcome.py +0 -0
  420. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_welcome_enhancements.py +0 -0
  421. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_whoami_cmd.py +0 -0
  422. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_wire_certify.py +0 -0
  423. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_wire_suggest_repairs.py +0 -0
  424. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_wire_type_checking.py +0 -0
  425. {atomadic_forge-0.52.0 → atomadic_forge-0.53.0}/tests/test_wisdom.py +0 -0
@@ -10,8 +10,8 @@ name: Metrics Auto-Regenerate
10
10
  # - Public surfaces (atomadic.tech, shields.io endpoints proxied by
11
11
  # the worker) always read live numbers from the same JSON.
12
12
  #
13
- # Lean theorem count requires the IP-protected mhed-codex repo. The
14
- # FORGE_MHED_CODEX_REPO secret (org-level) provides a deploy-key URL;
13
+ # Lean theorem count requires the IP-protected proof corpus repo. The
14
+ # PROOF_CORPUS_DEPLOY_KEY secret (org-level) provides a deploy-key;
15
15
  # without it the lean_theorems block is preserved from the prior commit
16
16
  # (see surgical merge step below) so this workflow never destroys real
17
17
  # numbers when running without the IP repo attached.
@@ -52,37 +52,38 @@ jobs:
52
52
  echo "$out"
53
53
  passed=$(echo "$out" | grep -oE '[0-9]+ passed' | head -1 | grep -oE '[0-9]+')
54
54
  echo "passed=${passed:-0}" >> "$GITHUB_OUTPUT"
55
- - name: Optionally clone IP-protected mhed-codex (preserves lean count)
55
+ - name: Optionally clone IP-protected proof corpus (preserves lean count)
56
56
  # GitHub Actions disallows `secrets.*` in `if` — runtime check
57
57
  # inside the script instead. No-op if the deploy key is unset.
58
58
  env:
59
- MHED_CODEX_DEPLOY_KEY: ${{ secrets.MHED_CODEX_DEPLOY_KEY }}
59
+ PROOF_CORPUS_DEPLOY_KEY: ${{ secrets.PROOF_CORPUS_DEPLOY_KEY }}
60
+ PROOF_CORPUS_REPO_URL: ${{ secrets.PROOF_CORPUS_REPO_URL }}
60
61
  run: |
61
- if [ -z "${MHED_CODEX_DEPLOY_KEY:-}" ]; then
62
- echo "MHED_CODEX_DEPLOY_KEY not set — skipping mhed-codex clone."
62
+ if [ -z "${PROOF_CORPUS_DEPLOY_KEY:-}" ]; then
63
+ echo "PROOF_CORPUS_DEPLOY_KEY not set — skipping proof corpus clone."
63
64
  exit 0
64
65
  fi
65
66
  mkdir -p ~/.ssh && chmod 700 ~/.ssh
66
- echo "$MHED_CODEX_DEPLOY_KEY" > ~/.ssh/mhed_key && chmod 600 ~/.ssh/mhed_key
67
- GIT_SSH_COMMAND="ssh -i ~/.ssh/mhed_key -o StrictHostKeyChecking=no" \
68
- git clone --depth 1 git@github.com:atomadictech/mhed-codex.git /tmp/mhed-codex
69
- echo "FORGE_MHED_CODEX=/tmp/mhed-codex" >> "$GITHUB_ENV"
67
+ echo "$PROOF_CORPUS_DEPLOY_KEY" > ~/.ssh/corpus_key && chmod 600 ~/.ssh/corpus_key
68
+ GIT_SSH_COMMAND="ssh -i ~/.ssh/corpus_key -o StrictHostKeyChecking=no" \
69
+ git clone --depth 1 "$PROOF_CORPUS_REPO_URL" /tmp/proof-corpus
70
+ echo "FORGE_PROOF_CORPUS=/tmp/proof-corpus" >> "$GITHUB_ENV"
70
71
  - name: Regenerate forge_metrics.json
71
72
  run: |
72
73
  # Save the previous lean_theorems block so we can preserve it
73
- # when no mhed-codex is attached (avoid zeroing the public
74
+ # when no proof corpus is attached (avoid zeroing the public
74
75
  # number on a routine source-only push).
75
76
  python -c "import json; d=json.load(open('forge_metrics.json')); print(json.dumps(d.get('lean_theorems', {})))" > /tmp/prev_lean.json
76
77
  forge metrics --apply --tests-passing ${{ steps.pytest.outputs.passed }}
77
- # If no mhed-codex was attached this run, restore prior lean block.
78
- if [ -z "${FORGE_MHED_CODEX:-}" ]; then
78
+ # If no proof corpus was attached this run, restore prior lean block.
79
+ if [ -z "${FORGE_PROOF_CORPUS:-}" ]; then
79
80
  python <<'PY'
80
81
  import json, pathlib
81
82
  p = pathlib.Path("forge_metrics.json")
82
83
  d = json.loads(p.read_text())
83
84
  prev = json.loads(pathlib.Path("/tmp/prev_lean.json").read_text())
84
85
  # Only restore if the freshly-computed block reports found=False
85
- # (i.e. mhed-codex unavailable) AND the prior had a real count.
86
+ # (i.e. proof corpus unavailable) AND the prior had a real count.
86
87
  if not d.get("lean_theorems", {}).get("found") and prev.get("count"):
87
88
  d["lean_theorems"] = prev
88
89
  p.write_text(json.dumps(d, indent=2, sort_keys=True) + "\n")
@@ -4,10 +4,10 @@ name: Metrics Drift Gate
4
4
  # Any PR that changes TOOLS, CLI registry, source/test counts, or
5
5
  # pyproject.toml WITHOUT regenerating forge_metrics.json fails this check.
6
6
  #
7
- # Lean theorem count is recomputed only when the FORGE_MHED_CODEX repo is
7
+ # Lean theorem count is recomputed only when the FORGE_PROOF_CORPUS repo is
8
8
  # accessible (CI env var). When not set, the lean_theorems block is
9
9
  # preserved from the in-tree forge_metrics.json so PRs that don't touch
10
- # mhed-codex don't get blocked here.
10
+ # the proof corpus don't get blocked here.
11
11
  #
12
12
  # Fix when this fails: forge metrics --apply && git add forge_metrics.json
13
13
 
@@ -41,7 +41,7 @@ jobs:
41
41
  set -euo pipefail
42
42
  # Save committed copy.
43
43
  cp forge_metrics.json /tmp/forge_metrics.committed.json
44
- # Recompute (Lean count zero in CI unless FORGE_MHED_CODEX is wired).
44
+ # Recompute (Lean count zero in CI unless FORGE_PROOF_CORPUS is wired).
45
45
  forge metrics --apply
46
46
  # If the only delta is the timestamp, that's expected — strip it
47
47
  # before diffing so we only fail on substantive drift.
@@ -53,10 +53,10 @@ jobs:
53
53
  # this gate doesn't run pytest. Comparing them is meaningless.
54
54
  jq 'del(.tests_passing)' /tmp/a.json > /tmp/a2.json && mv /tmp/a2.json /tmp/a.json
55
55
  jq 'del(.tests_passing)' /tmp/b.json > /tmp/b2.json && mv /tmp/b2.json /tmp/b.json
56
- # If FORGE_MHED_CODEX is not set, also ignore the lean_theorems
56
+ # If FORGE_PROOF_CORPUS is not set, also ignore the lean_theorems
57
57
  # block (will be 0 in CI but the committed artifact has the real
58
58
  # count from the IP repo).
59
- if [ -z "${FORGE_MHED_CODEX:-}" ]; then
59
+ if [ -z "${FORGE_PROOF_CORPUS:-}" ]; then
60
60
  jq 'del(.lean_theorems)' /tmp/a.json > /tmp/a2.json && mv /tmp/a2.json /tmp/a.json
61
61
  jq 'del(.lean_theorems)' /tmp/b.json > /tmp/b2.json && mv /tmp/b2.json /tmp/b.json
62
62
  fi
@@ -2,6 +2,65 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v0.53.0 — 2026-05-07 — Harvest synthesis: call-graph-summary, git churn, token budget
6
+
7
+ ### feat(synthesis): three new a1 capabilities absorbed from harvest pipeline
8
+
9
+ **`call_graph_summary` — whole-package call-graph portfolio** (pyan synthesis)
10
+
11
+ Adds `build_call_graph_summary()` to `a1_at_functions/call_graph.py`.
12
+ Surfaces orphan functions (uncalled callers), hotspot functions by fan-in,
13
+ and maximum call-chain depth for an entire package in one shot — distinct from
14
+ the per-symbol BFS that `call_graph` already provides.
15
+
16
+ - `forge call-graph-summary --project <root> [--package NAME] [--top-n N] [--json]`
17
+ - MCP: `explore(action='call_graph_summary')`
18
+ - Schema: `atomadic-forge.call_graph_summary/v1`
19
+
20
+ **`git_churn` — file-level commit frequency** (Repomix synthesis)
21
+
22
+ New `a1_at_functions/git_churn.py` with `compute_git_churn()`.
23
+ Runs `git log --name-only` to build hotspot/stable file rankings, average and
24
+ median commits per file, first/last commit dates. Returns a minimal error dict
25
+ when git is unavailable so callers degrade gracefully.
26
+
27
+ - `forge churn --project <root> [--since '6 months ago'] [--top-n N] [--all-files] [--json]`
28
+ - MCP: `explore(action='churn')`
29
+ - Schema: `atomadic-forge.git_churn/v1`
30
+
31
+ **`token_estimate` — context-pack payload sizing** (Repomix synthesis)
32
+
33
+ `emit_context_pack()` now includes `token_estimate: int` — a `len(json.dumps(pack)) // 4`
34
+ approximation so agents can budget against context limits before dispatching.
35
+
36
+ ### metrics
37
+
38
+ - CLI verbs: 74 (+2)
39
+ - MCP actions: 66 (+2)
40
+ - Tests: 1423 (+14 over v0.52.1)
41
+
42
+ ## v0.52.1 — 2026-05-07 — IP scrub: no private identifiers in public repo
43
+
44
+ ### fix(security): remove all private identifiers from public surfaces
45
+
46
+ All internal project names, repo identifiers, and deploy-key secret
47
+ names replaced with neutral public-safe labels throughout:
48
+
49
+ - CI workflow secrets and env vars renamed to neutral `PROOF_CORPUS_*` prefix
50
+ - Hardcoded SSH clone URL moved to `PROOF_CORPUS_REPO_URL` org secret
51
+ - Python API param renamed to `proof_corpus_root`; internal helper to `_find_proof_corpus`
52
+ - CLI flag renamed to `forge metrics --proof-corpus`
53
+ - All docs (CHANGELOG, README, .gitignore) use neutral labels
54
+
55
+ Zero functional changes. certify: 100/100. wire: 0 violations.
56
+
57
+ ### fix(test): git-ceiling tests clear inherited worktree env vars
58
+
59
+ `test_worktree_status_non_git_runs` and
60
+ `test_tools_call_doctor_with_include_worktree` now explicitly unset
61
+ `GIT_DIR`/`GIT_WORK_TREE`/`GIT_COMMON_DIR` so they pass when running
62
+ from inside a git worktree on Windows.
63
+
5
64
  ### feat(emergent-swarm): hub-node penalty in `emergent_swarm` scoring
6
65
 
7
66
  Symbols that appear in more than 3 chains are now penalised in
@@ -164,7 +223,7 @@ This release scrubs all of them while keeping the credibility markers:
164
223
 
165
224
  **IP-protected (stripped from public):**
166
225
  - Specific theorem names (no longer cited anywhere public)
167
- - Codex framework names ("MHED-TOE" "system")
226
+ - Internal framework names (removed from all public surfaces)
168
227
  - Math derivations (no `⌊Δ_RG/η⌋`, no Leech / Niemeier / Coxeter–Todd /
169
228
  Golay / Monster group / E₈ geometry references)
170
229
  - Greek-letter math (`τ_TRUST` → `TAU_TRUST`, `τ_trust` → `trust threshold`
@@ -233,8 +292,8 @@ or `pyproject.toml` triggers a regeneration. If the artifact drifted, a
233
292
  follow-up `chore(metrics): auto-regenerate [skip ci]` commit is pushed
234
293
  back to main. Stale numbers self-heal — no human intervention.
235
294
 
236
- When the `MHED_CODEX_DEPLOY_KEY` org secret is configured, the
237
- auto-regen also clones the IP-protected mhed-codex over deploy-key
295
+ When the `PROOF_CORPUS_DEPLOY_KEY` org secret is configured, the
296
+ auto-regen also clones the IP-protected proof corpus over deploy-key
238
297
  SSH and refreshes the Lean theorem count. Without the secret, the prior
239
298
  lean count is preserved (never zeroed by a routine push).
240
299
 
@@ -251,7 +310,7 @@ targeted-subset passes). The artifact now carries all three explicitly:
251
310
 
252
311
  Every public number Forge claims about itself — MCP tool count, action
253
312
  count, CLI verb count, source/test files, lines of code, and the count
254
- of formally-verified Lean4 theorems in the IP-protected mhed-codex
313
+ of formally-verified Lean4 theorems in the IP-protected proof corpus
255
314
  moat — now lives in one canonical artifact: `forge_metrics.json` at the
256
315
  repo root, regenerated on every push by `forge metrics --apply`.
257
316
 
@@ -265,7 +324,7 @@ artifact drift out of sync with the live forge surface.
265
324
  - 71 CLI verbs
266
325
  - 211 source files · ~40,110 LOC
267
326
  - 96 test files
268
- - **886 Lean4 theorems across 38 files** (mhed-codex moat)
327
+ - **886 Lean4 theorems across 38 files** (formal-proof moat)
269
328
  - monadic tiers = 5
270
329
 
271
330
  ### feat(cli/mcp): `forge metrics` verb — print or write the artifact
@@ -279,10 +338,10 @@ forge metrics --self-cert # also embed certify score (slower)
279
338
 
280
339
  The verb composes a pure tier-a1 aggregator (`forge_metrics.py`) with
281
340
  the live MCP TOOLS dict and CLI registry. Source paths from the
282
- IP-protected mhed-codex repo are NEVER written into the public
341
+ IP-protected proof corpus are NEVER written into the public
283
342
  artifact — only aggregate counts. Path resolution is via the
284
- `FORGE_MHED_CODEX` env var; gitignore protects `mhed-codex/` from
285
- ever being checked in.
343
+ `FORGE_PROOF_CORPUS` env var; gitignore protects the proof corpus
344
+ directory from ever being checked in.
286
345
 
287
346
  ### chore: corrected stale README numbers
288
347
 
@@ -3069,7 +3128,7 @@ shipped on master.
3069
3128
  roadmap explicit (v1.0 → v1.1 W8 polyglot_breakdown → v1.2 W12
3070
3129
  slsa_attestation → v2.0 W24 bao_rompf_witnesses). Both Lean4 corpora
3071
3130
  cited (`aethel-nexus-proofs` — 29 theorems, 0 sorry, 0 axioms — and
3072
- `mhed-toe-codex-v22` — 538 theorems, 0 sorry). All signing / lineage
3131
+ `proof-corpus-v22` — 538 theorems, 0 sorry). All signing / lineage
3073
3132
  / attestation fields default to `None` so unsigned dev Receipts
3074
3133
  remain structurally valid. Tier-pure a0.
3075
3134
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atomadic-forge
3
- Version: 0.52.0
3
+ Version: 0.53.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
@@ -208,7 +208,7 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
208
208
  | CLI verbs | **71** |
209
209
  | Source files | **211** (~40,195 LOC) |
210
210
  | Tests | **1,495 passing** across **97 test files** (1,411 static · pytest expands parametrize to 1,495 collected) |
211
- | Lean4 formal proofs | **872 theorems** across 30 files (mathematically verified core logic — IP-protected mhed-codex moat) |
211
+ | Lean4 formal proofs | **872 theorems** across 30 files (mathematically verified core logic — IP-protected formal verification moat) |
212
212
  | Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
213
213
  | Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
214
214
  | Infrastructure cost | **$5/mo** |
@@ -176,7 +176,7 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
176
176
  | CLI verbs | **71** |
177
177
  | Source files | **211** (~40,195 LOC) |
178
178
  | Tests | **1,495 passing** across **97 test files** (1,411 static · pytest expands parametrize to 1,495 collected) |
179
- | Lean4 formal proofs | **872 theorems** across 30 files (mathematically verified core logic — IP-protected mhed-codex moat) |
179
+ | Lean4 formal proofs | **872 theorems** across 30 files (mathematically verified core logic — IP-protected formal verification moat) |
180
180
  | Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
181
181
  | Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
182
182
  | Infrastructure cost | **$5/mo** |
@@ -462,7 +462,7 @@ treated as non-code artifacts rather than misplaced source.
462
462
  | Resource URI | What it is | Use case |
463
463
  |---|---|---|
464
464
  | `forge://docs/receipt` | The Receipt schema spec | Agent reads this to know what the Receipt JSON contract is. |
465
- | `forge://docs/formalization` | Citations to `aethel-nexus-proofs` (29 theorems / 0 sorry) and `mhed-toe-corpus-v22` (538 theorems / 0 sorry) | Agent presenting Forge to a regulator: cite the proof corpus. |
465
+ | `forge://docs/formalization` | Citations to `aethel-nexus-proofs` (29 theorems / 0 sorry) and `proof-corpus-v22` (538 theorems / 0 sorry) | Agent presenting Forge to a regulator: cite the proof corpus. |
466
466
  | `forge://lineage/chain` | Episodic L1 trace of every Forge run | Replay / debugging / audit. |
467
467
  | `forge://schema/receipt` | Machine-readable JSON Schema for the Receipt | Agent doing type-checked Receipt parsing. |
468
468
  | `forge://summary/blockers` | Same payload as `agent_summary` MCP tool | One-shot `resources/read` for clients that prefer resources over tools. |
@@ -84,7 +84,7 @@ rejected by consumers. The set is pinned in
84
84
  | `artifacts` | list of `{name, path, sha256}` | pointers to `.atomadic-forge/*.json` evidence files |
85
85
  | `signatures.sigstore` | object \| null | Rekor uuid + log_index; populated by Lane A W2 signer |
86
86
  | `signatures.aaaa_nexus` | object \| null | base64 signature + key_id; from `/v1/verify/forge-receipt` |
87
- | `lean4_attestation` | object | corpus citations (`aethel-nexus-proofs`, `mhed-toe-corpus-v22`) |
87
+ | `lean4_attestation` | object | corpus citations (`aethel-nexus-proofs`, `proof-corpus-v22`) |
88
88
  | `lineage.lineage_path` | string | opaque Vanguard ledger pointer (Lane A W4) |
89
89
  | `lineage.parent_receipt_hash` | string \| null | SHA-256 of the immediately prior Receipt |
90
90
  | `lineage.chain_depth` | int | 1 for first Receipt; n+1 per successor |
@@ -202,8 +202,8 @@ cited:
202
202
  "axiom_count": 0
203
203
  },
204
204
  {
205
- "name": "mhed-toe-corpus-v22",
206
- "repo_url": "https://github.com/AAAA-Nexus/mhed-toe-corpus",
205
+ "name": "proof-corpus-v22",
206
+ "repo_url": "https://example.com/proof-corpus",
207
207
  "ref_sha": "31bd09...",
208
208
  "theorem_count": 538,
209
209
  "sorry_count": 0,
@@ -150,7 +150,7 @@ classification":
150
150
  | Corpus | Theorems | Claim backed |
151
151
  |---|---|---|
152
152
  | `aethel-nexus-proofs` | 29, 0 sorry | Monadic composition law: tiers compose upward only |
153
- | `mhed-toe-corpus-v22` | 538, 0 sorry | Wire-scan completeness and soundness |
153
+ | `proof-corpus-v22` | 538, 0 sorry | Wire-scan completeness and soundness |
154
154
 
155
155
  ---
156
156
 
@@ -50,7 +50,7 @@ is satisfied by fields in the Atomadic Forge Receipt v1.
50
50
  | Corpus | Theorems | Sorry | Axioms |
51
51
  |--------|----------|-------|--------|
52
52
  | `aethel-nexus-proofs` | 29 | 0 | 0 |
53
- | `mhed-toe-corpus-v22` | 538 | 0 | 0 |
53
+ | `proof-corpus-v22` | 538 | 0 | 0 |
54
54
 
55
55
  ### Annex IV §2(b) — Data governance and data management practices
56
56
 
@@ -113,7 +113,7 @@ Lean4 corpus with `sorry_count = 0`. The standard Atomadic corpora are:
113
113
  | Corpus | Repository | Theorems | Sorry | Axioms | Status |
114
114
  |--------|-----------|----------|-------|--------|--------|
115
115
  | `aethel-nexus-proofs` | Internal | 29 | 0 | 0 | Attesting |
116
- | `mhed-toe-corpus-v22` | Internal | 538 | 0 | 0 | Attesting |
116
+ | `proof-corpus-v22` | Internal | 538 | 0 | 0 | Attesting |
117
117
 
118
118
  ---
119
119
 
@@ -73,7 +73,7 @@ Atomadic standard validation corpora:
73
73
  | Corpus | Theorems | Sorry | Validation claim |
74
74
  |--------|----------|-------|-----------------|
75
75
  | `aethel-nexus-proofs` | 29 | 0 | Structural invariants of the Atomadic monadic composition law |
76
- | `mhed-toe-corpus-v22` | 538 | 0 | Mathematical foundations of the tier-effect type system |
76
+ | `proof-corpus-v22` | 538 | 0 | Mathematical foundations of the tier-effect type system |
77
77
 
78
78
  ### PCCP §II.C — Performance Monitoring Plan
79
79
 
@@ -48,7 +48,7 @@ corpora cited in every signed Receipt provide:
48
48
  |---|---|
49
49
  | Theoretical basis documented | ASS-ADE MONADIC_DEVELOPMENT.md (5-tier law) + Lean4 proofs |
50
50
  | Assumptions stated and justified | `aethel-nexus-proofs` ref `abc1234` — 29 theorems, 0 sorry |
51
- | Mathematical properties verified | `mhed-toe-corpus-v22` ref `def5678` — 538 theorems, 0 sorry |
51
+ | Mathematical properties verified | `proof-corpus-v22` ref `def5678` — 538 theorems, 0 sorry |
52
52
 
53
53
  A Receipt with no `lean4_attestation` or `sorry_count > 0` provides
54
54
  partial conceptual soundness evidence only.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "atomadic-forge"
7
- version = "0.52.0"
7
+ version = "0.53.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"
@@ -187,7 +187,7 @@ class ReceiptLean4Corpus(TypedDict, total=False):
187
187
  Cites a machine-checked theorem corpus that backs a claim made by
188
188
  this Receipt. The Golden Path threads two corpora through every
189
189
  Receipt: ``aethel-nexus-proofs`` (29 theorems, 0 sorry, 0 axioms)
190
- and ``mhed-toe-corpus-v22`` (538 theorems, 0 sorry).
190
+ and ``proof-corpus-v22`` (538 theorems, 0 sorry).
191
191
  """
192
192
  name: str # e.g. "aethel-nexus-proofs"
193
193
  repo_url: str
@@ -13,6 +13,7 @@ single bundle. The orchestration that runs the scans lives in a3.
13
13
  """
14
14
  from __future__ import annotations
15
15
 
16
+ import json
16
17
  import re
17
18
  from collections import Counter
18
19
  from pathlib import Path
@@ -136,6 +137,7 @@ class ContextPack(TypedDict, total=False):
136
137
  selected_tests: dict
137
138
  workflow_recipe: dict # compose_tools plan when intent is provided
138
139
  suggested_next_steps: list[dict]
140
+ token_estimate: int # rough token count (chars // 4); repomix synthesis
139
141
 
140
142
 
141
143
  def _read_repo_purpose(project_root: Path) -> str:
@@ -442,7 +444,7 @@ def emit_context_pack(
442
444
  project_root=project_root,
443
445
  )
444
446
 
445
- return ContextPack(
447
+ pack = ContextPack(
446
448
  schema_version=SCHEMA_VERSION_CONTEXT_PACK_V1,
447
449
  project_root=str(project_root),
448
450
  repo_purpose=_read_repo_purpose(project_root),
@@ -478,4 +480,12 @@ def emit_context_pack(
478
480
  release_gate=release_gate,
479
481
  selected_tests=selected_tests,
480
482
  ),
483
+ token_estimate=0,
481
484
  )
485
+ # Patch token_estimate after build — rough approximation: JSON chars / 4 ≈ tokens.
486
+ # No external tokenizer required; accurate enough for context budget decisions.
487
+ try:
488
+ pack["token_estimate"] = len(json.dumps(pack, default=str)) // 4
489
+ except (TypeError, ValueError):
490
+ pass
491
+ return pack
@@ -419,3 +419,113 @@ def build_call_graph(args: dict[str, Any]) -> dict[str, Any]:
419
419
  "callees_count": len(callees),
420
420
  "target_in_graph": canonical_target in edges,
421
421
  }
422
+
423
+
424
+ # ── Whole-package summary (pyan synthesis) ────────────────────────────
425
+
426
+ SCHEMA_VERSION_CALL_GRAPH_SUMMARY_V1 = "atomadic-forge.call_graph_summary/v1"
427
+
428
+
429
+ def _compute_fan_in(edges: dict[str, set[str]]) -> dict[str, int]:
430
+ fan_in: dict[str, int] = defaultdict(int)
431
+ for callees in edges.values():
432
+ for callee in callees:
433
+ fan_in[callee] += 1
434
+ return dict(fan_in)
435
+
436
+
437
+ def _max_chain_depth(
438
+ edges: dict[str, set[str]],
439
+ starts: list[str],
440
+ *,
441
+ cap: int = 15,
442
+ ) -> int:
443
+ """BFS from each start node; return the longest path found (capped)."""
444
+ best = 0
445
+ for start in starts[:100]:
446
+ visited: set[str] = {start}
447
+ queue: deque[tuple[str, int]] = deque([(start, 0)])
448
+ while queue:
449
+ node, d = queue.popleft()
450
+ if d >= cap:
451
+ continue
452
+ for callee in edges.get(node, ()):
453
+ if callee not in visited:
454
+ visited.add(callee)
455
+ if d + 1 > best:
456
+ best = d + 1
457
+ queue.append((callee, d + 1))
458
+ return best
459
+
460
+
461
+ def build_call_graph_summary(args: dict[str, Any]) -> dict[str, Any]:
462
+ """Whole-package call-graph portfolio: orphans, hotspots, max depth.
463
+
464
+ Synthesized from pyan (David Fraser) whole-graph analysis concepts.
465
+ Unlike ``build_call_graph`` (per-symbol callers/callees), this gives
466
+ a portfolio view of the entire package's call structure — useful for
467
+ dead-code audits, refactor prioritization, and complexity estimation.
468
+
469
+ Args (from the dispatcher):
470
+ * ``project_root`` (default: cwd): repo root.
471
+ * ``package`` (default: derived): top-level package name.
472
+ * ``top_n`` (default 10): number of hotspot/orphan rows to return.
473
+ """
474
+ project_root = Path(args.get("project_root") or ".").resolve()
475
+ top_n = min(int(args.get("top_n", 10)), 50)
476
+
477
+ _raw_package = args.get("package") or _detect_package_name(project_root)
478
+ package = _raw_package.replace("-", "_")
479
+
480
+ package_root = project_root / "src" / package
481
+ if not package_root.exists():
482
+ candidate = project_root / package
483
+ package_root = candidate if candidate.exists() else project_root
484
+
485
+ edges = _walk_package_edges(package_root, package=package)
486
+ aliases = _build_reexport_aliases(package_root, package=package)
487
+
488
+ if aliases:
489
+ canonical_edges: dict[str, set[str]] = defaultdict(set)
490
+ for caller, callees_set in edges.items():
491
+ canonical_caller = _canonicalize(caller, aliases)
492
+ for callee in callees_set:
493
+ canonical_edges[canonical_caller].add(
494
+ _canonicalize(callee, aliases)
495
+ )
496
+ edges = dict(canonical_edges)
497
+
498
+ fan_in = _compute_fan_in(edges)
499
+
500
+ # Defined = every function that appears as a caller (has ≥1 outgoing edge).
501
+ defined: set[str] = {f for f in edges if f.startswith(package)}
502
+ called: set[str] = {f for f in fan_in if f.startswith(package)}
503
+
504
+ # Uncalled callers: defined but never called from within the package.
505
+ # These may be entry-points (CLI/MCP handlers) or dead code.
506
+ uncalled = sorted(defined - called)
507
+
508
+ # Hotspots: package functions with the highest internal fan-in.
509
+ hotspots = sorted(
510
+ [{"qualname": q, "fan_in": c} for q, c in fan_in.items()
511
+ if q.startswith(package)],
512
+ key=lambda x: -x["fan_in"],
513
+ )[:top_n]
514
+
515
+ max_depth = _max_chain_depth(edges, uncalled)
516
+
517
+ total_edges = sum(len(v) for v in edges.values())
518
+
519
+ return {
520
+ "schema_version": SCHEMA_VERSION_CALL_GRAPH_SUMMARY_V1,
521
+ "package": package,
522
+ "package_root": str(package_root),
523
+ "total_callers": len(defined),
524
+ "total_edges": total_edges,
525
+ "uncalled_callers_count": len(uncalled),
526
+ "uncalled_callers": uncalled[:top_n],
527
+ "hotspot_count": len(hotspots),
528
+ "hotspots": hotspots,
529
+ "max_call_depth": max_depth,
530
+ "alias_count": len(aliases),
531
+ }
@@ -6,7 +6,7 @@ Worker, shields.io badges) all derive from the same canonical artifact —
6
6
  ``forge_metrics.json`` — produced by this function. No string lives in two
7
7
  places; any drift is a CI-detectable bug.
8
8
 
9
- The function is pure: given the same repo + (optional) mhed-corpus path,
9
+ The function is pure: given the same repo + (optional) proof corpus path,
10
10
  it returns the same dict. Every field carries a ``_basis`` description
11
11
  so consumers can trace a number back to its source.
12
12
 
@@ -37,10 +37,10 @@ _LEAN_THEOREM_RE = re.compile(
37
37
  )
38
38
 
39
39
 
40
- def count_lean_theorems(mhed_codex_root: Path) -> dict[str, Any]:
41
- """Return the certified Lean theorem count for a Codex proof tree.
40
+ def count_lean_theorems(proof_corpus_root: Path) -> dict[str, Any]:
41
+ """Return the certified Lean theorem count for the IP-protected proof corpus.
42
42
 
43
- The mhed-corpus repository is IP-protected — this function only
43
+ The proof corpus repository is IP-protected — this function only
44
44
  surfaces aggregate counts to the public artifact. Source paths and
45
45
  file names are NEVER returned. Callers must not log the input path.
46
46
 
@@ -50,7 +50,7 @@ def count_lean_theorems(mhed_codex_root: Path) -> dict[str, Any]:
50
50
  attestation yet; it can overcount scratch or archived Lean files.
51
51
 
52
52
  Args:
53
- mhed_codex_root: directory containing a ``proofs/`` subtree of
53
+ proof_corpus_root: directory containing a ``proofs/`` subtree of
54
54
  ``.lean`` files. If the directory does not exist or contains
55
55
  no proofs, returns ``{count: 0, files: 0, found: False}``.
56
56
 
@@ -59,11 +59,11 @@ def count_lean_theorems(mhed_codex_root: Path) -> dict[str, Any]:
59
59
  combined), ``theorems``, ``lemmas``, ``files``, ``found``.
60
60
  No paths. Counts are always int; never raises on missing path.
61
61
  """
62
- attested = _count_lean_theorems_from_attestation(Path(mhed_codex_root))
62
+ attested = _count_lean_theorems_from_attestation(Path(proof_corpus_root))
63
63
  if attested is not None:
64
64
  return attested
65
65
 
66
- proofs_dir = Path(mhed_codex_root) / "proofs"
66
+ proofs_dir = Path(proof_corpus_root) / "proofs"
67
67
  if not proofs_dir.is_dir():
68
68
  return {
69
69
  "count": 0, "theorems": 0, "lemmas": 0,
@@ -92,7 +92,7 @@ def count_lean_theorems(mhed_codex_root: Path) -> dict[str, Any]:
92
92
 
93
93
 
94
94
  def _count_lean_theorems_from_attestation(
95
- mhed_codex_root: Path,
95
+ proof_corpus_root: Path,
96
96
  ) -> dict[str, Any] | None:
97
97
  """Read the newest build attestation if one exists.
98
98
 
@@ -101,7 +101,7 @@ def _count_lean_theorems_from_attestation(
101
101
  metrics surface. The aggregate proof-tree hash is public-safe and lets
102
102
  downstream agents verify the exact attested boundary.
103
103
  """
104
- dist_dir = Path(mhed_codex_root) / "dist"
104
+ dist_dir = Path(proof_corpus_root) / "dist"
105
105
  if not dist_dir.is_dir():
106
106
  return None
107
107
  attestations = sorted(dist_dir.glob("BUILD_ATTESTATION_*.json"))
@@ -223,7 +223,7 @@ def count_lines_of_code(repo_root: Path) -> int:
223
223
  def compute_forge_metrics(
224
224
  repo_root: Path,
225
225
  *,
226
- mhed_codex_root: Path | None = None,
226
+ proof_corpus_root: Path | None = None,
227
227
  package_version: str | None = None,
228
228
  tools_count: int | None = None,
229
229
  actions_count: int | None = None,
@@ -241,7 +241,7 @@ def compute_forge_metrics(
241
241
 
242
242
  Args:
243
243
  repo_root: forge repo path (where ``src/`` and ``tests/`` live).
244
- mhed_codex_root: optional path to mhed-corpus. When given,
244
+ proof_corpus_root: optional path to IP-protected proof corpus. When given,
245
245
  ``lean_theorems`` block is populated; when None, that block
246
246
  is zeroed and ``lean_theorems.found=False``.
247
247
  package_version: optional string. If None, the field is omitted.
@@ -286,8 +286,8 @@ def compute_forge_metrics(
286
286
  metrics["tests_passing"] = tests_passing
287
287
  # Lean theorem block — always present, populated only when found.
288
288
  # Public artifact carries counts only — never paths or file names.
289
- if mhed_codex_root is not None:
290
- lean = count_lean_theorems(Path(mhed_codex_root))
289
+ if proof_corpus_root is not None:
290
+ lean = count_lean_theorems(Path(proof_corpus_root))
291
291
  else:
292
292
  lean = {"count": 0, "theorems": 0, "lemmas": 0,
293
293
  "files": 0, "found": False}