Skip to main content

Crate caixa_core

Crate caixa_core 

Source
Expand description

caixa-core — manifest types, layout invariants, and version contract for the caixa tatara-lisp package system.

The caixa.lisp manifest is itself a tatara_lisp::domain::TataraDomain — parsing is the derive macro, which makes ill-typed manifests impossible at load time (the same discipline Cargo gets from Cargo.toml, but enforced by Rust types rather than TOML schema).

Layout invariants (lib/ presence, exe/ population, service entries) are enforced by LayoutInvariants, run by caixa-feira before any build step.

Re-exports§

pub use aplicacao::AplicacaoError;
pub use aplicacao::AplicacaoSpec;
pub use aplicacao::CircuitBreaker;
pub use aplicacao::DEFAULT_SERVICO_PORT;
pub use aplicacao::Entrada;
pub use aplicacao::Membro;
pub use aplicacao::MeshPolicy;
pub use aplicacao::POLICY_BREAKER_MAX_FAILURES_MAX;
pub use aplicacao::POLICY_BREAKER_WINDOW_MAX;
pub use aplicacao::POLICY_RATE_LIMIT_MAX;
pub use aplicacao::POLICY_RETRIES_MAX;
pub use aplicacao::POLICY_TIMEOUT_MAX;
pub use aplicacao::Placement;
pub use aplicacao::PlacementStrategy;
pub use aplicacao::RateLimit;
pub use aplicacao::RateLimitUnit;
pub use aplicacao::SERVICO_PORT_MIN;
pub use aplicacao::WitContract;
pub use aplicacao::WitTarget;
pub use behavior::BehaviorError;
pub use behavior::BehaviorSpec;
pub use dep::Dep;
pub use dep::DepError;
pub use dep::DepSource;
pub use dialeto::CaixaDialeto;
pub use dialeto::DialetoError;
pub use dialeto::classify as classify_dialeto;
pub use kind::CaixaKind;
pub use layout::LayoutError;
pub use layout::LayoutInvariants;
pub use layout::StandardLayout;
pub use limits::LIMITS_CPU_MILLICORES_MAX;
pub use limits::LIMITS_FUEL_MAX;
pub use limits::LIMITS_MEMORY_WASM32_MAX_BYTES;
pub use limits::LIMITS_MEMORY_WASM32_PAGE_BYTES;
pub use limits::LIMITS_WALL_CLOCK_MAX;
pub use limits::LimitsError;
pub use limits::LimitsSpec;
pub use manifest::Caixa;
pub use manifest::LeituraError;
pub use manifest::ManifestError;
pub use render::CAIXA_KEY_DEPS;
pub use render::CAIXA_KEY_DEPS_DEV;
pub use render::CAIXA_KIND_LABEL_ACAO;
pub use render::CAIXA_KIND_LABEL_APLICACAO;
pub use render::CAIXA_KIND_LABEL_BIBLIOTECA;
pub use render::CAIXA_KIND_LABEL_BINARIO;
pub use render::CAIXA_KIND_LABEL_SERVICO;
pub use render::CAIXA_KIND_LABEL_SUPERVISOR;
pub use render::CARGO_FEATURE_NAME_MAX_LEN;
pub use render::CILIUM_API_VERSION;
pub use render::CILIUM_AUTH_MODE_DISABLED;
pub use render::CILIUM_AUTH_MODE_REQUIRED;
pub use render::CILIUM_KEY_AUTHENTICATION;
pub use render::CILIUM_KEY_ENDPOINT_SELECTOR;
pub use render::CILIUM_KEY_FROM_ENDPOINTS;
pub use render::CILIUM_KEY_HTTP;
pub use render::CILIUM_KEY_INGRESS;
pub use render::CILIUM_KEY_MODE;
pub use render::CILIUM_KEY_PATH;
pub use render::CILIUM_KEY_PORTS;
pub use render::CILIUM_KEY_TO_PORTS;
pub use render::CILIUM_KIND_NETWORK_POLICY;
pub use render::CIRCUIT_BREAKER_KEY_MAX_FAILURES;
pub use render::CIRCUIT_BREAKER_KEY_WINDOW;
pub use render::CLUSTER_BUNDLE_LAREIRA_ENABLED_DEFAULT;
pub use render::COMPUTEUNIT_MODULE_KEY_SOURCE;
pub use render::COMPUTEUNIT_SPEC_KEY_CAPABILITIES;
pub use render::COMPUTEUNIT_SPEC_KEY_MODULE;
pub use render::COMPUTEUNIT_SPEC_KEY_TRIGGER;
pub use render::COMPUTEUNIT_YAML_SUFFIX;
pub use render::CONTRATO_EDGE_LABEL_SEPARATOR;
pub use render::CONTRATO_KEY_DE;
pub use render::CONTRATO_KEY_PARA;
pub use render::CONTRATO_KEY_WIT;
pub use render::CiDecomposeFailure;
pub use render::DEFAULT_FLUX_CHART_SOURCE_SUBPATH;
pub use render::DEFAULT_FLUX_KUSTOMIZATION_TIMEOUT;
pub use render::DEFAULT_FLUX_RECONCILE_INTERVAL;
pub use render::DEFAULT_FLUX_SYSTEM_NAMESPACE;
pub use render::DEFAULT_GATEWAY_CLASS_NAME;
pub use render::DEFAULT_LIBRARY_NAME;
pub use render::DEFAULT_NAMESPACE;
pub use render::DEP_AUTHOR_KEY_DEPS;
pub use render::DEP_AUTHOR_KEY_DEPS_DEV;
pub use render::DEP_SOURCE_KEY_TIPO;
pub use render::DEP_SOURCE_TIPO_GIT;
pub use render::DEP_SOURCE_TIPO_PATH;
pub use render::DNS_1123_LABEL_MAX_LEN;
pub use render::ENTRADA_KEY_HOST;
pub use render::ENTRADA_KEY_PARA;
pub use render::ENTRADA_KEY_PATHS;
pub use render::ENTRADA_KEY_PORT;
pub use render::FLEET_PROGRAMS_KEY_APLICACAO;
pub use render::FLEET_PROGRAMS_KEY_NAME;
pub use render::FLEET_PROGRAMS_KEY_PROGRAMS;
pub use render::FLEET_PROGRAMS_KEY_VERSAO;
pub use render::FLUX_GITREPOSITORY_API_VERSION;
pub use render::FLUX_GITREPOSITORY_KEY_REF;
pub use render::FLUX_GITREPOSITORY_KEY_URL;
pub use render::FLUX_GITREPOSITORY_REF_KEY_BRANCH;
pub use render::FLUX_GITREPOSITORY_REF_KEY_COMMIT;
pub use render::FLUX_GITREPOSITORY_REF_KEY_TAG;
pub use render::FLUX_GITREPOSITORY_YAML_FILENAME;
pub use render::FLUX_HELMCHART_TEMPLATE_KEY_CHART;
pub use render::FLUX_HELMRELEASE_API_VERSION;
pub use render::FLUX_HELMRELEASE_CREATE_NAMESPACE_DEFAULT;
pub use render::FLUX_HELMRELEASE_KEY_CREATE_NAMESPACE;
pub use render::FLUX_HELMRELEASE_KEY_INSTALL;
pub use render::FLUX_HELMRELEASE_KEY_REMEDIATE_LAST_FAILURE;
pub use render::FLUX_HELMRELEASE_KEY_REMEDIATION;
pub use render::FLUX_HELMRELEASE_KEY_RETRIES;
pub use render::FLUX_HELMRELEASE_KEY_UPGRADE;
pub use render::FLUX_HELMRELEASE_REMEDIATE_LAST_FAILURE_DEFAULT;
pub use render::FLUX_HELMRELEASE_REMEDIATION_RETRIES_DEFAULT;
pub use render::FLUX_HELMRELEASE_YAML_FILENAME;
pub use render::FLUX_KEY_CHART;
pub use render::FLUX_KEY_HEALTH_CHECKS;
pub use render::FLUX_KEY_INTERVAL;
pub use render::FLUX_KEY_SOURCE_REF;
pub use render::FLUX_KEY_VALUES;
pub use render::FLUX_KIND_GIT_REPOSITORY;
pub use render::FLUX_KIND_HELM_RELEASE;
pub use render::FLUX_KIND_KUSTOMIZATION;
pub use render::FLUX_KUSTOMIZATION_API_VERSION;
pub use render::FLUX_KUSTOMIZATION_KEY_PATH;
pub use render::FLUX_KUSTOMIZATION_KEY_PRUNE;
pub use render::FLUX_KUSTOMIZATION_KEY_TIMEOUT;
pub use render::FLUX_KUSTOMIZATION_PRUNE_DEFAULT;
pub use render::FLUX_KUSTOMIZATION_YAML_FILENAME;
pub use render::GATEWAY_API_API_VERSION;
pub use render::GATEWAY_API_DEFAULT_HTTP_LISTENER_NAME;
pub use render::GATEWAY_API_DEFAULT_HTTP_LISTENER_PORT;
pub use render::GATEWAY_API_DEFAULT_HTTP_ROUTE_PATH;
pub use render::GATEWAY_API_HOSTNAME_MAX_LEN;
pub use render::GATEWAY_API_HTTP_PATH_MAX_LEN;
pub use render::GATEWAY_API_KEY_ATTEMPTS;
pub use render::GATEWAY_API_KEY_BACKEND_REFS;
pub use render::GATEWAY_API_KEY_GATEWAY_CLASS_NAME;
pub use render::GATEWAY_API_KEY_HOSTNAME;
pub use render::GATEWAY_API_KEY_HOSTNAMES;
pub use render::GATEWAY_API_KEY_LISTENERS;
pub use render::GATEWAY_API_KEY_MATCHES;
pub use render::GATEWAY_API_KEY_NAME;
pub use render::GATEWAY_API_KEY_PARENT_REFS;
pub use render::GATEWAY_API_KEY_PATH;
pub use render::GATEWAY_API_KEY_REQUEST;
pub use render::GATEWAY_API_KEY_RETRY;
pub use render::GATEWAY_API_KEY_SECTION_NAME;
pub use render::GATEWAY_API_KEY_TIMEOUTS;
pub use render::GATEWAY_API_KEY_VALUE;
pub use render::GATEWAY_API_KIND_GATEWAY;
pub use render::GATEWAY_API_KIND_HTTP_ROUTE;
pub use render::GATEWAY_API_PATH_MATCH_TYPE_PATH_PREFIX;
pub use render::GATEWAY_API_PROTOCOL_HTTP;
pub use render::GIT_OID_SHA1_LEN;
pub use render::GIT_OID_SHA256_LEN;
pub use render::GIT_REF_NAME_MAX_LEN;
pub use render::GIT_REPO_URL_MAX_LEN;
pub use render::HELM_CHART_API_VERSION;
pub use render::HELM_CHART_DEPENDENCY_KEY_ALIAS;
pub use render::HELM_CHART_DEPENDENCY_KEY_NAME;
pub use render::HELM_CHART_DEPENDENCY_KEY_REPOSITORY;
pub use render::HELM_CHART_DEPENDENCY_KEY_VERSION;
pub use render::HELM_CHART_KEY_API_VERSION;
pub use render::HELM_CHART_KEY_APP_VERSION;
pub use render::HELM_CHART_KEY_DEPENDENCIES;
pub use render::HELM_CHART_KEY_TYPE;
pub use render::HELM_CHART_README_FILENAME;
pub use render::HELM_CHART_TYPE_APPLICATION;
pub use render::HELM_CHART_TYPE_LIBRARY;
pub use render::HELM_CHART_YAML_FILENAME;
pub use render::HELM_VALUES_KEY_ENABLED;
pub use render::HELM_VALUES_YAML_FILENAME;
pub use render::KUBE_KEY_API_VERSION;
pub use render::KUBE_KEY_KIND;
pub use render::KUBE_KEY_LABELS;
pub use render::KUBE_KEY_MATCH_LABELS;
pub use render::KUBE_KEY_METADATA;
pub use render::KUBE_KEY_NAME;
pub use render::KUBE_KEY_NAMESPACE;
pub use render::KUBE_KEY_PORT;
pub use render::KUBE_KEY_PROTOCOL;
pub use render::KUBE_KEY_RULES;
pub use render::KUBE_KEY_SPEC;
pub use render::KUBE_KEY_TYPE;
pub use render::KUBE_PROTOCOL_TCP;
pub use render::KindMismatch;
pub use render::LABEL_APLICACAO;
pub use render::LABEL_CONTRATO;
pub use render::LABEL_PROGRAM;
pub use render::LAREIRA_CHART_KEYWORDS;
pub use render::LAREIRA_CHART_NAME_NOME_MAX_LEN;
pub use render::LAREIRA_CHART_NAME_PREFIX;
pub use render::LAYOUT_DIR_EXE;
pub use render::LAYOUT_DIR_LIB;
pub use render::LAYOUT_DIR_SERVICOS;
pub use render::LAYOUT_MISSING_ENTRY_KIND_BEHAVIOR_CALLBACK;
pub use render::LAYOUT_MISSING_ENTRY_KIND_BIBLIOTECA;
pub use render::LAYOUT_MISSING_ENTRY_KIND_EXE;
pub use render::LAYOUT_MISSING_ENTRY_KIND_SERVICO;
pub use render::LAYOUT_MISSING_ENTRY_KIND_UPGRADE_SCRIPT;
pub use render::LISP_SOURCE_EXTENSION;
pub use render::M2_AUTHOR_KEY_BEHAVIOR;
pub use render::M2_AUTHOR_KEY_LIMITS;
pub use render::M2_AUTHOR_KEY_UPGRADE_FROM;
pub use render::M2_BEHAVIOR_AUTHOR_KEY_ON_CALL;
pub use render::M2_BEHAVIOR_AUTHOR_KEY_ON_CAST;
pub use render::M2_BEHAVIOR_AUTHOR_KEY_ON_INFO;
pub use render::M2_BEHAVIOR_AUTHOR_KEY_ON_INIT;
pub use render::M2_BEHAVIOR_AUTHOR_KEY_ON_STATE_CHANGE;
pub use render::M2_BEHAVIOR_AUTHOR_KEY_ON_TERMINATE;
pub use render::M2_BEHAVIOR_KEY_ON_CALL;
pub use render::M2_BEHAVIOR_KEY_ON_CAST;
pub use render::M2_BEHAVIOR_KEY_ON_INFO;
pub use render::M2_BEHAVIOR_KEY_ON_INIT;
pub use render::M2_BEHAVIOR_KEY_ON_STATE_CHANGE;
pub use render::M2_BEHAVIOR_KEY_ON_TERMINATE;
pub use render::M2_KEY_BEHAVIOR;
pub use render::M2_KEY_LIMITS;
pub use render::M2_KEY_UPGRADE_FROM;
pub use render::M2_LIMITS_KEY_CPU;
pub use render::M2_LIMITS_KEY_FUEL;
pub use render::M2_LIMITS_KEY_MEMORY;
pub use render::M2_LIMITS_KEY_WALL_CLOCK;
pub use render::M2_UPGRADE_FROM_KEY_FROM;
pub use render::M2_UPGRADE_FROM_KEY_INSTRUCTIONS;
pub use render::M2_UPGRADE_INSTRUCTION_FIELD_KEY_MODULE;
pub use render::M2_UPGRADE_INSTRUCTION_FIELD_KEY_SCRIPT;
pub use render::M2_UPGRADE_INSTRUCTION_KEY_KIND;
pub use render::M2_UPGRADE_INSTRUCTION_KIND_LOAD_MODULE;
pub use render::M2_UPGRADE_INSTRUCTION_KIND_PURGE;
pub use render::M2_UPGRADE_INSTRUCTION_KIND_RESTART;
pub use render::M2_UPGRADE_INSTRUCTION_KIND_SOFT_PURGE;
pub use render::M2_UPGRADE_INSTRUCTION_KIND_STATE_CHANGE;
pub use render::M3_AUTHOR_KEY_CONTRATOS;
pub use render::M3_AUTHOR_KEY_ENTRADA;
pub use render::M3_AUTHOR_KEY_MEMBROS;
pub use render::M3_AUTHOR_KEY_PLACEMENT;
pub use render::M3_AUTHOR_KEY_POLITICAS;
pub use render::M3_KEY_PLACEMENT;
pub use render::M3_PLACEMENT_ESTRATEGIA_REPLICATED;
pub use render::M3_PLACEMENT_ESTRATEGIA_SHARDED;
pub use render::M3_PLACEMENT_ESTRATEGIA_SINGLE_NODE;
pub use render::M3_PLACEMENT_KEY_AFFINITY;
pub use render::M3_PLACEMENT_KEY_CLUSTERS;
pub use render::M3_PLACEMENT_KEY_ESTRATEGIA;
pub use render::M3_PLACEMENT_KEY_SHARD_KEY;
pub use render::MEMBRO_KEY_CAIXA;
pub use render::MEMBRO_KEY_VERSAO;
pub use render::MappingExt;
pub use render::MissingCiSlot;
pub use render::NATS_SUBJECT_MAX_LEN;
pub use render::OCI_SCHEME_PREFIX;
pub use render::PLEME_LABEL_PREFIX;
pub use render::POLITICAS_KEY_CIRCUIT_BREAKER;
pub use render::POLITICAS_KEY_MTLS_REQUIRED;
pub use render::POLITICAS_KEY_RATE_LIMIT;
pub use render::POLITICAS_KEY_RETRIES;
pub use render::POLITICAS_KEY_TIMEOUT;
pub use render::PathShapeViolation;
pub use render::RenderError;
pub use render::RenderedFile;
pub use render::STANDALONE_LAREIRA_ENABLED_DEFAULT;
pub use render::SUPERVISOR_AUTHOR_KEY_CHILDREN;
pub use render::SUPERVISOR_AUTHOR_KEY_ESTRATEGIA;
pub use render::SUPERVISOR_AUTHOR_KEY_MAX_RESTARTS;
pub use render::SUPERVISOR_AUTHOR_KEY_RESTART_WINDOW;
pub use render::SUPERVISOR_CHILD_KEY_CAIXA;
pub use render::SUPERVISOR_CHILD_KEY_RESTART;
pub use render::SUPERVISOR_CHILD_KEY_VERSAO;
pub use render::SUPERVISOR_CHILD_RESTART_PERMANENT;
pub use render::SUPERVISOR_CHILD_RESTART_TEMPORARY;
pub use render::SUPERVISOR_CHILD_RESTART_TRANSIENT;
pub use render::SUPERVISOR_ESTRATEGIA_ONE_FOR_ALL;
pub use render::SUPERVISOR_ESTRATEGIA_ONE_FOR_ONE;
pub use render::SUPERVISOR_ESTRATEGIA_REST_FOR_ONE;
pub use render::SUPERVISOR_ESTRATEGIA_SIMPLE_ONE_FOR_ONE;
pub use render::SUPERVISOR_KEY_CHILDREN;
pub use render::SUPERVISOR_KEY_ESTRATEGIA;
pub use render::SUPERVISOR_KEY_MAX_RESTARTS;
pub use render::SUPERVISOR_KEY_RESTART_WINDOW;
pub use render::SequenceExt;
pub use render::ServicoCountMismatch;
pub use render::WASI_KV_SLOT_MAX_LEN;
pub use render::WIT_IDENT_MAX_LEN;
pub use render::assert_str_reexport_identity;
pub use render::ci_declared_edge_count;
pub use render::cilium_auth_mode;
pub use render::cilium_network_policy_name;
pub use render::contrato_edge_label;
pub use render::decompose_ci;
pub use render::find_ascii_whitespace_byte;
pub use render::find_by_kind;
pub use render::find_non_ascii_whitespace_char;
pub use render::flux_kustomization_source_subtree;
pub use render::gateway_api_http_route_name;
pub use render::insert_first_seen;
pub use render::is_cargo_feature_name;
pub use render::is_computeunit_yaml_extension;
pub use render::is_digit_only_magnitude;
pub use render::is_dns_1123_label;
pub use render::is_gateway_api_http_path;
pub use render::is_git_oid;
pub use render::is_git_ref_name;
pub use render::is_git_repo_url;
pub use render::is_lareira_chart_name_shape;
pub use render::is_leading_zero_padded_magnitude;
pub use render::is_lisp_extension;
pub use render::is_nats_subject;
pub use render::is_sandboxed_relative_path;
pub use render::is_wasi_keyvalue_slot;
pub use render::is_wit_world_ref;
pub use render::kube_kind_is;
pub use render::kube_metadata_str_field;
pub use render::kube_resource_skeleton;
pub use render::kube_root_str_field;
pub use render::label_selector;
pub use render::lareira_chart_name;
pub use render::oci_chart_ref;
pub use render::pleme_program_in_aplicacao_selector;
pub use render::pleme_program_selector;
pub use render::require_acao_view;
pub use render::require_aplicacao_view;
pub use render::require_ci;
pub use render::require_kind;
pub use render::require_positive_bounded_u32;
pub use render::require_positive_bounded_u64;
pub use render::require_positive_canonical_bounded_duration;
pub use render::require_single_servico;
pub use render::require_v0_servico_shape;
pub use render::require_valid_dns_1123_label;
pub use render::require_valid_versao_requirement;
pub use render::servico_m2_overlay;
pub use render::servico_spec_and_m2_overlay_entries;
pub use render::single_field_overlay;
pub use render::singleton_mapping_sequence;
pub use render::string_keyed_entries;
pub use render::upsert_named_entry;
pub use render::yaml_string_mapping;
pub use supervisor::ChildSpec;
pub use supervisor::RestartPolicy;
pub use supervisor::RestartStrategy;
pub use supervisor::SUPERVISOR_MAX_RESTARTS_MAX;
pub use supervisor::SUPERVISOR_RESTART_WINDOW_MAX;
pub use supervisor::SupervisorError;
pub use supervisor::SupervisorSpec;
pub use upgrade::UpgradeError;
pub use upgrade::UpgradeFromEntry;
pub use upgrade::UpgradeInstruction;
pub use upgrade::validate_upgrade_from;
pub use upgrade::validate_upgrade_from_against_behavior;
pub use upgrade::validate_upgrade_from_against_versao;
pub use version::CaixaVersion;
pub use version::DEFAULT_GIT_REMOTE;
pub use version::DEFAULT_PLEME_GIT_ORG;
pub use version::DEFAULT_PUBLISH_TAG_PREFIX;
pub use version::VersionError;
pub use version::parse_requirement;

Modules§

aplicacao
Typed Aplicacao — the fourth caixa kind that turns a graph of Servicos into a single declarative application (mesh).
behavior
OTP-shaped behavior callbacks — the typed slot of caixa.lisp that points at the .lisp files implementing the lifecycle.
dep
dialeto
defcaixa is spoken by two unrelated declarations. This module makes that a typed fact instead of an anonymous parse failure.
kind
layout
Layout invariants — the Rust-enforced package structure.
limits
Lunatic-style per-process resource limits — the typed slot of caixa.lisp that wasm-engine consumes at component instantiation.
manifest
render
Render-side helpers shared by every per-Servico renderer ([caixa-helm], [caixa-flux]) — the canonical place for “if the M2 typed slot is non-empty, emit its camelCase YAML fragment under the agreed key” patterns to live exactly once.
supervisor
OTP-shaped supervisor trees, encoded as a typed :kind Supervisor caixa with a strategy + restart-policy children list.
upgrade
Erlang/OTP-style appup — declarative upgrade instructions per prior caixa version. Composes with the :behavior :on-state-change callback to deliver state migration during hot upgrades.
version