atomadic-forge 0.54.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.54.0 → atomadic_forge-0.56.0}/.github/workflows/metrics-auto-regen.yml +6 -4
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/workflows/publish-on-tag.yml +1 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/CHANGELOG.md +178 -0
- {atomadic_forge-0.54.0/src/atomadic_forge.egg-info → atomadic_forge-0.56.0}/PKG-INFO +20 -13
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/README.md +19 -12
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/AGENTS_GUIDE.md +15 -3
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/COMMANDS.md +102 -2
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/FORMALIZATION.md +2 -2
- {atomadic_forge-0.54.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.54.0 → atomadic_forge-0.56.0}/docs/RECEIPT.md +2 -2
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/pyproject.toml +1 -1
- atomadic_forge-0.56.0/src/atomadic_forge/a1_at_functions/doc_auto_update.py +543 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/forge_metrics.py +16 -1
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +79 -6
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wire_stubs_gen.py +191 -12
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_metrics_feature.py +23 -1
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +181 -9
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0/src/atomadic_forge.egg-info}/PKG-INFO +20 -13
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge.egg-info/SOURCES.txt +3 -0
- atomadic_forge-0.56.0/tests/test_doc_auto_update.py +183 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/FUNDING.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/actions/forge-action/README.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/actions/forge-action/action.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/dependabot.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/pull_request_template.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/workflows/ci.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/workflows/customer-refactor.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/workflows/forge-self-certify.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/workflows/mcp-registry-publish.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/workflows/metrics-drift.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/workflows/release-readiness.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/workflows/release.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/workflows/surface-drift.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/.github/workflows/uptime.yml +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/ARCHITECTURE.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/CONTRIBUTING.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/LICENSE +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/MANIFEST.in +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/SECURITY.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/assets/Atomadic-Forge-01.png +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/01-getting-started.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/02-commands.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/03-tutorial.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/04-llm-loops.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/05-faq.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/AIR_GAPPED.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/CI_CD.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/CODEX_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/FIRST_10_MINUTES.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/HIVE_PRIMITIVES.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/HIVE_STATUS.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/LANDSCAPE.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/MARKET_POSITIONING.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/MIGRATION.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/MULTI_REPO.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/PROVIDERS.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/README.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/RELAY_PROTOCOL.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/RELEASE_CHECKLIST.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/RELEASE_MESSAGING.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/ROADMAP.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/SHOWCASE.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/SIDECAR.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/STUDIO.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/V0.46.0_JUSTIFICATION_REPORT.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/V0.47.0_SELF_TEST_REPORT.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/WHY_NOW.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/WORLD_COLLISION.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/INDEX.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/absorb.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/audit.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/chat.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/commandsmith.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/config.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/create.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/demo.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/emergent-swarm.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/emergent-then-synergy.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/emergent.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/enhancement.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/evolve-then-iterate.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/evolve.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/feature-then-emergent.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/guard-install.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/handoff.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/harvest.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/hive.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/iterate.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/materialize.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/metrics.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/recon-swarm.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/relay.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/surface.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/synergy-then-emergent.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/synergy.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/welcome.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/commands/wisdom.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/compliance/CS-1.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/compliance/SR_11-7_MAPPING.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/tutorials/01-quickstart.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/tutorials/02-your-first-package.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/tutorials/03-the-five-tier-law.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/tutorials/04-plug-in-llms.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/tutorials/05-multi-repo-absorb.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/docs/tutorials/06-javascript-quickstart.md +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/setup.cfg +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/__init__.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/__main__.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/materialize_types.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/response_enrichment.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/welcome_constants.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/call_graph.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/capability_scout.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/custom_provider_client.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/dead_code_check.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/git_churn.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/handoff_builder.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/harvest_absorb.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/harvest_concept_bridge.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/hive_io.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/lifetime_savings.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/maintainability_index.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/polyglot_classify.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/polyglot_imports.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/polyglot_surface.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/response_enricher.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/scaffold_polyglot.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/smell_scan.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/surface_gap_check.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/welcome_narrator.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wisdom_io.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/nexus_client.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/absorb_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/create_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
- {atomadic_forge-0.54.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.54.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.54.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.54.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.54.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.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/emergent_swarm.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/hive_sync.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/materialize_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/mcp_server.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/verify_umbrella.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/welcome_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/__init__.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/_registry.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/absorb.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/audit.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/chat.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/commandsmith.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/config_cmd.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/create.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/demo.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/emergent.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/emergent_swarm.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/enhancement.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/evolve.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/guard_install.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/handoff.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/harvest.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/hive.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/iterate.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/materialize.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/metrics.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/recon_swarm.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/relay.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/surface.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/synergy.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/welcome.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge/commands/wisdom.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge.egg-info/requires.txt +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_aaaa_nexus_client.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_agent_hire_protocol.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_agent_plan.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_agent_plan_pkg_label.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_agent_summary.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_audit_verb.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_body_extractor_repairs.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_call_graph_summary.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_capability_scout.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_card_renderer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_certify_operational_axis.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_chat.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_classify_tier.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_classify_tier_ast_signals.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_cli_smoke.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_cli_swarm_aliases.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_codex_5_complete.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_codex_6_enforce_polyglot.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_commandsmith.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_compiler_feedback.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_compliance_checker.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_config.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_copilots_copilot.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_create_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_cs1_renderer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_custom_provider.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_dead_code_check.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_dedup_engine.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_demo.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_emergent_compose.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_emergent_signature_extract.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_emergent_synthesize_imports.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_enhancement_proposal.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_error_codes.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_error_hints.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_evolve_js.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_exported_api_check.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_forge_action.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_forge_auth_a1.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_forge_auth_a2.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_forge_enforce.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_generation_quality.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_git_churn.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_handoff.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_harvest_concept_bridge.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_hierarchical_memory.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_hive_sync.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_ignore_and_docs.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_import_smoke.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_iterate_evolve.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_js_certify.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_js_parser.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_js_recon.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_js_wire.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_lineage_chain.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_ling_provider.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_local_signer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_lsp_protocol.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_maintainability_index.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_manifest_diff.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_materialize_feature.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_mcp_lazy_bootstrap.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_mcp_protocol.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_nexus_bridge.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_ollama_client.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_pipeline.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_plan_apply.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_polyglot_cli_mcp.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_polyglot_full_pipeline.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_polyglot_hardening.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_polyglot_swift_kotlin_go.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_polyglot_symbol_parity.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_pre_audit_smoke.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_precommit_hooks.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_progress_reporter.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_receipt_emitter.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_receipt_schema.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_receipt_signer.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_response_enricher.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_roi_calculator.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_sbom_cmd_text_summary.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_sbom_emitter.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_scaffold.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_sidecar.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_sidecar_validate.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_smell_score_formula.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_stagnation.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_stub_detector.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_surface_export.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_surface_gap_check.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_synergy.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_test_runner.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_tier_init_rebuild.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_trust_gate_response.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_verify_suggested_recipe.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_welcome.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_welcome_enhancements.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_whoami_cmd.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_wire_certify.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_wire_stubs_gen.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_wire_suggest_repairs.py +0 -0
- {atomadic_forge-0.54.0 → atomadic_forge-0.56.0}/tests/test_wire_type_checking.py +0 -0
- {atomadic_forge-0.54.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 |
|
|
@@ -141,6 +141,12 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
141
141
|
| `forge cna-check` | Compose-Not-Add — flag duplicates before writing |
|
|
142
142
|
| `forge trust-gate` | LLM response hallucination detector |
|
|
143
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 |
|
|
144
150
|
|
|
145
151
|
### Composition & Multi-Repo
|
|
146
152
|
|
|
@@ -160,11 +166,11 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
160
166
|
| `forge plan` | Bounded execution plan with risk + rollback |
|
|
161
167
|
| `forge chat` | Terminal copilot over forge docs |
|
|
162
168
|
|
|
163
|
-
**
|
|
169
|
+
**83 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
|
|
164
170
|
|
|
165
171
|
---
|
|
166
172
|
|
|
167
|
-
## MCP Server — 10 Tools,
|
|
173
|
+
## MCP Server — 10 Tools, 79 Actions
|
|
168
174
|
|
|
169
175
|
Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aider, Devin, or any MCP-compatible agent:
|
|
170
176
|
|
|
@@ -179,13 +185,13 @@ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aide
|
|
|
179
185
|
}
|
|
180
186
|
```
|
|
181
187
|
|
|
182
|
-
**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/).
|
|
183
189
|
|
|
184
190
|
| Tool | Actions | What it does |
|
|
185
191
|
|------|---------|-------------|
|
|
186
192
|
| `welcome` | — | RECOMMENDED FIRST CALL: onboarding scan, score, narrative, capability tour |
|
|
187
|
-
| `explore` |
|
|
188
|
-
| `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 |
|
|
189
195
|
| `plan` | 9 | Orient + dev utilities — context/compose/policy/recipes/generate/apply/locate/commit/scaffold |
|
|
190
196
|
| `transmute` | 3 | **FLAGSHIP** spaghetti→certified pipeline — auto/cherry/finalize |
|
|
191
197
|
| `loop` | 4 | LLM iteration loops — iterate/resume/evolve/evolve_step |
|
|
@@ -206,11 +212,12 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
|
|
|
206
212
|
|
|
207
213
|
| Metric | Value |
|
|
208
214
|
|--------|-------|
|
|
209
|
-
|
|
210
|
-
|
|
|
211
|
-
|
|
|
212
|
-
|
|
|
213
|
-
|
|
|
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 |
|
|
214
221
|
| Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
|
|
215
222
|
| Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
|
|
216
223
|
| Infrastructure cost | **$5/mo** |
|
|
@@ -227,7 +234,7 @@ Forge eats its own cooking. Every CI run scores itself.
|
|
|
227
234
|
|------|-------|-------------|
|
|
228
235
|
| **Free** | $0 | OSS, 25 calls/day, read-only tools |
|
|
229
236
|
| **One-Time Refactor** | ~~$149~~ **$99** | We run `auto` on your repo -> PR targeting 100/100. One revision included. |
|
|
230
|
-
| **Starter** | $79/mo | All 10 tools (
|
|
237
|
+
| **Starter** | $79/mo | All 10 tools (76 actions), 5k calls/mo, signed receipts, custom recipes |
|
|
231
238
|
| **Pro** | $249/mo | + notarization, compliance attestations, cross-repo telemetry |
|
|
232
239
|
| **Founding Member** | $999/yr | Everything. Forever. First 25 only. |
|
|
233
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 |
|
|
@@ -109,6 +109,12 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
109
109
|
| `forge cna-check` | Compose-Not-Add — flag duplicates before writing |
|
|
110
110
|
| `forge trust-gate` | LLM response hallucination detector |
|
|
111
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 |
|
|
112
118
|
|
|
113
119
|
### Composition & Multi-Repo
|
|
114
120
|
|
|
@@ -128,11 +134,11 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
128
134
|
| `forge plan` | Bounded execution plan with risk + rollback |
|
|
129
135
|
| `forge chat` | Terminal copilot over forge docs |
|
|
130
136
|
|
|
131
|
-
**
|
|
137
|
+
**83 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
|
|
132
138
|
|
|
133
139
|
---
|
|
134
140
|
|
|
135
|
-
## MCP Server — 10 Tools,
|
|
141
|
+
## MCP Server — 10 Tools, 79 Actions
|
|
136
142
|
|
|
137
143
|
Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aider, Devin, or any MCP-compatible agent:
|
|
138
144
|
|
|
@@ -147,13 +153,13 @@ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aide
|
|
|
147
153
|
}
|
|
148
154
|
```
|
|
149
155
|
|
|
150
|
-
**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/).
|
|
151
157
|
|
|
152
158
|
| Tool | Actions | What it does |
|
|
153
159
|
|------|---------|-------------|
|
|
154
160
|
| `welcome` | — | RECOMMENDED FIRST CALL: onboarding scan, score, narrative, capability tour |
|
|
155
|
-
| `explore` |
|
|
156
|
-
| `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 |
|
|
157
163
|
| `plan` | 9 | Orient + dev utilities — context/compose/policy/recipes/generate/apply/locate/commit/scaffold |
|
|
158
164
|
| `transmute` | 3 | **FLAGSHIP** spaghetti→certified pipeline — auto/cherry/finalize |
|
|
159
165
|
| `loop` | 4 | LLM iteration loops — iterate/resume/evolve/evolve_step |
|
|
@@ -174,11 +180,12 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
|
|
|
174
180
|
|
|
175
181
|
| Metric | Value |
|
|
176
182
|
|--------|-------|
|
|
177
|
-
|
|
178
|
-
|
|
|
179
|
-
|
|
|
180
|
-
|
|
|
181
|
-
|
|
|
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 |
|
|
182
189
|
| Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
|
|
183
190
|
| Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
|
|
184
191
|
| Infrastructure cost | **$5/mo** |
|
|
@@ -195,7 +202,7 @@ Forge eats its own cooking. Every CI run scores itself.
|
|
|
195
202
|
|------|-------|-------------|
|
|
196
203
|
| **Free** | $0 | OSS, 25 calls/day, read-only tools |
|
|
197
204
|
| **One-Time Refactor** | ~~$149~~ **$99** | We run `auto` on your repo -> PR targeting 100/100. One revision included. |
|
|
198
|
-
| **Starter** | $79/mo | All 10 tools (
|
|
205
|
+
| **Starter** | $79/mo | All 10 tools (76 actions), 5k calls/mo, signed receipts, custom recipes |
|
|
199
206
|
| **Pro** | $249/mo | + notarization, compliance attestations, cross-repo telemetry |
|
|
200
207
|
| **Founding Member** | $999/yr | Everything. Forever. First 25 only. |
|
|
201
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"`)
|
|
@@ -332,6 +332,12 @@ agent tool-selection can route by trigger phrase. Quick reference:
|
|
|
332
332
|
| You want to recall what prior agents learned about this repo | `wisdom recall` (or read `prior_wisdom` from `recon`) |
|
|
333
333
|
| You want to record a lesson for future agents | `wisdom record` |
|
|
334
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')` |
|
|
335
341
|
|
|
336
342
|
---
|
|
337
343
|
|
|
@@ -385,6 +391,12 @@ in a loop:
|
|
|
385
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. |
|
|
386
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]`. |
|
|
387
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]`. |
|
|
388
400
|
| **`smell_scan`** | cyclomatic-complexity / long-function / duplicate-body findings + `smell_score` | When `certify` is green but maintainability is still suspect. |
|
|
389
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. |
|
|
390
402
|
| **`surface`** | emit / check / diff the canonical `surface.json` artifact | CI gate (`check`) and consumer bootstrap (`emit`); zero hand-maintained tool maps. |
|
|
@@ -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
|
|
@@ -808,6 +808,106 @@ forge churn --project <root> [--since '6 months ago'] [--top-n N] [--all-files]
|
|
|
808
808
|
|
|
809
809
|
Schema: `atomadic-forge.git_churn/v1`. MCP: `explore(action='churn')`. a1 source: `a1_at_functions/git_churn.py` → `compute_git_churn()`.
|
|
810
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
|
+
|
|
811
911
|
## LLM provider matrix
|
|
812
912
|
|
|
813
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.
|