atomadic-forge 0.6.1__tar.gz → 0.14.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.14.0/.github/FUNDING.yml +5 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/actions/forge-action/README.md +130 -130
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/actions/forge-action/action.yml +227 -227
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/workflows/ci.yml +96 -96
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/workflows/customer-refactor.yml +302 -302
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/workflows/forge-self-certify.yml +54 -54
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/workflows/release.yml +55 -55
- atomadic_forge-0.14.0/.github/workflows/surface-drift.yml +34 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/ARCHITECTURE.md +147 -147
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/CHANGELOG.md +1440 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/PKG-INFO +685 -510
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/README.md +653 -478
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/01-getting-started.md +285 -232
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/02-commands.md +1191 -670
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/03-tutorial.md +328 -328
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/04-llm-loops.md +118 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/05-faq.md +541 -472
- atomadic_forge-0.14.0/docs/AGENTS_GUIDE.md +720 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/AIR_GAPPED.md +161 -161
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/CI_CD.md +271 -192
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/CODEX_WALKTHROUGH.md +124 -124
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/COMMANDS.md +869 -794
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/FIRST_10_MINUTES.md +211 -200
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/FORMALIZATION.md +197 -197
- atomadic_forge-0.14.0/docs/HIVE_PRIMITIVES.md +225 -0
- atomadic_forge-0.14.0/docs/HIVE_STATUS.md +362 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/LANDSCAPE.md +111 -111
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/MARKET_POSITIONING.md +11 -1
- atomadic_forge-0.14.0/docs/MIGRATION.md +607 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/MULTI_REPO.md +202 -202
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/README.md +138 -138
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/RECEIPT.md +305 -305
- atomadic_forge-0.14.0/docs/RELAY_PROTOCOL.md +255 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/RELEASE_CHECKLIST.md +7 -2
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/RELEASE_MESSAGING.md +14 -1
- atomadic_forge-0.14.0/docs/ROADMAP.md +255 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/SHOWCASE.md +241 -241
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/SIDECAR.md +143 -139
- atomadic_forge-0.14.0/docs/TOOL_FACTORY_WALKTHROUGH.md +229 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/WHY_NOW.md +119 -119
- atomadic_forge-0.14.0/docs/WORKER_VS_LOCAL_MCP.md +318 -0
- atomadic_forge-0.14.0/docs/WORLD_COLLISION.md +239 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/INDEX.md +18 -18
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/chat.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/commandsmith.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/config.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/demo.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/emergent-then-synergy.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/emergent.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/evolve-then-iterate.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/evolve.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/feature-then-emergent.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/iterate.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/synergy-then-emergent.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/commands/synergy.md +9 -9
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/compliance/CMMC_AI_MAPPING.md +157 -157
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/compliance/CS-1.md +203 -203
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/compliance/EU_AI_ACT_ANNEX_IV.md +145 -145
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/compliance/FDA_PCCP_MAPPING.md +138 -138
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/compliance/SR_11-7_MAPPING.md +104 -104
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/tutorials/01-quickstart.md +91 -91
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/tutorials/03-the-five-tier-law.md +133 -133
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/tutorials/05-multi-repo-absorb.md +155 -155
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/tutorials/06-javascript-quickstart.md +244 -242
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/pyproject.toml +90 -90
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/setup.cfg +4 -4
- atomadic_forge-0.14.0/src/atomadic_forge/__init__.py +24 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/agent_plan_schema.py +120 -120
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/auth_constants.py +150 -132
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/error_codes.py +296 -296
- atomadic_forge-0.14.0/src/atomadic_forge/a0_qk_constants/handoff_constants.py +32 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a0_qk_constants/hive_constants.py +108 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/lang_extensions.py +192 -154
- atomadic_forge-0.14.0/src/atomadic_forge/a0_qk_constants/mhed_invariants.py +134 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a0_qk_constants/nexus_constants.py +66 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/policy_schema.py +48 -48
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/receipt_schema.py +311 -311
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/roi_constants.py +96 -96
- atomadic_forge-0.14.0/src/atomadic_forge/a0_qk_constants/schema_version_registry.py +139 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/sidecar_schema.py +81 -81
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/synergy_types.py +14 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a0_qk_constants/wisdom_constants.py +47 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/agent_context_pack.py +446 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/agent_memory.py +139 -139
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/agent_plan_emitter.py +325 -325
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/agent_summary.py +277 -277
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/body_extractor.py +140 -21
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/call_graph.py +378 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/card_renderer.py +210 -210
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/certify_checks.py +75 -31
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/chat_context.py +170 -170
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/classify_tier.py +224 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/code_signature.py +197 -197
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/compiler_feedback.py +94 -94
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/compliance_checker.py +228 -228
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/cs1_renderer.py +588 -588
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/emergent_compose.py +37 -2
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/emergent_rank.py +209 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/enforce_planner.py +258 -208
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/error_hints.py +105 -105
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/exported_api_check.py +188 -188
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/forge_auth.py +223 -217
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/forge_locate.py +179 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/handoff_builder.py +144 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/hive_consensus_math.py +130 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/hive_io.py +226 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/intent_similarity.py +113 -113
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/js_parser.py +539 -539
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/lineage_chain.py +144 -144
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/lineage_reader.py +107 -107
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/llm_client.py +555 -555
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/local_signer.py +134 -134
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/lsp_protocol.py +379 -379
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/manifest_diff.py +314 -314
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/mcp_protocol.py +3795 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/patch_scorer.py +290 -272
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/plan_adapter.py +75 -75
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/policy_loader.py +107 -107
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/preflight_change.py +241 -241
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/progress_reporter.py +81 -81
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/receipt_emitter.py +291 -291
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/recipes.py +88 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/repo_explainer.py +124 -124
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/research_note_distiller.py +95 -95
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/roi_calculator.py +264 -264
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/rollback_planner.py +147 -147
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/sbom_emitter.py +155 -155
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/scout_walk.py +410 -309
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/sidecar_parser.py +161 -161
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/sidecar_validator.py +202 -202
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/smell_scan.py +276 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/synergy_detect.py +352 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/synergy_render.py +114 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +334 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/test_runner.py +194 -194
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/test_selector.py +147 -147
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/tool_composer.py +168 -135
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/trust_gate_response.py +221 -221
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/validation_commands.py +183 -183
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/wire_check.py +487 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/wisdom_capture.py +129 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/wisdom_io.py +136 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/wisdom_promote.py +168 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/wisdom_recall.py +113 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a1_at_functions/worktree_status.py +209 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a2_mo_composites/cost_circuit_breaker.py +266 -266
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a2_mo_composites/cross_agent_intent_deduplicator.py +69 -69
- atomadic_forge-0.14.0/src/atomadic_forge/a2_mo_composites/evolve_session_store.py +185 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a2_mo_composites/forge_auth_client.py +254 -251
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a2_mo_composites/hierarchical_memory.py +307 -307
- atomadic_forge-0.14.0/src/atomadic_forge/a2_mo_composites/iterate_session_store.py +194 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a2_mo_composites/lineage_chain_store.py +122 -122
- atomadic_forge-0.14.0/src/atomadic_forge/a2_mo_composites/nexus_client.py +159 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a2_mo_composites/plan_store.py +164 -164
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a2_mo_composites/receipt_signer.py +231 -231
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/agent_hire_protocol.py +228 -228
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/cherry_hunter.py +254 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/cna_check.py +280 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/commandsmith_feature.py +267 -267
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/commit_compose.py +177 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/dedup_engine.py +280 -220
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/__init__.py +3 -3
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a0_qk_constants/__init__.py +4 -4
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/src/mixed_pkg/a1_at_functions/__init__.py +14 -14
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/conftest.py +10 -10
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/demo_packages/mixed_py_js/tests/test_mixed.py +18 -18
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/demo_runner.py +489 -489
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/emergent_feature.py +101 -95
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/emergent_swarm.py +265 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/forge_enforce.py +107 -107
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/forge_evolve_session.py +306 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/forge_loop.py +528 -528
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/forge_loop_session.py +271 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/forge_pipeline.py +295 -295
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/forge_plan_apply.py +222 -222
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/guard_install.py +284 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/handoff_feature.py +121 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/hive_sync.py +466 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/lsp_server.py +98 -98
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/mcp_server.py +1064 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/nexus_bridge.py +111 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/relay_daemon.py +189 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/surface_export.py +175 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/synergy_feature.py +65 -65
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/tool_factory.py +499 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/verify_umbrella.py +354 -0
- atomadic_forge-0.14.0/src/atomadic_forge/a3_og_features/wisdom_feature.py +149 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a4_sy_orchestration/cli.py +1548 -1378
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a4_sy_orchestration/copilots_cmd.py +263 -234
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a4_sy_orchestration/login_cmd.py +8 -6
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a4_sy_orchestration/whoami_cmd.py +159 -159
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/_registry.py +36 -36
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/audit.py +142 -142
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/commandsmith.py +176 -176
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/demo.py +82 -82
- atomadic_forge-0.14.0/src/atomadic_forge/commands/emergent_swarm.py +139 -0
- atomadic_forge-0.14.0/src/atomadic_forge/commands/guard_install.py +93 -0
- atomadic_forge-0.14.0/src/atomadic_forge/commands/handoff.py +177 -0
- atomadic_forge-0.14.0/src/atomadic_forge/commands/harvest.py +89 -0
- atomadic_forge-0.14.0/src/atomadic_forge/commands/hive.py +437 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/iterate.py +140 -140
- atomadic_forge-0.14.0/src/atomadic_forge/commands/recon_swarm.py +76 -0
- atomadic_forge-0.14.0/src/atomadic_forge/commands/relay.py +107 -0
- atomadic_forge-0.14.0/src/atomadic_forge/commands/surface.py +152 -0
- atomadic_forge-0.14.0/src/atomadic_forge/commands/wisdom.py +272 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge.egg-info/PKG-INFO +685 -510
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge.egg-info/SOURCES.txt +64 -2
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_agent_hire_protocol.py +99 -99
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_agent_plan.py +282 -282
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_agent_summary.py +329 -329
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_audit_verb.py +169 -169
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_card_renderer.py +200 -200
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_chat.py +46 -46
- atomadic_forge-0.14.0/tests/test_classify_tier_ast_signals.py +208 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_cli_smoke.py +229 -199
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_codex_5_complete.py +448 -448
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_codex_6_enforce_polyglot.py +203 -202
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_compiler_feedback.py +203 -203
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_compliance_checker.py +245 -245
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_copilots_copilot.py +464 -395
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_cost_circuit_breaker.py +95 -95
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_cs1_renderer.py +368 -368
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_dedup_engine.py +157 -155
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_error_codes.py +241 -241
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_error_hints.py +127 -127
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_exported_api_check.py +105 -150
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_forge_action.py +259 -259
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_forge_auth_a1.py +251 -228
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_forge_auth_a2.py +391 -376
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_forge_enforce.py +320 -266
- atomadic_forge-0.14.0/tests/test_handoff.py +241 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_hierarchical_memory.py +90 -90
- atomadic_forge-0.14.0/tests/test_hive_sync.py +229 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_ignore_and_docs.py +309 -270
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_js_certify.py +76 -76
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_js_parser.py +152 -152
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_js_recon.py +101 -101
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_js_wire.py +94 -94
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_lineage_chain.py +255 -255
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_local_signer.py +185 -185
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_lsp_protocol.py +302 -302
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_manifest_diff.py +201 -201
- atomadic_forge-0.14.0/tests/test_mcp_protocol.py +1844 -0
- atomadic_forge-0.14.0/tests/test_nexus_bridge.py +124 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_plan_apply.py +378 -378
- atomadic_forge-0.14.0/tests/test_polyglot_swift_kotlin_go.py +201 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_pre_audit_smoke.py +235 -235
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_precommit_hooks.py +175 -175
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_progress_reporter.py +103 -103
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_receipt_emitter.py +222 -222
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_receipt_schema.py +206 -206
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_receipt_signer.py +217 -217
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_roi_calculator.py +243 -243
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_sbom_emitter.py +141 -141
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_scaffold.py +111 -111
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_sidecar.py +188 -188
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_sidecar_validate.py +196 -196
- atomadic_forge-0.14.0/tests/test_smell_score_formula.py +96 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_stub_detector.py +163 -163
- atomadic_forge-0.14.0/tests/test_surface_export.py +204 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_synergy.py +6 -2
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_test_runner.py +67 -1
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_trust_gate_response.py +108 -108
- atomadic_forge-0.14.0/tests/test_verify_suggested_recipe.py +163 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_whoami_cmd.py +126 -126
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_wire_certify.py +56 -56
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_wire_suggest_repairs.py +145 -145
- atomadic_forge-0.14.0/tests/test_wire_type_checking.py +179 -0
- atomadic_forge-0.14.0/tests/test_wisdom.py +261 -0
- atomadic_forge-0.6.1/.github/workflows/forge-studio-ci.yml +0 -60
- atomadic_forge-0.6.1/docs/AGENTS_GUIDE.md +0 -486
- atomadic_forge-0.6.1/docs/ROADMAP.md +0 -112
- atomadic_forge-0.6.1/src/atomadic_forge/__init__.py +0 -12
- atomadic_forge-0.6.1/src/atomadic_forge/a1_at_functions/agent_context_pack.py +0 -166
- atomadic_forge-0.6.1/src/atomadic_forge/a1_at_functions/classify_tier.py +0 -115
- atomadic_forge-0.6.1/src/atomadic_forge/a1_at_functions/emergent_rank.py +0 -116
- atomadic_forge-0.6.1/src/atomadic_forge/a1_at_functions/mcp_protocol.py +0 -1234
- atomadic_forge-0.6.1/src/atomadic_forge/a1_at_functions/synergy_detect.py +0 -166
- atomadic_forge-0.6.1/src/atomadic_forge/a1_at_functions/synergy_surface_extract.py +0 -163
- atomadic_forge-0.6.1/src/atomadic_forge/a1_at_functions/wire_check.py +0 -260
- atomadic_forge-0.6.1/src/atomadic_forge/a3_og_features/mcp_server.py +0 -356
- atomadic_forge-0.6.1/tests/test_mcp_protocol.py +0 -397
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/dependabot.yml +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/.github/pull_request_template.md +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/CONTRIBUTING.md +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/LICENSE +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/MANIFEST.in +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/SECURITY.md +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/assets/Atomadic-Forge-01.png +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/STUDIO.md +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/tutorials/02-your-first-package.md +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/docs/tutorials/04-plug-in-llms.md +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/__main__.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/__init__.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/commandsmith_types.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/config_defaults.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/emergent_types.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/forge_types.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/gen_language.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/semantic_types.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a0_qk_constants/tier_names.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/__init__.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/cherry_pick.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/commandsmith_discover.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/commandsmith_render.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/config_io.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/doc_synthesizer.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/emergent_signature_extract.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/emergent_synthesize.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/evolution_log.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/forge_feedback.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/generation_quality.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/import_repair.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/import_smoke.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/provider_detect.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/provider_resolver.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/scaffold_js.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/scaffold_pyproject.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/scaffold_starter.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/stub_detector.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/tier_init_rebuild.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a1_at_functions/transcript_log.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a2_mo_composites/__init__.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a2_mo_composites/manifest_store.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/__init__.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/emergent_pipeline_integration.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/forge_evolve.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a3_og_features/setup_wizard.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/a4_sy_orchestration/__init__.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/__init__.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/chat.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/config_cmd.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/emergent.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/emergent_then_synergy.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/evolve.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/evolve_then_iterate.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/feature_then_emergent.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/synergy.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge/commands/synergy_then_emergent.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge.egg-info/dependency_links.txt +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge.egg-info/entry_points.txt +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge.egg-info/requires.txt +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/src/atomadic_forge.egg-info/top_level.txt +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_aaaa_nexus_client.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_body_extractor_repairs.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_certify_operational_axis.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_classify_tier.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_commandsmith.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_config.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_demo.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_emergent_compose.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_emergent_signature_extract.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_evolve_js.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_generation_quality.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_import_smoke.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_iterate_evolve.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_ling_provider.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_ollama_client.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_pipeline.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_stagnation.py +0 -0
- {atomadic_forge-0.6.1 → atomadic_forge-0.14.0}/tests/test_tier_init_rebuild.py +0 -0
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
# forge-action
|
|
2
|
-
|
|
3
|
-
[](https://github.com/atomadictech/atomadic-forge)
|
|
4
|
-
|
|
5
|
-
A GitHub Action that runs **`forge wire` + `forge certify`** on a
|
|
6
|
-
tier-organized package and posts a **sticky PR comment** with the
|
|
7
|
-
rendered Receipt card. Composite action — no Docker, no extra runtime.
|
|
8
|
-
|
|
9
|
-
This is the Lane C W1 deliverable from the Atomadic Forge Golden Path.
|
|
10
|
-
Eventually moves to its own repo (`atomadictech/forge-action`); today
|
|
11
|
-
it ships in-tree under `.github/actions/forge-action/` so the action's
|
|
12
|
-
ref tracks the Forge release that emitted it.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## One-line install
|
|
17
|
-
|
|
18
|
-
In a consuming repo, add `.github/workflows/forge.yml`:
|
|
19
|
-
|
|
20
|
-
```yaml
|
|
21
|
-
name: Atomadic Forge — architecture gate
|
|
22
|
-
on:
|
|
23
|
-
pull_request:
|
|
24
|
-
push:
|
|
25
|
-
branches: [main]
|
|
26
|
-
|
|
27
|
-
permissions:
|
|
28
|
-
contents: read
|
|
29
|
-
pull-requests: write # required to post the sticky comment
|
|
30
|
-
|
|
31
|
-
jobs:
|
|
32
|
-
forge:
|
|
33
|
-
runs-on: ubuntu-latest
|
|
34
|
-
steps:
|
|
35
|
-
- uses: actions/checkout@v4
|
|
36
|
-
- uses: atomadictech/atomadic-forge/.github/actions/forge-action@main
|
|
37
|
-
with:
|
|
38
|
-
package_root: src/your_package
|
|
39
|
-
package_name: your_package
|
|
40
|
-
fail_under: '75'
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
That's it. The action will:
|
|
44
|
-
|
|
45
|
-
1. Install Forge from the same ref the action checked out at.
|
|
46
|
-
2. Run `forge wire <package_root> --fail-on-violations --json` —
|
|
47
|
-
exits 1 on any upward-import violation.
|
|
48
|
-
3. Run `forge certify . --fail-under <N> --emit-receipt
|
|
49
|
-
.atomadic-forge/receipt.json --print-card --json` — exits 1 below
|
|
50
|
-
the threshold.
|
|
51
|
-
4. Upload `wire.json`, `certify.json`, `receipt.json`, and the
|
|
52
|
-
rendered card as a 14-day build artifact.
|
|
53
|
-
5. Post (or update) a single sticky PR comment with the rendered card
|
|
54
|
-
and a one-line verdict summary.
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
## Inputs
|
|
59
|
-
|
|
60
|
-
| Name | Required | Default | Notes |
|
|
61
|
-
|---|---|---|---|
|
|
62
|
-
| `package_root` | yes | – | Tier-organized package path (e.g. `src/your_package`) |
|
|
63
|
-
| `project_root` | no | `.` | Project root passed to `forge certify` |
|
|
64
|
-
| `package_name` | no | `''` | Forwarded to `forge certify --package` |
|
|
65
|
-
| `fail_under` | no | `'75'` | Certify threshold; below this, the job fails |
|
|
66
|
-
| `receipt_path` | no | `.atomadic-forge/receipt.json` | Receipt JSON emit path (relative to `project_root`) |
|
|
67
|
-
| `python_version` | no | `'3.11'` | Python for the Forge install |
|
|
68
|
-
| `forge_ref` | no | (action ref) | Override which `atomadic-forge` ref to install |
|
|
69
|
-
| `comment_on_pr` | no | `'true'` | Set to `'false'` to skip the sticky comment |
|
|
70
|
-
| `upload_artifacts` | no | `'true'` | Set to `'false'` to skip the artifact upload |
|
|
71
|
-
|
|
72
|
-
## Outputs
|
|
73
|
-
|
|
74
|
-
| Name | Type | Notes |
|
|
75
|
-
|---|---|---|
|
|
76
|
-
| `certify_score` | string | The certify score (0–100) as text |
|
|
77
|
-
| `wire_verdict` | string | `PASS` or `FAIL` |
|
|
78
|
-
| `receipt_path` | string | Echoes back the input `receipt_path` |
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Soft-fail discipline
|
|
83
|
-
|
|
84
|
-
- **Wire and certify gates fail the job by themselves.** The
|
|
85
|
-
`--fail-on-violations` and `--fail-under` flags are native (shipped
|
|
86
|
-
in 0.2.x); no `python -c` workarounds.
|
|
87
|
-
- **The PR comment is best-effort.** When the workflow runs from a
|
|
88
|
-
fork or without `pull-requests: write`, the comment step is skipped
|
|
89
|
-
and the job still reports its real verdict via exit code.
|
|
90
|
-
- **The Receipt is signable.** When `AAAA_NEXUS_API_KEY` is available
|
|
91
|
-
in the environment and the consuming workflow re-invokes `forge
|
|
92
|
-
certify --sign`, the Receipt's `signatures.aaaa_nexus` field is
|
|
93
|
-
populated. `forge-action` does not call `--sign` by default — most
|
|
94
|
-
CI runs are unsigned dev attestations.
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## What the sticky comment looks like
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
### Atomadic Forge — wire + certify
|
|
102
|
-
|
|
103
|
-
**wire:** `PASS` · **certify:** `100.0/100`
|
|
104
|
-
|
|
105
|
-
╔══════════════════════════════════════════════════════════╗
|
|
106
|
-
│ Atomadic Forge Receipt atomadic-forge.receipt/v1 │
|
|
107
|
-
│ ✓ PASS forge 0.2.2 │
|
|
108
|
-
│ atomadic-forge │
|
|
109
|
-
│ CERTIFY 100.0 / 100 │
|
|
110
|
-
│ docs ✓ tests ✓ layout ✓ wire ✓ │
|
|
111
|
-
│ WIRE PASS (0 violations) │
|
|
112
|
-
│ SCOUT 952 symbols (python) 952 tier-placed │
|
|
113
|
-
╚══════════════════════════════════════════════════════════╝
|
|
114
|
-
|
|
115
|
-
Posted by forge-action. The card and JSON receipt are also uploaded
|
|
116
|
-
as build artifacts on this run.
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
Updated in place on every push — never spams the PR.
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Status
|
|
124
|
-
|
|
125
|
-
- **Today (Lane C W1):** in-tree under `.github/actions/forge-action/`,
|
|
126
|
-
ref-pinned to the consuming Forge release.
|
|
127
|
-
- **Lane C W12 (planned):** dedicated repo `atomadictech/forge-action`
|
|
128
|
-
+ Marketplace listing.
|
|
129
|
-
- **Lane C W16+ (planned):** GitHub App variant that opens weekly
|
|
130
|
-
drift-PRs via `forge iterate --dry-run`.
|
|
1
|
+
# forge-action
|
|
2
|
+
|
|
3
|
+
[](https://github.com/atomadictech/atomadic-forge)
|
|
4
|
+
|
|
5
|
+
A GitHub Action that runs **`forge wire` + `forge certify`** on a
|
|
6
|
+
tier-organized package and posts a **sticky PR comment** with the
|
|
7
|
+
rendered Receipt card. Composite action — no Docker, no extra runtime.
|
|
8
|
+
|
|
9
|
+
This is the Lane C W1 deliverable from the Atomadic Forge Golden Path.
|
|
10
|
+
Eventually moves to its own repo (`atomadictech/forge-action`); today
|
|
11
|
+
it ships in-tree under `.github/actions/forge-action/` so the action's
|
|
12
|
+
ref tracks the Forge release that emitted it.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## One-line install
|
|
17
|
+
|
|
18
|
+
In a consuming repo, add `.github/workflows/forge.yml`:
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
name: Atomadic Forge — architecture gate
|
|
22
|
+
on:
|
|
23
|
+
pull_request:
|
|
24
|
+
push:
|
|
25
|
+
branches: [main]
|
|
26
|
+
|
|
27
|
+
permissions:
|
|
28
|
+
contents: read
|
|
29
|
+
pull-requests: write # required to post the sticky comment
|
|
30
|
+
|
|
31
|
+
jobs:
|
|
32
|
+
forge:
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@v4
|
|
36
|
+
- uses: atomadictech/atomadic-forge/.github/actions/forge-action@main
|
|
37
|
+
with:
|
|
38
|
+
package_root: src/your_package
|
|
39
|
+
package_name: your_package
|
|
40
|
+
fail_under: '75'
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
That's it. The action will:
|
|
44
|
+
|
|
45
|
+
1. Install Forge from the same ref the action checked out at.
|
|
46
|
+
2. Run `forge wire <package_root> --fail-on-violations --json` —
|
|
47
|
+
exits 1 on any upward-import violation.
|
|
48
|
+
3. Run `forge certify . --fail-under <N> --emit-receipt
|
|
49
|
+
.atomadic-forge/receipt.json --print-card --json` — exits 1 below
|
|
50
|
+
the threshold.
|
|
51
|
+
4. Upload `wire.json`, `certify.json`, `receipt.json`, and the
|
|
52
|
+
rendered card as a 14-day build artifact.
|
|
53
|
+
5. Post (or update) a single sticky PR comment with the rendered card
|
|
54
|
+
and a one-line verdict summary.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Inputs
|
|
59
|
+
|
|
60
|
+
| Name | Required | Default | Notes |
|
|
61
|
+
|---|---|---|---|
|
|
62
|
+
| `package_root` | yes | – | Tier-organized package path (e.g. `src/your_package`) |
|
|
63
|
+
| `project_root` | no | `.` | Project root passed to `forge certify` |
|
|
64
|
+
| `package_name` | no | `''` | Forwarded to `forge certify --package` |
|
|
65
|
+
| `fail_under` | no | `'75'` | Certify threshold; below this, the job fails |
|
|
66
|
+
| `receipt_path` | no | `.atomadic-forge/receipt.json` | Receipt JSON emit path (relative to `project_root`) |
|
|
67
|
+
| `python_version` | no | `'3.11'` | Python for the Forge install |
|
|
68
|
+
| `forge_ref` | no | (action ref) | Override which `atomadic-forge` ref to install |
|
|
69
|
+
| `comment_on_pr` | no | `'true'` | Set to `'false'` to skip the sticky comment |
|
|
70
|
+
| `upload_artifacts` | no | `'true'` | Set to `'false'` to skip the artifact upload |
|
|
71
|
+
|
|
72
|
+
## Outputs
|
|
73
|
+
|
|
74
|
+
| Name | Type | Notes |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| `certify_score` | string | The certify score (0–100) as text |
|
|
77
|
+
| `wire_verdict` | string | `PASS` or `FAIL` |
|
|
78
|
+
| `receipt_path` | string | Echoes back the input `receipt_path` |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Soft-fail discipline
|
|
83
|
+
|
|
84
|
+
- **Wire and certify gates fail the job by themselves.** The
|
|
85
|
+
`--fail-on-violations` and `--fail-under` flags are native (shipped
|
|
86
|
+
in 0.2.x); no `python -c` workarounds.
|
|
87
|
+
- **The PR comment is best-effort.** When the workflow runs from a
|
|
88
|
+
fork or without `pull-requests: write`, the comment step is skipped
|
|
89
|
+
and the job still reports its real verdict via exit code.
|
|
90
|
+
- **The Receipt is signable.** When `AAAA_NEXUS_API_KEY` is available
|
|
91
|
+
in the environment and the consuming workflow re-invokes `forge
|
|
92
|
+
certify --sign`, the Receipt's `signatures.aaaa_nexus` field is
|
|
93
|
+
populated. `forge-action` does not call `--sign` by default — most
|
|
94
|
+
CI runs are unsigned dev attestations.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## What the sticky comment looks like
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
### Atomadic Forge — wire + certify
|
|
102
|
+
|
|
103
|
+
**wire:** `PASS` · **certify:** `100.0/100`
|
|
104
|
+
|
|
105
|
+
╔══════════════════════════════════════════════════════════╗
|
|
106
|
+
│ Atomadic Forge Receipt atomadic-forge.receipt/v1 │
|
|
107
|
+
│ ✓ PASS forge 0.2.2 │
|
|
108
|
+
│ atomadic-forge │
|
|
109
|
+
│ CERTIFY 100.0 / 100 │
|
|
110
|
+
│ docs ✓ tests ✓ layout ✓ wire ✓ │
|
|
111
|
+
│ WIRE PASS (0 violations) │
|
|
112
|
+
│ SCOUT 952 symbols (python) 952 tier-placed │
|
|
113
|
+
╚══════════════════════════════════════════════════════════╝
|
|
114
|
+
|
|
115
|
+
Posted by forge-action. The card and JSON receipt are also uploaded
|
|
116
|
+
as build artifacts on this run.
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Updated in place on every push — never spams the PR.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Status
|
|
124
|
+
|
|
125
|
+
- **Today (Lane C W1):** in-tree under `.github/actions/forge-action/`,
|
|
126
|
+
ref-pinned to the consuming Forge release.
|
|
127
|
+
- **Lane C W12 (planned):** dedicated repo `atomadictech/forge-action`
|
|
128
|
+
+ Marketplace listing.
|
|
129
|
+
- **Lane C W16+ (planned):** GitHub App variant that opens weekly
|
|
130
|
+
drift-PRs via `forge iterate --dry-run`.
|