atomadic-forge 0.52.0__tar.gz → 0.52.1__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 (422) hide show
  1. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/metrics-auto-regen.yml +15 -14
  2. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/metrics-drift.yml +5 -5
  3. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/CHANGELOG.md +31 -9
  4. {atomadic_forge-0.52.0/src/atomadic_forge.egg-info → atomadic_forge-0.52.1}/PKG-INFO +2 -2
  5. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/README.md +1 -1
  6. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/AGENTS_GUIDE.md +1 -1
  7. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/RECEIPT.md +3 -3
  8. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/compliance/CMMC_AI_MAPPING.md +1 -1
  9. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +2 -2
  10. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/compliance/FDA_PCCP_MAPPING.md +1 -1
  11. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/compliance/SR_11-7_MAPPING.md +1 -1
  12. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/pyproject.toml +1 -1
  13. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +1 -1
  14. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/forge_metrics.py +13 -13
  15. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/emergent_swarm.py +18 -5
  16. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/forge_metrics_feature.py +16 -17
  17. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/metrics.py +6 -6
  18. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1/src/atomadic_forge.egg-info}/PKG-INFO +2 -2
  19. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_card_renderer.py +1 -1
  20. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_cli_smoke.py +4 -0
  21. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_compliance_checker.py +1 -1
  22. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_cs1_renderer.py +2 -2
  23. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_mcp_protocol.py +2 -0
  24. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/FUNDING.yml +0 -0
  25. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  26. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  27. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  28. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/actions/forge-action/README.md +0 -0
  29. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/actions/forge-action/action.yml +0 -0
  30. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/dependabot.yml +0 -0
  31. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/pull_request_template.md +0 -0
  32. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/ci.yml +0 -0
  33. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/customer-refactor.yml +0 -0
  34. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/forge-self-certify.yml +0 -0
  35. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/mcp-registry-publish.yml +0 -0
  36. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/publish-on-tag.yml +0 -0
  37. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/release-readiness.yml +0 -0
  38. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/release.yml +0 -0
  39. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/surface-drift.yml +0 -0
  40. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/.github/workflows/uptime.yml +0 -0
  41. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/ARCHITECTURE.md +0 -0
  42. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/CONTRIBUTING.md +0 -0
  43. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/LICENSE +0 -0
  44. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/MANIFEST.in +0 -0
  45. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/SECURITY.md +0 -0
  46. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/assets/Atomadic-Forge-01.png +0 -0
  47. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/01-getting-started.md +0 -0
  48. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/02-commands.md +0 -0
  49. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/03-tutorial.md +0 -0
  50. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/04-llm-loops.md +0 -0
  51. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/05-faq.md +0 -0
  52. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/AIR_GAPPED.md +0 -0
  53. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/CI_CD.md +0 -0
  54. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/CODEX_WALKTHROUGH.md +0 -0
  55. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/COMMANDS.md +0 -0
  56. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/FIRST_10_MINUTES.md +0 -0
  57. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/FORMALIZATION.md +0 -0
  58. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/HIVE_PRIMITIVES.md +0 -0
  59. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/HIVE_STATUS.md +0 -0
  60. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/IDE_INTEGRATION.md +0 -0
  61. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/LANDSCAPE.md +0 -0
  62. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/MARKET_POSITIONING.md +0 -0
  63. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/MIGRATION.md +0 -0
  64. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/MULTI_REPO.md +0 -0
  65. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/PROVIDERS.md +0 -0
  66. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/README.md +0 -0
  67. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/RELAY_PROTOCOL.md +0 -0
  68. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/RELEASE_CHECKLIST.md +0 -0
  69. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/RELEASE_MESSAGING.md +0 -0
  70. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/ROADMAP.md +0 -0
  71. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/SHOWCASE.md +0 -0
  72. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/SIDECAR.md +0 -0
  73. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/STUDIO.md +0 -0
  74. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
  75. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/V0.46.0_JUSTIFICATION_REPORT.md +0 -0
  76. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/V0.47.0_SELF_TEST_REPORT.md +0 -0
  77. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/WHY_NOW.md +0 -0
  78. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
  79. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/WORLD_COLLISION.md +0 -0
  80. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/INDEX.md +0 -0
  81. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/absorb.md +0 -0
  82. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/audit.md +0 -0
  83. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/chat.md +0 -0
  84. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/commandsmith.md +0 -0
  85. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/config.md +0 -0
  86. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/create.md +0 -0
  87. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/demo.md +0 -0
  88. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/emergent-swarm.md +0 -0
  89. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/emergent-then-synergy.md +0 -0
  90. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/emergent.md +0 -0
  91. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/enhancement.md +0 -0
  92. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/evolve-then-iterate.md +0 -0
  93. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/evolve.md +0 -0
  94. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/feature-then-emergent.md +0 -0
  95. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/guard-install.md +0 -0
  96. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/handoff.md +0 -0
  97. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/harvest.md +0 -0
  98. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/hive.md +0 -0
  99. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/iterate.md +0 -0
  100. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/materialize.md +0 -0
  101. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/metrics.md +0 -0
  102. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/recon-swarm.md +0 -0
  103. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/relay.md +0 -0
  104. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/surface.md +0 -0
  105. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/synergy-then-emergent.md +0 -0
  106. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/synergy.md +0 -0
  107. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/welcome.md +0 -0
  108. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/commands/wisdom.md +0 -0
  109. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/compliance/CS-1.md +0 -0
  110. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +0 -0
  111. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/tutorials/01-quickstart.md +0 -0
  112. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/tutorials/02-your-first-package.md +0 -0
  113. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/tutorials/03-the-five-tier-law.md +0 -0
  114. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/tutorials/04-plug-in-llms.md +0 -0
  115. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/tutorials/05-multi-repo-absorb.md +0 -0
  116. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/docs/tutorials/06-javascript-quickstart.md +0 -0
  117. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/setup.cfg +0 -0
  118. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/__init__.py +0 -0
  119. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/__main__.py +0 -0
  120. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
  121. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
  122. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
  123. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
  124. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
  125. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
  126. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +0 -0
  127. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
  128. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
  129. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
  130. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
  131. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
  132. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
  133. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +0 -0
  134. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/materialize_types.py +0 -0
  135. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
  136. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
  137. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
  138. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/response_enrichment.py +0 -0
  139. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
  140. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +0 -0
  141. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
  142. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
  143. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
  144. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
  145. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/welcome_constants.py +0 -0
  146. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
  147. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
  148. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
  149. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
  150. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
  151. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
  152. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
  153. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/call_graph.py +0 -0
  154. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
  155. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
  156. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
  157. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
  158. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
  159. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
  160. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
  161. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
  162. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
  163. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
  164. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
  165. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
  166. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/custom_provider_client.py +0 -0
  167. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
  168. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
  169. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
  170. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
  171. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
  172. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
  173. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +0 -0
  174. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
  175. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
  176. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
  177. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
  178. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
  179. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
  180. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
  181. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/handoff_builder.py +0 -0
  182. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/harvest_absorb.py +0 -0
  183. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
  184. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/hive_io.py +0 -0
  185. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
  186. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
  187. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
  188. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
  189. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/lifetime_savings.py +0 -0
  190. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
  191. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
  192. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
  193. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
  194. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
  195. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
  196. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +0 -0
  197. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
  198. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
  199. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
  200. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/polyglot_classify.py +0 -0
  201. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/polyglot_imports.py +0 -0
  202. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/polyglot_surface.py +0 -0
  203. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
  204. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
  205. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
  206. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
  207. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
  208. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
  209. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
  210. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
  211. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/response_enricher.py +0 -0
  212. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
  213. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
  214. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
  215. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
  216. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/scaffold_polyglot.py +0 -0
  217. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
  218. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
  219. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
  220. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
  221. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
  222. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/smell_scan.py +0 -0
  223. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
  224. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
  225. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
  226. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
  227. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
  228. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
  229. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
  230. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
  231. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
  232. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
  233. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
  234. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/welcome_narrator.py +0 -0
  235. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
  236. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +0 -0
  237. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/wisdom_io.py +0 -0
  238. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +0 -0
  239. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -0
  240. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
  241. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
  242. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
  243. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
  244. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
  245. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
  246. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
  247. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
  248. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
  249. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
  250. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/nexus_client.py +0 -0
  251. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
  252. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
  253. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
  254. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/absorb_feature.py +0 -0
  255. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
  256. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
  257. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
  258. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
  259. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
  260. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/create_feature.py +0 -0
  261. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
  262. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
  263. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
  264. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
  265. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
  266. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
  267. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
  268. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
  269. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
  270. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +0 -0
  271. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
  272. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
  273. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
  274. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
  275. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
  276. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
  277. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
  278. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
  279. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
  280. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/hive_sync.py +0 -0
  281. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
  282. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/materialize_feature.py +0 -0
  283. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/mcp_server.py +0 -0
  284. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -0
  285. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
  286. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
  287. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
  288. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
  289. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
  290. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/verify_umbrella.py +0 -0
  291. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/welcome_feature.py +0 -0
  292. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -0
  293. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
  294. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a4_sy_orchestration/cli.py +0 -0
  295. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +0 -0
  296. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
  297. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
  298. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/__init__.py +0 -0
  299. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/_registry.py +0 -0
  300. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/absorb.py +0 -0
  301. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/audit.py +0 -0
  302. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/chat.py +0 -0
  303. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/commandsmith.py +0 -0
  304. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/config_cmd.py +0 -0
  305. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/create.py +0 -0
  306. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/demo.py +0 -0
  307. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/emergent.py +0 -0
  308. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/emergent_swarm.py +0 -0
  309. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
  310. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/enhancement.py +0 -0
  311. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/evolve.py +0 -0
  312. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
  313. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
  314. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/guard_install.py +0 -0
  315. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/handoff.py +0 -0
  316. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/harvest.py +0 -0
  317. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/hive.py +0 -0
  318. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/iterate.py +0 -0
  319. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/materialize.py +0 -0
  320. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/recon_swarm.py +0 -0
  321. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/relay.py +0 -0
  322. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/surface.py +0 -0
  323. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/synergy.py +0 -0
  324. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
  325. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/welcome.py +0 -0
  326. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge/commands/wisdom.py +0 -0
  327. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge.egg-info/SOURCES.txt +0 -0
  328. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
  329. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
  330. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge.egg-info/requires.txt +0 -0
  331. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/src/atomadic_forge.egg-info/top_level.txt +0 -0
  332. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_aaaa_nexus_client.py +0 -0
  333. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_agent_hire_protocol.py +0 -0
  334. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_agent_plan.py +0 -0
  335. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_agent_plan_pkg_label.py +0 -0
  336. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_agent_summary.py +0 -0
  337. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_audit_verb.py +0 -0
  338. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_body_extractor_repairs.py +0 -0
  339. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_certify_operational_axis.py +0 -0
  340. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_chat.py +0 -0
  341. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_classify_tier.py +0 -0
  342. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_classify_tier_ast_signals.py +0 -0
  343. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_cli_swarm_aliases.py +0 -0
  344. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_codex_5_complete.py +0 -0
  345. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_codex_6_enforce_polyglot.py +0 -0
  346. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_commandsmith.py +0 -0
  347. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_compiler_feedback.py +0 -0
  348. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_config.py +0 -0
  349. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_copilots_copilot.py +0 -0
  350. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_cost_circuit_breaker.py +0 -0
  351. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_create_feature.py +0 -0
  352. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_custom_provider.py +0 -0
  353. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_dedup_engine.py +0 -0
  354. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_demo.py +0 -0
  355. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_emergent_compose.py +0 -0
  356. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_emergent_signature_extract.py +0 -0
  357. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_emergent_synthesize_imports.py +0 -0
  358. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_enhancement_proposal.py +0 -0
  359. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_error_codes.py +0 -0
  360. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_error_hints.py +0 -0
  361. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_evolve_js.py +0 -0
  362. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_exported_api_check.py +0 -0
  363. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_forge_action.py +0 -0
  364. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_forge_auth_a1.py +0 -0
  365. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_forge_auth_a2.py +0 -0
  366. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_forge_enforce.py +0 -0
  367. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_generation_quality.py +0 -0
  368. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_handoff.py +0 -0
  369. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_hierarchical_memory.py +0 -0
  370. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_hive_sync.py +0 -0
  371. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_ignore_and_docs.py +0 -0
  372. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_import_smoke.py +0 -0
  373. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_iterate_evolve.py +0 -0
  374. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_js_certify.py +0 -0
  375. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_js_parser.py +0 -0
  376. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_js_recon.py +0 -0
  377. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_js_wire.py +0 -0
  378. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_lineage_chain.py +0 -0
  379. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_ling_provider.py +0 -0
  380. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_local_signer.py +0 -0
  381. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_lsp_protocol.py +0 -0
  382. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_manifest_diff.py +0 -0
  383. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_materialize_feature.py +0 -0
  384. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_mcp_lazy_bootstrap.py +0 -0
  385. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_nexus_bridge.py +0 -0
  386. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_ollama_client.py +0 -0
  387. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_pipeline.py +0 -0
  388. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_plan_apply.py +0 -0
  389. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_polyglot_cli_mcp.py +0 -0
  390. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_polyglot_full_pipeline.py +0 -0
  391. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_polyglot_hardening.py +0 -0
  392. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_polyglot_swift_kotlin_go.py +0 -0
  393. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_polyglot_symbol_parity.py +0 -0
  394. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_pre_audit_smoke.py +0 -0
  395. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_precommit_hooks.py +0 -0
  396. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_progress_reporter.py +0 -0
  397. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_receipt_emitter.py +0 -0
  398. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_receipt_schema.py +0 -0
  399. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_receipt_signer.py +0 -0
  400. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_response_enricher.py +0 -0
  401. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_roi_calculator.py +0 -0
  402. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_sbom_cmd_text_summary.py +0 -0
  403. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_sbom_emitter.py +0 -0
  404. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_scaffold.py +0 -0
  405. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_sidecar.py +0 -0
  406. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_sidecar_validate.py +0 -0
  407. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_smell_score_formula.py +0 -0
  408. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_stagnation.py +0 -0
  409. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_stub_detector.py +0 -0
  410. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_surface_export.py +0 -0
  411. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_synergy.py +0 -0
  412. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_test_runner.py +0 -0
  413. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_tier_init_rebuild.py +0 -0
  414. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_trust_gate_response.py +0 -0
  415. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_verify_suggested_recipe.py +0 -0
  416. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_welcome.py +0 -0
  417. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_welcome_enhancements.py +0 -0
  418. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_whoami_cmd.py +0 -0
  419. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_wire_certify.py +0 -0
  420. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_wire_suggest_repairs.py +0 -0
  421. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/tests/test_wire_type_checking.py +0 -0
  422. {atomadic_forge-0.52.0 → atomadic_forge-0.52.1}/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,28 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v0.52.1 — 2026-05-07 — IP scrub: no private identifiers in public repo
6
+
7
+ ### fix(security): remove all private identifiers from public surfaces
8
+
9
+ All internal project names, repo identifiers, and deploy-key secret
10
+ names replaced with neutral public-safe labels throughout:
11
+
12
+ - CI workflow secrets and env vars renamed to neutral `PROOF_CORPUS_*` prefix
13
+ - Hardcoded SSH clone URL moved to `PROOF_CORPUS_REPO_URL` org secret
14
+ - Python API param renamed to `proof_corpus_root`; internal helper to `_find_proof_corpus`
15
+ - CLI flag renamed to `forge metrics --proof-corpus`
16
+ - All docs (CHANGELOG, README, .gitignore) use neutral labels
17
+
18
+ Zero functional changes. certify: 100/100. wire: 0 violations.
19
+
20
+ ### fix(test): git-ceiling tests clear inherited worktree env vars
21
+
22
+ `test_worktree_status_non_git_runs` and
23
+ `test_tools_call_doctor_with_include_worktree` now explicitly unset
24
+ `GIT_DIR`/`GIT_WORK_TREE`/`GIT_COMMON_DIR` so they pass when running
25
+ from inside a git worktree on Windows.
26
+
5
27
  ### feat(emergent-swarm): hub-node penalty in `emergent_swarm` scoring
6
28
 
7
29
  Symbols that appear in more than 3 chains are now penalised in
@@ -164,7 +186,7 @@ This release scrubs all of them while keeping the credibility markers:
164
186
 
165
187
  **IP-protected (stripped from public):**
166
188
  - Specific theorem names (no longer cited anywhere public)
167
- - Codex framework names ("MHED-TOE" "system")
189
+ - Internal framework names (removed from all public surfaces)
168
190
  - Math derivations (no `⌊Δ_RG/η⌋`, no Leech / Niemeier / Coxeter–Todd /
169
191
  Golay / Monster group / E₈ geometry references)
170
192
  - Greek-letter math (`τ_TRUST` → `TAU_TRUST`, `τ_trust` → `trust threshold`
@@ -233,8 +255,8 @@ or `pyproject.toml` triggers a regeneration. If the artifact drifted, a
233
255
  follow-up `chore(metrics): auto-regenerate [skip ci]` commit is pushed
234
256
  back to main. Stale numbers self-heal — no human intervention.
235
257
 
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
258
+ When the `PROOF_CORPUS_DEPLOY_KEY` org secret is configured, the
259
+ auto-regen also clones the IP-protected proof corpus over deploy-key
238
260
  SSH and refreshes the Lean theorem count. Without the secret, the prior
239
261
  lean count is preserved (never zeroed by a routine push).
240
262
 
@@ -251,7 +273,7 @@ targeted-subset passes). The artifact now carries all three explicitly:
251
273
 
252
274
  Every public number Forge claims about itself — MCP tool count, action
253
275
  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
276
+ of formally-verified Lean4 theorems in the IP-protected proof corpus
255
277
  moat — now lives in one canonical artifact: `forge_metrics.json` at the
256
278
  repo root, regenerated on every push by `forge metrics --apply`.
257
279
 
@@ -265,7 +287,7 @@ artifact drift out of sync with the live forge surface.
265
287
  - 71 CLI verbs
266
288
  - 211 source files · ~40,110 LOC
267
289
  - 96 test files
268
- - **886 Lean4 theorems across 38 files** (mhed-codex moat)
290
+ - **886 Lean4 theorems across 38 files** (formal-proof moat)
269
291
  - monadic tiers = 5
270
292
 
271
293
  ### feat(cli/mcp): `forge metrics` verb — print or write the artifact
@@ -279,10 +301,10 @@ forge metrics --self-cert # also embed certify score (slower)
279
301
 
280
302
  The verb composes a pure tier-a1 aggregator (`forge_metrics.py`) with
281
303
  the live MCP TOOLS dict and CLI registry. Source paths from the
282
- IP-protected mhed-codex repo are NEVER written into the public
304
+ IP-protected proof corpus are NEVER written into the public
283
305
  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.
306
+ `FORGE_PROOF_CORPUS` env var; gitignore protects the proof corpus
307
+ directory from ever being checked in.
286
308
 
287
309
  ### chore: corrected stale README numbers
288
310
 
@@ -3069,7 +3091,7 @@ shipped on master.
3069
3091
  roadmap explicit (v1.0 → v1.1 W8 polyglot_breakdown → v1.2 W12
3070
3092
  slsa_attestation → v2.0 W24 bao_rompf_witnesses). Both Lean4 corpora
3071
3093
  cited (`aethel-nexus-proofs` — 29 theorems, 0 sorry, 0 axioms — and
3072
- `mhed-toe-codex-v22` — 538 theorems, 0 sorry). All signing / lineage
3094
+ `proof-corpus-v22` — 538 theorems, 0 sorry). All signing / lineage
3073
3095
  / attestation fields default to `None` so unsigned dev Receipts
3074
3096
  remain structurally valid. Tier-pure a0.
3075
3097
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atomadic-forge
3
- Version: 0.52.0
3
+ Version: 0.52.1
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.52.1"
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
@@ -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}
@@ -229,11 +229,10 @@ def emergent_swarm(
229
229
  })
230
230
 
231
231
  # Hub-node penalty: a symbol present in many chains biases top-N toward
232
- # a single connector (e.g. ContentCrew.planner). Penalise by
233
- # PENALTY_PER_DOUBLING for each doubling of cross-chain frequency above
234
- # HUB_THRESHOLD so genuinely novel cross-repo chains can surface.
232
+ # a single connector. Penalise by PENALTY_PER_DOUBLING for each doubling
233
+ # of cross-chain frequency above HUB_THRESHOLD.
235
234
  _HUB_THRESHOLD = 3
236
- _PENALTY_PER_DOUBLING = 10.0
235
+ _PENALTY_PER_DOUBLING = 15.0
237
236
  _sym_freq: Counter[str] = Counter()
238
237
  for _c in annotated:
239
238
  for _sym in set(_c.get("chain", {}).get("chain", [])):
@@ -255,7 +254,21 @@ def emergent_swarm(
255
254
  annotated.sort(
256
255
  key=lambda c: (-c["score_boosted"], -c["crosses_repos"]),
257
256
  )
258
- annotated = annotated[:top_n]
257
+
258
+ # Chain-prefix deduplication: when multiple candidates share the same
259
+ # first (N-1) symbols, keep only the highest-scoring one per prefix.
260
+ # This prevents a single hub-connector generating top-N variations that
261
+ # differ only in their final hop (e.g. 25x the same auth→github→* chain).
262
+ _PREFIX_DEPTH = 2
263
+ _seen_prefixes: set[tuple[str, ...]] = set()
264
+ _deduped: list[dict] = []
265
+ for _c in annotated:
266
+ _syms = _c.get("chain", {}).get("chain", [])
267
+ _prefix = tuple(_syms[:_PREFIX_DEPTH]) if len(_syms) >= _PREFIX_DEPTH else tuple(_syms)
268
+ if _prefix not in _seen_prefixes:
269
+ _seen_prefixes.add(_prefix)
270
+ _deduped.append(_c)
271
+ annotated = _deduped[:top_n]
259
272
 
260
273
  # ── 4. Domain inventory across the union ─────────────────────────
261
274
  domain_inv: Counter[str] = Counter(
@@ -20,16 +20,16 @@ from ..a1_at_functions.forge_metrics import (
20
20
  write_forge_metrics,
21
21
  )
22
22
 
23
- # IP-protected mhed-corpus location is read from the FORGE_MHED_CODEX env
23
+ # IP-protected proof corpus location is read from the FORGE_PROOF_CORPUS env
24
24
  # var. Falls through gracefully when not set or not present — the
25
25
  # metric simply reports ``lean_theorems.found = False``. We never hard-
26
26
  # code public paths to the IP repo, and the public artifact never
27
27
  # carries the path it was sourced from.
28
- _FORGE_MHED_ENV = "FORGE_MHED_CODEX"
28
+ _FORGE_CORPUS_ENV = "FORGE_PROOF_CORPUS"
29
29
 
30
30
 
31
- def _find_mhed_codex(start: Path) -> Path | None:
32
- """Resolve the IP-protected mhed-corpus repo via FORGE_MHED_CODEX env
31
+ def _find_proof_corpus(start: Path) -> Path | None:
32
+ """Resolve the IP-protected proof corpus repo via FORGE_PROOF_CORPUS env
33
33
  var, falling back to a sibling-directory probe.
34
34
 
35
35
  Returns the resolved path if a ``proofs/`` subtree is present;
@@ -37,14 +37,13 @@ def _find_mhed_codex(start: Path) -> Path | None:
37
37
  the public ``forge_metrics.json`` artifact.
38
38
  """
39
39
  import os
40
- env_path = os.environ.get(_FORGE_MHED_ENV)
40
+ env_path = os.environ.get(_FORGE_CORPUS_ENV)
41
41
  candidates: list[Path] = []
42
42
  if env_path:
43
43
  candidates.append(Path(env_path))
44
- # Sibling-directory probe — only checks for a directory NAMED
45
- # ``mhed-corpus`` adjacent to the forge repo. No public hardcoded
46
- # absolute paths.
47
- candidates.extend([start / "../mhed-corpus", start / "../../mhed-corpus"])
44
+ # Sibling-directory probe — checks for a proof-corpus directory
45
+ # adjacent to the forge repo. No public hardcoded absolute paths.
46
+ candidates.extend([start / "../proof-corpus", start / "../../proof-corpus"])
48
47
  for c in candidates:
49
48
  try:
50
49
  r = c.resolve()
@@ -139,7 +138,7 @@ def emit_forge_metrics(
139
138
  repo_root: Path,
140
139
  *,
141
140
  apply: bool = False,
142
- mhed_codex_root: Path | None = None,
141
+ proof_corpus_root: Path | None = None,
143
142
  skip_self_cert: bool = True,
144
143
  cli_verbs_count: int | None = None,
145
144
  tests_passing: int | None = None,
@@ -152,24 +151,24 @@ def emit_forge_metrics(
152
151
  apply: when True, overwrite ``<repo_root>/forge_metrics.json``
153
152
  with the freshly computed artifact. When False, the artifact
154
153
  is computed and returned but not written.
155
- mhed_codex_root: optional override; defaults to autodetected
156
- location among _DEFAULT_MHED_PATHS.
154
+ proof_corpus_root: optional override; defaults to autodetected
155
+ location via sibling-directory probe.
157
156
  skip_self_cert: when True (default) the certify call is skipped
158
157
  for speed. Set False to embed the latest certify score in
159
158
  the artifact (slower; runs the full pipeline).
160
159
 
161
160
  Returns:
162
161
  Dict with ``metrics`` (the artifact), ``written_to`` (None or
163
- absolute path), and ``mhed_codex_root_used``.
162
+ absolute path), and ``proof_corpus_root_used``.
164
163
  """
165
164
  repo_root = Path(repo_root).resolve()
166
- if mhed_codex_root is None:
167
- mhed_codex_root = _find_mhed_codex(repo_root)
165
+ if proof_corpus_root is None:
166
+ proof_corpus_root = _find_proof_corpus(repo_root)
168
167
  tools_count, actions_count = _live_tools_count()
169
168
  cert = {} if skip_self_cert else _self_certify(repo_root)
170
169
  metrics = compute_forge_metrics(
171
170
  repo_root,
172
- mhed_codex_root=mhed_codex_root,
171
+ proof_corpus_root=proof_corpus_root,
173
172
  package_version=_safe_pkg_version(repo_root),
174
173
  tools_count=tools_count,
175
174
  actions_count=actions_count,
@@ -185,7 +184,7 @@ def emit_forge_metrics(
185
184
  return {
186
185
  "metrics": metrics,
187
186
  "written_to": written,
188
- "mhed_codex_root_used": str(mhed_codex_root) if mhed_codex_root else None,
187
+ "proof_corpus_root_used": str(proof_corpus_root) if proof_corpus_root else None,
189
188
  }
190
189
 
191
190
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Single source of truth for every public number Forge claims about itself —
4
4
  mcp tool count, action count, CLI verb count, source/test files, lines of
5
- code, Lean theorem count from mhed-corpus. Public surfaces (README, CHANGELOG,
5
+ code, Lean theorem count from the IP-protected proof corpus. Public surfaces (README, CHANGELOG,
6
6
  welcome handshake, the Cloudflare Worker, shields.io badges) all read from
7
7
  this artifact.
8
8
 
@@ -11,7 +11,7 @@ Usage::
11
11
  forge metrics # print live metrics, do not write
12
12
  forge metrics --apply # rewrite forge_metrics.json at repo root
13
13
  forge metrics --json # JSON to stdout (no file write)
14
- forge metrics --mhed <path> # override mhed-corpus auto-detect
14
+ forge metrics --proof-corpus <path> # override proof corpus auto-detect
15
15
  forge metrics --self-cert # also embed certify score (slower)
16
16
  """
17
17
 
@@ -61,8 +61,8 @@ def run(
61
61
  help="Emit the artifact to stdout as JSON (no human-readable summary).",
62
62
  )] = False,
63
63
  mhed: Annotated[Path | None, typer.Option(
64
- "--mhed",
65
- help="Override mhed-corpus location (default: autodetect).",
64
+ "--proof-corpus",
65
+ help="Override proof corpus location (default: autodetect).",
66
66
  exists=False, file_okay=False, dir_okay=True, resolve_path=True,
67
67
  )] = None,
68
68
  self_cert: Annotated[bool, typer.Option(
@@ -84,7 +84,7 @@ def run(
84
84
  res = emit_forge_metrics(
85
85
  project,
86
86
  apply=apply,
87
- mhed_codex_root=mhed,
87
+ proof_corpus_root=mhed,
88
88
  skip_self_cert=not self_cert,
89
89
  cli_verbs_count=_live_cli_verb_count(),
90
90
  tests_passing=tests_passing,
@@ -119,7 +119,7 @@ def run(
119
119
  f"files={lean['files']})")
120
120
  else:
121
121
  typer.echo(" lean_theorems : not found "
122
- "(set FORGE_MHED_CODEX or pass --mhed)")
122
+ "(set FORGE_PROOF_CORPUS or pass --proof-corpus)")
123
123
  if res["written_to"]:
124
124
  typer.echo(f"\nwritten -> {res['written_to']}")
125
125
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atomadic-forge
3
- Version: 0.52.0
3
+ Version: 0.52.1
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** |
@@ -159,7 +159,7 @@ def test_card_attestation_summary():
159
159
  att = {"corpora": [
160
160
  {"name": "aethel-nexus-proofs", "repo_url": "u", "ref_sha": "s",
161
161
  "theorem_count": 29, "sorry_count": 0, "axiom_count": 0},
162
- {"name": "mhed-toe-corpus-v22", "repo_url": "u", "ref_sha": "s",
162
+ {"name": "proof-corpus-v22", "repo_url": "u", "ref_sha": "s",
163
163
  "theorem_count": 538, "sorry_count": 0, "axiom_count": 0},
164
164
  ], "total_theorems": 567, "summary": "567 / 0 sorry"}
165
165
  out = render_receipt_card(_receipt(lean4_attestation=att))
@@ -48,6 +48,10 @@ def test_worktree_status_non_git_runs(tmp_path, monkeypatch):
48
48
  # this env var, `git rev-parse --show-toplevel` finds the surrounding
49
49
  # atomadic-forge clone and reports is_git_repo=True.
50
50
  monkeypatch.setenv("GIT_CEILING_DIRECTORIES", str(tmp_path.parent))
51
+ # Inside a git worktree, GIT_DIR/GIT_WORK_TREE are inherited by subprocesses
52
+ # and override the ceiling, so also clear them.
53
+ for _var in ("GIT_DIR", "GIT_WORK_TREE", "GIT_COMMON_DIR"):
54
+ monkeypatch.delenv(_var, raising=False)
51
55
  result = runner.invoke(app, ["worktree", "status", str(tmp_path), "--json"])
52
56
  assert result.exit_code == 0
53
57
  data = json.loads(result.stdout)
@@ -17,7 +17,7 @@ from atomadic_forge.a1_at_functions.compliance_checker import (
17
17
  _LEAN4 = {
18
18
  "corpora": [
19
19
  {"name": "aethel-nexus-proofs", "sorry_count": 0, "theorem_count": 29},
20
- {"name": "mhed-toe-corpus-v22", "sorry_count": 0, "theorem_count": 538},
20
+ {"name": "proof-corpus-v22", "sorry_count": 0, "theorem_count": 538},
21
21
  ],
22
22
  "total_theorems": 567,
23
23
  }