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.
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/CHANGELOG.md +123 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/PKG-INFO +37 -6
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/README.md +36 -5
- atomadic_forge-0.3.4/docs/MARKET_POSITIONING.md +136 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/README.md +17 -0
- atomadic_forge-0.3.4/docs/RELEASE_MESSAGING.md +230 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/pyproject.toml +1 -1
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/__init__.py +1 -1
- atomadic_forge-0.3.4/src/atomadic_forge/a0_qk_constants/auth_constants.py +133 -0
- atomadic_forge-0.3.4/src/atomadic_forge/a1_at_functions/forge_auth.py +217 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/roi_calculator.py +5 -6
- atomadic_forge-0.3.4/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +252 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/mcp_server.py +133 -1
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a4_sy_orchestration/cli.py +14 -0
- atomadic_forge-0.3.4/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +164 -0
- atomadic_forge-0.3.4/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +159 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/commandsmith.py +1 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/PKG-INFO +37 -6
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/SOURCES.txt +10 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_compliance_checker.py +4 -3
- atomadic_forge-0.3.4/tests/test_forge_auth_a1.py +229 -0
- atomadic_forge-0.3.4/tests/test_forge_auth_a2.py +377 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_roi_calculator.py +4 -3
- atomadic_forge-0.3.4/tests/test_whoami_cmd.py +126 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/actions/forge-action/README.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/actions/forge-action/action.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/dependabot.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/pull_request_template.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/workflows/ci.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/workflows/forge-self-certify.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/workflows/forge-studio-ci.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/.github/workflows/release.yml +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/ARCHITECTURE.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/CONTRIBUTING.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/LICENSE +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/MANIFEST.in +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/SECURITY.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/assets/Atomadic-Forge-01.png +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/01-getting-started.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/02-commands.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/03-tutorial.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/04-llm-loops.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/05-faq.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/AGENTS_GUIDE.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/AIR_GAPPED.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/CI_CD.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/CODEX_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/COMMANDS.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/FIRST_10_MINUTES.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/FORMALIZATION.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/LANDSCAPE.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/MULTI_REPO.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/RECEIPT.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/RELEASE_CHECKLIST.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/ROADMAP.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/SHOWCASE.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/SIDECAR.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/STUDIO.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/WHY_NOW.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/INDEX.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/chat.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/commandsmith.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/config.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/demo.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/emergent-then-synergy.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/emergent.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/evolve-then-iterate.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/evolve.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/feature-then-emergent.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/iterate.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/synergy-then-emergent.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/commands/synergy.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/compliance/CS-1.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/compliance/SR_11-7_MAPPING.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/01-quickstart.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/02-your-first-package.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/03-the-five-tier-law.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/04-plug-in-llms.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/05-multi-repo-absorb.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/docs/tutorials/06-javascript-quickstart.md +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/setup.cfg +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/__main__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/__init__.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/_registry.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/audit.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/chat.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/config_cmd.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/demo.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/emergent.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/evolve.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/iterate.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/synergy.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/requires.txt +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/src/atomadic_forge.egg-info/top_level.txt +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_aaaa_nexus_client.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_agent_plan.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_agent_summary.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_audit_verb.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_badge_worker.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_body_extractor_repairs.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_card_renderer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_certify_operational_axis.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_chat.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_classify_tier.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_cli_smoke.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_codex_5_complete.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_codex_6_enforce_polyglot.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_commandsmith.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_compiler_feedback.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_config.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_copilots_copilot.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_cs1_renderer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_demo.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_emergent_compose.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_emergent_signature_extract.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_error_codes.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_error_hints.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_evolve_js.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_forge_action.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_forge_enforce.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_generation_quality.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_ignore_and_docs.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_import_smoke.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_iterate_evolve.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_js_certify.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_js_parser.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_js_recon.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_js_wire.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_lineage_chain.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_local_signer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_lsp_protocol.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_manifest_diff.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_mcp_protocol.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_ollama_client.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_pipeline.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_plan_apply.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_pre_audit_smoke.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_precommit_hooks.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_progress_reporter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_receipt_emitter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_receipt_schema.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_receipt_signer.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_sbom_emitter.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_scaffold.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_sidecar.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_sidecar_validate.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_stagnation.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_stub_detector.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_synergy.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_test_runner.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_tier_init_rebuild.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_vscode_extension_manifest.py +0 -0
- {atomadic_forge-0.3.2 → atomadic_forge-0.3.4}/tests/test_wire_certify.py +0 -0
- {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.
|
|
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.
|
|
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
|
|