atomadic-forge 0.3.2__tar.gz → 0.3.4__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 (271) hide show
  1. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/CHANGELOG.md +123 -0
  2. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/PKG-INFO +37 -6
  3. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/README.md +36 -5
  4. atomadic_forge-0.3.4/docs/MARKET_POSITIONING.md +136 -0
  5. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/README.md +17 -0
  6. atomadic_forge-0.3.4/docs/RELEASE_MESSAGING.md +230 -0
  7. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/pyproject.toml +1 -1
  8. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/__init__.py +1 -1
  9. atomadic_forge-0.3.4/src/atomadic_forge/a0_qk_constants/auth_constants.py +133 -0
  10. atomadic_forge-0.3.4/src/atomadic_forge/a1_at_functions/forge_auth.py +217 -0
  11. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/roi_calculator.py +5 -6
  12. atomadic_forge-0.3.4/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +252 -0
  13. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/mcp_server.py +133 -1
  14. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a4_sy_orchestration/cli.py +14 -0
  15. atomadic_forge-0.3.4/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +164 -0
  16. atomadic_forge-0.3.4/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +159 -0
  17. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/commandsmith.py +1 -0
  18. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/PKG-INFO +37 -6
  19. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/SOURCES.txt +10 -0
  20. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_compliance_checker.py +4 -3
  21. atomadic_forge-0.3.4/tests/test_forge_auth_a1.py +229 -0
  22. atomadic_forge-0.3.4/tests/test_forge_auth_a2.py +377 -0
  23. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_roi_calculator.py +4 -3
  24. atomadic_forge-0.3.4/tests/test_whoami_cmd.py +126 -0
  25. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  26. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  27. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  28. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/actions/forge-action/README.md +0 -0
  29. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/actions/forge-action/action.yml +0 -0
  30. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/dependabot.yml +0 -0
  31. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/pull_request_template.md +0 -0
  32. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/workflows/ci.yml +0 -0
  33. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/workflows/forge-self-certify.yml +0 -0
  34. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/workflows/forge-studio-ci.yml +0 -0
  35. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/workflows/release.yml +0 -0
  36. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/ARCHITECTURE.md +0 -0
  37. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/CONTRIBUTING.md +0 -0
  38. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/LICENSE +0 -0
  39. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/MANIFEST.in +0 -0
  40. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/SECURITY.md +0 -0
  41. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/assets/Atomadic-Forge-01.png +0 -0
  42. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/01-getting-started.md +0 -0
  43. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/02-commands.md +0 -0
  44. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/03-tutorial.md +0 -0
  45. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/04-llm-loops.md +0 -0
  46. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/05-faq.md +0 -0
  47. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/AGENTS_GUIDE.md +0 -0
  48. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/AIR_GAPPED.md +0 -0
  49. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/CI_CD.md +0 -0
  50. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/CODEX_WALKTHROUGH.md +0 -0
  51. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/COMMANDS.md +0 -0
  52. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/FIRST_10_MINUTES.md +0 -0
  53. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/FORMALIZATION.md +0 -0
  54. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/LANDSCAPE.md +0 -0
  55. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/MULTI_REPO.md +0 -0
  56. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/RECEIPT.md +0 -0
  57. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/RELEASE_CHECKLIST.md +0 -0
  58. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/ROADMAP.md +0 -0
  59. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/SHOWCASE.md +0 -0
  60. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/SIDECAR.md +0 -0
  61. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/STUDIO.md +0 -0
  62. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/WHY_NOW.md +0 -0
  63. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/INDEX.md +0 -0
  64. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/chat.md +0 -0
  65. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/commandsmith.md +0 -0
  66. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/config.md +0 -0
  67. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/demo.md +0 -0
  68. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/emergent-then-synergy.md +0 -0
  69. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/emergent.md +0 -0
  70. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/evolve-then-iterate.md +0 -0
  71. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/evolve.md +0 -0
  72. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/feature-then-emergent.md +0 -0
  73. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/iterate.md +0 -0
  74. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/synergy-then-emergent.md +0 -0
  75. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/synergy.md +0 -0
  76. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
  77. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/compliance/CS-1.md +0 -0
  78. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
  79. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
  80. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/compliance/SR_11-7_MAPPING.md +0 -0
  81. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/01-quickstart.md +0 -0
  82. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/02-your-first-package.md +0 -0
  83. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/03-the-five-tier-law.md +0 -0
  84. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/04-plug-in-llms.md +0 -0
  85. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/05-multi-repo-absorb.md +0 -0
  86. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/06-javascript-quickstart.md +0 -0
  87. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/setup.cfg +0 -0
  88. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/__main__.py +0 -0
  89. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
  90. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
  91. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
  92. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
  93. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
  94. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
  95. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
  96. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
  97. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
  98. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
  99. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
  100. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
  101. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
  102. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
  103. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
  104. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
  105. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
  106. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
  107. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
  108. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
  109. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
  110. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
  111. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
  112. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
  113. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
  114. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
  115. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
  116. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
  117. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
  118. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
  119. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
  120. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
  121. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
  122. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
  123. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
  124. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
  125. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
  126. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
  127. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
  128. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
  129. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
  130. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
  131. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
  132. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
  133. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
  134. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
  135. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
  136. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
  137. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
  138. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
  139. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
  140. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
  141. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +0 -0
  142. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
  143. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
  144. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
  145. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
  146. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
  147. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
  148. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
  149. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
  150. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
  151. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
  152. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
  153. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
  154. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
  155. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
  156. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
  157. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
  158. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
  159. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
  160. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
  161. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
  162. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
  163. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
  164. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
  165. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
  166. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
  167. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
  168. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
  169. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
  170. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
  171. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
  172. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
  173. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
  174. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
  175. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
  176. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
  177. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
  178. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
  179. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
  180. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
  181. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
  182. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
  183. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
  184. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
  185. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
  186. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
  187. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
  188. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
  189. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
  190. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
  191. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
  192. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
  193. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
  194. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/__init__.py +0 -0
  195. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/_registry.py +0 -0
  196. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/audit.py +0 -0
  197. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/chat.py +0 -0
  198. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/config_cmd.py +0 -0
  199. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/demo.py +0 -0
  200. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/emergent.py +0 -0
  201. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
  202. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/evolve.py +0 -0
  203. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
  204. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
  205. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/iterate.py +0 -0
  206. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/synergy.py +0 -0
  207. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
  208. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
  209. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
  210. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/requires.txt +0 -0
  211. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/top_level.txt +0 -0
  212. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_aaaa_nexus_client.py +0 -0
  213. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_agent_plan.py +0 -0
  214. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_agent_summary.py +0 -0
  215. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_audit_verb.py +0 -0
  216. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_badge_worker.py +0 -0
  217. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_body_extractor_repairs.py +0 -0
  218. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_card_renderer.py +0 -0
  219. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_certify_operational_axis.py +0 -0
  220. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_chat.py +0 -0
  221. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_classify_tier.py +0 -0
  222. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_cli_smoke.py +0 -0
  223. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_codex_5_complete.py +0 -0
  224. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_codex_6_enforce_polyglot.py +0 -0
  225. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_commandsmith.py +0 -0
  226. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_compiler_feedback.py +0 -0
  227. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_config.py +0 -0
  228. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_copilots_copilot.py +0 -0
  229. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_cs1_renderer.py +0 -0
  230. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_demo.py +0 -0
  231. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_emergent_compose.py +0 -0
  232. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_emergent_signature_extract.py +0 -0
  233. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_error_codes.py +0 -0
  234. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_error_hints.py +0 -0
  235. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_evolve_js.py +0 -0
  236. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_forge_action.py +0 -0
  237. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_forge_enforce.py +0 -0
  238. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_generation_quality.py +0 -0
  239. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_ignore_and_docs.py +0 -0
  240. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_import_smoke.py +0 -0
  241. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_iterate_evolve.py +0 -0
  242. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_js_certify.py +0 -0
  243. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_js_parser.py +0 -0
  244. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_js_recon.py +0 -0
  245. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_js_wire.py +0 -0
  246. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_lineage_chain.py +0 -0
  247. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_local_signer.py +0 -0
  248. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_lsp_protocol.py +0 -0
  249. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_manifest_diff.py +0 -0
  250. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_mcp_protocol.py +0 -0
  251. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_ollama_client.py +0 -0
  252. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_pipeline.py +0 -0
  253. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_plan_apply.py +0 -0
  254. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_pre_audit_smoke.py +0 -0
  255. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_precommit_hooks.py +0 -0
  256. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_progress_reporter.py +0 -0
  257. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_receipt_emitter.py +0 -0
  258. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_receipt_schema.py +0 -0
  259. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_receipt_signer.py +0 -0
  260. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_sbom_emitter.py +0 -0
  261. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_scaffold.py +0 -0
  262. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_sidecar.py +0 -0
  263. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_sidecar_validate.py +0 -0
  264. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_stagnation.py +0 -0
  265. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_stub_detector.py +0 -0
  266. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_synergy.py +0 -0
  267. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_test_runner.py +0 -0
  268. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_tier_init_rebuild.py +0 -0
  269. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_vscode_extension_manifest.py +0 -0
  270. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_wire_certify.py +0 -0
  271. {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_wire_suggest_repairs.py +0 -0
@@ -1,5 +1,128 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.4 — `forge whoami` for agents and humans
4
+
5
+ Adds the agent-empowerment QOL win that 0.3.3 was missing: when the
6
+ MCP gate refuses with `subscription required`, agents (and humans)
7
+ need a cheap way to ask **"who is the gate seeing me as, and from
8
+ which source?"** without burning a real tool call. `forge whoami` is
9
+ that command.
10
+
11
+ ### Added
12
+
13
+ - **`forge whoami`** new top-level CLI verb (and `--json` for scripted
14
+ consumers). Returns:
15
+ ```json
16
+ {
17
+ "ok": true,
18
+ "source": "credentials_file" | "env" | "missing",
19
+ "key_prefix": "fk_live_b3502…",
20
+ "email": "tom@example.com",
21
+ "plan": "pro",
22
+ "verify_ok": true,
23
+ "verify_reason": "",
24
+ "credentials_path": "~/.atomadic-forge/credentials.toml",
25
+ "env_var": "FORGE_API_KEY"
26
+ }
27
+ ```
28
+ Resolution order matches the MCP gate exactly (env → credentials.toml).
29
+ `--no-verify` skips the network roundtrip for offline triage.
30
+ - **6 new unit tests** for whoami covering missing-key, env-key,
31
+ credentials-file-key, env-wins-over-file, --no-verify, and
32
+ verify-rejection.
33
+
34
+ ### Why this matters for agents
35
+
36
+ Before 0.3.4, an agent that hit `MCP error -32001: Forge subscription
37
+ required` had two options: ask the human to restart the MCP, or fail.
38
+ With 0.3.4 the agent can call `forge whoami --json` (via Bash) and
39
+ get a structured answer it can act on:
40
+
41
+ * `source == "missing"` → tell the user to run `forge login`
42
+ * `source == "credentials_file"` + `verify_ok == false` → key is
43
+ revoked or stale; `forge login` again
44
+ * `source == "env"` + `verify_ok == false` → CI env var is wrong
45
+ * everything green → restart the MCP host (the running subprocess
46
+ needs a respawn to see the new env)
47
+
48
+ This closes the loop for the auth experience — the agent can diagnose
49
+ its own failure mode.
50
+
51
+ ### Tests
52
+
53
+ 902 passing, 2 skipped. `forge wire src/atomadic_forge` PASS,
54
+ `forge certify .` holds at **100/100**.
55
+
56
+ ---
57
+
58
+ ## 0.3.3 — MCP gate reads credentials.toml + actionable error message
59
+
60
+ Hot-fix release. Closes the gap where `forge login` writes a key to
61
+ `~/.atomadic-forge/credentials.toml` but `forge mcp serve` rejects every
62
+ tool call with `Forge subscription required` because it only checks
63
+ `FORGE_API_KEY` env. After 0.3.3, `forge login` once is enough — every
64
+ MCP host (Claude Code / Cursor / Aider / Devin / VS Code Copilot) picks
65
+ the key up automatically with no shell-scoped env-var ritual.
66
+
67
+ ### Added
68
+
69
+ - **`read_api_key_from_credentials_file(path)`** — pure a1 helper that
70
+ parses `~/.atomadic-forge/credentials.toml` (the file `forge login`
71
+ writes) and returns the `[forge_auth].api_key` value, only when it
72
+ has the `fk_live_` prefix. Six new unit tests cover missing file,
73
+ wrong prefix, missing section, malformed TOML, string-path argument,
74
+ and the canonical login output.
75
+ - **MCP `_auth_check` falls back to credentials.toml** when
76
+ `FORGE_API_KEY` is not in env. Resolution order is documented in the
77
+ docstring: env first (CI / explicit override), then credentials file
78
+ (one-time `forge login`).
79
+ - **Actionable auth-error message** — when neither env nor credentials
80
+ file yields a key, the JSON-RPC error now reads
81
+ `"Forge subscription key not configured. Run forge login once …"`
82
+ (was: `"FORGE_API_KEY not set or wrong prefix"`).
83
+
84
+ ### Tests
85
+
86
+ 896 passing, 2 skipped (was 841/2 at 0.3.2 — +6 new tests for the
87
+ credentials.toml fallback). `forge wire src/atomadic_forge` PASS,
88
+ `forge certify .` holds at **100/100**.
89
+
90
+ ---
91
+
92
+ ## 0.3.2 — Cyberpunk Forge Studio UI + recovery fixes
93
+
94
+ 841 tests passing, 2 skipped. `forge wire src/atomadic_forge` PASS,
95
+ `forge certify .` = **100/100**.
96
+
97
+ ### Added
98
+
99
+ - **Forge Studio cyberpunk UI reskin** — Full visual overhaul from
100
+ slate/blue inline-styles to the Atomadic cyber design system.
101
+ Tailwind v4 (`@tailwindcss/vite`), `motion` (Framer Motion v12),
102
+ `lucide-react`. New primitives: `NeonButton`, `ActionableCard`,
103
+ `ScoreGauge`, `PipelineStepper`. Collapsible sidebar with `layoutId`
104
+ animated active indicator, mobile bottom bar.
105
+ - **ProjectScanDashboard** — animated stat cards, wire verdict banner,
106
+ motion tier bars, F-code violation list with severity colours.
107
+ - **All panels reskinned** — ArchitectureGraph, ComplexityHeatmap,
108
+ DebtCounter, AgentTopologyMap, ErrorBanner all use cyber palette.
109
+ - **`forge status` verb** — shows MCP connection status.
110
+
111
+ ### Fixed
112
+
113
+ - **Wire scan phantom violations** — `.pytest_tmp_run/` test fixtures
114
+ no longer pollute wire results; `path_parts_contain_ignored_dir()`
115
+ now used throughout.
116
+ - **`forge audit list` / `forge audit log`** — default to CWD
117
+ (`Path(".")`) instead of requiring explicit path argument.
118
+ - **DebtCounter** — `fCodeSeverity(v.f_code)` replaces broken
119
+ `SEVERITY_WEIGHTS[v.severity]` (was always returning weight 1).
120
+ - **WireViolation TypeScript interface** — aligned with actual JSON
121
+ schema (`f_code`, `from_tier`, `to_tier`).
122
+ - **ArchitectureGraph** — staircase node layout instead of single column.
123
+ - **`forge doctor`** — optional dep checks (complexipy, bandit, mypy).
124
+ - **`commandsmith smoke`** — `--include-core` flag tests all 23 core verbs.
125
+
3
126
  ## 0.3.1 — Golden Path lanes B/C/D/F/G ship
4
127
 
5
128
  783 tests passing, 2 skipped. `forge wire src/atomadic_forge` PASS,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atomadic-forge
3
- Version: 0.3.2
3
+ Version: 0.3.4
4
4
  Summary: Atomadic Forge — absorb, enforce, emerge. Polyglot (Python + JavaScript/TypeScript) architecture guardian for AI-generated code.
5
5
  Author: Atomadic
6
6
  License-Expression: BUSL-1.1
@@ -76,6 +76,8 @@ For deeper paths once you have done the 10-minute path:
76
76
  - [docs/CI_CD.md](docs/CI_CD.md) — GitHub Actions, GitLab CI, pre-commit.
77
77
  - [docs/AIR_GAPPED.md](docs/AIR_GAPPED.md) — offline / on-prem install.
78
78
  - [docs/SHOWCASE.md](docs/SHOWCASE.md) — live trajectories of real runs.
79
+ - [docs/MARKET_POSITIONING.md](docs/MARKET_POSITIONING.md) — why Forge matters in the AI coding market.
80
+ - [docs/RELEASE_MESSAGING.md](docs/RELEASE_MESSAGING.md) — launch copy, HN post, outreach, and demo script.
79
81
 
80
82
  ### Polyglot recon (JS/TS in a single pass)
81
83
 
@@ -135,6 +137,11 @@ AI agents produce 30–50% of new code in many teams. The output is **fast and o
135
137
 
136
138
  Forge is **not a style checker**. It's an **architecture rebuilder**. It absorbs your code (including AI-generated code), re-tiers it, enforces the 5-tier monadic law, and emits a clean, verifiable structure with certification scores.
137
139
 
140
+ Release positioning: **AI coding agents create implementation velocity.
141
+ Forge adds architectural gravity.** See
142
+ [docs/MARKET_POSITIONING.md](docs/MARKET_POSITIONING.md) for the
143
+ market frame and source-backed claims.
144
+
138
145
  ## The 5-tier monadic law
139
146
 
140
147
  Every source file (Python `.py`, JavaScript `.js`/`.mjs`/`.cjs`/`.jsx`, or
@@ -177,7 +184,7 @@ Each tier is a layer of **verified building blocks**. Higher tiers never invent
177
184
 
178
185
  ```bash
179
186
  pip install atomadic-forge
180
- forge --version # atomadic-forge 0.3.1
187
+ forge --version # atomadic-forge 0.3.2
181
188
  forge doctor # environment check
182
189
  ```
183
190
 
@@ -190,7 +197,7 @@ generate).
190
197
  ```bash
191
198
  git clone https://github.com/atomadictech/atomadic-forge && cd atomadic-forge
192
199
  pip install -e ".[dev]"
193
- python -m pytest # 783 passing, 2 skipped
200
+ python -m pytest # 841 passing, 2 skipped
194
201
  ```
195
202
 
196
203
  ## AI Agent integration (MCP)
@@ -216,6 +223,30 @@ Forge ships a **Model Context Protocol server** — add it to Cursor, Claude Cod
216
223
  forge mcp serve --help # full tool + resource listing with examples
217
224
  ```
218
225
 
226
+ ### Subscription required for `forge mcp serve`
227
+
228
+ Every `tools/call` against the MCP server is gated behind a paid Forge
229
+ subscription. Get a key at [https://atomadic.tech/forge](https://atomadic.tech/forge),
230
+ then run:
231
+
232
+ ```bash
233
+ forge login # interactive: paste your fk_live_* key
234
+ export FORGE_API_KEY=fk_live_xxxxx # or set the env var directly
235
+ forge mcp serve --project .
236
+ ```
237
+
238
+ Read-only handshake methods (`initialize`, `ping`, `tools/list`,
239
+ `resources/list`) work without a key so MCP clients can complete the
240
+ connect handshake; `tools/call` and `resources/read` require an active
241
+ subscription. The verify endpoint at
242
+ `https://forge-auth.atomadic.tech/v1/forge/auth/verify` is contacted
243
+ on first call and the result is cached for 5 minutes; offline grace
244
+ keeps you running for 24 hours after the last successful verify.
245
+
246
+ Without a key (or with a revoked one), `tools/call` returns the
247
+ JSON-RPC error code `-32001` with `message="Forge subscription
248
+ required"` and an `upgrade_url` pointing back to the dashboard.
249
+
219
250
  ## Forge Studio — desktop GUI
220
251
 
221
252
  A native Tauri 2 + React desktop app that connects to your project via the MCP server:
@@ -410,7 +441,7 @@ Forge ships with named limits. No overpromise.
410
441
  | Product | What it is | Status |
411
442
  |---------|------------|--------|
412
443
  | **AAAA-Nexus** | Trust/safety/payments substrate for autonomous agents | Live at [atomadic.tech](https://atomadic.tech) |
413
- | **Atomadic Forge** | Absorb-and-emerge engine for developers (this repo) | **0.3.1** — on PyPI, 783 tests, MCP server, desktop GUI |
444
+ | **Atomadic Forge** | Absorb-and-emerge engine for developers (this repo) | **0.3.2** — on PyPI, 841 tests, 100/100, MCP server, desktop GUI |
414
445
  | **Atomadic Assistant** | Sovereign AI assistant with cognitive loop on Cloudflare | In development |
415
446
 
416
447
  ## License
@@ -438,7 +469,7 @@ Apache 2.0.
438
469
  **Forge itself is monadic.** Every source file belongs to one tier. The repo is a worked example:
439
470
 
440
471
  ```bash
441
- python -m pytest # 783 passing, 2 skipped
472
+ python -m pytest # 841 passing, 2 skipped
442
473
  forge doctor # Environment check
443
474
  forge wire src/atomadic_forge # Scan for violations (PASS)
444
475
  forge certify . --fail-under 100 # Score and gate the repo (100/100)
@@ -456,7 +487,7 @@ forge commandsmith smoke # Smoke-test all 36+ registered verbs
456
487
 
457
488
  **Production-ready for architecture enforcement. Working, honest, self-eating.**
458
489
 
459
- - ✓ **783 tests** passing (2 skipped)
490
+ - ✓ **841 tests** passing, 2 skipped
460
491
  - ✓ **100/100 certify** — forge scores itself on every CI run
461
492
  - ✓ **0 wire violations** — forge passes its own import-law scan
462
493
  - ✓ **On PyPI** — `pip install atomadic-forge`
@@ -44,6 +44,8 @@ For deeper paths once you have done the 10-minute path:
44
44
  - [docs/CI_CD.md](docs/CI_CD.md) — GitHub Actions, GitLab CI, pre-commit.
45
45
  - [docs/AIR_GAPPED.md](docs/AIR_GAPPED.md) — offline / on-prem install.
46
46
  - [docs/SHOWCASE.md](docs/SHOWCASE.md) — live trajectories of real runs.
47
+ - [docs/MARKET_POSITIONING.md](docs/MARKET_POSITIONING.md) — why Forge matters in the AI coding market.
48
+ - [docs/RELEASE_MESSAGING.md](docs/RELEASE_MESSAGING.md) — launch copy, HN post, outreach, and demo script.
47
49
 
48
50
  ### Polyglot recon (JS/TS in a single pass)
49
51
 
@@ -103,6 +105,11 @@ AI agents produce 30–50% of new code in many teams. The output is **fast and o
103
105
 
104
106
  Forge is **not a style checker**. It's an **architecture rebuilder**. It absorbs your code (including AI-generated code), re-tiers it, enforces the 5-tier monadic law, and emits a clean, verifiable structure with certification scores.
105
107
 
108
+ Release positioning: **AI coding agents create implementation velocity.
109
+ Forge adds architectural gravity.** See
110
+ [docs/MARKET_POSITIONING.md](docs/MARKET_POSITIONING.md) for the
111
+ market frame and source-backed claims.
112
+
106
113
  ## The 5-tier monadic law
107
114
 
108
115
  Every source file (Python `.py`, JavaScript `.js`/`.mjs`/`.cjs`/`.jsx`, or
@@ -145,7 +152,7 @@ Each tier is a layer of **verified building blocks**. Higher tiers never invent
145
152
 
146
153
  ```bash
147
154
  pip install atomadic-forge
148
- forge --version # atomadic-forge 0.3.1
155
+ forge --version # atomadic-forge 0.3.2
149
156
  forge doctor # environment check
150
157
  ```
151
158
 
@@ -158,7 +165,7 @@ generate).
158
165
  ```bash
159
166
  git clone https://github.com/atomadictech/atomadic-forge && cd atomadic-forge
160
167
  pip install -e ".[dev]"
161
- python -m pytest # 783 passing, 2 skipped
168
+ python -m pytest # 841 passing, 2 skipped
162
169
  ```
163
170
 
164
171
  ## AI Agent integration (MCP)
@@ -184,6 +191,30 @@ Forge ships a **Model Context Protocol server** — add it to Cursor, Claude Cod
184
191
  forge mcp serve --help # full tool + resource listing with examples
185
192
  ```
186
193
 
194
+ ### Subscription required for `forge mcp serve`
195
+
196
+ Every `tools/call` against the MCP server is gated behind a paid Forge
197
+ subscription. Get a key at [https://atomadic.tech/forge](https://atomadic.tech/forge),
198
+ then run:
199
+
200
+ ```bash
201
+ forge login # interactive: paste your fk_live_* key
202
+ export FORGE_API_KEY=fk_live_xxxxx # or set the env var directly
203
+ forge mcp serve --project .
204
+ ```
205
+
206
+ Read-only handshake methods (`initialize`, `ping`, `tools/list`,
207
+ `resources/list`) work without a key so MCP clients can complete the
208
+ connect handshake; `tools/call` and `resources/read` require an active
209
+ subscription. The verify endpoint at
210
+ `https://forge-auth.atomadic.tech/v1/forge/auth/verify` is contacted
211
+ on first call and the result is cached for 5 minutes; offline grace
212
+ keeps you running for 24 hours after the last successful verify.
213
+
214
+ Without a key (or with a revoked one), `tools/call` returns the
215
+ JSON-RPC error code `-32001` with `message="Forge subscription
216
+ required"` and an `upgrade_url` pointing back to the dashboard.
217
+
187
218
  ## Forge Studio — desktop GUI
188
219
 
189
220
  A native Tauri 2 + React desktop app that connects to your project via the MCP server:
@@ -378,7 +409,7 @@ Forge ships with named limits. No overpromise.
378
409
  | Product | What it is | Status |
379
410
  |---------|------------|--------|
380
411
  | **AAAA-Nexus** | Trust/safety/payments substrate for autonomous agents | Live at [atomadic.tech](https://atomadic.tech) |
381
- | **Atomadic Forge** | Absorb-and-emerge engine for developers (this repo) | **0.3.1** — on PyPI, 783 tests, MCP server, desktop GUI |
412
+ | **Atomadic Forge** | Absorb-and-emerge engine for developers (this repo) | **0.3.2** — on PyPI, 841 tests, 100/100, MCP server, desktop GUI |
382
413
  | **Atomadic Assistant** | Sovereign AI assistant with cognitive loop on Cloudflare | In development |
383
414
 
384
415
  ## License
@@ -406,7 +437,7 @@ Apache 2.0.
406
437
  **Forge itself is monadic.** Every source file belongs to one tier. The repo is a worked example:
407
438
 
408
439
  ```bash
409
- python -m pytest # 783 passing, 2 skipped
440
+ python -m pytest # 841 passing, 2 skipped
410
441
  forge doctor # Environment check
411
442
  forge wire src/atomadic_forge # Scan for violations (PASS)
412
443
  forge certify . --fail-under 100 # Score and gate the repo (100/100)
@@ -424,7 +455,7 @@ forge commandsmith smoke # Smoke-test all 36+ registered verbs
424
455
 
425
456
  **Production-ready for architecture enforcement. Working, honest, self-eating.**
426
457
 
427
- - ✓ **783 tests** passing (2 skipped)
458
+ - ✓ **841 tests** passing, 2 skipped
428
459
  - ✓ **100/100 certify** — forge scores itself on every CI run
429
460
  - ✓ **0 wire violations** — forge passes its own import-law scan
430
461
  - ✓ **On PyPI** — `pip install atomadic-forge`
@@ -0,0 +1,136 @@
1
+ # Atomadic Forge — Market Positioning
2
+
3
+ Forge is the architectural substrate for AI-generated code.
4
+
5
+ The release stance is simple: Forge does not compete with Copilot,
6
+ Cursor, Claude Code, Devin, or Lovable. Those tools make code faster.
7
+ Forge keeps that code from turning into architectural debt.
8
+
9
+ ## The Market Signal
10
+
11
+ AI coding is now large enough that architecture failure is no longer a
12
+ local nuisance. It is becoming a platform risk.
13
+
14
+ - MarketsandMarkets forecasts the AI code assistants market growing
15
+ from USD 8.14B in 2025 to USD 127.05B by 2032.
16
+ - Fortune Business Insights forecasts the AI code tools market reaching
17
+ USD 70.55B by 2034.
18
+ - Grand View Research estimates the AI code assistants market at USD
19
+ 8.5B in 2025, with continued growth through 2033.
20
+ - Recent empirical work on agentic refactoring finds AI refactors skew
21
+ toward local, consistency-oriented edits, while higher-level design
22
+ changes remain harder.
23
+
24
+ Use market-size claims carefully. They are directional proof of demand,
25
+ not the core technical proof. The core proof is that teams can now
26
+ generate code faster than they can review architecture.
27
+
28
+ ## The Gap
29
+
30
+ Current tools cluster into three groups:
31
+
32
+ | Category | What they do well | What they miss |
33
+ |---|---|---|
34
+ | AI coding agents | Generate and modify code quickly | No deterministic architectural law |
35
+ | Linters / analyzers | Detect local quality and style issues | Do not restructure the repo |
36
+ | Refactoring engines | Apply known transformations safely | Reactive; no opinionated target architecture |
37
+
38
+ Forge fills the missing layer: an architecture compiler that can absorb
39
+ messy or AI-generated code, enforce a 5-tier import law, and certify the
40
+ result.
41
+
42
+ ## Competitive Frame
43
+
44
+ Forge should be described as a complement, not an alternative.
45
+
46
+ - **Copilot/Cursor/Claude Code/Devin**: write code.
47
+ - **Semgrep/Ruff/ESLint/ArchUnit**: catch local violations.
48
+ - **OpenRewrite/Moderne**: modernize known patterns.
49
+ - **Forge**: rebuilds and certifies architectural shape.
50
+
51
+ The strongest one-line frame:
52
+
53
+ > AI coding agents create implementation velocity. Forge adds
54
+ > architectural gravity.
55
+
56
+ ## Unique Value Proposition
57
+
58
+ Forge is differentiated by the combination of:
59
+
60
+ - **Absorb** — classify Python, JavaScript, and TypeScript repos into
61
+ a 5-tier monadic layout.
62
+ - **Enforce** — block upward-import violations across languages.
63
+ - **Emerge** — surface composable capabilities and agent action cards.
64
+ - **Certify** — emit an honest 0-100 architecture score with receipts,
65
+ lineage, policy, SBOM, and CI-friendly gates.
66
+ - **Agent-native operation** — CLI, MCP tools, recipes, preflight,
67
+ score-patch, test selection, and context packs.
68
+
69
+ Individually, pieces of this exist elsewhere. The full loop does not.
70
+
71
+ ## Best Audience
72
+
73
+ Initial release should target builders already feeling the pain:
74
+
75
+ - AI-native product teams using Cursor, Claude Code, Codex, Devin, or
76
+ Aider daily.
77
+ - Founders building quickly with AI agents and worried about code rot.
78
+ - Platform / DevEx engineers who need CI gates for AI-heavy repos.
79
+ - Regulated teams that need receipts, lineage, auditability, and
80
+ explainable architecture constraints.
81
+ - Agent developers who need a "copilot's copilot" for repo context,
82
+ preflight, and deployment safety.
83
+
84
+ ## Messaging Pillars
85
+
86
+ 1. **AI made code cheap. Architecture is now the scarce resource.**
87
+ 2. **Forge is not a linter. It is an architecture substrate.**
88
+ 3. **The 5-tier law turns repo shape into something agents can obey.**
89
+ 4. **Receipts make every architectural decision auditable.**
90
+ 5. **MCP makes Forge usable by any capable coding agent.**
91
+
92
+ ## Claims To Make
93
+
94
+ Use these confidently:
95
+
96
+ - "Polyglot architecture guardian for Python, JavaScript, and
97
+ TypeScript."
98
+ - "Enforces upward-only imports across a 5-tier monadic layout."
99
+ - "Complements AI coding agents by governing the code they generate."
100
+ - "Designed for CI, MCP, and agentic development workflows."
101
+ - "Forge itself self-certifies at 100/100."
102
+
103
+ ## Claims To Avoid
104
+
105
+ Avoid these unless backed by a fresh benchmark in the repo:
106
+
107
+ - "Only tool in the world."
108
+ - "Prevents all technical debt."
109
+ - "Guarantees maintainability."
110
+ - "Beats Copilot/Cursor/Devin."
111
+ - "Production-ready for every enterprise codebase."
112
+
113
+ The honest claim is better: Forge makes architectural drift visible,
114
+ repairable, and enforceable at agent speed.
115
+
116
+ ## Release Position
117
+
118
+ Atomadic Forge v0.3.2 should launch as:
119
+
120
+ > The architecture compiler for AI-generated code.
121
+
122
+ Supporting line:
123
+
124
+ > Use any coding agent you want. Run Forge before the codebase forgets
125
+ > its shape.
126
+
127
+ ## Sources
128
+
129
+ - MarketsandMarkets, "AI Code Assistants Market worth $127.05 billion
130
+ by 2032": https://www.marketsandmarkets.com/PressReleases/ai-code-assistants.asp
131
+ - Fortune Business Insights, "AI Code Tools Market Size, Share, Trends,
132
+ 2034": https://www.fortunebusinessinsights.com/ai-code-tools-market-111725
133
+ - Grand View Research, "AI Code Assistants Market Size, Share &
134
+ Trends": https://www.grandviewresearch.com/industry-analysis/ai-code-assistants-market-report
135
+ - Li et al., "Agentic Refactoring: An Empirical Study of AI Coding
136
+ Agents": https://arxiv.org/abs/2511.04824
@@ -52,6 +52,22 @@ Shippability gates for local development, demos, and release candidates:
52
52
  - Local Ollama low-load and idle-machine profiles
53
53
  - Documentation and release-note review points
54
54
 
55
+ ### [Market Positioning](MARKET_POSITIONING.md)
56
+ Release narrative and gap analysis:
57
+ - AI coding market signal
58
+ - Competitive frame
59
+ - Claims to make and claims to avoid
60
+ - Source-backed positioning for launch copy
61
+
62
+ ### [Release Messaging](RELEASE_MESSAGING.md)
63
+ Copy blocks for launch:
64
+ - One-liners and product descriptions
65
+ - HN post draft
66
+ - X thread
67
+ - LinkedIn launch post
68
+ - Developer / journalist outreach templates
69
+ - Demo script
70
+
55
71
  ## ❓ FAQ & Troubleshooting
56
72
 
57
73
  **[FAQ](05-faq.md)** — Common questions:
@@ -85,6 +101,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md) for:
85
101
  - **GitHub:** https://github.com/atomadictech/atomadic-forge
86
102
  - **License:** [BSL-1.1](../LICENSE) (free for non-production, commercial license for production, converts to Apache 2.0 in 2030)
87
103
  - **Status:** Experimental, working, honest (0.2.2)
104
+ - **Launch positioning:** [Market Positioning](MARKET_POSITIONING.md) and [Release Messaging](RELEASE_MESSAGING.md)
88
105
 
89
106
  ## 📊 Versions
90
107