atomadic-forge 0.53.0__tar.gz → 0.56.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.53.0 → atomadic_forge-0.56.0}/.github/workflows/metrics-auto-regen.yml +6 -4
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/workflows/publish-on-tag.yml +1 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/CHANGELOG.md +178 -0
- {atomadic_forge-0.53.0/src/atomadic_forge.egg-info → atomadic_forge-0.56.0}/PKG-INFO +22 -13
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/README.md +21 -12
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/AGENTS_GUIDE.md +22 -4
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/COMMANDS.md +122 -2
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/FORMALIZATION.md +2 -2
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/IDE_INTEGRATION.md +2 -2
- atomadic_forge-0.56.0/docs/MCP_TOOLS.md +237 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/RECEIPT.md +2 -2
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/pyproject.toml +1 -1
- atomadic_forge-0.56.0/src/atomadic_forge/a1_at_functions/capability_scout.py +142 -0
- atomadic_forge-0.56.0/src/atomadic_forge/a1_at_functions/dead_code_check.py +160 -0
- atomadic_forge-0.56.0/src/atomadic_forge/a1_at_functions/doc_auto_update.py +543 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/forge_metrics.py +16 -1
- atomadic_forge-0.56.0/src/atomadic_forge/a1_at_functions/harvest_concept_bridge.py +222 -0
- atomadic_forge-0.56.0/src/atomadic_forge/a1_at_functions/maintainability_index.py +181 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +212 -6
- atomadic_forge-0.56.0/src/atomadic_forge/a1_at_functions/surface_gap_check.py +186 -0
- atomadic_forge-0.56.0/src/atomadic_forge/a1_at_functions/wire_stubs_gen.py +418 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_metrics_feature.py +23 -1
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +393 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0/src/atomadic_forge.egg-info}/PKG-INFO +22 -13
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge.egg-info/SOURCES.txt +15 -0
- atomadic_forge-0.56.0/tests/test_capability_scout.py +84 -0
- atomadic_forge-0.56.0/tests/test_dead_code_check.py +88 -0
- atomadic_forge-0.56.0/tests/test_doc_auto_update.py +183 -0
- atomadic_forge-0.56.0/tests/test_harvest_concept_bridge.py +87 -0
- atomadic_forge-0.56.0/tests/test_maintainability_index.py +64 -0
- atomadic_forge-0.56.0/tests/test_surface_gap_check.py +78 -0
- atomadic_forge-0.56.0/tests/test_wire_stubs_gen.py +63 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/FUNDING.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/actions/forge-action/README.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/actions/forge-action/action.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/dependabot.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/pull_request_template.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/workflows/ci.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/workflows/customer-refactor.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/workflows/forge-self-certify.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/workflows/mcp-registry-publish.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/workflows/metrics-drift.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/workflows/release-readiness.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/workflows/release.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/workflows/surface-drift.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/.github/workflows/uptime.yml +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/ARCHITECTURE.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/CONTRIBUTING.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/LICENSE +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/MANIFEST.in +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/SECURITY.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/assets/Atomadic-Forge-01.png +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/01-getting-started.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/02-commands.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/03-tutorial.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/04-llm-loops.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/05-faq.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/AIR_GAPPED.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/CI_CD.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/CODEX_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/FIRST_10_MINUTES.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/HIVE_PRIMITIVES.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/HIVE_STATUS.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/LANDSCAPE.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/MARKET_POSITIONING.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/MIGRATION.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/MULTI_REPO.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/PROVIDERS.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/README.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/RELAY_PROTOCOL.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/RELEASE_CHECKLIST.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/RELEASE_MESSAGING.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/ROADMAP.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/SHOWCASE.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/SIDECAR.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/STUDIO.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/V0.46.0_JUSTIFICATION_REPORT.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/V0.47.0_SELF_TEST_REPORT.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/WHY_NOW.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/WORLD_COLLISION.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/INDEX.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/absorb.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/audit.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/chat.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/commandsmith.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/config.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/create.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/demo.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/emergent-swarm.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/emergent-then-synergy.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/emergent.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/enhancement.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/evolve-then-iterate.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/evolve.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/feature-then-emergent.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/guard-install.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/handoff.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/harvest.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/hive.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/iterate.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/materialize.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/metrics.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/recon-swarm.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/relay.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/surface.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/synergy-then-emergent.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/synergy.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/welcome.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/commands/wisdom.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/compliance/CS-1.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/compliance/SR_11-7_MAPPING.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/tutorials/01-quickstart.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/tutorials/02-your-first-package.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/tutorials/03-the-five-tier-law.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/tutorials/04-plug-in-llms.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/tutorials/05-multi-repo-absorb.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/docs/tutorials/06-javascript-quickstart.md +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/setup.cfg +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/__init__.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/__main__.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/materialize_types.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/response_enrichment.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/welcome_constants.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/call_graph.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/custom_provider_client.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/git_churn.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/handoff_builder.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/harvest_absorb.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/hive_io.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/lifetime_savings.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/polyglot_classify.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/polyglot_imports.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/polyglot_surface.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/response_enricher.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/scaffold_polyglot.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/smell_scan.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/welcome_narrator.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wisdom_io.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/nexus_client.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/absorb_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/create_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.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.53.0 → atomadic_forge-0.56.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.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/emergent_swarm.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/hive_sync.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/materialize_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/mcp_server.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/verify_umbrella.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/welcome_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/__init__.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/_registry.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/absorb.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/audit.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/chat.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/commandsmith.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/config_cmd.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/create.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/demo.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/emergent.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/emergent_swarm.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/enhancement.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/evolve.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/guard_install.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/handoff.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/harvest.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/hive.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/iterate.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/materialize.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/metrics.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/recon_swarm.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/relay.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/surface.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/synergy.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/welcome.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/wisdom.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge.egg-info/requires.txt +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_aaaa_nexus_client.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_agent_hire_protocol.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_agent_plan.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_agent_plan_pkg_label.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_agent_summary.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_audit_verb.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_body_extractor_repairs.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_call_graph_summary.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_card_renderer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_certify_operational_axis.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_chat.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_classify_tier.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_classify_tier_ast_signals.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_cli_smoke.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_cli_swarm_aliases.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_codex_5_complete.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_codex_6_enforce_polyglot.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_commandsmith.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_compiler_feedback.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_compliance_checker.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_config.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_copilots_copilot.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_create_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_cs1_renderer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_custom_provider.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_dedup_engine.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_demo.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_emergent_compose.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_emergent_signature_extract.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_emergent_synthesize_imports.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_enhancement_proposal.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_error_codes.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_error_hints.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_evolve_js.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_exported_api_check.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_forge_action.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_forge_auth_a1.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_forge_auth_a2.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_forge_enforce.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_generation_quality.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_git_churn.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_handoff.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_hierarchical_memory.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_hive_sync.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_ignore_and_docs.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_import_smoke.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_iterate_evolve.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_js_certify.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_js_parser.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_js_recon.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_js_wire.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_lineage_chain.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_ling_provider.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_local_signer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_lsp_protocol.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_manifest_diff.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_materialize_feature.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_mcp_lazy_bootstrap.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_mcp_protocol.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_nexus_bridge.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_ollama_client.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_pipeline.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_plan_apply.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_polyglot_cli_mcp.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_polyglot_full_pipeline.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_polyglot_hardening.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_polyglot_swift_kotlin_go.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_polyglot_symbol_parity.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_pre_audit_smoke.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_precommit_hooks.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_progress_reporter.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_receipt_emitter.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_receipt_schema.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_receipt_signer.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_response_enricher.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_roi_calculator.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_sbom_cmd_text_summary.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_sbom_emitter.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_scaffold.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_sidecar.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_sidecar_validate.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_smell_score_formula.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_stagnation.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_stub_detector.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_surface_export.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_synergy.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_test_runner.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_tier_init_rebuild.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_trust_gate_response.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_verify_suggested_recipe.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_welcome.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_welcome_enhancements.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_whoami_cmd.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_wire_certify.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_wire_suggest_repairs.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_wire_type_checking.py +0 -0
- {atomadic_forge-0.53.0 → atomadic_forge-0.56.0}/tests/test_wisdom.py +0 -0
|
@@ -89,14 +89,16 @@ jobs:
|
|
|
89
89
|
p.write_text(json.dumps(d, indent=2, sort_keys=True) + "\n")
|
|
90
90
|
PY
|
|
91
91
|
fi
|
|
92
|
+
- name: Auto-update docs from metrics
|
|
93
|
+
run: forge doc-update || true
|
|
92
94
|
- name: Commit if drifted
|
|
93
95
|
run: |
|
|
94
96
|
git config user.name "atomadic-bot"
|
|
95
97
|
git config user.email "bot@atomadic.tech"
|
|
96
|
-
if git diff --quiet -- forge_metrics.json; then
|
|
97
|
-
echo "metrics already current — no commit"
|
|
98
|
+
if git diff --quiet -- forge_metrics.json README.md CHANGELOG.md; then
|
|
99
|
+
echo "metrics and docs already current — no commit"
|
|
98
100
|
exit 0
|
|
99
101
|
fi
|
|
100
|
-
git add forge_metrics.json
|
|
101
|
-
git commit -m "chore(metrics): auto-regenerate
|
|
102
|
+
git add forge_metrics.json README.md CHANGELOG.md
|
|
103
|
+
git commit -m "chore(metrics): auto-regenerate metrics + docs [skip ci]"
|
|
102
104
|
git push origin main
|
|
@@ -63,6 +63,7 @@ jobs:
|
|
|
63
63
|
passed=$(echo "${ptout:-}" | grep -oE '[0-9]+ passed' | head -1 | grep -oE '[0-9]+' || echo 0)
|
|
64
64
|
echo "pytest passed count: ${passed:-0}"
|
|
65
65
|
forge metrics --apply --tests-passing "${passed:-0}" || true
|
|
66
|
+
forge doc-update || true
|
|
66
67
|
v=$(jq -r .package_version forge_metrics.json 2>/dev/null || echo "?")
|
|
67
68
|
echo "forge_metrics.json regenerated at tag time (version: $v)"
|
|
68
69
|
exit 0 # always succeed — never block the release
|
|
@@ -2,6 +2,184 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## v0.56.0 — 2026-05-08 — Zero-token automation: auto-wire, doc-drift, lean preservation
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
**`apply_wire_stubs` — direct MCP+CLI injection** (zero copy-paste wiring)
|
|
10
|
+
|
|
11
|
+
`wire_stubs_gen.apply_wire_stubs()` injects a new MCP handler, both explore and
|
|
12
|
+
audit dispatch elifs, updated enum lists, a CLI command, and a test skeleton
|
|
13
|
+
directly into the correct files. No manual copy-paste required.
|
|
14
|
+
|
|
15
|
+
- `forge wire-stubs <module> <function> --apply [--dry-run]`
|
|
16
|
+
- MCP: `audit(action='wire_stubs')` with `apply=true`
|
|
17
|
+
|
|
18
|
+
**`forge auto-wire` — batch auto-wiring of all surface gaps**
|
|
19
|
+
|
|
20
|
+
One command: `surface-gaps` → `apply_wire_stubs` for every unwired a1 entry
|
|
21
|
+
point, with full dry-run support.
|
|
22
|
+
|
|
23
|
+
- `forge auto-wire [--top-n N] [--dry-run] [--tools explore,audit]`
|
|
24
|
+
- MCP: `audit(action='auto_wire')`
|
|
25
|
+
|
|
26
|
+
**`forge doc-update` — zero-LLM-token documentation regeneration**
|
|
27
|
+
|
|
28
|
+
Reads `forge_metrics.json` + live MCP/CLI source, rewrites bounded sections in
|
|
29
|
+
README, CHANGELOG, WHITEPAPER, IDE_INTEGRATION, and AGENTS_GUIDE.
|
|
30
|
+
|
|
31
|
+
- `forge doc-update [--sections readme,changelog,extended_docs] [--dry-run]`
|
|
32
|
+
- MCP: `audit(action='doc_update')`
|
|
33
|
+
- Integrated into `metrics-auto-regen.yml` and `publish-on-tag.yml`
|
|
34
|
+
- Schema: `atomadic-forge.doc_auto_update/v1`
|
|
35
|
+
|
|
36
|
+
**`forge doc-drift` — CI-gateable doc staleness detector**
|
|
37
|
+
|
|
38
|
+
Scans docs for stale MCP tool/action/test counts vs live `forge_metrics.json`.
|
|
39
|
+
Exits 1 when drift is found — suitable as a pre-push or CI gate.
|
|
40
|
+
|
|
41
|
+
- `forge doc-drift [--json]`
|
|
42
|
+
- MCP: `audit(action='doc_drift')`
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
|
|
46
|
+
**`forge_metrics.py` — lean_theorems preservation**
|
|
47
|
+
|
|
48
|
+
`forge metrics --apply` no longer zeroes the lean_theorems count when the proof
|
|
49
|
+
corpus is unavailable. Prior count is preserved whenever `found=False` but the
|
|
50
|
+
existing `forge_metrics.json` has `count > 0`. Same preservation for
|
|
51
|
+
`tests_passing` across local runs.
|
|
52
|
+
|
|
53
|
+
**16-item documentation discrepancy audit resolved**
|
|
54
|
+
|
|
55
|
+
- WHITEPAPER: 5× "46 MCP tools" → "10 MCP tools dispatching 79 actions"
|
|
56
|
+
- `docs/IDE_INTEGRATION.md`: "66 tools" → "10 tools dispatching 79 actions"
|
|
57
|
+
- `docs/MCP_TOOLS.md`: created (fixed broken README link)
|
|
58
|
+
- README, AGENTS_GUIDE: pipeline terminology `scout→assimilate` → `recon→cherry→wire`
|
|
59
|
+
- AGENTS.md: removed non-existent `launch/forge/GOLDEN_PATH-20260428.md` path
|
|
60
|
+
- `docs/RECEIPT.md`: `forge_version: "0.2.2"` → `"0.56.0"`
|
|
61
|
+
- `docs/FORMALIZATION.md`: `post-v0.14` → `post-v0.55.0`
|
|
62
|
+
- `tests/README.md`: created with tier map, fixture conventions, run commands
|
|
63
|
+
|
|
64
|
+
### Metrics
|
|
65
|
+
|
|
66
|
+
| Metric | v0.55.x → v0.56.0 |
|
|
67
|
+
|--------|-------------------|
|
|
68
|
+
| MCP actions | 76 → **79** |
|
|
69
|
+
| CLI verbs | 80 → **83** |
|
|
70
|
+
| Source files | 221 → **222** |
|
|
71
|
+
| Tests | 1,465 → **1,560** |
|
|
72
|
+
| Certify score | 100/100 |
|
|
73
|
+
| Wire violations | 0 |
|
|
74
|
+
|
|
75
|
+
## v0.55.0 — 2026-05-08 — Auto-wire pipeline, doc-update automation
|
|
76
|
+
|
|
77
|
+
### Added
|
|
78
|
+
|
|
79
|
+
**`apply_wire_stubs` — direct MCP+CLI injection** (zero copy-paste wiring)
|
|
80
|
+
|
|
81
|
+
`wire_stubs_gen.apply_wire_stubs()` injects a new MCP handler, both explore and
|
|
82
|
+
audit dispatch elifs, updated enum lists, a CLI command, and a test skeleton
|
|
83
|
+
directly into the correct files — no manual copy-paste required.
|
|
84
|
+
|
|
85
|
+
- `forge wire-stubs <module> <function> --apply`
|
|
86
|
+
- `forge wire-stubs <module> <function> --dry-run`
|
|
87
|
+
|
|
88
|
+
**`forge auto-wire` — batch auto-wiring of all surface gaps**
|
|
89
|
+
|
|
90
|
+
New CLI command that runs `surface-gaps` then calls `apply_wire_stubs` for
|
|
91
|
+
every unwired a1 entry point in one shot.
|
|
92
|
+
|
|
93
|
+
- `forge auto-wire [--top-n N] [--dry-run] [--tools explore,audit]`
|
|
94
|
+
- MCP: `audit(action='auto_wire')`
|
|
95
|
+
|
|
96
|
+
**`doc_auto_update` — zero-LLM-token documentation regeneration**
|
|
97
|
+
|
|
98
|
+
New `a1_at_functions/doc_auto_update.py` reads `forge_metrics.json` and live
|
|
99
|
+
MCP/CLI source, then rewrites bounded sections in README.md and CHANGELOG.md
|
|
100
|
+
programmatically — no LLM needed.
|
|
101
|
+
|
|
102
|
+
- `forge doc-update [--sections readme,changelog] [--dry-run]`
|
|
103
|
+
- MCP: `audit(action='doc_update')`
|
|
104
|
+
- Integrated into `metrics-auto-regen.yml` and `publish-on-tag.yml` CI pipelines
|
|
105
|
+
- Schema: `atomadic-forge.doc_auto_update/v1`
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
## v0.54.0 — 2026-05-07 — Synthesis pipeline: gap analysis, TAU_TRUST bridge, auto-wiring tools
|
|
109
|
+
|
|
110
|
+
### Added
|
|
111
|
+
|
|
112
|
+
**`surface_gaps` — a1 MCP/CLI coverage gap finder** (pipeline gap analysis)
|
|
113
|
+
|
|
114
|
+
New `a1_at_functions/surface_gaps.py` with `find_surface_gaps()`. AST-walks the
|
|
115
|
+
a1 tier and compares entry points against registered MCP actions and CLI verbs,
|
|
116
|
+
returning a list of functions with no MCP coverage, no CLI coverage, or both.
|
|
117
|
+
|
|
118
|
+
- `forge surface-gaps`
|
|
119
|
+
- MCP: `explore(action='surface_gaps')`, `audit(action='surface_gaps')`
|
|
120
|
+
- Schema: `atomadic-forge.surface_gaps/v1`
|
|
121
|
+
|
|
122
|
+
**`wire_stubs` — auto-wiring scaffold generator** (pipeline gap analysis)
|
|
123
|
+
|
|
124
|
+
New `a1_at_functions/wire_stubs.py` with `generate_wire_stubs()`. Given a module
|
|
125
|
+
path and function name, emits a ready-to-paste MCP handler block, a CLI stub
|
|
126
|
+
entry, and a test skeleton — removing the manual plumbing step for every new
|
|
127
|
+
a1 function.
|
|
128
|
+
|
|
129
|
+
- `forge wire-stubs <module> <function>`
|
|
130
|
+
- MCP: `audit(action='wire_stubs')`
|
|
131
|
+
- Schema: `atomadic-forge.wire_stubs/v1`
|
|
132
|
+
|
|
133
|
+
**`capability_scout` — GitHub harvest target search** (pipeline gap analysis)
|
|
134
|
+
|
|
135
|
+
New `a1_at_functions/capability_scout.py` with `search_capability_repos()`.
|
|
136
|
+
Accepts one or more freeform query strings and returns ranked GitHub repositories
|
|
137
|
+
suitable as harvest candidates, enriched with star count, last-push date, and
|
|
138
|
+
primary language.
|
|
139
|
+
|
|
140
|
+
- `forge capability-scout --queries "q1,q2"`
|
|
141
|
+
- MCP: `explore(action='capability_scout')`
|
|
142
|
+
- Schema: `atomadic-forge.capability_scout/v1`
|
|
143
|
+
|
|
144
|
+
**`dead_code` — AST-walk dead symbol detector** (vulture synthesis)
|
|
145
|
+
|
|
146
|
+
New `a1_at_functions/dead_code.py` with `detect_dead_symbols()`. Walks the
|
|
147
|
+
package AST using vulture and returns symbols that are defined but never
|
|
148
|
+
referenced, grouped by tier with confidence scores.
|
|
149
|
+
|
|
150
|
+
- `forge dead-code`
|
|
151
|
+
- MCP: `explore(action='dead_code')`, `audit(action='dead_code')`
|
|
152
|
+
- Schema: `atomadic-forge.dead_code/v1`
|
|
153
|
+
|
|
154
|
+
**`maintainability` — Maintainability Index per module** (radon synthesis)
|
|
155
|
+
|
|
156
|
+
New `a1_at_functions/maintainability.py` with `compute_maintainability()`.
|
|
157
|
+
Runs radon MI analysis across every source module and returns per-file grades
|
|
158
|
+
(A/B/C/D) with raw MI score, ranked from least to most maintainable.
|
|
159
|
+
|
|
160
|
+
- `forge maintainability`
|
|
161
|
+
- MCP: `explore(action='maintainability')`, `audit(action='maintainability')`
|
|
162
|
+
- Schema: `atomadic-forge.maintainability/v1`
|
|
163
|
+
|
|
164
|
+
**`concept_bridge` — TAU_TRUST harvest bridge** (TAU_TRUST bridge)
|
|
165
|
+
|
|
166
|
+
New `a1_at_functions/concept_bridge.py` with `bridge_harvest_concepts()`.
|
|
167
|
+
Reads a `harvest.json` produced by `forge harvest`, filters candidates whose
|
|
168
|
+
trust score falls below TAU_TRUST (1820/1823), and converts each into an
|
|
169
|
+
actionable synthesis plan with a recommended absorb sequence and preflight
|
|
170
|
+
checklist.
|
|
171
|
+
|
|
172
|
+
- `forge concept-bridge --harvest-json path/to/harvest.json`
|
|
173
|
+
- MCP: `explore(action='concept_bridge')`, `audit(action='concept_bridge')`
|
|
174
|
+
- Schema: `atomadic-forge.concept_bridge/v1`
|
|
175
|
+
|
|
176
|
+
### metrics
|
|
177
|
+
|
|
178
|
+
- CLI verbs: 80 (+6)
|
|
179
|
+
- MCP actions: 76 (+10)
|
|
180
|
+
- Tests: 1465 (+42 over v0.53.0)
|
|
181
|
+
- Source files: 221 (+6)
|
|
182
|
+
|
|
5
183
|
## v0.53.0 — 2026-05-07 — Harvest synthesis: call-graph-summary, git churn, token budget
|
|
6
184
|
|
|
7
185
|
### feat(synthesis): three new a1 capabilities absorbed from harvest pipeline
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atomadic-forge
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.56.0
|
|
4
4
|
Summary: Atomadic Forge — absorb, enforce, emerge. Polyglot (Python · JavaScript/TypeScript · Rust · Go · Swift · Kotlin) architecture guardian for AI-generated code.
|
|
5
5
|
Author: Atomadic
|
|
6
6
|
License-Expression: BUSL-1.1
|
|
@@ -121,7 +121,7 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
121
121
|
|
|
122
122
|
| Command | What it does |
|
|
123
123
|
|---------|-------------|
|
|
124
|
-
| `forge auto` | **Flagship.**
|
|
124
|
+
| `forge auto` | **Flagship.** recon → cherry → wire → certify → receipt |
|
|
125
125
|
| `forge recon` | Scan a repo — classify every symbol, show tier distribution |
|
|
126
126
|
| `forge wire` | Detect upward-import violations |
|
|
127
127
|
| `forge certify` | Architecture score (0-100): docs, tests, tier layout, imports |
|
|
@@ -136,9 +136,17 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
136
136
|
|---------|-------------|
|
|
137
137
|
| `forge smell` | Code smell scan: cyclomatic complexity, long functions, duplicates |
|
|
138
138
|
| `forge call-graph` | AST call graph for any symbol |
|
|
139
|
+
| `forge call-graph-summary` | Whole-package call-graph portfolio — orphans, fan-in hotspots, max depth |
|
|
140
|
+
| `forge churn` | File-level git commit frequency — hotspot and stable files |
|
|
139
141
|
| `forge cna-check` | Compose-Not-Add — flag duplicates before writing |
|
|
140
142
|
| `forge trust-gate` | LLM response hallucination detector |
|
|
141
143
|
| `forge preflight` | Pre-edit guardrail: tier + import + scope check |
|
|
144
|
+
| `forge surface-gaps` | Find a1 entry points missing MCP or CLI coverage |
|
|
145
|
+
| `forge wire-stubs <module> <function>` | Generate MCP handler + CLI stub + test skeleton for any unwired a1 function |
|
|
146
|
+
| `forge capability-scout --queries "q1,q2"` | Search GitHub for harvest target repos |
|
|
147
|
+
| `forge dead-code` | AST-walk dead symbol detector (vulture synthesis) |
|
|
148
|
+
| `forge maintainability` | Maintainability Index per module (radon MI: A/B/C/D ranking) |
|
|
149
|
+
| `forge concept-bridge --harvest-json path/to/harvest.json` | Convert harvest candidates below TAU_TRUST into actionable synthesis plans |
|
|
142
150
|
|
|
143
151
|
### Composition & Multi-Repo
|
|
144
152
|
|
|
@@ -158,11 +166,11 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
158
166
|
| `forge plan` | Bounded execution plan with risk + rollback |
|
|
159
167
|
| `forge chat` | Terminal copilot over forge docs |
|
|
160
168
|
|
|
161
|
-
**
|
|
169
|
+
**83 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
|
|
162
170
|
|
|
163
171
|
---
|
|
164
172
|
|
|
165
|
-
## MCP Server — 10 Tools,
|
|
173
|
+
## MCP Server — 10 Tools, 79 Actions
|
|
166
174
|
|
|
167
175
|
Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aider, Devin, or any MCP-compatible agent:
|
|
168
176
|
|
|
@@ -177,13 +185,13 @@ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aide
|
|
|
177
185
|
}
|
|
178
186
|
```
|
|
179
187
|
|
|
180
|
-
**10 tools,
|
|
188
|
+
**10 tools, 76 actions locally.** All legacy tool names redirect automatically — existing callers keep working. Deployed Worker at [forge.atomadic.tech/mcp](https://forge.atomadic.tech/mcp). Listed in the [MCP Official Registry](https://registry.modelcontextprotocol.io/).
|
|
181
189
|
|
|
182
190
|
| Tool | Actions | What it does |
|
|
183
191
|
|------|---------|-------------|
|
|
184
192
|
| `welcome` | — | RECOMMENDED FIRST CALL: onboarding scan, score, narrative, capability tour |
|
|
185
|
-
| `explore` |
|
|
186
|
-
| `audit` |
|
|
193
|
+
| `explore` | 16 | Analyze, understand, discover — recon/explain/call_graph/call_graph_summary/smell/lineage/harvest/synergy/scan/swarm/churn/surface_gaps/capability_scout/dead_code/maintainability/concept_bridge |
|
|
194
|
+
| `audit` | 22 | Quality gates, change safety, trust |
|
|
187
195
|
| `plan` | 9 | Orient + dev utilities — context/compose/policy/recipes/generate/apply/locate/commit/scaffold |
|
|
188
196
|
| `transmute` | 3 | **FLAGSHIP** spaghetti→certified pipeline — auto/cherry/finalize |
|
|
189
197
|
| `loop` | 4 | LLM iteration loops — iterate/resume/evolve/evolve_step |
|
|
@@ -204,11 +212,12 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
|
|
|
204
212
|
|
|
205
213
|
| Metric | Value |
|
|
206
214
|
|--------|-------|
|
|
207
|
-
|
|
208
|
-
|
|
|
209
|
-
|
|
|
210
|
-
|
|
|
211
|
-
|
|
|
215
|
+
|
|
216
|
+
| MCP tools | **10 tools · 79 actions** |
|
|
217
|
+
| CLI verbs | **83** |
|
|
218
|
+
| Source files | **222** (~43K LOC) |
|
|
219
|
+
| Tests | **1476 passing** across **105 test files** |
|
|
220
|
+
| Lean4 formal proofs | not yet active |
|
|
212
221
|
| Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
|
|
213
222
|
| Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
|
|
214
223
|
| Infrastructure cost | **$5/mo** |
|
|
@@ -225,7 +234,7 @@ Forge eats its own cooking. Every CI run scores itself.
|
|
|
225
234
|
|------|-------|-------------|
|
|
226
235
|
| **Free** | $0 | OSS, 25 calls/day, read-only tools |
|
|
227
236
|
| **One-Time Refactor** | ~~$149~~ **$99** | We run `auto` on your repo -> PR targeting 100/100. One revision included. |
|
|
228
|
-
| **Starter** | $79/mo | All
|
|
237
|
+
| **Starter** | $79/mo | All 10 tools (76 actions), 5k calls/mo, signed receipts, custom recipes |
|
|
229
238
|
| **Pro** | $249/mo | + notarization, compliance attestations, cross-repo telemetry |
|
|
230
239
|
| **Founding Member** | $999/yr | Everything. Forever. First 25 only. |
|
|
231
240
|
| **Enterprise** | Custom | BSL commercial license, SSO, self-host, SLA |
|
|
@@ -89,7 +89,7 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
89
89
|
|
|
90
90
|
| Command | What it does |
|
|
91
91
|
|---------|-------------|
|
|
92
|
-
| `forge auto` | **Flagship.**
|
|
92
|
+
| `forge auto` | **Flagship.** recon → cherry → wire → certify → receipt |
|
|
93
93
|
| `forge recon` | Scan a repo — classify every symbol, show tier distribution |
|
|
94
94
|
| `forge wire` | Detect upward-import violations |
|
|
95
95
|
| `forge certify` | Architecture score (0-100): docs, tests, tier layout, imports |
|
|
@@ -104,9 +104,17 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
104
104
|
|---------|-------------|
|
|
105
105
|
| `forge smell` | Code smell scan: cyclomatic complexity, long functions, duplicates |
|
|
106
106
|
| `forge call-graph` | AST call graph for any symbol |
|
|
107
|
+
| `forge call-graph-summary` | Whole-package call-graph portfolio — orphans, fan-in hotspots, max depth |
|
|
108
|
+
| `forge churn` | File-level git commit frequency — hotspot and stable files |
|
|
107
109
|
| `forge cna-check` | Compose-Not-Add — flag duplicates before writing |
|
|
108
110
|
| `forge trust-gate` | LLM response hallucination detector |
|
|
109
111
|
| `forge preflight` | Pre-edit guardrail: tier + import + scope check |
|
|
112
|
+
| `forge surface-gaps` | Find a1 entry points missing MCP or CLI coverage |
|
|
113
|
+
| `forge wire-stubs <module> <function>` | Generate MCP handler + CLI stub + test skeleton for any unwired a1 function |
|
|
114
|
+
| `forge capability-scout --queries "q1,q2"` | Search GitHub for harvest target repos |
|
|
115
|
+
| `forge dead-code` | AST-walk dead symbol detector (vulture synthesis) |
|
|
116
|
+
| `forge maintainability` | Maintainability Index per module (radon MI: A/B/C/D ranking) |
|
|
117
|
+
| `forge concept-bridge --harvest-json path/to/harvest.json` | Convert harvest candidates below TAU_TRUST into actionable synthesis plans |
|
|
110
118
|
|
|
111
119
|
### Composition & Multi-Repo
|
|
112
120
|
|
|
@@ -126,11 +134,11 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
126
134
|
| `forge plan` | Bounded execution plan with risk + rollback |
|
|
127
135
|
| `forge chat` | Terminal copilot over forge docs |
|
|
128
136
|
|
|
129
|
-
**
|
|
137
|
+
**83 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
|
|
130
138
|
|
|
131
139
|
---
|
|
132
140
|
|
|
133
|
-
## MCP Server — 10 Tools,
|
|
141
|
+
## MCP Server — 10 Tools, 79 Actions
|
|
134
142
|
|
|
135
143
|
Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aider, Devin, or any MCP-compatible agent:
|
|
136
144
|
|
|
@@ -145,13 +153,13 @@ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aide
|
|
|
145
153
|
}
|
|
146
154
|
```
|
|
147
155
|
|
|
148
|
-
**10 tools,
|
|
156
|
+
**10 tools, 76 actions locally.** All legacy tool names redirect automatically — existing callers keep working. Deployed Worker at [forge.atomadic.tech/mcp](https://forge.atomadic.tech/mcp). Listed in the [MCP Official Registry](https://registry.modelcontextprotocol.io/).
|
|
149
157
|
|
|
150
158
|
| Tool | Actions | What it does |
|
|
151
159
|
|------|---------|-------------|
|
|
152
160
|
| `welcome` | — | RECOMMENDED FIRST CALL: onboarding scan, score, narrative, capability tour |
|
|
153
|
-
| `explore` |
|
|
154
|
-
| `audit` |
|
|
161
|
+
| `explore` | 16 | Analyze, understand, discover — recon/explain/call_graph/call_graph_summary/smell/lineage/harvest/synergy/scan/swarm/churn/surface_gaps/capability_scout/dead_code/maintainability/concept_bridge |
|
|
162
|
+
| `audit` | 22 | Quality gates, change safety, trust |
|
|
155
163
|
| `plan` | 9 | Orient + dev utilities — context/compose/policy/recipes/generate/apply/locate/commit/scaffold |
|
|
156
164
|
| `transmute` | 3 | **FLAGSHIP** spaghetti→certified pipeline — auto/cherry/finalize |
|
|
157
165
|
| `loop` | 4 | LLM iteration loops — iterate/resume/evolve/evolve_step |
|
|
@@ -172,11 +180,12 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
|
|
|
172
180
|
|
|
173
181
|
| Metric | Value |
|
|
174
182
|
|--------|-------|
|
|
175
|
-
|
|
176
|
-
|
|
|
177
|
-
|
|
|
178
|
-
|
|
|
179
|
-
|
|
|
183
|
+
|
|
184
|
+
| MCP tools | **10 tools · 79 actions** |
|
|
185
|
+
| CLI verbs | **83** |
|
|
186
|
+
| Source files | **222** (~43K LOC) |
|
|
187
|
+
| Tests | **1476 passing** across **105 test files** |
|
|
188
|
+
| Lean4 formal proofs | not yet active |
|
|
180
189
|
| Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
|
|
181
190
|
| Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
|
|
182
191
|
| Infrastructure cost | **$5/mo** |
|
|
@@ -193,7 +202,7 @@ Forge eats its own cooking. Every CI run scores itself.
|
|
|
193
202
|
|------|-------|-------------|
|
|
194
203
|
| **Free** | $0 | OSS, 25 calls/day, read-only tools |
|
|
195
204
|
| **One-Time Refactor** | ~~$149~~ **$99** | We run `auto` on your repo -> PR targeting 100/100. One revision included. |
|
|
196
|
-
| **Starter** | $79/mo | All
|
|
205
|
+
| **Starter** | $79/mo | All 10 tools (76 actions), 5k calls/mo, signed receipts, custom recipes |
|
|
197
206
|
| **Pro** | $249/mo | + notarization, compliance attestations, cross-repo telemetry |
|
|
198
207
|
| **Founding Member** | $999/yr | Everything. Forever. First 25 only. |
|
|
199
208
|
| **Enterprise** | Custom | BSL commercial license, SSO, self-host, SLA |
|
|
@@ -20,8 +20,8 @@ report on it:**
|
|
|
20
20
|
|
|
21
21
|
| MCP tool | Use this when |
|
|
22
22
|
|---|---|
|
|
23
|
-
| **`auto`** | Use this when: you want forge to absorb any source repo into a tier-disciplined output package in one call (
|
|
24
|
-
| **`cherry`** | Use this when: you want a cherry-pick manifest of symbols from a
|
|
23
|
+
| **`auto`** | Use this when: you want forge to absorb any source repo into a tier-disciplined output package in one call (recon → cherry → wire → certify). |
|
|
24
|
+
| **`cherry`** | Use this when: you want a cherry-pick manifest of symbols from a recon'd repo before applying — surgical control over what gets imported. |
|
|
25
25
|
| **`finalize`** | Use this when: you have a cherry-pick manifest and want to materialize it into a tier-organized output package, then wire and certify. |
|
|
26
26
|
| **`iterate`** *(CLI only today; MCP in Round 3)* | Use this when: you have an intent string and want forge to drive an LLM loop until certify >= target_score. The MCP exposure is being refactored so the **calling agent drives its own LLM** — forge supplies analytical certainty between turns instead of holding an LLM client internally. Use `forge iterate` from the CLI today. |
|
|
27
27
|
| **`evolve`** *(CLI only today; MCP in Round 3)* | Use this when: you want recursive iterate that treats prior output as seed catalog. Same Round-3 refactor as `iterate`. Use `forge evolve` from the CLI today. |
|
|
@@ -35,7 +35,7 @@ report on it:**
|
|
|
35
35
|
- `on_conflict` — `rename` (default) | `first` | `last` | `fail`
|
|
36
36
|
|
|
37
37
|
`cherry(target, *, names=None, pick_all=False, only_tier=None)`
|
|
38
|
-
- `target` — repo that was previously
|
|
38
|
+
- `target` — repo that was previously recon'd
|
|
39
39
|
- `names` — explicit list of qualnames to cherry-pick; omit for `pick_all`
|
|
40
40
|
- `pick_all=True` — cherry-pick every scouted symbol
|
|
41
41
|
- `only_tier` — restrict to one tier (e.g. `"a1_at_functions"`)
|
|
@@ -326,10 +326,18 @@ agent tool-selection can route by trigger phrase. Quick reference:
|
|
|
326
326
|
| An LLM response needs hallucination checking | `trust_gate_response` |
|
|
327
327
|
| A module's docstring promises need verification | `verify {check_exports: true}` (folds `exported_api_check`) |
|
|
328
328
|
| You want to find what a target symbol calls or is called by | `call_graph` |
|
|
329
|
+
| You want a whole-package call-graph portfolio (orphans, hotspots, max depth) | `call_graph_summary` — `explore(action='call_graph_summary')` |
|
|
330
|
+
| You want file-level git commit frequency (churn hotspots and stable files) | `churn` — `explore(action='churn')` |
|
|
329
331
|
| You want to flag complexity / long-function / duplicate-body code smells | `smell_scan` |
|
|
330
332
|
| You want to recall what prior agents learned about this repo | `wisdom recall` (or read `prior_wisdom` from `recon`) |
|
|
331
333
|
| You want to record a lesson for future agents | `wisdom record` |
|
|
332
334
|
| You're emitting or verifying the canonical tool/recipe surface | `surface emit` / `surface check` / `surface diff` |
|
|
335
|
+
| You want to find a1 functions not yet wired to MCP or CLI | `surface_gaps` — `explore(action='surface_gaps')` or `audit(action='surface_gaps')` |
|
|
336
|
+
| You want to auto-generate MCP handler + CLI stub + test for an unwired function | `wire_stubs` — `audit(action='wire_stubs')` |
|
|
337
|
+
| You want to find GitHub repos suitable as harvest targets | `capability_scout` — `explore(action='capability_scout')` |
|
|
338
|
+
| You want to identify symbols defined but never referenced | `dead_code` — `explore(action='dead_code')` or `audit(action='dead_code')` |
|
|
339
|
+
| You want Maintainability Index grades per module (A/B/C/D) | `maintainability` — `explore(action='maintainability')` or `audit(action='maintainability')` |
|
|
340
|
+
| You want to convert low-trust harvest candidates into synthesis plans | `concept_bridge` — `explore(action='concept_bridge')` or `audit(action='concept_bridge')` |
|
|
333
341
|
|
|
334
342
|
---
|
|
335
343
|
|
|
@@ -357,6 +365,8 @@ agent tool-selection can route by trigger phrase. Quick reference:
|
|
|
357
365
|
| `sidecar_validate` | | `trust_gate_response` | |
|
|
358
366
|
| `manifest_diff` | | `cna_check` (compose-not-add gate) | |
|
|
359
367
|
| `call_graph` (callers/callees) | | `smell_scan` (CC / LOC / dup) | |
|
|
368
|
+
| `call_graph_summary` (portfolio: orphans/hotspots) | | | |
|
|
369
|
+
| `churn` (git commit frequency by file) | | | |
|
|
360
370
|
| `wisdom_record` / `wisdom_query` / `wisdom_list` / `wisdom_recall` / `wisdom_promote` (since v0.13.1–v0.13.3) | | `guard_install` (4-layer immune system) | |
|
|
361
371
|
| `surface` (emit / check / diff) | | | |
|
|
362
372
|
| `nexus_identity_verify` / `nexus_federation_mint` / `nexus_authorize_action` / `nexus_sys_trust_gate` / `nexus_contract_verify` / `nexus_lineage_record` / `nexus_ratchet_register` (since v0.14.0a7) | | | |
|
|
@@ -379,6 +389,14 @@ in a loop:
|
|
|
379
389
|
| **`sidecar_validate`** | sidecar drift findings (S0000–S0007) | After authoring or editing a `.forge` sidecar file. |
|
|
380
390
|
| **`manifest_diff`** | added / removed / changed entries between two manifests | After a `commandsmith` sync or between two `certify` runs to track trajectory. |
|
|
381
391
|
| **`call_graph`** | callers / callees up to `max_depth` hops (BFS, AST-based) | Before mutating a target symbol; closes Forge's call-graph gap vs Code Pathfinder / Moderne. |
|
|
392
|
+
| **`call_graph_summary`** (`explore(action='call_graph_summary')`) | whole-package call-graph portfolio: `orphans` (unreachable symbols), `hotspots` ranked by fan-in, `max_depth`; schema `atomadic-forge.call_graph_summary/v1` | When you need a portfolio view of the entire package's call topology — which symbols are islands, which are load-bearing. CLI: `forge call-graph-summary --project <root> [--package NAME] [--top-n N] [--json]`. |
|
|
393
|
+
| **`churn`** (`explore(action='churn')`) | file-level git commit frequency: `hotspot_files`, `stable_files`, `avg_commits`, `median_commits`, `date_range`; schema `atomadic-forge.git_churn/v1` | When you want to know which files change most often (high review priority) and which are stable (safe to refactor). CLI: `forge churn --project <root> [--since '6 months ago'] [--top-n N] [--all-files] [--json]`. |
|
|
394
|
+
| **`surface_gaps`** (`explore(action='surface_gaps')` or `audit(action='surface_gaps')`) | list of a1 entry points with no MCP coverage, no CLI coverage, or both; schema `atomadic-forge.surface_gaps/v1` | Before a release cycle — find functions that are live but inaccessible through agent or CLI surfaces. Feeds directly into `wire_stubs`. CLI: `forge surface-gaps [--project <root>] [--json]`. |
|
|
395
|
+
| **`wire_stubs`** (`audit(action='wire_stubs')`) | ready-to-paste MCP handler block, CLI stub entry, and pytest skeleton for the named function; schema `atomadic-forge.wire_stubs/v1` | When `surface_gaps` reveals an unwired a1 function and you want the scaffolding generated rather than hand-authored. CLI: `forge wire-stubs <module> <function> [--apply] [--json]`. |
|
|
396
|
+
| **`capability_scout`** (`explore(action='capability_scout')`) | ranked GitHub repositories suitable as `forge harvest` candidates, enriched with star count, last-push date, and primary language; schema `atomadic-forge.capability_scout/v1` | When you need harvest target repos for a capability gap and don't have candidates yet. CLI: `forge capability-scout --queries "q1,q2" [--top-n N] [--json]`. |
|
|
397
|
+
| **`dead_code`** (`explore(action='dead_code')` or `audit(action='dead_code')`) | symbols defined but never referenced, grouped by tier with confidence scores; schema `atomadic-forge.dead_code/v1` | When `certify` is green but you suspect the codebase has accumulated unreachable symbols. CLI: `forge dead-code [--project <root>] [--min-confidence N] [--json]`. |
|
|
398
|
+
| **`maintainability`** (`explore(action='maintainability')` or `audit(action='maintainability')`) | per-module radon MI scores with letter grades (A/B/C/D), ranked lowest to highest; schema `atomadic-forge.maintainability/v1` | When `smell_scan` flags complexity issues and you want a module-level MI ranking to prioritize refactoring. CLI: `forge maintainability [--project <root>] [--min-grade B] [--json]`. |
|
|
399
|
+
| **`concept_bridge`** (`explore(action='concept_bridge')` or `audit(action='concept_bridge')`) | actionable synthesis plans for each harvest candidate below TAU_TRUST (1820/1823), with recommended absorb sequence and preflight checklist; schema `atomadic-forge.concept_bridge/v1` | After `forge harvest` — convert low-trust candidates into ready-to-execute synthesis plans instead of discarding them. CLI: `forge concept-bridge --harvest-json path/to/harvest.json [--json]`. |
|
|
382
400
|
| **`smell_scan`** | cyclomatic-complexity / long-function / duplicate-body findings + `smell_score` | When `certify` is green but maintainability is still suspect. |
|
|
383
401
|
| **`wisdom_record` / `wisdom_query` / `wisdom_list` / `wisdom_recall`** (since v0.13.1) | append entry / relevance-rank / full DB read / top-N repo-scoped recall against `.atomadic-forge/wisdom.jsonl` | Agents inherit prior lessons (`wisdom_recall`); record new ones after accepted fixes (`wisdom_record`). The 4-tool MCP surface that lets Cognition wire `WISDOM_RECORD` as a cycle action verb. |
|
|
384
402
|
| **`surface`** | emit / check / diff the canonical `surface.json` artifact | CI gate (`check`) and consumer bootstrap (`emit`); zero hand-maintained tool maps. |
|
|
@@ -397,7 +415,7 @@ always-on senior engineer beside the coding agent:
|
|
|
397
415
|
|
|
398
416
|
| Tool | Schema | Call when |
|
|
399
417
|
|---|---|---|
|
|
400
|
-
| **`context_pack`** ← *Codex-4* | `context_pack/v1` — repo purpose, pinned 5-tier law, tier_map, blockers digest, best-next-action, detected test commands, release gate, risky files, recent lineage, pinned `forge://` resources, **`prior_wisdom`** | **First call after `initialize`** — orientation bundle. One round-trip replaces 6+ separate calls. |
|
|
418
|
+
| **`context_pack`** ← *Codex-4* | `context_pack/v1` — repo purpose, pinned 5-tier law, tier_map, blockers digest, best-next-action, detected test commands, release gate, risky files, recent lineage, pinned `forge://` resources, **`prior_wisdom`**, **`token_estimate`** (payload byte length ÷ 4) | **First call after `initialize`** — orientation bundle. One round-trip replaces 6+ separate calls. Use `token_estimate` to size the payload before inserting into a context window. |
|
|
401
419
|
| **`doctor` (with `include_worktree: true`)** | `doctor/v1` + worktree fields — git root, branch, upstream drift, dirty files, remotes, version surfaces, resolved `forge` command, stale-command detection, recommendations (folds the retired `worktree_status`) | **Before editing or release work** when there are multiple checkouts, stale MCP concerns, dirty trees, or version mismatches. |
|
|
402
420
|
| **`preflight_change`** ← *Codex-4* | `preflight/v1` — per file: detected_tier, forbidden_imports, likely_tests, siblings_to_read; overall write_scope_too_broad flag | **Before** every `WriteFile` / `Edit`. Verdict `REFINE` when scope > 8 files. |
|
|
403
421
|
| **`score_patch`** ← *Codex-4* | `patch_score/v1` — architectural_risk, public_api_risk, release_risk, test_risk, `needs_human_review`, suggested validation commands | **After** drafting a unified-diff but **before** applying. |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Atomadic Forge — Command Reference
|
|
2
2
|
|
|
3
|
-
All verbs available in the `forge` CLI as of 0.
|
|
3
|
+
All verbs available in the `forge` CLI as of 0.54.0.
|
|
4
4
|
|
|
5
5
|
> For the structured per-verb reference (with options, examples, and
|
|
6
6
|
> output samples), see [02-commands.md](02-commands.md). This page is
|
|
@@ -494,7 +494,7 @@ Prints the installed Forge version and exits 0. Hardened in v0.3.0
|
|
|
494
494
|
|
|
495
495
|
```bash
|
|
496
496
|
$ forge --version
|
|
497
|
-
atomadic-forge 0.
|
|
497
|
+
atomadic-forge 0.54.0
|
|
498
498
|
```
|
|
499
499
|
|
|
500
500
|
### `.forge` sidecars — Lane D W8
|
|
@@ -788,6 +788,126 @@ Auto-register, document, and smoke-test every CLI command. Use after
|
|
|
788
788
|
|
|
789
789
|
Environment diagnostic — version, Python, encoding, executable.
|
|
790
790
|
|
|
791
|
+
### `forge call-graph-summary`
|
|
792
|
+
|
|
793
|
+
Whole-package call-graph portfolio using pyan synthesis. Returns orphans (symbols with no callers), hotspots ranked by fan-in, and maximum call depth across the package.
|
|
794
|
+
|
|
795
|
+
```bash
|
|
796
|
+
forge call-graph-summary --project <root> [--package NAME] [--top-n N] [--json]
|
|
797
|
+
```
|
|
798
|
+
|
|
799
|
+
Schema: `atomadic-forge.call_graph_summary/v1`. MCP: `explore(action='call_graph_summary')`. a1 source: `a1_at_functions/call_graph.py` → `build_call_graph_summary()`.
|
|
800
|
+
|
|
801
|
+
### `forge churn`
|
|
802
|
+
|
|
803
|
+
File-level git commit frequency via Repomix synthesis. Returns `hotspot_files`, `stable_files`, `avg_commits`, `median_commits`, and the date range analyzed.
|
|
804
|
+
|
|
805
|
+
```bash
|
|
806
|
+
forge churn --project <root> [--since '6 months ago'] [--top-n N] [--all-files] [--json]
|
|
807
|
+
```
|
|
808
|
+
|
|
809
|
+
Schema: `atomadic-forge.git_churn/v1`. MCP: `explore(action='churn')`. a1 source: `a1_at_functions/git_churn.py` → `compute_git_churn()`.
|
|
810
|
+
|
|
811
|
+
### `forge surface-gaps`
|
|
812
|
+
|
|
813
|
+
AST-walks the a1 tier and compares every public entry point against the
|
|
814
|
+
registered MCP action list and CLI verb list. Returns functions that have no
|
|
815
|
+
MCP coverage, no CLI coverage, or both — the precise gap list that feeds
|
|
816
|
+
`forge wire-stubs`.
|
|
817
|
+
|
|
818
|
+
```bash
|
|
819
|
+
forge surface-gaps
|
|
820
|
+
forge surface-gaps --json
|
|
821
|
+
forge surface-gaps --project src/my_pkg --json | jq '.gaps[] | select(.missing_cli)'
|
|
822
|
+
```
|
|
823
|
+
|
|
824
|
+
Schema: `atomadic-forge.surface_gaps/v1`. MCP: `explore(action='surface_gaps')`,
|
|
825
|
+
`audit(action='surface_gaps')`. a1 source: `a1_at_functions/surface_gaps.py` →
|
|
826
|
+
`find_surface_gaps()`.
|
|
827
|
+
|
|
828
|
+
### `forge wire-stubs <module> <function>`
|
|
829
|
+
|
|
830
|
+
Generates the three scaffolding artifacts needed to wire any unwired a1 function
|
|
831
|
+
into the full Forge surface: an MCP handler block, a CLI stub entry, and a
|
|
832
|
+
pytest skeleton. Output is printed to stdout (pipe to `--apply` to insert in
|
|
833
|
+
place).
|
|
834
|
+
|
|
835
|
+
```bash
|
|
836
|
+
forge wire-stubs a1_at_functions.my_module my_function
|
|
837
|
+
forge wire-stubs a1_at_functions.my_module my_function --apply
|
|
838
|
+
forge wire-stubs a1_at_functions.my_module my_function --json
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
Schema: `atomadic-forge.wire_stubs/v1`. MCP: `audit(action='wire_stubs')`. a1
|
|
842
|
+
source: `a1_at_functions/wire_stubs.py` → `generate_wire_stubs()`.
|
|
843
|
+
|
|
844
|
+
### `forge capability-scout --queries "q1,q2"`
|
|
845
|
+
|
|
846
|
+
Searches GitHub for repositories suitable as `forge harvest` candidates. Accepts
|
|
847
|
+
one or more comma-separated freeform query strings and returns a ranked list
|
|
848
|
+
enriched with star count, last-push date, primary language, and a
|
|
849
|
+
harvest-readiness score.
|
|
850
|
+
|
|
851
|
+
```bash
|
|
852
|
+
forge capability-scout --queries "async task queue python"
|
|
853
|
+
forge capability-scout --queries "markdown parser,rst converter" --top-n 10 --json
|
|
854
|
+
```
|
|
855
|
+
|
|
856
|
+
Schema: `atomadic-forge.capability_scout/v1`. MCP:
|
|
857
|
+
`explore(action='capability_scout')`. a1 source:
|
|
858
|
+
`a1_at_functions/capability_scout.py` → `search_capability_repos()`.
|
|
859
|
+
|
|
860
|
+
### `forge dead-code`
|
|
861
|
+
|
|
862
|
+
AST-walks the package using vulture synthesis and returns every symbol that is
|
|
863
|
+
defined but never referenced, grouped by tier with per-symbol confidence scores.
|
|
864
|
+
High-confidence dead symbols are safe to remove; lower confidence items are
|
|
865
|
+
flagged for human review.
|
|
866
|
+
|
|
867
|
+
```bash
|
|
868
|
+
forge dead-code
|
|
869
|
+
forge dead-code --project src/atomadic_forge --min-confidence 80 --json
|
|
870
|
+
```
|
|
871
|
+
|
|
872
|
+
Schema: `atomadic-forge.dead_code/v1`. MCP: `explore(action='dead_code')`,
|
|
873
|
+
`audit(action='dead_code')`. a1 source: `a1_at_functions/dead_code.py` →
|
|
874
|
+
`detect_dead_symbols()`.
|
|
875
|
+
|
|
876
|
+
### `forge maintainability`
|
|
877
|
+
|
|
878
|
+
Runs radon Maintainability Index analysis across every source module and returns
|
|
879
|
+
per-file MI scores with letter grades: A (MI ≥ 20), B (MI ≥ 10), C (MI ≥ 0),
|
|
880
|
+
D (MI < 0). Output is ranked from lowest to highest MI so the worst offenders
|
|
881
|
+
surface first.
|
|
882
|
+
|
|
883
|
+
```bash
|
|
884
|
+
forge maintainability
|
|
885
|
+
forge maintainability --project src/atomadic_forge --json
|
|
886
|
+
forge maintainability --min-grade B --json | jq '.modules[] | select(.grade == "D")'
|
|
887
|
+
```
|
|
888
|
+
|
|
889
|
+
Schema: `atomadic-forge.maintainability/v1`. MCP:
|
|
890
|
+
`explore(action='maintainability')`, `audit(action='maintainability')`. a1
|
|
891
|
+
source: `a1_at_functions/maintainability.py` → `compute_maintainability()`.
|
|
892
|
+
|
|
893
|
+
### `forge concept-bridge --harvest-json path/to/harvest.json`
|
|
894
|
+
|
|
895
|
+
Reads a `harvest.json` produced by `forge harvest`, filters candidates whose
|
|
896
|
+
trust score falls below TAU_TRUST (1820/1823 ≈ 0.9984), and converts each into
|
|
897
|
+
an actionable synthesis plan. Each plan includes a recommended absorb sequence,
|
|
898
|
+
tier placement, and preflight checklist — bridging the gap between a raw harvest
|
|
899
|
+
scan and a ready-to-execute `forge auto` call.
|
|
900
|
+
|
|
901
|
+
```bash
|
|
902
|
+
forge harvest ./target-repo --json > harvest.json
|
|
903
|
+
forge concept-bridge --harvest-json harvest.json
|
|
904
|
+
forge concept-bridge --harvest-json harvest.json --json > synthesis_plans.json
|
|
905
|
+
```
|
|
906
|
+
|
|
907
|
+
Schema: `atomadic-forge.concept_bridge/v1`. MCP:
|
|
908
|
+
`explore(action='concept_bridge')`, `audit(action='concept_bridge')`. a1 source:
|
|
909
|
+
`a1_at_functions/concept_bridge.py` → `bridge_harvest_concepts()`.
|
|
910
|
+
|
|
791
911
|
## LLM provider matrix
|
|
792
912
|
|
|
793
913
|
| Provider | Cost | Env var | Default model | Notes |
|
|
@@ -39,7 +39,7 @@ Forge certify scores out of **100** in two layers:
|
|
|
39
39
|
JS / TS packages cap at **60/100** today: they earn the four
|
|
40
40
|
structural axes, but the +25 runtime-import smoke and +30 behavioural
|
|
41
41
|
pytest are Python-only. Wiring `npm test` / Vitest into the
|
|
42
|
-
behavioural axis is on the post-v0.
|
|
42
|
+
behavioural axis is on the post-v0.55.0 roadmap.
|
|
43
43
|
|
|
44
44
|
---
|
|
45
45
|
|
|
@@ -131,7 +131,7 @@ runtime dependency makes the package unusable.
|
|
|
131
131
|
|
|
132
132
|
**Why JS/TS does not get this gate yet.** AAM §5.4 (Threats to
|
|
133
133
|
Validity) explicitly flags polyglot runtime gating as a roadmap
|
|
134
|
-
item (post-v0.
|
|
134
|
+
item (post-v0.55.0): the equivalent for JS would be an `npm test`
|
|
135
135
|
invocation, which requires a Node toolchain we do not yet bundle.
|
|
136
136
|
|
|
137
137
|
**Citation.** AAM §5.1 (Core Pipeline Pseudocode); AAM §5.4 (Threats
|
|
@@ -16,7 +16,7 @@ See `vscode-extension/README.md` for settings + usage.
|
|
|
16
16
|
|
|
17
17
|
## 2. MCP server (works with any MCP-aware assistant)
|
|
18
18
|
|
|
19
|
-
Forge ships a fully-typed MCP server with **
|
|
19
|
+
Forge ships a fully-typed MCP server with **10 tools dispatching 79 actions** spanning recon, wire, certify, plan, enforce, emergent, synergy, wisdom, lineage, hive coordination, and AAAA-Nexus trust gates. Any of these clients can attach:
|
|
20
20
|
|
|
21
21
|
- **Claude Code** (Anthropic CLI) — `claude mcp add atomadic-forge -- forge mcp serve --project ${workspaceFolder}`
|
|
22
22
|
- **Cursor** — Settings → MCP Servers → add the same command above
|
|
@@ -80,4 +80,4 @@ All three were updated in v0.18.0 to use the current CLI argument shape (positio
|
|
|
80
80
|
|
|
81
81
|
## Agent instructions
|
|
82
82
|
|
|
83
|
-
The full
|
|
83
|
+
The full tool catalog with use-case guidance lives in `skills/FORGE-AGENT-INSTRUCTIONS.md`. Point any AI assistant at it (or include it as a system prompt) for tier-aware behaviour out of the gate.
|