igniter 0.5.0 → 0.5.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -3
- data/README.md +150 -658
- data/docs/README.md +59 -0
- data/docs/assets/README.md +8 -0
- data/docs/concepts/README.md +18 -0
- data/docs/concepts/igniter.md +119 -0
- data/docs/dev/README.md +48 -0
- data/docs/dev/agent-orchestra-dna.md +271 -0
- data/docs/dev/ai-agents-target-plan.md +178 -0
- data/docs/dev/application-target-plan.md +45 -0
- data/docs/dev/application-web-integration.md +59 -0
- data/docs/dev/application-web-poc-pattern-guide.md +167 -0
- data/docs/dev/architect-supervisor-bootstrap.md +322 -0
- data/docs/dev/architecture.md +20 -0
- data/docs/dev/cluster-target-plan.md +43 -0
- data/docs/dev/contract-persistence-target-plan.md +426 -0
- data/docs/dev/current-runtime-snapshot.md +73 -0
- data/docs/dev/data-ownership.md +29 -0
- data/docs/dev/document-rotation.md +51 -0
- data/docs/dev/embed-target-plan.md +51 -0
- data/docs/dev/igniter-web-dsl-sketch.md +151 -0
- data/docs/dev/igniter-web-target-plan.md +56 -0
- data/docs/dev/mcp-adapter-package-spec.md +81 -0
- data/docs/dev/module-system.md +46 -0
- data/docs/dev/package-map.md +112 -0
- data/docs/guide/README.md +77 -0
- data/docs/guide/ai-and-tools.md +33 -0
- data/docs/guide/api-and-runtime.md +38 -0
- data/docs/guide/app.md +45 -0
- data/docs/guide/application-capsules.md +139 -0
- data/docs/guide/application-showcase-portfolio.md +181 -0
- data/docs/guide/cli.md +70 -0
- data/docs/guide/cluster.md +55 -0
- data/docs/guide/configuration.md +31 -0
- data/docs/guide/contract-class-dsl.md +154 -0
- data/docs/guide/core-runtime-features.md +34 -0
- data/docs/guide/core.md +43 -0
- data/docs/guide/credentials.md +51 -0
- data/docs/guide/deployment-modes.md +63 -0
- data/docs/guide/distributed-workflows.md +21 -0
- data/docs/guide/getting-started.md +49 -0
- data/docs/guide/how-tos.md +33 -0
- data/docs/guide/igniter-lang-foundation.md +133 -0
- data/docs/guide/integrations.md +47 -0
- data/docs/guide/interactive-app-structure.md +91 -0
- data/docs/guide/store-adapters.md +183 -0
- data/docs/research/README.md +131 -0
- data/docs/research/contract-persistence-landing-zone.md +126 -0
- data/docs/research/contract-persistence-organic-model.md +279 -0
- data/docs/research/contract-persistence-organic-model.ru.md +277 -0
- data/docs/research/horizon-protocol.md +180 -0
- data/docs/research/igniter-lang-convergence-report.md +338 -0
- data/docs/research/project-status-horizon-report.md +363 -0
- data/docs/research/vision-handoff-protocol.md +141 -0
- data/docs/research/wizard-type-spec-architecture.md +293 -0
- data/docs/research/wizard-type-spec-research-request.md +134 -0
- data/docs/store/README.md +7 -0
- data/docs/store/convergence-audit.md +901 -0
- data/examples/README.md +152 -344
- data/examples/catalog.rb +1486 -0
- data/examples/cluster/incident_workflow.rb +70 -0
- data/examples/cluster/incidents.rb +63 -0
- data/examples/cluster/mesh_diagnostics.rb +89 -0
- data/examples/cluster/remediation.rb +63 -0
- data/examples/cluster/routing.rb +65 -0
- data/examples/contracts/aggregates.rb +39 -0
- data/examples/contracts/auditing.rb +35 -0
- data/examples/contracts/basic_pricing.rb +31 -0
- data/examples/contracts/branching.rb +36 -0
- data/examples/contracts/build_effect_executor_pack.rb +88 -0
- data/examples/contracts/build_your_own_pack.rb +82 -0
- data/examples/contracts/capabilities.rb +34 -0
- data/examples/contracts/class_callable.rb +45 -0
- data/examples/contracts/class_pricing.rb +32 -0
- data/examples/contracts/collection.rb +44 -0
- data/examples/contracts/commerce.rb +44 -0
- data/examples/contracts/compose_your_own_packs.rb +110 -0
- data/examples/contracts/composition.rb +61 -0
- data/examples/contracts/content_addressing.rb +33 -0
- data/examples/contracts/contractable_service.rb +43 -0
- data/examples/contracts/contractable_shadow.rb +69 -0
- data/examples/contracts/create_pack.rb +105 -0
- data/examples/contracts/dataflow.rb +57 -0
- data/examples/contracts/debug.rb +32 -0
- data/examples/contracts/debug_pack_authoring.rb +31 -0
- data/examples/contracts/diagnostics.rb +33 -0
- data/examples/contracts/differential.rb +97 -0
- data/examples/contracts/effects.rb +34 -0
- data/examples/contracts/embed_class_registration.rb +40 -0
- data/examples/contracts/embed_human_sugar.rb +106 -0
- data/examples/contracts/formula.rb +32 -0
- data/examples/contracts/incremental.rb +44 -0
- data/examples/contracts/introspection.rb +48 -0
- data/examples/contracts/invariants.rb +54 -0
- data/examples/contracts/journal.rb +37 -0
- data/examples/contracts/lang_foundation.rb +37 -0
- data/examples/contracts/mcp.rb +62 -0
- data/examples/contracts/mcp_host.rb +55 -0
- data/examples/contracts/mcp_server.rb +25 -0
- data/examples/contracts/piecewise.rb +30 -0
- data/examples/contracts/provenance.rb +55 -0
- data/examples/contracts/reactive.rb +62 -0
- data/examples/contracts/saga.rb +56 -0
- data/examples/contracts/scale.rb +30 -0
- data/examples/contracts/step_result.rb +58 -0
- data/examples/run.rb +163 -0
- data/lib/igniter/cluster.rb +3 -0
- data/lib/igniter/contract.rb +1 -326
- data/lib/igniter/monorepo_packages.rb +16 -0
- data/lib/igniter/version.rb +1 -1
- data/lib/igniter/web.rb +3 -0
- data/lib/igniter.rb +51 -43
- data/packages/igniter-agents/README.md +44 -0
- data/packages/igniter-agents/lib/igniter/agents/agent_definition.rb +26 -0
- data/packages/igniter-agents/lib/igniter/agents/agent_run.rb +47 -0
- data/packages/igniter-agents/lib/igniter/agents/agent_turn.rb +34 -0
- data/packages/igniter-agents/lib/igniter/agents/runner.rb +56 -0
- data/packages/igniter-agents/lib/igniter/agents/tool_call.rb +26 -0
- data/packages/igniter-agents/lib/igniter/agents/trace_event.rb +24 -0
- data/packages/igniter-agents/lib/igniter/agents.rb +33 -0
- data/packages/igniter-agents/lib/igniter-agents.rb +3 -0
- data/packages/igniter-ai/README.md +42 -0
- data/packages/igniter-ai/lib/igniter/ai/client.rb +18 -0
- data/packages/igniter-ai/lib/igniter/ai/error.rb +14 -0
- data/packages/igniter-ai/lib/igniter/ai/model_request.rb +28 -0
- data/packages/igniter-ai/lib/igniter/ai/model_response.rb +31 -0
- data/packages/igniter-ai/lib/igniter/ai/providers/fake.rb +24 -0
- data/packages/igniter-ai/lib/igniter/ai/providers/openai_responses.rb +100 -0
- data/packages/igniter-ai/lib/igniter/ai/providers/recorded.rb +40 -0
- data/packages/igniter-ai/lib/igniter/ai/usage.rb +32 -0
- data/packages/igniter-ai/lib/igniter/ai.rb +28 -0
- data/packages/igniter-ai/lib/igniter-ai.rb +3 -0
- data/packages/igniter-application/README.md +194 -0
- data/packages/igniter-application/lib/igniter/application/agent_definition.rb +38 -0
- data/packages/igniter-application/lib/igniter/application/agent_registry.rb +33 -0
- data/packages/igniter-application/lib/igniter/application/agent_runtime.rb +29 -0
- data/packages/igniter-application/lib/igniter/application/agents_builder.rb +26 -0
- data/packages/igniter-application/lib/igniter/application/ai_builder.rb +26 -0
- data/packages/igniter-application/lib/igniter/application/ai_provider_definition.rb +59 -0
- data/packages/igniter-application/lib/igniter/application/ai_registry.rb +34 -0
- data/packages/igniter-application/lib/igniter/application/application_assembly_plan.rb +67 -0
- data/packages/igniter-application/lib/igniter/application/application_blueprint.rb +227 -0
- data/packages/igniter-application/lib/igniter/application/application_capsule_report.rb +61 -0
- data/packages/igniter-application/lib/igniter/application/application_composition_report.rb +161 -0
- data/packages/igniter-application/lib/igniter/application/application_handoff_manifest.rb +100 -0
- data/packages/igniter-application/lib/igniter/application/application_host_activation_commit_readiness.rb +182 -0
- data/packages/igniter-application/lib/igniter/application/application_host_activation_dry_run_result.rb +190 -0
- data/packages/igniter-application/lib/igniter/application/application_host_activation_ledger_commit.rb +285 -0
- data/packages/igniter-application/lib/igniter/application/application_host_activation_ledger_verification.rb +301 -0
- data/packages/igniter-application/lib/igniter/application/application_host_activation_operation_digest.rb +68 -0
- data/packages/igniter-application/lib/igniter/application/application_host_activation_plan.rb +200 -0
- data/packages/igniter-application/lib/igniter/application/application_host_activation_plan_verification.rb +140 -0
- data/packages/igniter-application/lib/igniter/application/application_host_activation_readiness.rb +226 -0
- data/packages/igniter-application/lib/igniter/application/application_host_activation_receipt.rb +151 -0
- data/packages/igniter-application/lib/igniter/application/application_layout.rb +91 -0
- data/packages/igniter-application/lib/igniter/application/application_load_path.rb +38 -0
- data/packages/igniter-application/lib/igniter/application/application_load_report.rb +74 -0
- data/packages/igniter-application/lib/igniter/application/application_manifest.rb +65 -0
- data/packages/igniter-application/lib/igniter/application/application_structure_entry.rb +58 -0
- data/packages/igniter-application/lib/igniter/application/application_structure_plan.rb +128 -0
- data/packages/igniter-application/lib/igniter/application/application_transfer_applied_verification.rb +301 -0
- data/packages/igniter-application/lib/igniter/application/application_transfer_apply_plan.rb +167 -0
- data/packages/igniter-application/lib/igniter/application/application_transfer_apply_result.rb +321 -0
- data/packages/igniter-application/lib/igniter/application/application_transfer_bundle_artifact.rb +160 -0
- data/packages/igniter-application/lib/igniter/application/application_transfer_bundle_plan.rb +125 -0
- data/packages/igniter-application/lib/igniter/application/application_transfer_bundle_verification.rb +154 -0
- data/packages/igniter-application/lib/igniter/application/application_transfer_intake_plan.rb +195 -0
- data/packages/igniter-application/lib/igniter/application/application_transfer_inventory.rb +153 -0
- data/packages/igniter-application/lib/igniter/application/application_transfer_readiness.rb +260 -0
- data/packages/igniter-application/lib/igniter/application/application_transfer_receipt.rb +179 -0
- data/packages/igniter-application/lib/igniter/application/artifact_reference.rb +39 -0
- data/packages/igniter-application/lib/igniter/application/boot_phase.rb +27 -0
- data/packages/igniter-application/lib/igniter/application/boot_plan.rb +55 -0
- data/packages/igniter-application/lib/igniter/application/boot_report.rb +70 -0
- data/packages/igniter-application/lib/igniter/application/capsule_builder.rb +396 -0
- data/packages/igniter-application/lib/igniter/application/capsule_export.rb +26 -0
- data/packages/igniter-application/lib/igniter/application/capsule_import.rb +38 -0
- data/packages/igniter-application/lib/igniter/application/collection_invoker.rb +54 -0
- data/packages/igniter-application/lib/igniter/application/collection_transport_adapter.rb +37 -0
- data/packages/igniter-application/lib/igniter/application/compose_invoker.rb +51 -0
- data/packages/igniter-application/lib/igniter/application/compose_transport_adapter.rb +34 -0
- data/packages/igniter-application/lib/igniter/application/config.rb +86 -0
- data/packages/igniter-application/lib/igniter/application/config_builder.rb +69 -0
- data/packages/igniter-application/lib/igniter/application/contract_registry.rb +30 -0
- data/packages/igniter-application/lib/igniter/application/credential_definition.rb +65 -0
- data/packages/igniter-application/lib/igniter/application/credential_store.rb +68 -0
- data/packages/igniter-application/lib/igniter/application/embedded_host.rb +23 -0
- data/packages/igniter-application/lib/igniter/application/environment.rb +1071 -0
- data/packages/igniter-application/lib/igniter/application/feature_slice.rb +61 -0
- data/packages/igniter-application/lib/igniter/application/feature_slice_report.rb +43 -0
- data/packages/igniter-application/lib/igniter/application/file_backed_host_activation_ledger_adapter.rb +138 -0
- data/packages/igniter-application/lib/igniter/application/file_backed_installed_capsule_registry.rb +132 -0
- data/packages/igniter-application/lib/igniter/application/flow_declaration.rb +62 -0
- data/packages/igniter-application/lib/igniter/application/flow_event.rb +50 -0
- data/packages/igniter-application/lib/igniter/application/flow_session_snapshot.rb +98 -0
- data/packages/igniter-application/lib/igniter/application/installed_capsule_entry.rb +47 -0
- data/packages/igniter-application/lib/igniter/application/interface.rb +11 -0
- data/packages/igniter-application/lib/igniter/application/kernel.rb +385 -0
- data/packages/igniter-application/lib/igniter/application/lifecycle_plan_step.rb +38 -0
- data/packages/igniter-application/lib/igniter/application/manual_loader.rb +18 -0
- data/packages/igniter-application/lib/igniter/application/manual_scheduler.rb +15 -0
- data/packages/igniter-application/lib/igniter/application/memory_session_store.rb +33 -0
- data/packages/igniter-application/lib/igniter/application/missing_credential_error.rb +23 -0
- data/packages/igniter-application/lib/igniter/application/mount_intent.rb +48 -0
- data/packages/igniter-application/lib/igniter/application/mount_registration.rb +49 -0
- data/packages/igniter-application/lib/igniter/application/pending_action.rb +39 -0
- data/packages/igniter-application/lib/igniter/application/pending_input.rb +45 -0
- data/packages/igniter-application/lib/igniter/application/plan_executor.rb +93 -0
- data/packages/igniter-application/lib/igniter/application/profile.rb +178 -0
- data/packages/igniter-application/lib/igniter/application/provider.rb +19 -0
- data/packages/igniter-application/lib/igniter/application/provider_lifecycle_report.rb +72 -0
- data/packages/igniter-application/lib/igniter/application/provider_lifecycle_result.rb +54 -0
- data/packages/igniter-application/lib/igniter/application/provider_registration.rb +19 -0
- data/packages/igniter-application/lib/igniter/application/rack_host.rb +311 -0
- data/packages/igniter-application/lib/igniter/application/seam_lifecycle_result.rb +62 -0
- data/packages/igniter-application/lib/igniter/application/service_definition.rb +25 -0
- data/packages/igniter-application/lib/igniter/application/service_registry.rb +58 -0
- data/packages/igniter-application/lib/igniter/application/session_entry.rb +46 -0
- data/packages/igniter-application/lib/igniter/application/shutdown_plan.rb +45 -0
- data/packages/igniter-application/lib/igniter/application/shutdown_report.rb +54 -0
- data/packages/igniter-application/lib/igniter/application/snapshot.rb +35 -0
- data/packages/igniter-application/lib/igniter/application/transport_request.rb +40 -0
- data/packages/igniter-application/lib/igniter/application/transport_response.rb +22 -0
- data/packages/igniter-application/lib/igniter/application.rb +354 -0
- data/packages/igniter-application/lib/igniter-application.rb +3 -0
- data/packages/igniter-cluster/README.md +116 -0
- data/packages/igniter-cluster/lib/igniter/cluster/active_incident_set.rb +40 -0
- data/packages/igniter-cluster/lib/igniter/cluster/admission_policy.rb +158 -0
- data/packages/igniter-cluster/lib/igniter/cluster/admission_result.rb +47 -0
- data/packages/igniter-cluster/lib/igniter/cluster/capability_catalog.rb +66 -0
- data/packages/igniter-cluster/lib/igniter/cluster/capability_definition.rb +42 -0
- data/packages/igniter-cluster/lib/igniter/cluster/capability_query.rb +162 -0
- data/packages/igniter-cluster/lib/igniter/cluster/capability_router.rb +11 -0
- data/packages/igniter-cluster/lib/igniter/cluster/cluster_diagnostics_executor.rb +184 -0
- data/packages/igniter-cluster/lib/igniter/cluster/cluster_diagnostics_report.rb +49 -0
- data/packages/igniter-cluster/lib/igniter/cluster/cluster_event.rb +34 -0
- data/packages/igniter-cluster/lib/igniter/cluster/cluster_event_log.rb +27 -0
- data/packages/igniter-cluster/lib/igniter/cluster/cluster_incident.rb +42 -0
- data/packages/igniter-cluster/lib/igniter/cluster/decision_explanation.rb +31 -0
- data/packages/igniter-cluster/lib/igniter/cluster/direct_placement.rb +11 -0
- data/packages/igniter-cluster/lib/igniter/cluster/discovery_feed.rb +22 -0
- data/packages/igniter-cluster/lib/igniter/cluster/environment.rb +380 -0
- data/packages/igniter-cluster/lib/igniter/cluster/errors.rb +9 -0
- data/packages/igniter-cluster/lib/igniter/cluster/failover_plan.rb +45 -0
- data/packages/igniter-cluster/lib/igniter/cluster/failover_step.rb +32 -0
- data/packages/igniter-cluster/lib/igniter/cluster/health_policy.rb +124 -0
- data/packages/igniter-cluster/lib/igniter/cluster/incident_action.rb +49 -0
- data/packages/igniter-cluster/lib/igniter/cluster/incident_entry.rb +98 -0
- data/packages/igniter-cluster/lib/igniter/cluster/incident_executor.rb +145 -0
- data/packages/igniter-cluster/lib/igniter/cluster/incident_workflow.rb +64 -0
- data/packages/igniter-cluster/lib/igniter/cluster/kernel.rb +75 -0
- data/packages/igniter-cluster/lib/igniter/cluster/kernel_seams.rb +249 -0
- data/packages/igniter-cluster/lib/igniter/cluster/lease_grant.rb +40 -0
- data/packages/igniter-cluster/lib/igniter/cluster/lease_plan.rb +40 -0
- data/packages/igniter-cluster/lib/igniter/cluster/lease_policy.rb +96 -0
- data/packages/igniter-cluster/lib/igniter/cluster/membership_delta.rb +36 -0
- data/packages/igniter-cluster/lib/igniter/cluster/membership_feed.rb +24 -0
- data/packages/igniter-cluster/lib/igniter/cluster/membership_projection.rb +45 -0
- data/packages/igniter-cluster/lib/igniter/cluster/membership_snapshot.rb +64 -0
- data/packages/igniter-cluster/lib/igniter/cluster/memory_incident_registry.rb +169 -0
- data/packages/igniter-cluster/lib/igniter/cluster/memory_peer_registry.rb +24 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_admission.rb +24 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_admission_result.rb +40 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_execution_attempt.rb +51 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_execution_request.rb +71 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_execution_response.rb +28 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_execution_trace.rb +32 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_executor.rb +497 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_membership.rb +89 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_membership_event.rb +32 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_membership_source.rb +49 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_retry_policy.rb +42 -0
- data/packages/igniter-cluster/lib/igniter/cluster/mesh_trust_policy.rb +131 -0
- data/packages/igniter-cluster/lib/igniter/cluster/operator_timeline.rb +33 -0
- data/packages/igniter-cluster/lib/igniter/cluster/ownership_claim.rb +30 -0
- data/packages/igniter-cluster/lib/igniter/cluster/ownership_plan.rb +40 -0
- data/packages/igniter-cluster/lib/igniter/cluster/ownership_policy.rb +100 -0
- data/packages/igniter-cluster/lib/igniter/cluster/peer.rb +86 -0
- data/packages/igniter-cluster/lib/igniter/cluster/peer_discovery.rb +62 -0
- data/packages/igniter-cluster/lib/igniter/cluster/peer_health.rb +55 -0
- data/packages/igniter-cluster/lib/igniter/cluster/peer_profile.rb +102 -0
- data/packages/igniter-cluster/lib/igniter/cluster/peer_topology.rb +62 -0
- data/packages/igniter-cluster/lib/igniter/cluster/peer_view.rb +42 -0
- data/packages/igniter-cluster/lib/igniter/cluster/permissive_admission.rb +11 -0
- data/packages/igniter-cluster/lib/igniter/cluster/placement_decision.rb +38 -0
- data/packages/igniter-cluster/lib/igniter/cluster/placement_policy.rb +131 -0
- data/packages/igniter-cluster/lib/igniter/cluster/plan_action_result.rb +72 -0
- data/packages/igniter-cluster/lib/igniter/cluster/plan_execution_report.rb +57 -0
- data/packages/igniter-cluster/lib/igniter/cluster/plan_executor.rb +314 -0
- data/packages/igniter-cluster/lib/igniter/cluster/policy_admission.rb +18 -0
- data/packages/igniter-cluster/lib/igniter/cluster/policy_placement.rb +69 -0
- data/packages/igniter-cluster/lib/igniter/cluster/policy_router.rb +70 -0
- data/packages/igniter-cluster/lib/igniter/cluster/profile.rb +97 -0
- data/packages/igniter-cluster/lib/igniter/cluster/projection_executor.rb +42 -0
- data/packages/igniter-cluster/lib/igniter/cluster/projection_policy.rb +107 -0
- data/packages/igniter-cluster/lib/igniter/cluster/projection_report.rb +35 -0
- data/packages/igniter-cluster/lib/igniter/cluster/projection_stage.rb +32 -0
- data/packages/igniter-cluster/lib/igniter/cluster/rebalance_move.rb +30 -0
- data/packages/igniter-cluster/lib/igniter/cluster/rebalance_plan.rb +40 -0
- data/packages/igniter-cluster/lib/igniter/cluster/recovery_timeline.rb +33 -0
- data/packages/igniter-cluster/lib/igniter/cluster/registry_membership_source.rb +97 -0
- data/packages/igniter-cluster/lib/igniter/cluster/remediation_plan.rb +45 -0
- data/packages/igniter-cluster/lib/igniter/cluster/remediation_policy.rb +119 -0
- data/packages/igniter-cluster/lib/igniter/cluster/remediation_step.rb +44 -0
- data/packages/igniter-cluster/lib/igniter/cluster/route.rb +34 -0
- data/packages/igniter-cluster/lib/igniter/cluster/route_policy.rb +104 -0
- data/packages/igniter-cluster/lib/igniter/cluster/route_request.rb +61 -0
- data/packages/igniter-cluster/lib/igniter/cluster/topology_policy.rb +154 -0
- data/packages/igniter-cluster/lib/igniter/cluster/transport_adapter.rb +53 -0
- data/packages/igniter-cluster/lib/igniter/cluster.rb +108 -0
- data/packages/igniter-cluster/lib/igniter-cluster.rb +3 -0
- data/packages/igniter-contracts/README.md +239 -0
- data/packages/igniter-contracts/lib/igniter/contracts/api.rb +92 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/baseline_pack.rb +141 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/const_pack.rb +29 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/dsl_keyword.rb +21 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/hook_result_policies.rb +47 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/hook_spec.rb +73 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/hook_specs.rb +74 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/kernel.rb +220 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/node_type.rb +26 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/ordered_registry.rb +55 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/pack.rb +13 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/pack_manifest.rb +131 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/path_access.rb +76 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/profile.rb +133 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/project_pack.rb +42 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/registry.rb +57 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly/step_result_pack.rb +42 -0
- data/packages/igniter-contracts/lib/igniter/contracts/assembly.rb +18 -0
- data/packages/igniter-contracts/lib/igniter/contracts/contract.rb +135 -0
- data/packages/igniter-contracts/lib/igniter/contracts/contractable.rb +288 -0
- data/packages/igniter-contracts/lib/igniter/contracts/environment.rb +51 -0
- data/packages/igniter-contracts/lib/igniter/contracts/errors.rb +47 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/baseline_normalizers.rb +23 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/baseline_runtime.rb +55 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/baseline_validators.rb +113 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/builder.rb +43 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/compilation_report.rb +46 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/compiled_graph.rb +21 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/compiler.rb +66 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/const_runtime.rb +15 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/diagnostics.rb +24 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/diagnostics_report.rb +40 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/diagnostics_section.rb +37 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/effect_invocation.rb +26 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/execution_request.rb +28 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/execution_result.rb +32 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/inline_executor.rb +19 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/mutable_named_values.rb +52 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/named_values.rb +48 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/operation.rb +42 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/runtime.rb +43 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/step_result.rb +51 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/step_result_diagnostics.rb +35 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/step_result_runtime.rb +51 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/step_result_validators.rb +44 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/structured_dump.rb +49 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/validation_finding.rb +28 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution/validation_report.rb +46 -0
- data/packages/igniter-contracts/lib/igniter/contracts/execution.rb +28 -0
- data/packages/igniter-contracts/lib/igniter/contracts.rb +54 -0
- data/packages/igniter-contracts/lib/igniter/lang/backend.rb +19 -0
- data/packages/igniter-contracts/lib/igniter/lang/backends/ruby.rb +42 -0
- data/packages/igniter-contracts/lib/igniter/lang/diagnostic_payload.rb +174 -0
- data/packages/igniter-contracts/lib/igniter/lang/metadata_carrier_manifest.rb +112 -0
- data/packages/igniter-contracts/lib/igniter/lang/metadata_manifest.rb +128 -0
- data/packages/igniter-contracts/lib/igniter/lang/receipt_payload.rb +152 -0
- data/packages/igniter-contracts/lib/igniter/lang/schema_compatibility_diagnostic.rb +300 -0
- data/packages/igniter-contracts/lib/igniter/lang/types.rb +84 -0
- data/packages/igniter-contracts/lib/igniter/lang/verification_report.rb +226 -0
- data/packages/igniter-contracts/lib/igniter/lang.rb +27 -0
- data/packages/igniter-contracts/lib/igniter-contracts.rb +3 -0
- data/packages/igniter-embed/README.md +360 -0
- data/packages/igniter-embed/lib/igniter/embed/config.rb +155 -0
- data/packages/igniter-embed/lib/igniter/embed/container.rb +165 -0
- data/packages/igniter-embed/lib/igniter/embed/contract_handle.rb +23 -0
- data/packages/igniter-embed/lib/igniter/embed/contract_naming.rb +38 -0
- data/packages/igniter-embed/lib/igniter/embed/contractable/acceptance.rb +52 -0
- data/packages/igniter-embed/lib/igniter/embed/contractable/adapters.rb +33 -0
- data/packages/igniter-embed/lib/igniter/embed/contractable/config.rb +234 -0
- data/packages/igniter-embed/lib/igniter/embed/contractable/runner.rb +393 -0
- data/packages/igniter-embed/lib/igniter/embed/contractable/sugar_builder.rb +145 -0
- data/packages/igniter-embed/lib/igniter/embed/contractable.rb +29 -0
- data/packages/igniter-embed/lib/igniter/embed/contracts_builder.rb +54 -0
- data/packages/igniter-embed/lib/igniter/embed/errors.rb +14 -0
- data/packages/igniter-embed/lib/igniter/embed/execution_envelope.rb +50 -0
- data/packages/igniter-embed/lib/igniter/embed/host_builder.rb +39 -0
- data/packages/igniter-embed/lib/igniter/embed/rails.rb +21 -0
- data/packages/igniter-embed/lib/igniter/embed/registry.rb +78 -0
- data/packages/igniter-embed/lib/igniter/embed/sugar_expansion.rb +152 -0
- data/packages/igniter-embed/lib/igniter/embed.rb +38 -0
- data/packages/igniter-embed/lib/igniter-embed.rb +3 -0
- data/packages/igniter-extensions/README.md +381 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/aggregate_pack.rb +103 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/audit/builder.rb +132 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/audit/event.rb +34 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/audit/snapshot.rb +44 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/audit_pack.rb +60 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/branch_pack.rb +199 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/capabilities/declaration.rb +31 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/capabilities/error.rb +35 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/capabilities/policy.rb +20 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/capabilities/report.rb +47 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/capabilities/violation.rb +30 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/capabilities_pack.rb +146 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/collection_pack.rb +212 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/commerce_pack.rb +91 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/compose_pack.rb +213 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/content_addressing/cache.rb +59 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/content_addressing/content_key.rb +63 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/content_addressing/declaration.rb +47 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/content_addressing_pack.rb +90 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator/profile.rb +196 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator/report.rb +85 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator/scaffold.rb +461 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator/scope.rb +79 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator/wizard.rb +269 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator/workflow.rb +189 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator/workflow_step.rb +51 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator/write_result.rb +48 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator/write_step.rb +63 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator/writer.rb +131 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/creator_pack.rb +128 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/dataflow/aggregate_operators.rb +119 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/dataflow/aggregate_state.rb +60 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/dataflow/builder.rb +66 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/dataflow/collection_result.rb +70 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/dataflow/diff.rb +37 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/dataflow/item_result.rb +44 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/dataflow/result.rb +58 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/dataflow/session.rb +173 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/dataflow/window_filter.rb +49 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/dataflow_pack.rb +66 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/debug/pack_audit.rb +181 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/debug/pack_snapshot.rb +46 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/debug/profile_snapshot.rb +50 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/debug/report.rb +50 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/debug_pack.rb +115 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/differential/divergence.rb +37 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/differential/formatter.rb +85 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/differential/report.rb +83 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/differential/runner.rb +136 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/differential_pack.rb +61 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/execution_report_pack.rb +38 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/incremental/formatter.rb +60 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/incremental/node_state.rb +30 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/incremental/result.rb +65 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/incremental/session.rb +146 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/incremental_pack.rb +40 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/invariants/builder.rb +27 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/invariants/cases_report.rb +47 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/invariants/error.rb +34 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/invariants/invariant.rb +30 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/invariants/report.rb +45 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/invariants/suite.rb +36 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/invariants/violation.rb +39 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/invariants_pack.rb +88 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/journal_pack.rb +55 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/language/formula_pack.rb +185 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/language/piecewise_pack.rb +166 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/language/scale_pack.rb +147 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/lookup_pack.rb +50 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/mcp/creator_session.rb +105 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/mcp/tool_argument.rb +35 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/mcp/tool_definition.rb +33 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/mcp/tool_result.rb +28 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/mcp_pack.rb +335 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/provenance/builder.rb +80 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/provenance/lineage.rb +59 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/provenance/node_trace.rb +53 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/provenance/text_formatter.rb +62 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/provenance_pack.rb +52 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/reactive/builder.rb +43 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/reactive/dispatch_result.rb +59 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/reactive/engine.rb +79 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/reactive/event.rb +36 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/reactive/matcher.rb +20 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/reactive/plan.rb +58 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/reactive/subscription.rb +29 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/reactive_pack.rb +169 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/saga/compensation.rb +25 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/saga/compensation_record.rb +28 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/saga/compensation_set.rb +47 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/saga/formatter.rb +39 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/saga/result.rb +56 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/saga/runner.rb +124 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts/saga_pack.rb +56 -0
- data/packages/igniter-extensions/lib/igniter/extensions/contracts.rb +445 -0
- data/packages/igniter-extensions/lib/igniter/extensions.rb +6 -0
- data/packages/igniter-extensions/lib/igniter-extensions.rb +3 -0
- data/packages/igniter-hub/README.md +25 -0
- data/packages/igniter-hub/lib/igniter/hub/catalog_entry.rb +35 -0
- data/packages/igniter-hub/lib/igniter/hub/local_catalog.rb +51 -0
- data/packages/igniter-hub/lib/igniter/hub.rb +16 -0
- data/packages/igniter-hub/lib/igniter-hub.rb +3 -0
- data/packages/igniter-mcp-adapter/README.md +65 -0
- data/packages/igniter-mcp-adapter/exe/igniter-mcp-adapter +6 -0
- data/packages/igniter-mcp-adapter/lib/igniter/mcp/adapter/host.rb +226 -0
- data/packages/igniter-mcp-adapter/lib/igniter/mcp/adapter/server.rb +148 -0
- data/packages/igniter-mcp-adapter/lib/igniter/mcp/adapter.rb +40 -0
- data/packages/igniter-mcp-adapter/lib/igniter-mcp-adapter.rb +5 -0
- data/packages/igniter-web/README.md +539 -0
- data/packages/igniter-web/lib/igniter/web/api.rb +49 -0
- data/packages/igniter-web/lib/igniter/web/application.rb +99 -0
- data/packages/igniter-web/lib/igniter/web/application_web_mount.rb +162 -0
- data/packages/igniter-web/lib/igniter/web/arbre.rb +41 -0
- data/packages/igniter-web/lib/igniter/web/component.rb +103 -0
- data/packages/igniter-web/lib/igniter/web/components/view_action_node.rb +38 -0
- data/packages/igniter-web/lib/igniter/web/components/view_ask_node.rb +52 -0
- data/packages/igniter-web/lib/igniter/web/components/view_chat_node.rb +34 -0
- data/packages/igniter-web/lib/igniter/web/components/view_compare_node.rb +41 -0
- data/packages/igniter-web/lib/igniter/web/components/view_node.rb +30 -0
- data/packages/igniter-web/lib/igniter/web/components/view_screen.rb +34 -0
- data/packages/igniter-web/lib/igniter/web/components/view_stream_node.rb +32 -0
- data/packages/igniter-web/lib/igniter/web/components/view_zone.rb +26 -0
- data/packages/igniter-web/lib/igniter/web/components.rb +10 -0
- data/packages/igniter-web/lib/igniter/web/composer.rb +84 -0
- data/packages/igniter-web/lib/igniter/web/composition_finding.rb +16 -0
- data/packages/igniter-web/lib/igniter/web/composition_policy.rb +88 -0
- data/packages/igniter-web/lib/igniter/web/composition_preset.rb +131 -0
- data/packages/igniter-web/lib/igniter/web/composition_result.rb +27 -0
- data/packages/igniter-web/lib/igniter/web/flow_interaction_adapter.rb +104 -0
- data/packages/igniter-web/lib/igniter/web/flow_surface_projection.rb +121 -0
- data/packages/igniter-web/lib/igniter/web/interaction_target.rb +50 -0
- data/packages/igniter-web/lib/igniter/web/mount_context.rb +80 -0
- data/packages/igniter-web/lib/igniter/web/page.rb +110 -0
- data/packages/igniter-web/lib/igniter/web/record.rb +54 -0
- data/packages/igniter-web/lib/igniter/web/screen_spec.rb +109 -0
- data/packages/igniter-web/lib/igniter/web/surface_manifest.rb +370 -0
- data/packages/igniter-web/lib/igniter/web/surface_structure.rb +57 -0
- data/packages/igniter-web/lib/igniter/web/view_graph.rb +25 -0
- data/packages/igniter-web/lib/igniter/web/view_graph_renderer.rb +63 -0
- data/packages/igniter-web/lib/igniter/web/view_node.rb +37 -0
- data/packages/igniter-web/lib/igniter/web.rb +107 -0
- data/packages/igniter-web/lib/igniter-web.rb +3 -0
- metadata +547 -308
- data/docs/API_V2.md +0 -537
- data/docs/APPLICATION_V1.md +0 -253
- data/docs/ARCHITECTURE_V2.md +0 -317
- data/docs/BACKLOG.md +0 -166
- data/docs/BRANCHES_V1.md +0 -213
- data/docs/CAPABILITIES_V1.md +0 -207
- data/docs/COLLECTIONS_V1.md +0 -303
- data/docs/CONSENSUS_V1.md +0 -477
- data/docs/CONTENT_ADDRESSING_V1.md +0 -221
- data/docs/DATAFLOW_V1.md +0 -274
- data/docs/DISTRIBUTED_CONTRACTS_V1.md +0 -493
- data/docs/IGNITER_CONCEPTS.md +0 -81
- data/docs/LLM_V1.md +0 -335
- data/docs/MESH_V1.md +0 -732
- data/docs/NODE_CACHE_V1.md +0 -324
- data/docs/PATTERNS.md +0 -411
- data/docs/PROACTIVE_AGENTS_V1.md +0 -293
- data/docs/SERVER_V1.md +0 -512
- data/docs/SKILLS_V1.md +0 -213
- data/docs/STORE_ADAPTERS.md +0 -154
- data/docs/TEMPORAL_V1.md +0 -174
- data/docs/TOOLS_V1.md +0 -347
- data/docs/TRANSCRIPTION_V1.md +0 -403
- data/examples/agents.rb +0 -150
- data/examples/async_store.rb +0 -47
- data/examples/basic_pricing.rb +0 -27
- data/examples/collection.rb +0 -43
- data/examples/collection_partial_failure.rb +0 -50
- data/examples/composition.rb +0 -39
- data/examples/consensus.rb +0 -239
- data/examples/dataflow.rb +0 -308
- data/examples/diagnostics.rb +0 -28
- data/examples/differential.rb +0 -161
- data/examples/distributed_server.rb +0 -94
- data/examples/distributed_workflow.rb +0 -52
- data/examples/effects.rb +0 -184
- data/examples/elocal_webhook.rb +0 -1
- data/examples/incremental.rb +0 -142
- data/examples/invariants.rb +0 -179
- data/examples/llm_tools.rb +0 -237
- data/examples/marketing_ergonomics.rb +0 -57
- data/examples/mesh.rb +0 -239
- data/examples/mesh_discovery.rb +0 -267
- data/examples/mesh_gossip.rb +0 -162
- data/examples/order_pipeline.rb +0 -163
- data/examples/provenance.rb +0 -122
- data/examples/ringcentral_routing.rb +0 -269
- data/examples/saga.rb +0 -110
- data/lib/igniter/agent/mailbox.rb +0 -96
- data/lib/igniter/agent/message.rb +0 -21
- data/lib/igniter/agent/ref.rb +0 -86
- data/lib/igniter/agent/runner.rb +0 -129
- data/lib/igniter/agent/state_holder.rb +0 -23
- data/lib/igniter/agent.rb +0 -155
- data/lib/igniter/agents/ai/alert_agent.rb +0 -111
- data/lib/igniter/agents/ai/chain_agent.rb +0 -127
- data/lib/igniter/agents/ai/critic_agent.rb +0 -163
- data/lib/igniter/agents/ai/evaluator_agent.rb +0 -193
- data/lib/igniter/agents/ai/evolution_agent.rb +0 -286
- data/lib/igniter/agents/ai/health_check_agent.rb +0 -122
- data/lib/igniter/agents/ai/observer_agent.rb +0 -184
- data/lib/igniter/agents/ai/planner_agent.rb +0 -210
- data/lib/igniter/agents/ai/router_agent.rb +0 -131
- data/lib/igniter/agents/ai/self_reflection_agent.rb +0 -175
- data/lib/igniter/agents/observability/metrics_agent.rb +0 -130
- data/lib/igniter/agents/pipeline/batch_processor_agent.rb +0 -131
- data/lib/igniter/agents/proactive_agent.rb +0 -208
- data/lib/igniter/agents/reliability/retry_agent.rb +0 -99
- data/lib/igniter/agents/scheduling/cron_agent.rb +0 -110
- data/lib/igniter/agents.rb +0 -56
- data/lib/igniter/application/app_config.rb +0 -32
- data/lib/igniter/application/autoloader.rb +0 -18
- data/lib/igniter/application/generator.rb +0 -157
- data/lib/igniter/application/scheduler.rb +0 -109
- data/lib/igniter/application/yml_loader.rb +0 -39
- data/lib/igniter/application.rb +0 -174
- data/lib/igniter/capabilities.rb +0 -68
- data/lib/igniter/compiler/compiled_graph.rb +0 -180
- data/lib/igniter/compiler/graph_compiler.rb +0 -70
- data/lib/igniter/compiler/type_resolver.rb +0 -54
- data/lib/igniter/compiler/validation_context.rb +0 -61
- data/lib/igniter/compiler/validation_pipeline.rb +0 -32
- data/lib/igniter/compiler/validator.rb +0 -19
- data/lib/igniter/compiler/validators/await_validator.rb +0 -53
- data/lib/igniter/compiler/validators/callable_validator.rb +0 -125
- data/lib/igniter/compiler/validators/dependencies_validator.rb +0 -241
- data/lib/igniter/compiler/validators/outputs_validator.rb +0 -66
- data/lib/igniter/compiler/validators/remote_validator.rb +0 -60
- data/lib/igniter/compiler/validators/type_compatibility_validator.rb +0 -84
- data/lib/igniter/compiler/validators/uniqueness_validator.rb +0 -60
- data/lib/igniter/compiler.rb +0 -20
- data/lib/igniter/consensus/cluster.rb +0 -183
- data/lib/igniter/consensus/errors.rb +0 -14
- data/lib/igniter/consensus/executors.rb +0 -43
- data/lib/igniter/consensus/node.rb +0 -320
- data/lib/igniter/consensus/read_query.rb +0 -30
- data/lib/igniter/consensus/state_machine.rb +0 -58
- data/lib/igniter/consensus.rb +0 -58
- data/lib/igniter/content_addressing.rb +0 -133
- data/lib/igniter/dataflow/aggregate_operators.rb +0 -147
- data/lib/igniter/dataflow/aggregate_state.rb +0 -77
- data/lib/igniter/dataflow/diff.rb +0 -37
- data/lib/igniter/dataflow/diff_state.rb +0 -81
- data/lib/igniter/dataflow/incremental_collection_result.rb +0 -39
- data/lib/igniter/dataflow/window_filter.rb +0 -48
- data/lib/igniter/dataflow.rb +0 -65
- data/lib/igniter/diagnostics/auditing/report/console_formatter.rb +0 -80
- data/lib/igniter/diagnostics/auditing/report/markdown_formatter.rb +0 -22
- data/lib/igniter/diagnostics/introspection/formatters/mermaid_formatter.rb +0 -58
- data/lib/igniter/diagnostics/introspection/formatters/text_tree_formatter.rb +0 -44
- data/lib/igniter/diagnostics/report.rb +0 -349
- data/lib/igniter/diagnostics.rb +0 -8
- data/lib/igniter/differential/divergence.rb +0 -29
- data/lib/igniter/differential/formatter.rb +0 -96
- data/lib/igniter/differential/report.rb +0 -86
- data/lib/igniter/differential/runner.rb +0 -130
- data/lib/igniter/differential.rb +0 -51
- data/lib/igniter/dsl/contract_builder.rb +0 -495
- data/lib/igniter/dsl/schema_builder.rb +0 -73
- data/lib/igniter/dsl.rb +0 -9
- data/lib/igniter/effect.rb +0 -91
- data/lib/igniter/effect_registry.rb +0 -78
- data/lib/igniter/errors.rb +0 -79
- data/lib/igniter/events/bus.rb +0 -44
- data/lib/igniter/events/event.rb +0 -82
- data/lib/igniter/events.rb +0 -9
- data/lib/igniter/execution_report/builder.rb +0 -54
- data/lib/igniter/execution_report/formatter.rb +0 -50
- data/lib/igniter/execution_report/node_entry.rb +0 -24
- data/lib/igniter/execution_report/report.rb +0 -65
- data/lib/igniter/execution_report.rb +0 -32
- data/lib/igniter/executor.rb +0 -134
- data/lib/igniter/executor_registry.rb +0 -44
- data/lib/igniter/extensions/auditing/timeline.rb +0 -103
- data/lib/igniter/extensions/auditing.rb +0 -10
- data/lib/igniter/extensions/capabilities.rb +0 -39
- data/lib/igniter/extensions/content_addressing.rb +0 -5
- data/lib/igniter/extensions/dataflow.rb +0 -117
- data/lib/igniter/extensions/differential.rb +0 -114
- data/lib/igniter/extensions/execution_report.rb +0 -27
- data/lib/igniter/extensions/incremental.rb +0 -50
- data/lib/igniter/extensions/introspection/graph_formatter.rb +0 -103
- data/lib/igniter/extensions/introspection/plan_formatter.rb +0 -55
- data/lib/igniter/extensions/introspection/runtime_formatter.rb +0 -117
- data/lib/igniter/extensions/introspection.rb +0 -12
- data/lib/igniter/extensions/invariants.rb +0 -116
- data/lib/igniter/extensions/mesh.rb +0 -31
- data/lib/igniter/extensions/provenance.rb +0 -45
- data/lib/igniter/extensions/reactive/engine.rb +0 -83
- data/lib/igniter/extensions/reactive/matcher.rb +0 -21
- data/lib/igniter/extensions/reactive/reaction.rb +0 -18
- data/lib/igniter/extensions/reactive.rb +0 -12
- data/lib/igniter/extensions/saga.rb +0 -74
- data/lib/igniter/extensions.rb +0 -10
- data/lib/igniter/fingerprint.rb +0 -43
- data/lib/igniter/incremental/formatter.rb +0 -81
- data/lib/igniter/incremental/result.rb +0 -69
- data/lib/igniter/incremental/tracker.rb +0 -108
- data/lib/igniter/incremental.rb +0 -50
- data/lib/igniter/integrations/agents.rb +0 -18
- data/lib/igniter/integrations/llm/config.rb +0 -113
- data/lib/igniter/integrations/llm/context.rb +0 -74
- data/lib/igniter/integrations/llm/executor.rb +0 -352
- data/lib/igniter/integrations/llm/providers/anthropic.rb +0 -181
- data/lib/igniter/integrations/llm/providers/base.rb +0 -33
- data/lib/igniter/integrations/llm/providers/ollama.rb +0 -137
- data/lib/igniter/integrations/llm/providers/openai.rb +0 -182
- data/lib/igniter/integrations/llm/transcription/providers/assemblyai.rb +0 -200
- data/lib/igniter/integrations/llm/transcription/providers/base.rb +0 -122
- data/lib/igniter/integrations/llm/transcription/providers/deepgram.rb +0 -162
- data/lib/igniter/integrations/llm/transcription/providers/openai.rb +0 -102
- data/lib/igniter/integrations/llm/transcription/transcriber.rb +0 -145
- data/lib/igniter/integrations/llm/transcription/transcript_result.rb +0 -29
- data/lib/igniter/integrations/llm.rb +0 -95
- data/lib/igniter/integrations/rails/cable_adapter.rb +0 -49
- data/lib/igniter/integrations/rails/contract_job.rb +0 -76
- data/lib/igniter/integrations/rails/generators/contract/contract_generator.rb +0 -22
- data/lib/igniter/integrations/rails/generators/install/install_generator.rb +0 -33
- data/lib/igniter/integrations/rails/railtie.rb +0 -25
- data/lib/igniter/integrations/rails/webhook_concern.rb +0 -49
- data/lib/igniter/integrations/rails.rb +0 -12
- data/lib/igniter/invariant.rb +0 -50
- data/lib/igniter/memory/agent_memory.rb +0 -104
- data/lib/igniter/memory/episode.rb +0 -29
- data/lib/igniter/memory/fact.rb +0 -27
- data/lib/igniter/memory/memorable.rb +0 -90
- data/lib/igniter/memory/reflection_cycle.rb +0 -96
- data/lib/igniter/memory/reflection_record.rb +0 -28
- data/lib/igniter/memory/store.rb +0 -115
- data/lib/igniter/memory/stores/in_memory.rb +0 -136
- data/lib/igniter/memory/stores/sqlite.rb +0 -284
- data/lib/igniter/memory.rb +0 -80
- data/lib/igniter/mesh/announcer.rb +0 -55
- data/lib/igniter/mesh/config.rb +0 -45
- data/lib/igniter/mesh/discovery.rb +0 -39
- data/lib/igniter/mesh/errors.rb +0 -31
- data/lib/igniter/mesh/gossip.rb +0 -47
- data/lib/igniter/mesh/peer.rb +0 -21
- data/lib/igniter/mesh/peer_registry.rb +0 -51
- data/lib/igniter/mesh/poller.rb +0 -77
- data/lib/igniter/mesh/router.rb +0 -109
- data/lib/igniter/mesh.rb +0 -85
- data/lib/igniter/metrics/collector.rb +0 -131
- data/lib/igniter/metrics/prometheus_exporter.rb +0 -104
- data/lib/igniter/metrics/snapshot.rb +0 -8
- data/lib/igniter/metrics.rb +0 -37
- data/lib/igniter/model/aggregate_node.rb +0 -34
- data/lib/igniter/model/await_node.rb +0 -21
- data/lib/igniter/model/branch_node.rb +0 -46
- data/lib/igniter/model/collection_node.rb +0 -32
- data/lib/igniter/model/composition_node.rb +0 -22
- data/lib/igniter/model/compute_node.rb +0 -90
- data/lib/igniter/model/effect_node.rb +0 -37
- data/lib/igniter/model/graph.rb +0 -15
- data/lib/igniter/model/input_node.rb +0 -27
- data/lib/igniter/model/node.rb +0 -22
- data/lib/igniter/model/output_node.rb +0 -41
- data/lib/igniter/model/remote_node.rb +0 -42
- data/lib/igniter/model.rb +0 -18
- data/lib/igniter/node_cache.rb +0 -231
- data/lib/igniter/property_testing/formatter.rb +0 -66
- data/lib/igniter/property_testing/generators.rb +0 -115
- data/lib/igniter/property_testing/result.rb +0 -45
- data/lib/igniter/property_testing/run.rb +0 -43
- data/lib/igniter/property_testing/runner.rb +0 -47
- data/lib/igniter/property_testing.rb +0 -64
- data/lib/igniter/provenance/builder.rb +0 -97
- data/lib/igniter/provenance/lineage.rb +0 -82
- data/lib/igniter/provenance/node_trace.rb +0 -65
- data/lib/igniter/provenance/text_formatter.rb +0 -70
- data/lib/igniter/provenance.rb +0 -29
- data/lib/igniter/registry.rb +0 -67
- data/lib/igniter/replication/bootstrapper.rb +0 -61
- data/lib/igniter/replication/bootstrappers/gem.rb +0 -32
- data/lib/igniter/replication/bootstrappers/git.rb +0 -39
- data/lib/igniter/replication/bootstrappers/tarball.rb +0 -56
- data/lib/igniter/replication/expansion_plan.rb +0 -38
- data/lib/igniter/replication/expansion_planner.rb +0 -142
- data/lib/igniter/replication/manifest.rb +0 -45
- data/lib/igniter/replication/network_topology.rb +0 -123
- data/lib/igniter/replication/node_role.rb +0 -42
- data/lib/igniter/replication/reflective_replication_agent.rb +0 -238
- data/lib/igniter/replication/replication_agent.rb +0 -87
- data/lib/igniter/replication/role_registry.rb +0 -73
- data/lib/igniter/replication/ssh_session.rb +0 -77
- data/lib/igniter/replication.rb +0 -54
- data/lib/igniter/runtime/cache.rb +0 -126
- data/lib/igniter/runtime/collection_result.rb +0 -111
- data/lib/igniter/runtime/deferred_result.rb +0 -40
- data/lib/igniter/runtime/execution.rb +0 -416
- data/lib/igniter/runtime/input_validator.rb +0 -129
- data/lib/igniter/runtime/invalidator.rb +0 -52
- data/lib/igniter/runtime/job_worker.rb +0 -18
- data/lib/igniter/runtime/node_state.rb +0 -56
- data/lib/igniter/runtime/planner.rb +0 -126
- data/lib/igniter/runtime/resolver.rb +0 -758
- data/lib/igniter/runtime/result.rb +0 -117
- data/lib/igniter/runtime/runner_factory.rb +0 -20
- data/lib/igniter/runtime/runners/inline_runner.rb +0 -21
- data/lib/igniter/runtime/runners/store_runner.rb +0 -29
- data/lib/igniter/runtime/runners/thread_pool_runner.rb +0 -37
- data/lib/igniter/runtime/stores/active_record_store.rb +0 -53
- data/lib/igniter/runtime/stores/file_store.rb +0 -91
- data/lib/igniter/runtime/stores/memory_store.rb +0 -93
- data/lib/igniter/runtime/stores/redis_store.rb +0 -93
- data/lib/igniter/runtime.rb +0 -26
- data/lib/igniter/saga/compensation.rb +0 -31
- data/lib/igniter/saga/compensation_record.rb +0 -20
- data/lib/igniter/saga/executor.rb +0 -85
- data/lib/igniter/saga/formatter.rb +0 -49
- data/lib/igniter/saga/result.rb +0 -47
- data/lib/igniter/saga.rb +0 -56
- data/lib/igniter/server/client.rb +0 -166
- data/lib/igniter/server/config.rb +0 -34
- data/lib/igniter/server/handlers/base.rb +0 -105
- data/lib/igniter/server/handlers/contracts_handler.rb +0 -15
- data/lib/igniter/server/handlers/event_handler.rb +0 -32
- data/lib/igniter/server/handlers/execute_handler.rb +0 -43
- data/lib/igniter/server/handlers/health_handler.rb +0 -32
- data/lib/igniter/server/handlers/liveness_handler.rb +0 -20
- data/lib/igniter/server/handlers/manifest_handler.rb +0 -34
- data/lib/igniter/server/handlers/metrics_handler.rb +0 -51
- data/lib/igniter/server/handlers/peers_handler.rb +0 -115
- data/lib/igniter/server/handlers/readiness_handler.rb +0 -47
- data/lib/igniter/server/handlers/status_handler.rb +0 -27
- data/lib/igniter/server/http_server.rb +0 -146
- data/lib/igniter/server/rack_app.rb +0 -35
- data/lib/igniter/server/registry.rb +0 -56
- data/lib/igniter/server/router.rb +0 -108
- data/lib/igniter/server/server_logger.rb +0 -52
- data/lib/igniter/server.rb +0 -73
- data/lib/igniter/skill/feedback.rb +0 -116
- data/lib/igniter/skill/output_schema.rb +0 -110
- data/lib/igniter/skill.rb +0 -218
- data/lib/igniter/stream_loop.rb +0 -80
- data/lib/igniter/supervisor.rb +0 -167
- data/lib/igniter/temporal.rb +0 -84
- data/lib/igniter/tool/discoverable.rb +0 -151
- data/lib/igniter/tool.rb +0 -52
- data/lib/igniter/tool_registry.rb +0 -144
- data/lib/igniter/type_system.rb +0 -44
- /data/docs/{EXECUTION_MODEL_V2.md → dev/execution-model.md} +0 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Application Capsules
|
|
2
|
+
|
|
3
|
+
Application capsules are the copyable unit for Igniter apps. A capsule keeps
|
|
4
|
+
contracts, services, optional web surfaces, imports, exports, and review
|
|
5
|
+
metadata local to one application boundary.
|
|
6
|
+
|
|
7
|
+
Use capsules when an app should be understandable before it is loaded, mounted,
|
|
8
|
+
copied, or connected to a larger host.
|
|
9
|
+
|
|
10
|
+
## Shape
|
|
11
|
+
|
|
12
|
+
Small capsules stay sparse: create only the folders the app owns.
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
capsule = Igniter::Application.capsule(:operator, root: "apps/operator") do
|
|
16
|
+
layout :capsule
|
|
17
|
+
groups :contracts, :services
|
|
18
|
+
|
|
19
|
+
export :resolve_incident,
|
|
20
|
+
kind: :contract,
|
|
21
|
+
target: "Contracts::ResolveIncident"
|
|
22
|
+
|
|
23
|
+
import :incident_runtime,
|
|
24
|
+
kind: :service,
|
|
25
|
+
from: :host,
|
|
26
|
+
capabilities: [:incidents]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
blueprint = capsule.to_blueprint
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The explicit data form is equally valid:
|
|
33
|
+
|
|
34
|
+
```ruby
|
|
35
|
+
blueprint = Igniter::Application.blueprint(
|
|
36
|
+
name: :operator,
|
|
37
|
+
root: "apps/operator",
|
|
38
|
+
layout_profile: :capsule,
|
|
39
|
+
groups: %i[contracts services]
|
|
40
|
+
)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Use the data form for generators and diffs. Use the DSL form for human-edited
|
|
44
|
+
application code.
|
|
45
|
+
|
|
46
|
+
## Web Is Optional
|
|
47
|
+
|
|
48
|
+
A capsule can be web-capable without becoming a web framework object.
|
|
49
|
+
`igniter-application` accepts plain surface metadata; `igniter-web` owns
|
|
50
|
+
screens, routes, components, and rendering details.
|
|
51
|
+
|
|
52
|
+
```ruby
|
|
53
|
+
blueprint = Igniter::Application.blueprint(
|
|
54
|
+
name: :operator,
|
|
55
|
+
root: "apps/operator",
|
|
56
|
+
layout_profile: :capsule,
|
|
57
|
+
groups: %i[contracts services],
|
|
58
|
+
web_surfaces: [:operator_console]
|
|
59
|
+
)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
This keeps non-web and web-capable apps in the same application vocabulary.
|
|
63
|
+
|
|
64
|
+
## Reports
|
|
65
|
+
|
|
66
|
+
Capsule reports are read-only inspection output. They summarize:
|
|
67
|
+
|
|
68
|
+
- identity and layout profile
|
|
69
|
+
- active and known groups
|
|
70
|
+
- planned sparse and complete paths
|
|
71
|
+
- imports and exports
|
|
72
|
+
- optional features, flows, and supplied surface metadata
|
|
73
|
+
|
|
74
|
+
Reports do not load constants, create files, execute contracts, mount web
|
|
75
|
+
surfaces, or boot an app.
|
|
76
|
+
|
|
77
|
+
```ruby
|
|
78
|
+
report = blueprint.capsule_report
|
|
79
|
+
report.to_h
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Transfer
|
|
83
|
+
|
|
84
|
+
Capsule transfer is review-first. The lifecycle is deliberately explicit:
|
|
85
|
+
|
|
86
|
+
1. inspect the capsule with `capsule_report`
|
|
87
|
+
2. review physical files with `transfer_inventory`
|
|
88
|
+
3. check readiness with `transfer_readiness`
|
|
89
|
+
4. build a `transfer_bundle_plan`
|
|
90
|
+
5. write and verify a transfer bundle
|
|
91
|
+
6. preview destination intake
|
|
92
|
+
7. dry-run apply operations
|
|
93
|
+
8. commit only reviewed file operations
|
|
94
|
+
9. verify the applied transfer
|
|
95
|
+
10. close with `transfer_receipt`
|
|
96
|
+
11. optionally record the result in an installed-capsule registry
|
|
97
|
+
|
|
98
|
+
Only the explicit committed apply step mutates the destination filesystem.
|
|
99
|
+
Host wiring, load paths, provider registration, web route activation, contract
|
|
100
|
+
execution, and cluster placement remain outside transfer.
|
|
101
|
+
|
|
102
|
+
Installed-capsule registries are application state, not hub state. A hub can
|
|
103
|
+
discover a candidate bundle, but `igniter-application` owns the receipt-backed
|
|
104
|
+
record that says what was installed, whether it is complete, and which source
|
|
105
|
+
and version produced it. The file-backed registry keeps current state separate
|
|
106
|
+
from append-only history so future upgrade, rollback, and audit flows can build
|
|
107
|
+
on the same receipt trail.
|
|
108
|
+
|
|
109
|
+
Runnable end-to-end example:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
ruby examples/application/capsule_transfer_end_to_end.rb
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Activation Boundary
|
|
116
|
+
|
|
117
|
+
A complete transfer receipt means reviewed files landed and verified. It does
|
|
118
|
+
not mean the receiving host activated the app.
|
|
119
|
+
|
|
120
|
+
Host activation is a separate review lane:
|
|
121
|
+
|
|
122
|
+
- `host_activation_readiness`
|
|
123
|
+
- `host_activation_plan`
|
|
124
|
+
- `verify_host_activation_plan`
|
|
125
|
+
- optional ledger-backed acknowledgement receipts
|
|
126
|
+
|
|
127
|
+
The current ledger path records reviewed confirmations. It is not live host
|
|
128
|
+
mutation and does not boot providers, bind routes, execute contracts, or touch a
|
|
129
|
+
cluster.
|
|
130
|
+
|
|
131
|
+
## Examples
|
|
132
|
+
|
|
133
|
+
- [`examples/application/capsule_composition.rb`](../../examples/application/capsule_composition.rb)
|
|
134
|
+
- [`examples/application/capsule_assembly_plan.rb`](../../examples/application/capsule_assembly_plan.rb)
|
|
135
|
+
- [`examples/application/capsule_transfer_end_to_end.rb`](../../examples/application/capsule_transfer_end_to_end.rb)
|
|
136
|
+
- [`examples/application/capsule_host_activation_readiness.rb`](../../examples/application/capsule_host_activation_readiness.rb)
|
|
137
|
+
|
|
138
|
+
For app/web conventions, continue with
|
|
139
|
+
[Interactive App Structure](./interactive-app-structure.md).
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Application Showcase Portfolio
|
|
2
|
+
|
|
3
|
+
This guide is the current application showcase map for Igniter. Use it when you
|
|
4
|
+
want to evaluate the richer contracts-native examples as products, not only as
|
|
5
|
+
small API snippets.
|
|
6
|
+
|
|
7
|
+
The portfolio has five current applications:
|
|
8
|
+
|
|
9
|
+
- Companion: ready-to-go personal assistant shell.
|
|
10
|
+
- Lense: local codebase intelligence.
|
|
11
|
+
- Chronicle: architecture decision review.
|
|
12
|
+
- Scout: local-source research synthesis.
|
|
13
|
+
- Dispatch: incident command and handoff.
|
|
14
|
+
|
|
15
|
+
Each application is intentionally offline, one-process, and reproducible. They
|
|
16
|
+
exercise `igniter-application`, `igniter-contracts`, `igniter-extensions`, and
|
|
17
|
+
`igniter-web` through app-local structure. They do not define a public
|
|
18
|
+
interactive app API.
|
|
19
|
+
|
|
20
|
+
## What The Portfolio Proves
|
|
21
|
+
|
|
22
|
+
The showcases demonstrate the same serious application loop:
|
|
23
|
+
|
|
24
|
+
- app-owned services load local inputs, own mutable session state, and emit
|
|
25
|
+
deterministic evidence artifacts
|
|
26
|
+
- one contracts-native graph computes the core analysis, readiness, or payload
|
|
27
|
+
- command routes return app-local success/refusal results and record action
|
|
28
|
+
facts
|
|
29
|
+
- one detached snapshot feeds the Web surface, `/events`, smoke output, and
|
|
30
|
+
manual inspection
|
|
31
|
+
- `/report` or `/receipt` exposes an app-owned evidence artifact
|
|
32
|
+
- smoke runs prove success, refusal, endpoint parity, and mutation boundaries
|
|
33
|
+
|
|
34
|
+
This repetition is a copyable convention. It is not yet a framework contract,
|
|
35
|
+
shared command result class, snapshot API, route DSL, marker DSL, UI kit,
|
|
36
|
+
receipt/report API, or `Igniter.interactive_app` facade.
|
|
37
|
+
|
|
38
|
+
## Showcase Matrix
|
|
39
|
+
|
|
40
|
+
| Showcase | Purpose | Workflow | Packages exercised | Evidence artifact | Mutation boundary | Smoke | Manual server |
|
|
41
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
42
|
+
| Companion | Personal assistant shell for ordinary users. | Credentials setup -> reminders/trackers/countdowns -> body battery -> daily plan. | `igniter-application`, `igniter-contracts`, `igniter-extensions`, `igniter-ai`, `igniter-web`. | Setup state and deterministic daily summary. | SQLite app store; live AI remains explicit opt-in. | `ruby examples/application/companion_poc.rb` | `ruby examples/application/companion_poc.rb server` |
|
|
43
|
+
| Lense | Codebase intelligence for a local Ruby project. | Scan project -> health findings -> guided issue session -> analysis report. | `igniter-application`, `igniter-contracts`, `igniter-extensions`, `igniter-web`. | `LenseAnalysisReceipt` through `/report`. | Reads an explicit sample project and proves no scanned-project mutation. | `ruby examples/application/lense_poc.rb` | `ruby examples/application/lense_poc.rb server` |
|
|
44
|
+
| Chronicle | Decision compass for architecture proposals. | Proposal scan -> decision conflicts -> sign-off/refusal -> decision receipt. | `igniter-application`, `igniter-contracts`, `igniter-extensions`, `igniter-web`. | `DecisionReceipt` through `/receipt`. | Reads proposal/decision fixtures and writes runtime sessions/actions/receipts only to workdir. | `ruby examples/application/chronicle_poc.rb` | `ruby examples/application/chronicle_poc.rb server` |
|
|
45
|
+
| Scout | Local-source research workspace. | Topic + local sources -> findings -> direction checkpoint -> research receipt. | `igniter-application`, `igniter-contracts`, `igniter-extensions`, `igniter-web`. | `ResearchReceipt` through `/receipt`. | Reads local source fixtures and writes runtime sessions/actions/receipts only to workdir. | `ruby examples/application/scout_poc.rb` | `ruby examples/application/scout_poc.rb server` |
|
|
46
|
+
| Dispatch | Incident command and handoff. | Seeded incident events -> triage/routing -> assignment checkpoint -> incident receipt. | `igniter-application`, `igniter-contracts`, `igniter-extensions`, `igniter-web`. | `IncidentReceipt` through `/receipt`. | Reads incident/event/runbook/team fixtures and writes runtime sessions/actions/receipts only to workdir. | `ruby examples/application/dispatch_poc.rb` | `ruby examples/application/dispatch_poc.rb server` |
|
|
47
|
+
|
|
48
|
+
## Package Capability Map
|
|
49
|
+
|
|
50
|
+
Each showcase keeps its domain logic local while exercising the same package
|
|
51
|
+
roles:
|
|
52
|
+
|
|
53
|
+
| Showcase | Application capability | Contracts capability | Web capability |
|
|
54
|
+
| --- | --- | --- | --- |
|
|
55
|
+
| Lense | App composition, scan service, issue-session commands, snapshot, report endpoint. | `CodebaseHealthContract` computes health score, findings, evidence refs, and report metadata. | Mounted dashboard/workbench with `/events`, `/report`, feedback, counters, findings, and activity markers. |
|
|
56
|
+
| Chronicle | Proposal/decision stores, conflict session commands, sign-off/refusal state, receipt endpoint. | `DecisionReviewContract` computes conflicts, required sign-offs, readiness, and receipt payload. | Mounted decision compass with `/events`, `/receipt`, feedback, conflict evidence, sign-off/refusal, and activity markers. |
|
|
57
|
+
| Scout | Source library, research session commands, checkpoint state, receipt endpoint. | `ResearchSynthesisContract` computes findings, contradictions, checkpoint readiness, citations, and synthesis payload. | Mounted research workspace with `/events`, `/receipt`, feedback, source/provenance, checkpoint, and activity markers. |
|
|
58
|
+
| Dispatch | Incident library, triage session commands, assignment/escalation state, receipt endpoint. | `IncidentTriageContract` computes severity, suspected cause, routing options, readiness, and receipt payload. | Mounted command center with `/events`, `/receipt`, feedback, event/citation, routing, assignment, and activity markers. |
|
|
59
|
+
|
|
60
|
+
## Web Review Map
|
|
61
|
+
|
|
62
|
+
Each richer showcase has one mounted Arbre surface. The surface reads one
|
|
63
|
+
app-owned snapshot through `MountContext`; `app.rb` owns command routes,
|
|
64
|
+
redirect feedback, `/events`, and the evidence endpoint.
|
|
65
|
+
|
|
66
|
+
| Showcase | Mounted surface | Surface marker | Evidence endpoint | Manual review focus |
|
|
67
|
+
| --- | --- | --- | --- | --- |
|
|
68
|
+
| Lense | `web/lense_dashboard.rb` as `:lense_dashboard`. | `data-ig-poc-surface="lense_dashboard"` | `/report` | Scan summary, findings, evidence refs, issue-session actions, report validity, and no scanned-project mutation. |
|
|
69
|
+
| Chronicle | `web/decision_compass.rb` as `:decision_compass`. | `data-ig-poc-surface="chronicle_decision_compass"` | `/receipt` | Proposal context, conflict evidence, sign-off/refusal state, decision receipt validity, and fixture no-mutation. |
|
|
70
|
+
| Scout | `web/research_workspace.rb` as `:research_workspace`. | `data-ig-poc-surface="scout_research_workspace"` | `/receipt` | Topic, sources, citations, provenance, findings, contradictions, checkpoint state, research receipt validity, and fixture no-mutation. |
|
|
71
|
+
| Dispatch | `web/command_center.rb` as `:command_center`. | `data-ig-poc-surface="dispatch_command_center"` | `/receipt` | Incident events, severity, routing rationale, assignment/escalation checkpoint, handoff receipt validity, and fixture no-mutation. |
|
|
72
|
+
|
|
73
|
+
During manual review, inspect the browser page and these companion endpoints:
|
|
74
|
+
|
|
75
|
+
- `/events` should agree with the visible state because both render from the
|
|
76
|
+
same detached app snapshot.
|
|
77
|
+
- `/report` or `/receipt` should expose the app-owned evidence artifact when
|
|
78
|
+
the workflow reaches its checkpoint.
|
|
79
|
+
- feedback should appear through query-string redirect state and render with
|
|
80
|
+
`data-ig-feedback` plus an app-local `data-feedback-code`.
|
|
81
|
+
- recent activity should render from the same snapshot and use
|
|
82
|
+
`data-ig-activity` plus app-local action metadata.
|
|
83
|
+
- command controls should expose app-local `data-action` values.
|
|
84
|
+
- domain records and counters should expose explicit app-local `data-`
|
|
85
|
+
attributes for smoke and browser inspection.
|
|
86
|
+
|
|
87
|
+
These markers are inspection seams, not a public marker DSL. Surface names,
|
|
88
|
+
feedback codes, action names, endpoint labels, CSS direction, and panel
|
|
89
|
+
grouping remain local to each showcase.
|
|
90
|
+
|
|
91
|
+
## Run The Portfolio
|
|
92
|
+
|
|
93
|
+
Run the full active examples catalog:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
ruby examples/run.rb smoke
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Run an individual showcase through the catalog:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
ruby examples/run.rb run application/lense_poc
|
|
103
|
+
ruby examples/run.rb run application/chronicle_poc
|
|
104
|
+
ruby examples/run.rb run application/scout_poc
|
|
105
|
+
ruby examples/run.rb run application/dispatch_poc
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Run an individual showcase directly:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
ruby examples/application/lense_poc.rb
|
|
112
|
+
ruby examples/application/chronicle_poc.rb
|
|
113
|
+
ruby examples/application/scout_poc.rb
|
|
114
|
+
ruby examples/application/dispatch_poc.rb
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Open a manual browser surface:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
ruby examples/application/lense_poc.rb server
|
|
121
|
+
ruby examples/application/chronicle_poc.rb server
|
|
122
|
+
ruby examples/application/scout_poc.rb server
|
|
123
|
+
ruby examples/application/dispatch_poc.rb server
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Each server command prints a local URL. Server mode is example scaffolding for
|
|
127
|
+
manual review, not production server behavior.
|
|
128
|
+
|
|
129
|
+
Use in-process smoke runs as the default proof. Manual browser review is useful
|
|
130
|
+
for evaluating the mounted screens, but the portfolio does not require browser
|
|
131
|
+
automation, live transport, a production server, auth, persistence, scheduler,
|
|
132
|
+
connectors, or LLM/provider integration.
|
|
133
|
+
|
|
134
|
+
## Evidence To Inspect
|
|
135
|
+
|
|
136
|
+
For each showcase, inspect three surfaces together:
|
|
137
|
+
|
|
138
|
+
- HTML surface: the mounted `igniter-web` screen with stable app-local
|
|
139
|
+
`data-` markers.
|
|
140
|
+
- `/events`: the text read model that mirrors the same app-owned snapshot.
|
|
141
|
+
- `/report` or `/receipt`: the evidence artifact emitted by the app.
|
|
142
|
+
|
|
143
|
+
The smoke output should include markers for:
|
|
144
|
+
|
|
145
|
+
- the first successful command path
|
|
146
|
+
- at least one refusal path
|
|
147
|
+
- recent action facts
|
|
148
|
+
- `/events` parity with the Web surface snapshot
|
|
149
|
+
- receipt/report validity
|
|
150
|
+
- fixture or target no-mutation
|
|
151
|
+
|
|
152
|
+
## Application Structure Convention
|
|
153
|
+
|
|
154
|
+
Use the showcase layout as a convention for new application experiments:
|
|
155
|
+
|
|
156
|
+
- `app.rb` is the visible composition boundary.
|
|
157
|
+
- `contracts/` contains the deterministic contracts-native graph.
|
|
158
|
+
- `services/` owns loading, state, commands, and snapshots.
|
|
159
|
+
- `reports/` owns receipt/report rendering when the workflow has evidence to
|
|
160
|
+
emit.
|
|
161
|
+
- `web/` owns the local mounted surface.
|
|
162
|
+
- the launcher script owns smoke and optional `server` mode.
|
|
163
|
+
|
|
164
|
+
Keep domain names and repeated shapes local until package extraction is
|
|
165
|
+
explicitly justified. In particular, keep command result classes, snapshot
|
|
166
|
+
fields, feedback codes, route names, marker names, receipt payload keys,
|
|
167
|
+
fixture schemas, thresholds, and readiness rules inside the app.
|
|
168
|
+
|
|
169
|
+
For the detailed copyable convention, see
|
|
170
|
+
[Interactive App Structure](./interactive-app-structure.md).
|
|
171
|
+
|
|
172
|
+
## Legacy Boundary
|
|
173
|
+
|
|
174
|
+
Legacy material is private/reference context, not the current onboarding path.
|
|
175
|
+
Start from the current packages, this portfolio guide, the interactive app
|
|
176
|
+
structure guide, and the four showcase READMEs:
|
|
177
|
+
|
|
178
|
+
- [`examples/application/lense/README.md`](../../examples/application/lense/README.md)
|
|
179
|
+
- [`examples/application/chronicle/README.md`](../../examples/application/chronicle/README.md)
|
|
180
|
+
- [`examples/application/scout/README.md`](../../examples/application/scout/README.md)
|
|
181
|
+
- [`examples/application/dispatch/README.md`](../../examples/application/dispatch/README.md)
|
data/docs/guide/cli.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# CLI
|
|
2
|
+
|
|
3
|
+
This is the shortest guide to the current stack-first CLI surface.
|
|
4
|
+
|
|
5
|
+
## Main Entry Points
|
|
6
|
+
|
|
7
|
+
- `bin/start` — start the mounted stack runtime
|
|
8
|
+
- `bin/start --node NAME` — start one local node profile
|
|
9
|
+
- `bin/console` — open the igniter console
|
|
10
|
+
- `bin/console --node NAME` — open console with one node profile selected
|
|
11
|
+
- `bin/console --node NAME --eval '...'` — evaluate one expression and exit
|
|
12
|
+
- `bin/dev` — start all local node profiles with prefixed output
|
|
13
|
+
|
|
14
|
+
`bin/dev` also writes per-node logs to `var/log/dev/*.log`.
|
|
15
|
+
|
|
16
|
+
## Scaffold Profiles
|
|
17
|
+
|
|
18
|
+
`igniter-stack new` currently supports:
|
|
19
|
+
|
|
20
|
+
- base profile by default
|
|
21
|
+
- `--profile dashboard` for a mounted dashboard app at `/dashboard`
|
|
22
|
+
- `--profile cluster` for a cluster-ready sandbox with node profiles and self-heal demo
|
|
23
|
+
- `--profile playground` for a richer local lab scaffold
|
|
24
|
+
|
|
25
|
+
Examples:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
bin/igniter-stack new my_app
|
|
29
|
+
bin/igniter-stack new my_hub --profile dashboard
|
|
30
|
+
bin/igniter-stack new mesh_lab --profile cluster
|
|
31
|
+
bin/igniter-stack new playgrounds/home-lab --profile playground
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Mental Model
|
|
35
|
+
|
|
36
|
+
- `stack.rb` is the executable runtime surface
|
|
37
|
+
- positional `app` means “run this one app directly”
|
|
38
|
+
- `--node` means “boot the stack as this node profile”
|
|
39
|
+
- `--console` means “load stack/app/runtime helpers into IRB”
|
|
40
|
+
|
|
41
|
+
## Console Helpers
|
|
42
|
+
|
|
43
|
+
Inside `bin/console`, these locals are available:
|
|
44
|
+
|
|
45
|
+
- `stack`
|
|
46
|
+
- `context`
|
|
47
|
+
- `app`
|
|
48
|
+
- `root_app`
|
|
49
|
+
- `node`
|
|
50
|
+
- `node_profile`
|
|
51
|
+
- `deployment`
|
|
52
|
+
- `runtime`
|
|
53
|
+
- `mounts`
|
|
54
|
+
- `mesh`
|
|
55
|
+
- `stack_settings`
|
|
56
|
+
|
|
57
|
+
Example:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
bin/console --node seed --eval 'context.node_name'
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Built-In Help
|
|
64
|
+
|
|
65
|
+
The runtime also exposes help directly:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
bundle exec ruby stack.rb --help
|
|
69
|
+
bundle exec ruby stack.rb --console --help
|
|
70
|
+
```
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Cluster
|
|
2
|
+
|
|
3
|
+
Use this section when execution is no longer single-node and the network itself becomes part of the runtime.
|
|
4
|
+
|
|
5
|
+
## Cluster Means
|
|
6
|
+
|
|
7
|
+
- mesh membership and gossip
|
|
8
|
+
- capability-based routing across peers
|
|
9
|
+
- replication and distributed coordination
|
|
10
|
+
- resilience, plasticity, and decentralized runtime behavior
|
|
11
|
+
- cluster diagnostics and routing explainability
|
|
12
|
+
|
|
13
|
+
The cluster layer should stay above `Embed` and `Application`. It is not the
|
|
14
|
+
place to redefine the kernel.
|
|
15
|
+
|
|
16
|
+
## Current First Reads
|
|
17
|
+
|
|
18
|
+
- [Guide](../guide/README.md)
|
|
19
|
+
- [Guide: How-Tos](../guide/how-tos.md)
|
|
20
|
+
- [Dev: Cluster Target Plan](../dev/cluster-target-plan.md)
|
|
21
|
+
|
|
22
|
+
## Supporting Reference
|
|
23
|
+
|
|
24
|
+
- [Guide: Distributed Workflows](../guide/distributed-workflows.md)
|
|
25
|
+
|
|
26
|
+
## Useful Supporting Docs
|
|
27
|
+
|
|
28
|
+
- [Guide: Core Runtime Features](../guide/core-runtime-features.md)
|
|
29
|
+
|
|
30
|
+
## Examples
|
|
31
|
+
|
|
32
|
+
- [Examples index](../../examples/README.md)
|
|
33
|
+
- cluster-oriented examples such as `cluster/incidents`,
|
|
34
|
+
`cluster/incident_workflow`, `cluster/mesh_diagnostics`,
|
|
35
|
+
`cluster/remediation`, and `cluster/routing`
|
|
36
|
+
- [Playgrounds](../../playgrounds/README.md) for local-first cluster and home-lab experiments
|
|
37
|
+
|
|
38
|
+
## Cluster Reading Heuristic
|
|
39
|
+
|
|
40
|
+
- If the topic is about contracts or execution semantics without networking,
|
|
41
|
+
it probably belongs back in [Core](./core.md).
|
|
42
|
+
- If the topic is about app boot/profile without network coordination, it
|
|
43
|
+
probably belongs in [App](./app.md).
|
|
44
|
+
|
|
45
|
+
## Direction
|
|
46
|
+
|
|
47
|
+
Current design direction:
|
|
48
|
+
|
|
49
|
+
- `Cluster` is being reset as a contracts-native distributed runtime layer
|
|
50
|
+
- it should sit above `Embed` and `Application`, not redefine either of them
|
|
51
|
+
- new design work should follow the
|
|
52
|
+
[Cluster Target Plan](../dev/cluster-target-plan.md)
|
|
53
|
+
|
|
54
|
+
Older cluster research and legacy notes are private working material under
|
|
55
|
+
`playgrounds/docs/`, not public onboarding.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
Use this index when the question is operational: boot shape, deployment, stack
|
|
4
|
+
layout, or persistence.
|
|
5
|
+
|
|
6
|
+
## Current Starting Points
|
|
7
|
+
|
|
8
|
+
- [CLI](./cli.md)
|
|
9
|
+
- [Application Capsules](./application-capsules.md)
|
|
10
|
+
- [Deployment Modes](./deployment-modes.md)
|
|
11
|
+
- [App](./app.md)
|
|
12
|
+
|
|
13
|
+
## Runtime And Deployment Reference
|
|
14
|
+
|
|
15
|
+
- [Deployment Modes](./deployment-modes.md)
|
|
16
|
+
- [Credentials](./credentials.md)
|
|
17
|
+
- [Store Adapters](./store-adapters.md)
|
|
18
|
+
- [Application Capsules](./application-capsules.md)
|
|
19
|
+
|
|
20
|
+
## Current Heuristic
|
|
21
|
+
|
|
22
|
+
- Start embedded with `require "igniter"` when the host app already exists.
|
|
23
|
+
- Move to `igniter-application` when Igniter becomes the runtime shape.
|
|
24
|
+
- Move to `igniter-cluster` only when distribution is a real execution concern.
|
|
25
|
+
|
|
26
|
+
## Project Shapes
|
|
27
|
+
|
|
28
|
+
- [Examples](../../examples/README.md)
|
|
29
|
+
- [Application Showcase Portfolio](./application-showcase-portfolio.md)
|
|
30
|
+
- [Interactive App Structure](./interactive-app-structure.md)
|
|
31
|
+
- [Playgrounds](../../playgrounds/README.md)
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Contract Class DSL
|
|
2
|
+
|
|
3
|
+
Igniter contracts have two equal authoring forms:
|
|
4
|
+
|
|
5
|
+
- block compilation for low-level embedding and generated graphs
|
|
6
|
+
- class DSL for human-edited application code
|
|
7
|
+
|
|
8
|
+
For a runnable path across contracts, examples, application showcases, and Lang,
|
|
9
|
+
start with [Getting Started](./getting-started.md).
|
|
10
|
+
|
|
11
|
+
Use the class form when a Rails/service/job author needs to read the contract as
|
|
12
|
+
business logic.
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
class PriceContract < Igniter::Contract
|
|
16
|
+
define do
|
|
17
|
+
input :order_total, type: :numeric
|
|
18
|
+
input :country, type: :string
|
|
19
|
+
|
|
20
|
+
compute :vat_rate, depends_on: [:country] do |country:|
|
|
21
|
+
country == "UA" ? 0.2 : 0.0
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
compute :gross_total, depends_on: %i[order_total vat_rate] do |order_total:, vat_rate:|
|
|
25
|
+
order_total * (1 + vat_rate)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
output :gross_total
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
contract = PriceContract.new(order_total: 100, country: "UA")
|
|
33
|
+
contract.result.gross_total
|
|
34
|
+
contract.update_inputs(order_total: 150)
|
|
35
|
+
contract.output(:gross_total)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Why This Form Exists
|
|
39
|
+
|
|
40
|
+
The block form is still the smallest kernel surface:
|
|
41
|
+
|
|
42
|
+
```ruby
|
|
43
|
+
compiled = Igniter::Contracts.compile do
|
|
44
|
+
input :amount
|
|
45
|
+
output :amount
|
|
46
|
+
end
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The class form adds the shape app code usually wants:
|
|
50
|
+
|
|
51
|
+
- one contract per file
|
|
52
|
+
- a compact `define do ... end` body
|
|
53
|
+
- result readers such as `contract.result.gross_total`
|
|
54
|
+
- `update_inputs` for repeated local runs
|
|
55
|
+
- a stable class name that host layers can register, cache, reload, and call
|
|
56
|
+
|
|
57
|
+
This is not a separate runtime. `Igniter::Contract` compiles and executes
|
|
58
|
+
through `igniter-contracts`.
|
|
59
|
+
|
|
60
|
+
## Callable Steps
|
|
61
|
+
|
|
62
|
+
Use blocks for local logic and `call:` for existing service objects.
|
|
63
|
+
|
|
64
|
+
```ruby
|
|
65
|
+
class GrossTotal
|
|
66
|
+
def self.call(order_total:, vat_rate:)
|
|
67
|
+
order_total * (1 + vat_rate)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
class PriceContract < Igniter::Contract
|
|
72
|
+
define do
|
|
73
|
+
input :order_total
|
|
74
|
+
input :vat_rate
|
|
75
|
+
compute :gross_total, depends_on: %i[order_total vat_rate], call: GrossTotal
|
|
76
|
+
output :gross_total
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Callable objects receive keyword arguments named after `depends_on`.
|
|
82
|
+
|
|
83
|
+
## Result Shape
|
|
84
|
+
|
|
85
|
+
The minimum reader surface is intentionally small:
|
|
86
|
+
|
|
87
|
+
```ruby
|
|
88
|
+
contract = PriceContract.new(order_total: 100, vat_rate: 0.2)
|
|
89
|
+
|
|
90
|
+
contract.success?
|
|
91
|
+
contract.failure?
|
|
92
|
+
contract.outputs
|
|
93
|
+
contract.output(:gross_total)
|
|
94
|
+
contract.result.gross_total
|
|
95
|
+
contract.to_h
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Unknown result readers raise a clear `KeyError`.
|
|
99
|
+
|
|
100
|
+
## Embed Hosts
|
|
101
|
+
|
|
102
|
+
`igniter-embed` consumes contract classes without redefining the DSL:
|
|
103
|
+
|
|
104
|
+
```ruby
|
|
105
|
+
contracts = Igniter::Embed.configure(:shop) do |config|
|
|
106
|
+
config.cache = true
|
|
107
|
+
config.root "app/contracts"
|
|
108
|
+
config.contract PriceContract, as: :price_quote
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
result = contracts.call(:price_quote, order_total: 100, country: "UA")
|
|
112
|
+
result.output(:gross_total)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Named contract classes can also be registered directly. The inferred name uses
|
|
116
|
+
the last class segment, removes a trailing `Contract`, and snake-cases it:
|
|
117
|
+
|
|
118
|
+
```ruby
|
|
119
|
+
contracts.register(Billing::PriceContract)
|
|
120
|
+
contracts.call(:price, order_total: 100, country: "UA")
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The host layer owns naming, caching, reload hooks, and failure envelopes. The
|
|
124
|
+
contract class owns the business graph.
|
|
125
|
+
|
|
126
|
+
`config.root` identifies the host-local contract directory. It does not load
|
|
127
|
+
files by itself. Automatic discovery is opt-in:
|
|
128
|
+
|
|
129
|
+
```ruby
|
|
130
|
+
contracts = Igniter::Embed.configure(:shop) do |config|
|
|
131
|
+
config.root "app/contracts"
|
|
132
|
+
config.discover!
|
|
133
|
+
end
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Discovery is useful for small scripts and experiments. For application boot,
|
|
137
|
+
prefer explicit `config.contract SomeContract, as: :name` until you want a
|
|
138
|
+
convention-driven loader.
|
|
139
|
+
|
|
140
|
+
Discovery only registers named contract classes. Anonymous classes are ignored,
|
|
141
|
+
explicit registrations win over discovered contracts with the same name, and
|
|
142
|
+
duplicate discovered names raise a discovery error so hosts do not silently pick
|
|
143
|
+
the wrong contract.
|
|
144
|
+
|
|
145
|
+
## Design Pressure
|
|
146
|
+
|
|
147
|
+
The class DSL removes most container ceremony from app-local contracts. The next
|
|
148
|
+
ergonomics target is reducing repeated fail-fast and host registration boilerplate
|
|
149
|
+
without hiding the business graph.
|
|
150
|
+
|
|
151
|
+
## Related
|
|
152
|
+
|
|
153
|
+
- [Getting Started](./getting-started.md)
|
|
154
|
+
- [Igniter Lang Foundation](./igniter-lang-foundation.md)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Core Runtime Features
|
|
2
|
+
|
|
3
|
+
Use this page for features that still belong near the embedded contracts
|
|
4
|
+
kernel.
|
|
5
|
+
|
|
6
|
+
## Current Shape
|
|
7
|
+
|
|
8
|
+
- contract DSL and class DSL
|
|
9
|
+
- graph compilation and validation
|
|
10
|
+
- local execution
|
|
11
|
+
- diagnostics and structured reports
|
|
12
|
+
- explicit optional packs from `igniter-extensions`
|
|
13
|
+
|
|
14
|
+
Optional features should be installed through explicit packs. Avoid hidden
|
|
15
|
+
global activation and old `igniter/core/*` entrypoints in new public examples.
|
|
16
|
+
|
|
17
|
+
## Heuristic
|
|
18
|
+
|
|
19
|
+
Keep a feature near the embedded kernel when it is about computation semantics
|
|
20
|
+
or local execution behavior.
|
|
21
|
+
|
|
22
|
+
Move it upward when it needs:
|
|
23
|
+
|
|
24
|
+
- app boot/profile lifecycle
|
|
25
|
+
- web rendering or browser interaction
|
|
26
|
+
- framework integration
|
|
27
|
+
- distributed routing or placement
|
|
28
|
+
|
|
29
|
+
## Reading Path
|
|
30
|
+
|
|
31
|
+
- [Core](./core.md)
|
|
32
|
+
- [API And Runtime](./api-and-runtime.md)
|
|
33
|
+
- [Module System](../dev/module-system.md)
|
|
34
|
+
- [`packages/igniter-extensions/README.md`](../../packages/igniter-extensions/README.md)
|