atomadic-forge 0.51.5__tar.gz → 0.52.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.51.5 → atomadic_forge-0.52.0}/.github/workflows/mcp-registry-publish.yml +8 -4
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/workflows/publish-on-tag.yml +6 -8
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/workflows/release.yml +22 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/CHANGELOG.md +44 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/PKG-INFO +4 -4
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/README.md +3 -3
- atomadic_forge-0.52.0/docs/commands/INDEX.md +34 -0
- atomadic_forge-0.52.0/docs/commands/absorb.md +9 -0
- atomadic_forge-0.52.0/docs/commands/audit.md +9 -0
- atomadic_forge-0.52.0/docs/commands/create.md +9 -0
- atomadic_forge-0.52.0/docs/commands/emergent-swarm.md +19 -0
- atomadic_forge-0.52.0/docs/commands/enhancement.md +9 -0
- atomadic_forge-0.52.0/docs/commands/guard-install.md +9 -0
- atomadic_forge-0.52.0/docs/commands/handoff.md +9 -0
- atomadic_forge-0.52.0/docs/commands/harvest.md +9 -0
- atomadic_forge-0.52.0/docs/commands/hive.md +9 -0
- atomadic_forge-0.52.0/docs/commands/materialize.md +9 -0
- atomadic_forge-0.52.0/docs/commands/metrics.md +9 -0
- atomadic_forge-0.52.0/docs/commands/recon-swarm.md +9 -0
- atomadic_forge-0.52.0/docs/commands/relay.md +9 -0
- atomadic_forge-0.52.0/docs/commands/surface.md +9 -0
- atomadic_forge-0.52.0/docs/commands/welcome.md +9 -0
- atomadic_forge-0.52.0/docs/commands/wisdom.md +9 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/pyproject.toml +1 -1
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/forge_metrics.py +65 -1
- atomadic_forge-0.52.0/src/atomadic_forge/a1_at_functions/harvest_absorb.py +170 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/mcp_protocol.py +0 -13
- atomadic_forge-0.52.0/src/atomadic_forge/a3_og_features/absorb_feature.py +134 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/create_feature.py +7 -62
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/emergent_swarm.py +25 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/forge_metrics_feature.py +1 -1
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +3 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/_registry.py +28 -0
- atomadic_forge-0.52.0/src/atomadic_forge/commands/absorb.py +96 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge.egg-info/PKG-INFO +4 -4
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge.egg-info/SOURCES.txt +19 -0
- atomadic_forge-0.51.5/docs/commands/INDEX.md +0 -18
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/FUNDING.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/actions/forge-action/README.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/actions/forge-action/action.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/dependabot.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/pull_request_template.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/workflows/ci.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/workflows/customer-refactor.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/workflows/forge-self-certify.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/workflows/metrics-auto-regen.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/workflows/metrics-drift.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/workflows/release-readiness.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/workflows/surface-drift.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/.github/workflows/uptime.yml +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/ARCHITECTURE.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/CONTRIBUTING.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/LICENSE +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/MANIFEST.in +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/SECURITY.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/assets/Atomadic-Forge-01.png +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/01-getting-started.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/02-commands.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/03-tutorial.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/04-llm-loops.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/05-faq.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/AGENTS_GUIDE.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/AIR_GAPPED.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/CI_CD.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/CODEX_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/COMMANDS.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/FIRST_10_MINUTES.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/FORMALIZATION.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/HIVE_PRIMITIVES.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/HIVE_STATUS.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/IDE_INTEGRATION.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/LANDSCAPE.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/MARKET_POSITIONING.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/MIGRATION.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/MULTI_REPO.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/PROVIDERS.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/README.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/RECEIPT.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/RELAY_PROTOCOL.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/RELEASE_CHECKLIST.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/RELEASE_MESSAGING.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/ROADMAP.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/SHOWCASE.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/SIDECAR.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/STUDIO.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/TOOL_FACTORY_WALKTHROUGH.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/V0.46.0_JUSTIFICATION_REPORT.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/V0.47.0_SELF_TEST_REPORT.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/WHY_NOW.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/WORKER_VS_LOCAL_MCP.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/WORLD_COLLISION.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/chat.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/commandsmith.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/config.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/demo.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/emergent-then-synergy.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/emergent.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/evolve-then-iterate.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/evolve.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/feature-then-emergent.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/iterate.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/synergy-then-emergent.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/commands/synergy.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/compliance/CMMC_AI_MAPPING.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/compliance/CS-1.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/compliance/FDA_PCCP_MAPPING.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/compliance/SR_11-7_MAPPING.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/handoffs/WORKER_AUTO_DEPLOY_2026-05-06.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/tutorials/01-quickstart.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/tutorials/02-your-first-package.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/tutorials/03-the-five-tier-law.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/tutorials/04-plug-in-llms.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/tutorials/05-multi-repo-absorb.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/docs/tutorials/06-javascript-quickstart.md +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/setup.cfg +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/__init__.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/__main__.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/enhancement_proposal_constants.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/handoff_constants.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/hive_constants.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/lifetime_savings_constants.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/materialize_types.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/nexus_constants.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/response_enrichment.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/welcome_constants.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/call_graph.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/chat_context.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/code_signature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/custom_provider_client.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/enhancement_proposal_builder.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/error_hints.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/forge_locate.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/handoff_builder.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/hive_io.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/js_parser.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/lifetime_savings.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/llm_client.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/local_signer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/polyglot_classify.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/polyglot_imports.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/polyglot_surface.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/recipes.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/response_enricher.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/scaffold_polyglot.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/smell_scan.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/test_runner.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/test_selector.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/welcome_narrator.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/wire_check.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/wisdom_capture.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/wisdom_io.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/wisdom_promote.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/wisdom_recall.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/worktree_status.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/nexus_client.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/cherry_hunter.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/cna_check.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/commit_compose.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.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.51.5 → atomadic_forge-0.52.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.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/demo_runner.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/enhancement_proposal_feature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/forge_evolve_session.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/forge_loop.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/forge_loop_session.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/guard_install.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/handoff_feature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/hive_sync.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/lsp_server.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/materialize_feature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/mcp_server.py +1 -1
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/nexus_bridge.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/relay_daemon.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/surface_export.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/tool_factory.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/verify_umbrella.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/welcome_feature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a3_og_features/wisdom_feature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/__init__.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/audit.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/chat.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/commandsmith.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/config_cmd.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/create.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/demo.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/emergent.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/emergent_swarm.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/enhancement.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/evolve.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/guard_install.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/handoff.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/harvest.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/hive.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/iterate.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/materialize.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/metrics.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/recon_swarm.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/relay.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/surface.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/synergy.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/welcome.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/commands/wisdom.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge.egg-info/requires.txt +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_aaaa_nexus_client.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_agent_hire_protocol.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_agent_plan.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_agent_plan_pkg_label.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_agent_summary.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_audit_verb.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_body_extractor_repairs.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_card_renderer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_certify_operational_axis.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_chat.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_classify_tier.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_classify_tier_ast_signals.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_cli_smoke.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_cli_swarm_aliases.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_codex_5_complete.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_codex_6_enforce_polyglot.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_commandsmith.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_compiler_feedback.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_compliance_checker.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_config.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_copilots_copilot.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_cost_circuit_breaker.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_create_feature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_cs1_renderer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_custom_provider.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_dedup_engine.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_demo.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_emergent_compose.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_emergent_signature_extract.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_emergent_synthesize_imports.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_enhancement_proposal.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_error_codes.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_error_hints.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_evolve_js.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_exported_api_check.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_forge_action.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_forge_auth_a1.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_forge_auth_a2.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_forge_enforce.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_generation_quality.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_handoff.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_hierarchical_memory.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_hive_sync.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_ignore_and_docs.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_import_smoke.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_iterate_evolve.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_js_certify.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_js_parser.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_js_recon.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_js_wire.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_lineage_chain.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_ling_provider.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_local_signer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_lsp_protocol.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_manifest_diff.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_materialize_feature.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_mcp_lazy_bootstrap.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_mcp_protocol.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_nexus_bridge.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_ollama_client.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_pipeline.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_plan_apply.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_polyglot_cli_mcp.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_polyglot_full_pipeline.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_polyglot_hardening.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_polyglot_swift_kotlin_go.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_polyglot_symbol_parity.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_pre_audit_smoke.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_precommit_hooks.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_progress_reporter.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_receipt_emitter.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_receipt_schema.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_receipt_signer.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_response_enricher.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_roi_calculator.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_sbom_cmd_text_summary.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_sbom_emitter.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_scaffold.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_sidecar.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_sidecar_validate.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_smell_score_formula.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_stagnation.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_stub_detector.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_surface_export.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_synergy.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_test_runner.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_tier_init_rebuild.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_trust_gate_response.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_verify_suggested_recipe.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_welcome.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_welcome_enhancements.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_whoami_cmd.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_wire_certify.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_wire_suggest_repairs.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_wire_type_checking.py +0 -0
- {atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/tests/test_wisdom.py +0 -0
|
@@ -116,14 +116,18 @@ jobs:
|
|
|
116
116
|
run: |
|
|
117
117
|
set -euo pipefail
|
|
118
118
|
v="${{ steps.ver.outputs.version }}"
|
|
119
|
-
# Allow up to ~30s for the registry to propagate.
|
|
119
|
+
# Allow up to ~30s for the registry to propagate. The search
|
|
120
|
+
# endpoint returns ALL published versions; pick the one
|
|
121
|
+
# marked isLatest. (Earlier versions: we naively read [0]
|
|
122
|
+
# which returned a non-latest result.)
|
|
120
123
|
for i in 1 2 3 4 5 6; do
|
|
121
124
|
sleep 5
|
|
122
125
|
got=$(curl -fsS "https://registry.modelcontextprotocol.io/v0/servers?search=atomadic-forge" \
|
|
123
|
-
| jq -r '.servers[
|
|
124
|
-
|
|
126
|
+
| jq -r '.servers[] | select(._meta."io.modelcontextprotocol.registry/official".isLatest == true) | .server.version' \
|
|
127
|
+
|| echo "")
|
|
128
|
+
echo "registry reports latest version: $got (want $v)"
|
|
125
129
|
if [ "$got" = "$v" ]; then
|
|
126
|
-
echo "PASS: registry shows v$v"
|
|
130
|
+
echo "PASS: registry shows v$v as isLatest"
|
|
127
131
|
exit 0
|
|
128
132
|
fi
|
|
129
133
|
done
|
|
@@ -96,11 +96,11 @@ jobs:
|
|
|
96
96
|
--title "Atomadic Forge ${{ github.ref_name }}" \
|
|
97
97
|
--notes-file /tmp/release_notes.md
|
|
98
98
|
|
|
99
|
-
- name: Fire
|
|
100
|
-
#
|
|
101
|
-
#
|
|
102
|
-
#
|
|
103
|
-
#
|
|
99
|
+
- name: Fire release.yml (which then fires registry after PyPI)
|
|
100
|
+
# Sequential cascade: publish-on-tag → release.yml (PyPI
|
|
101
|
+
# publish) → mcp-registry-publish.yml. release.yml's last step
|
|
102
|
+
# fires the registry via gh workflow run only AFTER PyPI lands,
|
|
103
|
+
# so the registry's PyPI-presence check never 404s.
|
|
104
104
|
env:
|
|
105
105
|
GH_TOKEN: ${{ github.token }}
|
|
106
106
|
V: ${{ steps.version.outputs.version }}
|
|
@@ -108,9 +108,7 @@ jobs:
|
|
|
108
108
|
set +e
|
|
109
109
|
gh workflow run release.yml --repo atomadictech/atomadic-forge \
|
|
110
110
|
-f version="$V" || echo "::warning::release.yml dispatch failed"
|
|
111
|
-
|
|
112
|
-
-f version="$V" || echo "::warning::mcp-registry-publish.yml dispatch failed"
|
|
113
|
-
echo "downstream workflows dispatched for v$V"
|
|
111
|
+
echo "release.yml dispatched for v$V (registry will follow after PyPI)"
|
|
114
112
|
exit 0
|
|
115
113
|
|
|
116
114
|
- name: Dispatch worker redeploy (soft-fail; never blocks release)
|
|
@@ -17,6 +17,9 @@ on:
|
|
|
17
17
|
permissions:
|
|
18
18
|
contents: read
|
|
19
19
|
id-token: write
|
|
20
|
+
# v0.51.6 — actions: write so this workflow can fire the registry
|
|
21
|
+
# publish via gh workflow run after PyPI succeeds.
|
|
22
|
+
actions: write
|
|
20
23
|
|
|
21
24
|
jobs:
|
|
22
25
|
build:
|
|
@@ -64,3 +67,22 @@ jobs:
|
|
|
64
67
|
|
|
65
68
|
- name: Publish distributions
|
|
66
69
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
70
|
+
|
|
71
|
+
- name: Trigger MCP Registry publish (sequential — only after PyPI lands)
|
|
72
|
+
# The registry validates against PyPI; firing it before PyPI
|
|
73
|
+
# propagates returns 404. Only fire after our PyPI publish
|
|
74
|
+
# step has succeeded — guaranteed by needs:[build] + this
|
|
75
|
+
# step's position in publish-pypi.
|
|
76
|
+
env:
|
|
77
|
+
GH_TOKEN: ${{ github.token }}
|
|
78
|
+
V: ${{ github.event.inputs.version || github.event.release.tag_name }}
|
|
79
|
+
run: |
|
|
80
|
+
set +e
|
|
81
|
+
# Strip leading v if it's a tag name.
|
|
82
|
+
v="${V#v}"
|
|
83
|
+
gh workflow run mcp-registry-publish.yml \
|
|
84
|
+
--repo atomadictech/atomadic-forge \
|
|
85
|
+
-f version="$v" \
|
|
86
|
+
|| echo "::warning::registry dispatch failed (worker can be triggered manually)"
|
|
87
|
+
echo "registry publish dispatched for v$v"
|
|
88
|
+
exit 0
|
|
@@ -2,6 +2,50 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
### feat(emergent-swarm): hub-node penalty in `emergent_swarm` scoring
|
|
6
|
+
|
|
7
|
+
Symbols that appear in more than 3 chains are now penalised in
|
|
8
|
+
`score_boosted`. For each doubling of cross-chain frequency above the
|
|
9
|
+
threshold, 10 points are deducted from `score_boosted` (floor at 0).
|
|
10
|
+
This prevents a single high-connectivity connector symbol from occupying
|
|
11
|
+
all top-N emergent candidates; genuinely novel cross-repo chains surface
|
|
12
|
+
instead. Affected candidates gain two new output fields:
|
|
13
|
+
`hub_penalty` and `hub_max_symbol_freq`.
|
|
14
|
+
|
|
15
|
+
### fix(forge_metrics): theorem count now reads from build attestation
|
|
16
|
+
|
|
17
|
+
`forge_metrics.py` now reads `dist/BUILD_ATTESTATION_*.json` when the
|
|
18
|
+
file exists, using the machine-verified Lean4 count as the canonical
|
|
19
|
+
source rather than a raw file scan. Count corrected: 886 → 872.
|
|
20
|
+
`forge_metrics.json` updated accordingly with `"basis": "build_attestation"`.
|
|
21
|
+
|
|
22
|
+
### feat(absorb): new `forge absorb` command and supporting a1/a3 modules
|
|
23
|
+
|
|
24
|
+
`harvest_absorb.py` (a1) — pure helpers for absorbing external Python
|
|
25
|
+
repos: layout detection, package resolution, fingerprinting.
|
|
26
|
+
`absorb_feature.py` (a3) — feature composing `harvest_absorb` and
|
|
27
|
+
`emergent_swarm` for cross-repo composition.
|
|
28
|
+
`commands/absorb.py` — CLI command exposing the absorb feature.
|
|
29
|
+
|
|
30
|
+
### fix(mcp_protocol): remove duplicate dict-key lint violations
|
|
31
|
+
|
|
32
|
+
Removed two pre-existing duplicate dict-key entries from `mcp_protocol.py`.
|
|
33
|
+
|
|
34
|
+
## v0.51.6 — 2026-05-07 — sequential cascade: registry fires AFTER PyPI lands
|
|
35
|
+
|
|
36
|
+
v0.51.5 fired release.yml + mcp-registry-publish.yml in parallel. The
|
|
37
|
+
registry workflow's wait-for-PyPI loop timed out (60s) because PyPI
|
|
38
|
+
build+publish+CDN propagation took longer.
|
|
39
|
+
|
|
40
|
+
Switched to a strict sequential cascade:
|
|
41
|
+
1. publish-on-tag.yml fires release.yml only
|
|
42
|
+
2. release.yml builds, uploads, publishes to PyPI
|
|
43
|
+
3. release.yml's LAST step fires mcp-registry-publish.yml
|
|
44
|
+
4. mcp-registry-publish.yml's wait-for-PyPI loop now never has to
|
|
45
|
+
wait long because PyPI is already there
|
|
46
|
+
|
|
47
|
+
This is the final piece of the zero-touch chain.
|
|
48
|
+
|
|
5
49
|
## v0.51.5 — 2026-05-07 — final cascade fix: workflow_dispatch instead of release event
|
|
6
50
|
|
|
7
51
|
v0.51.4's PAT-based cascade failed because the fine-grained
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atomadic-forge
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.52.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
|
|
@@ -206,9 +206,9 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
|
|
|
206
206
|
|--------|-------|
|
|
207
207
|
| MCP tools | **10 tools · 64 actions** |
|
|
208
208
|
| CLI verbs | **71** |
|
|
209
|
-
| Source files | **211** (~40,
|
|
210
|
-
| Tests | **1,
|
|
211
|
-
| Lean4 formal proofs | **
|
|
209
|
+
| Source files | **211** (~40,195 LOC) |
|
|
210
|
+
| Tests | **1,495 passing** across **97 test files** (1,411 static · pytest expands parametrize to 1,495 collected) |
|
|
211
|
+
| Lean4 formal proofs | **872 theorems** across 30 files (mathematically verified core logic — IP-protected mhed-codex moat) |
|
|
212
212
|
| Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
|
|
213
213
|
| Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
|
|
214
214
|
| Infrastructure cost | **$5/mo** |
|
|
@@ -174,9 +174,9 @@ Full tool reference: [docs/MCP_TOOLS.md](docs/MCP_TOOLS.md) | First call: `welco
|
|
|
174
174
|
|--------|-------|
|
|
175
175
|
| MCP tools | **10 tools · 64 actions** |
|
|
176
176
|
| CLI verbs | **71** |
|
|
177
|
-
| Source files | **211** (~40,
|
|
178
|
-
| Tests | **1,
|
|
179
|
-
| Lean4 formal proofs | **
|
|
177
|
+
| Source files | **211** (~40,195 LOC) |
|
|
178
|
+
| Tests | **1,495 passing** across **97 test files** (1,411 static · pytest expands parametrize to 1,495 collected) |
|
|
179
|
+
| Lean4 formal proofs | **872 theorems** across 30 files (mathematically verified core logic — IP-protected mhed-codex moat) |
|
|
180
180
|
| Monadic tiers | **5** (a0 → a4, strict upward-only composition) |
|
|
181
181
|
| Languages | Python, JS/TS, Swift, Kotlin, Go, Rust |
|
|
182
182
|
| Infrastructure cost | **$5/mo** |
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# ASS-ADE Commands
|
|
2
|
+
|
|
3
|
+
Auto-generated index. One row per top-level CLI verb.
|
|
4
|
+
|
|
5
|
+
| Verb | Help | Source | Surface |
|
|
6
|
+
|------|------|--------|---------|
|
|
7
|
+
| `absorb` | Absorb any Python repo (crewAI, langgraph, autogen, babyagi, …) into a tier-organized Atomadic package. | `atomadic_forge_seed` | `typer_app` |
|
|
8
|
+
| `audit` | Surface the .atomadic-forge lineage log: list runs, inspect saved manifests, replay history. | `atomadic_forge_seed` | `typer_app` |
|
|
9
|
+
| `chat` | Chat with a Forge-aware AI copilot over optional repo context. | `atomadic_forge_seed` | `typer_app` |
|
|
10
|
+
| `commandsmith` | ``atomadic-forge commandsmith`` — manage the auto-wired CLI command registry. | `atomadic_forge_seed` | `typer_app` |
|
|
11
|
+
| `config` | Configure Atomadic Forge — setup wizard + config management. | `atomadic_forge_seed` | `typer_app` |
|
|
12
|
+
| `create` | One-command pipeline: scan local seed repos for emergent compositions and materialize the top-N into a shippable package. | `atomadic_forge_seed` | `typer_app` |
|
|
13
|
+
| `demo` | One-shot launch-video verb: preset evolve + DEMO.md artifact. | `atomadic_forge_seed` | `typer_app` |
|
|
14
|
+
| `emergent` | Synthesise new feature candidates from existing components. | `atomadic_forge_seed` | `typer_app` |
|
|
15
|
+
| `emergent-swarm` | Round-5: cross-repo emergent composition discovery. Find chains visible only across the union of N repos. | `atomadic_forge_seed` | `typer_app` |
|
|
16
|
+
| `emergent-then-synergy` | Run emergent to emit a JSON artifact, then feed it to synergy for the next phase. | `atomadic_forge_seed` | `typer_app` |
|
|
17
|
+
| `enhancement` | Submit / list / show / publish Forge enhancement proposals — the self-improvement loop. Trust-gated at submission, human-gated at publish. | `atomadic_forge_seed` | `typer_app` |
|
|
18
|
+
| `evolve` | Recursive self-improvement: run iterate N times, each round seeded by the previous round's growing catalog. | `atomadic_forge_seed` | `typer_app` |
|
|
19
|
+
| `evolve-then-iterate` | Run evolve to emit a JSON artifact, then feed it to iterate for the next phase. | `atomadic_forge_seed` | `typer_app` |
|
|
20
|
+
| `feature-then-emergent` | Run any feature, then fan its JSON output into emergent scan to surface novel compositions. | `atomadic_forge_seed` | `typer_app` |
|
|
21
|
+
| `guard-install` | Round-5: install the four-layer architectural guard (pre-commit, CI workflow, CONTRIBUTING note, .forge-guard.json). | `atomadic_forge_seed` | `typer_app` |
|
|
22
|
+
| `handoff` | Capture a structured session handoff so the next agent can pick up where this one left off. Writes JSON to .atomadic-forge/handoffs/<session_id>.json. | `atomadic_forge_seed` | `typer_app` |
|
|
23
|
+
| `harvest` | Round-4: find symbols the target lacks but source repos have. Trust-gated by trust threshold. | `atomadic_forge_seed` | `typer_app` |
|
|
24
|
+
| `hive` | Hive sync pipeline — agent registry + observation + consensus. The 4-agent collaboration substrate. | `atomadic_forge_seed` | `typer_app` |
|
|
25
|
+
| `iterate` | Architecturally-coherent code generation: LLM emits, Forge enforces, loop iterates until certify clears. | `atomadic_forge_seed` | `typer_app` |
|
|
26
|
+
| `materialize` | Turn emergent scan candidates into a shippable Python package (scaffold + features + certify). | `atomadic_forge_seed` | `typer_app` |
|
|
27
|
+
| `metrics` | Emit forge_metrics.json — canonical metrics for README/CHANGELOG/welcome/worker. | `atomadic_forge_seed` | `typer_app` |
|
|
28
|
+
| `recon-swarm` | Round-4: walk N repos, return a unified scout report with origin_repo annotations on every symbol. | `atomadic_forge_seed` | `typer_app` |
|
|
29
|
+
| `relay` | Local relay daemon — receive signed job requests from the Worker MCP and dispatch them through the local CLI. v0.14.0-alpha. | `atomadic_forge_seed` | `typer_app` |
|
|
30
|
+
| `surface` | Emit / check / diff the canonical Forge surface artifact (single source of truth for tools, recipes, schemas). | `atomadic_forge_seed` | `typer_app` |
|
|
31
|
+
| `synergy` | Find feature/CLI synergies (producer-consumer pairs that aren't wired together) and optionally implement adapters. | `atomadic_forge_seed` | `typer_app` |
|
|
32
|
+
| `synergy-then-emergent` | Run synergy to emit a JSON artifact, then feed it to emergent for the next phase. | `atomadic_forge_seed` | `typer_app` |
|
|
33
|
+
| `welcome` | First-call handshake — scout + certify + wire packaged into one response so the agent immediately knows the repo state, top strengths, top priorities, and the single most useful next call. | `atomadic_forge_seed` | `typer_app` |
|
|
34
|
+
| `wisdom` | Record / query / list cross-session wisdom — the institutional knowledge layer between lineage events and curated recipes. | `atomadic_forge_seed` | `typer_app` |
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge absorb`
|
|
2
|
+
|
|
3
|
+
_Absorb any Python repo (crewAI, langgraph, autogen, babyagi, …) into a tier-organized Atomadic package._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.absorb`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge audit`
|
|
2
|
+
|
|
3
|
+
_Surface the .atomadic-forge lineage log: list runs, inspect saved manifests, replay history._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.audit`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge create`
|
|
2
|
+
|
|
3
|
+
_One-command pipeline: scan local seed repos for emergent compositions and materialize the top-N into a shippable package._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.create`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# `atomadic-forge emergent-swarm`
|
|
2
|
+
|
|
3
|
+
_Round-5: cross-repo emergent composition discovery. Find chains visible only across the union of N repos._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.emergent_swarm`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
10
|
+
## Scoring
|
|
11
|
+
|
|
12
|
+
Each candidate receives a `score_boosted` value. Candidates whose most
|
|
13
|
+
frequent constituent symbol appears in more than 3 chains across the
|
|
14
|
+
swarm receive a hub-node penalty: 10 points are deducted from
|
|
15
|
+
`score_boosted` per doubling of that symbol's cross-chain frequency
|
|
16
|
+
above the threshold (floor at 0). This prevents a single high-connectivity
|
|
17
|
+
connector from dominating all top-N slots. Penalised candidates carry
|
|
18
|
+
`hub_penalty` and `hub_max_symbol_freq` in their output.
|
|
19
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge enhancement`
|
|
2
|
+
|
|
3
|
+
_Submit / list / show / publish Forge enhancement proposals — the self-improvement loop. Trust-gated at submission, human-gated at publish._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.enhancement`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge guard-install`
|
|
2
|
+
|
|
3
|
+
_Round-5: install the four-layer architectural guard (pre-commit, CI workflow, CONTRIBUTING note, .forge-guard.json)._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.guard_install`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge handoff`
|
|
2
|
+
|
|
3
|
+
_Capture a structured session handoff so the next agent can pick up where this one left off. Writes JSON to .atomadic-forge/handoffs/<session_id>.json._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.handoff`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge harvest`
|
|
2
|
+
|
|
3
|
+
_Round-4: find symbols the target lacks but source repos have. Trust-gated by trust threshold._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.harvest`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge hive`
|
|
2
|
+
|
|
3
|
+
_Hive sync pipeline — agent registry + observation + consensus. The 4-agent collaboration substrate._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.hive`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge materialize`
|
|
2
|
+
|
|
3
|
+
_Turn emergent scan candidates into a shippable Python package (scaffold + features + certify)._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.materialize`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge recon-swarm`
|
|
2
|
+
|
|
3
|
+
_Round-4: walk N repos, return a unified scout report with origin_repo annotations on every symbol._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.recon_swarm`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge relay`
|
|
2
|
+
|
|
3
|
+
_Local relay daemon — receive signed job requests from the Worker MCP and dispatch them through the local CLI. v0.14.0-alpha._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.relay`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge surface`
|
|
2
|
+
|
|
3
|
+
_Emit / check / diff the canonical Forge surface artifact (single source of truth for tools, recipes, schemas)._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.surface`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge welcome`
|
|
2
|
+
|
|
3
|
+
_First-call handshake — scout + certify + wire packaged into one response so the agent immediately knows the repo state, top strengths, top priorities, and the single most useful next call._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.welcome`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# `atomadic-forge wisdom`
|
|
2
|
+
|
|
3
|
+
_Record / query / list cross-session wisdom — the institutional knowledge layer between lineage events and curated recipes._
|
|
4
|
+
|
|
5
|
+
- **Module**: `atomadic_forge.commands.wisdom`
|
|
6
|
+
- **Surface**: `typer_app`
|
|
7
|
+
- **Source root**: `atomadic_forge_seed`
|
|
8
|
+
- **Hidden**: `False`
|
|
9
|
+
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "atomadic-forge"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.52.0"
|
|
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"
|
{atomadic_forge-0.51.5 → atomadic_forge-0.52.0}/src/atomadic_forge/a1_at_functions/forge_metrics.py
RENAMED
|
@@ -38,12 +38,17 @@ _LEAN_THEOREM_RE = re.compile(
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
def count_lean_theorems(mhed_codex_root: Path) -> dict[str, Any]:
|
|
41
|
-
"""
|
|
41
|
+
"""Return the certified Lean theorem count for a Codex proof tree.
|
|
42
42
|
|
|
43
43
|
The mhed-corpus repository is IP-protected — this function only
|
|
44
44
|
surfaces aggregate counts to the public artifact. Source paths and
|
|
45
45
|
file names are NEVER returned. Callers must not log the input path.
|
|
46
46
|
|
|
47
|
+
Prefer a build attestation when present: that file is the certified
|
|
48
|
+
proof-tree boundary produced by ``lake build``. A raw ``proofs/`` scan
|
|
49
|
+
is only a fallback for local working trees that have not produced an
|
|
50
|
+
attestation yet; it can overcount scratch or archived Lean files.
|
|
51
|
+
|
|
47
52
|
Args:
|
|
48
53
|
mhed_codex_root: directory containing a ``proofs/`` subtree of
|
|
49
54
|
``.lean`` files. If the directory does not exist or contains
|
|
@@ -54,6 +59,10 @@ def count_lean_theorems(mhed_codex_root: Path) -> dict[str, Any]:
|
|
|
54
59
|
combined), ``theorems``, ``lemmas``, ``files``, ``found``.
|
|
55
60
|
No paths. Counts are always int; never raises on missing path.
|
|
56
61
|
"""
|
|
62
|
+
attested = _count_lean_theorems_from_attestation(Path(mhed_codex_root))
|
|
63
|
+
if attested is not None:
|
|
64
|
+
return attested
|
|
65
|
+
|
|
57
66
|
proofs_dir = Path(mhed_codex_root) / "proofs"
|
|
58
67
|
if not proofs_dir.is_dir():
|
|
59
68
|
return {
|
|
@@ -78,6 +87,61 @@ def count_lean_theorems(mhed_codex_root: Path) -> dict[str, Any]:
|
|
|
78
87
|
"lemmas": lemmas,
|
|
79
88
|
"files": len(files),
|
|
80
89
|
"found": True,
|
|
90
|
+
"basis": "raw_proofs_scan",
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def _count_lean_theorems_from_attestation(
|
|
95
|
+
mhed_codex_root: Path,
|
|
96
|
+
) -> dict[str, Any] | None:
|
|
97
|
+
"""Read the newest build attestation if one exists.
|
|
98
|
+
|
|
99
|
+
Returns only aggregate fields safe for ``forge_metrics.json``. The
|
|
100
|
+
per-module hashes; those are deliberately not copied into Forge's public
|
|
101
|
+
metrics surface. The aggregate proof-tree hash is public-safe and lets
|
|
102
|
+
downstream agents verify the exact attested boundary.
|
|
103
|
+
"""
|
|
104
|
+
dist_dir = Path(mhed_codex_root) / "dist"
|
|
105
|
+
if not dist_dir.is_dir():
|
|
106
|
+
return None
|
|
107
|
+
attestations = sorted(dist_dir.glob("BUILD_ATTESTATION_*.json"))
|
|
108
|
+
if not attestations:
|
|
109
|
+
return None
|
|
110
|
+
try:
|
|
111
|
+
data = json.loads(attestations[-1].read_text(encoding="utf-8"))
|
|
112
|
+
except (OSError, UnicodeDecodeError, json.JSONDecodeError):
|
|
113
|
+
return None
|
|
114
|
+
totals = data.get("totals")
|
|
115
|
+
if not isinstance(totals, dict):
|
|
116
|
+
return None
|
|
117
|
+
try:
|
|
118
|
+
count = int(totals["theorems_and_lemmas"])
|
|
119
|
+
sorry = int(totals.get("sorry", 0))
|
|
120
|
+
admit = int(totals.get("admit", 0))
|
|
121
|
+
modules = int(totals.get("modules", 0))
|
|
122
|
+
agent_rule_axioms = int(totals.get("agent_rule_axioms", 0))
|
|
123
|
+
free_parameters = int(totals.get("free_parameters_fit_to_data", 0))
|
|
124
|
+
except (KeyError, TypeError, ValueError):
|
|
125
|
+
return None
|
|
126
|
+
proof_tree = data.get("proof_tree")
|
|
127
|
+
proof_hash = ""
|
|
128
|
+
if isinstance(proof_tree, dict):
|
|
129
|
+
proof_hash = str(proof_tree.get("sha256_of_sorted_module_hashes", ""))
|
|
130
|
+
return {
|
|
131
|
+
"count": count,
|
|
132
|
+
"theorems": count,
|
|
133
|
+
"lemmas": 0,
|
|
134
|
+
"files": modules,
|
|
135
|
+
"modules": modules,
|
|
136
|
+
"sorry": sorry,
|
|
137
|
+
"admit": admit,
|
|
138
|
+
"agent_rule_axioms": agent_rule_axioms,
|
|
139
|
+
"free_parameters_fit_to_data": free_parameters,
|
|
140
|
+
"found": True,
|
|
141
|
+
"basis": "build_attestation",
|
|
142
|
+
"attestation_issued_at": str(data.get("issued_at", "")),
|
|
143
|
+
"proof_tree_hash": proof_hash,
|
|
144
|
+
"lake_build_status": str(data.get("lake_build_status", "")),
|
|
81
145
|
}
|
|
82
146
|
|
|
83
147
|
|