atomadic-forge 0.6.0__tar.gz → 0.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- atomadic_forge-0.10.0/.github/FUNDING.yml +5 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/ARCHITECTURE.md +15 -4
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/CHANGELOG.md +436 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/PKG-INFO +94 -25
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/README.md +93 -24
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/01-getting-started.md +54 -1
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/04-llm-loops.md +87 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/05-faq.md +10 -7
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/AGENTS_GUIDE.md +180 -32
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/COMMANDS.md +99 -27
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/FIRST_10_MINUTES.md +1 -1
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/ROADMAP.md +2 -1
- atomadic_forge-0.10.0/docs/STRIPE_SETUP_HANDOFF.md +299 -0
- atomadic_forge-0.10.0/docs/STUDIO.md +34 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/pyproject.toml +1 -1
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/__init__.py +1 -1
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +21 -3
- atomadic_forge-0.10.0/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +134 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +106 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +14 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/agent_context_pack.py +446 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/call_graph.py +378 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +67 -31
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +37 -2
- atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/emergent_rank.py +209 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +51 -1
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +33 -27
- atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/forge_locate.py +179 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/mcp_protocol.py +2898 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +23 -5
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/recipes.py +88 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/smell_scan.py +252 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/synergy_detect.py +352 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +114 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +334 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +33 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a1_at_functions/worktree_status.py +209 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +185 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +5 -2
- atomadic_forge-0.10.0/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +194 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/cherry_hunter.py +254 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/cna_check.py +280 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/commit_compose.py +177 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +72 -12
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +7 -1
- atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/emergent_swarm.py +265 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/forge_evolve_session.py +306 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/forge_loop_session.py +271 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/guard_install.py +284 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/mcp_server.py +727 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +2 -2
- atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/tool_factory.py +488 -0
- atomadic_forge-0.10.0/src/atomadic_forge/a3_og_features/verify_umbrella.py +206 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +118 -3
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +30 -1
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +8 -6
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +3 -3
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/PKG-INFO +94 -25
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/SOURCES.txt +19 -2
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_agent_plan.py +3 -3
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_cli_smoke.py +30 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_codex_5_complete.py +4 -4
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_codex_6_enforce_polyglot.py +1 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_copilots_copilot.py +69 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_dedup_engine.py +4 -2
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_exported_api_check.py +5 -50
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_forge_auth_a1.py +23 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_forge_auth_a2.py +15 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_forge_enforce.py +55 -1
- atomadic_forge-0.10.0/tests/test_mcp_protocol.py +1775 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_plan_apply.py +3 -3
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_synergy.py +6 -2
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_test_runner.py +67 -1
- atomadic_forge-0.6.0/docs/STUDIO.md +0 -69
- atomadic_forge-0.6.0/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -166
- atomadic_forge-0.6.0/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -116
- atomadic_forge-0.6.0/src/atomadic_forge/a1_at_functions/mcp_protocol.py +0 -1234
- atomadic_forge-0.6.0/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -166
- atomadic_forge-0.6.0/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -163
- atomadic_forge-0.6.0/src/atomadic_forge/a3_og_features/mcp_server.py +0 -356
- atomadic_forge-0.6.0/tests/test_badge_worker.py +0 -143
- atomadic_forge-0.6.0/tests/test_mcp_protocol.py +0 -397
- atomadic_forge-0.6.0/tests/test_vscode_extension_manifest.py +0 -138
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/actions/forge-action/README.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/actions/forge-action/action.yml +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/dependabot.yml +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/pull_request_template.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/workflows/ci.yml +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/workflows/customer-refactor.yml +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/workflows/forge-self-certify.yml +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/workflows/forge-studio-ci.yml +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/.github/workflows/release.yml +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/CONTRIBUTING.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/LICENSE +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/MANIFEST.in +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/SECURITY.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/assets/Atomadic-Forge-01.png +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/02-commands.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/03-tutorial.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/AIR_GAPPED.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/CI_CD.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/CODEX_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/FORMALIZATION.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/LANDSCAPE.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/MARKET_POSITIONING.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/MULTI_REPO.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/README.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/RECEIPT.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/RELEASE_CHECKLIST.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/RELEASE_MESSAGING.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/SHOWCASE.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/SIDECAR.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/WHY_NOW.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/INDEX.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/chat.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/commandsmith.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/config.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/demo.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/emergent-then-synergy.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/emergent.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/evolve-then-iterate.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/evolve.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/feature-then-emergent.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/iterate.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/synergy-then-emergent.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/commands/synergy.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/compliance/CS-1.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/compliance/SR_11-7_MAPPING.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/01-quickstart.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/02-your-first-package.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/03-the-five-tier-law.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/04-plug-in-llms.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/05-multi-repo-absorb.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/docs/tutorials/06-javascript-quickstart.md +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/setup.cfg +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/__main__.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/__init__.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/_registry.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/audit.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/chat.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/commandsmith.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/config_cmd.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/demo.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/emergent.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/evolve.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/iterate.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/synergy.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/requires.txt +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_aaaa_nexus_client.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_agent_hire_protocol.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_agent_summary.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_audit_verb.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_body_extractor_repairs.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_card_renderer.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_certify_operational_axis.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_chat.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_classify_tier.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_commandsmith.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_compiler_feedback.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_compliance_checker.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_config.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_cs1_renderer.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_demo.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_emergent_compose.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_emergent_signature_extract.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_error_codes.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_error_hints.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_evolve_js.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_forge_action.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_generation_quality.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_hierarchical_memory.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_ignore_and_docs.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_import_smoke.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_iterate_evolve.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_js_certify.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_js_parser.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_js_recon.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_js_wire.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_lineage_chain.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_ling_provider.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_local_signer.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_lsp_protocol.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_manifest_diff.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_ollama_client.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_pipeline.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_pre_audit_smoke.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_precommit_hooks.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_progress_reporter.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_receipt_emitter.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_receipt_schema.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_receipt_signer.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_roi_calculator.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_sbom_emitter.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_scaffold.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_sidecar.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_sidecar_validate.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_stagnation.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_stub_detector.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_tier_init_rebuild.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_trust_gate_response.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_whoami_cmd.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_wire_certify.py +0 -0
- {atomadic_forge-0.6.0 → atomadic_forge-0.10.0}/tests/test_wire_suggest_repairs.py +0 -0
|
@@ -33,14 +33,25 @@ nothing new.
|
|
|
33
33
|
|
|
34
34
|
```
|
|
35
35
|
src/atomadic_forge/
|
|
36
|
-
├── a0_qk_constants/ # tier_names, forge_types, lang_extensions,
|
|
36
|
+
├── a0_qk_constants/ # tier_names, forge_types, lang_extensions,
|
|
37
|
+
│ # auth_constants, recipe schemas, *_types.py
|
|
37
38
|
├── a1_at_functions/ # classify_tier, scout_walk, cherry_pick, wire_check,
|
|
38
39
|
│ # certify_checks, body_extractor, import_repair,
|
|
39
|
-
│ # js_parser,
|
|
40
|
-
|
|
40
|
+
│ # js_parser, llm_client, provider_resolver,
|
|
41
|
+
│ # code_signature, intent_similarity,
|
|
42
|
+
│ # research_note_distiller, exported_api_check,
|
|
43
|
+
│ # trust_gate_response, recipes, mcp_protocol,
|
|
44
|
+
│ # commandsmith_*, emergent_*, synergy_*
|
|
45
|
+
├── a2_mo_composites/ # manifest_store, plan_store, lineage_chain_store,
|
|
46
|
+
│ # receipt_signer, forge_auth_client,
|
|
47
|
+
│ # cost_circuit_breaker, hierarchical_memory,
|
|
48
|
+
│ # cross_agent_intent_deduplicator
|
|
41
49
|
├── a3_og_features/ # forge_pipeline (run_auto/run_recon/run_cherry/run_finalize),
|
|
42
50
|
│ # emergent_feature, synergy_feature, commandsmith_feature,
|
|
43
|
-
│ # demo_runner + demo_packages/ (static showcase presets)
|
|
51
|
+
│ # demo_runner + demo_packages/ (static showcase presets),
|
|
52
|
+
│ # mcp_server, lsp_server, setup_wizard,
|
|
53
|
+
│ # dedup_engine, agent_hire_protocol,
|
|
54
|
+
│ # forge_enforce, forge_evolve, forge_loop, forge_plan_apply
|
|
44
55
|
├── a4_sy_orchestration/ # cli.py — Typer app with `auto` flagship
|
|
45
56
|
└── commands/ # Per-verb Typer modules (specialty surfaces)
|
|
46
57
|
```
|
|
@@ -1,5 +1,441 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.10.0 — 2026-05-04 surface consolidation (47 → 40 tools)
|
|
4
|
+
|
|
5
|
+
The "merge synthesis and cut" release. After v0.9.0 closed the
|
|
6
|
+
token-friction loop, the user asked for a sharper tool surface:
|
|
7
|
+
fewer overlapping verbs, no capability loss. This release merges
|
|
8
|
+
11 prior tool entries into 4 unified ones plus 2 fold operations.
|
|
9
|
+
|
|
10
|
+
### Merged
|
|
11
|
+
|
|
12
|
+
- **`lineage`** (new) — replaces `audit_list` + `why_did_this_change`
|
|
13
|
+
+ `what_failed_last_time`. Auto-detects `mode` from args:
|
|
14
|
+
`file=...` → `by_file`, `area=...` → `failed_for_area`, else `all`.
|
|
15
|
+
Schema version: `atomadic-forge.lineage/v1` (the underlying
|
|
16
|
+
delegated tools still tag their own schema versions on the
|
|
17
|
+
response body, preserving downstream compatibility).
|
|
18
|
+
- **`recipes`** (new) — replaces `list_recipes` + `get_recipe`.
|
|
19
|
+
No `name` arg → catalogue summary; with `name` → full recipe body.
|
|
20
|
+
Schema: `atomadic-forge.recipes/v1`.
|
|
21
|
+
- **`plan`** (new) — replaces `auto_plan` + `adapt_plan`. Passing
|
|
22
|
+
a `plan` dict routes to the adapt path; otherwise generates a
|
|
23
|
+
fresh plan via auto_plan, optionally chained with adapt via
|
|
24
|
+
`capability_filter`. Schema: `atomadic-forge.agent_plan/v1`.
|
|
25
|
+
- **`plan_apply`** (new) — replaces `auto_step` + `auto_apply`.
|
|
26
|
+
Passing `card_id` applies one card; omitting it applies all-
|
|
27
|
+
applyable cards. Schema: `atomadic-forge.plan_apply/v1`.
|
|
28
|
+
|
|
29
|
+
### Folded
|
|
30
|
+
|
|
31
|
+
- **`doctor`** absorbs `worktree_status` via the new
|
|
32
|
+
`include_worktree=true` arg.
|
|
33
|
+
- **`verify`** absorbs `exported_api_check` via the new
|
|
34
|
+
`check_exports=true` arg (with `source` or `path` argument).
|
|
35
|
+
|
|
36
|
+
### Removed (folded — ZERO capability loss)
|
|
37
|
+
|
|
38
|
+
`audit_list`, `why_did_this_change`, `what_failed_last_time`,
|
|
39
|
+
`list_recipes`, `get_recipe`, `auto_plan`, `adapt_plan`,
|
|
40
|
+
`auto_step`, `auto_apply`, `worktree_status`, `exported_api_check`.
|
|
41
|
+
|
|
42
|
+
The CLI verbs and the underlying a1/a3 implementations are
|
|
43
|
+
retained — only the MCP surface entries collapsed. Any agent
|
|
44
|
+
using the old MCP names must migrate per the table above.
|
|
45
|
+
|
|
46
|
+
### Validation
|
|
47
|
+
|
|
48
|
+
- pytest: **1030 passed**, 2 skipped, 0 failed
|
|
49
|
+
- ruff: clean
|
|
50
|
+
- forge wire: 0 violations
|
|
51
|
+
- TOOLS count: **40** (was 47)
|
|
52
|
+
- backward-compat path: dispatcher delegation — every new merged
|
|
53
|
+
tool calls the existing `_tool_*` impl, so behavior is unchanged
|
|
54
|
+
|
|
55
|
+
### Why this matters for the buyer/agent UX
|
|
56
|
+
|
|
57
|
+
47 tools was too many: agents (and humans) felt choice paralysis,
|
|
58
|
+
and three "lineage flavors" + two "plan flavors" + two "apply
|
|
59
|
+
flavors" added cognitive overhead with no gain. The merged tools
|
|
60
|
+
expose intent directly through a single primary verb whose mode
|
|
61
|
+
is inferred from the args you'd already pass. The smaller surface
|
|
62
|
+
also reduces tools/list payload size — a recurring tax on every
|
|
63
|
+
MCP cold-start.
|
|
64
|
+
|
|
65
|
+
### Migration cheat sheet (old → new)
|
|
66
|
+
|
|
67
|
+
| Old MCP name | New call |
|
|
68
|
+
|---|---|
|
|
69
|
+
| `audit_list` | `lineage` (no args) |
|
|
70
|
+
| `why_did_this_change {file: "src/x.py"}` | `lineage {file: "src/x.py"}` |
|
|
71
|
+
| `what_failed_last_time {area: "auth"}` | `lineage {area: "auth"}` |
|
|
72
|
+
| `list_recipes` | `recipes` |
|
|
73
|
+
| `get_recipe {name: "release_check"}` | `recipes {name: "release_check"}` |
|
|
74
|
+
| `auto_plan {target: "."}` | `plan {target: "."}` |
|
|
75
|
+
| `adapt_plan {plan, agent_capabilities}` | `plan {plan, agent_capabilities}` |
|
|
76
|
+
| `auto_step {card_id}` | `plan_apply {card_id}` |
|
|
77
|
+
| `auto_apply` | `plan_apply` |
|
|
78
|
+
| `worktree_status` | `doctor {include_worktree: true}` |
|
|
79
|
+
| `exported_api_check {source}` | `verify {check_exports: true, source}` |
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## v0.9.0 — 2026-05-05 token-reduction sprint (close 6 of 8 frictions)
|
|
84
|
+
|
|
85
|
+
Honest-reflection release. After v0.8.0 shipped 17 new MCP tools, I
|
|
86
|
+
audited the session for repetitive patterns: ~46,000 tokens of pure
|
|
87
|
+
boilerplate / re-reading / hand-narration across the session. This
|
|
88
|
+
release closes 6 of the 8 friction categories with small CNA-pure
|
|
89
|
+
additions. Remaining waste per session drops from ~46k tokens to
|
|
90
|
+
~15k; the ~36k saved compounds every future session.
|
|
91
|
+
|
|
92
|
+
### Added
|
|
93
|
+
|
|
94
|
+
- **`forge_locate` MCP tool** (a1) — returns just the file path +
|
|
95
|
+
line range + 5-line preview for any well-known forge insertion
|
|
96
|
+
point (tools_dict, all_export, register_block, mcp_server_imports,
|
|
97
|
+
test_pinned_set). Saves ~12k tokens per session vs re-reading the
|
|
98
|
+
full mcp_protocol.py / mcp_server.py files. Pure analytical,
|
|
99
|
+
sub-second. (Closes friction F-2.)
|
|
100
|
+
|
|
101
|
+
- **`commit_compose` MCP tool** (a3) — accepts intent + commit_type
|
|
102
|
+
+ optional body, runs `git diff --numstat HEAD`, emits a structured
|
|
103
|
+
commit body with files-changed list, +/- line totals, and the
|
|
104
|
+
co-author trailer. Drops commit-message token cost from ~1500
|
|
105
|
+
hand-typed tokens to ~150 spec tokens. (Closes friction F-5.)
|
|
106
|
+
|
|
107
|
+
- **`a0/schema_version_registry.py`** — canonical SCHEMA_VERSIONS
|
|
108
|
+
dict mapping `tool_name` → `schema_version_str`. 47 entries (full
|
|
109
|
+
TOOLS surface registered). `schema_version_for(name)` raises
|
|
110
|
+
KeyError on unknown names; new tool without a registry entry is a
|
|
111
|
+
CI failure via `test_schema_version_registry_covers_every_tool`.
|
|
112
|
+
(Closes friction F-6.)
|
|
113
|
+
|
|
114
|
+
- **`tools_snapshot.json` + auto-derived pinned-tools test** —
|
|
115
|
+
`test_pinned_tools_snapshot_matches_tools_dict` diffs
|
|
116
|
+
`set(TOOLS.keys())` against the snapshot file. Auto-bootstraps;
|
|
117
|
+
CI fails on drift with a regenerate command in the error message.
|
|
118
|
+
Zero manual maintenance going forward. (Closes friction F-3.)
|
|
119
|
+
|
|
120
|
+
- **`tool_factory(apply=True)` mode** (was added in v0.8.0 commit
|
|
121
|
+
`716ead8`, surfaced here for the changelog) — auto-applies the
|
|
122
|
+
scaffold inserts to mcp_protocol.py + mcp_server.py +
|
|
123
|
+
test_mcp_protocol.py. Idempotent. Saves ~5–6k tokens per
|
|
124
|
+
substantial session. (Closes friction F-1.)
|
|
125
|
+
|
|
126
|
+
### Validation
|
|
127
|
+
|
|
128
|
+
- pytest: **1031 passed**, 2 skipped, 0 failed (was 1029)
|
|
129
|
+
- ruff: clean
|
|
130
|
+
- forge wire: 0 violations
|
|
131
|
+
- forge certify: 100/100 PASS
|
|
132
|
+
- TOOLS count: **47** (was 46)
|
|
133
|
+
|
|
134
|
+
### Token-saving estimate (recurring per session)
|
|
135
|
+
|
|
136
|
+
| Friction | Pre-fix waste | Status |
|
|
137
|
+
|---|---|---|
|
|
138
|
+
| F-1 boilerplate dance | ~6,000 | ✅ FIXED |
|
|
139
|
+
| F-2 re-reading large files | ~12,000 | ✅ FIXED (NEW) |
|
|
140
|
+
| F-3 pinned-tools drift | ~600 | ✅ FIXED (NEW) |
|
|
141
|
+
| F-4 ruff/pytest cycle | ~6,000 | ⏳ Behavioral (Makefile.forge) |
|
|
142
|
+
| F-5 long commit messages | ~12,000 | ✅ FIXED (NEW) |
|
|
143
|
+
| F-6 schema version drift | ~200 | ✅ FIXED (NEW) |
|
|
144
|
+
| F-7 doc dual-maintenance | ~1,500 | ⏳ Behavioral |
|
|
145
|
+
| F-8 todo reminders | ~7,500 | ⏳ Out of scope |
|
|
146
|
+
|
|
147
|
+
After this release: ~36k tokens saved per substantial session,
|
|
148
|
+
recurring. ~$0.15/session in API cost — but more importantly that's
|
|
149
|
+
36k tokens reinvested in actual capability development every time.
|
|
150
|
+
|
|
151
|
+
### Notes
|
|
152
|
+
|
|
153
|
+
The remaining frictions (F-4, F-7, F-8) are behavioral or system-
|
|
154
|
+
side; the tooling fix has shipped (Makefile.forge, source-of-truth
|
|
155
|
+
notes), the burden is to actually use them consistently.
|
|
156
|
+
|
|
157
|
+
The next permanent token-reduction layer is **atomadic-lang's
|
|
158
|
+
`Φ_tri = 46/43` triality compression** — 4× fewer tokens at the
|
|
159
|
+
LLM-call boundary, codex-anchored. Until lang ships, the sprint
|
|
160
|
+
above is the practical bridge.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## v0.8.0 — 2026-05-05 substrate-position release (R3.5 + R4 + R5 + harvest)
|
|
165
|
+
|
|
166
|
+
The biggest single release in forge's history. 17 new MCP tools live;
|
|
167
|
+
989 → 1028 tests; certify 100/100 throughout. **Spaghetti can never
|
|
168
|
+
silently come back** after `guard_install --apply`. Investor packet
|
|
169
|
+
shipped (WHITEPAPER + PITCH + DEMO_SCRIPT + COMPETITIVE_AUDIT +
|
|
170
|
+
RESEARCH_BREAKTHROUGH + Receipt v1 dogfood artifact).
|
|
171
|
+
|
|
172
|
+
### Added — agent-driven LLM loop substrate
|
|
173
|
+
|
|
174
|
+
- `iterate_start` / `iterate_continue` — agent-driven sessions.
|
|
175
|
+
Forge holds ZERO LLM clients; the calling agent drives its own
|
|
176
|
+
LLM and calls forge between turns. Substrate-boundary contract
|
|
177
|
+
test asserts call count stays at zero.
|
|
178
|
+
- `evolve_start` / `evolve_step` — recursive iterate, D_max=23
|
|
179
|
+
bounded. Halts on convergence, stagnation, or regression.
|
|
180
|
+
|
|
181
|
+
### Added — cross-repo intelligence
|
|
182
|
+
|
|
183
|
+
- `recon_swarm` — D_max-bounded portfolio walk; OMEGA_0 invariant
|
|
184
|
+
per scan.
|
|
185
|
+
- `harvest` (renamed from `cherry_hunt` after research) — τ_trust =
|
|
186
|
+
1820/1823 Lean-4-verified gating. Conservative by default.
|
|
187
|
+
- `emergent_swarm` — cross-repo emergent composition discovery.
|
|
188
|
+
Cycle 2 sharpening: chain edges cross-validated against
|
|
189
|
+
`call_graph`; corroborated edges tagged `static_call_confirmed`
|
|
190
|
+
per SOTA Codebase-Memory MCP / SemanticForge multi-pass
|
|
191
|
+
reconciliation patterns.
|
|
192
|
+
|
|
193
|
+
### Added — composite gates and the standing immune system
|
|
194
|
+
|
|
195
|
+
- `verify` — composite go/no-go gate. wire + certify (always-on)
|
|
196
|
+
+ score_patch + preflight_change (optional). Single
|
|
197
|
+
PASS/REFINE/FAIL verdict. Direct competitive answer to Qodo's
|
|
198
|
+
PR-time verification loop.
|
|
199
|
+
- `cna_check` — hardwired Compose-Not-Add gate. intent_similarity
|
|
200
|
+
+ code_signature + dedup_engine. PASS/REFINE/REJECT.
|
|
201
|
+
- `guard_install` — four-layer architectural immune system in one
|
|
202
|
+
MCP call: pre-commit hook + GitHub Action + pyproject contract
|
|
203
|
+
+ CONTRIBUTING block. **After this runs, agents/LLMs/humans
|
|
204
|
+
cannot silently regress structural integrity.**
|
|
205
|
+
|
|
206
|
+
### Added — code intelligence (harvested from competitors)
|
|
207
|
+
|
|
208
|
+
- `call_graph` — caller/callee BFS; `__init__.py` re-export
|
|
209
|
+
canonicalization. Harvested from Code Pathfinder.
|
|
210
|
+
- `smell_scan` — cyclomatic complexity + long-function +
|
|
211
|
+
duplicated-body. Harvested from Sonar.
|
|
212
|
+
|
|
213
|
+
### Added — meta and infrastructure
|
|
214
|
+
|
|
215
|
+
- `tool_factory` — meta-tool that scaffolds new MCP tools from a
|
|
216
|
+
spec. **Forge eats forge.**
|
|
217
|
+
- MHED-TOE codex invariants module (`a0/mhed_invariants.py`):
|
|
218
|
+
D_MAX_DELEGATION = 23, TAU_TRUST = 1820/1823 Fraction, OMEGA_0
|
|
219
|
+
≡ 0, PHI_ANCHOR = 137, PHI_TRI = 46/43. Self-asserts at import.
|
|
220
|
+
- `Makefile.forge` — `make -f Makefile.forge ship-check` chains
|
|
221
|
+
ruff + pytest + wire + certify.
|
|
222
|
+
|
|
223
|
+
### Added — investor packet
|
|
224
|
+
|
|
225
|
+
- `WHITEPAPER.md` v0.1 — ~3000 words. Market thesis, wedge, five
|
|
226
|
+
killer capabilities, codex-anchored moat, live demo metrics
|
|
227
|
+
(real reproducible numbers), Year 1 floor / Year 3 base /
|
|
228
|
+
Year 5 substrate revenue trajectory, funding ask: **$2M
|
|
229
|
+
pre-seed @ $12M cap**.
|
|
230
|
+
- `PITCH.md` — 1-page cold-outreach version.
|
|
231
|
+
- `DEMO_SCRIPT.md` — 7 reproducible terminal demos.
|
|
232
|
+
- `COMPETITIVE_AUDIT.md` — capability matrix vs Code Pathfinder,
|
|
233
|
+
Moderne, Augment, Sourcegraph, Qodo, Sonar.
|
|
234
|
+
- `RESEARCH_BREAKTHROUGH.md` — 3-round web-research log.
|
|
235
|
+
- `receipts/forge-self-2026-05-05.json` — real Receipt v1 dogfood
|
|
236
|
+
artifact (forge certifies itself 100/100 PASS).
|
|
237
|
+
|
|
238
|
+
### Changed (substrate hardening)
|
|
239
|
+
|
|
240
|
+
- `cherry_hunt` → `harvest` rename (Git-namespace SEO collision).
|
|
241
|
+
- `dispatch_request` exception clause broadened to `Exception`.
|
|
242
|
+
Eliminates `-32000 Connection closed` for any signature drift.
|
|
243
|
+
- Explicit `_json_default` at MCP wire (replaces `default=str`).
|
|
244
|
+
Round-trips set/frozenset/bytes/Path/dataclass.
|
|
245
|
+
- `score_patch` returns REFINE on no-chunks input (was silent PASS).
|
|
246
|
+
- `_build_dest_path` Windows backslash normalization.
|
|
247
|
+
- `dedup_engine` no longer double-walks.
|
|
248
|
+
- `call_graph` `__init__.py` re-export canonicalization.
|
|
249
|
+
|
|
250
|
+
### Validation
|
|
251
|
+
|
|
252
|
+
- pytest: **1028 passed**, 2 skipped, 0 failed
|
|
253
|
+
- ruff: clean
|
|
254
|
+
- forge wire: 0 violations
|
|
255
|
+
- forge certify: **100/100 PASS**
|
|
256
|
+
- TOOLS count: **46** (was 29 in v0.7.x)
|
|
257
|
+
|
|
258
|
+
### Known follow-ups (v0.9.x)
|
|
259
|
+
|
|
260
|
+
- Semantic NL search (embedding model boundary design)
|
|
261
|
+
- Three-phase reconciliation Phase 3 (LSP type signatures)
|
|
262
|
+
- `self_evolve` recursive forge-on-forge loop
|
|
263
|
+
- emergent_swarm against the lang stress-test merge corpus
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Unreleased — 2026-05-04 Round 2 MCP bridge: transmuter pipeline exposed
|
|
268
|
+
|
|
269
|
+
Exposed 5 CLI verbs as MCP tools (`auto`, `cherry`, `finalize`, `iterate`,
|
|
270
|
+
`evolve`). Forge's full transmuter pipeline is now agent-callable from any
|
|
271
|
+
MCP-aware AI coding tool (Cursor, Claude Code, Aider, Devin, and any
|
|
272
|
+
custom MCP client).
|
|
273
|
+
|
|
274
|
+
### Added
|
|
275
|
+
|
|
276
|
+
- **`auto` MCP tool** — the flagship single-shot pipeline (scout → cherry
|
|
277
|
+
→ assimilate → wire → certify) as a single agent-callable tool.
|
|
278
|
+
Signature: `target`, `output`, `package`, `apply`, `on_conflict`.
|
|
279
|
+
Returns `atomadic-forge.auto/v1`.
|
|
280
|
+
- **`cherry` MCP tool** — cherry-pick manifest from a scouted repo.
|
|
281
|
+
Surgical control over which symbols get imported before assimilation.
|
|
282
|
+
Signature: `target`, `names`, `pick_all`, `only_tier`.
|
|
283
|
+
- **`finalize` MCP tool** — materialize a cherry-pick manifest into a
|
|
284
|
+
tier-organized output package, then wire and certify.
|
|
285
|
+
Signature: `target`, `output`, `package`, `cherry_manifest`, `apply`,
|
|
286
|
+
`on_conflict`. Returns `atomadic-forge.assimilate/v1`.
|
|
287
|
+
- **`iterate` MCP tool** — LLM ↔ Forge loop: intent → code →
|
|
288
|
+
tier-enforce → score → iterate until certify >= target_score.
|
|
289
|
+
Signature: `intent`, `output`, `package`, `seed_repo`,
|
|
290
|
+
`max_iterations`, `max_fix_rounds`, `target_score`, `apply`,
|
|
291
|
+
`language`. Returns `atomadic-forge.iterate/v1`.
|
|
292
|
+
- **`evolve` MCP tool** — recursive iterate; the growing package becomes
|
|
293
|
+
the seed for the next round so the LLM sees richer compositional
|
|
294
|
+
context each time. Halts on convergence, regression, stagnation, or
|
|
295
|
+
rounds cap. Signature: `intent`, `output`, `package`, `seed_repo`,
|
|
296
|
+
`rounds`, `iterations_per_round`, `target_score`,
|
|
297
|
+
`stop_on_regression`, `stagnation_threshold`, `language`. Returns
|
|
298
|
+
`atomadic-forge.evolve/v1`.
|
|
299
|
+
- Total MCP tool count: **34** (was 29).
|
|
300
|
+
|
|
301
|
+
### Docs updated
|
|
302
|
+
|
|
303
|
+
- `README.md` — "From spaghetti to shippable in one MCP call" headline
|
|
304
|
+
section; updated tool count to 34.
|
|
305
|
+
- `docs/AGENTS_GUIDE.md` — "The transmuter" section with trigger map,
|
|
306
|
+
argument shapes, and four-tier integration ladder.
|
|
307
|
+
- `docs/COMMANDS.md` — MCP equivalents table for all five pipeline tools,
|
|
308
|
+
including return schemas.
|
|
309
|
+
- `docs/01-getting-started.md` — "From any repo to shippable in one call"
|
|
310
|
+
MCP example section.
|
|
311
|
+
- `docs/04-llm-loops.md` — "MCP tool usage" section for `iterate` and
|
|
312
|
+
`evolve` with full parameter reference.
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## Unreleased — 2026-05-04 field-report fixes + MCP registry hardening
|
|
317
|
+
|
|
318
|
+
### Fixed
|
|
319
|
+
|
|
320
|
+
- **`enforce` destination path** — the absorb pipeline now correctly nests
|
|
321
|
+
emitted files under `src/<pkg>/aN_*/` instead of `<pkg>/aN_*/` when the
|
|
322
|
+
output directory has an `src/` wrapper. Fixes the most-reported field
|
|
323
|
+
report from teams absorbing into an existing `src/` layout.
|
|
324
|
+
- **`dedup` defensive caps** — `dedup_engine` now enforces
|
|
325
|
+
`DEDUP_MAX_FILES = 5000` and `DEDUP_MAX_DUPLICATES_PER_GROUP = 64` to
|
|
326
|
+
prevent unbounded corpus walks on very large monorepos. The truncated
|
|
327
|
+
result is flagged with a `"max_files cap reached"` note so callers know
|
|
328
|
+
to scope down or raise the cap.
|
|
329
|
+
- **pytest parser regression** — test-detection in `certify` no longer
|
|
330
|
+
misclassifies parametrized `@pytest.mark.*` test stubs as non-test code.
|
|
331
|
+
Covered by new regression tests.
|
|
332
|
+
|
|
333
|
+
### Improved
|
|
334
|
+
|
|
335
|
+
- **29 "Use this when:" trigger prefixes** — every tool in the MCP
|
|
336
|
+
`TOOLS` registry now starts with a one-line `"Use this when: …"` phrase
|
|
337
|
+
so agent tool-selection systems can pick the right tool without reading
|
|
338
|
+
the full description. Applies to all 29 tools: `recon`, `wire`,
|
|
339
|
+
`certify`, `enforce`, `audit_list`, `auto_plan`, `auto_step`,
|
|
340
|
+
`auto_apply`, `context_pack`, `preflight_change`, `score_patch`,
|
|
341
|
+
`select_tests`, `rollback_plan`, `explain_repo`, `adapt_plan`,
|
|
342
|
+
`compose_tools`, `load_policy`, `why_did_this_change`,
|
|
343
|
+
`what_failed_last_time`, `list_recipes`, `get_recipe`,
|
|
344
|
+
`worktree_status`, `trust_gate_response`, `exported_api_check`,
|
|
345
|
+
`emergent_scan`, `synergy_scan`, `doctor`, `sidecar_validate`,
|
|
346
|
+
`manifest_diff`.
|
|
347
|
+
|
|
348
|
+
### Coming next (Round 1 hardening — landing now)
|
|
349
|
+
|
|
350
|
+
- Broader dispatcher `except` clause to prevent raw Python tracebacks
|
|
351
|
+
from escaping the MCP boundary on unexpected error types.
|
|
352
|
+
- Explicit JSON serializer for non-serializable MCP tool results.
|
|
353
|
+
- `score_patch` returns `REFINE` (not `PASS`) on empty or malformed diff
|
|
354
|
+
input.
|
|
355
|
+
- `dedup` double-walk fix — the corpus walker no longer counts the same
|
|
356
|
+
path twice when symlinks resolve to the same inode.
|
|
357
|
+
- Backslash path normalization — Windows paths from `worktree_status` are
|
|
358
|
+
now forward-slash normalized before being returned to MCP clients.
|
|
359
|
+
- Contract tests covering all five fixes above.
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## 0.7.0 — Pricing v4 + Founder's Pack live
|
|
364
|
+
|
|
365
|
+
Forge Standard's monetization layer goes live. Two-product roadmap (Standard
|
|
366
|
+
mature + Deluxe in active development) is published; only Standard is sold
|
|
367
|
+
today, Deluxe holds until its catalog has real exclusive tools.
|
|
368
|
+
|
|
369
|
+
### Added
|
|
370
|
+
|
|
371
|
+
- **Forge Standard tier ladder** — Free / Basic $19 / Dev $39 / Pro $99/user /
|
|
372
|
+
Enterprise (from $2,500/mo). Yearly billing saves 2 months.
|
|
373
|
+
- **Atomadic Lifetime Founder** — $999 one-time, first 25 only. Lifetime Forge
|
|
374
|
+
Standard Pro + Lifetime AAAA-Nexus Pro + Lifetime Forge Deluxe (when launched)
|
|
375
|
+
+ every future Atomadic product. Numbered master keys F001–F025.
|
|
376
|
+
- **Prepaid call packs** — $25 / $100 / $500 / $2,500 with up to 50% bonus
|
|
377
|
+
credits for higher tiers; subscribers get an additional 25% off.
|
|
378
|
+
- **x402 PAYMENT-REQUIRED** on `forge.atomadic.tech/mcp` — pay-per-call
|
|
379
|
+
pricing per tool class ($0.001 reads → $0.25 mutating).
|
|
380
|
+
- **`forge-auth-worker`** — `checkout.session.completed` webhook now mints
|
|
381
|
+
numbered master keys for Founder's Pack purchases and credits buyers'
|
|
382
|
+
ledgers for credit-pack purchases.
|
|
383
|
+
- **Site surfaces** — new `/pricing` page (5-tier ladder + Founder's Pack +
|
|
384
|
+
prepaid packs), `/subscribe` redirects to `/pricing`, `/account` shows
|
|
385
|
+
Founder badge + dual MCP config snippets (hosted HTTP + local stdio).
|
|
386
|
+
- **`COMMERCIAL_LICENSE.md`** — explicit BSL→commercial conversion paths
|
|
387
|
+
for procurement teams.
|
|
388
|
+
- **Plan type expansion** in `forge-auth-worker` — added v4 plan names
|
|
389
|
+
(`basic`, `dev`, `pro`) and `forge_founder_lifetime` to ForgePlan + the
|
|
390
|
+
KNOWN_PLANS allow-list. Legacy v1 plans (`starter`, `founding`,
|
|
391
|
+
`professional`, `enterprise`) remain valid for existing customers.
|
|
392
|
+
|
|
393
|
+
### Status
|
|
394
|
+
|
|
395
|
+
- Forge **Deluxe** subscription tier and `/deluxe/mcp` are *live but not
|
|
396
|
+
publicly listed* — endpoint works for Founder keys (alpha access), public
|
|
397
|
+
pricing page does not advertise it. Listing waits until Deluxe has 5+
|
|
398
|
+
exclusive tools beyond Standard.
|
|
399
|
+
|
|
400
|
+
## Unreleased
|
|
401
|
+
|
|
402
|
+
### Added
|
|
403
|
+
|
|
404
|
+
- `forge worktree status` and MCP `worktree_status` give agents a
|
|
405
|
+
pre-edit checkout report: git root, branch, upstream drift, dirty
|
|
406
|
+
files, remotes, version surfaces, resolved `forge` command, stale
|
|
407
|
+
install detection, and concrete recommendations.
|
|
408
|
+
|
|
409
|
+
### Improved
|
|
410
|
+
|
|
411
|
+
- `context-pack` accepts `--focus`, `--intent`, and repeatable
|
|
412
|
+
`--file` arguments. Targeted packs add file context, preflight
|
|
413
|
+
results, selected tests, and concrete next-step suggestions while
|
|
414
|
+
preserving the original first-call orientation fields.
|
|
415
|
+
- MCP `context_pack` accepts the same `focus`, `intent`, and `files`
|
|
416
|
+
arguments as the CLI.
|
|
417
|
+
- `tools/list` now reports Forge version and server source path so
|
|
418
|
+
agents can diagnose stale MCP hosts without guessing.
|
|
419
|
+
- `forge mcp doctor` now includes Python executable, resolved
|
|
420
|
+
`forge` command path, source module paths, and a recommended
|
|
421
|
+
`python -m atomadic_forge mcp serve` config.
|
|
422
|
+
- `forge explain-repo` now computes repo purpose/scout/wire/certify
|
|
423
|
+
context before calling the a1 explainer, matching the MCP path.
|
|
424
|
+
- Recipe listing JSON now includes `recipe_count`, and the human CLI
|
|
425
|
+
list no longer truncates descriptions.
|
|
426
|
+
- Synced `atomadic_forge.__version__` and README current-version
|
|
427
|
+
snippets with the published `0.6.1` package metadata.
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## 0.6.1 - MCP registry publication metadata
|
|
432
|
+
|
|
433
|
+
Patch release for MCP registry publication metadata. The package
|
|
434
|
+
version is `0.6.1`; source docs and runtime version surfaces should
|
|
435
|
+
report the same line.
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
3
439
|
## 0.6.0 - Frontier features: dedup, budget, memory, swarm hiring, Ling-2.6-1T
|
|
4
440
|
|
|
5
441
|
Major minor — five new capabilities cherry-picked from forge-deluxe-seed
|