atomadic-forge 0.75.0__tar.gz → 0.75.1__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.75.0 → atomadic_forge-0.75.1}/.github/workflows/mcp-registry-publish.yml +3 -3
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/workflows/metrics-auto-regen.yml +24 -5
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/workflows/metrics-drift.yml +9 -8
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/CHANGELOG.md +8 -0
- {atomadic_forge-0.75.0/src/atomadic_forge.egg-info → atomadic_forge-0.75.1}/PKG-INFO +21 -6
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/README.md +20 -5
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/MCP_TOOLS.md +16 -10
- atomadic_forge-0.75.1/docs/commands/metrics.md +46 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/pyproject.toml +1 -1
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/doc_auto_update.py +32 -18
- atomadic_forge-0.75.1/src/atomadic_forge/a1_at_functions/repo_public_surface.py +228 -0
- atomadic_forge-0.75.1/src/atomadic_forge/a2_mo_composites/repo_public_surface_sync.py +71 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/forge_metrics_feature.py +84 -5
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a4_sy_orchestration/cli.py +32 -2
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/metrics.py +76 -24
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1/src/atomadic_forge.egg-info}/PKG-INFO +21 -6
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge.egg-info/SOURCES.txt +3 -0
- atomadic_forge-0.75.1/tests/test_repo_public_surface.py +150 -0
- atomadic_forge-0.75.0/docs/commands/metrics.md +0 -9
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/FUNDING.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/actions/forge-action/README.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/actions/forge-action/action.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/dependabot.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/pull_request_template.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/workflows/ci.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/workflows/customer-refactor.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/workflows/forge-self-certify.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/workflows/publish-on-tag.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/workflows/release-readiness.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/workflows/release.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/workflows/surface-drift.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/.github/workflows/uptime.yml +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/ARCHITECTURE.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/CONTRIBUTING.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/LICENSE +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/MANIFEST.in +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/SECURITY.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/assets/Atomadic-Forge-01.png +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/01-getting-started.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/02-commands.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/03-tutorial.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/04-llm-loops.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/05-faq.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/AGENTS_GUIDE.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/AIR_GAPPED.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/CI_CD.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/CODEX_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/COMMANDS.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/FIRST_10_MINUTES.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/FORMALIZATION.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/HIVE_PRIMITIVES.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/HIVE_STATUS.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/IDE_INTEGRATION.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/LANDSCAPE.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/MARKET_POSITIONING.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/MIGRATION.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/MULTI_REPO.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/PROVIDERS.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/README.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/RECEIPT.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/RELAY_PROTOCOL.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/RELEASE_CHECKLIST.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/RELEASE_MESSAGING.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/ROADMAP.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/SHOWCASE.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/SIDECAR.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/STUDIO.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/V0.46.0_JUSTIFICATION_REPORT.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/V0.47.0_SELF_TEST_REPORT.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/WHY_NOW.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/WORLD_COLLISION.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/INDEX.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/absorb.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/audit.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/chat.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/commandsmith.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/config.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/create.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/demo.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/emergent-swarm.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/emergent-then-synergy.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/emergent.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/enhancement.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/evolve-then-iterate.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/evolve.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/feature-then-emergent.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/guard-install.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/handoff.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/harvest.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/hive.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/iterate.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/materialize.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/recon-swarm.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/relay.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/surface.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/synergy-then-emergent.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/synergy.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/welcome.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/commands/wisdom.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/compliance/CS-1.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/compliance/SR_11-7_MAPPING.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/tutorials/01-quickstart.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/tutorials/02-your-first-package.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/tutorials/03-the-five-tier-law.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/tutorials/04-plug-in-llms.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/tutorials/05-multi-repo-absorb.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/docs/tutorials/06-javascript-quickstart.md +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/setup.cfg +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/__init__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/__main__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/materialize_types.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/response_enrichment.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/welcome_constants.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/abstract_method_repair.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/ast_scope_lock.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/call_graph.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/capability_scout.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/custom_provider_client.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/dead_code_check.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/forge_metrics.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/git_churn.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/handoff_builder.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/harvest_absorb.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/harvest_concept_bridge.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/hive_io.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/lifetime_savings.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/maintainability_index.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/polyglot_classify.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/polyglot_imports.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/polyglot_surface.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/response_enricher.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/scaffold_polyglot.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/smell_scan.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/steersman_pack.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/surface_gap_check.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/welcome_narrator.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/wire_stubs_gen.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/wisdom_io.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/nexus_client.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a2_mo_composites/remote_seed_store.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/absorb_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/create_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/emergent_swarm.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/hive_sync.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/materialize_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/mcp_server.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/verify_umbrella.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/welcome_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/__init__.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/_registry.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/absorb.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/audit.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/chat.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/commandsmith.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/config_cmd.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/create.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/demo.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/emergent.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/emergent_swarm.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/enhancement.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/evolve.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/guard_install.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/handoff.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/harvest.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/hive.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/iterate.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/materialize.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/recon_swarm.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/relay.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/surface.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/synergy.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/welcome.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge/commands/wisdom.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge.egg-info/requires.txt +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/src/atomadic_forge.egg-info/top_level.txt +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_aaaa_nexus_client.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_abstract_method_repair.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_agent_hire_protocol.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_agent_plan.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_agent_plan_pkg_label.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_agent_summary.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_ast_scope_lock.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_audit_verb.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_body_extractor_repairs.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_call_graph_summary.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_capability_scout.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_card_renderer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_certify_operational_axis.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_chat.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_cherry_pick.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_classify_tier.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_classify_tier_ast_signals.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_cli_smoke.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_cli_swarm_aliases.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_codex_5_complete.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_codex_6_enforce_polyglot.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_commandsmith.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_compiler_feedback.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_compliance_checker.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_config.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_copilots_copilot.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_create_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_cs1_renderer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_custom_provider.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_dead_code_check.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_dedup_engine.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_demo.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_doc_auto_update.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_emergent_compose.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_emergent_signature_extract.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_emergent_synthesize_imports.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_enhancement_proposal.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_error_codes.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_error_hints.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_evolve_js.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_exported_api_check.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_finalize_scaffold.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_forge_action.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_forge_auth_a1.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_forge_auth_a2.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_forge_enforce.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_generation_quality.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_git_churn.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_handoff.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_harvest_concept_bridge.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_hierarchical_memory.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_hive_sync.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_ignore_and_docs.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_import_smoke.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_iterate_evolve.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_js_certify.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_js_parser.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_js_recon.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_js_wire.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_lineage_chain.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_ling_provider.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_local_signer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_lsp_protocol.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_maintainability_index.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_manifest_diff.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_materialize_feature.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_mcp_lazy_bootstrap.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_mcp_protocol.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_nexus_bridge.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_ollama_client.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_pipeline.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_plan_apply.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_polyglot_cli_mcp.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_polyglot_full_pipeline.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_polyglot_hardening.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_polyglot_swift_kotlin_go.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_polyglot_symbol_parity.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_pre_audit_smoke.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_precommit_hooks.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_progress_reporter.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_receipt_emitter.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_receipt_schema.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_receipt_signer.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_remote_seed_store.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_response_enricher.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_roi_calculator.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_sbom_cmd_text_summary.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_sbom_emitter.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_scaffold.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_sidecar.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_sidecar_validate.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_smell_score_formula.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_stagnation.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_steersman_pack.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_stub_detector.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_surface_export.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_surface_gap_check.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_synergy.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_test_runner.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_tier_init_rebuild.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_trust_gate_response.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_verify_suggested_recipe.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_welcome.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_welcome_enhancements.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_whoami_cmd.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_wire_certify.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_wire_stubs_gen.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_wire_suggest_repairs.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_wire_type_checking.py +0 -0
- {atomadic_forge-0.75.0 → atomadic_forge-0.75.1}/tests/test_wisdom.py +0 -0
|
@@ -73,9 +73,9 @@ jobs:
|
|
|
73
73
|
v="${{ steps.ver.outputs.version }}"
|
|
74
74
|
# Pull live numbers so the registry description always cites
|
|
75
75
|
# the current MCP tool / action count instead of drifting.
|
|
76
|
-
tools=$(jq -r '.mcp_tools // 10' forge_metrics.json)
|
|
77
|
-
actions=$(jq -r '.mcp_actions // 64' forge_metrics.json)
|
|
78
|
-
theorems=$(jq -r '.lean_theorems.count // 886' forge_metrics.json)
|
|
76
|
+
tools=$(jq -r '.mcp_tools // .metrics.mcp_tool_count // 10' forge_metrics.json)
|
|
77
|
+
actions=$(jq -r '.mcp_actions // .metrics.mcp_action_count // 64' forge_metrics.json)
|
|
78
|
+
theorems=$(jq -r '.lean_theorems.count // .metrics.lean4_theorem_count // 886' forge_metrics.json)
|
|
79
79
|
# Rewrite version (top-level + first package entry) and refresh
|
|
80
80
|
# the description string with the live numbers.
|
|
81
81
|
# Registry caps description at 100 chars — keep it punchy +
|
|
@@ -73,7 +73,22 @@ jobs:
|
|
|
73
73
|
# Save the previous lean_theorems block so we can preserve it
|
|
74
74
|
# when no proof corpus is attached (avoid zeroing the public
|
|
75
75
|
# number on a routine source-only push).
|
|
76
|
-
python -
|
|
76
|
+
python - <<'PY' > /tmp/prev_lean.json
|
|
77
|
+
import json
|
|
78
|
+
d = json.load(open("forge_metrics.json"))
|
|
79
|
+
if isinstance(d.get("lean_theorems"), dict):
|
|
80
|
+
print(json.dumps(d["lean_theorems"]))
|
|
81
|
+
else:
|
|
82
|
+
m = d.get("metrics", {})
|
|
83
|
+
count = int(m.get("lean4_theorem_count") or 0)
|
|
84
|
+
print(json.dumps({
|
|
85
|
+
"count": count,
|
|
86
|
+
"theorems": count,
|
|
87
|
+
"lemmas": 0,
|
|
88
|
+
"files": int(m.get("lean4_file_count") or 0),
|
|
89
|
+
"found": bool(count),
|
|
90
|
+
}))
|
|
91
|
+
PY
|
|
77
92
|
forge metrics --apply --tests-passing ${{ steps.pytest.outputs.passed }}
|
|
78
93
|
# If no proof corpus was attached this run, restore prior lean block.
|
|
79
94
|
if [ -z "${FORGE_PROOF_CORPUS:-}" ]; then
|
|
@@ -82,10 +97,14 @@ jobs:
|
|
|
82
97
|
p = pathlib.Path("forge_metrics.json")
|
|
83
98
|
d = json.loads(p.read_text())
|
|
84
99
|
prev = json.loads(pathlib.Path("/tmp/prev_lean.json").read_text())
|
|
85
|
-
# Only restore if the
|
|
86
|
-
#
|
|
87
|
-
if
|
|
88
|
-
d
|
|
100
|
+
# Only restore if proof corpus unavailable AND the prior had a
|
|
101
|
+
# real count. Supports both flat and public nested metric shapes.
|
|
102
|
+
if prev.get("count"):
|
|
103
|
+
if isinstance(d.get("metrics"), dict):
|
|
104
|
+
if not d["metrics"].get("lean4_theorem_count"):
|
|
105
|
+
d["metrics"]["lean4_theorem_count"] = prev["count"]
|
|
106
|
+
elif not d.get("lean_theorems", {}).get("found"):
|
|
107
|
+
d["lean_theorems"] = prev
|
|
89
108
|
p.write_text(json.dumps(d, indent=2, sort_keys=True) + "\n")
|
|
90
109
|
PY
|
|
91
110
|
fi
|
|
@@ -43,22 +43,23 @@ jobs:
|
|
|
43
43
|
cp forge_metrics.json /tmp/forge_metrics.committed.json
|
|
44
44
|
# Recompute (Lean count zero in CI unless FORGE_PROOF_CORPUS is wired).
|
|
45
45
|
forge metrics --apply
|
|
46
|
-
# If the only delta is the timestamp, that's expected — strip
|
|
47
|
-
# before diffing so we only
|
|
48
|
-
|
|
49
|
-
jq 'del(.generated_at_utc)' forge_metrics.json > /tmp/
|
|
46
|
+
# If the only delta is the timestamp, that's expected — strip
|
|
47
|
+
# legacy and public timestamp fields before diffing so we only
|
|
48
|
+
# fail on substantive drift.
|
|
49
|
+
jq 'del(.generated_at_utc, .generated_utc)' /tmp/forge_metrics.committed.json > /tmp/a.json
|
|
50
|
+
jq 'del(.generated_at_utc, .generated_utc)' forge_metrics.json > /tmp/b.json
|
|
50
51
|
# Always strip `tests_passing` from the diff — that field is
|
|
51
52
|
# populated externally (CI test job + --tests-passing flag) and
|
|
52
53
|
# the committed artifact carries the full pytest count, while
|
|
53
54
|
# this gate doesn't run pytest. Comparing them is meaningless.
|
|
54
|
-
jq 'del(.tests_passing)' /tmp/a.json > /tmp/a2.json && mv /tmp/a2.json /tmp/a.json
|
|
55
|
-
jq 'del(.tests_passing)' /tmp/b.json > /tmp/b2.json && mv /tmp/b2.json /tmp/b.json
|
|
55
|
+
jq 'del(.tests_passing, .metrics.test_count)' /tmp/a.json > /tmp/a2.json && mv /tmp/a2.json /tmp/a.json
|
|
56
|
+
jq 'del(.tests_passing, .metrics.test_count)' /tmp/b.json > /tmp/b2.json && mv /tmp/b2.json /tmp/b.json
|
|
56
57
|
# If FORGE_PROOF_CORPUS is not set, also ignore the lean_theorems
|
|
57
58
|
# block (will be 0 in CI but the committed artifact has the real
|
|
58
59
|
# count from the IP repo).
|
|
59
60
|
if [ -z "${FORGE_PROOF_CORPUS:-}" ]; then
|
|
60
|
-
jq 'del(.lean_theorems)' /tmp/a.json > /tmp/a2.json && mv /tmp/a2.json /tmp/a.json
|
|
61
|
-
jq 'del(.lean_theorems)' /tmp/b.json > /tmp/b2.json && mv /tmp/b2.json /tmp/b.json
|
|
61
|
+
jq 'del(.lean_theorems, .metrics.lean4_theorem_count)' /tmp/a.json > /tmp/a2.json && mv /tmp/a2.json /tmp/a.json
|
|
62
|
+
jq 'del(.lean_theorems, .metrics.lean4_theorem_count)' /tmp/b.json > /tmp/b2.json && mv /tmp/b2.json /tmp/b.json
|
|
62
63
|
fi
|
|
63
64
|
if ! diff -u /tmp/a.json /tmp/b.json; then
|
|
64
65
|
echo "::error::forge_metrics.json is stale. Run 'forge metrics --apply' and commit the result."
|
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## v0.75.1 — 2026-05-08
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- 7f63594 feat(metrics): add repo public surface sync (GP Lane C W6)
|
|
10
|
+
- d8ac951 docs: sync README + metrics for v0.75.0 — 300-seed proof banner
|
|
11
|
+
|
|
12
|
+
|
|
5
13
|
## v0.75.0 — 2026-05-08
|
|
6
14
|
|
|
7
15
|
- docs: HARVEST_LEDGER — 🎯🎯🎯🎯 HOLY GRAIL: 300 SEEDS ABSORBED (v0.75.0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atomadic-forge
|
|
3
|
-
Version: 0.75.
|
|
3
|
+
Version: 0.75.1
|
|
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
|
|
@@ -67,6 +67,16 @@ AI agents write code **10x faster** than humans can review it. Pattern violation
|
|
|
67
67
|
|
|
68
68
|
**Forge fixes that.**
|
|
69
69
|
|
|
70
|
+
> 🎯 **300+ public OSS Python repositories absorbed end-to-end.** fastapi
|
|
71
|
+
> (98k★), scrapy (61k★), django-rest-framework (30k★), pytest (13.8k★),
|
|
72
|
+
> langgraph (31k★), openai-agents-python (26k★), cookiecutter (25k★),
|
|
73
|
+
> aiohttp (16k★), deepeval (15k★), DocsGPT (17k★), txtai (12k★), E2B
|
|
74
|
+
> (12k★), copier, apscheduler, msgspec, peewee, alembic, tortoise-orm,
|
|
75
|
+
> presidio, dagster, IBM mcp-context-forge, and ~290 more — every single
|
|
76
|
+
> one ran through one `forge auto` command, emerged 5-tier-organized,
|
|
77
|
+
> wire-clean, scaffold-complete, deterministic. Wire-PASS holds across
|
|
78
|
+
> the entire 300-seed corpus. Receipts in [`HARVEST_LEDGER.md`](HARVEST_LEDGER.md).
|
|
79
|
+
|
|
70
80
|
- **Catches architectural violations AI agents leave behind.** Deterministic tier-law enforcement — no LLM in the loop, no hallucinations.
|
|
71
81
|
- **Saves 40-60% on LLM tokens.** Structured code = smaller context windows = fewer tokens per turn.
|
|
72
82
|
- **One command: spaghetti -> certified architecture.** Python, JavaScript, TypeScript, **Rust, Go, Swift, Kotlin** — full pipeline (recon, wire, certify, scaffold, evolve) on every language.
|
|
@@ -166,7 +176,7 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
166
176
|
| `forge plan` | Bounded execution plan with risk + rollback |
|
|
167
177
|
| `forge chat` | Terminal copilot over forge docs |
|
|
168
178
|
|
|
169
|
-
**
|
|
179
|
+
**84 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
|
|
170
180
|
|
|
171
181
|
---
|
|
172
182
|
|
|
@@ -192,7 +202,7 @@ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aide
|
|
|
192
202
|
| `welcome` | — | RECOMMENDED FIRST CALL: onboarding scan, score, narrative, capability tour |
|
|
193
203
|
| `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
204
|
| `audit` | 23 | Quality gates, change safety, trust |
|
|
195
|
-
| `plan` |
|
|
205
|
+
| `plan` | 10 | Orient + dev utilities — context/compose/policy/recipes/generate/apply/locate/commit/scaffold/steersman |
|
|
196
206
|
| `transmute` | 3 | **FLAGSHIP** spaghetti→certified pipeline — auto/cherry/finalize |
|
|
197
207
|
| `loop` | 4 | LLM iteration loops — iterate/resume/evolve/evolve_step |
|
|
198
208
|
| `hive` | 13 | Multi-agent coordination — lifecycle, consensus, handoffs, enhancements |
|
|
@@ -214,9 +224,9 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
|
|
|
214
224
|
|--------|-------|
|
|
215
225
|
|
|
216
226
|
| MCP tools | **10 tools · 112 actions** |
|
|
217
|
-
| CLI verbs | **
|
|
218
|
-
| Source files | **
|
|
219
|
-
| Tests | **1555 passing** across **
|
|
227
|
+
| CLI verbs | **84** |
|
|
228
|
+
| Source files | **228** (~45K LOC) |
|
|
229
|
+
| Tests | **1555 passing** across **112 test files** |
|
|
220
230
|
| Lean4 formal proofs | **872 theorems** (mathematically verified core logic) |
|
|
221
231
|
| Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
|
|
222
232
|
| Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
|
|
@@ -226,6 +236,11 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
|
|
|
226
236
|
|
|
227
237
|
Forge eats its own cooking. Every CI run scores itself.
|
|
228
238
|
|
|
239
|
+
> **Production-tested at scale.** 300+ public Python repos absorbed
|
|
240
|
+
> end-to-end via `forge auto` — fastapi (98k★), scrapy (61k★), pytest
|
|
241
|
+
> (13.8k★), DRF (30k★), cookiecutter (25k★), and ~295 others. Wire-PASS
|
|
242
|
+
> on every single one. Full receipt: [`HARVEST_LEDGER.md`](HARVEST_LEDGER.md).
|
|
243
|
+
|
|
229
244
|
---
|
|
230
245
|
|
|
231
246
|
## Pricing
|
|
@@ -35,6 +35,16 @@ AI agents write code **10x faster** than humans can review it. Pattern violation
|
|
|
35
35
|
|
|
36
36
|
**Forge fixes that.**
|
|
37
37
|
|
|
38
|
+
> 🎯 **300+ public OSS Python repositories absorbed end-to-end.** fastapi
|
|
39
|
+
> (98k★), scrapy (61k★), django-rest-framework (30k★), pytest (13.8k★),
|
|
40
|
+
> langgraph (31k★), openai-agents-python (26k★), cookiecutter (25k★),
|
|
41
|
+
> aiohttp (16k★), deepeval (15k★), DocsGPT (17k★), txtai (12k★), E2B
|
|
42
|
+
> (12k★), copier, apscheduler, msgspec, peewee, alembic, tortoise-orm,
|
|
43
|
+
> presidio, dagster, IBM mcp-context-forge, and ~290 more — every single
|
|
44
|
+
> one ran through one `forge auto` command, emerged 5-tier-organized,
|
|
45
|
+
> wire-clean, scaffold-complete, deterministic. Wire-PASS holds across
|
|
46
|
+
> the entire 300-seed corpus. Receipts in [`HARVEST_LEDGER.md`](HARVEST_LEDGER.md).
|
|
47
|
+
|
|
38
48
|
- **Catches architectural violations AI agents leave behind.** Deterministic tier-law enforcement — no LLM in the loop, no hallucinations.
|
|
39
49
|
- **Saves 40-60% on LLM tokens.** Structured code = smaller context windows = fewer tokens per turn.
|
|
40
50
|
- **One command: spaghetti -> certified architecture.** Python, JavaScript, TypeScript, **Rust, Go, Swift, Kotlin** — full pipeline (recon, wire, certify, scaffold, evolve) on every language.
|
|
@@ -134,7 +144,7 @@ Forge enforces a **5-tier monadic law** — every source file belongs to exactly
|
|
|
134
144
|
| `forge plan` | Bounded execution plan with risk + rollback |
|
|
135
145
|
| `forge chat` | Terminal copilot over forge docs |
|
|
136
146
|
|
|
137
|
-
**
|
|
147
|
+
**84 CLI verbs total.** Full reference: [docs/02-commands.md](docs/02-commands.md)
|
|
138
148
|
|
|
139
149
|
---
|
|
140
150
|
|
|
@@ -160,7 +170,7 @@ Forge ships a Model Context Protocol server. Add it to Cursor, Claude Code, Aide
|
|
|
160
170
|
| `welcome` | — | RECOMMENDED FIRST CALL: onboarding scan, score, narrative, capability tour |
|
|
161
171
|
| `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
172
|
| `audit` | 23 | Quality gates, change safety, trust |
|
|
163
|
-
| `plan` |
|
|
173
|
+
| `plan` | 10 | Orient + dev utilities — context/compose/policy/recipes/generate/apply/locate/commit/scaffold/steersman |
|
|
164
174
|
| `transmute` | 3 | **FLAGSHIP** spaghetti→certified pipeline — auto/cherry/finalize |
|
|
165
175
|
| `loop` | 4 | LLM iteration loops — iterate/resume/evolve/evolve_step |
|
|
166
176
|
| `hive` | 13 | Multi-agent coordination — lifecycle, consensus, handoffs, enhancements |
|
|
@@ -182,9 +192,9 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
|
|
|
182
192
|
|--------|-------|
|
|
183
193
|
|
|
184
194
|
| MCP tools | **10 tools · 112 actions** |
|
|
185
|
-
| CLI verbs | **
|
|
186
|
-
| Source files | **
|
|
187
|
-
| Tests | **1555 passing** across **
|
|
195
|
+
| CLI verbs | **84** |
|
|
196
|
+
| Source files | **228** (~45K LOC) |
|
|
197
|
+
| Tests | **1555 passing** across **112 test files** |
|
|
188
198
|
| Lean4 formal proofs | **872 theorems** (mathematically verified core logic) |
|
|
189
199
|
| Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
|
|
190
200
|
| Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
|
|
@@ -194,6 +204,11 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
|
|
|
194
204
|
|
|
195
205
|
Forge eats its own cooking. Every CI run scores itself.
|
|
196
206
|
|
|
207
|
+
> **Production-tested at scale.** 300+ public Python repos absorbed
|
|
208
|
+
> end-to-end via `forge auto` — fastapi (98k★), scrapy (61k★), pytest
|
|
209
|
+
> (13.8k★), DRF (30k★), cookiecutter (25k★), and ~295 others. Wire-PASS
|
|
210
|
+
> on every single one. Full receipt: [`HARVEST_LEDGER.md`](HARVEST_LEDGER.md).
|
|
211
|
+
|
|
197
212
|
---
|
|
198
213
|
|
|
199
214
|
## Pricing
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Forge MCP Tools Reference
|
|
2
2
|
|
|
3
|
-
Forge ships a Model Context Protocol server exposing **10 tools dispatching 112 actions**. Counts are auto-synced from `forge_metrics.json` by `doc-update`.
|
|
3
|
+
Forge ships a Model Context Protocol server exposing **10 tools dispatching 112 registry-callable actions**. Counts are auto-synced from `forge_metrics.json` by `doc-update`.
|
|
4
|
+
The per-tool table below lists the primary dispatch actions; the headline total also includes compatibility routes that keep older callers working.
|
|
4
5
|
All legacy tool names redirect automatically — existing callers keep working.
|
|
5
6
|
|
|
6
7
|
- Local: `forge mcp serve --project /path/to/repo`
|
|
@@ -16,9 +17,9 @@ All legacy tool names redirect automatically — existing callers keep working.
|
|
|
16
17
|
| Tool | Actions | Purpose |
|
|
17
18
|
|------|---------|---------|
|
|
18
19
|
| [`welcome`](#welcome) | — | Session onboarding: scan, score, narrative, capability tour |
|
|
19
|
-
| [`explore`](#explore) |
|
|
20
|
-
| [`audit`](#audit) |
|
|
21
|
-
| [`plan`](#plan) |
|
|
20
|
+
| [`explore`](#explore) | 16 | Analyze and understand a codebase — recon, call graphs, smells, harvest, discovery |
|
|
21
|
+
| [`audit`](#audit) | 23 | Quality gates, change safety, trust verification |
|
|
22
|
+
| [`plan`](#plan) | 10 | Dev orientation and utilities — context packs, recipes, commit messages, steersman packs |
|
|
22
23
|
| [`transmute`](#transmute) | 3 | **FLAGSHIP** spaghetti-to-certified pipeline |
|
|
23
24
|
| [`loop`](#loop) | 4 | LLM iteration and self-improvement loops |
|
|
24
25
|
| [`hive`](#hive) | 13 | Multi-agent coordination — consensus, handoffs, enhancements |
|
|
@@ -44,7 +45,7 @@ single most-useful next call for the session.
|
|
|
44
45
|
|
|
45
46
|
## `explore`
|
|
46
47
|
|
|
47
|
-
**
|
|
48
|
+
**16 actions.** Use when you need to analyze, understand, or discover patterns in a codebase.
|
|
48
49
|
No LLM is invoked — all analysis is deterministic.
|
|
49
50
|
|
|
50
51
|
| Action | What it does |
|
|
@@ -73,7 +74,7 @@ No LLM is invoked — all analysis is deterministic.
|
|
|
73
74
|
|
|
74
75
|
## `audit`
|
|
75
76
|
|
|
76
|
-
**
|
|
77
|
+
**23 actions.** Use when you need to check correctness, apply fixes, or gate a change.
|
|
77
78
|
|
|
78
79
|
| Action | What it does |
|
|
79
80
|
|--------|-------------|
|
|
@@ -91,17 +92,21 @@ No LLM is invoked — all analysis is deterministic.
|
|
|
91
92
|
| `cna` | CNA (Compose-Not-Add) check — rejects new symbols that duplicate existing ones. |
|
|
92
93
|
| `rollback` | Generate a rollback plan for a proposed change. |
|
|
93
94
|
| `diff` | Structured diff analysis between two states. |
|
|
95
|
+
| `ast_scope` | Build multi-repo AST blueprints plus deterministic Nexus-attestable edit locks. |
|
|
94
96
|
| `surface_gaps` | Surface capability gaps in the current repo. |
|
|
95
97
|
| `wire_stubs` | Generate stub implementations to satisfy wire constraints. |
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
`concept_bridge
|
|
98
|
+
| `dead_code` | Identify unreachable or unused symbols. |
|
|
99
|
+
| `maintainability` | Maintainability index per file/module. |
|
|
100
|
+
| `concept_bridge` | Cross-domain concept linkage detection. |
|
|
101
|
+
| `auto_wire` | Deterministically wire generated surface stubs. |
|
|
102
|
+
| `doc_update` | Regenerate public docs from metrics. |
|
|
103
|
+
| `doc_drift` | Detect public-doc metric drift. |
|
|
99
104
|
|
|
100
105
|
---
|
|
101
106
|
|
|
102
107
|
## `plan`
|
|
103
108
|
|
|
104
|
-
**
|
|
109
|
+
**10 actions.** Dev utilities for orientation, workflow recipes, commit hygiene, and tiny-model routing.
|
|
105
110
|
|
|
106
111
|
| Action | What it does |
|
|
107
112
|
|--------|-------------|
|
|
@@ -114,6 +119,7 @@ Additional actions registered but not in the base 16: `dead_code`, `maintainabil
|
|
|
114
119
|
| `locate` | Return insertion-point line range + preview (~1000-token saving) |
|
|
115
120
|
| `commit` | Assemble a structured commit message (~10k-token saving) |
|
|
116
121
|
| `scaffold` | Scaffold a new module or feature at the correct tier |
|
|
122
|
+
| `steersman` | Build AST-lock decision packs tiny enough for a 1B semantic router |
|
|
117
123
|
|
|
118
124
|
---
|
|
119
125
|
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# `atomadic-forge metrics`
|
|
2
|
+
|
|
3
|
+
_Emit forge_metrics.json — canonical metrics for README/CHANGELOG/welcome/worker._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.metrics`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
10
|
+
## Forge metrics
|
|
11
|
+
|
|
12
|
+
Use the top-level command when updating Forge's own public counters.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
forge metrics
|
|
16
|
+
forge metrics --apply
|
|
17
|
+
forge metrics --json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`--apply` rewrites `forge_metrics.json`. This artifact is Forge-specific:
|
|
21
|
+
README badges, release automation, and Worker metadata read from it.
|
|
22
|
+
|
|
23
|
+
## Product repo metrics
|
|
24
|
+
|
|
25
|
+
Use the `repo` subcommand when updating any product repository's own public
|
|
26
|
+
surface.
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
forge metrics repo --project /path/to/product
|
|
30
|
+
forge metrics repo --project /path/to/product --apply
|
|
31
|
+
forge metrics repo --project /path/to/product --json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The repo sync is intentionally separate from Forge metrics. It computes the
|
|
35
|
+
target repo's source files, source lines, test files, languages, name, and
|
|
36
|
+
version, then plans these bounded writes:
|
|
37
|
+
|
|
38
|
+
| File | Update |
|
|
39
|
+
|------|--------|
|
|
40
|
+
| `repo_metrics.json` | Canonical product metrics artifact |
|
|
41
|
+
| `README.md` | Metrics copy block between `<!-- forge:metrics:start -->` markers |
|
|
42
|
+
| `server.json` | MCP registry version and description, when present |
|
|
43
|
+
|
|
44
|
+
Dry-run is the default. Passing `--apply` writes the product surface and does
|
|
45
|
+
not mutate `forge_metrics.json`.
|
|
46
|
+
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "atomadic-forge"
|
|
7
|
-
version = "0.75.
|
|
7
|
+
version = "0.75.1"
|
|
8
8
|
description = "Atomadic Forge — absorb, enforce, emerge. Polyglot (Python · JavaScript/TypeScript · Rust · Go · Swift · Kotlin) architecture guardian for AI-generated code."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -11,7 +11,7 @@ Updateable sections
|
|
|
11
11
|
README.md
|
|
12
12
|
• "By the Numbers" table (bounded by METRICS_START / METRICS_END anchors)
|
|
13
13
|
• "## MCP Server — N Tools, M Actions" heading
|
|
14
|
-
• Tool-table rows for
|
|
14
|
+
• Tool-table rows for MCP tools whose action enums are discoverable
|
|
15
15
|
• "**N CLI verbs total.**" count
|
|
16
16
|
|
|
17
17
|
CHANGELOG.md
|
|
@@ -49,8 +49,7 @@ _METRICS_END = "\nForge eats its own cooking."
|
|
|
49
49
|
|
|
50
50
|
_MCP_HEADER_RE = re.compile(r"## MCP Server — \d+ Tools, \d+ Actions")
|
|
51
51
|
_CLI_COUNT_RE = re.compile(r"\*\*(\d+) CLI verbs total\.\*\*")
|
|
52
|
-
|
|
53
|
-
_AUDIT_ROW_RE = re.compile(r"(\| `audit` \| )(\d+)( \|)")
|
|
52
|
+
_TOOL_ROW_RE = re.compile(r"(\| `(?P<tool>[^`]+)` \| )(?P<count>\d+)( \|)")
|
|
54
53
|
|
|
55
54
|
# ── CHANGELOG anchor ──────────────────────────────────────────────────────────
|
|
56
55
|
_CHANGELOG_UNRELEASED = "## Unreleased"
|
|
@@ -145,6 +144,21 @@ def _count_mcp_actions_per_tool(project_root: Path) -> dict[str, int]:
|
|
|
145
144
|
Anchors each enum to its tool name in the TOOLS dict so counts are
|
|
146
145
|
correct even when audit grows larger than explore.
|
|
147
146
|
"""
|
|
147
|
+
try:
|
|
148
|
+
from .mcp_protocol import TOOLS
|
|
149
|
+
live: dict[str, int] = {}
|
|
150
|
+
for tool, spec in TOOLS.items():
|
|
151
|
+
props = (spec.get("inputSchema") or {}).get("properties") or {}
|
|
152
|
+
count = 0
|
|
153
|
+
for key in ("action", "op"):
|
|
154
|
+
enum = (props.get(key) or {}).get("enum") or []
|
|
155
|
+
count += len(enum)
|
|
156
|
+
if count:
|
|
157
|
+
live[tool] = count
|
|
158
|
+
if live:
|
|
159
|
+
return live
|
|
160
|
+
except Exception:
|
|
161
|
+
pass
|
|
148
162
|
proto = project_root / "src" / "atomadic_forge" / "a1_at_functions" / "mcp_protocol.py"
|
|
149
163
|
if not proto.exists():
|
|
150
164
|
return {}
|
|
@@ -303,22 +317,22 @@ def update_readme(
|
|
|
303
317
|
text = new_text
|
|
304
318
|
changes.append("README: MCP Server heading updated")
|
|
305
319
|
|
|
306
|
-
# 3.
|
|
320
|
+
# 3. MCP action counts in tool table
|
|
307
321
|
action_counts = _count_mcp_actions_per_tool(project_root)
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
)
|
|
312
|
-
if
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
+
changed_tools: list[str] = []
|
|
323
|
+
|
|
324
|
+
def _replace_tool_count(match: re.Match[str]) -> str:
|
|
325
|
+
tool = match.group("tool")
|
|
326
|
+
if tool not in action_counts:
|
|
327
|
+
return match.group(0)
|
|
328
|
+
new_count = str(action_counts[tool])
|
|
329
|
+
if match.group("count") != new_count:
|
|
330
|
+
changed_tools.append(tool)
|
|
331
|
+
return match.group(1) + new_count + match.group(4)
|
|
332
|
+
|
|
333
|
+
text = _TOOL_ROW_RE.sub(_replace_tool_count, text)
|
|
334
|
+
for tool in sorted(set(changed_tools)):
|
|
335
|
+
changes.append(f"README: {tool} action count → {action_counts[tool]}")
|
|
322
336
|
|
|
323
337
|
# 4. CLI verb count
|
|
324
338
|
cli_verbs = metrics.get("cli_verbs", 0)
|