igniter 0.5.1 → 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/README.md +169 -215
- data/docs/README.md +12 -15
- 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/execution-model.md +324 -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 +148 -65
- data/examples/catalog.rb +1374 -300
- 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 +9 -9
- data/lib/igniter/cluster.rb +3 -0
- data/lib/igniter/contract.rb +3 -0
- data/lib/igniter/monorepo_packages.rb +8 -9
- data/lib/igniter/version.rb +5 -0
- data/lib/igniter/web.rb +3 -0
- data/lib/igniter.rb +46 -54
- data/packages/igniter-agents/README.md +37 -15
- 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 +25 -15
- data/packages/igniter-agents/lib/igniter-agents.rb +0 -4
- data/packages/igniter-ai/README.md +35 -13
- 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 +14 -84
- 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 +112 -5
- 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 +94 -57
- 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 +364 -4
- 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 +0 -2
- 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 +531 -641
- data/bin/igniter-stack +0 -94
- data/examples/agent_orchestration.rb +0 -76
- data/examples/agents.rb +0 -151
- 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 -241
- data/examples/dataflow.rb +0 -309
- 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 -185
- data/examples/elocal_webhook.rb +0 -1
- data/examples/incremental.rb +0 -143
- data/examples/introspection.rb +0 -49
- data/examples/invariants.rb +0 -180
- data/examples/llm_tools.rb +0 -237
- data/examples/marketing_ergonomics.rb +0 -57
- data/examples/mesh.rb +0 -241
- data/examples/mesh_discovery.rb +0 -287
- data/examples/mesh_gossip.rb +0 -164
- data/examples/order_pipeline.rb +0 -163
- data/examples/provenance.rb +0 -122
- data/examples/reactive_auditing.rb +0 -50
- data/examples/ringcentral_routing.rb +0 -269
- data/examples/saga.rb +0 -110
- data/lib/igniter/stack.rb +0 -5
- data/packages/igniter-agents/lib/igniter/agent/mailbox.rb +0 -96
- data/packages/igniter-agents/lib/igniter/agent/message.rb +0 -21
- data/packages/igniter-agents/lib/igniter/agent/ref.rb +0 -87
- data/packages/igniter-agents/lib/igniter/agent/runner.rb +0 -141
- data/packages/igniter-agents/lib/igniter/agent/state_holder.rb +0 -23
- data/packages/igniter-agents/lib/igniter/agent.rb +0 -161
- data/packages/igniter-agents/lib/igniter/agents/observability/metrics_agent.rb +0 -130
- data/packages/igniter-agents/lib/igniter/agents/pipeline/batch_processor_agent.rb +0 -131
- data/packages/igniter-agents/lib/igniter/agents/proactive/alert_agent.rb +0 -111
- data/packages/igniter-agents/lib/igniter/agents/proactive/health_check_agent.rb +0 -122
- data/packages/igniter-agents/lib/igniter/agents/proactive_agent.rb +0 -208
- data/packages/igniter-agents/lib/igniter/agents/reliability/retry_agent.rb +0 -99
- data/packages/igniter-agents/lib/igniter/agents/scheduling/cron_agent.rb +0 -110
- data/packages/igniter-agents/lib/igniter/ai/agents/chain_agent.rb +0 -129
- data/packages/igniter-agents/lib/igniter/ai/agents/critic_agent.rb +0 -165
- data/packages/igniter-agents/lib/igniter/ai/agents/evaluator_agent.rb +0 -195
- data/packages/igniter-agents/lib/igniter/ai/agents/evolution_agent.rb +0 -288
- data/packages/igniter-agents/lib/igniter/ai/agents/observer_agent.rb +0 -186
- data/packages/igniter-agents/lib/igniter/ai/agents/planner_agent.rb +0 -212
- data/packages/igniter-agents/lib/igniter/ai/agents/router_agent.rb +0 -133
- data/packages/igniter-agents/lib/igniter/ai/agents/self_reflection_agent.rb +0 -177
- data/packages/igniter-agents/lib/igniter/ai/agents.rb +0 -25
- data/packages/igniter-agents/lib/igniter/registry.rb +0 -69
- data/packages/igniter-agents/lib/igniter/runtime/registry_agent_adapter.rb +0 -102
- data/packages/igniter-agents/lib/igniter/supervisor.rb +0 -170
- data/packages/igniter-ai/lib/igniter/ai/config.rb +0 -113
- data/packages/igniter-ai/lib/igniter/ai/context.rb +0 -74
- data/packages/igniter-ai/lib/igniter/ai/executor.rb +0 -352
- data/packages/igniter-ai/lib/igniter/ai/providers/anthropic.rb +0 -181
- data/packages/igniter-ai/lib/igniter/ai/providers/base.rb +0 -33
- data/packages/igniter-ai/lib/igniter/ai/providers/ollama.rb +0 -137
- data/packages/igniter-ai/lib/igniter/ai/providers/openai.rb +0 -182
- data/packages/igniter-ai/lib/igniter/ai/skill/feedback.rb +0 -116
- data/packages/igniter-ai/lib/igniter/ai/skill/output_schema.rb +0 -110
- data/packages/igniter-ai/lib/igniter/ai/skill/runtime_contract.rb +0 -87
- data/packages/igniter-ai/lib/igniter/ai/skill.rb +0 -107
- data/packages/igniter-ai/lib/igniter/ai/tool_registry.rb +0 -79
- data/packages/igniter-ai/lib/igniter/ai/transcription/providers/assemblyai.rb +0 -200
- data/packages/igniter-ai/lib/igniter/ai/transcription/providers/base.rb +0 -122
- data/packages/igniter-ai/lib/igniter/ai/transcription/providers/deepgram.rb +0 -162
- data/packages/igniter-ai/lib/igniter/ai/transcription/providers/openai.rb +0 -102
- data/packages/igniter-ai/lib/igniter/ai/transcription/transcriber.rb +0 -145
- data/packages/igniter-ai/lib/igniter/ai/transcription/transcript_result.rb +0 -29
- data/packages/igniter-app/README.md +0 -19
- data/packages/igniter-app/lib/igniter/app/app_config.rb +0 -43
- data/packages/igniter-app/lib/igniter/app/app_host.rb +0 -56
- data/packages/igniter-app/lib/igniter/app/app_host_config.rb +0 -27
- data/packages/igniter-app/lib/igniter/app/app_host_pack.rb +0 -13
- data/packages/igniter-app/lib/igniter/app/autoloader.rb +0 -18
- data/packages/igniter-app/lib/igniter/app/cluster_app_host.rb +0 -95
- data/packages/igniter-app/lib/igniter/app/cluster_app_host_config.rb +0 -78
- data/packages/igniter-app/lib/igniter/app/credentials/config_loader.rb +0 -152
- data/packages/igniter-app/lib/igniter/app/credentials/credential.rb +0 -48
- data/packages/igniter-app/lib/igniter/app/credentials/credential_policy.rb +0 -38
- data/packages/igniter-app/lib/igniter/app/credentials/events/credential_event.rb +0 -179
- data/packages/igniter-app/lib/igniter/app/credentials/events.rb +0 -12
- data/packages/igniter-app/lib/igniter/app/credentials/lease_request.rb +0 -153
- data/packages/igniter-app/lib/igniter/app/credentials/policies/ephemeral_lease_policy.rb +0 -35
- data/packages/igniter-app/lib/igniter/app/credentials/policies/local_only_policy.rb +0 -33
- data/packages/igniter-app/lib/igniter/app/credentials/policies.rb +0 -13
- data/packages/igniter-app/lib/igniter/app/credentials/store.rb +0 -21
- data/packages/igniter-app/lib/igniter/app/credentials/stores/file_store.rb +0 -114
- data/packages/igniter-app/lib/igniter/app/credentials/trail.rb +0 -254
- data/packages/igniter-app/lib/igniter/app/credentials.rb +0 -20
- data/packages/igniter-app/lib/igniter/app/dev_output_sync.rb +0 -4
- data/packages/igniter-app/lib/igniter/app/diagnostics/app_host_contributor.rb +0 -71
- data/packages/igniter-app/lib/igniter/app/diagnostics/cluster_app_host_contributor.rb +0 -97
- data/packages/igniter-app/lib/igniter/app/diagnostics/credential_contributor.rb +0 -66
- data/packages/igniter-app/lib/igniter/app/diagnostics/evolution_contributor.rb +0 -74
- data/packages/igniter-app/lib/igniter/app/diagnostics/ignite_contributor.rb +0 -121
- data/packages/igniter-app/lib/igniter/app/diagnostics/loader_contributor.rb +0 -68
- data/packages/igniter-app/lib/igniter/app/diagnostics/orchestration_contributor.rb +0 -200
- data/packages/igniter-app/lib/igniter/app/diagnostics/runtime_contributor.rb +0 -68
- data/packages/igniter-app/lib/igniter/app/diagnostics/scheduler_contributor.rb +0 -72
- data/packages/igniter-app/lib/igniter/app/diagnostics/sdk_contributor.rb +0 -284
- data/packages/igniter-app/lib/igniter/app/diagnostics.rb +0 -62
- data/packages/igniter-app/lib/igniter/app/evolution/approval_decision.rb +0 -115
- data/packages/igniter-app/lib/igniter/app/evolution/approval_request.rb +0 -36
- data/packages/igniter-app/lib/igniter/app/evolution/plan.rb +0 -72
- data/packages/igniter-app/lib/igniter/app/evolution/planner.rb +0 -85
- data/packages/igniter-app/lib/igniter/app/evolution/result.rb +0 -45
- data/packages/igniter-app/lib/igniter/app/evolution/runner.rb +0 -102
- data/packages/igniter-app/lib/igniter/app/evolution/store.rb +0 -21
- data/packages/igniter-app/lib/igniter/app/evolution/stores/file_store.rb +0 -241
- data/packages/igniter-app/lib/igniter/app/evolution/trail.rb +0 -108
- data/packages/igniter-app/lib/igniter/app/evolution.rb +0 -11
- data/packages/igniter-app/lib/igniter/app/filesystem_loader_adapter.rb +0 -21
- data/packages/igniter-app/lib/igniter/app/generator.rb +0 -636
- data/packages/igniter-app/lib/igniter/app/generators/cluster.rb +0 -1367
- data/packages/igniter-app/lib/igniter/app/generators/dashboard.rb +0 -152
- data/packages/igniter-app/lib/igniter/app/generators/playground.rb +0 -1227
- data/packages/igniter-app/lib/igniter/app/generators/templates/dashboard/README.md.erb +0 -37
- data/packages/igniter-app/lib/igniter/app/generators/templates/dashboard/app.rb.erb +0 -19
- data/packages/igniter-app/lib/igniter/app/generators/templates/dashboard/contexts/home_context.rb.erb +0 -54
- data/packages/igniter-app/lib/igniter/app/generators/templates/dashboard/frontend/application.js.erb +0 -3
- data/packages/igniter-app/lib/igniter/app/generators/templates/dashboard/spec/dashboard_app_spec.rb.erb +0 -79
- data/packages/igniter-app/lib/igniter/app/generators/templates/dashboard/support/stack_overview.rb.erb +0 -23
- data/packages/igniter-app/lib/igniter/app/generators/templates/dashboard/web/handlers/home_handler.rb.erb +0 -27
- data/packages/igniter-app/lib/igniter/app/generators/templates/dashboard/web/views/home_page.arb.erb +0 -44
- data/packages/igniter-app/lib/igniter/app/generators/templates/dashboard/web/views/home_page.rb.erb +0 -56
- data/packages/igniter-app/lib/igniter/app/generators/templates/dashboard/web/views/layout.arb.erb +0 -17
- data/packages/igniter-app/lib/igniter/app/host_adapter.rb +0 -26
- data/packages/igniter-app/lib/igniter/app/host_config.rb +0 -40
- data/packages/igniter-app/lib/igniter/app/host_registry.rb +0 -43
- data/packages/igniter-app/lib/igniter/app/loader_adapter.rb +0 -15
- data/packages/igniter-app/lib/igniter/app/loader_pack.rb +0 -8
- data/packages/igniter-app/lib/igniter/app/loader_registry.rb +0 -39
- data/packages/igniter-app/lib/igniter/app/observability/operator_action_handler.rb +0 -147
- data/packages/igniter-app/lib/igniter/app/observability/operator_console_handler.rb +0 -747
- data/packages/igniter-app/lib/igniter/app/observability/operator_overview_handler.rb +0 -350
- data/packages/igniter-app/lib/igniter/app/observability.rb +0 -5
- data/packages/igniter-app/lib/igniter/app/observability_pack.rb +0 -71
- data/packages/igniter-app/lib/igniter/app/operator/dispatcher.rb +0 -40
- data/packages/igniter-app/lib/igniter/app/operator/handler_registry.rb +0 -40
- data/packages/igniter-app/lib/igniter/app/operator/handler_result.rb +0 -67
- data/packages/igniter-app/lib/igniter/app/operator/handlers/base.rb +0 -79
- data/packages/igniter-app/lib/igniter/app/operator/handlers/ignite_handler.rb +0 -108
- data/packages/igniter-app/lib/igniter/app/operator/handlers/orchestration_handler.rb +0 -33
- data/packages/igniter-app/lib/igniter/app/operator/handlers.rb +0 -5
- data/packages/igniter-app/lib/igniter/app/operator/lifecycle_contract.rb +0 -55
- data/packages/igniter-app/lib/igniter/app/operator/policy.rb +0 -157
- data/packages/igniter-app/lib/igniter/app/operator.rb +0 -17
- data/packages/igniter-app/lib/igniter/app/orchestration/action_result_builder.rb +0 -65
- data/packages/igniter-app/lib/igniter/app/orchestration/followup_request.rb +0 -36
- data/packages/igniter-app/lib/igniter/app/orchestration/handler_registry.rb +0 -58
- data/packages/igniter-app/lib/igniter/app/orchestration/handlers.rb +0 -106
- data/packages/igniter-app/lib/igniter/app/orchestration/inbox.rb +0 -283
- data/packages/igniter-app/lib/igniter/app/orchestration/inbox_query.rb +0 -293
- data/packages/igniter-app/lib/igniter/app/orchestration/lane_registry.rb +0 -100
- data/packages/igniter-app/lib/igniter/app/orchestration/operator_query.rb +0 -449
- data/packages/igniter-app/lib/igniter/app/orchestration/plan.rb +0 -68
- data/packages/igniter-app/lib/igniter/app/orchestration/planner.rb +0 -89
- data/packages/igniter-app/lib/igniter/app/orchestration/policies.rb +0 -125
- data/packages/igniter-app/lib/igniter/app/orchestration/policy_registry.rb +0 -63
- data/packages/igniter-app/lib/igniter/app/orchestration/result.rb +0 -43
- data/packages/igniter-app/lib/igniter/app/orchestration/routing_registry.rb +0 -43
- data/packages/igniter-app/lib/igniter/app/orchestration/runner.rb +0 -50
- data/packages/igniter-app/lib/igniter/app/orchestration/runtime_event_query.rb +0 -205
- data/packages/igniter-app/lib/igniter/app/orchestration/runtime_overview_builder.rb +0 -286
- data/packages/igniter-app/lib/igniter/app/orchestration/runtime_query_overview_builder.rb +0 -20
- data/packages/igniter-app/lib/igniter/app/orchestration/runtime_result_builder.rb +0 -23
- data/packages/igniter-app/lib/igniter/app/orchestration.rb +0 -113
- data/packages/igniter-app/lib/igniter/app/runtime.rb +0 -4
- data/packages/igniter-app/lib/igniter/app/runtime_context.rb +0 -101
- data/packages/igniter-app/lib/igniter/app/runtime_pack.rb +0 -16
- data/packages/igniter-app/lib/igniter/app/scaffold_pack.rb +0 -6
- data/packages/igniter-app/lib/igniter/app/scheduler.rb +0 -109
- data/packages/igniter-app/lib/igniter/app/scheduler_adapter.rb +0 -17
- data/packages/igniter-app/lib/igniter/app/scheduler_pack.rb +0 -8
- data/packages/igniter-app/lib/igniter/app/scheduler_registry.rb +0 -39
- data/packages/igniter-app/lib/igniter/app/stack.rb +0 -1726
- data/packages/igniter-app/lib/igniter/app/stack_pack.rb +0 -3
- data/packages/igniter-app/lib/igniter/app/threaded_scheduler_adapter.rb +0 -35
- data/packages/igniter-app/lib/igniter/app/yml_loader.rb +0 -43
- data/packages/igniter-app/lib/igniter/app.rb +0 -2367
- data/packages/igniter-app/lib/igniter/ignite/bootstrap_agent.rb +0 -334
- data/packages/igniter-app/lib/igniter/ignite/bootstrap_target.rb +0 -79
- data/packages/igniter-app/lib/igniter/ignite/deployment_intent.rb +0 -82
- data/packages/igniter-app/lib/igniter/ignite/ignition_agent.rb +0 -1011
- data/packages/igniter-app/lib/igniter/ignite/ignition_plan.rb +0 -83
- data/packages/igniter-app/lib/igniter/ignite/ignition_report.rb +0 -144
- data/packages/igniter-app/lib/igniter/ignite/store.rb +0 -19
- data/packages/igniter-app/lib/igniter/ignite/stores/file_store.rb +0 -112
- data/packages/igniter-app/lib/igniter/ignite/trail.rb +0 -215
- data/packages/igniter-app/lib/igniter/ignite.rb +0 -11
- data/packages/igniter-app/lib/igniter-app.rb +0 -5
- data/packages/igniter-cluster/lib/igniter/cluster/agent_route_resolver.rb +0 -58
- data/packages/igniter-cluster/lib/igniter/cluster/consensus/cluster.rb +0 -187
- data/packages/igniter-cluster/lib/igniter/cluster/consensus/errors.rb +0 -16
- data/packages/igniter-cluster/lib/igniter/cluster/consensus/executors.rb +0 -45
- data/packages/igniter-cluster/lib/igniter/cluster/consensus/node.rb +0 -322
- data/packages/igniter-cluster/lib/igniter/cluster/consensus/read_query.rb +0 -32
- data/packages/igniter-cluster/lib/igniter/cluster/consensus/state_machine.rb +0 -60
- data/packages/igniter-cluster/lib/igniter/cluster/consensus.rb +0 -18
- data/packages/igniter-cluster/lib/igniter/cluster/diagnostics/governance_contributor.rb +0 -90
- data/packages/igniter-cluster/lib/igniter/cluster/diagnostics/identity_contributor.rb +0 -98
- data/packages/igniter-cluster/lib/igniter/cluster/diagnostics/routing_contributor.rb +0 -674
- data/packages/igniter-cluster/lib/igniter/cluster/diagnostics.rb +0 -24
- data/packages/igniter-cluster/lib/igniter/cluster/events/envelope.rb +0 -136
- data/packages/igniter-cluster/lib/igniter/cluster/events/hook_support.rb +0 -33
- data/packages/igniter-cluster/lib/igniter/cluster/events/log.rb +0 -102
- data/packages/igniter-cluster/lib/igniter/cluster/events/projection_feed.rb +0 -98
- data/packages/igniter-cluster/lib/igniter/cluster/events/read_model_projector.rb +0 -32
- data/packages/igniter-cluster/lib/igniter/cluster/events.rb +0 -131
- data/packages/igniter-cluster/lib/igniter/cluster/governance/admission_decision.rb +0 -41
- data/packages/igniter-cluster/lib/igniter/cluster/governance/admission_policy.rb +0 -66
- data/packages/igniter-cluster/lib/igniter/cluster/governance/admission_queue.rb +0 -88
- data/packages/igniter-cluster/lib/igniter/cluster/governance/admission_request.rb +0 -62
- data/packages/igniter-cluster/lib/igniter/cluster/governance/admission_workflow.rb +0 -214
- data/packages/igniter-cluster/lib/igniter/cluster/governance/checkpoint.rb +0 -141
- data/packages/igniter-cluster/lib/igniter/cluster/governance/compaction_record.rb +0 -33
- data/packages/igniter-cluster/lib/igniter/cluster/governance/stores/checkpoint_store.rb +0 -89
- data/packages/igniter-cluster/lib/igniter/cluster/governance/stores/file_store.rb +0 -249
- data/packages/igniter-cluster/lib/igniter/cluster/governance/trail.rb +0 -164
- data/packages/igniter-cluster/lib/igniter/cluster/governance.rb +0 -12
- data/packages/igniter-cluster/lib/igniter/cluster/identity/capability_attestation.rb +0 -114
- data/packages/igniter-cluster/lib/igniter/cluster/identity/manifest.rb +0 -139
- data/packages/igniter-cluster/lib/igniter/cluster/identity/node_identity.rb +0 -106
- data/packages/igniter-cluster/lib/igniter/cluster/identity.rb +0 -5
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/announcer.rb +0 -88
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/checkpoint_gossip.rb +0 -60
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/config.rb +0 -146
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/discovery.rb +0 -44
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/errors.rb +0 -36
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/gossip.rb +0 -62
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/mesh_ql.rb +0 -470
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/node_observation.rb +0 -281
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/observation_query.rb +0 -284
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/peer.rb +0 -51
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/peer_capacity_report.rb +0 -42
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/peer_identity_envelope.rb +0 -158
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/peer_metadata.rb +0 -122
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/peer_registry.rb +0 -81
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/placement_decision.rb +0 -64
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/placement_planner.rb +0 -154
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/placement_policy.rb +0 -103
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/poller.rb +0 -92
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/rebalance_plan.rb +0 -66
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/rebalance_planner.rb +0 -153
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/repair_loop.rb +0 -169
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/router.rb +0 -306
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/workload_signal.rb +0 -46
- data/packages/igniter-cluster/lib/igniter/cluster/mesh/workload_tracker.rb +0 -215
- data/packages/igniter-cluster/lib/igniter/cluster/mesh.rb +0 -452
- data/packages/igniter-cluster/lib/igniter/cluster/ownership/claim.rb +0 -69
- data/packages/igniter-cluster/lib/igniter/cluster/ownership/errors.rb +0 -19
- data/packages/igniter-cluster/lib/igniter/cluster/ownership/owner_client.rb +0 -76
- data/packages/igniter-cluster/lib/igniter/cluster/ownership/registry.rb +0 -98
- data/packages/igniter-cluster/lib/igniter/cluster/ownership/resolver.rb +0 -62
- data/packages/igniter-cluster/lib/igniter/cluster/ownership.rb +0 -81
- data/packages/igniter-cluster/lib/igniter/cluster/projection_store.rb +0 -62
- data/packages/igniter-cluster/lib/igniter/cluster/rag/chunk.rb +0 -49
- data/packages/igniter-cluster/lib/igniter/cluster/rag/fanout_retriever.rb +0 -93
- data/packages/igniter-cluster/lib/igniter/cluster/rag/knowledge_shard.rb +0 -140
- data/packages/igniter-cluster/lib/igniter/cluster/rag/net_http_adapter.rb +0 -85
- data/packages/igniter-cluster/lib/igniter/cluster/rag/ranker.rb +0 -46
- data/packages/igniter-cluster/lib/igniter/cluster/rag/retrieval_query.rb +0 -30
- data/packages/igniter-cluster/lib/igniter/cluster/rag/retrieval_result.rb +0 -77
- data/packages/igniter-cluster/lib/igniter/cluster/rag.rb +0 -38
- data/packages/igniter-cluster/lib/igniter/cluster/remote_adapter.rb +0 -101
- data/packages/igniter-cluster/lib/igniter/cluster/replication/bootstrapper.rb +0 -63
- data/packages/igniter-cluster/lib/igniter/cluster/replication/bootstrappers/gem.rb +0 -39
- data/packages/igniter-cluster/lib/igniter/cluster/replication/bootstrappers/git.rb +0 -46
- data/packages/igniter-cluster/lib/igniter/cluster/replication/bootstrappers/tarball.rb +0 -62
- data/packages/igniter-cluster/lib/igniter/cluster/replication/capability_query.rb +0 -675
- data/packages/igniter-cluster/lib/igniter/cluster/replication/expansion_plan.rb +0 -40
- data/packages/igniter-cluster/lib/igniter/cluster/replication/expansion_planner.rb +0 -154
- data/packages/igniter-cluster/lib/igniter/cluster/replication/manifest.rb +0 -47
- data/packages/igniter-cluster/lib/igniter/cluster/replication/network_topology.rb +0 -150
- data/packages/igniter-cluster/lib/igniter/cluster/replication/node_profile.rb +0 -134
- data/packages/igniter-cluster/lib/igniter/cluster/replication/reflective_replication_agent.rb +0 -259
- data/packages/igniter-cluster/lib/igniter/cluster/replication/replication_agent.rb +0 -89
- data/packages/igniter-cluster/lib/igniter/cluster/replication/ssh_session.rb +0 -79
- data/packages/igniter-cluster/lib/igniter/cluster/replication.rb +0 -38
- data/packages/igniter-cluster/lib/igniter/cluster/routed_agent_adapter.rb +0 -79
- data/packages/igniter-cluster/lib/igniter/cluster/routing_plan_executor.rb +0 -427
- data/packages/igniter-cluster/lib/igniter/cluster/routing_plan_result.rb +0 -38
- data/packages/igniter-cluster/lib/igniter/cluster/trust/admission_plan.rb +0 -34
- data/packages/igniter-cluster/lib/igniter/cluster/trust/admission_planner.rb +0 -76
- data/packages/igniter-cluster/lib/igniter/cluster/trust/admission_result.rb +0 -34
- data/packages/igniter-cluster/lib/igniter/cluster/trust/admission_runner.rb +0 -125
- data/packages/igniter-cluster/lib/igniter/cluster/trust/trust_assessment.rb +0 -37
- data/packages/igniter-cluster/lib/igniter/cluster/trust/trust_store.rb +0 -58
- data/packages/igniter-cluster/lib/igniter/cluster/trust/verifier.rb +0 -80
- data/packages/igniter-cluster/lib/igniter/cluster/trust.rb +0 -9
- data/packages/igniter-core/README.md +0 -21
- data/packages/igniter-core/lib/igniter/core/capabilities.rb +0 -70
- data/packages/igniter-core/lib/igniter/core/compiler/compiled_graph.rb +0 -218
- data/packages/igniter-core/lib/igniter/core/compiler/graph_compiler.rb +0 -70
- data/packages/igniter-core/lib/igniter/core/compiler/type_resolver.rb +0 -54
- data/packages/igniter-core/lib/igniter/core/compiler/validation_context.rb +0 -61
- data/packages/igniter-core/lib/igniter/core/compiler/validation_pipeline.rb +0 -33
- data/packages/igniter-core/lib/igniter/core/compiler/validator.rb +0 -19
- data/packages/igniter-core/lib/igniter/core/compiler/validators/agent_validator.rb +0 -142
- data/packages/igniter-core/lib/igniter/core/compiler/validators/await_validator.rb +0 -53
- data/packages/igniter-core/lib/igniter/core/compiler/validators/callable_validator.rb +0 -125
- data/packages/igniter-core/lib/igniter/core/compiler/validators/dependencies_validator.rb +0 -280
- data/packages/igniter-core/lib/igniter/core/compiler/validators/outputs_validator.rb +0 -66
- data/packages/igniter-core/lib/igniter/core/compiler/validators/remote_validator.rb +0 -60
- data/packages/igniter-core/lib/igniter/core/compiler/validators/type_compatibility_validator.rb +0 -84
- data/packages/igniter-core/lib/igniter/core/compiler/validators/uniqueness_validator.rb +0 -60
- data/packages/igniter-core/lib/igniter/core/compiler.rb +0 -21
- data/packages/igniter-core/lib/igniter/core/content_addressing.rb +0 -133
- data/packages/igniter-core/lib/igniter/core/contract.rb +0 -398
- data/packages/igniter-core/lib/igniter/core/dataflow/aggregate_operators.rb +0 -147
- data/packages/igniter-core/lib/igniter/core/dataflow/aggregate_state.rb +0 -77
- data/packages/igniter-core/lib/igniter/core/dataflow/diff.rb +0 -37
- data/packages/igniter-core/lib/igniter/core/dataflow/diff_state.rb +0 -81
- data/packages/igniter-core/lib/igniter/core/dataflow/incremental_collection_result.rb +0 -39
- data/packages/igniter-core/lib/igniter/core/dataflow/window_filter.rb +0 -48
- data/packages/igniter-core/lib/igniter/core/dataflow.rb +0 -65
- data/packages/igniter-core/lib/igniter/core/diagnostics/agent_contributor.rb +0 -241
- data/packages/igniter-core/lib/igniter/core/diagnostics/auditing/report/console_formatter.rb +0 -80
- data/packages/igniter-core/lib/igniter/core/diagnostics/auditing/report/markdown_formatter.rb +0 -22
- data/packages/igniter-core/lib/igniter/core/diagnostics/capability_contributor.rb +0 -162
- data/packages/igniter-core/lib/igniter/core/diagnostics/introspection/formatters/mermaid_formatter.rb +0 -58
- data/packages/igniter-core/lib/igniter/core/diagnostics/introspection/formatters/text_tree_formatter.rb +0 -44
- data/packages/igniter-core/lib/igniter/core/diagnostics/orchestration_contributor.rb +0 -75
- data/packages/igniter-core/lib/igniter/core/diagnostics/report.rb +0 -424
- data/packages/igniter-core/lib/igniter/core/diagnostics.rb +0 -58
- data/packages/igniter-core/lib/igniter/core/differential/divergence.rb +0 -29
- data/packages/igniter-core/lib/igniter/core/differential/formatter.rb +0 -96
- data/packages/igniter-core/lib/igniter/core/differential/report.rb +0 -86
- data/packages/igniter-core/lib/igniter/core/differential/runner.rb +0 -130
- data/packages/igniter-core/lib/igniter/core/differential.rb +0 -51
- data/packages/igniter-core/lib/igniter/core/dsl/contract_builder.rb +0 -652
- data/packages/igniter-core/lib/igniter/core/dsl/schema_builder.rb +0 -73
- data/packages/igniter-core/lib/igniter/core/dsl.rb +0 -9
- data/packages/igniter-core/lib/igniter/core/dto/record.rb +0 -189
- data/packages/igniter-core/lib/igniter/core/dto.rb +0 -8
- data/packages/igniter-core/lib/igniter/core/effect.rb +0 -95
- data/packages/igniter-core/lib/igniter/core/effect_registry.rb +0 -78
- data/packages/igniter-core/lib/igniter/core/errors.rb +0 -102
- data/packages/igniter-core/lib/igniter/core/events/bus.rb +0 -44
- data/packages/igniter-core/lib/igniter/core/events/event.rb +0 -82
- data/packages/igniter-core/lib/igniter/core/events.rb +0 -9
- data/packages/igniter-core/lib/igniter/core/execution_report/builder.rb +0 -54
- data/packages/igniter-core/lib/igniter/core/execution_report/formatter.rb +0 -50
- data/packages/igniter-core/lib/igniter/core/execution_report/node_entry.rb +0 -24
- data/packages/igniter-core/lib/igniter/core/execution_report/report.rb +0 -65
- data/packages/igniter-core/lib/igniter/core/execution_report.rb +0 -32
- data/packages/igniter-core/lib/igniter/core/executor.rb +0 -134
- data/packages/igniter-core/lib/igniter/core/executor_registry.rb +0 -44
- data/packages/igniter-core/lib/igniter/core/extensions/auditing/timeline.rb +0 -103
- data/packages/igniter-core/lib/igniter/core/extensions/auditing.rb +0 -10
- data/packages/igniter-core/lib/igniter/core/extensions/introspection/graph_formatter.rb +0 -134
- data/packages/igniter-core/lib/igniter/core/extensions/introspection/plan_formatter.rb +0 -85
- data/packages/igniter-core/lib/igniter/core/extensions/introspection/runtime_formatter.rb +0 -143
- data/packages/igniter-core/lib/igniter/core/extensions/introspection.rb +0 -12
- data/packages/igniter-core/lib/igniter/core/extensions/invariants.rb +0 -70
- data/packages/igniter-core/lib/igniter/core/extensions/reactive/engine.rb +0 -83
- data/packages/igniter-core/lib/igniter/core/extensions/reactive/matcher.rb +0 -21
- data/packages/igniter-core/lib/igniter/core/extensions/reactive/reaction.rb +0 -18
- data/packages/igniter-core/lib/igniter/core/extensions/reactive.rb +0 -12
- data/packages/igniter-core/lib/igniter/core/extensions.rb +0 -10
- data/packages/igniter-core/lib/igniter/core/fingerprint.rb +0 -43
- data/packages/igniter-core/lib/igniter/core/incremental/formatter.rb +0 -81
- data/packages/igniter-core/lib/igniter/core/incremental/result.rb +0 -69
- data/packages/igniter-core/lib/igniter/core/incremental/tracker.rb +0 -108
- data/packages/igniter-core/lib/igniter/core/incremental.rb +0 -50
- data/packages/igniter-core/lib/igniter/core/invariant.rb +0 -50
- data/packages/igniter-core/lib/igniter/core/memory/agent_memory.rb +0 -104
- data/packages/igniter-core/lib/igniter/core/memory/episode.rb +0 -29
- data/packages/igniter-core/lib/igniter/core/memory/fact.rb +0 -27
- data/packages/igniter-core/lib/igniter/core/memory/memorable.rb +0 -90
- data/packages/igniter-core/lib/igniter/core/memory/reflection_cycle.rb +0 -96
- data/packages/igniter-core/lib/igniter/core/memory/reflection_record.rb +0 -28
- data/packages/igniter-core/lib/igniter/core/memory/store.rb +0 -115
- data/packages/igniter-core/lib/igniter/core/memory/stores/in_memory.rb +0 -136
- data/packages/igniter-core/lib/igniter/core/memory/stores/sqlite.rb +0 -286
- data/packages/igniter-core/lib/igniter/core/memory.rb +0 -80
- data/packages/igniter-core/lib/igniter/core/metrics/collector.rb +0 -131
- data/packages/igniter-core/lib/igniter/core/metrics/prometheus_exporter.rb +0 -104
- data/packages/igniter-core/lib/igniter/core/metrics/snapshot.rb +0 -8
- data/packages/igniter-core/lib/igniter/core/metrics.rb +0 -37
- data/packages/igniter-core/lib/igniter/core/model/agent_interaction_contract.rb +0 -172
- data/packages/igniter-core/lib/igniter/core/model/agent_node.rb +0 -86
- data/packages/igniter-core/lib/igniter/core/model/aggregate_node.rb +0 -34
- data/packages/igniter-core/lib/igniter/core/model/await_node.rb +0 -21
- data/packages/igniter-core/lib/igniter/core/model/branch_node.rb +0 -82
- data/packages/igniter-core/lib/igniter/core/model/collection_node.rb +0 -32
- data/packages/igniter-core/lib/igniter/core/model/composition_node.rb +0 -22
- data/packages/igniter-core/lib/igniter/core/model/compute_node.rb +0 -90
- data/packages/igniter-core/lib/igniter/core/model/effect_node.rb +0 -37
- data/packages/igniter-core/lib/igniter/core/model/graph.rb +0 -15
- data/packages/igniter-core/lib/igniter/core/model/input_node.rb +0 -27
- data/packages/igniter-core/lib/igniter/core/model/node.rb +0 -22
- data/packages/igniter-core/lib/igniter/core/model/output_node.rb +0 -41
- data/packages/igniter-core/lib/igniter/core/model/remote_node.rb +0 -91
- data/packages/igniter-core/lib/igniter/core/model.rb +0 -20
- data/packages/igniter-core/lib/igniter/core/node_cache.rb +0 -231
- data/packages/igniter-core/lib/igniter/core/property_testing/formatter.rb +0 -66
- data/packages/igniter-core/lib/igniter/core/property_testing/generators.rb +0 -115
- data/packages/igniter-core/lib/igniter/core/property_testing/result.rb +0 -45
- data/packages/igniter-core/lib/igniter/core/property_testing/run.rb +0 -43
- data/packages/igniter-core/lib/igniter/core/property_testing/runner.rb +0 -47
- data/packages/igniter-core/lib/igniter/core/property_testing.rb +0 -64
- data/packages/igniter-core/lib/igniter/core/provenance/builder.rb +0 -126
- data/packages/igniter-core/lib/igniter/core/provenance/lineage.rb +0 -82
- data/packages/igniter-core/lib/igniter/core/provenance/node_trace.rb +0 -65
- data/packages/igniter-core/lib/igniter/core/provenance/text_formatter.rb +0 -70
- data/packages/igniter-core/lib/igniter/core/provenance.rb +0 -29
- data/packages/igniter-core/lib/igniter/core/runtime/agent_adapter.rb +0 -41
- data/packages/igniter-core/lib/igniter/core/runtime/agent_result_contract.rb +0 -91
- data/packages/igniter-core/lib/igniter/core/runtime/agent_route.rb +0 -60
- data/packages/igniter-core/lib/igniter/core/runtime/agent_route_resolver.rb +0 -26
- data/packages/igniter-core/lib/igniter/core/runtime/agent_session.rb +0 -922
- data/packages/igniter-core/lib/igniter/core/runtime/agent_session_query.rb +0 -379
- data/packages/igniter-core/lib/igniter/core/runtime/agent_transport.rb +0 -30
- data/packages/igniter-core/lib/igniter/core/runtime/cache.rb +0 -129
- data/packages/igniter-core/lib/igniter/core/runtime/collection_result.rb +0 -111
- data/packages/igniter-core/lib/igniter/core/runtime/deferred_result.rb +0 -66
- data/packages/igniter-core/lib/igniter/core/runtime/execution.rb +0 -913
- data/packages/igniter-core/lib/igniter/core/runtime/input_validator.rb +0 -129
- data/packages/igniter-core/lib/igniter/core/runtime/invalidator.rb +0 -52
- data/packages/igniter-core/lib/igniter/core/runtime/job_worker.rb +0 -39
- data/packages/igniter-core/lib/igniter/core/runtime/node_state.rb +0 -58
- data/packages/igniter-core/lib/igniter/core/runtime/orchestration_overview.rb +0 -213
- data/packages/igniter-core/lib/igniter/core/runtime/orchestration_runtime_state.rb +0 -176
- data/packages/igniter-core/lib/igniter/core/runtime/orchestration_transition_query.rb +0 -208
- data/packages/igniter-core/lib/igniter/core/runtime/planner.rb +0 -301
- data/packages/igniter-core/lib/igniter/core/runtime/proxy_agent_adapter.rb +0 -124
- data/packages/igniter-core/lib/igniter/core/runtime/remote_adapter.rb +0 -26
- data/packages/igniter-core/lib/igniter/core/runtime/resolver.rb +0 -951
- data/packages/igniter-core/lib/igniter/core/runtime/result.rb +0 -119
- data/packages/igniter-core/lib/igniter/core/runtime/runner_factory.rb +0 -20
- data/packages/igniter-core/lib/igniter/core/runtime/runners/inline_runner.rb +0 -21
- data/packages/igniter-core/lib/igniter/core/runtime/runners/store_runner.rb +0 -29
- data/packages/igniter-core/lib/igniter/core/runtime/runners/thread_pool_runner.rb +0 -37
- data/packages/igniter-core/lib/igniter/core/runtime/stores/active_record_store.rb +0 -53
- data/packages/igniter-core/lib/igniter/core/runtime/stores/file_store.rb +0 -91
- data/packages/igniter-core/lib/igniter/core/runtime/stores/memory_store.rb +0 -93
- data/packages/igniter-core/lib/igniter/core/runtime/stores/redis_store.rb +0 -93
- data/packages/igniter-core/lib/igniter/core/runtime/stores/sqlite_store.rb +0 -155
- data/packages/igniter-core/lib/igniter/core/runtime/stream_result.rb +0 -171
- data/packages/igniter-core/lib/igniter/core/runtime.rb +0 -41
- data/packages/igniter-core/lib/igniter/core/saga/compensation.rb +0 -31
- data/packages/igniter-core/lib/igniter/core/saga/compensation_record.rb +0 -20
- data/packages/igniter-core/lib/igniter/core/saga/executor.rb +0 -85
- data/packages/igniter-core/lib/igniter/core/saga/formatter.rb +0 -49
- data/packages/igniter-core/lib/igniter/core/saga/result.rb +0 -47
- data/packages/igniter-core/lib/igniter/core/saga.rb +0 -56
- data/packages/igniter-core/lib/igniter/core/stream_loop.rb +0 -80
- data/packages/igniter-core/lib/igniter/core/temporal.rb +0 -84
- data/packages/igniter-core/lib/igniter/core/tool/discoverable.rb +0 -151
- data/packages/igniter-core/lib/igniter/core/tool.rb +0 -56
- data/packages/igniter-core/lib/igniter/core/type_system.rb +0 -44
- data/packages/igniter-core/lib/igniter/core/version.rb +0 -5
- data/packages/igniter-core/lib/igniter/core.rb +0 -23
- data/packages/igniter-core/lib/igniter-core.rb +0 -3
- data/packages/igniter-extensions/lib/igniter/extensions/auditing.rb +0 -3
- data/packages/igniter-extensions/lib/igniter/extensions/capabilities.rb +0 -39
- data/packages/igniter-extensions/lib/igniter/extensions/content_addressing.rb +0 -5
- data/packages/igniter-extensions/lib/igniter/extensions/dataflow.rb +0 -117
- data/packages/igniter-extensions/lib/igniter/extensions/differential.rb +0 -114
- data/packages/igniter-extensions/lib/igniter/extensions/execution_report.rb +0 -27
- data/packages/igniter-extensions/lib/igniter/extensions/incremental.rb +0 -50
- data/packages/igniter-extensions/lib/igniter/extensions/introspection.rb +0 -3
- data/packages/igniter-extensions/lib/igniter/extensions/invariants.rb +0 -3
- data/packages/igniter-extensions/lib/igniter/extensions/provenance.rb +0 -45
- data/packages/igniter-extensions/lib/igniter/extensions/reactive.rb +0 -3
- data/packages/igniter-extensions/lib/igniter/extensions/saga.rb +0 -74
- data/packages/igniter-frontend/README.md +0 -224
- data/packages/igniter-frontend/lib/igniter/frontend/app.rb +0 -90
- data/packages/igniter-frontend/lib/igniter/frontend/app_access.rb +0 -36
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/component.rb +0 -120
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/action_group.rb +0 -53
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/badge.rb +0 -91
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/boolean.rb +0 -53
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/breadcrumbs.rb +0 -71
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/card.rb +0 -114
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/conversation_panel.rb +0 -61
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/datetime.rb +0 -42
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/display_value_support.rb +0 -38
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/empty_state.rb +0 -39
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/event_list.rb +0 -44
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/filters.rb +0 -183
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/indicator.rb +0 -59
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/json_panel.rb +0 -36
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/key_value_list.rb +0 -40
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/loading_state.rb +0 -43
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/metric_grid.rb +0 -37
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/number.rb +0 -53
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/page_header.rb +0 -53
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/pagination.rb +0 -143
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/panel.rb +0 -67
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/percentage.rb +0 -79
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/resource_list.rb +0 -38
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/scenario_card.rb +0 -48
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/shell_columns.rb +0 -67
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/sidebar_shell.rb +0 -106
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/table_with.rb +0 -203
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/tabs.rb +0 -147
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/components/viz.rb +0 -185
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/page.rb +0 -74
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/raw_text_node.rb +0 -40
- data/packages/igniter-frontend/lib/igniter/frontend/arbre/template_page.rb +0 -243
- data/packages/igniter-frontend/lib/igniter/frontend/arbre.rb +0 -48
- data/packages/igniter-frontend/lib/igniter/frontend/arbre_page.rb +0 -7
- data/packages/igniter-frontend/lib/igniter/frontend/assets.rb +0 -101
- data/packages/igniter-frontend/lib/igniter/frontend/builder.rb +0 -124
- data/packages/igniter-frontend/lib/igniter/frontend/component.rb +0 -24
- data/packages/igniter-frontend/lib/igniter/frontend/components.rb +0 -7
- data/packages/igniter-frontend/lib/igniter/frontend/context.rb +0 -53
- data/packages/igniter-frontend/lib/igniter/frontend/form_builder.rb +0 -63
- data/packages/igniter-frontend/lib/igniter/frontend/handler.rb +0 -92
- data/packages/igniter-frontend/lib/igniter/frontend/javascript.rb +0 -353
- data/packages/igniter-frontend/lib/igniter/frontend/page.rb +0 -24
- data/packages/igniter-frontend/lib/igniter/frontend/request.rb +0 -61
- data/packages/igniter-frontend/lib/igniter/frontend/response.rb +0 -67
- data/packages/igniter-frontend/lib/igniter/frontend/tailwind/realtime/adapters.rb +0 -226
- data/packages/igniter-frontend/lib/igniter/frontend/tailwind/realtime/presets.rb +0 -147
- data/packages/igniter-frontend/lib/igniter/frontend/tailwind/realtime.rb +0 -259
- data/packages/igniter-frontend/lib/igniter/frontend/tailwind/surfaces.rb +0 -1074
- data/packages/igniter-frontend/lib/igniter/frontend/tailwind/ui.rb +0 -1438
- data/packages/igniter-frontend/lib/igniter/frontend/tailwind.rb +0 -180
- data/packages/igniter-frontend/lib/igniter/frontend/version.rb +0 -9
- data/packages/igniter-frontend/lib/igniter/frontend.rb +0 -35
- data/packages/igniter-frontend/lib/igniter-frontend.rb +0 -3
- data/packages/igniter-rails/README.md +0 -96
- data/packages/igniter-rails/lib/igniter/plugins/rails/cable_adapter.rb +0 -49
- data/packages/igniter-rails/lib/igniter/plugins/rails/contract_job.rb +0 -76
- data/packages/igniter-rails/lib/igniter/plugins/rails/generators/contract/contract_generator.rb +0 -22
- data/packages/igniter-rails/lib/igniter/plugins/rails/generators/contract/templates/contract.rb.tt +0 -22
- data/packages/igniter-rails/lib/igniter/plugins/rails/generators/install/install_generator.rb +0 -33
- data/packages/igniter-rails/lib/igniter/plugins/rails/generators/install/templates/igniter.rb.tt +0 -16
- data/packages/igniter-rails/lib/igniter/plugins/rails/railtie.rb +0 -25
- data/packages/igniter-rails/lib/igniter/plugins/rails/webhook_concern.rb +0 -49
- data/packages/igniter-rails/lib/igniter/plugins/rails.rb +0 -12
- data/packages/igniter-rails/lib/igniter-rails.rb +0 -3
- data/packages/igniter-schema-rendering/README.md +0 -27
- data/packages/igniter-schema-rendering/lib/igniter/schema_rendering/page.rb +0 -35
- data/packages/igniter-schema-rendering/lib/igniter/schema_rendering/patcher.rb +0 -47
- data/packages/igniter-schema-rendering/lib/igniter/schema_rendering/renderer.rb +0 -268
- data/packages/igniter-schema-rendering/lib/igniter/schema_rendering/schema.rb +0 -172
- data/packages/igniter-schema-rendering/lib/igniter/schema_rendering/store.rb +0 -53
- data/packages/igniter-schema-rendering/lib/igniter/schema_rendering/submission_normalizer.rb +0 -117
- data/packages/igniter-schema-rendering/lib/igniter/schema_rendering/submission_processor.rb +0 -91
- data/packages/igniter-schema-rendering/lib/igniter/schema_rendering/submission_validator.rb +0 -62
- data/packages/igniter-schema-rendering/lib/igniter/schema_rendering/version.rb +0 -9
- data/packages/igniter-schema-rendering/lib/igniter/schema_rendering.rb +0 -20
- data/packages/igniter-schema-rendering/lib/igniter-schema-rendering.rb +0 -3
- data/packages/igniter-sdk/README.md +0 -25
- data/packages/igniter-sdk/lib/igniter/sdk/channels/base.rb +0 -84
- data/packages/igniter-sdk/lib/igniter/sdk/channels/delivery_result.rb +0 -61
- data/packages/igniter-sdk/lib/igniter/sdk/channels/message.rb +0 -101
- data/packages/igniter-sdk/lib/igniter/sdk/channels/telegram.rb +0 -161
- data/packages/igniter-sdk/lib/igniter/sdk/channels/webhook.rb +0 -213
- data/packages/igniter-sdk/lib/igniter/sdk/channels.rb +0 -17
- data/packages/igniter-sdk/lib/igniter/sdk/data/store.rb +0 -31
- data/packages/igniter-sdk/lib/igniter/sdk/data/stores/file.rb +0 -113
- data/packages/igniter-sdk/lib/igniter/sdk/data/stores/in_memory.rb +0 -63
- data/packages/igniter-sdk/lib/igniter/sdk/data/stores/sqlite.rb +0 -144
- data/packages/igniter-sdk/lib/igniter/sdk/data.rb +0 -34
- data/packages/igniter-sdk/lib/igniter/sdk/tools/agent_bootstrap_tool.rb +0 -151
- data/packages/igniter-sdk/lib/igniter/sdk/tools/local_workflow_selector_tool.rb +0 -269
- data/packages/igniter-sdk/lib/igniter/sdk/tools/system_discovery_tool.rb +0 -198
- data/packages/igniter-sdk/lib/igniter/sdk/tools.rb +0 -9
- data/packages/igniter-sdk/lib/igniter/sdk.rb +0 -86
- data/packages/igniter-sdk/lib/igniter-sdk.rb +0 -3
- data/packages/igniter-server/README.md +0 -9
- data/packages/igniter-server/lib/igniter/server/agent_session_store.rb +0 -98
- data/packages/igniter-server/lib/igniter/server/agent_transport.rb +0 -95
- data/packages/igniter-server/lib/igniter/server/app_host.rb +0 -3
- data/packages/igniter-server/lib/igniter/server/client.rb +0 -256
- data/packages/igniter-server/lib/igniter/server/config.rb +0 -70
- data/packages/igniter-server/lib/igniter/server/handlers/agent_message_handler.rb +0 -107
- data/packages/igniter-server/lib/igniter/server/handlers/agent_session_handler.rb +0 -125
- data/packages/igniter-server/lib/igniter/server/handlers/base.rb +0 -105
- data/packages/igniter-server/lib/igniter/server/handlers/contracts_handler.rb +0 -15
- data/packages/igniter-server/lib/igniter/server/handlers/event_handler.rb +0 -32
- data/packages/igniter-server/lib/igniter/server/handlers/execute_handler.rb +0 -43
- data/packages/igniter-server/lib/igniter/server/handlers/health_handler.rb +0 -32
- data/packages/igniter-server/lib/igniter/server/handlers/liveness_handler.rb +0 -20
- data/packages/igniter-server/lib/igniter/server/handlers/manifest_handler.rb +0 -77
- data/packages/igniter-server/lib/igniter/server/handlers/metrics_handler.rb +0 -51
- data/packages/igniter-server/lib/igniter/server/handlers/peers_handler.rb +0 -136
- data/packages/igniter-server/lib/igniter/server/handlers/readiness_handler.rb +0 -47
- data/packages/igniter-server/lib/igniter/server/handlers/status_handler.rb +0 -27
- data/packages/igniter-server/lib/igniter/server/http_server.rb +0 -222
- data/packages/igniter-server/lib/igniter/server/rack_app.rb +0 -60
- data/packages/igniter-server/lib/igniter/server/registry.rb +0 -56
- data/packages/igniter-server/lib/igniter/server/remote_adapter.rb +0 -27
- data/packages/igniter-server/lib/igniter/server/router.rb +0 -291
- data/packages/igniter-server/lib/igniter/server/server_logger.rb +0 -54
- data/packages/igniter-server/lib/igniter/server.rb +0 -130
- data/packages/igniter-server/lib/igniter-server.rb +0 -3
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Contract Persistence Landing Zone
|
|
2
|
+
|
|
3
|
+
Status date: 2026-04-29.
|
|
4
|
+
Scope: research placement decision. Not a package commitment or public API.
|
|
5
|
+
|
|
6
|
+
## Claim
|
|
7
|
+
|
|
8
|
+
Contract persistence now deserves a named landing path, but not an immediate
|
|
9
|
+
package split.
|
|
10
|
+
|
|
11
|
+
The Companion proof is no longer just CRUD convenience. It shows a recursive
|
|
12
|
+
system shape: contracts declare durable capabilities, inspect their own
|
|
13
|
+
infrastructure, produce materializer review packets, lower approvals into
|
|
14
|
+
history append intents, and expose audit read models for the process that may
|
|
15
|
+
later materialize more contracts.
|
|
16
|
+
|
|
17
|
+
That fractal signal is strong evidence for the direction. It is still extraction
|
|
18
|
+
pressure, not an API-promotion trigger.
|
|
19
|
+
|
|
20
|
+
## Decision
|
|
21
|
+
|
|
22
|
+
Keep the next iteration app-local in Companion.
|
|
23
|
+
|
|
24
|
+
When extraction starts, split by responsibility:
|
|
25
|
+
|
|
26
|
+
- `igniter-extensions`: optional contract vocabulary and report-only
|
|
27
|
+
descriptors over `igniter-contracts`
|
|
28
|
+
- `igniter-application`: host/runtime binding, adapters, setup/readiness
|
|
29
|
+
surfaces, explicit mutation boundaries, materializer review flows
|
|
30
|
+
- future `igniter-persistence`: stable durable capability package after repeated
|
|
31
|
+
app pressure and a smaller adapter/manifest contract
|
|
32
|
+
|
|
33
|
+
Do not create `igniter-data` yet. The name is too broad: it can mean dataflow,
|
|
34
|
+
analytics, datasets, ETL, tables, events, or persistence. The sharper future
|
|
35
|
+
name is `igniter-persistence`, because the capability is durable `Store[T]`,
|
|
36
|
+
append-only `History[T]`, typed relations, commands, materialization, and audit.
|
|
37
|
+
|
|
38
|
+
Do not put this in `igniter-contracts` now. The kernel should stay
|
|
39
|
+
host-agnostic; persistence remains optional vocabulary and app-boundary
|
|
40
|
+
behavior until the lowerings are clear.
|
|
41
|
+
|
|
42
|
+
## Landing Map
|
|
43
|
+
|
|
44
|
+
`igniter-extensions` owns:
|
|
45
|
+
|
|
46
|
+
- `persist` / `history` as optional Ruby product sugar
|
|
47
|
+
- future `Store[T]` / `History[T]` / `Relation[...]` descriptors
|
|
48
|
+
- field/index/scope/command metadata descriptors
|
|
49
|
+
- relation manifest shape
|
|
50
|
+
- operation-intent metadata shape
|
|
51
|
+
- report-only validation and diagnostics
|
|
52
|
+
|
|
53
|
+
`igniter-application` owns:
|
|
54
|
+
|
|
55
|
+
- capability registry/factory
|
|
56
|
+
- app-local record/history bindings
|
|
57
|
+
- adapter wiring and backend choice
|
|
58
|
+
- explicit write boundary
|
|
59
|
+
- setup/readiness/materializer surfaces
|
|
60
|
+
- approval/attempt receipt persistence
|
|
61
|
+
- application lifecycle around generated or materialized files
|
|
62
|
+
|
|
63
|
+
Future `igniter-persistence` owns only after stabilization:
|
|
64
|
+
|
|
65
|
+
- adapter contract
|
|
66
|
+
- migration/change-plan contract
|
|
67
|
+
- durable capability runtime APIs
|
|
68
|
+
- relation enforcement policy
|
|
69
|
+
- index/partition/placement metadata
|
|
70
|
+
- cross-app persistence test kit
|
|
71
|
+
|
|
72
|
+
## Maturity Ladder
|
|
73
|
+
|
|
74
|
+
1. Companion app-local proof: current state.
|
|
75
|
+
2. Companion internal stabilization: freeze manifest vocabulary, operation
|
|
76
|
+
algebra, relation semantics, approval lifecycle, and status packets.
|
|
77
|
+
3. Split-shaped extraction without package promise: isolate extension-shaped and
|
|
78
|
+
application-shaped modules inside the app or example boundary.
|
|
79
|
+
4. Optional shared packs: move descriptors to `igniter-extensions` and host
|
|
80
|
+
bindings to `igniter-application` only when another app/example repeats the
|
|
81
|
+
pressure.
|
|
82
|
+
5. `igniter-persistence`: create only when adapter semantics, migrations,
|
|
83
|
+
relation policy, and Store/History lowerings have stable tests.
|
|
84
|
+
6. `Igniter::Lang`: lower `persist` to `Store[T]`, `history` to `History[T]`,
|
|
85
|
+
and relation manifests to typed relation descriptors.
|
|
86
|
+
|
|
87
|
+
## Next Slice
|
|
88
|
+
|
|
89
|
+
Best next move:
|
|
90
|
+
|
|
91
|
+
- keep Companion as the proving ground
|
|
92
|
+
- stabilize a canonical manifest schema with `schema_version` and
|
|
93
|
+
`storage.shape`
|
|
94
|
+
- keep `persist`/`history` aliases for current app-local compatibility
|
|
95
|
+
- make operation algebra and relation metadata boring and explicit
|
|
96
|
+
- keep materializer execution blocked behind human approval and audited
|
|
97
|
+
app-boundary writes
|
|
98
|
+
- avoid SQL planners, migrations, FK generation, cascade semantics, and relation
|
|
99
|
+
enforcement until the descriptors stop moving
|
|
100
|
+
|
|
101
|
+
Acceptance:
|
|
102
|
+
|
|
103
|
+
- a new agent can read the manifest and know what is durable, append-only,
|
|
104
|
+
projected, related, command-driven, blocked, or approved
|
|
105
|
+
- no setup/read endpoint mutates durable state
|
|
106
|
+
- all mutation still flows through explicit command intent plus app boundary
|
|
107
|
+
- all terms still lower cleanly to future `Store[T]` / `History[T]`
|
|
108
|
+
|
|
109
|
+
## Handoff
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
[Architect Supervisor / Codex]
|
|
113
|
+
Track: docs/research/contract-persistence-landing-zone.md
|
|
114
|
+
Status: persistence has a reserved landing path, not a new package yet.
|
|
115
|
+
[D] Keep proof app-local in Companion for the next stabilization slice.
|
|
116
|
+
[D] First extraction, when justified, is split: contract vocabulary to
|
|
117
|
+
igniter-extensions; host/runtime/adapters/materializer boundary to
|
|
118
|
+
igniter-application.
|
|
119
|
+
[D] Reserve igniter-persistence as the future package name; avoid igniter-data.
|
|
120
|
+
[R] Do not promote persistence DSL into igniter-contracts from this proof alone.
|
|
121
|
+
[R] Treat fractality as a positive architecture signal, not a promotion trigger.
|
|
122
|
+
[S] Preserve persist -> Store[T], history -> History[T], and typed relation
|
|
123
|
+
lowerings.
|
|
124
|
+
Next: stabilize manifest vocabulary, operation algebra, relation semantics, and
|
|
125
|
+
approval/materializer lifecycle while staying app-local.
|
|
126
|
+
```
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# Contract Persistence: Organic Model
|
|
2
|
+
|
|
3
|
+
Status date: 2026-04-30.
|
|
4
|
+
Scope: Architecture recommendations for organic contract-native persistence.
|
|
5
|
+
Not a public API promise, package API, or execution plan.
|
|
6
|
+
|
|
7
|
+
## Current State (Honest Snapshot)
|
|
8
|
+
|
|
9
|
+
What the Companion proof has validated:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
persist → Store[T] ✓ manifest descriptor
|
|
13
|
+
history → History[T] ✓ manifest descriptor
|
|
14
|
+
field/index/scope/command ✓ DSL metadata
|
|
15
|
+
storage_plan (R1) ✓ report-only lowering candidates
|
|
16
|
+
command → mutation intent ✓ graph returns, store applies
|
|
17
|
+
materializer lifecycle ✓ review-only, no execution
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
What is **not** yet part of the graph:
|
|
21
|
+
|
|
22
|
+
- `field` — manifest metadata only, not a graph node
|
|
23
|
+
- Store reads — happen **outside** the contract, inside `CompanionStore`
|
|
24
|
+
- Store writes — intent hash interpreted by the store layer
|
|
25
|
+
- Adapter — runtime injection, not compile-time configuration
|
|
26
|
+
|
|
27
|
+
The graph knows about storage intent — but does not participate in storage.
|
|
28
|
+
That is a sound starting point, but not yet organic.
|
|
29
|
+
|
|
30
|
+
## What "Organic" Means in Igniter
|
|
31
|
+
|
|
32
|
+
ORM approach: **storage first**
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Table → Model class → Query methods → Business logic
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Igniter organic persistence: **semantics first**
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Contract (rules + shapes) → Storage plan → Adapter lowering → Physical storage
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Core principles:
|
|
45
|
+
|
|
46
|
+
1. **The contract IS the schema.** `persist :reminders do field :title end` is
|
|
47
|
+
the schema definition. No separate migration file.
|
|
48
|
+
2. **Store[T] is a graph node**, not DSL metadata. The compiler validates it;
|
|
49
|
+
the runtime resolves it.
|
|
50
|
+
3. **Reads are graph dependencies.** `store_read :reminder, by: :id` is
|
|
51
|
+
resolved by the runtime with TTL cache and coalescing — the same as
|
|
52
|
+
`compute`.
|
|
53
|
+
4. **Writes are typed outputs.** `store_write :reminder, target: :reminders` is
|
|
54
|
+
executed by the runtime at the app boundary, with Saga compensation.
|
|
55
|
+
5. **Adapter is a runtime plugin.** The contract declares what to store; the
|
|
56
|
+
adapter declares how.
|
|
57
|
+
|
|
58
|
+
## Model: Store[T] and History[T] as First-Class Graph Nodes
|
|
59
|
+
|
|
60
|
+
### New Node Types in the Graph Model
|
|
61
|
+
|
|
62
|
+
```ruby
|
|
63
|
+
# lib/igniter/model/ — new NodeTypes:
|
|
64
|
+
# StoreNode — like ComputeNode, but resolved by the adapter
|
|
65
|
+
# HistoryNode — append-only variant of StoreNode
|
|
66
|
+
# StoreReadNode — adapter resolution (like compute, with cache_ttl/coalesce)
|
|
67
|
+
# StoreWriteNode — side effect at app boundary (like effect, with compensate)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### DSL (target shape)
|
|
71
|
+
|
|
72
|
+
```ruby
|
|
73
|
+
class ReminderContract < Igniter::Contract
|
|
74
|
+
define do
|
|
75
|
+
# Store[T] declaration — both schema and graph node
|
|
76
|
+
persist :reminders, key: :id, adapter: :sqlite do
|
|
77
|
+
field :id, type: Types::UUID, default: -> { SecureRandom.uuid }
|
|
78
|
+
field :title, type: Types::String
|
|
79
|
+
field :status, type: Types::Enum[:open, :closed], default: :open
|
|
80
|
+
index :status
|
|
81
|
+
scope :open, where: { status: :open }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# History — append-only, no update/delete semantics
|
|
85
|
+
history :reminder_logs, partition_key: :reminder_id do
|
|
86
|
+
field :reminder_id, type: Types::UUID
|
|
87
|
+
field :action, type: Types::Symbol
|
|
88
|
+
field :occurred_at, type: Types::DateTime, default: -> { Time.now }
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# --- Inputs ---
|
|
92
|
+
input :reminder_id
|
|
93
|
+
|
|
94
|
+
# store_read resolved by runtime — lazy node like compute
|
|
95
|
+
store_read :reminder, from: :reminders, by: :id, using: :reminder_id,
|
|
96
|
+
cache_ttl: 60, coalesce: true
|
|
97
|
+
|
|
98
|
+
# Business logic stays in compute — storage-unaware
|
|
99
|
+
compute :updated_reminder, depends_on: [:reminder], call: CompleteReminderTransition
|
|
100
|
+
|
|
101
|
+
# store_write — typed side effect at app boundary
|
|
102
|
+
store_write :saved_reminder, from: :updated_reminder, target: :reminders
|
|
103
|
+
|
|
104
|
+
# store_append — for histories
|
|
105
|
+
store_append :log_entry, from: :updated_reminder, target: :reminder_logs
|
|
106
|
+
|
|
107
|
+
output :saved_reminder
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### What This Provides
|
|
113
|
+
|
|
114
|
+
| Aspect | ORM | Igniter Organic |
|
|
115
|
+
|--------|-----|-----------------|
|
|
116
|
+
| Schema | Separate migration file | `persist do field ... end` IS the schema |
|
|
117
|
+
| Reads | `Model.where(...)` outside business logic | `store_read` — graph dependency with cache/coalesce |
|
|
118
|
+
| Writes | `model.save!` imperatively | `store_write` — typed output with Saga |
|
|
119
|
+
| Validation | callbacks/validations in model | type system on fields + graph compiler |
|
|
120
|
+
| Relations | belongs_to/has_many | `relation` — typed compiler-validated graph edge |
|
|
121
|
+
| Adapter | ActiveRecord + database.yml | runtime plugin declared in contract |
|
|
122
|
+
| Migration | `rails generate migration` | diff between `Store[T].version(n)` and `Store[T].version(n+1)` |
|
|
123
|
+
|
|
124
|
+
## Relations as Graph Edges
|
|
125
|
+
|
|
126
|
+
Relations are currently manifest metadata with `enforcement: :report_only`.
|
|
127
|
+
In the organic model they are typed edges the **compiler validates**:
|
|
128
|
+
|
|
129
|
+
```ruby
|
|
130
|
+
relation :logs_by_reminder,
|
|
131
|
+
from: Store[:reminders],
|
|
132
|
+
to: History[:reminder_logs],
|
|
133
|
+
join: { id: :reminder_id },
|
|
134
|
+
cardinality: :one_to_many
|
|
135
|
+
|
|
136
|
+
# In a projection — the relation becomes a graph input
|
|
137
|
+
project :reminder_detail,
|
|
138
|
+
using: :logs_by_reminder,
|
|
139
|
+
depends_on: [:reminder]
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The compiler checks that `id` in `reminders` and `reminder_id` in
|
|
143
|
+
`reminder_logs` have compatible types. This is compile-time type-checking of
|
|
144
|
+
relations — something no ORM provides.
|
|
145
|
+
|
|
146
|
+
## Migration as a First-Class Contract
|
|
147
|
+
|
|
148
|
+
The current `WizardTypeSpecMigrationPlanContract` is already close to this.
|
|
149
|
+
Target model:
|
|
150
|
+
|
|
151
|
+
```ruby
|
|
152
|
+
class ReminderContract::Migration < Igniter::Contract
|
|
153
|
+
define do
|
|
154
|
+
# Store[T] is itself versioned — it keeps a history of spec changes
|
|
155
|
+
input :previous_schema, from: Store[ReminderContract].version(:previous)
|
|
156
|
+
input :current_schema, from: Store[ReminderContract].version(:current)
|
|
157
|
+
|
|
158
|
+
compute :schema_diff, depends_on: %i[previous_schema current_schema], call: StoreSchemaDiff
|
|
159
|
+
compute :migration_plan, depends_on: [:schema_diff], call: MigrationPlanBuilder
|
|
160
|
+
|
|
161
|
+
output :migration_plan # report-only, never self-executing
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Key insight: **schema versioning IS a History[ContractSpecChange]**, which
|
|
167
|
+
Companion already has (`WizardTypeSpecChange`). Schema change history is stored
|
|
168
|
+
with the same mechanisms as business event history. That is the organic shape.
|
|
169
|
+
|
|
170
|
+
## Adapter as a Runtime Plugin
|
|
171
|
+
|
|
172
|
+
```ruby
|
|
173
|
+
# Adapter declared in the contract — compile-time decision
|
|
174
|
+
class ReminderContract < Igniter::Contract
|
|
175
|
+
adapter :sqlite, database: "companion.db" # development
|
|
176
|
+
# adapter :postgres, url: ENV["DATABASE_URL"] # production
|
|
177
|
+
# adapter :memory # tests
|
|
178
|
+
|
|
179
|
+
define do
|
|
180
|
+
persist :reminders do ... end
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# In tests:
|
|
185
|
+
ReminderContract.execute(
|
|
186
|
+
{ reminder_id: "123" },
|
|
187
|
+
adapter: :memory # override per execution
|
|
188
|
+
)
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Minimal adapter interface:
|
|
192
|
+
|
|
193
|
+
```ruby
|
|
194
|
+
module Igniter::Persistence::Adapter
|
|
195
|
+
def read(store_key, query) # → Record or nil
|
|
196
|
+
def write(store_key, record) # → persisted Record
|
|
197
|
+
def append(history_key, event) # → appended Event
|
|
198
|
+
def query(store_key, scope, params) # → Array<Record>
|
|
199
|
+
end
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## The Core Distinction from ORM
|
|
203
|
+
|
|
204
|
+
In an ORM the **unit of storage is an object** (User, Post, Comment). Business
|
|
205
|
+
logic is scattered across callbacks, concerns, and service objects.
|
|
206
|
+
|
|
207
|
+
In Igniter organic persistence the **unit of storage is a contract**. The
|
|
208
|
+
contract declares:
|
|
209
|
+
|
|
210
|
+
- what it stores (`persist`, `history`)
|
|
211
|
+
- how to read (`store_read`)
|
|
212
|
+
- how to mutate (`store_write`, `store_append`)
|
|
213
|
+
- how data relates (`relation`)
|
|
214
|
+
- what the adapter needs to lower the schema (`field`, `index`, `scope`)
|
|
215
|
+
|
|
216
|
+
The runtime handles everything else: lazy resolution, cache, invalidation, Saga
|
|
217
|
+
compensation, audit trail. Business logic stays in `compute` — isolated,
|
|
218
|
+
testable, storage-unaware.
|
|
219
|
+
|
|
220
|
+
## What to Preserve from the Current Design
|
|
221
|
+
|
|
222
|
+
| Current | Status |
|
|
223
|
+
|---------|--------|
|
|
224
|
+
| `persist → Store[T]` / `history → History[T]` | Keep — correct semantics |
|
|
225
|
+
| Command intent → app boundary | Keep — correct boundary pattern |
|
|
226
|
+
| Storage plan sketch (R1) | Keep as compile-time artifact |
|
|
227
|
+
| Report-only materializer lifecycle | Keep — execution must be explicit |
|
|
228
|
+
| Manifest + glossary health | Keep as guardrail |
|
|
229
|
+
| `WizardTypeSpec + History[ContractSpecChange]` | Keep — this IS schema versioning |
|
|
230
|
+
|
|
231
|
+
## Phased Path (on top of existing roadmap)
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
R1 (done) Storage plan sketch — report-only
|
|
235
|
+
R2 (done) Storage migration plan — report-only
|
|
236
|
+
R2a field → type system — fields participate in type validation
|
|
237
|
+
R2b store_read as compute-like graph node (lazy, cache_ttl, coalesce)
|
|
238
|
+
R3 store_write / store_append as typed effect output with Saga
|
|
239
|
+
R4 Adapter interface + memory adapter for tests
|
|
240
|
+
R5 Migration as diff Store[T].v(n) → Store[T].v(n+1)
|
|
241
|
+
R6 Materializer dry run → executable materializer
|
|
242
|
+
R7 Extraction: descriptors → igniter-extensions,
|
|
243
|
+
adapters/materializer → igniter-application,
|
|
244
|
+
reserve igniter-persistence
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## Conclusion
|
|
248
|
+
|
|
249
|
+
The Companion proof has the right architecture. The boundary "graph computes
|
|
250
|
+
intent, store applies it" is correct. The manifest, storage plan, and glossary
|
|
251
|
+
health are the right infrastructure.
|
|
252
|
+
|
|
253
|
+
The move to organic persistence is: make `Store[T]` and `History[T]`
|
|
254
|
+
**first-class graph nodes**, not just DSL metadata. Then `store_read` is
|
|
255
|
+
resolved by the runtime with the same cache/coalesce as compute nodes,
|
|
256
|
+
`store_write` executes as a typed effect with Saga, and relations are
|
|
257
|
+
compiler-validated. That is persistence as part of the contract, not an ORM
|
|
258
|
+
on top of it.
|
|
259
|
+
|
|
260
|
+
## Handoff
|
|
261
|
+
|
|
262
|
+
```text
|
|
263
|
+
[Architect Supervisor / Codex]
|
|
264
|
+
Track: docs/research/contract-persistence-organic-model.md
|
|
265
|
+
Status: architectural recommendations for organic contract-native persistence.
|
|
266
|
+
[D] Store[T] and History[T] should become first-class graph node types.
|
|
267
|
+
[D] store_read should be a lazy graph node resolved by the runtime adapter.
|
|
268
|
+
[D] store_write/store_append should be typed effect outputs with Saga support.
|
|
269
|
+
[D] Relations should be compiler-validated typed graph edges.
|
|
270
|
+
[D] Fields should participate in Igniter's type system.
|
|
271
|
+
[D] Adapter should be declared in the contract, overridable per execution.
|
|
272
|
+
[D] Schema versioning IS History[ContractSpecChange] — already present in Companion.
|
|
273
|
+
[R] Do not add ORM-style query methods or model callbacks to this path.
|
|
274
|
+
[R] Keep the "graph computes intent, store applies" boundary.
|
|
275
|
+
[S] Development track is captured in
|
|
276
|
+
docs/research/contract-persistence-development-track.md.
|
|
277
|
+
[S] Next best slice: R2a — connect field declarations to report-only type
|
|
278
|
+
validation before core graph-node changes.
|
|
279
|
+
```
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# Contract Persistence: Органическая модель
|
|
2
|
+
|
|
3
|
+
Дата: 2026-04-29.
|
|
4
|
+
Область: Архитектурные рекомендации по органическому persistence, нативному для контрактов.
|
|
5
|
+
Не является публичным API, пакетным API или планом выполнения.
|
|
6
|
+
|
|
7
|
+
## Текущее состояние (честный срез)
|
|
8
|
+
|
|
9
|
+
Что доказано в Companion:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
persist → Store[T] ✓ manifest descriptor
|
|
13
|
+
history → History[T] ✓ manifest descriptor
|
|
14
|
+
field/index/scope/command ✓ DSL-метаданные
|
|
15
|
+
storage_plan (R1) ✓ report-only lowering candidates
|
|
16
|
+
command → mutation intent ✓ граф возвращает, store применяет
|
|
17
|
+
materializer lifecycle ✓ review-only, без execution
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Что **не** является частью графа сейчас:
|
|
21
|
+
|
|
22
|
+
- `field` — только метаданные манифеста, не узел графа
|
|
23
|
+
- Store reads — происходят **снаружи** контракта, в `CompanionStore`
|
|
24
|
+
- Store writes — intent hash, интерпретируемый store-ом
|
|
25
|
+
- Adapter — runtime injection, не compile-time конфигурация
|
|
26
|
+
|
|
27
|
+
Граф знает о намерении хранить — но не является участником хранения.
|
|
28
|
+
Это хорошая отправная точка, но ещё не "organic".
|
|
29
|
+
|
|
30
|
+
## Что значит "organic" в контексте Igniter
|
|
31
|
+
|
|
32
|
+
ORM-подход: **storage first**
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Table → Model class → Query methods → Business logic
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Igniter organic persistence: **semantics first**
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Contract (rules + shapes) → Storage plan → Adapter lowering → Physical storage
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Ключевые принципы:
|
|
45
|
+
|
|
46
|
+
1. **Контракт IS схема.** `persist :reminders do field :title end` — это и
|
|
47
|
+
есть определение данных. Никакой отдельной миграционной схемы.
|
|
48
|
+
2. **Store[T] — узел графа**, а не DSL-метадата. Компилятор валидирует,
|
|
49
|
+
runtime резолвит.
|
|
50
|
+
3. **Чтение — граф-зависимость.** `store_read :reminder, by: :id` резолвится
|
|
51
|
+
runtime-ом с TTL cache и coalescing — так же как `compute`.
|
|
52
|
+
4. **Запись — типизированный output.** `store_write :reminder,
|
|
53
|
+
target: :reminders` выполняется runtime-ом на app boundary, с Saga
|
|
54
|
+
компенсацией.
|
|
55
|
+
5. **Adapter — runtime plugin.** Контракт объявляет что хранить; adapter
|
|
56
|
+
говорит как.
|
|
57
|
+
|
|
58
|
+
## Модель: Store[T] и History[T] как узлы первого класса
|
|
59
|
+
|
|
60
|
+
### Новые типы узлов в модели графа
|
|
61
|
+
|
|
62
|
+
```ruby
|
|
63
|
+
# lib/igniter/model/ — новые NodeType:
|
|
64
|
+
# StoreNode — аналог ComputeNode, но резолвится adapter-ом
|
|
65
|
+
# HistoryNode — append-only вариант StoreNode
|
|
66
|
+
# StoreReadNode — разрешение через adapter (как compute, с cache_ttl/coalesce)
|
|
67
|
+
# StoreWriteNode — side effect на app boundary (как effect, с compensate)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### DSL (целевая форма)
|
|
71
|
+
|
|
72
|
+
```ruby
|
|
73
|
+
class ReminderContract < Igniter::Contract
|
|
74
|
+
define do
|
|
75
|
+
# Объявление Store[T] — это и схема, и узел графа
|
|
76
|
+
persist :reminders, key: :id, adapter: :sqlite do
|
|
77
|
+
field :id, type: Types::UUID, default: -> { SecureRandom.uuid }
|
|
78
|
+
field :title, type: Types::String
|
|
79
|
+
field :status, type: Types::Enum[:open, :closed], default: :open
|
|
80
|
+
index :status
|
|
81
|
+
scope :open, where: { status: :open }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# История — append-only, без update/delete семантики
|
|
85
|
+
history :reminder_logs, partition_key: :reminder_id do
|
|
86
|
+
field :reminder_id, type: Types::UUID
|
|
87
|
+
field :action, type: Types::Symbol
|
|
88
|
+
field :occurred_at, type: Types::DateTime, default: -> { Time.now }
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# --- Входы ---
|
|
92
|
+
input :reminder_id
|
|
93
|
+
|
|
94
|
+
# store_read резолвится runtime-ом — lazy node как compute
|
|
95
|
+
store_read :reminder, from: :reminders, by: :id, using: :reminder_id,
|
|
96
|
+
cache_ttl: 60, coalesce: true
|
|
97
|
+
|
|
98
|
+
# Бизнес-логика остаётся в compute — без зависимости от хранилища
|
|
99
|
+
compute :updated_reminder, depends_on: [:reminder], call: CompleteReminderTransition
|
|
100
|
+
|
|
101
|
+
# store_write — типизированный side effect на app boundary
|
|
102
|
+
store_write :saved_reminder, from: :updated_reminder, target: :reminders
|
|
103
|
+
|
|
104
|
+
# store_append — для историй
|
|
105
|
+
store_append :log_entry, from: :updated_reminder, target: :reminder_logs
|
|
106
|
+
|
|
107
|
+
output :saved_reminder
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Что это даёт
|
|
113
|
+
|
|
114
|
+
| Аспект | ORM | Igniter Organic |
|
|
115
|
+
|--------|-----|-----------------|
|
|
116
|
+
| Схема | Отдельный migration file | `persist do field ... end` IS схема |
|
|
117
|
+
| Чтение | `Model.where(...)` вне бизнес-логики | `store_read` — граф-зависимость с cache/coalesce |
|
|
118
|
+
| Запись | `model.save!` императивно | `store_write` — типизированный output с Saga |
|
|
119
|
+
| Валидация | callbacks/validations в модели | type system на field + граф-компилятор |
|
|
120
|
+
| Отношения | belongs_to/has_many | `relation` — граф-ребро, валидируемое компилятором |
|
|
121
|
+
| Адаптер | ActiveRecord + database.yml | runtime plugin, объявлен в контракте |
|
|
122
|
+
| Миграция | `rails generate migration` | diff между `Store[T].version(n)` и `Store[T].version(n+1)` |
|
|
123
|
+
|
|
124
|
+
## Relations как граф-рёбра
|
|
125
|
+
|
|
126
|
+
Сейчас relations — manifest metadata с `enforcement: :report_only`. В
|
|
127
|
+
органической модели — это типизированные рёбра, которые **компилятор
|
|
128
|
+
валидирует**:
|
|
129
|
+
|
|
130
|
+
```ruby
|
|
131
|
+
relation :logs_by_reminder,
|
|
132
|
+
from: Store[:reminders],
|
|
133
|
+
to: History[:reminder_logs],
|
|
134
|
+
join: { id: :reminder_id },
|
|
135
|
+
cardinality: :one_to_many
|
|
136
|
+
|
|
137
|
+
# В проекции — relation становится граф-входом
|
|
138
|
+
project :reminder_detail,
|
|
139
|
+
using: :logs_by_reminder,
|
|
140
|
+
depends_on: [:reminder]
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Компилятор проверяет, что `id` в `reminders` и `reminder_id` в
|
|
144
|
+
`reminder_logs` имеют совместимые типы. Это compile-time type-checking
|
|
145
|
+
отношений — чего нет ни в каком ORM.
|
|
146
|
+
|
|
147
|
+
## Migration как первоклассный контракт
|
|
148
|
+
|
|
149
|
+
Текущий `WizardTypeSpecMigrationPlanContract` уже близок к этому. Целевая
|
|
150
|
+
модель:
|
|
151
|
+
|
|
152
|
+
```ruby
|
|
153
|
+
class ReminderContract::Migration < Igniter::Contract
|
|
154
|
+
define do
|
|
155
|
+
# Store[T] сам является версионированным — хранит историю spec-изменений
|
|
156
|
+
input :previous_schema, from: Store[ReminderContract].version(:previous)
|
|
157
|
+
input :current_schema, from: Store[ReminderContract].version(:current)
|
|
158
|
+
|
|
159
|
+
compute :schema_diff, depends_on: %i[previous_schema current_schema], call: StoreSchemaDiff
|
|
160
|
+
compute :migration_plan, depends_on: [:schema_diff], call: MigrationPlanBuilder
|
|
161
|
+
|
|
162
|
+
output :migration_plan # report-only, не выполняется
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Ключевая идея: **версионирование схемы — это History[ContractSpecChange]**,
|
|
168
|
+
что уже есть в Companion (`WizardTypeSpecChange`). История изменений схемы
|
|
169
|
+
хранится теми же механизмами, что и история бизнес-событий. Это и есть
|
|
170
|
+
органичная форма.
|
|
171
|
+
|
|
172
|
+
## Adapter как runtime plugin
|
|
173
|
+
|
|
174
|
+
```ruby
|
|
175
|
+
# Адаптер объявлен в контракте — compile-time decision
|
|
176
|
+
class ReminderContract < Igniter::Contract
|
|
177
|
+
adapter :sqlite, database: "companion.db" # для development
|
|
178
|
+
# adapter :postgres, url: ENV["DATABASE_URL"] # для production
|
|
179
|
+
# adapter :memory # для тестов
|
|
180
|
+
|
|
181
|
+
define do
|
|
182
|
+
persist :reminders do ... end
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# В тестах:
|
|
187
|
+
ReminderContract.execute(
|
|
188
|
+
{ reminder_id: "123" },
|
|
189
|
+
adapter: :memory # override per execution
|
|
190
|
+
)
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Минимальный интерфейс адаптера:
|
|
194
|
+
|
|
195
|
+
```ruby
|
|
196
|
+
module Igniter::Persistence::Adapter
|
|
197
|
+
def read(store_key, query) # → Record или nil
|
|
198
|
+
def write(store_key, record) # → persisted Record
|
|
199
|
+
def append(history_key, event) # → appended Event
|
|
200
|
+
def query(store_key, scope, params) # → Array<Record>
|
|
201
|
+
end
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Ключевое отличие от ORM: граф как единица хранения
|
|
205
|
+
|
|
206
|
+
В ORM **единица хранения — объект** (User, Post, Comment). Бизнес-логика
|
|
207
|
+
разбросана по callbacks, concerns, service objects.
|
|
208
|
+
|
|
209
|
+
В Igniter organic persistence **единица хранения — контракт**. Контракт
|
|
210
|
+
объявляет:
|
|
211
|
+
|
|
212
|
+
- что он хранит (`persist`, `history`)
|
|
213
|
+
- как получить (`store_read`)
|
|
214
|
+
- как изменить (`store_write`, `store_append`)
|
|
215
|
+
- как данные связаны (`relation`)
|
|
216
|
+
- как выглядит схема для адаптера (`field`, `index`, `scope`)
|
|
217
|
+
|
|
218
|
+
Runtime делает всё остальное: lazy resolution, cache, invalidation, Saga
|
|
219
|
+
компенсация, audit trail. Бизнес-логика остаётся в `compute` — изолированная,
|
|
220
|
+
тестируемая, без зависимости от хранилища.
|
|
221
|
+
|
|
222
|
+
## Что сохранить из текущего дизайна
|
|
223
|
+
|
|
224
|
+
| Текущее | Статус |
|
|
225
|
+
|---------|--------|
|
|
226
|
+
| `persist → Store[T]` / `history → History[T]` | Сохранить — правильная семантика |
|
|
227
|
+
| Command intent → app boundary | Сохранить — правильный паттерн |
|
|
228
|
+
| Storage plan sketch (R1) | Сохранить как compile-time artifact |
|
|
229
|
+
| Report-only materializer lifecycle | Сохранить — execution должен быть явным |
|
|
230
|
+
| Manifest + glossary health | Сохранить как guardrail |
|
|
231
|
+
| `WizardTypeSpec + History[ContractSpecChange]` | Сохранить — это и есть версионирование схемы |
|
|
232
|
+
|
|
233
|
+
## Фазированный путь (поверх текущего roadmap)
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
R1 (done) Storage plan sketch — report-only
|
|
237
|
+
R2a field → type system — поля участвуют в Type validation
|
|
238
|
+
R2b store_read как compute-like граф-узел (lazy, cache_ttl, coalesce)
|
|
239
|
+
R3 store_write / store_append как typed effect output с Saga
|
|
240
|
+
R4 Adapter interface + memory adapter для тестов
|
|
241
|
+
R5 Migration как diff Store[T].v(n) → Store[T].v(n+1)
|
|
242
|
+
R6 Materializer dry run → executable materializer
|
|
243
|
+
R7 Extraction: descriptors → igniter-extensions,
|
|
244
|
+
adapters/materializer → igniter-application,
|
|
245
|
+
reserve igniter-persistence
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Вывод
|
|
249
|
+
|
|
250
|
+
Companion — правильное доказательство модели. Граница "граф вычисляет
|
|
251
|
+
намерение, store применяет" — **правильная**. Манифест, storage plan и
|
|
252
|
+
glossary health — правильная инфраструктура.
|
|
253
|
+
|
|
254
|
+
Шаг к "organic" — сделать `Store[T]` и `History[T]` **первоклассными узлами
|
|
255
|
+
графа**, а не просто DSL-метаданными. Тогда `store_read` резолвится
|
|
256
|
+
runtime-ом с тем же cache/coalesce что и вычисления, `store_write`
|
|
257
|
+
выполняется как typed effect с Saga, а relations валидируются компилятором.
|
|
258
|
+
Это и есть persistence как часть контракта, а не ORM поверх него.
|
|
259
|
+
|
|
260
|
+
## Handoff
|
|
261
|
+
|
|
262
|
+
```text
|
|
263
|
+
[Architect Supervisor / Codex]
|
|
264
|
+
Track: docs/research/contract-persistence-organic-model.ru.md
|
|
265
|
+
Canonical: docs/research/contract-persistence-organic-model.md
|
|
266
|
+
Status: архитектурные рекомендации по органическому persistence.
|
|
267
|
+
[D] Store[T] и History[T] должны стать первоклассными типами узлов графа.
|
|
268
|
+
[D] store_read — lazy граф-узел, резолвируемый runtime adapter-ом.
|
|
269
|
+
[D] store_write/store_append — typed effect outputs с поддержкой Saga.
|
|
270
|
+
[D] Relations — типизированные граф-рёбра, валидируемые компилятором.
|
|
271
|
+
[D] Fields должны участвовать в type system Igniter.
|
|
272
|
+
[D] Adapter объявлен в контракте, переопределяется per-execution.
|
|
273
|
+
[D] Версионирование схемы IS History[ContractSpecChange] — уже есть в Companion.
|
|
274
|
+
[R] Не добавлять ORM-style query methods или model callbacks.
|
|
275
|
+
[R] Сохранять границу "граф вычисляет намерение, store применяет".
|
|
276
|
+
[S] Следующий лучший срез: R2a — подключение field к type system.
|
|
277
|
+
```
|