atomadic-forge 0.3.2__tar.gz → 0.3.3__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.
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/CHANGELOG.md +68 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/PKG-INFO +37 -6
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/README.md +36 -5
- atomadic_forge-0.3.3/docs/MARKET_POSITIONING.md +136 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/README.md +17 -0
- atomadic_forge-0.3.3/docs/RELEASE_MESSAGING.md +230 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/pyproject.toml +1 -1
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/__init__.py +1 -1
- atomadic_forge-0.3.3/src/atomadic_forge/a0_qk_constants/auth_constants.py +133 -0
- atomadic_forge-0.3.3/src/atomadic_forge/a1_at_functions/forge_auth.py +217 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/roi_calculator.py +5 -6
- atomadic_forge-0.3.3/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +252 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/mcp_server.py +133 -1
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a4_sy_orchestration/cli.py +7 -0
- atomadic_forge-0.3.3/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +164 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/commandsmith.py +1 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge.egg-info/PKG-INFO +37 -6
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge.egg-info/SOURCES.txt +8 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_compliance_checker.py +4 -3
- atomadic_forge-0.3.3/tests/test_forge_auth_a1.py +229 -0
- atomadic_forge-0.3.3/tests/test_forge_auth_a2.py +377 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_roi_calculator.py +4 -3
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/actions/forge-action/README.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/actions/forge-action/action.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/dependabot.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/pull_request_template.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/workflows/ci.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/workflows/forge-self-certify.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/workflows/forge-studio-ci.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/.github/workflows/release.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/ARCHITECTURE.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/CONTRIBUTING.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/LICENSE +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/MANIFEST.in +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/SECURITY.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/assets/Atomadic-Forge-01.png +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/01-getting-started.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/02-commands.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/03-tutorial.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/04-llm-loops.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/05-faq.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/AGENTS_GUIDE.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/AIR_GAPPED.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/CI_CD.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/CODEX_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/COMMANDS.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/FIRST_10_MINUTES.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/FORMALIZATION.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/LANDSCAPE.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/MULTI_REPO.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/RECEIPT.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/RELEASE_CHECKLIST.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/ROADMAP.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/SHOWCASE.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/SIDECAR.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/STUDIO.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/WHY_NOW.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/INDEX.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/chat.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/commandsmith.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/config.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/demo.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/emergent-then-synergy.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/emergent.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/evolve-then-iterate.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/evolve.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/feature-then-emergent.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/iterate.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/synergy-then-emergent.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/commands/synergy.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/compliance/CS-1.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/compliance/SR_11-7_MAPPING.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/tutorials/01-quickstart.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/tutorials/02-your-first-package.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/tutorials/03-the-five-tier-law.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/tutorials/04-plug-in-llms.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/tutorials/05-multi-repo-absorb.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/docs/tutorials/06-javascript-quickstart.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/setup.cfg +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/__main__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/_registry.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/audit.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/chat.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/config_cmd.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/demo.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/emergent.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/evolve.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/iterate.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/synergy.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge.egg-info/requires.txt +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/src/atomadic_forge.egg-info/top_level.txt +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_aaaa_nexus_client.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_agent_plan.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_agent_summary.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_audit_verb.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_badge_worker.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_body_extractor_repairs.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_card_renderer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_certify_operational_axis.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_chat.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_classify_tier.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_cli_smoke.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_codex_5_complete.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_codex_6_enforce_polyglot.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_commandsmith.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_compiler_feedback.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_config.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_copilots_copilot.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_cs1_renderer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_demo.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_emergent_compose.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_emergent_signature_extract.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_error_codes.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_error_hints.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_evolve_js.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_forge_action.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_forge_enforce.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_generation_quality.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_ignore_and_docs.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_import_smoke.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_iterate_evolve.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_js_certify.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_js_parser.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_js_recon.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_js_wire.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_lineage_chain.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_local_signer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_lsp_protocol.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_manifest_diff.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_mcp_protocol.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_ollama_client.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_pipeline.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_plan_apply.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_pre_audit_smoke.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_precommit_hooks.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_progress_reporter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_receipt_emitter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_receipt_schema.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_receipt_signer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_sbom_emitter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_scaffold.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_sidecar.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_sidecar_validate.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_stagnation.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_stub_detector.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_synergy.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_test_runner.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_tier_init_rebuild.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_vscode_extension_manifest.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_wire_certify.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.3}/tests/test_wire_suggest_repairs.py +0 -0
|
@@ -1,5 +1,73 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.3 — MCP gate reads credentials.toml + actionable error message
|
|
4
|
+
|
|
5
|
+
Hot-fix release. Closes the gap where `forge login` writes a key to
|
|
6
|
+
`~/.atomadic-forge/credentials.toml` but `forge mcp serve` rejects every
|
|
7
|
+
tool call with `Forge subscription required` because it only checks
|
|
8
|
+
`FORGE_API_KEY` env. After 0.3.3, `forge login` once is enough — every
|
|
9
|
+
MCP host (Claude Code / Cursor / Aider / Devin / VS Code Copilot) picks
|
|
10
|
+
the key up automatically with no shell-scoped env-var ritual.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`read_api_key_from_credentials_file(path)`** — pure a1 helper that
|
|
15
|
+
parses `~/.atomadic-forge/credentials.toml` (the file `forge login`
|
|
16
|
+
writes) and returns the `[forge_auth].api_key` value, only when it
|
|
17
|
+
has the `fk_live_` prefix. Six new unit tests cover missing file,
|
|
18
|
+
wrong prefix, missing section, malformed TOML, string-path argument,
|
|
19
|
+
and the canonical login output.
|
|
20
|
+
- **MCP `_auth_check` falls back to credentials.toml** when
|
|
21
|
+
`FORGE_API_KEY` is not in env. Resolution order is documented in the
|
|
22
|
+
docstring: env first (CI / explicit override), then credentials file
|
|
23
|
+
(one-time `forge login`).
|
|
24
|
+
- **Actionable auth-error message** — when neither env nor credentials
|
|
25
|
+
file yields a key, the JSON-RPC error now reads
|
|
26
|
+
`"Forge subscription key not configured. Run forge login once …"`
|
|
27
|
+
(was: `"FORGE_API_KEY not set or wrong prefix"`).
|
|
28
|
+
|
|
29
|
+
### Tests
|
|
30
|
+
|
|
31
|
+
896 passing, 2 skipped (was 841/2 at 0.3.2 — +6 new tests for the
|
|
32
|
+
credentials.toml fallback). `forge wire src/atomadic_forge` PASS,
|
|
33
|
+
`forge certify .` holds at **100/100**.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 0.3.2 — Cyberpunk Forge Studio UI + recovery fixes
|
|
38
|
+
|
|
39
|
+
841 tests passing, 2 skipped. `forge wire src/atomadic_forge` PASS,
|
|
40
|
+
`forge certify .` = **100/100**.
|
|
41
|
+
|
|
42
|
+
### Added
|
|
43
|
+
|
|
44
|
+
- **Forge Studio cyberpunk UI reskin** — Full visual overhaul from
|
|
45
|
+
slate/blue inline-styles to the Atomadic cyber design system.
|
|
46
|
+
Tailwind v4 (`@tailwindcss/vite`), `motion` (Framer Motion v12),
|
|
47
|
+
`lucide-react`. New primitives: `NeonButton`, `ActionableCard`,
|
|
48
|
+
`ScoreGauge`, `PipelineStepper`. Collapsible sidebar with `layoutId`
|
|
49
|
+
animated active indicator, mobile bottom bar.
|
|
50
|
+
- **ProjectScanDashboard** — animated stat cards, wire verdict banner,
|
|
51
|
+
motion tier bars, F-code violation list with severity colours.
|
|
52
|
+
- **All panels reskinned** — ArchitectureGraph, ComplexityHeatmap,
|
|
53
|
+
DebtCounter, AgentTopologyMap, ErrorBanner all use cyber palette.
|
|
54
|
+
- **`forge status` verb** — shows MCP connection status.
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- **Wire scan phantom violations** — `.pytest_tmp_run/` test fixtures
|
|
59
|
+
no longer pollute wire results; `path_parts_contain_ignored_dir()`
|
|
60
|
+
now used throughout.
|
|
61
|
+
- **`forge audit list` / `forge audit log`** — default to CWD
|
|
62
|
+
(`Path(".")`) instead of requiring explicit path argument.
|
|
63
|
+
- **DebtCounter** — `fCodeSeverity(v.f_code)` replaces broken
|
|
64
|
+
`SEVERITY_WEIGHTS[v.severity]` (was always returning weight 1).
|
|
65
|
+
- **WireViolation TypeScript interface** — aligned with actual JSON
|
|
66
|
+
schema (`f_code`, `from_tier`, `to_tier`).
|
|
67
|
+
- **ArchitectureGraph** — staircase node layout instead of single column.
|
|
68
|
+
- **`forge doctor`** — optional dep checks (complexipy, bandit, mypy).
|
|
69
|
+
- **`commandsmith smoke`** — `--include-core` flag tests all 23 core verbs.
|
|
70
|
+
|
|
3
71
|
## 0.3.1 — Golden Path lanes B/C/D/F/G ship
|
|
4
72
|
|
|
5
73
|
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.
|
|
3
|
+
Version: 0.3.3
|
|
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.
|
|
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 #
|
|
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.
|
|
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 #
|
|
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
|
-
- ✓ **
|
|
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.
|
|
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 #
|
|
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.
|
|
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 #
|
|
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
|
-
- ✓ **
|
|
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
|
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# Atomadic Forge — Release Messaging Kit
|
|
2
|
+
|
|
3
|
+
Use this file as the launch copy source of truth for v0.3.2.
|
|
4
|
+
|
|
5
|
+
## One-Liners
|
|
6
|
+
|
|
7
|
+
- The architecture compiler for AI-generated code.
|
|
8
|
+
- Use any coding agent you want. Run Forge before the codebase forgets
|
|
9
|
+
its shape.
|
|
10
|
+
- Copilots write code. Forge keeps the repo architecturally honest.
|
|
11
|
+
- Absorb messy code. Enforce the 5-tier law. Emerge safer capabilities.
|
|
12
|
+
- AI made implementation cheap. Forge protects architecture.
|
|
13
|
+
|
|
14
|
+
## Short Product Description
|
|
15
|
+
|
|
16
|
+
Atomadic Forge is a polyglot architecture guardian for Python,
|
|
17
|
+
JavaScript, and TypeScript repos. It classifies code into a strict
|
|
18
|
+
5-tier monadic layout, detects upward-import violations, scores
|
|
19
|
+
architecture health, and gives coding agents MCP-native tools for
|
|
20
|
+
context, preflight, planning, test selection, and certification.
|
|
21
|
+
|
|
22
|
+
## Longer Description
|
|
23
|
+
|
|
24
|
+
AI coding agents can generate code faster than teams can review its
|
|
25
|
+
architecture. Atomadic Forge is the missing governance layer: it absorbs
|
|
26
|
+
messy or AI-generated repos, enforces a deterministic 5-tier import law,
|
|
27
|
+
and emits receipts that make architectural shape auditable in CI and
|
|
28
|
+
agent workflows.
|
|
29
|
+
|
|
30
|
+
Forge is not a replacement for Cursor, Claude Code, Copilot, Devin, or
|
|
31
|
+
Codex. It is the complement they need: an architectural substrate that
|
|
32
|
+
keeps generated code from turning into unowned, unstructured drift.
|
|
33
|
+
|
|
34
|
+
## HN Post Draft
|
|
35
|
+
|
|
36
|
+
Title:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Show HN: Forge — an architecture compiler for AI-generated code
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Body:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Hi HN,
|
|
46
|
+
|
|
47
|
+
I built Atomadic Forge because AI coding agents made a new problem very
|
|
48
|
+
obvious: we can generate implementation faster than we can preserve
|
|
49
|
+
architecture.
|
|
50
|
+
|
|
51
|
+
Forge is a CLI + MCP server that scans Python, JavaScript, and TypeScript
|
|
52
|
+
repos, classifies files into a 5-tier monadic layout, detects upward
|
|
53
|
+
imports, scores architectural conformance, and gives coding agents tools
|
|
54
|
+
like context packs, preflight checks, score prediction, selected tests,
|
|
55
|
+
and receipts.
|
|
56
|
+
|
|
57
|
+
The core idea is opinionated:
|
|
58
|
+
|
|
59
|
+
a0 constants -> a1 pure functions -> a2 stateful composites ->
|
|
60
|
+
a3 features -> a4 orchestration
|
|
61
|
+
|
|
62
|
+
Higher tiers may import lower tiers. Lower tiers never import upward.
|
|
63
|
+
That single law gives AI agents a shape they can obey and CI can enforce.
|
|
64
|
+
|
|
65
|
+
It is not meant to replace Copilot/Cursor/Claude Code/Devin. Those tools
|
|
66
|
+
write code. Forge is the architectural guardrail for what they write.
|
|
67
|
+
|
|
68
|
+
Quick start:
|
|
69
|
+
|
|
70
|
+
pip install atomadic-forge
|
|
71
|
+
forge recon .
|
|
72
|
+
forge wire src --fail-on-violations
|
|
73
|
+
forge certify . --fail-under 80
|
|
74
|
+
forge mcp serve --project .
|
|
75
|
+
|
|
76
|
+
Would love feedback from people using AI agents heavily: what
|
|
77
|
+
architecture failures are you seeing after the third or fourth generated
|
|
78
|
+
feature?
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## X / Short-Form Thread
|
|
82
|
+
|
|
83
|
+
1. AI coding agents made code cheap. Architecture became the bottleneck.
|
|
84
|
+
|
|
85
|
+
2. Atomadic Forge is an architecture compiler for AI-generated code:
|
|
86
|
+
Python, JavaScript, and TypeScript in one 5-tier law.
|
|
87
|
+
|
|
88
|
+
3. The law is simple:
|
|
89
|
+
`a0 constants -> a1 pure functions -> a2 state -> a3 features -> a4 orchestration`
|
|
90
|
+
Imports go upward only.
|
|
91
|
+
|
|
92
|
+
4. Copilot/Cursor/Claude Code/Devin write code. Forge keeps the repo
|
|
93
|
+
from forgetting its shape.
|
|
94
|
+
|
|
95
|
+
5. Run:
|
|
96
|
+
`pip install atomadic-forge`
|
|
97
|
+
`forge recon .`
|
|
98
|
+
`forge wire src --fail-on-violations`
|
|
99
|
+
`forge certify .`
|
|
100
|
+
|
|
101
|
+
6. It also ships MCP tools for agents: context packs, preflight checks,
|
|
102
|
+
score-patch, selected tests, recipes, repo explanation, and receipts.
|
|
103
|
+
|
|
104
|
+
7. Use any coding agent you want. Run Forge before generated code turns
|
|
105
|
+
into architectural drift.
|
|
106
|
+
|
|
107
|
+
## LinkedIn / Launch Post
|
|
108
|
+
|
|
109
|
+
AI coding assistants are moving from novelty to daily infrastructure.
|
|
110
|
+
That changes the bottleneck.
|
|
111
|
+
|
|
112
|
+
The problem is no longer "can we generate code?" The problem is "can the
|
|
113
|
+
codebase keep a coherent architecture while code is generated at agent
|
|
114
|
+
speed?"
|
|
115
|
+
|
|
116
|
+
Atomadic Forge is built for that gap.
|
|
117
|
+
|
|
118
|
+
Forge is a polyglot architecture substrate for Python, JavaScript, and
|
|
119
|
+
TypeScript. It scans repos, classifies code into a 5-tier monadic layout,
|
|
120
|
+
detects upward-import violations, scores conformance, and exposes
|
|
121
|
+
agent-native MCP tools for planning, preflight, test selection, and
|
|
122
|
+
certification.
|
|
123
|
+
|
|
124
|
+
It is not a competitor to Copilot, Cursor, Claude Code, Devin, or Codex.
|
|
125
|
+
It is the layer that makes their output governable.
|
|
126
|
+
|
|
127
|
+
The core thesis:
|
|
128
|
+
|
|
129
|
+
AI made implementation cheap. Architecture is now the scarce resource.
|
|
130
|
+
|
|
131
|
+
Install:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
pip install atomadic-forge
|
|
135
|
+
forge recon .
|
|
136
|
+
forge wire src --fail-on-violations
|
|
137
|
+
forge certify . --fail-under 80
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Cold Email: Developer / Founder
|
|
141
|
+
|
|
142
|
+
Subject: Keeping AI-generated code from turning into architecture debt
|
|
143
|
+
|
|
144
|
+
Hi [first name],
|
|
145
|
+
|
|
146
|
+
I saw [specific hook from their work]. I am reaching out because you look
|
|
147
|
+
like exactly the kind of builder who is already using AI coding tools
|
|
148
|
+
hard enough to hit the next bottleneck: architecture drift.
|
|
149
|
+
|
|
150
|
+
Atomadic Forge is a CLI + MCP server that sits beside tools like Cursor,
|
|
151
|
+
Claude Code, Copilot, Devin, and Codex. Those tools generate code. Forge
|
|
152
|
+
scans the repo, enforces a 5-tier import law, scores architectural
|
|
153
|
+
conformance, and gives agents context/preflight/test-selection tools so
|
|
154
|
+
generated changes stay governable.
|
|
155
|
+
|
|
156
|
+
Quick shape:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
pip install atomadic-forge
|
|
160
|
+
forge recon .
|
|
161
|
+
forge wire src --fail-on-violations
|
|
162
|
+
forge certify . --fail-under 80
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
The bet is simple: AI made implementation cheap. Architecture is now the
|
|
166
|
+
scarce resource.
|
|
167
|
+
|
|
168
|
+
Would you be open to trying it on one AI-heavy repo and telling me where
|
|
169
|
+
the architecture check feels useful or too opinionated?
|
|
170
|
+
|
|
171
|
+
Thomas
|
|
172
|
+
|
|
173
|
+
## Cold Email: Journalist / Analyst
|
|
174
|
+
|
|
175
|
+
Subject: AI coding has a missing architecture layer
|
|
176
|
+
|
|
177
|
+
Hi [first name],
|
|
178
|
+
|
|
179
|
+
I read your piece on [specific hook]. One angle I think is under-covered:
|
|
180
|
+
AI coding agents are not just changing who writes code. They are changing
|
|
181
|
+
the rate at which architecture debt can accumulate.
|
|
182
|
+
|
|
183
|
+
Atomadic Forge is my attempt at the missing layer. It is an architecture
|
|
184
|
+
compiler for AI-generated code: a CLI + MCP server that classifies
|
|
185
|
+
Python/JS/TS repos into a strict 5-tier layout, detects upward-import
|
|
186
|
+
violations, scores conformance, and gives coding agents guardrails before
|
|
187
|
+
they modify the repo again.
|
|
188
|
+
|
|
189
|
+
The positioning is intentionally complementary:
|
|
190
|
+
|
|
191
|
+
Copilot/Cursor/Claude Code/Devin write code. Forge keeps the repo
|
|
192
|
+
architecturally honest.
|
|
193
|
+
|
|
194
|
+
If useful, I can send a short demo showing an AI-generated repo being
|
|
195
|
+
recon'd, wired, scored, and turned into an agent-readable action plan.
|
|
196
|
+
|
|
197
|
+
Thomas
|
|
198
|
+
|
|
199
|
+
## Demo Script
|
|
200
|
+
|
|
201
|
+
1. Start with the problem:
|
|
202
|
+
"AI agents can now generate code faster than humans can preserve
|
|
203
|
+
architecture."
|
|
204
|
+
|
|
205
|
+
2. Show a repo:
|
|
206
|
+
`forge recon .`
|
|
207
|
+
|
|
208
|
+
3. Show architecture law:
|
|
209
|
+
`forge wire src --fail-on-violations --suggest-repairs`
|
|
210
|
+
|
|
211
|
+
4. Show score:
|
|
212
|
+
`forge certify . --fail-under 80`
|
|
213
|
+
|
|
214
|
+
5. Show agent-native layer:
|
|
215
|
+
`forge mcp serve --project .`
|
|
216
|
+
|
|
217
|
+
6. Show why this is different:
|
|
218
|
+
"This is not autocomplete. It is an architecture substrate for
|
|
219
|
+
autocomplete-heavy teams."
|
|
220
|
+
|
|
221
|
+
## Launch Checklist
|
|
222
|
+
|
|
223
|
+
- PyPI page install works: `pip install atomadic-forge`.
|
|
224
|
+
- README first 10 minutes path works from a clean machine.
|
|
225
|
+
- `forge --help`, `forge doctor`, `forge recon .`, `forge certify .`
|
|
226
|
+
all produce polished output.
|
|
227
|
+
- GitHub release notes link to `docs/MARKET_POSITIONING.md`.
|
|
228
|
+
- HN post avoids inflated claims and asks for specific feedback.
|
|
229
|
+
- Outreach copy frames Forge as a complement, not a Copilot rival.
|
|
230
|
+
- Demo video shows one concrete repo and one clear before/after.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "atomadic-forge"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.3"
|
|
8
8
|
description = "Atomadic Forge — absorb, enforce, emerge. Polyglot (Python + JavaScript/TypeScript) architecture guardian for AI-generated code."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|